@mento-protocol/mento-sdk 1.10.2 → 2.0.0-beta.10

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 (254) hide show
  1. package/README.md +114 -48
  2. package/dist/abis/bipoolmanager.d.ts +15 -0
  3. package/dist/abis/bipoolmanager.d.ts.map +1 -0
  4. package/dist/abis/bipoolmanager.js +26 -0
  5. package/dist/abis/bipoolmanager.js.map +1 -0
  6. package/dist/abis/broker.d.ts +2 -0
  7. package/dist/abis/broker.d.ts.map +1 -0
  8. package/dist/abis/broker.js +8 -0
  9. package/dist/abis/broker.js.map +1 -0
  10. package/dist/abis/erc20.d.ts +2 -0
  11. package/dist/abis/erc20.d.ts.map +1 -0
  12. package/dist/abis/erc20.js +11 -0
  13. package/dist/abis/erc20.js.map +1 -0
  14. package/dist/abis/index.d.ts +5 -0
  15. package/dist/abis/index.d.ts.map +1 -0
  16. package/dist/{cjs/constants → abis}/index.js +5 -2
  17. package/dist/abis/index.js.map +1 -0
  18. package/dist/abis/pricingmodule.d.ts +2 -0
  19. package/dist/abis/pricingmodule.d.ts.map +1 -0
  20. package/dist/abis/pricingmodule.js +5 -0
  21. package/dist/abis/pricingmodule.js.map +1 -0
  22. package/dist/abis/reserve.d.ts +2 -0
  23. package/dist/abis/reserve.d.ts.map +1 -0
  24. package/dist/abis/reserve.js +9 -0
  25. package/dist/abis/reserve.js.map +1 -0
  26. package/dist/abis/uniswapV3.d.ts +4 -0
  27. package/dist/abis/uniswapV3.d.ts.map +1 -0
  28. package/dist/abis/uniswapV3.js +15 -0
  29. package/dist/abis/uniswapV3.js.map +1 -0
  30. package/dist/adapters/implementations/ethersAdapter.d.ts +9 -0
  31. package/dist/adapters/implementations/ethersAdapter.d.ts.map +1 -0
  32. package/dist/adapters/implementations/ethersAdapter.js +19 -0
  33. package/dist/adapters/implementations/ethersAdapter.js.map +1 -0
  34. package/dist/adapters/implementations/ethersV5Adapter.d.ts +9 -0
  35. package/dist/adapters/implementations/ethersV5Adapter.d.ts.map +1 -0
  36. package/dist/adapters/implementations/ethersV5Adapter.js +19 -0
  37. package/dist/adapters/implementations/ethersV5Adapter.js.map +1 -0
  38. package/dist/adapters/implementations/viemAdapter.d.ts +9 -0
  39. package/dist/adapters/implementations/viemAdapter.d.ts.map +1 -0
  40. package/dist/adapters/implementations/viemAdapter.js +26 -0
  41. package/dist/adapters/implementations/viemAdapter.js.map +1 -0
  42. package/dist/adapters/index.d.ts +5 -0
  43. package/dist/adapters/index.d.ts.map +1 -0
  44. package/dist/adapters/index.js +10 -0
  45. package/dist/adapters/index.js.map +1 -0
  46. package/dist/adapters/proxies/ethersAdapterProxy.d.ts +25 -0
  47. package/dist/adapters/proxies/ethersAdapterProxy.d.ts.map +1 -0
  48. package/dist/adapters/proxies/ethersAdapterProxy.js +71 -0
  49. package/dist/adapters/proxies/ethersAdapterProxy.js.map +1 -0
  50. package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts +25 -0
  51. package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts.map +1 -0
  52. package/dist/adapters/proxies/ethersV5AdapterProxy.js +71 -0
  53. package/dist/adapters/proxies/ethersV5AdapterProxy.js.map +1 -0
  54. package/dist/adapters/proxies/viemAdapterProxy.d.ts +25 -0
  55. package/dist/adapters/proxies/viemAdapterProxy.d.ts.map +1 -0
  56. package/dist/adapters/proxies/viemAdapterProxy.js +71 -0
  57. package/dist/adapters/proxies/viemAdapterProxy.js.map +1 -0
  58. package/dist/constants/aaveConfig.d.ts +7 -0
  59. package/dist/constants/aaveConfig.d.ts.map +1 -0
  60. package/dist/constants/aaveConfig.js +22 -0
  61. package/dist/constants/aaveConfig.js.map +1 -0
  62. package/dist/constants/addresses.d.ts +14 -0
  63. package/dist/constants/addresses.d.ts.map +1 -0
  64. package/dist/{esm/constants → constants}/addresses.js +17 -16
  65. package/dist/constants/addresses.js.map +1 -0
  66. package/dist/{cjs/enums → constants}/chainId.d.ts +1 -0
  67. package/dist/constants/chainId.d.ts.map +1 -0
  68. package/dist/{cjs/enums → constants}/chainId.js +2 -1
  69. package/dist/constants/chainId.js.map +1 -0
  70. package/dist/constants/contractNames.d.ts +21 -0
  71. package/dist/constants/contractNames.d.ts.map +1 -0
  72. package/dist/constants/contractNames.js +24 -0
  73. package/dist/constants/contractNames.js.map +1 -0
  74. package/dist/constants/index.d.ts +9 -0
  75. package/dist/constants/index.d.ts.map +1 -0
  76. package/dist/constants/index.js +25 -0
  77. package/dist/constants/index.js.map +1 -0
  78. package/dist/constants/mentoAddresses.d.ts +6 -0
  79. package/dist/constants/mentoAddresses.d.ts.map +1 -0
  80. package/dist/constants/mentoAddresses.js +9 -0
  81. package/dist/constants/mentoAddresses.js.map +1 -0
  82. package/dist/{cjs/enums → constants}/proposalState.d.ts +1 -0
  83. package/dist/constants/proposalState.d.ts.map +1 -0
  84. package/dist/{cjs/enums → constants}/proposalState.js +2 -1
  85. package/dist/constants/proposalState.js.map +1 -0
  86. package/dist/constants/protocolAddresses.d.ts +5 -0
  87. package/dist/constants/protocolAddresses.d.ts.map +1 -0
  88. package/dist/constants/protocolAddresses.js +8 -0
  89. package/dist/constants/protocolAddresses.js.map +1 -0
  90. package/dist/constants/stableTokenMetadata.d.ts +12 -0
  91. package/dist/constants/stableTokenMetadata.d.ts.map +1 -0
  92. package/dist/constants/stableTokenMetadata.js +14 -0
  93. package/dist/constants/stableTokenMetadata.js.map +1 -0
  94. package/dist/index.d.ts +67 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +122 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/services/collateralAssetService.d.ts +8 -0
  99. package/dist/services/collateralAssetService.d.ts.map +1 -0
  100. package/dist/services/collateralAssetService.js +47 -0
  101. package/dist/services/collateralAssetService.js.map +1 -0
  102. package/dist/services/index.d.ts +6 -0
  103. package/dist/services/index.d.ts.map +1 -0
  104. package/dist/{cjs/interfaces → services}/index.js +6 -4
  105. package/dist/services/index.js.map +1 -0
  106. package/dist/services/stableTokenService.d.ts +9 -0
  107. package/dist/services/stableTokenService.d.ts.map +1 -0
  108. package/dist/services/stableTokenService.js +40 -0
  109. package/dist/services/stableTokenService.js.map +1 -0
  110. package/dist/services/supply/ISupplyCalculator.d.ts +14 -0
  111. package/dist/services/supply/ISupplyCalculator.d.ts.map +1 -0
  112. package/dist/{cjs/interfaces/tradingLimitsState.js → services/supply/ISupplyCalculator.js} +1 -0
  113. package/dist/services/supply/ISupplyCalculator.js.map +1 -0
  114. package/dist/services/supply/aaveSupplyCalculator.d.ts +21 -0
  115. package/dist/services/supply/aaveSupplyCalculator.d.ts.map +1 -0
  116. package/dist/services/supply/aaveSupplyCalculator.js +46 -0
  117. package/dist/services/supply/aaveSupplyCalculator.js.map +1 -0
  118. package/dist/services/supply/calculatorFactory.d.ts +8 -0
  119. package/dist/services/supply/calculatorFactory.d.ts.map +1 -0
  120. package/dist/services/supply/calculatorFactory.js +3 -0
  121. package/dist/services/supply/calculatorFactory.js.map +1 -0
  122. package/dist/services/supply/defaultCalculatorFactory.d.ts +9 -0
  123. package/dist/services/supply/defaultCalculatorFactory.d.ts.map +1 -0
  124. package/dist/services/supply/defaultCalculatorFactory.js +27 -0
  125. package/dist/services/supply/defaultCalculatorFactory.js.map +1 -0
  126. package/dist/services/supply/index.d.ts +7 -0
  127. package/dist/services/supply/index.d.ts.map +1 -0
  128. package/dist/{cjs → services/supply}/index.js +7 -6
  129. package/dist/services/supply/index.js.map +1 -0
  130. package/dist/services/supply/multisigSupplyCalculator.d.ts +9 -0
  131. package/dist/services/supply/multisigSupplyCalculator.d.ts.map +1 -0
  132. package/dist/services/supply/multisigSupplyCalculator.js +33 -0
  133. package/dist/services/supply/multisigSupplyCalculator.js.map +1 -0
  134. package/dist/services/supply/uniV3SupplyCalculator.d.ts +21 -0
  135. package/dist/services/supply/uniV3SupplyCalculator.d.ts.map +1 -0
  136. package/dist/services/supply/uniV3SupplyCalculator.js +233 -0
  137. package/dist/services/supply/uniV3SupplyCalculator.js.map +1 -0
  138. package/dist/services/supplyAdjustmentService.d.ts +14 -0
  139. package/dist/services/supplyAdjustmentService.d.ts.map +1 -0
  140. package/dist/services/supplyAdjustmentService.js +46 -0
  141. package/dist/services/supplyAdjustmentService.js.map +1 -0
  142. package/dist/services/tokenMetadataService.d.ts +8 -0
  143. package/dist/services/tokenMetadataService.d.ts.map +1 -0
  144. package/dist/services/tokenMetadataService.js +44 -0
  145. package/dist/services/tokenMetadataService.js.map +1 -0
  146. package/dist/{cjs/types → types}/contractAddresses.d.ts +1 -1
  147. package/dist/types/contractAddresses.d.ts.map +1 -0
  148. package/dist/{cjs/types → types}/contractAddresses.js +1 -0
  149. package/dist/types/contractAddresses.js.map +1 -0
  150. package/dist/types/exchange.d.ts +6 -0
  151. package/dist/types/exchange.d.ts.map +1 -0
  152. package/dist/{cjs/interfaces/tradingLimit.js → types/exchange.js} +1 -0
  153. package/dist/types/exchange.js.map +1 -0
  154. package/dist/types/index.d.ts +5 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/{cjs/types → types}/index.js +4 -1
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/types/provider.d.ts +11 -0
  159. package/dist/types/provider.d.ts.map +1 -0
  160. package/dist/{cjs/interfaces/tradingLimitsConfig.js → types/provider.js} +1 -0
  161. package/dist/types/provider.js.map +1 -0
  162. package/dist/types/token.d.ts +25 -0
  163. package/dist/types/token.d.ts.map +1 -0
  164. package/dist/{cjs/interfaces/IChainClient.js → types/token.js} +1 -0
  165. package/dist/types/token.js.map +1 -0
  166. package/dist/utils/index.d.ts +2 -0
  167. package/dist/utils/index.d.ts.map +1 -0
  168. package/dist/{cjs/enums → utils}/index.js +2 -2
  169. package/dist/utils/index.js.map +1 -0
  170. package/dist/utils/retry.d.ts +12 -0
  171. package/dist/utils/retry.d.ts.map +1 -0
  172. package/dist/utils/retry.js +28 -0
  173. package/dist/utils/retry.js.map +1 -0
  174. package/package.json +33 -61
  175. package/dist/cjs/ChainClient.d.ts +0 -9
  176. package/dist/cjs/ChainClient.js +0 -58
  177. package/dist/cjs/TestChainClient.d.ts +0 -7
  178. package/dist/cjs/TestChainClient.js +0 -41
  179. package/dist/cjs/constants/addresses.d.ts +0 -4
  180. package/dist/cjs/constants/addresses.js +0 -64
  181. package/dist/cjs/constants/index.d.ts +0 -2
  182. package/dist/cjs/constants/tradablePairs.42220.d.ts +0 -2
  183. package/dist/cjs/constants/tradablePairs.42220.js +0 -6407
  184. package/dist/cjs/constants/tradablePairs.44787.d.ts +0 -2
  185. package/dist/cjs/constants/tradablePairs.44787.js +0 -7391
  186. package/dist/cjs/constants/tradablePairs.d.ts +0 -16
  187. package/dist/cjs/constants/tradablePairs.js +0 -53
  188. package/dist/cjs/enums/index.d.ts +0 -2
  189. package/dist/cjs/governance.d.ts +0 -62
  190. package/dist/cjs/governance.js +0 -151
  191. package/dist/cjs/index.d.ts +0 -6
  192. package/dist/cjs/interfaces/IChainClient.d.ts +0 -6
  193. package/dist/cjs/interfaces/index.d.ts +0 -4
  194. package/dist/cjs/interfaces/tradingLimit.d.ts +0 -7
  195. package/dist/cjs/interfaces/tradingLimitsConfig.d.ts +0 -10
  196. package/dist/cjs/interfaces/tradingLimitsState.d.ts +0 -9
  197. package/dist/cjs/limits.d.ts +0 -33
  198. package/dist/cjs/limits.js +0 -130
  199. package/dist/cjs/mento.d.ts +0 -238
  200. package/dist/cjs/mento.js +0 -559
  201. package/dist/cjs/routeUtils.d.ts +0 -304
  202. package/dist/cjs/routeUtils.js +0 -372
  203. package/dist/cjs/types/contractAddressMap.d.ts +0 -4
  204. package/dist/cjs/types/contractAddressMap.js +0 -2
  205. package/dist/cjs/types/index.d.ts +0 -2
  206. package/dist/cjs/utils.d.ts +0 -50
  207. package/dist/cjs/utils.js +0 -129
  208. package/dist/esm/ChainClient.d.ts +0 -9
  209. package/dist/esm/ChainClient.js +0 -54
  210. package/dist/esm/TestChainClient.d.ts +0 -7
  211. package/dist/esm/TestChainClient.js +0 -37
  212. package/dist/esm/constants/addresses.d.ts +0 -4
  213. package/dist/esm/constants/index.d.ts +0 -2
  214. package/dist/esm/constants/index.js +0 -2
  215. package/dist/esm/constants/tradablePairs.42220.d.ts +0 -2
  216. package/dist/esm/constants/tradablePairs.42220.js +0 -6404
  217. package/dist/esm/constants/tradablePairs.44787.d.ts +0 -2
  218. package/dist/esm/constants/tradablePairs.44787.js +0 -7388
  219. package/dist/esm/constants/tradablePairs.d.ts +0 -16
  220. package/dist/esm/constants/tradablePairs.js +0 -26
  221. package/dist/esm/enums/chainId.d.ts +0 -4
  222. package/dist/esm/enums/chainId.js +0 -5
  223. package/dist/esm/enums/index.d.ts +0 -2
  224. package/dist/esm/enums/index.js +0 -2
  225. package/dist/esm/enums/proposalState.d.ts +0 -10
  226. package/dist/esm/enums/proposalState.js +0 -11
  227. package/dist/esm/governance.d.ts +0 -62
  228. package/dist/esm/governance.js +0 -147
  229. package/dist/esm/index.d.ts +0 -6
  230. package/dist/esm/index.js +0 -6
  231. package/dist/esm/interfaces/IChainClient.d.ts +0 -6
  232. package/dist/esm/interfaces/IChainClient.js +0 -1
  233. package/dist/esm/interfaces/index.d.ts +0 -4
  234. package/dist/esm/interfaces/index.js +0 -4
  235. package/dist/esm/interfaces/tradingLimit.d.ts +0 -7
  236. package/dist/esm/interfaces/tradingLimit.js +0 -1
  237. package/dist/esm/interfaces/tradingLimitsConfig.d.ts +0 -10
  238. package/dist/esm/interfaces/tradingLimitsConfig.js +0 -1
  239. package/dist/esm/interfaces/tradingLimitsState.d.ts +0 -9
  240. package/dist/esm/interfaces/tradingLimitsState.js +0 -1
  241. package/dist/esm/limits.d.ts +0 -33
  242. package/dist/esm/limits.js +0 -123
  243. package/dist/esm/mento.d.ts +0 -238
  244. package/dist/esm/mento.js +0 -555
  245. package/dist/esm/routeUtils.d.ts +0 -304
  246. package/dist/esm/routeUtils.js +0 -362
  247. package/dist/esm/types/contractAddressMap.d.ts +0 -4
  248. package/dist/esm/types/contractAddressMap.js +0 -1
  249. package/dist/esm/types/contractAddresses.d.ts +0 -23
  250. package/dist/esm/types/contractAddresses.js +0 -1
  251. package/dist/esm/types/index.d.ts +0 -2
  252. package/dist/esm/types/index.js +0 -2
  253. package/dist/esm/utils.d.ts +0 -50
  254. package/dist/esm/utils.js +0 -119
@@ -0,0 +1,21 @@
1
+ import { ProviderAdapter } from '../../types';
2
+ import { ISupplyCalculator } from './ISupplyCalculator';
3
+ export declare class UniV3SupplyCalculator implements ISupplyCalculator {
4
+ private provider;
5
+ private positionManagerAddress;
6
+ private factoryAddress;
7
+ private governanceAddress;
8
+ private readonly decimalsCache;
9
+ private readonly poolCache;
10
+ constructor(provider: ProviderAdapter, positionManagerAddress: string, factoryAddress: string, governanceAddress: string);
11
+ getAmount(tokenAddress: string): Promise<bigint>;
12
+ private normalizeNumberString;
13
+ private calculatePositionAmount;
14
+ private processPositionBatch;
15
+ private getPositionTokenIds;
16
+ private getPoolAddress;
17
+ private getTokenDecimals;
18
+ private readContract;
19
+ private calculateAmounts;
20
+ }
21
+ //# sourceMappingURL=uniV3SupplyCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniV3SupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/uniV3SupplyCalculator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAOvD,qBAAa,qBAAsB,YAAW,iBAAiB;IAK3D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,iBAAiB;IAP3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;gBAGjD,QAAQ,EAAE,eAAe,EACzB,sBAAsB,EAAE,MAAM,EAC9B,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM;IAG7B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CtD,OAAO,CAAC,qBAAqB;YAYf,uBAAuB;YAkCvB,oBAAoB;YAqEpB,mBAAmB;YAoCnB,cAAc;YAqBd,gBAAgB;IAuB9B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;CAgDzB"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UniV3SupplyCalculator = void 0;
7
+ const abis_1 = require("../../abis");
8
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ const utils_1 = require("../../utils");
10
+ const BATCH_SIZE = 5;
11
+ const BATCH_DELAY = 100;
12
+ class UniV3SupplyCalculator {
13
+ constructor(provider, positionManagerAddress, factoryAddress, governanceAddress) {
14
+ this.provider = provider;
15
+ this.positionManagerAddress = positionManagerAddress;
16
+ this.factoryAddress = factoryAddress;
17
+ this.governanceAddress = governanceAddress;
18
+ this.decimalsCache = new Map();
19
+ this.poolCache = new Map();
20
+ }
21
+ async getAmount(tokenAddress) {
22
+ try {
23
+ const positions = await this.getPositionTokenIds();
24
+ if (positions.length === 0)
25
+ return 0n;
26
+ let totalAmount = new bignumber_js_1.default(0);
27
+ // Process positions in batches
28
+ for (let i = 0; i < positions.length; i += BATCH_SIZE) {
29
+ const batchPositions = positions.slice(i, i + BATCH_SIZE);
30
+ const batchAmount = await (0, utils_1.retryOperation)(() => this.processPositionBatch(batchPositions, tokenAddress));
31
+ totalAmount = totalAmount.plus(batchAmount);
32
+ if (i + BATCH_SIZE < positions.length) {
33
+ await new Promise((resolve) => setTimeout(resolve, BATCH_DELAY));
34
+ }
35
+ }
36
+ // Convert to bigint, considering token decimals
37
+ const decimals = await this.getTokenDecimals(tokenAddress);
38
+ try {
39
+ const rawAmount = totalAmount
40
+ .integerValue(bignumber_js_1.default.ROUND_DOWN)
41
+ .abs() // Take absolute value as signs are handled by adjustment service
42
+ .toString(10);
43
+ // Remove any decimal points and handle scientific notation
44
+ const cleanAmount = this.normalizeNumberString(rawAmount);
45
+ return BigInt(cleanAmount);
46
+ }
47
+ catch (error) {
48
+ console.error('Error converting to bigint:', {
49
+ totalAmount: totalAmount.toString(),
50
+ decimals,
51
+ error,
52
+ });
53
+ return 0n;
54
+ }
55
+ }
56
+ catch (error) {
57
+ const errorMessage = `Univ3SupplyCalculator: Failed to calculate supply for token ${tokenAddress}: ${error}`;
58
+ throw new Error(errorMessage);
59
+ }
60
+ }
61
+ normalizeNumberString(value) {
62
+ if (value.includes('e')) {
63
+ const [mantissa, exponent] = value.split('e');
64
+ const e = parseInt(exponent);
65
+ if (e > 0) {
66
+ return mantissa.replace('.', '') + '0'.repeat(e);
67
+ }
68
+ return '0';
69
+ }
70
+ return value.split('.')[0];
71
+ }
72
+ async calculatePositionAmount(position, slot0, targetToken) {
73
+ const liquidity = new bignumber_js_1.default(position[7].toString());
74
+ const sqrtPriceX96 = new bignumber_js_1.default(slot0[0].toString());
75
+ const Q96 = new bignumber_js_1.default(2).pow(96);
76
+ const sqrtPriceX96Num = sqrtPriceX96.dividedBy(Q96);
77
+ const currentTick = sqrtPriceX96Num.isGreaterThan(0)
78
+ ? Math.floor(Math.log(sqrtPriceX96Num.toNumber() ** 2) / Math.log(1.0001))
79
+ : 0;
80
+ const tickLower = Number(position[5]);
81
+ const tickUpper = Number(position[6]);
82
+ const [amount0, amount1] = this.calculateAmounts(liquidity, currentTick, tickLower, tickUpper, sqrtPriceX96Num);
83
+ // Return positive amount if we should add to supply, negative if we should subtract
84
+ const isToken0 = position[2] === targetToken;
85
+ const amount = isToken0 ? amount0 : amount1;
86
+ // If target token is being deposited into the pool, we should subtract from supply
87
+ // This means if the position has liquidity of the target token, it's out of circulation
88
+ return amount;
89
+ }
90
+ async processPositionBatch(positionIds, targetToken) {
91
+ try {
92
+ // Fetch position data
93
+ const positionDataPromises = positionIds.map((id) => this.readContract({
94
+ address: this.positionManagerAddress,
95
+ abi: abis_1.UNIV3_POSITION_MANAGER_ABI,
96
+ functionName: 'positions',
97
+ args: [id],
98
+ }));
99
+ const positionData = (await Promise.all(positionDataPromises));
100
+ // Filter active positions that contain our target token
101
+ const activePositions = positionData.filter((pos) => {
102
+ const liquidity = new bignumber_js_1.default(pos[7].toString());
103
+ return (!liquidity.isZero() &&
104
+ (pos[2] === targetToken || pos[3] === targetToken));
105
+ });
106
+ if (activePositions.length === 0)
107
+ return new bignumber_js_1.default(0);
108
+ // Get pool addresses
109
+ const poolAddresses = await Promise.all(activePositions.map((pos) => this.getPoolAddress(pos[2], pos[3], Number(pos[4]))));
110
+ // Get slot0 data for all pools
111
+ const slot0Data = await Promise.all(poolAddresses.map((poolAddress) => this.readContract({
112
+ address: poolAddress,
113
+ abi: abis_1.UNIV3_POOL_ABI,
114
+ functionName: 'slot0',
115
+ })));
116
+ // Calculate total amount
117
+ let totalAmount = new bignumber_js_1.default(0);
118
+ for (let i = 0; i < activePositions.length; i++) {
119
+ const pos = activePositions[i];
120
+ const slot0 = slot0Data[i];
121
+ const amount = await this.calculatePositionAmount(pos, slot0, targetToken);
122
+ totalAmount = totalAmount.plus(amount);
123
+ }
124
+ return totalAmount;
125
+ }
126
+ catch (error) {
127
+ console.error('Failed to process position batch:', error);
128
+ return new bignumber_js_1.default(0);
129
+ }
130
+ }
131
+ async getPositionTokenIds() {
132
+ // Get governance balance
133
+ const balance = await this.readContract({
134
+ address: this.positionManagerAddress,
135
+ abi: abis_1.UNIV3_POSITION_MANAGER_ABI,
136
+ functionName: 'balanceOf',
137
+ args: [this.governanceAddress],
138
+ });
139
+ const numPositions = Number(balance);
140
+ if (numPositions === 0)
141
+ return [];
142
+ const tokenIds = [];
143
+ for (let i = 0; i < numPositions; i += BATCH_SIZE) {
144
+ const batchPromises = Array.from({ length: Math.min(BATCH_SIZE, numPositions - i) }, (_, index) => this.readContract({
145
+ address: this.positionManagerAddress,
146
+ abi: abis_1.UNIV3_POSITION_MANAGER_ABI,
147
+ functionName: 'tokenOfOwnerByIndex',
148
+ args: [this.governanceAddress, i + index],
149
+ }).then((id) => Number(id)));
150
+ const batchResults = await Promise.all(batchPromises);
151
+ tokenIds.push(...batchResults);
152
+ if (i + BATCH_SIZE < numPositions) {
153
+ await new Promise((resolve) => setTimeout(resolve, BATCH_DELAY));
154
+ }
155
+ }
156
+ return tokenIds;
157
+ }
158
+ async getPoolAddress(token0, token1, fee) {
159
+ const cacheKey = `${token0}-${token1}-${fee}`;
160
+ if (this.poolCache.has(cacheKey)) {
161
+ return this.poolCache.get(cacheKey);
162
+ }
163
+ const poolAddress = (await this.readContract({
164
+ address: this.factoryAddress,
165
+ abi: abis_1.UNIV3_FACTORY_ABI,
166
+ functionName: 'getPool',
167
+ args: [token0, token1, fee],
168
+ }));
169
+ this.poolCache.set(cacheKey, poolAddress);
170
+ return poolAddress;
171
+ }
172
+ async getTokenDecimals(tokenAddress) {
173
+ if (this.decimalsCache.has(tokenAddress)) {
174
+ return this.decimalsCache.get(tokenAddress);
175
+ }
176
+ try {
177
+ const decimals = (await this.readContract({
178
+ address: tokenAddress,
179
+ abi: abis_1.ERC20_ABI,
180
+ functionName: 'decimals',
181
+ }));
182
+ this.decimalsCache.set(tokenAddress, decimals);
183
+ return decimals;
184
+ }
185
+ catch (error) {
186
+ console.warn(`Failed to fetch decimals for ${tokenAddress}, using default:`, error);
187
+ return 18;
188
+ }
189
+ }
190
+ readContract(options) {
191
+ return this.provider.readContract(options);
192
+ }
193
+ calculateAmounts(liquidity, currentTick, tickLower, tickUpper, sqrtPrice) {
194
+ try {
195
+ const sqrtRatioLower = new bignumber_js_1.default(Math.sqrt(1.0001 ** tickLower));
196
+ const sqrtRatioUpper = new bignumber_js_1.default(Math.sqrt(1.0001 ** tickUpper));
197
+ let amount0 = new bignumber_js_1.default(0);
198
+ let amount1 = new bignumber_js_1.default(0);
199
+ if (currentTick < tickLower) {
200
+ const amount0Numerator = sqrtRatioUpper.minus(sqrtRatioLower);
201
+ const amount0Denominator = sqrtRatioUpper.multipliedBy(sqrtRatioLower);
202
+ if (!amount0Denominator.isZero()) {
203
+ amount0 = liquidity.multipliedBy(amount0Numerator.dividedBy(amount0Denominator));
204
+ }
205
+ }
206
+ else if (currentTick < tickUpper) {
207
+ const amount0Numerator = sqrtRatioUpper.minus(sqrtPrice);
208
+ const amount0Denominator = sqrtPrice.multipliedBy(sqrtRatioUpper);
209
+ if (!amount0Denominator.isZero()) {
210
+ amount0 = liquidity.multipliedBy(amount0Numerator.dividedBy(amount0Denominator));
211
+ }
212
+ amount1 = liquidity.multipliedBy(sqrtPrice.minus(sqrtRatioLower));
213
+ }
214
+ else {
215
+ amount1 = liquidity.multipliedBy(sqrtRatioUpper.minus(sqrtRatioLower));
216
+ }
217
+ return [
218
+ amount0.isFinite()
219
+ ? amount0.integerValue(bignumber_js_1.default.ROUND_DOWN)
220
+ : new bignumber_js_1.default(0),
221
+ amount1.isFinite()
222
+ ? amount1.integerValue(bignumber_js_1.default.ROUND_DOWN)
223
+ : new bignumber_js_1.default(0),
224
+ ];
225
+ }
226
+ catch (error) {
227
+ console.error('Error calculating amounts:', error);
228
+ return [new bignumber_js_1.default(0), new bignumber_js_1.default(0)];
229
+ }
230
+ }
231
+ }
232
+ exports.UniV3SupplyCalculator = UniV3SupplyCalculator;
233
+ //# sourceMappingURL=uniV3SupplyCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniV3SupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/uniV3SupplyCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ProviderAdapter, StableToken } from '../types';
2
+ import { CalculatorFactory } from './supply/calculatorFactory';
3
+ export declare class SupplyAdjustmentService {
4
+ private readonly config;
5
+ constructor(provider: ProviderAdapter, calculatorFactory: CalculatorFactory);
6
+ private initializeConfig;
7
+ /**
8
+ * Get the adjusted supply of a stable token
9
+ * @param token - The stable token to get the adjusted supply for
10
+ * @returns The adjusted supply
11
+ */
12
+ getAdjustedSupply(token: StableToken): Promise<string>;
13
+ }
14
+ //# sourceMappingURL=supplyAdjustmentService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supplyAdjustmentService.d.ts","sourceRoot":"","sources":["../../src/services/supplyAdjustmentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAqB,MAAM,UAAU,CAAA;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;gBAExC,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB;IAO3E,OAAO,CAAC,gBAAgB;IAoBxB;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAa7D"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SupplyAdjustmentService = void 0;
4
+ const constants_1 = require("../constants");
5
+ class SupplyAdjustmentService {
6
+ constructor(provider, calculatorFactory) {
7
+ if (!provider)
8
+ throw new Error('Provider is required');
9
+ if (!calculatorFactory)
10
+ throw new Error('Calculator factory is required');
11
+ this.config = this.initializeConfig(provider, calculatorFactory);
12
+ }
13
+ initializeConfig(provider, factory) {
14
+ const uniV3Calculator = factory.createUniV3Calculator(provider);
15
+ const aaveCalculator = factory.createAAVECalculator(provider);
16
+ const multisigCalculator = factory.createMultisigCalculator(provider);
17
+ return Object.freeze({
18
+ [constants_1.STABLE_TOKEN_SYMBOLS.cUSD]: Object.freeze([
19
+ { calculator: uniV3Calculator },
20
+ { calculator: multisigCalculator },
21
+ { calculator: aaveCalculator },
22
+ ]),
23
+ [constants_1.STABLE_TOKEN_SYMBOLS.cEUR]: Object.freeze([
24
+ { calculator: aaveCalculator },
25
+ ]),
26
+ });
27
+ }
28
+ /**
29
+ * Get the adjusted supply of a stable token
30
+ * @param token - The stable token to get the adjusted supply for
31
+ * @returns The adjusted supply
32
+ */
33
+ async getAdjustedSupply(token) {
34
+ const adjustments = this.config[token.symbol];
35
+ if (!adjustments)
36
+ return token.totalSupply;
37
+ let supply = BigInt(token.totalSupply);
38
+ for (const adjustment of adjustments) {
39
+ const amount = await adjustment.calculator.getAmount(token.address);
40
+ supply -= amount;
41
+ }
42
+ return supply.toString();
43
+ }
44
+ }
45
+ exports.SupplyAdjustmentService = SupplyAdjustmentService;
46
+ //# sourceMappingURL=supplyAdjustmentService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supplyAdjustmentService.js","sourceRoot":"","sources":["../../src/services/supplyAdjustmentService.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AAGnD,MAAa,uBAAuB;IAGlC,YAAY,QAAyB,EAAE,iBAAoC;QACzE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACtD,IAAI,CAAC,iBAAiB;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAEzE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;IAClE,CAAC;IAEO,gBAAgB,CACtB,QAAyB,EACzB,OAA0B;QAE1B,MAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;QAErE,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,CAAC,gCAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;gBACzC,EAAE,UAAU,EAAE,eAAe,EAAE;gBAC/B,EAAE,UAAU,EAAE,kBAAkB,EAAE;gBAClC,EAAE,UAAU,EAAE,cAAc,EAAE;aAC/B,CAAC;YACF,CAAC,gCAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;gBACzC,EAAE,UAAU,EAAE,cAAc,EAAE;aAC/B,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAkB;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7C,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC,WAAW,CAAA;QAE1C,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAEtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACnE,MAAM,IAAI,MAAM,CAAA;QAClB,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC;CACF;AAhDD,0DAgDC"}
@@ -0,0 +1,8 @@
1
+ import { ProviderAdapter, BaseToken } from '../types';
2
+ export declare class TokenMetadataService {
3
+ private provider;
4
+ constructor(provider: ProviderAdapter);
5
+ getTokenMetadata(address: string): Promise<Pick<BaseToken, 'name' | 'symbol' | 'decimals'>>;
6
+ getTotalSupply(address: string): Promise<string>;
7
+ }
8
+ //# sourceMappingURL=tokenMetadataService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenMetadataService.d.ts","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIrD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEvC,gBAAgB,CACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;IAgCrD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWvD"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenMetadataService = void 0;
4
+ const abis_1 = require("../abis");
5
+ const utils_1 = require("../utils");
6
+ class TokenMetadataService {
7
+ constructor(provider) {
8
+ this.provider = provider;
9
+ }
10
+ async getTokenMetadata(address) {
11
+ const [name, symbol, decimals] = await Promise.all([
12
+ (0, utils_1.retryOperation)(() => this.provider.readContract({
13
+ address,
14
+ abi: abis_1.ERC20_ABI,
15
+ functionName: 'name',
16
+ })),
17
+ (0, utils_1.retryOperation)(() => this.provider.readContract({
18
+ address,
19
+ abi: abis_1.ERC20_ABI,
20
+ functionName: 'symbol',
21
+ })),
22
+ (0, utils_1.retryOperation)(() => this.provider.readContract({
23
+ address,
24
+ abi: abis_1.ERC20_ABI,
25
+ functionName: 'decimals',
26
+ })),
27
+ ]);
28
+ return {
29
+ name: name,
30
+ symbol: symbol,
31
+ decimals: Number(decimals),
32
+ };
33
+ }
34
+ async getTotalSupply(address) {
35
+ const totalSupply = await (0, utils_1.retryOperation)(() => this.provider.readContract({
36
+ address,
37
+ abi: abis_1.ERC20_ABI,
38
+ functionName: 'totalSupply',
39
+ }));
40
+ return totalSupply.toString();
41
+ }
42
+ }
43
+ exports.TokenMetadataService = TokenMetadataService;
44
+ //# sourceMappingURL=tokenMetadataService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenMetadataService.js","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":";;;AACA,kCAAmC;AACnC,oCAAyC;AAEzC,MAAa,oBAAoB;IAC/B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAEjD,KAAK,CAAC,gBAAgB,CACpB,OAAe;QAEf,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,MAAM;aACrB,CAAC,CACH;YACD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,QAAQ;aACvB,CAAC,CACH;YACD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,UAAU;aACzB,CAAC,CACH;SACF,CAAC,CAAA;QAEF,OAAO;YACL,IAAI,EAAE,IAAc;YACpB,MAAM,EAAE,MAAgB;YACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzB,OAAO;YACP,GAAG,EAAE,gBAAS;YACd,YAAY,EAAE,aAAa;SAC5B,CAAC,CACH,CAAA;QAED,OAAQ,WAAsB,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;CACF;AAhDD,oDAgDC"}
@@ -6,7 +6,6 @@ export type ContractAddresses = {
6
6
  MentoToken: string;
7
7
  TimelockController: string;
8
8
  Locking: string;
9
- MentoRouter: string;
10
9
  Broker: string;
11
10
  BiPoolManager: string;
12
11
  BreakerBox: string;
@@ -21,3 +20,4 @@ export type ContractAddresses = {
21
20
  StableTokenXOF: string;
22
21
  SortedOracles: string;
23
22
  };
23
+ //# sourceMappingURL=contractAddresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contractAddresses.d.ts","sourceRoot":"","sources":["../../src/types/contractAddresses.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=contractAddresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contractAddresses.js","sourceRoot":"","sources":["../../src/types/contractAddresses.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface Exchange {
2
+ providerAddr: string;
3
+ id: string;
4
+ assets: string[];
5
+ }
6
+ //# sourceMappingURL=exchange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB"}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=exchange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './contractAddresses';
2
+ export * from './provider';
3
+ export * from './token';
4
+ export * from './exchange';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
@@ -15,4 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./contractAddresses"), exports);
18
- __exportStar(require("./contractAddressMap"), exports);
18
+ __exportStar(require("./provider"), exports);
19
+ __exportStar(require("./token"), exports);
20
+ __exportStar(require("./exchange"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,6CAA0B;AAC1B,0CAAuB;AACvB,6CAA0B"}
@@ -0,0 +1,11 @@
1
+ export interface ContractCallOptions {
2
+ address: string;
3
+ abi: string[] | unknown[];
4
+ functionName: string;
5
+ args?: unknown[];
6
+ }
7
+ export interface ProviderAdapter {
8
+ readContract(options: ContractCallOptions): Promise<unknown>;
9
+ getChainId(): Promise<number>;
10
+ }
11
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B"}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { ISupplyCalculator } from '../services';
2
+ export interface BaseToken {
3
+ name: string;
4
+ symbol: string;
5
+ address: string;
6
+ decimals: number;
7
+ }
8
+ export interface StableToken extends BaseToken {
9
+ totalSupply: string;
10
+ }
11
+ export type CollateralAsset = BaseToken;
12
+ /**
13
+ * A supply adjustment is a calculator that is used to adjust the supply of a token.
14
+ * It takes the address of the token and will return the amount that should be removed
15
+ * from the total supply.
16
+ *
17
+ * @param calculator - The calculator to use to adjust the supply.
18
+ */
19
+ export interface SupplyAdjustment {
20
+ calculator: ISupplyCalculator;
21
+ }
22
+ export interface TokenSupplyConfig {
23
+ [tokenSymbol: string]: readonly SupplyAdjustment[];
24
+ }
25
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,iBAAiB,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,gBAAgB,EAAE,CAAA;CACnD"}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './retry';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./proposalState"), exports);
18
- __exportStar(require("./chainId"), exports);
17
+ __exportStar(require("./retry"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB"}
@@ -0,0 +1,12 @@
1
+ export interface RetryOptions {
2
+ maxAttempts?: number;
3
+ initialDelayMs?: number;
4
+ }
5
+ /**
6
+ * Retry an operation a number of times with exponential backoff.
7
+ * @param operation - The operation to retry
8
+ * @param options - The retry options
9
+ * @returns The result of the operation
10
+ */
11
+ export declare function retryOperation<T>(operation: () => Promise<T>, options?: RetryOptions): Promise<T>;
12
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retryOperation = retryOperation;
4
+ /**
5
+ * Retry an operation a number of times with exponential backoff.
6
+ * @param operation - The operation to retry
7
+ * @param options - The retry options
8
+ * @returns The result of the operation
9
+ */
10
+ async function retryOperation(operation, options = {}) {
11
+ const maxAttempts = options.maxAttempts ?? 3;
12
+ const delayMs = options.initialDelayMs ?? 1000;
13
+ let lastError;
14
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
15
+ try {
16
+ return await operation();
17
+ }
18
+ catch (error) {
19
+ lastError = error;
20
+ if (attempt === maxAttempts)
21
+ break;
22
+ // Exponential backoff
23
+ await new Promise((resolve) => setTimeout(resolve, delayMs * attempt));
24
+ }
25
+ }
26
+ throw new Error(`Operation failed after ${maxAttempts} attempts: ${lastError?.message}`);
27
+ }
28
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;AAWA,wCAuBC;AA7BD;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAClC,SAA2B,EAC3B,UAAwB,EAAE;IAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAA;IAC9C,IAAI,SAA4B,CAAA;IAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAc,CAAA;YAC1B,IAAI,OAAO,KAAK,WAAW;gBAAE,MAAK;YAElC,sBAAsB;YACtB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,cAAc,SAAS,EAAE,OAAO,EAAE,CACxE,CAAA;AACH,CAAC"}