@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,67 @@
1
+ import type { PublicClient } from 'viem';
2
+ import type { Provider as EthersV6Provider } from 'ethers';
3
+ import type { providers as EthersV5Providers } from 'ethers-v5';
4
+ import { CollateralAsset, ContractAddresses, StableToken } from './types';
5
+ export type SupportedProvider = EthersV6Provider | PublicClient | EthersV5Providers.Provider;
6
+ export interface MentoConfig {
7
+ /** Provider can be one of:
8
+ * - Ethers v6 Provider (from 'ethers')
9
+ * - Ethers v5 Provider (from 'ethers-v5')
10
+ * - Viem PublicClient (from 'viem')
11
+ */
12
+ provider: SupportedProvider;
13
+ }
14
+ /**
15
+ * @class Mento
16
+ * @description The main class for the Mento SDK. It initializes the provider and services,
17
+ * and provides a public API for interacting with the Mento Protocol.
18
+ * @dev example usage:
19
+ * // Ethers v6
20
+ * const mento = await Mento.create({
21
+ * provider: new ethers.JsonRpcProvider("https://forno.celo.org")
22
+ * });
23
+ *
24
+ * // Ethers v5
25
+ * const mento = await Mento.create({
26
+ * provider: new ethersV5.providers.JsonRpcProvider("https://forno.celo.org")
27
+ * });
28
+ *
29
+ * // Viem
30
+ * const mento = await Mento.create({
31
+ * provider: createPublicClient({
32
+ * transport: http("https://forno.celo.org")
33
+ * })
34
+ * });
35
+ *
36
+ * // Get all stable tokens
37
+ * const stableTokens = await mento.getStableTokens();
38
+ *
39
+ * // Get all collateral assets
40
+ * const collateralAssets = await mento.getCollateralAssets();
41
+ */
42
+ export declare class Mento {
43
+ private provider;
44
+ private stableTokenService;
45
+ private collateralAssetService;
46
+ private constructor();
47
+ static create(config: MentoConfig): Promise<Mento>;
48
+ getStableTokens(): Promise<StableToken[]>;
49
+ /**
50
+ * Get all collateral assets that are available on the current chain.
51
+ * @returns An array of collateral assets
52
+ */
53
+ getCollateralAssets(): Promise<CollateralAsset[]>;
54
+ /**
55
+ * Get the address of a contract for the current chain
56
+ * @param contractName - The contract name
57
+ * @returns The contract address
58
+ */
59
+ getContractAddress(contractName: keyof ContractAddresses): Promise<string>;
60
+ }
61
+ export * from './constants';
62
+ export * from './types';
63
+ export * from './adapters';
64
+ export * from './services';
65
+ export * from './abis';
66
+ export * from './utils';
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG/D,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,WAAW,EACZ,MAAM,SAAS,CAAA;AAKhB,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,YAAY,GACZ,iBAAiB,CAAC,QAAQ,CAAA;AAE9B,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,EAAE,iBAAiB,CAAA;CAC5B;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,sBAAsB,CAAwB;IAEtD,OAAO;WAUa,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAsBlD,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAItD;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI9D;;;;OAIG;IACU,kBAAkB,CAC7B,YAAY,EAAE,MAAM,iBAAiB,GACpC,OAAO,CAAC,MAAM,CAAC;CAInB;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Mento = void 0;
18
+ const adapters_1 = require("./adapters");
19
+ const services_1 = require("./services");
20
+ const addresses_1 = require("./constants/addresses");
21
+ /** Helper type guard for Ethers v5 Provider */
22
+ function isEthersV5Provider(provider) {
23
+ // Check for v5 specific properties that don't exist in v6
24
+ return ('getNetwork' in provider &&
25
+ '_network' in provider &&
26
+ // v5 specific internal property
27
+ 'formatter' in provider);
28
+ }
29
+ /** Helper type guard for Ethers v6 Provider */
30
+ function isEthersV6Provider(provider) {
31
+ // Check for v6 specific properties that don't exist in v5
32
+ return ('getNetwork' in provider &&
33
+ // v6 specific methods
34
+ 'broadcastTransaction' in provider);
35
+ }
36
+ /** Helper type guard for Viem Provider */
37
+ function isViemProvider(provider) {
38
+ return !('getNetwork' in provider);
39
+ }
40
+ /**
41
+ * @class Mento
42
+ * @description The main class for the Mento SDK. It initializes the provider and services,
43
+ * and provides a public API for interacting with the Mento Protocol.
44
+ * @dev example usage:
45
+ * // Ethers v6
46
+ * const mento = await Mento.create({
47
+ * provider: new ethers.JsonRpcProvider("https://forno.celo.org")
48
+ * });
49
+ *
50
+ * // Ethers v5
51
+ * const mento = await Mento.create({
52
+ * provider: new ethersV5.providers.JsonRpcProvider("https://forno.celo.org")
53
+ * });
54
+ *
55
+ * // Viem
56
+ * const mento = await Mento.create({
57
+ * provider: createPublicClient({
58
+ * transport: http("https://forno.celo.org")
59
+ * })
60
+ * });
61
+ *
62
+ * // Get all stable tokens
63
+ * const stableTokens = await mento.getStableTokens();
64
+ *
65
+ * // Get all collateral assets
66
+ * const collateralAssets = await mento.getCollateralAssets();
67
+ */
68
+ class Mento {
69
+ constructor(provider, stableTokenService, collateralAssetService) {
70
+ this.provider = provider;
71
+ this.stableTokenService = stableTokenService;
72
+ this.collateralAssetService = collateralAssetService;
73
+ }
74
+ static async create(config) {
75
+ if (!config.provider) {
76
+ throw new Error('Provider is required to initialize Mento SDK');
77
+ }
78
+ let provider;
79
+ if (isEthersV5Provider(config.provider)) {
80
+ provider = new adapters_1.EthersV5Adapter(config.provider);
81
+ }
82
+ else if (isEthersV6Provider(config.provider)) {
83
+ provider = new adapters_1.EthersAdapter(config.provider);
84
+ }
85
+ else if (isViemProvider(config.provider)) {
86
+ provider = new adapters_1.ViemAdapter(config.provider);
87
+ }
88
+ else {
89
+ throw new Error('Unsupported provider type');
90
+ }
91
+ const stableTokenService = new services_1.StableTokenService(provider);
92
+ const collateralAssetService = new services_1.CollateralAssetService(provider);
93
+ return new Mento(provider, stableTokenService, collateralAssetService);
94
+ }
95
+ async getStableTokens() {
96
+ return this.stableTokenService.getStableTokens();
97
+ }
98
+ /**
99
+ * Get all collateral assets that are available on the current chain.
100
+ * @returns An array of collateral assets
101
+ */
102
+ async getCollateralAssets() {
103
+ return this.collateralAssetService.getCollateralAssets();
104
+ }
105
+ /**
106
+ * Get the address of a contract for the current chain
107
+ * @param contractName - The contract name
108
+ * @returns The contract address
109
+ */
110
+ async getContractAddress(contractName) {
111
+ const chainId = (await this.provider.getChainId());
112
+ return addresses_1.addresses[chainId][contractName];
113
+ }
114
+ }
115
+ exports.Mento = Mento;
116
+ __exportStar(require("./constants"), exports);
117
+ __exportStar(require("./types"), exports);
118
+ __exportStar(require("./adapters"), exports);
119
+ __exportStar(require("./services"), exports);
120
+ __exportStar(require("./abis"), exports);
121
+ __exportStar(require("./utils"), exports);
122
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,yCAAwE;AAOxE,yCAAuE;AAEvE,qDAAiD;AAgBjD,+CAA+C;AAC/C,SAAS,kBAAkB,CACzB,QAA2B;IAE3B,0DAA0D;IAC1D,OAAO,CACL,YAAY,IAAI,QAAQ;QACxB,UAAU,IAAI,QAAQ;QACtB,gCAAgC;QAChC,WAAW,IAAI,QAAQ,CACxB,CAAA;AACH,CAAC;AAED,+CAA+C;AAC/C,SAAS,kBAAkB,CACzB,QAA2B;IAE3B,0DAA0D;IAC1D,OAAO,CACL,YAAY,IAAI,QAAQ;QACxB,sBAAsB;QACtB,sBAAsB,IAAI,QAAQ,CACnC,CAAA;AACH,CAAC;AAED,0CAA0C;AAC1C,SAAS,cAAc,CAAC,QAA2B;IACjD,OAAO,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,KAAK;IAKhB,YACE,QAAyB,EACzB,kBAAsC,EACtC,sBAA8C;QAE9C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;IACtD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAmB;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,QAAyB,CAAA;QAC7B,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,QAAQ,GAAG,IAAI,0BAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjD,CAAC;aAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,QAAQ,GAAG,IAAI,wBAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/C,CAAC;aAAM,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,QAAQ,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,6BAAkB,CAAC,QAAQ,CAAC,CAAA;QAC3D,MAAM,sBAAsB,GAAG,IAAI,iCAAsB,CAAC,QAAQ,CAAC,CAAA;QAEnE,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAAA;IACxE,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAA;IAClD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,CAAA;IAC1D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAC7B,YAAqC;QAErC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAY,CAAA;QAC7D,OAAO,qBAAS,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IACzC,CAAC;CACF;AA5DD,sBA4DC;AAED,8CAA2B;AAC3B,0CAAuB;AACvB,6CAA0B;AAC1B,6CAA0B;AAC1B,yCAAsB;AACtB,0CAAuB"}
@@ -0,0 +1,8 @@
1
+ import { CollateralAsset, ProviderAdapter } from '../types';
2
+ export declare class CollateralAssetService {
3
+ private provider;
4
+ private tokenMetadataService;
5
+ constructor(provider: ProviderAdapter);
6
+ getCollateralAssets(): Promise<CollateralAsset[]>;
7
+ }
8
+ //# sourceMappingURL=collateralAssetService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateralAssetService.d.ts","sourceRoot":"","sources":["../../src/services/collateralAssetService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,eAAe,EAAE,MAAM,UAAU,CAAA;AAKrE,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAIvC,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CA2CxD"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CollateralAssetService = void 0;
4
+ const abis_1 = require("../abis");
5
+ const constants_1 = require("../constants");
6
+ const utils_1 = require("../utils");
7
+ const tokenMetadataService_1 = require("./tokenMetadataService");
8
+ class CollateralAssetService {
9
+ constructor(provider) {
10
+ this.provider = provider;
11
+ this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
12
+ }
13
+ async getCollateralAssets() {
14
+ const chainId = await this.provider.getChainId();
15
+ const biPoolManagerAddress = (0, constants_1.getContractAddress)(chainId, constants_1.BIPOOLMANAGER);
16
+ const reserveAddress = (0, constants_1.getContractAddress)(chainId, constants_1.RESERVE);
17
+ const exchanges = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
18
+ address: biPoolManagerAddress,
19
+ abi: abis_1.BIPOOL_MANAGER_ABI,
20
+ functionName: 'getExchanges',
21
+ })));
22
+ const uniqueAddresses = new Set();
23
+ for (const exchange of exchanges) {
24
+ exchange.assets.forEach((address) => uniqueAddresses.add(address));
25
+ }
26
+ // Check which tokens are collateral assets and get their info
27
+ const assets = [];
28
+ for (const address of uniqueAddresses) {
29
+ const isCollateral = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
30
+ address: reserveAddress,
31
+ abi: abis_1.RESERVE_ABI,
32
+ functionName: 'isCollateralAsset',
33
+ args: [address],
34
+ })));
35
+ if (isCollateral) {
36
+ const metadata = await this.tokenMetadataService.getTokenMetadata(address);
37
+ assets.push({
38
+ address,
39
+ ...metadata,
40
+ });
41
+ }
42
+ }
43
+ return assets;
44
+ }
45
+ }
46
+ exports.CollateralAssetService = CollateralAssetService;
47
+ //# sourceMappingURL=collateralAssetService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateralAssetService.js","sourceRoot":"","sources":["../../src/services/collateralAssetService.ts"],"names":[],"mappings":";;;AAAA,kCAAyD;AAEzD,4CAAyE;AACzE,oCAAyC;AACzC,iEAA6D;AAE7D,MAAa,sBAAsB;IAGjC,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,QAAQ,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAChD,MAAM,oBAAoB,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,yBAAa,CAAC,CAAA;QACvE,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,mBAAO,CAAC,CAAA;QAE3D,MAAM,SAAS,GAAG,CAAC,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC3C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,yBAAkB;YACvB,YAAY,EAAE,cAAc;SAC7B,CAAC,CACH,CAAe,CAAA;QAEhB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,CAAC;QAED,8DAA8D;QAC9D,MAAM,MAAM,GAAsB,EAAE,CAAA;QACpC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,CAAC,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC9C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO,EAAE,cAAc;gBACvB,GAAG,EAAE,kBAAW;gBAChB,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,CAAC,OAAO,CAAC;aAChB,CAAC,CACH,CAAY,CAAA;YAEb,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAC/D,OAAO,CACR,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO;oBACP,GAAG,QAAQ;iBACZ,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAlDD,wDAkDC"}
@@ -0,0 +1,6 @@
1
+ export * from './collateralAssetService';
2
+ export * from './stableTokenService';
3
+ export * from './supplyAdjustmentService';
4
+ export * from './tokenMetadataService';
5
+ export * from './supply';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,UAAU,CAAA"}
@@ -14,7 +14,9 @@ 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("./tradingLimit"), exports);
18
- __exportStar(require("./tradingLimitsConfig"), exports);
19
- __exportStar(require("./tradingLimitsState"), exports);
20
- __exportStar(require("./IChainClient"), exports);
17
+ __exportStar(require("./collateralAssetService"), exports);
18
+ __exportStar(require("./stableTokenService"), exports);
19
+ __exportStar(require("./supplyAdjustmentService"), exports);
20
+ __exportStar(require("./tokenMetadataService"), exports);
21
+ __exportStar(require("./supply"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAwC;AACxC,uDAAoC;AACpC,4DAAyC;AACzC,yDAAsC;AACtC,2CAAwB"}
@@ -0,0 +1,9 @@
1
+ import { ProviderAdapter, StableToken } from '../types';
2
+ export declare class StableTokenService {
3
+ private provider;
4
+ private tokenMetadataService;
5
+ private supplyAdjustmentService;
6
+ constructor(provider: ProviderAdapter);
7
+ getStableTokens(): Promise<StableToken[]>;
8
+ }
9
+ //# sourceMappingURL=stableTokenService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stableTokenService.d.ts","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKvD,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,uBAAuB,CAAyB;gBAEpC,QAAQ,EAAE,eAAe;IAQvC,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAiChD"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StableTokenService = void 0;
4
+ const abis_1 = require("../abis");
5
+ const constants_1 = require("../constants");
6
+ const supply_1 = require("./supply");
7
+ const supplyAdjustmentService_1 = require("./supplyAdjustmentService");
8
+ const tokenMetadataService_1 = require("./tokenMetadataService");
9
+ class StableTokenService {
10
+ constructor(provider) {
11
+ this.provider = provider;
12
+ this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
13
+ this.supplyAdjustmentService = new supplyAdjustmentService_1.SupplyAdjustmentService(provider, new supply_1.DefaultCalculatorFactory());
14
+ }
15
+ async getStableTokens() {
16
+ const chainId = await this.provider.getChainId();
17
+ const reserveAddress = (0, constants_1.getContractAddress)(chainId, constants_1.RESERVE);
18
+ const tokenAddresses = (await this.provider.readContract({
19
+ address: reserveAddress,
20
+ abi: abis_1.RESERVE_ABI,
21
+ functionName: 'getTokens',
22
+ }));
23
+ const tokens = [];
24
+ for (const address of tokenAddresses) {
25
+ const metadata = await this.tokenMetadataService.getTokenMetadata(address);
26
+ const totalSupply = await this.tokenMetadataService.getTotalSupply(address);
27
+ const token = {
28
+ address,
29
+ ...metadata,
30
+ totalSupply,
31
+ };
32
+ const adjustedSupply = await this.supplyAdjustmentService.getAdjustedSupply(token);
33
+ token.totalSupply = adjustedSupply;
34
+ tokens.push(token);
35
+ }
36
+ return tokens;
37
+ }
38
+ }
39
+ exports.StableTokenService = StableTokenService;
40
+ //# sourceMappingURL=stableTokenService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stableTokenService.js","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AACrC,4CAA0D;AAE1D,qCAAmD;AACnD,uEAAmE;AACnE,iEAA6D;AAE7D,MAAa,kBAAkB;IAI7B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,CAAC,uBAAuB,GAAG,IAAI,iDAAuB,CACxD,QAAQ,EACR,IAAI,iCAAwB,EAAE,CAC/B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAChD,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,mBAAO,CAAC,CAAA;QAE3D,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvD,OAAO,EAAE,cAAc;YACvB,GAAG,EAAE,kBAAW;YAChB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAa,CAAA;QAEf,MAAM,MAAM,GAAkB,EAAE,CAAA;QAEhC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAC1E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAChE,OAAO,CACR,CAAA;YAED,MAAM,KAAK,GAAG;gBACZ,OAAO;gBACP,GAAG,QAAQ;gBACX,WAAW;aACZ,CAAA;YAED,MAAM,cAAc,GAClB,MAAM,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAE7D,KAAK,CAAC,WAAW,GAAG,cAAc,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA7CD,gDA6CC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Interface for calculating non-circulating token supply.
3
+ *
4
+ * Determines the amount of tokens that should be excluded from total supply
5
+ * calculations because they are pre-minted or otherwise not available for
6
+ * trading (e.g., locked, reserved, or in protocol-owned positions).
7
+ *
8
+ * @param tokenAddress - The address of the token.
9
+ * @returns The amount to subtract from total supply.
10
+ */
11
+ export interface ISupplyCalculator {
12
+ getAmount(tokenAddress: string): Promise<bigint>;
13
+ }
14
+ //# sourceMappingURL=ISupplyCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/ISupplyCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACjD"}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ISupplyCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/ISupplyCalculator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { ISupplyCalculator } from './ISupplyCalculator';
2
+ import { ProviderAdapter } from '../../types';
3
+ /**
4
+ * Calculates the amount of tokens supplied to AAVE protocol.
5
+ *
6
+ * When tokens are supplied to AAVE, the protocol mints corresponding "aTokens"
7
+ * as receipt tokens. The balance of the aTokens represents the total
8
+ * amount of the original token supplied to the protocol.
9
+ */
10
+ export declare class AAVESupplyCalculator implements ISupplyCalculator {
11
+ private readonly provider;
12
+ private holderAddresses;
13
+ constructor(provider: ProviderAdapter, holderAddresses: string[]);
14
+ /**
15
+ * Gets the balance of the corresponding aToken for the specified token address that is held by the holder addresses.
16
+ * @param tokenAddress - The address of the token to get the balance for.
17
+ * @returns The balance of the corresponding aToken.
18
+ */
19
+ getAmount(tokenAddress: string): Promise<bigint>;
20
+ }
21
+ //# sourceMappingURL=aaveSupplyCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aaveSupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/aaveSupplyCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAG1D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,eAAe;gBADN,QAAQ,EAAE,eAAe,EAClC,eAAe,EAAE,MAAM,EAAE;IAGnC;;;;OAIG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BvD"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AAVESupplyCalculator = void 0;
4
+ const abis_1 = require("../../abis");
5
+ const constants_1 = require("../../constants");
6
+ /**
7
+ * Calculates the amount of tokens supplied to AAVE protocol.
8
+ *
9
+ * When tokens are supplied to AAVE, the protocol mints corresponding "aTokens"
10
+ * as receipt tokens. The balance of the aTokens represents the total
11
+ * amount of the original token supplied to the protocol.
12
+ */
13
+ class AAVESupplyCalculator {
14
+ constructor(provider, holderAddresses) {
15
+ this.provider = provider;
16
+ this.holderAddresses = holderAddresses;
17
+ }
18
+ /**
19
+ * Gets the balance of the corresponding aToken for the specified token address that is held by the holder addresses.
20
+ * @param tokenAddress - The address of the token to get the balance for.
21
+ * @returns The balance of the corresponding aToken.
22
+ */
23
+ async getAmount(tokenAddress) {
24
+ const chainId = await this.provider.getChainId();
25
+ const chainMappings = constants_1.AAVE_TOKEN_MAPPINGS[chainId];
26
+ if (!chainMappings) {
27
+ return 0n; // No mappings for this chain, return 0
28
+ }
29
+ const aTokenAddress = chainMappings[tokenAddress];
30
+ if (!aTokenAddress) {
31
+ return 0n; // No aToken mapping for this token, return 0
32
+ }
33
+ const balances = await Promise.all(this.holderAddresses.map(async (holderAddress) => {
34
+ const balance = (await this.provider.readContract({
35
+ address: aTokenAddress,
36
+ abi: abis_1.ERC20_ABI,
37
+ functionName: 'balanceOf',
38
+ args: [holderAddress],
39
+ }));
40
+ return balance;
41
+ }));
42
+ return balances.reduce((acc, balance) => acc + balance, 0n);
43
+ }
44
+ }
45
+ exports.AAVESupplyCalculator = AAVESupplyCalculator;
46
+ //# sourceMappingURL=aaveSupplyCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aaveSupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/aaveSupplyCalculator.ts"],"names":[],"mappings":";;;AAEA,qCAAsC;AACtC,+CAAqD;AAErD;;;;;;GAMG;AACH,MAAa,oBAAoB;IAE/B,YACmB,QAAyB,EAClC,eAAyB;QADhB,aAAQ,GAAR,QAAQ,CAAiB;QAClC,oBAAe,GAAf,eAAe,CAAU;IAChC,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,YAAoB;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAEhD,MAAM,aAAa,GAAG,+BAAmB,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,CAAA,CAAC,uCAAuC;QACnD,CAAC;QACD,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,CAAA,CAAC,6CAA6C;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChD,OAAO,EAAE,aAAa;gBACtB,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,CAAC,aAAa,CAAC;aACtB,CAAC,CAAW,CAAA;YAEb,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CACH,CAAA;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;IAC7D,CAAC;CACF;AAvCD,oDAuCC"}
@@ -0,0 +1,8 @@
1
+ import { ISupplyCalculator } from './ISupplyCalculator';
2
+ import { ProviderAdapter } from '../../types';
3
+ export interface CalculatorFactory {
4
+ createUniV3Calculator(provider: ProviderAdapter): ISupplyCalculator;
5
+ createAAVECalculator(provider: ProviderAdapter): ISupplyCalculator;
6
+ createMultisigCalculator(provider: ProviderAdapter): ISupplyCalculator;
7
+ }
8
+ //# sourceMappingURL=calculatorFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculatorFactory.d.ts","sourceRoot":"","sources":["../../../src/services/supply/calculatorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAA;IACnE,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAA;IAClE,wBAAwB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAA;CACvE"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=calculatorFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculatorFactory.js","sourceRoot":"","sources":["../../../src/services/supply/calculatorFactory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { ProviderAdapter } from '../../types';
2
+ import { CalculatorFactory } from './calculatorFactory';
3
+ import { ISupplyCalculator } from './ISupplyCalculator';
4
+ export declare class DefaultCalculatorFactory implements CalculatorFactory {
5
+ createUniV3Calculator(provider: ProviderAdapter): ISupplyCalculator;
6
+ createAAVECalculator(provider: ProviderAdapter): ISupplyCalculator;
7
+ createMultisigCalculator(provider: ProviderAdapter): ISupplyCalculator;
8
+ }
9
+ //# sourceMappingURL=defaultCalculatorFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultCalculatorFactory.d.ts","sourceRoot":"","sources":["../../../src/services/supply/defaultCalculatorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAIvD,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB;IASnE,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB;IAOlE,wBAAwB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB;CAOvE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultCalculatorFactory = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const aaveSupplyCalculator_1 = require("./aaveSupplyCalculator");
6
+ const uniV3SupplyCalculator_1 = require("./uniV3SupplyCalculator");
7
+ const multisigSupplyCalculator_1 = require("./multisigSupplyCalculator");
8
+ class DefaultCalculatorFactory {
9
+ createUniV3Calculator(provider) {
10
+ return new uniV3SupplyCalculator_1.UniV3SupplyCalculator(provider, constants_1.PROTOCOL_ADDRESSES.UNIV3_POSITION_MANAGER, constants_1.PROTOCOL_ADDRESSES.UNIV3_FACTORY, constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG);
11
+ }
12
+ createAAVECalculator(provider) {
13
+ return new aaveSupplyCalculator_1.AAVESupplyCalculator(provider, [
14
+ constants_1.MENTO_ADDRESSES.OPERATIONAL_WALLET,
15
+ constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG,
16
+ ]);
17
+ }
18
+ createMultisigCalculator(provider) {
19
+ return new multisigSupplyCalculator_1.MultisigSupplyCalculator(provider, [
20
+ constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG,
21
+ constants_1.MENTO_ADDRESSES.OPERATIONAL_WALLET,
22
+ constants_1.MENTO_ADDRESSES.OPERATIONAL_WALLET_2,
23
+ ]);
24
+ }
25
+ }
26
+ exports.DefaultCalculatorFactory = DefaultCalculatorFactory;
27
+ //# sourceMappingURL=defaultCalculatorFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultCalculatorFactory.js","sourceRoot":"","sources":["../../../src/services/supply/defaultCalculatorFactory.ts"],"names":[],"mappings":";;;AACA,+CAAqE;AACrE,iEAA6D;AAG7D,mEAA+D;AAC/D,yEAAqE;AAErE,MAAa,wBAAwB;IACnC,qBAAqB,CAAC,QAAyB;QAC7C,OAAO,IAAI,6CAAqB,CAC9B,QAAQ,EACR,8BAAkB,CAAC,sBAAsB,EACzC,8BAAkB,CAAC,aAAa,EAChC,2BAAe,CAAC,iBAAiB,CAClC,CAAA;IACH,CAAC;IAED,oBAAoB,CAAC,QAAyB;QAC5C,OAAO,IAAI,2CAAoB,CAAC,QAAQ,EAAE;YACxC,2BAAe,CAAC,kBAAkB;YAClC,2BAAe,CAAC,iBAAiB;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,wBAAwB,CAAC,QAAyB;QAChD,OAAO,IAAI,mDAAwB,CAAC,QAAQ,EAAE;YAC5C,2BAAe,CAAC,iBAAiB;YACjC,2BAAe,CAAC,kBAAkB;YAClC,2BAAe,CAAC,oBAAoB;SACrC,CAAC,CAAA;IACJ,CAAC;CACF;AAxBD,4DAwBC"}
@@ -0,0 +1,7 @@
1
+ export * from './uniV3SupplyCalculator';
2
+ export * from './multisigSupplyCalculator';
3
+ export * from './ISupplyCalculator';
4
+ export * from './aaveSupplyCalculator';
5
+ export * from './calculatorFactory';
6
+ export * from './defaultCalculatorFactory';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/supply/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA"}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* istanbul ignore file */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -15,8 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
15
  };
17
16
  Object.defineProperty(exports, "__esModule", { value: true });
18
- __exportStar(require("./constants"), exports);
19
- __exportStar(require("./governance"), exports);
20
- __exportStar(require("./mento"), exports);
21
- __exportStar(require("./routeUtils"), exports);
22
- __exportStar(require("./utils"), exports);
17
+ __exportStar(require("./uniV3SupplyCalculator"), exports);
18
+ __exportStar(require("./multisigSupplyCalculator"), exports);
19
+ __exportStar(require("./ISupplyCalculator"), exports);
20
+ __exportStar(require("./aaveSupplyCalculator"), exports);
21
+ __exportStar(require("./calculatorFactory"), exports);
22
+ __exportStar(require("./defaultCalculatorFactory"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/supply/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,6DAA0C;AAC1C,sDAAmC;AACnC,yDAAsC;AACtC,sDAAmC;AACnC,6DAA0C"}
@@ -0,0 +1,9 @@
1
+ import { ProviderAdapter } from '../../types';
2
+ import { ISupplyCalculator } from './ISupplyCalculator';
3
+ export declare class MultisigSupplyCalculator implements ISupplyCalculator {
4
+ private provider;
5
+ private multisigAddresses;
6
+ constructor(provider: ProviderAdapter, multisigAddresses: string[]);
7
+ getAmount(tokenAddress: string): Promise<bigint>;
8
+ }
9
+ //# sourceMappingURL=multisigSupplyCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisigSupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/multisigSupplyCalculator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,wBAAyB,YAAW,iBAAiB;IAE9D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,iBAAiB;gBADjB,QAAQ,EAAE,eAAe,EACzB,iBAAiB,EAAE,MAAM,EAAE;IAG/B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBvD"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultisigSupplyCalculator = void 0;
4
+ const abis_1 = require("../../abis");
5
+ class MultisigSupplyCalculator {
6
+ constructor(provider, multisigAddresses) {
7
+ this.provider = provider;
8
+ this.multisigAddresses = multisigAddresses;
9
+ }
10
+ async getAmount(tokenAddress) {
11
+ const balancePromises = this.multisigAddresses.map(async (multisigAddress) => {
12
+ try {
13
+ const balance = (await this.provider.readContract({
14
+ address: tokenAddress,
15
+ abi: abis_1.ERC20_ABI,
16
+ functionName: 'balanceOf',
17
+ args: [multisigAddress],
18
+ }));
19
+ return balance;
20
+ }
21
+ catch (error) {
22
+ // TODO: Failures are silent here which could lead to
23
+ // incorrect supply calculations. This will be addressed
24
+ // in the V2 release.
25
+ return BigInt(0);
26
+ }
27
+ });
28
+ const balances = await Promise.all(balancePromises);
29
+ return balances.reduce((sum, balance) => sum + balance, BigInt(0));
30
+ }
31
+ }
32
+ exports.MultisigSupplyCalculator = MultisigSupplyCalculator;
33
+ //# sourceMappingURL=multisigSupplyCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisigSupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/multisigSupplyCalculator.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAItC,MAAa,wBAAwB;IACnC,YACU,QAAyB,EACzB,iBAA2B;QAD3B,aAAQ,GAAR,QAAQ,CAAiB;QACzB,sBAAiB,GAAjB,iBAAiB,CAAU;IAClC,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,YAAoB;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE;YAC3E,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAChD,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,gBAAS;oBACd,YAAY,EAAE,WAAW;oBACzB,IAAI,EAAE,CAAC,eAAe,CAAC;iBACxB,CAAC,CAAW,CAAA;gBACb,OAAO,OAAO,CAAA;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qDAAqD;gBACrD,8DAA8D;gBAC9D,4BAA4B;gBAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,CAAC;CACF;AA3BD,4DA2BC"}