@gearbox-protocol/sdk 5.0.0-next.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/cjs/dev/calcLiquidatableLTs.js +1 -5
  2. package/dist/cjs/sdk/base/BaseContract.js +1 -0
  3. package/dist/cjs/sdk/market/MarketSuite.js +5 -1
  4. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +47 -52
  5. package/dist/cjs/sdk/market/oracle/PriceOracleV300Contract.js +3 -2
  6. package/dist/cjs/sdk/market/oracle/PriceOracleV310Contract.js +3 -2
  7. package/dist/cjs/sdk/market/oracle/createPriceOracle.js +9 -28
  8. package/dist/cjs/sdk/market/pricefeeds/AbstractLPPriceFeed.js +1 -2
  9. package/dist/cjs/sdk/market/pricefeeds/RedstonePriceFeed.js +1 -1
  10. package/dist/cjs/sdk/plugins/V300StalenessPeriodPlugin.js +5 -5
  11. package/dist/esm/dev/calcLiquidatableLTs.js +1 -5
  12. package/dist/esm/sdk/base/BaseContract.js +1 -0
  13. package/dist/esm/sdk/market/MarketSuite.js +6 -2
  14. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +47 -53
  15. package/dist/esm/sdk/market/oracle/PriceOracleV300Contract.js +3 -2
  16. package/dist/esm/sdk/market/oracle/PriceOracleV310Contract.js +3 -2
  17. package/dist/esm/sdk/market/oracle/createPriceOracle.js +8 -27
  18. package/dist/esm/sdk/market/pricefeeds/AbstractLPPriceFeed.js +1 -2
  19. package/dist/esm/sdk/market/pricefeeds/RedstonePriceFeed.js +2 -2
  20. package/dist/esm/sdk/plugins/V300StalenessPeriodPlugin.js +6 -6
  21. package/dist/types/sdk/market/MarketSuite.d.ts +2 -2
  22. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +684 -28
  23. package/dist/types/sdk/market/oracle/PriceOracleV300Contract.d.ts +1 -1
  24. package/dist/types/sdk/market/oracle/PriceOracleV310Contract.d.ts +2 -2
  25. package/dist/types/sdk/market/oracle/createPriceOracle.d.ts +3 -14
  26. package/dist/types/sdk/market/oracle/types.d.ts +6 -97
  27. package/dist/types/sdk/plugins/V300StalenessPeriodPlugin.d.ts +2 -3
  28. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
- import type { Abi, Address } from "viem";
1
+ import type { Abi, Address, ContractFunctionReturnType } from "viem";
2
+ import { iPriceFeedCompressorAbi } from "../../../abi/compressors.js";
2
3
  import type { BaseContractOptions } from "../../base/BaseContract.js";
3
- import type { PriceOracleData } from "../../base/index.js";
4
+ import type { PriceFeedTreeNode, PriceOracleData } from "../../base/index.js";
4
5
  import { BaseContract } from "../../base/index.js";
5
6
  import type { GearboxSDK } from "../../GearboxSDK.js";
6
7
  import type { PriceOracleStateHuman } from "../../types/index.js";
@@ -8,9 +9,13 @@ import { AddressMap } from "../../utils/index.js";
8
9
  import type { IPriceFeedContract, UpdatePriceFeedsResult } from "../pricefeeds/index.js";
9
10
  import { PriceFeedRef } from "../pricefeeds/index.js";
10
11
  import PriceFeedAnswerMap from "./PriceFeedAnswerMap.js";
11
- import type { DelegatedOracleMulticall, IPriceOracleContract, OnDemandPriceUpdate, PriceFeedsForTokensOptions } from "./types.js";
12
- export declare abstract class PriceOracleBaseContract<abi extends Abi | readonly unknown[]> extends BaseContract<abi> implements IPriceOracleContract {
12
+ import type { IPriceOracleContract, OnDemandPriceUpdate, PriceFeedsForTokensOptions } from "./types.js";
13
+ export declare class PriceOracleBaseContract<abi extends Abi | readonly unknown[]> extends BaseContract<abi> implements IPriceOracleContract {
13
14
  #private;
15
+ /**
16
+ * Underlying token of market to which this price oracle belongs
17
+ */
18
+ readonly underlying: Address;
14
19
  /**
15
20
  * Mapping Token => [PriceFeed Address, stalenessPeriod]
16
21
  */
@@ -27,7 +32,7 @@ export declare abstract class PriceOracleBaseContract<abi extends Abi | readonly
27
32
  * Mapping Token => Price in USD
28
33
  */
29
34
  readonly reservePrices: PriceFeedAnswerMap;
30
- constructor(sdk: GearboxSDK, args: BaseContractOptions<abi>, data: PriceOracleData);
35
+ constructor(sdk: GearboxSDK, args: BaseContractOptions<abi>, data: PriceOracleData, underlying: Address);
31
36
  /**
32
37
  * Returns main and reserve price feeds for given tokens
33
38
  * @param tokens
@@ -63,64 +68,715 @@ export declare abstract class PriceOracleBaseContract<abi extends Abi | readonly
63
68
  reservePrice(token: Address): bigint;
64
69
  /**
65
70
  * Returns true if oracle's price feed tree contains given price feed
66
- * This feed is not necessary connected to token, but can be a component of composite feed for some token
67
71
  * @param priceFeed
68
72
  * @returns
69
73
  */
70
74
  usesPriceFeed(priceFeed: Address): boolean;
75
+ /**
76
+ * Tries to convert amount of token into underlying of current market
77
+ * @param token
78
+ * @param amount
79
+ * @param reserve
80
+ * @returns
81
+ */
82
+ convertToUnderlying(token: Address, amount: bigint, reserve?: boolean): bigint;
71
83
  /**
72
84
  * Tries to convert amount of from one token to another, using latest known prices
73
85
  * @param from
74
86
  * @param to
75
87
  * @param amount
76
- * @param reserve use reserve price feed instead of main
88
+ * @param reserve
77
89
  */
78
90
  convert(from: Address, to: Address, amount: bigint, reserve?: boolean): bigint;
79
91
  /**
80
92
  * Tries to convert amount of token to USD, using latest known prices
81
93
  * @param from
94
+ * @param to
82
95
  * @param amount
83
- * @param reserve use reserve price feed instead of main
96
+ * @param reserve
84
97
  */
85
98
  convertToUSD(from: Address, amount: bigint, reserve?: boolean): bigint;
86
99
  /**
87
100
  * Tries to convert amount of USD to token, using latest known prices
88
101
  * @param to
89
102
  * @param amount
90
- * @param reserve use reserve price feed instead of main
103
+ * @param reserve
91
104
  */
92
105
  convertFromUSD(to: Address, amount: bigint, reserve?: boolean): bigint;
93
106
  /**
94
107
  * Loads new prices for this oracle from PriceFeedCompressor
95
- * Will (re)create price feeds if needed
108
+ * Does not update price feeds, only updates prices
96
109
  */
97
110
  updatePrices(): Promise<void>;
98
- /**
99
- * Paired method to updatePrices, helps to update prices on all oracles in one multicall
100
- */
101
- syncStateMulticall(): DelegatedOracleMulticall;
102
- /**
103
- * Helper function to handle situation when we have multiple different compressor data entries for same oracle
104
- * This happens in v300
105
- *
106
- * @deprecated should be unnecessary after full v310 migration (oracles will be unique)
107
- * @param data
108
- * @returns
109
- */
110
- merge(data: PriceOracleData): this;
111
+ syncStateMulticall(): {
112
+ call: {
113
+ abi: readonly [{
114
+ readonly type: "function";
115
+ readonly inputs: readonly [];
116
+ readonly name: "contractType";
117
+ readonly outputs: readonly [{
118
+ readonly name: "";
119
+ readonly internalType: "bytes32";
120
+ readonly type: "bytes32";
121
+ }];
122
+ readonly stateMutability: "view";
123
+ }, {
124
+ readonly type: "function";
125
+ readonly inputs: readonly [{
126
+ readonly name: "priceOracle";
127
+ readonly internalType: "address";
128
+ readonly type: "address";
129
+ }];
130
+ readonly name: "getPriceOracleState";
131
+ readonly outputs: readonly [{
132
+ readonly name: "";
133
+ readonly internalType: "struct PriceOracleState";
134
+ readonly type: "tuple";
135
+ readonly components: readonly [{
136
+ readonly name: "baseParams";
137
+ readonly internalType: "struct BaseParams";
138
+ readonly type: "tuple";
139
+ readonly components: readonly [{
140
+ readonly name: "addr";
141
+ readonly internalType: "address";
142
+ readonly type: "address";
143
+ }, {
144
+ readonly name: "version";
145
+ readonly internalType: "uint256";
146
+ readonly type: "uint256";
147
+ }, {
148
+ readonly name: "contractType";
149
+ readonly internalType: "bytes32";
150
+ readonly type: "bytes32";
151
+ }, {
152
+ readonly name: "serializedParams";
153
+ readonly internalType: "bytes";
154
+ readonly type: "bytes";
155
+ }];
156
+ }, {
157
+ readonly name: "priceFeedMap";
158
+ readonly internalType: "struct PriceFeedMapEntry[]";
159
+ readonly type: "tuple[]";
160
+ readonly components: readonly [{
161
+ readonly name: "token";
162
+ readonly internalType: "address";
163
+ readonly type: "address";
164
+ }, {
165
+ readonly name: "reserve";
166
+ readonly internalType: "bool";
167
+ readonly type: "bool";
168
+ }, {
169
+ readonly name: "priceFeed";
170
+ readonly internalType: "address";
171
+ readonly type: "address";
172
+ }, {
173
+ readonly name: "stalenessPeriod";
174
+ readonly internalType: "uint32";
175
+ readonly type: "uint32";
176
+ }];
177
+ }, {
178
+ readonly name: "priceFeedTree";
179
+ readonly internalType: "struct PriceFeedTreeNode[]";
180
+ readonly type: "tuple[]";
181
+ readonly components: readonly [{
182
+ readonly name: "baseParams";
183
+ readonly internalType: "struct BaseParams";
184
+ readonly type: "tuple";
185
+ readonly components: readonly [{
186
+ readonly name: "addr";
187
+ readonly internalType: "address";
188
+ readonly type: "address";
189
+ }, {
190
+ readonly name: "version";
191
+ readonly internalType: "uint256";
192
+ readonly type: "uint256";
193
+ }, {
194
+ readonly name: "contractType";
195
+ readonly internalType: "bytes32";
196
+ readonly type: "bytes32";
197
+ }, {
198
+ readonly name: "serializedParams";
199
+ readonly internalType: "bytes";
200
+ readonly type: "bytes";
201
+ }];
202
+ }, {
203
+ readonly name: "description";
204
+ readonly internalType: "string";
205
+ readonly type: "string";
206
+ }, {
207
+ readonly name: "decimals";
208
+ readonly internalType: "uint8";
209
+ readonly type: "uint8";
210
+ }, {
211
+ readonly name: "skipCheck";
212
+ readonly internalType: "bool";
213
+ readonly type: "bool";
214
+ }, {
215
+ readonly name: "updatable";
216
+ readonly internalType: "bool";
217
+ readonly type: "bool";
218
+ }, {
219
+ readonly name: "underlyingFeeds";
220
+ readonly internalType: "address[]";
221
+ readonly type: "address[]";
222
+ }, {
223
+ readonly name: "underlyingStalenessPeriods";
224
+ readonly internalType: "uint32[]";
225
+ readonly type: "uint32[]";
226
+ }, {
227
+ readonly name: "answer";
228
+ readonly internalType: "struct PriceFeedAnswer";
229
+ readonly type: "tuple";
230
+ readonly components: readonly [{
231
+ readonly name: "price";
232
+ readonly internalType: "int256";
233
+ readonly type: "int256";
234
+ }, {
235
+ readonly name: "updatedAt";
236
+ readonly internalType: "uint256";
237
+ readonly type: "uint256";
238
+ }, {
239
+ readonly name: "success";
240
+ readonly internalType: "bool";
241
+ readonly type: "bool";
242
+ }];
243
+ }];
244
+ }];
245
+ }];
246
+ readonly stateMutability: "view";
247
+ }, {
248
+ readonly type: "function";
249
+ readonly inputs: readonly [{
250
+ readonly name: "priceOracle";
251
+ readonly internalType: "address";
252
+ readonly type: "address";
253
+ }, {
254
+ readonly name: "tokens";
255
+ readonly internalType: "address[]";
256
+ readonly type: "address[]";
257
+ }];
258
+ readonly name: "getPriceOracleState";
259
+ readonly outputs: readonly [{
260
+ readonly name: "";
261
+ readonly internalType: "struct PriceOracleState";
262
+ readonly type: "tuple";
263
+ readonly components: readonly [{
264
+ readonly name: "baseParams";
265
+ readonly internalType: "struct BaseParams";
266
+ readonly type: "tuple";
267
+ readonly components: readonly [{
268
+ readonly name: "addr";
269
+ readonly internalType: "address";
270
+ readonly type: "address";
271
+ }, {
272
+ readonly name: "version";
273
+ readonly internalType: "uint256";
274
+ readonly type: "uint256";
275
+ }, {
276
+ readonly name: "contractType";
277
+ readonly internalType: "bytes32";
278
+ readonly type: "bytes32";
279
+ }, {
280
+ readonly name: "serializedParams";
281
+ readonly internalType: "bytes";
282
+ readonly type: "bytes";
283
+ }];
284
+ }, {
285
+ readonly name: "priceFeedMap";
286
+ readonly internalType: "struct PriceFeedMapEntry[]";
287
+ readonly type: "tuple[]";
288
+ readonly components: readonly [{
289
+ readonly name: "token";
290
+ readonly internalType: "address";
291
+ readonly type: "address";
292
+ }, {
293
+ readonly name: "reserve";
294
+ readonly internalType: "bool";
295
+ readonly type: "bool";
296
+ }, {
297
+ readonly name: "priceFeed";
298
+ readonly internalType: "address";
299
+ readonly type: "address";
300
+ }, {
301
+ readonly name: "stalenessPeriod";
302
+ readonly internalType: "uint32";
303
+ readonly type: "uint32";
304
+ }];
305
+ }, {
306
+ readonly name: "priceFeedTree";
307
+ readonly internalType: "struct PriceFeedTreeNode[]";
308
+ readonly type: "tuple[]";
309
+ readonly components: readonly [{
310
+ readonly name: "baseParams";
311
+ readonly internalType: "struct BaseParams";
312
+ readonly type: "tuple";
313
+ readonly components: readonly [{
314
+ readonly name: "addr";
315
+ readonly internalType: "address";
316
+ readonly type: "address";
317
+ }, {
318
+ readonly name: "version";
319
+ readonly internalType: "uint256";
320
+ readonly type: "uint256";
321
+ }, {
322
+ readonly name: "contractType";
323
+ readonly internalType: "bytes32";
324
+ readonly type: "bytes32";
325
+ }, {
326
+ readonly name: "serializedParams";
327
+ readonly internalType: "bytes";
328
+ readonly type: "bytes";
329
+ }];
330
+ }, {
331
+ readonly name: "description";
332
+ readonly internalType: "string";
333
+ readonly type: "string";
334
+ }, {
335
+ readonly name: "decimals";
336
+ readonly internalType: "uint8";
337
+ readonly type: "uint8";
338
+ }, {
339
+ readonly name: "skipCheck";
340
+ readonly internalType: "bool";
341
+ readonly type: "bool";
342
+ }, {
343
+ readonly name: "updatable";
344
+ readonly internalType: "bool";
345
+ readonly type: "bool";
346
+ }, {
347
+ readonly name: "underlyingFeeds";
348
+ readonly internalType: "address[]";
349
+ readonly type: "address[]";
350
+ }, {
351
+ readonly name: "underlyingStalenessPeriods";
352
+ readonly internalType: "uint32[]";
353
+ readonly type: "uint32[]";
354
+ }, {
355
+ readonly name: "answer";
356
+ readonly internalType: "struct PriceFeedAnswer";
357
+ readonly type: "tuple";
358
+ readonly components: readonly [{
359
+ readonly name: "price";
360
+ readonly internalType: "int256";
361
+ readonly type: "int256";
362
+ }, {
363
+ readonly name: "updatedAt";
364
+ readonly internalType: "uint256";
365
+ readonly type: "uint256";
366
+ }, {
367
+ readonly name: "success";
368
+ readonly internalType: "bool";
369
+ readonly type: "bool";
370
+ }];
371
+ }];
372
+ }];
373
+ }];
374
+ readonly stateMutability: "view";
375
+ }, {
376
+ readonly type: "function";
377
+ readonly inputs: readonly [{
378
+ readonly name: "filter";
379
+ readonly internalType: "struct MarketFilter";
380
+ readonly type: "tuple";
381
+ readonly components: readonly [{
382
+ readonly name: "configurators";
383
+ readonly internalType: "address[]";
384
+ readonly type: "address[]";
385
+ }, {
386
+ readonly name: "pools";
387
+ readonly internalType: "address[]";
388
+ readonly type: "address[]";
389
+ }, {
390
+ readonly name: "underlying";
391
+ readonly internalType: "address";
392
+ readonly type: "address";
393
+ }];
394
+ }];
395
+ readonly name: "getPriceOracles";
396
+ readonly outputs: readonly [{
397
+ readonly name: "";
398
+ readonly internalType: "struct PriceOracleState[]";
399
+ readonly type: "tuple[]";
400
+ readonly components: readonly [{
401
+ readonly name: "baseParams";
402
+ readonly internalType: "struct BaseParams";
403
+ readonly type: "tuple";
404
+ readonly components: readonly [{
405
+ readonly name: "addr";
406
+ readonly internalType: "address";
407
+ readonly type: "address";
408
+ }, {
409
+ readonly name: "version";
410
+ readonly internalType: "uint256";
411
+ readonly type: "uint256";
412
+ }, {
413
+ readonly name: "contractType";
414
+ readonly internalType: "bytes32";
415
+ readonly type: "bytes32";
416
+ }, {
417
+ readonly name: "serializedParams";
418
+ readonly internalType: "bytes";
419
+ readonly type: "bytes";
420
+ }];
421
+ }, {
422
+ readonly name: "priceFeedMap";
423
+ readonly internalType: "struct PriceFeedMapEntry[]";
424
+ readonly type: "tuple[]";
425
+ readonly components: readonly [{
426
+ readonly name: "token";
427
+ readonly internalType: "address";
428
+ readonly type: "address";
429
+ }, {
430
+ readonly name: "reserve";
431
+ readonly internalType: "bool";
432
+ readonly type: "bool";
433
+ }, {
434
+ readonly name: "priceFeed";
435
+ readonly internalType: "address";
436
+ readonly type: "address";
437
+ }, {
438
+ readonly name: "stalenessPeriod";
439
+ readonly internalType: "uint32";
440
+ readonly type: "uint32";
441
+ }];
442
+ }, {
443
+ readonly name: "priceFeedTree";
444
+ readonly internalType: "struct PriceFeedTreeNode[]";
445
+ readonly type: "tuple[]";
446
+ readonly components: readonly [{
447
+ readonly name: "baseParams";
448
+ readonly internalType: "struct BaseParams";
449
+ readonly type: "tuple";
450
+ readonly components: readonly [{
451
+ readonly name: "addr";
452
+ readonly internalType: "address";
453
+ readonly type: "address";
454
+ }, {
455
+ readonly name: "version";
456
+ readonly internalType: "uint256";
457
+ readonly type: "uint256";
458
+ }, {
459
+ readonly name: "contractType";
460
+ readonly internalType: "bytes32";
461
+ readonly type: "bytes32";
462
+ }, {
463
+ readonly name: "serializedParams";
464
+ readonly internalType: "bytes";
465
+ readonly type: "bytes";
466
+ }];
467
+ }, {
468
+ readonly name: "description";
469
+ readonly internalType: "string";
470
+ readonly type: "string";
471
+ }, {
472
+ readonly name: "decimals";
473
+ readonly internalType: "uint8";
474
+ readonly type: "uint8";
475
+ }, {
476
+ readonly name: "skipCheck";
477
+ readonly internalType: "bool";
478
+ readonly type: "bool";
479
+ }, {
480
+ readonly name: "updatable";
481
+ readonly internalType: "bool";
482
+ readonly type: "bool";
483
+ }, {
484
+ readonly name: "underlyingFeeds";
485
+ readonly internalType: "address[]";
486
+ readonly type: "address[]";
487
+ }, {
488
+ readonly name: "underlyingStalenessPeriods";
489
+ readonly internalType: "uint32[]";
490
+ readonly type: "uint32[]";
491
+ }, {
492
+ readonly name: "answer";
493
+ readonly internalType: "struct PriceFeedAnswer";
494
+ readonly type: "tuple";
495
+ readonly components: readonly [{
496
+ readonly name: "price";
497
+ readonly internalType: "int256";
498
+ readonly type: "int256";
499
+ }, {
500
+ readonly name: "updatedAt";
501
+ readonly internalType: "uint256";
502
+ readonly type: "uint256";
503
+ }, {
504
+ readonly name: "success";
505
+ readonly internalType: "bool";
506
+ readonly type: "bool";
507
+ }];
508
+ }];
509
+ }];
510
+ }];
511
+ readonly stateMutability: "view";
512
+ }, {
513
+ readonly type: "function";
514
+ readonly inputs: readonly [{
515
+ readonly name: "priceFeeds";
516
+ readonly internalType: "address[]";
517
+ readonly type: "address[]";
518
+ }];
519
+ readonly name: "getUpdatablePriceFeeds";
520
+ readonly outputs: readonly [{
521
+ readonly name: "";
522
+ readonly internalType: "struct BaseParams[]";
523
+ readonly type: "tuple[]";
524
+ readonly components: readonly [{
525
+ readonly name: "addr";
526
+ readonly internalType: "address";
527
+ readonly type: "address";
528
+ }, {
529
+ readonly name: "version";
530
+ readonly internalType: "uint256";
531
+ readonly type: "uint256";
532
+ }, {
533
+ readonly name: "contractType";
534
+ readonly internalType: "bytes32";
535
+ readonly type: "bytes32";
536
+ }, {
537
+ readonly name: "serializedParams";
538
+ readonly internalType: "bytes";
539
+ readonly type: "bytes";
540
+ }];
541
+ }];
542
+ readonly stateMutability: "view";
543
+ }, {
544
+ readonly type: "function";
545
+ readonly inputs: readonly [{
546
+ readonly name: "filter";
547
+ readonly internalType: "struct MarketFilter";
548
+ readonly type: "tuple";
549
+ readonly components: readonly [{
550
+ readonly name: "configurators";
551
+ readonly internalType: "address[]";
552
+ readonly type: "address[]";
553
+ }, {
554
+ readonly name: "pools";
555
+ readonly internalType: "address[]";
556
+ readonly type: "address[]";
557
+ }, {
558
+ readonly name: "underlying";
559
+ readonly internalType: "address";
560
+ readonly type: "address";
561
+ }];
562
+ }];
563
+ readonly name: "getUpdatablePriceFeeds";
564
+ readonly outputs: readonly [{
565
+ readonly name: "";
566
+ readonly internalType: "struct BaseParams[]";
567
+ readonly type: "tuple[]";
568
+ readonly components: readonly [{
569
+ readonly name: "addr";
570
+ readonly internalType: "address";
571
+ readonly type: "address";
572
+ }, {
573
+ readonly name: "version";
574
+ readonly internalType: "uint256";
575
+ readonly type: "uint256";
576
+ }, {
577
+ readonly name: "contractType";
578
+ readonly internalType: "bytes32";
579
+ readonly type: "bytes32";
580
+ }, {
581
+ readonly name: "serializedParams";
582
+ readonly internalType: "bytes";
583
+ readonly type: "bytes";
584
+ }];
585
+ }];
586
+ readonly stateMutability: "view";
587
+ }, {
588
+ readonly type: "function";
589
+ readonly inputs: readonly [{
590
+ readonly name: "filter";
591
+ readonly internalType: "struct MarketFilter";
592
+ readonly type: "tuple";
593
+ readonly components: readonly [{
594
+ readonly name: "configurators";
595
+ readonly internalType: "address[]";
596
+ readonly type: "address[]";
597
+ }, {
598
+ readonly name: "pools";
599
+ readonly internalType: "address[]";
600
+ readonly type: "address[]";
601
+ }, {
602
+ readonly name: "underlying";
603
+ readonly internalType: "address";
604
+ readonly type: "address";
605
+ }];
606
+ }];
607
+ readonly name: "loadPriceFeedTree";
608
+ readonly outputs: readonly [{
609
+ readonly name: "";
610
+ readonly internalType: "struct PriceFeedTreeNode[]";
611
+ readonly type: "tuple[]";
612
+ readonly components: readonly [{
613
+ readonly name: "baseParams";
614
+ readonly internalType: "struct BaseParams";
615
+ readonly type: "tuple";
616
+ readonly components: readonly [{
617
+ readonly name: "addr";
618
+ readonly internalType: "address";
619
+ readonly type: "address";
620
+ }, {
621
+ readonly name: "version";
622
+ readonly internalType: "uint256";
623
+ readonly type: "uint256";
624
+ }, {
625
+ readonly name: "contractType";
626
+ readonly internalType: "bytes32";
627
+ readonly type: "bytes32";
628
+ }, {
629
+ readonly name: "serializedParams";
630
+ readonly internalType: "bytes";
631
+ readonly type: "bytes";
632
+ }];
633
+ }, {
634
+ readonly name: "description";
635
+ readonly internalType: "string";
636
+ readonly type: "string";
637
+ }, {
638
+ readonly name: "decimals";
639
+ readonly internalType: "uint8";
640
+ readonly type: "uint8";
641
+ }, {
642
+ readonly name: "skipCheck";
643
+ readonly internalType: "bool";
644
+ readonly type: "bool";
645
+ }, {
646
+ readonly name: "updatable";
647
+ readonly internalType: "bool";
648
+ readonly type: "bool";
649
+ }, {
650
+ readonly name: "underlyingFeeds";
651
+ readonly internalType: "address[]";
652
+ readonly type: "address[]";
653
+ }, {
654
+ readonly name: "underlyingStalenessPeriods";
655
+ readonly internalType: "uint32[]";
656
+ readonly type: "uint32[]";
657
+ }, {
658
+ readonly name: "answer";
659
+ readonly internalType: "struct PriceFeedAnswer";
660
+ readonly type: "tuple";
661
+ readonly components: readonly [{
662
+ readonly name: "price";
663
+ readonly internalType: "int256";
664
+ readonly type: "int256";
665
+ }, {
666
+ readonly name: "updatedAt";
667
+ readonly internalType: "uint256";
668
+ readonly type: "uint256";
669
+ }, {
670
+ readonly name: "success";
671
+ readonly internalType: "bool";
672
+ readonly type: "bool";
673
+ }];
674
+ }];
675
+ }];
676
+ readonly stateMutability: "view";
677
+ }, {
678
+ readonly type: "function";
679
+ readonly inputs: readonly [{
680
+ readonly name: "priceFeeds";
681
+ readonly internalType: "address[]";
682
+ readonly type: "address[]";
683
+ }];
684
+ readonly name: "loadPriceFeedTree";
685
+ readonly outputs: readonly [{
686
+ readonly name: "";
687
+ readonly internalType: "struct PriceFeedTreeNode[]";
688
+ readonly type: "tuple[]";
689
+ readonly components: readonly [{
690
+ readonly name: "baseParams";
691
+ readonly internalType: "struct BaseParams";
692
+ readonly type: "tuple";
693
+ readonly components: readonly [{
694
+ readonly name: "addr";
695
+ readonly internalType: "address";
696
+ readonly type: "address";
697
+ }, {
698
+ readonly name: "version";
699
+ readonly internalType: "uint256";
700
+ readonly type: "uint256";
701
+ }, {
702
+ readonly name: "contractType";
703
+ readonly internalType: "bytes32";
704
+ readonly type: "bytes32";
705
+ }, {
706
+ readonly name: "serializedParams";
707
+ readonly internalType: "bytes";
708
+ readonly type: "bytes";
709
+ }];
710
+ }, {
711
+ readonly name: "description";
712
+ readonly internalType: "string";
713
+ readonly type: "string";
714
+ }, {
715
+ readonly name: "decimals";
716
+ readonly internalType: "uint8";
717
+ readonly type: "uint8";
718
+ }, {
719
+ readonly name: "skipCheck";
720
+ readonly internalType: "bool";
721
+ readonly type: "bool";
722
+ }, {
723
+ readonly name: "updatable";
724
+ readonly internalType: "bool";
725
+ readonly type: "bool";
726
+ }, {
727
+ readonly name: "underlyingFeeds";
728
+ readonly internalType: "address[]";
729
+ readonly type: "address[]";
730
+ }, {
731
+ readonly name: "underlyingStalenessPeriods";
732
+ readonly internalType: "uint32[]";
733
+ readonly type: "uint32[]";
734
+ }, {
735
+ readonly name: "answer";
736
+ readonly internalType: "struct PriceFeedAnswer";
737
+ readonly type: "tuple";
738
+ readonly components: readonly [{
739
+ readonly name: "price";
740
+ readonly internalType: "int256";
741
+ readonly type: "int256";
742
+ }, {
743
+ readonly name: "updatedAt";
744
+ readonly internalType: "uint256";
745
+ readonly type: "uint256";
746
+ }, {
747
+ readonly name: "success";
748
+ readonly internalType: "bool";
749
+ readonly type: "bool";
750
+ }];
751
+ }];
752
+ }];
753
+ readonly stateMutability: "view";
754
+ }, {
755
+ readonly type: "function";
756
+ readonly inputs: readonly [];
757
+ readonly name: "version";
758
+ readonly outputs: readonly [{
759
+ readonly name: "";
760
+ readonly internalType: "uint256";
761
+ readonly type: "uint256";
762
+ }];
763
+ readonly stateMutability: "view";
764
+ }];
765
+ address: `0x${string}`;
766
+ functionName: string;
767
+ args: any[];
768
+ };
769
+ onResult: (resp: ContractFunctionReturnType<typeof iPriceFeedCompressorAbi, "view", "getPriceOracleState">) => void;
770
+ };
111
771
  /**
112
772
  * Helper method to find "attachment point" of price feed (makes sense for updatable price feeds only) -
113
773
  * returns token (in v3.0 can be ticker) and main/reserve flag
114
774
  *
115
- * @deprecated Should be gone after v310 migration
116
- *
117
775
  * @param priceFeed
118
776
  * @returns
119
777
  */
120
778
  findTokenForPriceFeed(priceFeed: Address): [token: Address | undefined, reserve: boolean];
121
- /**
122
- * Returns list of addresses that should be watched for events to sync state
123
- */
124
779
  get watchAddresses(): Set<Address>;
125
780
  stateHuman(raw?: boolean): PriceOracleStateHuman;
781
+ protected get priceFeedTree(): readonly PriceFeedTreeNode[];
126
782
  }