1#![allow(dead_code)]
2use std::collections::HashMap;
3
4use lazy_static::lazy_static;
5use light_compressed_account::TreeType;
6use solana_pubkey::pubkey;
7
8use crate::indexer::TreeInfo;
9
10impl TreeInfo {
11 pub(crate) fn get(pubkey: &str) -> Option<&TreeInfo> {
12 QUEUE_TREE_MAPPING.get(pubkey)
13 }
14
15 pub fn height(&self) -> u32 {
16 match self.tree_type {
17 TreeType::StateV1 => 26,
18 TreeType::StateV2 => 32,
19 TreeType::AddressV1 => 26,
20 TreeType::AddressV2 => 40,
21 }
22 }
23}
24
25lazy_static! {
27 pub(crate) static ref QUEUE_TREE_MAPPING: HashMap<String, TreeInfo> = {
28 let legacy_state_trees = [
29 (
30 pubkey!("smt1NamzXdq4AMqS2fS2F1i5KTYPZRhoHgWx38d8WsT"),
31 pubkey!("nfq1NvQDJ2GEgnS8zt9prAe8rjjpAW1zFkrvZoBR148"),
32 Some(pubkey!("cpi1uHzrEhBG733DoEJNgHCyRS3XmmyVNZx5fonubE4")),
33 ),
34 (
35 pubkey!("smt2rJAFdyJJupwMKAqTNAJwvjhmiZ4JYGZmbVRw1Ho"),
36 pubkey!("nfq2hgS7NYemXsFaFUCe3EMXSDSfnZnAe27jC6aPP1X"),
37 Some(pubkey!("cpi2cdhkH5roePvcudTgUL8ppEBfTay1desGh8G8QxK")),
38 ),
39 (
40 pubkey!("smt3AFtReRGVcrP11D6bSLEaKdUmrGfaTNowMVccJeu"),
41 pubkey!("nfq3de4qt9d3wHxXWy1wcge3EXhid25mCr12bNWFdtV"),
42 Some(pubkey!("cpi3Ycq5qZzFEwZSWgwMhMi1M9KG4KVx4T9GUmb58gk")),
43 ),
44 (
45 pubkey!("smt4vjXvdjDFzvRMUxwTWnSy4c7cKkMaHuPrGsdDH7V"),
46 pubkey!("nfq4Ncp1vk3mFnCQ9cvwidp9k2L6fxEyCo2nerYD25A"),
47 Some(pubkey!("cpi4yJqDt4SjPXaxKkvhXRowqiFxv1jKgoq6jDMfc2c")),
48 ),
49 (
50 pubkey!("smt5uPaQT9n6b1qAkgyonmzRxtuazA53Rddwntqistc"),
51 pubkey!("nfq5b5xEguPtdD6uPetZduyrB5EUqad7gcUE46rALau"),
52 Some(pubkey!("cpi5ryT8ULH2aLs8u1V6vG1uA71d52tRqHrDUxiVn8A")),
53 ),
54 (
55 pubkey!("smt6ukQDSPPYHSshQovmiRUjG9jGFq2hW9vgrDFk5Yz"),
56 pubkey!("nfq6uzaNZ5n3EWF4t64M93AWzLGt5dXTikEA9fFRktv"),
57 Some(pubkey!("cpi6maYjfu2TGbRu4dzsjzs4BHDGKdTyy4bhPNCmRmV")),
58 ),
59 (
60 pubkey!("smt7onMFkvi3RbyhQCMajudYQkB1afAFt9CDXBQTLz6"),
61 pubkey!("nfq7yytdKkkLabu1KpvLsa5VPkvCT4jPWus5Yi74HTH"),
62 Some(pubkey!("cpi7qnzKBpzhzVfGXyaabXyhGJVTaNQSKh4x4jffLLa")),
63 ),
64 (
65 pubkey!("smt8TYxNy8SuhAdKJ8CeLtDkr2w6dgDmdz5ruiDw9Y9"),
66 pubkey!("nfq8vExDykci3VUSpj9R1totVst87hJfFWevNK4hiFb"),
67 Some(pubkey!("cpi8GBR819DvLLWmiVgYmjLAhYX6j9bnBXaYXCHEA7i")),
68 ),
69 (
70 pubkey!("smt9ReAYRF5eFjTd5gBJMn5aKwNRcmp3ub2CQr2vW7j"),
71 pubkey!("nfq9KFpNQL45ppP6ZG7zBpUeN18LZrNGkKyvV1kjTX2"),
72 Some(pubkey!("cpi9CEV5DdCA5pyizmqv2Tk2aFBFwD32WSv6qaSN4Vb")),
73 ),
74 (
75 pubkey!("smtAvYA5UbTRyKAkAj5kHs1CmrA42t6WkVLi4c6mA1f"),
76 pubkey!("nfqAroCRkcZBgsAJDNkptKpsSWyM6cgB9XpWNNiCEC4"),
77 Some(pubkey!("cpiAb2eNFf6MQeqMWEyEjSN3VJcD5hghujhmtdcMuZp")),
78 ),
79 (
80 pubkey!("smtBvnJx2B2u85wc3sMkF6G8rVMfN8Ek3nVKZ8gQUFn"),
81 pubkey!("nfqB3FAiiB1p3ksiWHB48LzSycpaJZ5RTp5C8RtNyUH"),
82 None,
83 ),
84 (
85 pubkey!("smtCEeVJsWyeeawgn5cQR5iK7dsJwnxJq7QwdQUepx8"),
86 pubkey!("nfqC5pX1HzaTgUApL2DTp7Xh8j3A5Augk42jngRCoKF"),
87 None,
88 ),
89 (
90 pubkey!("smtF9XTNZeyMgGQxxWfxyS1Ff6CA4W4RgYi8X1wWxa9"),
91 pubkey!("nfqFa5ZzBYELWDnMQZe7SA3gd1x98aqtPf4sfaJZQJm"),
92 None,
93 ),
94 (
95 pubkey!("smtGeMYXeGoyQVcnrDg985h74ak9aRPW4gsfdW25DVy"),
96 pubkey!("nfqGKBHxkUbDvTtkiDXNWskBhM6R9YfCeNu52baqvaf"),
97 None,
98 ),
99 (
100 pubkey!("smtHxHypFJoK6z6CCgx7eP9jqDykUBE7PbrXrTVoejR"),
101 pubkey!("nfqHEE21vgXLnD7wxauCvX6pfeAs1zJbE4YyZ4YQ1rG"),
102 None,
103 ),
104 (
105 pubkey!("smtJsXesAF3vEc7Kz86rvaaHnNndvRWRfTj3XhgbCyb"),
106 pubkey!("nfqJnTp7kgAa2AF2QTRi5qNVinkpAdA15gBYYqeZUgA"),
107 None,
108 ),
109 (
110 pubkey!("smtKAoGiqSb6YwGhCSwsJer5tMMgk7sH1a2K5BNeNQQ"),
111 pubkey!("nfqKejGFuD6xkNLt8zzp2HaypMeRDsptBaeVGB4Utoq"),
112 None,
113 ),
114 (
115 pubkey!("smtLdHZPfJfqK3cKCQ9sqQTCQaoDgZKA11MQZ9P4UFR"),
116 pubkey!("nfqLk1L9ezj8AbDyeQueeQoKUvU6Jzz9eQs28QgTEfx"),
117 None,
118 ),
119 (
120 pubkey!("smtNKu3Dwsyw4YVVA7S9cWYGvLrwUVD3T593ZJnyggv"),
121 pubkey!("nfqNG4bDC6e8SzamFhvDytxwzKdzbwoTsLHZFi11AD1"),
122 None,
123 ),
124 (
125 pubkey!("smta2xk2kZTeFBRzpSrtCpwmxkrQpv7LGgut1aMNsme"),
126 pubkey!("nfqa2szxnkgX4xBTVG81HYK7mzZe8pSF8wv2yMXaTTG"),
127 None,
128 ),
129 (
130 pubkey!("smtb2BcLRWygF3svygXMprcRjXKUDnxvNFnseNgH6VT"),
131 pubkey!("nfqbgaRZGC1BGtFjRMvJmx79fzg8bBuSJBCEbJzoGTG"),
132 None,
133 ),
134 (
135 pubkey!("smtd3wjo4AzEKd9tRE2zTanxEEWRAXAAs9AtF9NcfAs"),
136 pubkey!("nfqd5yiNJJ5mvZxitwXY9bR5dfBs2WNcTKctFBYwSuv"),
137 None,
138 ),
139 (
140 pubkey!("smte57v68vyf21wT5xzxYvZpr6iiFG1WQ5dX7J1Y85E"),
141 pubkey!("nfqecsLrkXwRpdBJZEpR2bJYbXc2jrh78mqg1kRDZKm"),
142 None,
143 ),
144 (
145 pubkey!("smtobNxYYVi8YfJDjzdoW1jR7xyZaVeXwmSHNgL3tA1"),
146 pubkey!("nfqoqboretu8sLtCB4mTe3HKRmzc18HAPUAkEn18axG"),
147 None,
148 ),
149 (
150 pubkey!("smtpQZk7YARxMaz7VeW7zPMLNJAhbP9v1AZzLopaB2M"),
151 pubkey!("nfqp7yDaPgGenuaFFAogXLvy5A5c3Znn5pYe6TmQ9RQ"),
152 None,
153 ),
154 (
155 pubkey!("smtqHbhmXHjVxeDNq5NPTMBw92L2ZsEF4q2WgNqjN7Y"),
156 pubkey!("nfqqqib2xCHLXSVABHoczoY4u495T5eFCcypZ6C22gB"),
157 None,
158 ),
159 (
160 pubkey!("smtrG9ekG1obtqBRoB4mMUEwicfjTRRzZUm3z4LX8UJ"),
161 pubkey!("nfqroTsZ4EX37MuYb26Km8nPmS2WhfG3HTFgCuuwe7U"),
162 None,
163 ),
164 (
165 pubkey!("smtsAZefsicmjKXz9Wtzidwt67pU3kqbhB6f2yD3rQJ"),
166 pubkey!("nfqs5Hdbd7oKtDdRmVQFy4wytRn5gDb1DPwPyQCmHS2"),
167 None,
168 ),
169 (
170 pubkey!("smtt9Ra1v3mu8eSx7nrq5Q8bRqqPRf5mfpUvkpkP29L"),
171 pubkey!("nfqt3kLwwcAm8wLfNCVGPThN7fpHimPoiBegoGeRxUy"),
172 None,
173 ),
174 (
175 pubkey!("smtu3VAWgucXQmMhy4S8nNojpuVJHgVrGQFkai1jXRw"),
176 pubkey!("nfqu1jDCGChJQxQpU5XWjeHUtzYWBEoKZ24VXXdKdkk"),
177 None,
178 ),
179 (
180 pubkey!("smtvbupk8wjpXa48Zg29SVtTL8BpSJVrc6tfMGAA5A3"),
181 pubkey!("nfqvcYyr6TzAugHSaX398fXPBSRygmb7TfmXoXvL8Qu"),
182 None,
183 ),
184 (
185 pubkey!("smtwntNZBnj3w5dw1mYjzgHBBhxAYvHjZhh5whVEaBS"),
186 pubkey!("nfqw14GHxV2LJsNwwXLGCXDyQXqnUn6GDL9DKqBbeep"),
187 None,
188 ),
189 (
190 pubkey!("smtx7SjhPmjChWsUNiyZ4VF2U82zSBDf2yArGKr5BDb"),
191 pubkey!("nfqxAGA7bDoHDxqA4K25fV1wZZ5NHzGrxReiCC5Ztet"),
192 None,
193 ),
194 (
195 pubkey!("smty1QArd6Z73H67TvoqpxitEc2E5A9zBtw42ZKZJkn"),
196 pubkey!("nfqy55aAqL8qG5qBRixUtLnDqNd61ft2jtXyoYGHNGb"),
197 None,
198 ),
199 (
200 pubkey!("smtz1CZdRkGuMpYPZHihP2WruMj9ZHYjK6Ag9gLBzWM"),
201 pubkey!("nfqzF2r8viCVTMpzVAL5jHVKsGF45RsASxun8ZpRKnm"),
202 None,
203 ),
204 ];
205
206 let address_trees_v1 = [(
207 pubkey!("amt1Ayt45jfbdw5YSo7iz6WZxUmnZsQTYXy82hVwyC2"),
208 pubkey!("aq1S9z4reTSQAdgWHGD2zDaS39sjGrAxbR31vxJ2F4F"),
209 None,
210 )];
211
212 let mut m = HashMap::new();
213
214 for (legacy_tree, legacy_queue, cpi_context) in legacy_state_trees.iter() {
215 m.insert(
216 legacy_queue.to_string(),
217 TreeInfo {
218 tree: *legacy_tree,
219 queue: *legacy_queue,
220 cpi_context: *cpi_context,
221 tree_type: TreeType::StateV1,
222 next_tree_info: None,
223 },
224 );
225
226 m.insert(
227 legacy_tree.to_string(),
228 TreeInfo {
229 tree: *legacy_tree,
230 queue: *legacy_queue,
231 cpi_context: *cpi_context,
232 tree_type: TreeType::StateV1,
233 next_tree_info: None,
234 },
235 );
236 }
237
238 for (legacy_tree, legacy_queue, cpi_context) in address_trees_v1.iter() {
239 m.insert(
240 legacy_queue.to_string(),
241 TreeInfo {
242 tree: *legacy_tree,
243 queue: *legacy_queue,
244 cpi_context: *cpi_context,
245 tree_type: TreeType::AddressV1,
246 next_tree_info: None,
247 },
248 );
249
250 m.insert(
251 legacy_tree.to_string(),
252 TreeInfo {
253 tree: *legacy_tree,
254 queue: *legacy_queue,
255 cpi_context: *cpi_context,
256 tree_type: TreeType::AddressV1,
257 next_tree_info: None,
258 },
259 );
260 }
261
262 m.insert(
263 "6L7SzhYB3anwEQ9cphpJ1U7Scwj57bx2xueReg7R9cKU".to_string(),
264 TreeInfo {
265 tree: pubkey!("HLKs5NJ8FXkJg8BrzJt56adFYYuwg5etzDtBbQYTsixu"),
266 queue: pubkey!("6L7SzhYB3anwEQ9cphpJ1U7Scwj57bx2xueReg7R9cKU"),
267 cpi_context: None,
268 tree_type: TreeType::StateV2,
269 next_tree_info: None,
270 },
271 );
272
273 m.insert(
274 "HLKs5NJ8FXkJg8BrzJt56adFYYuwg5etzDtBbQYTsixu".to_string(),
275 TreeInfo {
276 tree: pubkey!("HLKs5NJ8FXkJg8BrzJt56adFYYuwg5etzDtBbQYTsixu"),
277 queue: pubkey!("6L7SzhYB3anwEQ9cphpJ1U7Scwj57bx2xueReg7R9cKU"),
278 cpi_context: None,
279 tree_type: TreeType::StateV2,
280 next_tree_info: None,
281 },
282 );
283
284 m.insert(
285 "EzKE84aVTkCUhDHLELqyJaq1Y7UVVmqxXqZjVHwHY3rK".to_string(),
286 TreeInfo {
287 tree: pubkey!("EzKE84aVTkCUhDHLELqyJaq1Y7UVVmqxXqZjVHwHY3rK"),
288 queue: pubkey!("EzKE84aVTkCUhDHLELqyJaq1Y7UVVmqxXqZjVHwHY3rK"),
289 cpi_context: None,
290 tree_type: TreeType::AddressV2,
291 next_tree_info: None,
292 },
293 );
294
295 m
296 };
297}