@strkfarm/sdk 2.0.0-dev.5 → 2.0.0-dev.50

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 (79) hide show
  1. package/dist/cli.js +190 -36
  2. package/dist/cli.mjs +188 -34
  3. package/dist/index.browser.global.js +119400 -92821
  4. package/dist/index.browser.mjs +13293 -11146
  5. package/dist/index.d.ts +2281 -1938
  6. package/dist/index.js +13532 -11179
  7. package/dist/index.mjs +14165 -11836
  8. package/package.json +59 -60
  9. package/src/data/avnu.abi.json +840 -0
  10. package/src/data/ekubo-price-fethcer.abi.json +265 -0
  11. package/src/data/redeem-request-nft.abi.json +752 -0
  12. package/src/data/universal-vault.abi.json +8 -7
  13. package/src/dataTypes/_bignumber.ts +13 -4
  14. package/src/dataTypes/bignumber.browser.ts +10 -1
  15. package/src/dataTypes/bignumber.node.ts +10 -1
  16. package/src/dataTypes/index.ts +3 -2
  17. package/src/dataTypes/mynumber.ts +141 -0
  18. package/src/global.ts +279 -233
  19. package/src/index.browser.ts +2 -1
  20. package/src/interfaces/common.tsx +228 -6
  21. package/src/modules/apollo-client-config.ts +28 -0
  22. package/src/modules/avnu.ts +21 -12
  23. package/src/modules/ekubo-pricer.ts +80 -0
  24. package/src/modules/ekubo-quoter.ts +48 -30
  25. package/src/modules/erc20.ts +17 -0
  26. package/src/modules/harvests.ts +43 -29
  27. package/src/modules/index.ts +2 -1
  28. package/src/modules/pragma.ts +23 -8
  29. package/src/modules/pricer-avnu-api.ts +114 -0
  30. package/src/modules/pricer-from-api.ts +156 -15
  31. package/src/modules/pricer-lst.ts +1 -1
  32. package/src/modules/pricer.ts +107 -41
  33. package/src/modules/pricerBase.ts +2 -1
  34. package/src/modules/zkLend.ts +3 -2
  35. package/src/node/deployer.ts +36 -1
  36. package/src/node/pricer-redis.ts +3 -1
  37. package/src/strategies/base-strategy.ts +168 -16
  38. package/src/strategies/constants.ts +8 -3
  39. package/src/strategies/ekubo-cl-vault.tsx +1048 -355
  40. package/src/strategies/factory.ts +199 -0
  41. package/src/strategies/index.ts +5 -3
  42. package/src/strategies/registry.ts +262 -0
  43. package/src/strategies/sensei.ts +354 -10
  44. package/src/strategies/svk-strategy.ts +292 -31
  45. package/src/strategies/token-boosted-xstrk-carry-strategy.tsx +1261 -0
  46. package/src/strategies/types.ts +4 -0
  47. package/src/strategies/universal-adapters/adapter-utils.ts +4 -1
  48. package/src/strategies/universal-adapters/avnu-adapter.ts +196 -272
  49. package/src/strategies/universal-adapters/baseAdapter.ts +263 -251
  50. package/src/strategies/universal-adapters/common-adapter.ts +206 -203
  51. package/src/strategies/universal-adapters/index.ts +10 -8
  52. package/src/strategies/universal-adapters/svk-troves-adapter.ts +511 -0
  53. package/src/strategies/universal-adapters/token-transfer-adapter.ts +200 -0
  54. package/src/strategies/universal-adapters/vesu-adapter.ts +120 -82
  55. package/src/strategies/universal-adapters/vesu-modify-position-adapter.ts +525 -0
  56. package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +866 -860
  57. package/src/strategies/universal-adapters/vesu-position-common.ts +258 -0
  58. package/src/strategies/universal-adapters/vesu-supply-only-adapter.ts +18 -3
  59. package/src/strategies/universal-lst-muliplier-strategy.tsx +895 -416
  60. package/src/strategies/universal-strategy.tsx +1332 -1173
  61. package/src/strategies/vesu-rebalance.tsx +254 -153
  62. package/src/strategies/yoloVault.ts +1096 -0
  63. package/src/utils/cacheClass.ts +11 -2
  64. package/src/utils/health-factor-math.ts +33 -1
  65. package/src/utils/index.ts +3 -1
  66. package/src/utils/logger.browser.ts +22 -4
  67. package/src/utils/logger.node.ts +259 -24
  68. package/src/utils/starknet-call-parser.ts +1036 -0
  69. package/src/utils/strategy-utils.ts +61 -0
  70. package/src/modules/ExtendedWrapperSDk/index.ts +0 -62
  71. package/src/modules/ExtendedWrapperSDk/types.ts +0 -311
  72. package/src/modules/ExtendedWrapperSDk/wrapper.ts +0 -395
  73. package/src/strategies/universal-adapters/extended-adapter.ts +0 -662
  74. package/src/strategies/universal-adapters/unused-balance-adapter.ts +0 -109
  75. package/src/strategies/vesu-extended-strategy/services/operationService.ts +0 -34
  76. package/src/strategies/vesu-extended-strategy/utils/config.runtime.ts +0 -77
  77. package/src/strategies/vesu-extended-strategy/utils/constants.ts +0 -49
  78. package/src/strategies/vesu-extended-strategy/utils/helper.ts +0 -372
  79. package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +0 -1140
package/src/global.ts CHANGED
@@ -1,322 +1,368 @@
1
- import axios from "axios";
2
- import { TokenInfo } from "./interfaces";
3
- import { ContractAddr } from "./dataTypes";
4
- import { logger } from "@/utils/logger";
1
+ import axios from 'axios';
2
+ import { TokenIndexingType, TokenInfo } from './interfaces';
3
+ import { ContractAddr } from './dataTypes';
4
+ import { logger } from '@/utils/logger';
5
+
5
6
 
6
7
  export class FatalError extends Error {
7
- constructor(message: string, err?: Error) {
8
- super(message);
9
- logger.error(message);
10
- if (err) logger.error(err.message);
11
- this.name = "FatalError";
12
- }
8
+ constructor(message: string, err?: Error) {
9
+ super(message);
10
+ logger.error(message);
11
+ if (err)
12
+ logger.error(err.message);
13
+ this.name = "FatalError";
14
+ }
13
15
  }
14
16
 
15
- const defaultTokens: TokenInfo[] = [
16
- {
17
- name: "Starknet",
18
- symbol: "STRK",
19
- logo: "https://assets.troves.fi/integrations/tokens/strk.svg",
20
- address: ContractAddr.from(
21
- "0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d"
22
- ),
17
+ const defaultTokens: TokenInfo[] = [{
18
+ name: 'Starknet',
19
+ symbol: 'STRK',
20
+ logo: 'https://assets.troves.fi/integrations/tokens/strk.svg',
21
+ address: ContractAddr.from('0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d'),
23
22
  decimals: 18,
24
- coingeckId: "starknet",
23
+ coingeckId: 'starknet',
25
24
  displayDecimals: 2,
26
- priceCheckAmount: 1000,
27
- },
28
- {
29
- name: "xSTRK",
30
- symbol: "xSTRK",
31
- logo: "https://assets.troves.fi/integrations/tokens/xstrk.svg",
32
- address: ContractAddr.from(
33
- "0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a"
34
- ),
25
+ priceCheckAmount: 5000,
26
+ priceMethod: 'Avnu',
27
+ indexingType: TokenIndexingType.INDEXER,
28
+ }, {
29
+ name: 'xSTRK',
30
+ symbol: 'xSTRK',
31
+ logo: 'https://assets.troves.fi/integrations/tokens/xstrk.svg',
32
+ address: ContractAddr.from('0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a'),
35
33
  decimals: 18,
36
34
  coingeckId: undefined,
37
- priceCheckAmount: 1000,
35
+ priceCheckAmount: 5000,
38
36
  displayDecimals: 2,
39
- },
40
- {
41
- name: "ETH",
42
- symbol: "ETH",
43
- logo: "https://assets.troves.fi/integrations/tokens/eth.svg",
44
- address: ContractAddr.from(
45
- "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"
46
- ),
37
+ priceMethod: 'Avnu',
38
+ indexingType: TokenIndexingType.LST_SCRIPT,
39
+ }, {
40
+ name: 'ETH',
41
+ symbol: 'ETH',
42
+ logo: 'https://assets.troves.fi/integrations/tokens/eth.svg',
43
+ address: ContractAddr.from('0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7'),
47
44
  decimals: 18,
48
45
  coingeckId: undefined,
49
46
  priceCheckAmount: 0.1,
50
47
  displayDecimals: 6,
51
- },
52
- {
53
- name: "USDCe",
54
- symbol: "USDCe",
55
- logo: "https://assets.troves.fi/integrations/tokens/usdc.svg",
56
- address: ContractAddr.from(
57
- "0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8"
58
- ),
48
+ indexingType: TokenIndexingType.INDEXER,
49
+ }, {
50
+ name: 'USDC.e',
51
+ symbol: 'USDC.e',
52
+ logo: 'https://assets.troves.fi/integrations/tokens/usdc.svg',
53
+ address: ContractAddr.from('0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8'),
54
+ decimals: 6,
55
+ coingeckId: undefined,
56
+ displayDecimals: 2,
57
+ priceCheckAmount: 1000,
58
+ priceProxySymbol: 'USDC',
59
+ indexingType: TokenIndexingType.PEGGED,
60
+ }, {
61
+ name: 'USDC',
62
+ symbol: 'USDC',
63
+ logo: 'https://assets.troves.fi/integrations/tokens/usdc.svg',
64
+ address: ContractAddr.from('0x033068F6539f8e6e6b131e6B2B814e6c34A5224bC66947c47DaB9dFeE93b35fb'),
59
65
  decimals: 6,
60
66
  coingeckId: undefined,
61
67
  displayDecimals: 2,
62
68
  priceCheckAmount: 1000,
63
- },
64
- {
65
- name: "USDT",
66
- symbol: "USDT",
67
- logo: "https://assets.troves.fi/integrations/tokens/usdt.svg",
68
- address: ContractAddr.from(
69
- "0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8"
70
- ),
69
+ indexingType: TokenIndexingType.INDEXER,
70
+ }, {
71
+ name: 'USDT',
72
+ symbol: 'USDT',
73
+ logo: 'https://assets.troves.fi/integrations/tokens/usdt.svg',
74
+ address: ContractAddr.from('0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8'),
71
75
  decimals: 6,
72
76
  coingeckId: undefined,
73
77
  priceCheckAmount: 1000,
74
78
  displayDecimals: 2,
75
- },
76
- {
77
- name: "WBTC",
78
- symbol: "WBTC",
79
- logo: "https://assets.troves.fi/integrations/tokens/wbtc.svg",
80
- address: ContractAddr.from(
81
- "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"
82
- ),
79
+ indexingType: TokenIndexingType.INDEXER,
80
+ }, {
81
+ name: 'WBTC',
82
+ symbol: 'WBTC',
83
+ logo: 'https://assets.troves.fi/integrations/tokens/wbtc.svg',
84
+ address: ContractAddr.from('0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac'),
83
85
  decimals: 8,
84
86
  coingeckId: undefined,
85
87
  displayDecimals: 6,
86
88
  priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
87
- },
88
- {
89
- name: "tBTC",
90
- symbol: "tBTC",
91
- logo: "https://assets.strkfarm.com/integrations/tokens/tbtc.svg",
92
- address: ContractAddr.from(
93
- "0x4daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f"
94
- ),
89
+ indexingType: TokenIndexingType.INDEXER,
90
+ }, {
91
+ name: 'tBTC',
92
+ symbol: 'tBTC',
93
+ logo: 'https://assets.strkfarm.com/integrations/tokens/tbtc.svg',
94
+ address: ContractAddr.from('0x4daa17763b286d1e59b97c283c0b8c949994c361e426a28f743c67bdfe9a32f'),
95
95
  decimals: 18,
96
96
  coingeckId: undefined,
97
97
  displayDecimals: 6,
98
98
  priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
99
- },
100
- {
101
- name: "solvBTC",
102
- symbol: "solvBTC",
103
- logo: "https://assets.strkfarm.com/integrations/tokens/solvbtc.svg",
104
- address: ContractAddr.from(
105
- "0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68"
106
- ),
99
+ priceProxySymbol: 'WBTC',
100
+ indexingType: TokenIndexingType.PEGGED,
101
+ }, {
102
+ name: 'solvBTC',
103
+ symbol: 'solvBTC',
104
+ logo: 'https://assets.strkfarm.com/integrations/tokens/solvbtc.svg',
105
+ address: ContractAddr.from('0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68'),
107
106
  decimals: 18,
108
107
  coingeckId: undefined,
109
- priceProxySymbol: "WBTC",
108
+ priceProxySymbol: 'WBTC',
110
109
  displayDecimals: 6,
111
110
  priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
112
- },
113
- {
114
- name: "LBTC",
115
- symbol: "LBTC",
116
- logo: "https://assets.strkfarm.com/integrations/tokens/lbtc.svg",
117
- address: ContractAddr.from(
118
- "0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4"
119
- ),
111
+ indexingType: TokenIndexingType.PEGGED,
112
+ }, {
113
+ name: 'LBTC',
114
+ symbol: 'LBTC',
115
+ logo: 'https://assets.strkfarm.com/integrations/tokens/lbtc.svg',
116
+ address: ContractAddr.from('0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4'),
120
117
  decimals: 8,
121
118
  coingeckId: undefined,
122
119
  displayDecimals: 6,
123
- priceProxySymbol: "WBTC",
120
+ priceProxySymbol: 'WBTC',
124
121
  priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
125
- },
126
- {
127
- name: "xWBTC",
128
- symbol: "xWBTC",
129
- logo: "https://assets.strkfarm.com/integrations/tokens/xwbtc.svg",
130
- address: ContractAddr.from(
131
- "0x6a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13"
132
- ),
122
+ indexingType: TokenIndexingType.PEGGED,
123
+ }, {
124
+ name: 'xWBTC',
125
+ symbol: 'xWBTC',
126
+ logo: 'https://assets.strkfarm.com/integrations/tokens/xwbtc.svg',
127
+ address: ContractAddr.from('0x6a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13'),
133
128
  decimals: 8,
134
129
  coingeckId: undefined,
135
130
  displayDecimals: 6,
136
131
  priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
137
- },
138
- {
139
- name: "xsBTC",
140
- symbol: "xsBTC",
141
- logo: "https://assets.strkfarm.com/integrations/tokens/xsbtc_solv.svg",
142
- address: ContractAddr.from(
143
- "0x580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9"
144
- ),
132
+ priceMethod: 'Avnu',
133
+ indexingType: TokenIndexingType.LST_SCRIPT,
134
+ }, {
135
+ name: 'xsBTC',
136
+ symbol: 'xsBTC',
137
+ logo: 'https://assets.strkfarm.com/integrations/tokens/xsbtc_solv.svg',
138
+ address: ContractAddr.from('0x580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9'),
145
139
  decimals: 18,
146
140
  coingeckId: undefined,
147
141
  displayDecimals: 6,
148
- priceProxySymbol: "WBTC",
149
142
  priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
150
- },
151
- {
152
- // todo upgrade proxy tokens once feeds are available
153
- name: "xtBTC",
154
- symbol: "xtBTC",
155
- logo: "https://assets.strkfarm.com/integrations/tokens/xtbtc.svg",
156
- address: ContractAddr.from(
157
- "0x43a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91"
158
- ),
143
+ priceMethod: 'Avnu',
144
+ indexingType: TokenIndexingType.LST_SCRIPT,
145
+ }, {
146
+ name: 'xtBTC',
147
+ symbol: 'xtBTC',
148
+ logo: 'https://assets.strkfarm.com/integrations/tokens/xtbtc.svg',
149
+ address: ContractAddr.from('0x43a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91'),
159
150
  decimals: 18,
160
151
  coingeckId: undefined,
161
152
  displayDecimals: 6,
162
153
  priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
163
- },
164
- {
165
- name: "xLBTC",
166
- symbol: "xLBTC",
167
- logo: "https://assets.strkfarm.com/integrations/tokens/xlbtc.svg",
168
- address: ContractAddr.from(
169
- "0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0"
170
- ),
154
+ priceMethod: 'Avnu',
155
+ indexingType: TokenIndexingType.LST_SCRIPT,
156
+ }, {
157
+ name: 'xLBTC',
158
+ symbol: 'xLBTC',
159
+ logo: 'https://assets.strkfarm.com/integrations/tokens/xlbtc.svg',
160
+ address: ContractAddr.from('0x07dd3c80de9fcc5545f0cb83678826819c79619ed7992cc06ff81fc67cd2efe0'),
171
161
  decimals: 8,
172
162
  coingeckId: undefined,
173
163
  displayDecimals: 6,
174
- priceProxySymbol: "WBTC",
175
164
  priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
176
- },
177
- {
178
- name: "mRe7BTC",
179
- symbol: "mRe7BTC",
180
- logo: "https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/3a62ecee-1e58-45d3-9862-3ce90dff1900/logo",
181
- address: ContractAddr.from(
182
- "0x4e4fb1a9ca7e84bae609b9dc0078ad7719e49187ae7e425bb47d131710eddac"
183
- ),
165
+ priceMethod: 'Avnu',
166
+ indexingType: TokenIndexingType.LST_SCRIPT,
167
+ }, {
168
+ name: 'mRe7BTC',
169
+ symbol: 'mRe7BTC',
170
+ logo: 'https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/3a62ecee-1e58-45d3-9862-3ce90dff1900/logo',
171
+ address: ContractAddr.from('0x4e4fb1a9ca7e84bae609b9dc0078ad7719e49187ae7e425bb47d131710eddac'),
184
172
  decimals: 18,
185
173
  coingeckId: undefined,
186
174
  displayDecimals: 6,
187
175
  priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
188
- },
189
- {
190
- name: "mRe7YIELD",
191
- symbol: "mRe7YIELD",
192
- logo: "https://midas.app/assets/mre7-BcOOHm7i.svg",
193
- address: ContractAddr.from(
194
- "0x4be8945e61dc3e19ebadd1579a6bd53b262f51ba89e6f8b0c4bc9a7e3c633fc"
195
- ),
176
+ dontPrice: true,
177
+ indexingType: TokenIndexingType.IGNORE,
178
+ }, {
179
+ name: 'mRe7YIELD',
180
+ symbol: 'mRe7YIELD',
181
+ logo: 'https://midas.app/assets/mre7-BcOOHm7i.svg',
182
+ address: ContractAddr.from('0x4be8945e61dc3e19ebadd1579a6bd53b262f51ba89e6f8b0c4bc9a7e3c633fc'),
196
183
  decimals: 18,
197
184
  coingeckId: undefined,
198
185
  displayDecimals: 2,
199
186
  priceCheckAmount: 100,
200
- },
201
- {
202
- name: "USDC",
203
- symbol: "USDC",
204
- logo: "https://assets.troves.fi/integrations/tokens/usdc.svg",
205
- address: ContractAddr.from(
206
- "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb"
207
- ),
187
+ dontPrice: true,
188
+ indexingType: TokenIndexingType.IGNORE,
189
+ }, {
190
+ name: "fyeWBTC",
191
+ symbol: "fyeWBTC",
192
+ logo: 'https://assets.strkfarm.com/integrations/tokens/wbtc.svg',
193
+ address: ContractAddr.from('0x04dd39de0a588f5e1c7a8377e1bef2c49caaee49a11433429d2c48f587b3a492'),
194
+ decimals: 8,
195
+ coingeckId: undefined,
196
+ displayDecimals: 6,
197
+ priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
198
+ dontPrice: true,
199
+ indexingType: TokenIndexingType.IGNORE,
200
+ }, {
201
+ name: "fyETH",
202
+ symbol: "fyETH",
203
+ logo: 'https://assets.strkfarm.com/integrations/tokens/eth.svg',
204
+ address: ContractAddr.from('0x050707bC3b8730022F10530C2c6f6b9467644129C50C2868Ad0036c5e4E9e616'),
205
+ decimals: 18,
206
+ coingeckId: undefined,
207
+ displayDecimals: 4,
208
+ priceCheckAmount: 0.1,
209
+ dontPrice: true,
210
+ indexingType: TokenIndexingType.IGNORE,
211
+ }, {
212
+ name: "fyeUSDC",
213
+ symbol: "fyeUSDC",
214
+ logo: 'https://assets.strkfarm.com/integrations/tokens/usdc.svg',
215
+ address: ContractAddr.from('0x07fdcec0cef01294c9c3d52415215949805c77bae8003702a7928fd6d2c36bc1'),
208
216
  decimals: 6,
209
217
  coingeckId: undefined,
210
218
  displayDecimals: 2,
211
219
  priceCheckAmount: 100,
212
- },
213
- ];
220
+ dontPrice: true,
221
+ indexingType: TokenIndexingType.IGNORE,
222
+ }, {
223
+ name: 'strkBTC',
224
+ symbol: 'strkBTC',
225
+ logo: 'https://assets.troves.fi/integrations/tokens/strkbtc.svg',
226
+ address: ContractAddr.from('0x0787150e306e6eae6e3f79dea881770e8bbff2c1b8eb490f969669ee945b3135'),
227
+ decimals: 8,
228
+ coingeckId: undefined,
229
+ displayDecimals: 6,
230
+ priceCheckAmount: 0.001, // 112000 * 0.0001 = $110.2
231
+ priceMethod: 'Avnu',
232
+ priceProxySymbol: 'WBTC',
233
+ indexingType: TokenIndexingType.PEGGED,
234
+ }, {
235
+ name: 'xstrkBTC',
236
+ symbol: 'xstrkBTC',
237
+ logo: 'https://assets.troves.fi/integrations/tokens/xstrkbtc.svg',
238
+ address: ContractAddr.from('0x047751b3532fabca89b0f2e35ca1cb45e5a7b11d5e3d3663dfa1f4406b45fd88'),
239
+ decimals: 8,
240
+ coingeckId: undefined,
241
+ displayDecimals: 6,
242
+ priceCheckAmount: 0.001,
243
+ priceMethod: 'Avnu',
244
+ indexingType: TokenIndexingType.LST_SCRIPT,
245
+ }];
214
246
  const tokens: TokenInfo[] = defaultTokens;
215
247
 
216
248
  /** Contains globally useful functions.
217
249
  * - fatalError: Things to do when a fatal error occurs
218
250
  */
219
251
  export class Global {
220
- static cache: Record<string, { value: any; ttl: number; timestamp: number }> =
221
- {};
252
+ static cache: Record<string, {value: any, ttl: number, timestamp: number}> = {};
222
253
 
223
- static fatalError(message: string, err?: Error) {
224
- logger.error(message);
225
- console.error(message, err);
226
- if (err) console.error(err);
227
- process.exit(1);
228
- }
254
+ static fatalError(message: string, err?: Error) {
255
+ logger.error(message);
256
+ console.error(message, err);
257
+ if (err)
258
+ console.error(err);
259
+ process.exit(1);
260
+ }
229
261
 
230
- static httpError(url: string, err: Error, message?: string) {
231
- logger.error(`${url}: ${message}`);
232
- console.error(err);
233
- }
262
+ static httpError(url: string, err: Error, message?: string) {
263
+ logger.error(`${url}: ${message}`);
264
+ console.error(err);
265
+ }
234
266
 
235
- static getDefaultTokens() {
236
- return tokens;
237
- }
267
+ static getDefaultTokens() {
268
+ return tokens;
269
+ }
238
270
 
239
- static async getTokens(): Promise<TokenInfo[]> {
240
- if (tokens.length) return tokens;
271
+ static async getTokens(): Promise<TokenInfo[]> {
272
+ if (tokens.length) return tokens;
241
273
 
242
- // fetch from avnu API
243
- const data = await axios.get(
244
- "https://assets.troves.fi/integrations/tokens.json"
245
- );
246
- const tokensData = data.data.content;
274
+ // fetch from avnu API
275
+ const data = await axios.get('https://assets.troves.fi/integrations/tokens.json');
276
+ const tokensData = data.data.content;
247
277
 
248
- // Array of the following is returned
249
- // {
250
- // "name": "USD Coin",
251
- // "address": "0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8",
252
- // "symbol": "USDC",
253
- // "decimals": 6,
254
- // "logoUri": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
255
- // "lastDailyVolumeUsd": 2964287916.82621,
256
- // "extensions": {
257
- // "coingeckoId": "usd-coin"
258
- // },
259
- // "tags": [
260
- // "AVNU",
261
- // "Verified"
262
- // ]
263
- // }
278
+ // Array of the following is returned
279
+ // {
280
+ // "name": "USD Coin",
281
+ // "address": "0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8",
282
+ // "symbol": "USDC",
283
+ // "decimals": 6,
284
+ // "logoUri": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
285
+ // "lastDailyVolumeUsd": 2964287916.82621,
286
+ // "extensions": {
287
+ // "coingeckoId": "usd-coin"
288
+ // },
289
+ // "tags": [
290
+ // "AVNU",
291
+ // "Verified"
292
+ // ]
293
+ // }
264
294
 
265
- tokensData.forEach((token: any) => {
266
- // if tags do not contain Avnu and verified, ignore
267
- // This would exclude meme coins for now
268
- if (!token.tags.includes("AVNU") || !token.tags.includes("Verified")) {
269
- return;
270
- }
295
+ tokensData.forEach((token: any) => {
296
+ // if tags do not contain Avnu and verified, ignore
297
+ // This would exclude meme coins for now
298
+ if (!token.tags.includes('AVNU') || !token.tags.includes('Verified')) {
299
+ return;
300
+ }
271
301
 
272
- tokens.push({
273
- name: token.name,
274
- symbol: token.symbol,
275
- address: ContractAddr.from(token.address),
276
- decimals: token.decimals,
277
- logo: token.logoUri,
278
- coingeckId: token.extensions.coingeckoId,
279
- displayDecimals: 2,
280
- });
281
- });
282
- console.log(tokens);
283
- return tokens;
284
- }
302
+ tokens.push({
303
+ name: token.name,
304
+ symbol: token.symbol,
305
+ address: ContractAddr.from(token.address),
306
+ decimals: token.decimals,
307
+ logo: token.logoUri,
308
+ coingeckId: token.extensions.coingeckoId,
309
+ displayDecimals: 2,
310
+ indexingType: TokenIndexingType.IGNORE,
311
+ });
312
+ });
313
+ console.log(tokens);
314
+ return tokens;
315
+ }
285
316
 
286
- static assert(condition: any, message: string) {
287
- if (!condition) {
288
- throw new FatalError(message);
317
+ static assert(condition: any, message: string) {
318
+ if (!condition) {
319
+ throw new FatalError(message);
320
+ }
289
321
  }
290
- }
291
322
 
292
- static async getTokenInfoFromAddr(addr: ContractAddr) {
293
- // if tokens are not loaded, load them
294
- if (tokens.length == defaultTokens.length) {
295
- await Global.getTokens();
323
+ static async getTokenInfoFromAddr(addr: ContractAddr) {
324
+ // if tokens are not loaded, load them
325
+ if (tokens.length == defaultTokens.length) {
326
+ await Global.getTokens();
327
+ }
328
+
329
+ const token = tokens.find((token) => addr.eq(token.address));
330
+ if (!token) {
331
+ throw new FatalError(`Token not found: ${addr.address}`);
332
+ }
333
+ return token;
296
334
  }
297
335
 
298
- const token = tokens.find((token) => addr.eq(token.address));
299
- if (!token) {
300
- throw new FatalError(`Token not found: ${addr.address}`);
336
+ static async getTokenInfoFromName(tokenName: string) {
337
+ // if tokens are not loaded, load them
338
+ if (tokens.length == defaultTokens.length) {
339
+ await Global.getTokens();
340
+ }
341
+
342
+ const token = tokens.find(
343
+ (token) => token.name.toLowerCase() === tokenName.toLowerCase()
344
+ );
345
+ if (!token) {
346
+ throw new FatalError(`Token not found: ${tokenName}`);
347
+ }
348
+ return token;
301
349
  }
302
- return token;
303
- }
304
350
 
305
- static setGlobalCache(key: string, data: any, ttl: number = 60000) {
306
- Global.cache[key] = {
307
- value: data,
308
- ttl,
309
- timestamp: Date.now(),
310
- };
311
- }
351
+ static setGlobalCache(key: string, data: any, ttl: number = 60000) {
352
+ Global.cache[key] = {
353
+ value: data,
354
+ ttl,
355
+ timestamp: Date.now()
356
+ };
357
+ }
312
358
 
313
- static getGlobalCache<T>(key: string): T | null {
314
- const cached = Global.cache[key];
315
- if (!cached) return null;
316
- if (Date.now() - cached.timestamp > cached.ttl) {
317
- delete Global.cache[key];
318
- return null;
359
+ static getGlobalCache<T>(key: string): T | null {
360
+ const cached = Global.cache[key];
361
+ if (!cached) return null;
362
+ if (Date.now() - cached.timestamp > cached.ttl) {
363
+ delete Global.cache[key];
364
+ return null;
365
+ }
366
+ return cached.value;
319
367
  }
320
- return cached.value;
321
- }
322
368
  }
@@ -3,4 +3,5 @@ export * from './modules';
3
3
  export * from './interfaces';
4
4
  export * from './dataTypes';
5
5
  export * from './global';
6
- export * from './strategies';
6
+ export * from './strategies';
7
+ export * from "./utils";