@mento-protocol/mento-sdk 1.0.0 → 2.0.0-beta.1

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 (196) hide show
  1. package/README.md +124 -8
  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 +4 -0
  15. package/dist/abis/index.d.ts.map +1 -0
  16. package/dist/{cjs → abis}/index.js +4 -5
  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/adapters/implementations/ethersAdapter.d.ts +10 -0
  27. package/dist/adapters/implementations/ethersAdapter.d.ts.map +1 -0
  28. package/dist/adapters/implementations/ethersAdapter.js +22 -0
  29. package/dist/adapters/implementations/ethersAdapter.js.map +1 -0
  30. package/dist/adapters/implementations/ethersV5Adapter.d.ts +10 -0
  31. package/dist/adapters/implementations/ethersV5Adapter.d.ts.map +1 -0
  32. package/dist/adapters/implementations/ethersV5Adapter.js +22 -0
  33. package/dist/adapters/implementations/ethersV5Adapter.js.map +1 -0
  34. package/dist/adapters/implementations/viemAdapter.d.ts +10 -0
  35. package/dist/adapters/implementations/viemAdapter.d.ts.map +1 -0
  36. package/dist/adapters/implementations/viemAdapter.js +29 -0
  37. package/dist/adapters/implementations/viemAdapter.js.map +1 -0
  38. package/dist/adapters/index.d.ts +5 -0
  39. package/dist/adapters/index.d.ts.map +1 -0
  40. package/dist/adapters/index.js +10 -0
  41. package/dist/adapters/index.js.map +1 -0
  42. package/dist/adapters/proxies/ethersAdapterProxy.d.ts +27 -0
  43. package/dist/adapters/proxies/ethersAdapterProxy.d.ts.map +1 -0
  44. package/dist/adapters/proxies/ethersAdapterProxy.js +77 -0
  45. package/dist/adapters/proxies/ethersAdapterProxy.js.map +1 -0
  46. package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts +27 -0
  47. package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts.map +1 -0
  48. package/dist/adapters/proxies/ethersV5AdapterProxy.js +77 -0
  49. package/dist/adapters/proxies/ethersV5AdapterProxy.js.map +1 -0
  50. package/dist/adapters/proxies/viemAdapterProxy.d.ts +28 -0
  51. package/dist/adapters/proxies/viemAdapterProxy.d.ts.map +1 -0
  52. package/dist/adapters/proxies/viemAdapterProxy.js +77 -0
  53. package/dist/adapters/proxies/viemAdapterProxy.js.map +1 -0
  54. package/dist/constants/addresses.d.ts +14 -0
  55. package/dist/constants/addresses.d.ts.map +1 -0
  56. package/dist/{cjs/constants → constants}/addresses.js +14 -25
  57. package/dist/constants/addresses.js.map +1 -0
  58. package/dist/constants/chainId.d.ts +5 -0
  59. package/dist/constants/chainId.d.ts.map +1 -0
  60. package/dist/{cjs/enums → constants}/chainId.js +2 -2
  61. package/dist/constants/chainId.js.map +1 -0
  62. package/dist/constants/contractNames.d.ts +21 -0
  63. package/dist/constants/contractNames.d.ts.map +1 -0
  64. package/dist/constants/contractNames.js +24 -0
  65. package/dist/constants/contractNames.js.map +1 -0
  66. package/dist/constants/index.d.ts +6 -0
  67. package/dist/constants/index.d.ts.map +1 -0
  68. package/dist/{cjs/interfaces → constants}/index.js +6 -4
  69. package/dist/constants/index.js.map +1 -0
  70. package/dist/{cjs/enums → constants}/proposalState.d.ts +1 -0
  71. package/dist/constants/proposalState.d.ts.map +1 -0
  72. package/dist/{cjs/enums → constants}/proposalState.js +2 -1
  73. package/dist/constants/proposalState.js.map +1 -0
  74. package/dist/constants/stableTokenMetadata.d.ts +13 -0
  75. package/dist/constants/stableTokenMetadata.d.ts.map +1 -0
  76. package/dist/constants/stableTokenMetadata.js +30 -0
  77. package/dist/constants/stableTokenMetadata.js.map +1 -0
  78. package/dist/index.d.ts +67 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +122 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/services/collateralAssetService.d.ts +8 -0
  83. package/dist/services/collateralAssetService.d.ts.map +1 -0
  84. package/dist/services/collateralAssetService.js +44 -0
  85. package/dist/services/collateralAssetService.js.map +1 -0
  86. package/dist/services/exchangeService.d.ts +18 -0
  87. package/dist/services/exchangeService.d.ts.map +1 -0
  88. package/dist/services/exchangeService.js +78 -0
  89. package/dist/services/exchangeService.js.map +1 -0
  90. package/dist/services/index.d.ts +3 -0
  91. package/dist/services/index.d.ts.map +1 -0
  92. package/dist/{cjs/enums → services}/index.js +3 -2
  93. package/dist/services/index.js.map +1 -0
  94. package/dist/services/stableTokenService.d.ts +8 -0
  95. package/dist/services/stableTokenService.d.ts.map +1 -0
  96. package/dist/services/stableTokenService.js +35 -0
  97. package/dist/services/stableTokenService.js.map +1 -0
  98. package/dist/services/tokenMetadataService.d.ts +8 -0
  99. package/dist/services/tokenMetadataService.d.ts.map +1 -0
  100. package/dist/services/tokenMetadataService.js +45 -0
  101. package/dist/services/tokenMetadataService.js.map +1 -0
  102. package/dist/{esm/types → types}/contractAddresses.d.ts +1 -0
  103. package/dist/types/contractAddresses.d.ts.map +1 -0
  104. package/dist/{cjs/types → types}/contractAddresses.js +1 -0
  105. package/dist/types/contractAddresses.js.map +1 -0
  106. package/dist/types/exchange.d.ts +12 -0
  107. package/dist/types/exchange.d.ts.map +1 -0
  108. package/dist/{cjs/interfaces/tradingLimit.js → types/exchange.js} +1 -0
  109. package/dist/types/exchange.js.map +1 -0
  110. package/dist/types/index.d.ts +5 -0
  111. package/dist/types/index.d.ts.map +1 -0
  112. package/dist/{cjs/types → types}/index.js +4 -1
  113. package/dist/types/index.js.map +1 -0
  114. package/dist/types/provider.d.ts +12 -0
  115. package/dist/types/provider.d.ts.map +1 -0
  116. package/dist/{cjs/interfaces/tradingLimitsConfig.js → types/provider.js} +1 -0
  117. package/dist/types/provider.js.map +1 -0
  118. package/dist/types/token.d.ts +12 -0
  119. package/dist/types/token.d.ts.map +1 -0
  120. package/dist/{cjs/interfaces/IChainClient.js → types/token.js} +1 -0
  121. package/dist/types/token.js.map +1 -0
  122. package/dist/utils/index.d.ts +2 -0
  123. package/dist/utils/index.d.ts.map +1 -0
  124. package/dist/{cjs/constants → utils}/index.js +2 -1
  125. package/dist/utils/index.js.map +1 -0
  126. package/dist/utils/retry.d.ts +12 -0
  127. package/dist/utils/retry.d.ts.map +1 -0
  128. package/dist/utils/retry.js +28 -0
  129. package/dist/utils/retry.js.map +1 -0
  130. package/package.json +31 -43
  131. package/dist/cjs/ChainClient.d.ts +0 -9
  132. package/dist/cjs/ChainClient.js +0 -58
  133. package/dist/cjs/TestChainClient.d.ts +0 -7
  134. package/dist/cjs/TestChainClient.js +0 -41
  135. package/dist/cjs/constants/addresses.d.ts +0 -2
  136. package/dist/cjs/constants/index.d.ts +0 -1
  137. package/dist/cjs/enums/chainId.d.ts +0 -5
  138. package/dist/cjs/enums/index.d.ts +0 -2
  139. package/dist/cjs/governance.d.ts +0 -62
  140. package/dist/cjs/governance.js +0 -151
  141. package/dist/cjs/index.d.ts +0 -5
  142. package/dist/cjs/interfaces/IChainClient.d.ts +0 -6
  143. package/dist/cjs/interfaces/index.d.ts +0 -4
  144. package/dist/cjs/interfaces/tradingLimit.d.ts +0 -7
  145. package/dist/cjs/interfaces/tradingLimitsConfig.d.ts +0 -10
  146. package/dist/cjs/interfaces/tradingLimitsState.d.ts +0 -9
  147. package/dist/cjs/interfaces/tradingLimitsState.js +0 -2
  148. package/dist/cjs/limits.d.ts +0 -33
  149. package/dist/cjs/limits.js +0 -130
  150. package/dist/cjs/mento.d.ts +0 -152
  151. package/dist/cjs/mento.js +0 -318
  152. package/dist/cjs/types/contractAddressMap.d.ts +0 -4
  153. package/dist/cjs/types/contractAddressMap.js +0 -2
  154. package/dist/cjs/types/contractAddresses.d.ts +0 -22
  155. package/dist/cjs/types/index.d.ts +0 -2
  156. package/dist/cjs/utils.d.ts +0 -36
  157. package/dist/cjs/utils.js +0 -98
  158. package/dist/esm/ChainClient.d.ts +0 -9
  159. package/dist/esm/ChainClient.js +0 -54
  160. package/dist/esm/TestChainClient.d.ts +0 -7
  161. package/dist/esm/TestChainClient.js +0 -37
  162. package/dist/esm/constants/addresses.d.ts +0 -2
  163. package/dist/esm/constants/addresses.js +0 -69
  164. package/dist/esm/constants/index.d.ts +0 -1
  165. package/dist/esm/constants/index.js +0 -1
  166. package/dist/esm/enums/chainId.d.ts +0 -5
  167. package/dist/esm/enums/chainId.js +0 -6
  168. package/dist/esm/enums/index.d.ts +0 -2
  169. package/dist/esm/enums/index.js +0 -2
  170. package/dist/esm/enums/proposalState.d.ts +0 -10
  171. package/dist/esm/enums/proposalState.js +0 -11
  172. package/dist/esm/governance.d.ts +0 -62
  173. package/dist/esm/governance.js +0 -147
  174. package/dist/esm/index.d.ts +0 -5
  175. package/dist/esm/index.js +0 -5
  176. package/dist/esm/interfaces/IChainClient.d.ts +0 -6
  177. package/dist/esm/interfaces/IChainClient.js +0 -1
  178. package/dist/esm/interfaces/index.d.ts +0 -4
  179. package/dist/esm/interfaces/index.js +0 -4
  180. package/dist/esm/interfaces/tradingLimit.d.ts +0 -7
  181. package/dist/esm/interfaces/tradingLimit.js +0 -1
  182. package/dist/esm/interfaces/tradingLimitsConfig.d.ts +0 -10
  183. package/dist/esm/interfaces/tradingLimitsConfig.js +0 -1
  184. package/dist/esm/interfaces/tradingLimitsState.d.ts +0 -9
  185. package/dist/esm/interfaces/tradingLimitsState.js +0 -1
  186. package/dist/esm/limits.d.ts +0 -33
  187. package/dist/esm/limits.js +0 -123
  188. package/dist/esm/mento.d.ts +0 -152
  189. package/dist/esm/mento.js +0 -314
  190. package/dist/esm/types/contractAddressMap.d.ts +0 -4
  191. package/dist/esm/types/contractAddressMap.js +0 -1
  192. package/dist/esm/types/contractAddresses.js +0 -1
  193. package/dist/esm/types/index.d.ts +0 -2
  194. package/dist/esm/types/index.js +0 -2
  195. package/dist/esm/utils.d.ts +0 -36
  196. package/dist/esm/utils.js +0 -90
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,EACL,eAAe,EAEf,eAAe,EAChB,MAAM,UAAU,CAAA;AAKjB,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAIvC,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAwCxD"}
@@ -0,0 +1,44 @@
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, 'BiPoolManager');
16
+ const reserveAddress = (0, constants_1.getContractAddress)(chainId, '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((asset) => uniqueAddresses.add(asset));
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(metadata);
38
+ }
39
+ }
40
+ return assets;
41
+ }
42
+ }
43
+ exports.CollateralAssetService = CollateralAssetService;
44
+ //# sourceMappingURL=collateralAssetService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateralAssetService.js","sourceRoot":"","sources":["../../src/services/collateralAssetService.ts"],"names":[],"mappings":";;;AAAA,kCAAyD;AAMzD,4CAAiD;AACjD,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,eAAe,CAAC,CAAA;QACzE,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAE7D,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,CAA2B,CAAA;QAE5B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QAChE,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,QAAQ,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA/CD,wDA+CC"}
@@ -0,0 +1,18 @@
1
+ import { ProviderAdapter, Exchange } from '../types';
2
+ export declare class ExchangeService {
3
+ private provider;
4
+ private tokenMetadataService;
5
+ constructor(provider: ProviderAdapter);
6
+ /**
7
+ * Returns a list of all the exchanges and their tokens that can be traded on Mento
8
+ */
9
+ getExchanges(): Promise<Exchange[]>;
10
+ /**
11
+ * Gets the exchange with the given id. If no exchange is found, returns undefined.
12
+ * @param id The exchange id to be retrieved.
13
+ * @returns The exchange with the given id, or undefined if no exchange is found.
14
+ */
15
+ getExchangeById(id: string): Promise<Exchange | undefined>;
16
+ getExchangeForTokens(token0: string, token1: string): Promise<Exchange | undefined>;
17
+ }
18
+ //# sourceMappingURL=exchangeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeService.d.ts","sourceRoot":"","sources":["../../src/services/exchangeService.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,QAAQ,EAGT,MAAM,UAAU,CAAA;AAejB,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAI7C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA0CzC;;;;OAIG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAK1D,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;CAiBjC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExchangeService = void 0;
4
+ const utils_1 = require("../utils");
5
+ const constants_1 = require("../constants");
6
+ const abis_1 = require("../abis");
7
+ const tokenMetadataService_1 = require("./tokenMetadataService");
8
+ // TODO:
9
+ // - async getAmountIn
10
+ // - get amount out
11
+ // - Swap in
12
+ // - Swap out
13
+ // - Increase trading allowancew
14
+ // - getExchangeForTokens
15
+ // - getExchangeById
16
+ // - isTradingEnabled -> Circuit breaker service
17
+ class ExchangeService {
18
+ constructor(provider) {
19
+ this.provider = provider;
20
+ this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
21
+ }
22
+ /**
23
+ * Returns a list of all the exchanges and their tokens that can be traded on Mento
24
+ */
25
+ async getExchanges() {
26
+ // The Broker can store references to multiple implementatios of the IExchangeProvider
27
+ // Currently there is only one implementation, the BiPoolManager, which manages pools with
28
+ // two assets. To simplify this logic we only fetch exchanges from the BiPoolManager.
29
+ // If in the future we have more than one implementation we can extend this function to
30
+ // first fetch the known exchange providers, then for each exchange provider fetch the exchanges.
31
+ const exchangeList = [];
32
+ const chainId = await this.provider.getChainId();
33
+ const biPoolManagerAddress = (0, constants_1.getContractAddress)(chainId, constants_1.BIPOOLMANAGER);
34
+ const rawExchanges = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
35
+ address: biPoolManagerAddress,
36
+ abi: abis_1.BIPOOL_MANAGER_ABI,
37
+ functionName: 'getExchanges',
38
+ })));
39
+ const uniqueAddresses = new Set();
40
+ for (const exchange of rawExchanges) {
41
+ exchange.assets.forEach((asset) => uniqueAddresses.add(asset));
42
+ }
43
+ const tokenMetadataMap = {};
44
+ for (const address of uniqueAddresses) {
45
+ const metadata = await this.tokenMetadataService.getTokenMetadata(address);
46
+ tokenMetadataMap[address] = metadata;
47
+ }
48
+ for (const exchange of rawExchanges) {
49
+ exchangeList.push({
50
+ providerAddr: exchange.providerAddr,
51
+ id: exchange.id,
52
+ assets: exchange.assets.map((asset) => tokenMetadataMap[asset]),
53
+ });
54
+ }
55
+ return exchangeList;
56
+ }
57
+ /**
58
+ * Gets the exchange with the given id. If no exchange is found, returns undefined.
59
+ * @param id The exchange id to be retrieved.
60
+ * @returns The exchange with the given id, or undefined if no exchange is found.
61
+ */
62
+ async getExchangeById(id) {
63
+ const exchanges = await this.getExchanges();
64
+ return exchanges.find((exchange) => exchange.id === id);
65
+ }
66
+ async getExchangeForTokens(token0, token1) {
67
+ let exchange = undefined;
68
+ if (!(await this.provider.isAddress(token0)) ||
69
+ !(await this.provider.isAddress(token1))) {
70
+ throw new Error('Invalid token address was supplied');
71
+ }
72
+ exchange = (await this.getExchanges()).find((exchange) => exchange.assets.some((asset) => asset.address === token0) &&
73
+ exchange.assets.some((asset) => asset.address === token1));
74
+ return exchange;
75
+ }
76
+ }
77
+ exports.ExchangeService = ExchangeService;
78
+ //# sourceMappingURL=exchangeService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeService.js","sourceRoot":"","sources":["../../src/services/exchangeService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./collateralAssetService";
2
+ export * from "./stableTokenService";
3
+ //# 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,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
@@ -14,5 +14,6 @@ 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("./collateralAssetService"), exports);
18
+ __exportStar(require("./stableTokenService"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,uDAAqC"}
@@ -0,0 +1,8 @@
1
+ import { ProviderAdapter, StableToken } from '../types';
2
+ export declare class StableTokenService {
3
+ private provider;
4
+ private tokenMetadataService;
5
+ constructor(provider: ProviderAdapter);
6
+ getStableTokens(): Promise<StableToken[]>;
7
+ }
8
+ //# sourceMappingURL=stableTokenService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stableTokenService.d.ts","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":"AAME,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGzD,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAIvC,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CA6BhD"}
@@ -0,0 +1,35 @@
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 tokenMetadataService_1 = require("./tokenMetadataService");
7
+ class StableTokenService {
8
+ constructor(provider) {
9
+ this.provider = provider;
10
+ this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
11
+ }
12
+ async getStableTokens() {
13
+ const chainId = await this.provider.getChainId();
14
+ const reserveAddress = (0, constants_1.getContractAddress)(chainId, 'Reserve');
15
+ const tokenAddresses = (await this.provider.readContract({
16
+ address: reserveAddress,
17
+ abi: abis_1.RESERVE_ABI,
18
+ functionName: 'getTokens',
19
+ }));
20
+ const tokens = [];
21
+ for (const address of tokenAddresses) {
22
+ const metadata = await this.tokenMetadataService.getTokenMetadata(address);
23
+ const totalSupply = await this.tokenMetadataService.getTotalSupply(address);
24
+ const token = {
25
+ ...metadata,
26
+ totalSupply,
27
+ fiatTicker: (0, constants_1.getFiatTicker)(metadata.symbol),
28
+ };
29
+ tokens.push(token);
30
+ }
31
+ return tokens;
32
+ }
33
+ }
34
+ exports.StableTokenService = StableTokenService;
35
+ //# sourceMappingURL=stableTokenService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stableTokenService.js","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AACrC,4CAIqB;AAErB,iEAA6D;AAE7D,MAAa,kBAAkB;IAG7B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,QAAQ,CAAC,CAAA;IAChE,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,SAAS,CAAC,CAAA;QAE7D,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,GAAG,QAAQ;gBACX,WAAW;gBACX,UAAU,EAAE,IAAA,yBAAa,EAAC,QAAQ,CAAC,MAA2B,CAAC;aAChE,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AApCD,gDAoCC"}
@@ -0,0 +1,8 @@
1
+ import { ProviderAdapter, IERC20Token } from '../types';
2
+ export declare class TokenMetadataService {
3
+ private provider;
4
+ constructor(provider: ProviderAdapter);
5
+ getTokenMetadata(address: string): Promise<IERC20Token>;
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,WAAW,EAAE,MAAM,UAAU,CAAA;AAIvD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCvD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWvD"}
@@ -0,0 +1,45 @@
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
+ address,
30
+ name: name,
31
+ symbol: symbol,
32
+ decimals: Number(decimals),
33
+ };
34
+ }
35
+ async getTotalSupply(address) {
36
+ const totalSupply = await (0, utils_1.retryOperation)(() => this.provider.readContract({
37
+ address,
38
+ abi: abis_1.ERC20_ABI,
39
+ functionName: 'totalSupply',
40
+ }));
41
+ return totalSupply.toString();
42
+ }
43
+ }
44
+ exports.TokenMetadataService = TokenMetadataService;
45
+ //# 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,CAAC,OAAe;QACpC,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,OAAO;YACP,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;AA/CD,oDA+CC"}
@@ -20,3 +20,4 @@ export type ContractAddresses = {
20
20
  StableTokenXOF: string;
21
21
  SortedOracles: string;
22
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,12 @@
1
+ import { IERC20Token } from './token';
2
+ export interface getExchangesResponse {
3
+ providerAddr: string;
4
+ id: string;
5
+ assets: string[];
6
+ }
7
+ export interface Exchange {
8
+ providerAddr: string;
9
+ id: string;
10
+ assets: IERC20Token[];
11
+ }
12
+ //# sourceMappingURL=exchange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB"}
@@ -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,12 @@
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
+ isAddress(address: string): Promise<boolean>;
11
+ }
12
+ //# 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;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C"}
@@ -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,12 @@
1
+ export interface IERC20Token {
2
+ name: string;
3
+ symbol: string;
4
+ address: string;
5
+ decimals: number;
6
+ }
7
+ export interface StableToken extends IERC20Token {
8
+ totalSupply: string;
9
+ fiatTicker: string;
10
+ }
11
+ export type CollateralAsset = IERC20Token;
12
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,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,WAAW;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAA"}
@@ -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,4 +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("./addresses"), 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"}