1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
pub use libmdbx_mod::*;
#[rustfmt::skip]
mod libmdbx_mod{
#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const AddressToProtocolInfoInitQuery: &str = r#"SELECT
    cast(address,'String') as address,
    cast(CASE
      WHEN protocol = 'Curve.fi' AND protocol_subtype = 'Base' THEN (tokens, init_block, concat(protocol, protocol_subtype, toString(length(tokens))), curve_lp_token)
      ELSE (tokens, init_block, concat(protocol, protocol_subtype), curve_lp_token)
    END, 'Tuple(Array(String),UInt64,String,Nullable(String))') AS tokens
FROM ethereum.pools 
WHERE length(pools.tokens) >= 2"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const PoolCreationBlocksInitQuery: &str = r#"select 
  cast(init_block, 'UInt64') as block_number,
  cast(groupArray(address), 'Array(String)') as pools
from ethereum.pools
group by block_number
"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const CexTradesInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const AddressMetaInitQuery: &str = r#"SELECT
    toString(address),
    entity_name,
    nametag,
    labels,
    type,
    contract_info,
    ens,
    socials
FROM brontes_api.address_meta"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const BlockInfoInitQuery: &str = r#"WITH
    ? AS start_block,
    ? AS end_block,
    relay_bids AS (
        SELECT
            block_number,
            if(ultrasound_adj_block_hash IS NOT NULL, ultrasound_adj_block_hash, block_hash) AS final_block_hash,
            anyLast(timestamp) AS relay_timestamp,
            anyLast(proposer_fee_recipient) AS proposer_fee_recipient,
            anyLast(if(ultrasound_adj_value IS NOT NULL, ultrasound_adj_value, value)) AS proposer_mev_reward
        FROM ethereum.relays 
        WHERE block_number >= start_block AND block_number < end_block AND value != 0 AND relays.proposer_fee_recipient != ''
        GROUP BY block_number, final_block_hash
    ),
    relay_payloads AS (
        SELECT
            block_number,
            block_hash,
            anyLast(proposer_fee_recipient) AS proposer_fee_recipient,
            anyLast(value) AS proposer_mev_reward
        FROM ethereum.relay_payloads
        WHERE block_number >= start_block AND block_number < end_block AND value != 0 AND relay_payloads.proposer_fee_recipient != ''
        GROUP BY block_number, block_hash
    ),
    raw_blocks AS (
        SELECT
            block_number,
            block_hash,
            anyLast(block_timestamp) AS block_timestamp
        FROM ethereum.blocks
        WHERE block_number >= start_block AND block_number < end_block AND valid = 1
        GROUP BY block_number, block_hash
    ),
    block_observations AS (
        SELECT
            block_number,
            block_hash,
            round(max(timestamp) / 1000) AS p2p_timestamp
        FROM ethereum.block_observations
        WHERE block_number >= start_block AND block_number < end_block
        GROUP BY block_number, block_hash
    ),
    private_txs AS (
        SELECT
            block_number,
            groupUniqArray(tx_hash) AS private_flow
        FROM eth_analytics.private_txs
        WHERE block_number >= start_block AND block_number < end_block
        GROUP BY block_number
    )
SELECT
    CAST(b.block_number, 'UInt64') AS block_number,
    CAST(b.block_hash, 'String') AS block_hash,
    CAST(b.block_timestamp, 'UInt64') AS block_timestamp,
    CAST(r.relay_timestamp, 'Nullable(UInt64)') AS relay_timestamp,
    CAST(o.p2p_timestamp, 'Nullable(UInt64)') AS p2p_timestamp,
    CAST(ifNull(r.proposer_fee_recipient, p.proposer_fee_recipient), 'Nullable(String)') AS proposer_fee_recipient,
    CAST(ifNull(r.proposer_mev_reward, p.proposer_mev_reward), 'Nullable(UInt128)') AS proposer_mev_reward,
    CAST(ifNull(v.private_flow, []), 'Array(String)') AS private_flow
FROM raw_blocks b
LEFT JOIN relay_bids r ON b.block_number = r.block_number AND b.block_hash = r.final_block_hash
LEFT JOIN relay_payloads p ON b.block_number = p.block_number AND b.block_hash = p.block_hash
LEFT JOIN block_observations o ON b.block_number = o.block_number AND b.block_hash = o.block_hash
LEFT JOIN private_txs v ON b.block_number = v.block_number
"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const SearcherContractsInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const TokenDecimalsInitQuery: &str = r#"SELECT 
    address, 
    (decimals, symbol) AS info
FROM brontes.token_info
"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const CexPriceInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const MevBlocksInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const BuilderInitQuery: &str = r#"SELECT  
    address,
    name,
    fund,
    pub_keys,
    searchers_eoas,
    searchers_contracts,
    ultrasound_relay_collateral_address
FROM brontes_api.builder_info
"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const DexPriceInitQuery: &str = r#"SELECT 
    (block_number, tx_idx),
    tx_idx,
    quote
FROM brontes.dex_price_mapping
WHERE block_number >= ? AND block_number < ?
"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const AddressToFactoryInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const TxTracesInitQuery: &str = r#"SELECT
    block_number,
    traces
FROM brontes_api.tx_traces
WHERE block_number >= ? AND block_number < ?
"#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const PoolStateInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const SubGraphsInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const SearcherStatisticsInitQuery: &str = r#""#;

#[allow(dead_code)]
#[allow(non_upper_case_globals)]
pub const SearcherEOAsInitQuery: &str = r#""#;

}