@mento-protocol/mento-sdk 3.0.0-beta.1 → 3.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 (158) hide show
  1. package/README.md +34 -0
  2. package/dist/cache/routes.d.ts +13 -0
  3. package/dist/cache/routes.d.ts.map +1 -0
  4. package/dist/cache/routes.js +130 -0
  5. package/dist/cache/routes.js.map +1 -0
  6. package/dist/cache/tokens.d.ts +67 -0
  7. package/dist/cache/tokens.d.ts.map +1 -0
  8. package/dist/cache/tokens.js +379 -0
  9. package/dist/cache/tokens.js.map +1 -0
  10. package/dist/core/abis/breakerbox.d.ts +13 -0
  11. package/dist/core/abis/breakerbox.d.ts.map +1 -0
  12. package/dist/core/abis/breakerbox.js +8 -0
  13. package/dist/core/abis/breakerbox.js.map +1 -0
  14. package/dist/core/abis/erc20.d.ts +7 -0
  15. package/dist/core/abis/erc20.d.ts.map +1 -1
  16. package/dist/core/abis/erc20.js +7 -0
  17. package/dist/core/abis/erc20.js.map +1 -1
  18. package/dist/core/abis/fpmm.d.ts +126 -0
  19. package/dist/core/abis/fpmm.d.ts.map +1 -1
  20. package/dist/core/abis/fpmm.js +10 -0
  21. package/dist/core/abis/fpmm.js.map +1 -1
  22. package/dist/core/abis/index.d.ts +2 -0
  23. package/dist/core/abis/index.d.ts.map +1 -1
  24. package/dist/core/abis/index.js +2 -0
  25. package/dist/core/abis/index.js.map +1 -1
  26. package/dist/core/abis/virtualPool.d.ts +30 -0
  27. package/dist/core/abis/virtualPool.d.ts.map +1 -1
  28. package/dist/core/abis/virtualPool.js +5 -1
  29. package/dist/core/abis/virtualPool.js.map +1 -1
  30. package/dist/core/constants/aaveConfig.js +2 -2
  31. package/dist/core/constants/addresses.d.ts.map +1 -1
  32. package/dist/core/constants/addresses.js +9 -4
  33. package/dist/core/constants/addresses.js.map +1 -1
  34. package/dist/core/types/contractAddresses.d.ts +2 -0
  35. package/dist/core/types/contractAddresses.d.ts.map +1 -1
  36. package/dist/core/types/index.d.ts +3 -1
  37. package/dist/core/types/index.d.ts.map +1 -1
  38. package/dist/core/types/index.js +3 -1
  39. package/dist/core/types/index.js.map +1 -1
  40. package/dist/core/types/pool.d.ts +110 -0
  41. package/dist/core/types/pool.d.ts.map +1 -1
  42. package/dist/core/types/provider.d.ts.map +1 -1
  43. package/dist/core/types/provider.js +0 -1
  44. package/dist/core/types/provider.js.map +1 -1
  45. package/dist/core/types/route.d.ts +3 -3
  46. package/dist/core/types/route.d.ts.map +1 -1
  47. package/dist/core/types/token.d.ts +13 -3
  48. package/dist/core/types/token.d.ts.map +1 -1
  49. package/dist/core/types/tradingLimits.d.ts +91 -0
  50. package/dist/core/types/tradingLimits.d.ts.map +1 -0
  51. package/dist/core/types/tradingLimits.js +3 -0
  52. package/dist/core/types/tradingLimits.js.map +1 -0
  53. package/dist/core/types/tradingMode.d.ts +24 -0
  54. package/dist/core/types/tradingMode.d.ts.map +1 -0
  55. package/dist/core/types/tradingMode.js +31 -0
  56. package/dist/core/types/tradingMode.js.map +1 -0
  57. package/dist/core/types/transaction.d.ts +45 -0
  58. package/dist/core/types/transaction.d.ts.map +1 -0
  59. package/dist/core/types/transaction.js +3 -0
  60. package/dist/core/types/transaction.js.map +1 -0
  61. package/dist/index.d.ts +20 -8
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +23 -10
  64. package/dist/index.js.map +1 -1
  65. package/dist/services/index.d.ts +1 -0
  66. package/dist/services/index.d.ts.map +1 -1
  67. package/dist/services/index.js +1 -0
  68. package/dist/services/index.js.map +1 -1
  69. package/dist/services/pools/PoolService.d.ts +22 -10
  70. package/dist/services/pools/PoolService.d.ts.map +1 -1
  71. package/dist/services/pools/PoolService.js +44 -110
  72. package/dist/services/pools/PoolService.js.map +1 -1
  73. package/dist/services/pools/poolDetails.d.ts +11 -0
  74. package/dist/services/pools/poolDetails.d.ts.map +1 -0
  75. package/dist/services/pools/poolDetails.js +136 -0
  76. package/dist/services/pools/poolDetails.js.map +1 -0
  77. package/dist/services/pools/poolDiscovery.d.ts +13 -0
  78. package/dist/services/pools/poolDiscovery.d.ts.map +1 -0
  79. package/dist/services/pools/poolDiscovery.js +115 -0
  80. package/dist/services/pools/poolDiscovery.js.map +1 -0
  81. package/dist/services/quotes/QuoteService.d.ts +21 -12
  82. package/dist/services/quotes/QuoteService.d.ts.map +1 -1
  83. package/dist/services/quotes/QuoteService.js +23 -10
  84. package/dist/services/quotes/QuoteService.js.map +1 -1
  85. package/dist/services/routes/RouteService.d.ts +3 -3
  86. package/dist/services/routes/RouteService.d.ts.map +1 -1
  87. package/dist/services/routes/RouteService.js +3 -5
  88. package/dist/services/routes/RouteService.js.map +1 -1
  89. package/dist/services/swap/SwapService.d.ts +18 -14
  90. package/dist/services/swap/SwapService.d.ts.map +1 -1
  91. package/dist/services/swap/SwapService.js +31 -11
  92. package/dist/services/swap/SwapService.js.map +1 -1
  93. package/dist/services/tokens/supplyAdjustmentService.d.ts +0 -4
  94. package/dist/services/tokens/supplyAdjustmentService.d.ts.map +1 -1
  95. package/dist/services/tokens/supplyAdjustmentService.js +3 -8
  96. package/dist/services/tokens/supplyAdjustmentService.js.map +1 -1
  97. package/dist/services/tokens/tokenService.d.ts.map +1 -1
  98. package/dist/services/tokens/tokenService.js +2 -2
  99. package/dist/services/tokens/tokenService.js.map +1 -1
  100. package/dist/services/trading/TradingLimitsService.d.ts +38 -0
  101. package/dist/services/trading/TradingLimitsService.d.ts.map +1 -0
  102. package/dist/services/trading/TradingLimitsService.js +157 -0
  103. package/dist/services/trading/TradingLimitsService.js.map +1 -0
  104. package/dist/services/trading/TradingService.d.ts +110 -0
  105. package/dist/services/trading/TradingService.d.ts.map +1 -0
  106. package/dist/services/trading/TradingService.js +162 -0
  107. package/dist/services/trading/TradingService.js.map +1 -0
  108. package/dist/services/trading/index.d.ts +3 -0
  109. package/dist/services/trading/index.d.ts.map +1 -0
  110. package/dist/services/trading/index.js +19 -0
  111. package/dist/services/trading/index.js.map +1 -0
  112. package/dist/utils/costUtils.js +4 -4
  113. package/dist/utils/costUtils.js.map +1 -1
  114. package/dist/utils/index.d.ts +3 -0
  115. package/dist/utils/index.d.ts.map +1 -1
  116. package/dist/utils/index.js +3 -0
  117. package/dist/utils/index.js.map +1 -1
  118. package/dist/utils/pathEncoder.d.ts +3 -2
  119. package/dist/utils/pathEncoder.d.ts.map +1 -1
  120. package/dist/utils/pathEncoder.js +19 -3
  121. package/dist/utils/pathEncoder.js.map +1 -1
  122. package/dist/utils/rateFeed.d.ts +18 -0
  123. package/dist/utils/rateFeed.d.ts.map +1 -0
  124. package/dist/utils/rateFeed.js +27 -0
  125. package/dist/utils/rateFeed.js.map +1 -0
  126. package/dist/utils/routeUtils.d.ts +53 -53
  127. package/dist/utils/routeUtils.d.ts.map +1 -1
  128. package/dist/utils/routeUtils.js +41 -41
  129. package/dist/utils/routeUtils.js.map +1 -1
  130. package/dist/utils/routes.d.ts +2 -8
  131. package/dist/utils/routes.d.ts.map +1 -1
  132. package/dist/utils/routes.js +5 -46
  133. package/dist/utils/routes.js.map +1 -1
  134. package/dist/utils/tokens.d.ts +1 -77
  135. package/dist/utils/tokens.d.ts.map +1 -1
  136. package/dist/utils/tokens.js +10 -178
  137. package/dist/utils/tokens.js.map +1 -1
  138. package/dist/utils/tradingLimits.d.ts +41 -0
  139. package/dist/utils/tradingLimits.d.ts.map +1 -0
  140. package/dist/utils/tradingLimits.js +171 -0
  141. package/dist/utils/tradingLimits.js.map +1 -0
  142. package/dist/utils/validation.d.ts +19 -0
  143. package/dist/utils/validation.d.ts.map +1 -0
  144. package/dist/utils/validation.js +34 -0
  145. package/dist/utils/validation.js.map +1 -0
  146. package/package.json +1 -1
  147. package/dist/cache/routes.42220.d.ts +0 -3
  148. package/dist/cache/routes.42220.d.ts.map +0 -1
  149. package/dist/cache/routes.42220.js +0 -112
  150. package/dist/cache/routes.42220.js.map +0 -1
  151. package/dist/cache/tokens.11142220.d.ts +0 -3
  152. package/dist/cache/tokens.11142220.d.ts.map +0 -1
  153. package/dist/cache/tokens.11142220.js +0 -129
  154. package/dist/cache/tokens.11142220.js.map +0 -1
  155. package/dist/cache/tokens.42220.d.ts +0 -3
  156. package/dist/cache/tokens.42220.d.ts.map +0 -1
  157. package/dist/cache/tokens.42220.js +0 -129
  158. package/dist/cache/tokens.42220.js.map +0 -1
@@ -5,6 +5,7 @@ const viem_1 = require("viem");
5
5
  const abis_1 = require("../../core/abis");
6
6
  const constants_1 = require("../../core/constants");
7
7
  const pathEncoder_1 = require("../../utils/pathEncoder");
8
+ const validation_1 = require("../../utils/validation");
8
9
  /**
9
10
  * Service for building token swap transactions on the Mento protocol.
10
11
  * Returns transaction parameters that can be executed by any wallet.
@@ -20,8 +21,8 @@ class SwapService {
20
21
  * Builds a complete swap transaction including approval if needed.
21
22
  * This is the recommended method for most use cases.
22
23
  *
23
- * @param tokenIn - The address of the input token
24
- * @param tokenOut - The address of the output token
24
+ * @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
25
+ * @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
25
26
  * @param amountIn - The amount of input tokens (in wei/smallest unit)
26
27
  * @param recipient - The address to receive the output tokens
27
28
  * @param owner - The address that owns the input tokens (needed to check allowance)
@@ -32,11 +33,11 @@ class SwapService {
32
33
  * @example
33
34
  * ```typescript
34
35
  * const { approval, swap } = await mento.swap.buildSwapTransaction(
35
- * cUSD,
36
- * CELO,
36
+ * '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
37
+ * '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
37
38
  * parseUnits('100', 18),
38
- * recipientAddress,
39
- * ownerAddress,
39
+ * '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
40
+ * '0x123...', // owner
40
41
  * { slippageTolerance: 0.5 }
41
42
  * )
42
43
  *
@@ -50,6 +51,11 @@ class SwapService {
50
51
  * ```
51
52
  */
52
53
  async buildSwapTransaction(tokenIn, tokenOut, amountIn, recipient, owner, options, route) {
54
+ // Validate all address inputs
55
+ (0, validation_1.validateAddress)(tokenIn, 'tokenIn');
56
+ (0, validation_1.validateAddress)(tokenOut, 'tokenOut');
57
+ (0, validation_1.validateAddress)(recipient, 'recipient');
58
+ (0, validation_1.validateAddress)(owner, 'owner');
53
59
  // Build swap params first
54
60
  const swap = await this.buildSwapParams(tokenIn, tokenOut, amountIn, recipient, options, route);
55
61
  // Check if approval is needed
@@ -61,8 +67,8 @@ class SwapService {
61
67
  * Builds swap transaction parameters without executing the transaction.
62
68
  * Does NOT check or handle token approval - use buildSwapTransaction for that.
63
69
  *
64
- * @param tokenIn - The address of the input token
65
- * @param tokenOut - The address of the output token
70
+ * @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
71
+ * @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
66
72
  * @param amountIn - The amount of input tokens (in wei/smallest unit)
67
73
  * @param recipient - The address to receive the output tokens
68
74
  * @param options - Swap configuration options (slippage, deadline)
@@ -72,10 +78,10 @@ class SwapService {
72
78
  * @example
73
79
  * ```typescript
74
80
  * const swapDetails = await mento.swap.buildSwapParams(
75
- * cUSD,
76
- * CELO,
81
+ * '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
82
+ * '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
77
83
  * parseUnits('100', 18),
78
- * recipientAddress,
84
+ * '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
79
85
  * { slippageTolerance: 0.5 }
80
86
  * )
81
87
  *
@@ -84,6 +90,10 @@ class SwapService {
84
90
  * ```
85
91
  */
86
92
  async buildSwapParams(tokenIn, tokenOut, amountIn, recipient, options, route) {
93
+ // Validate all address inputs
94
+ (0, validation_1.validateAddress)(tokenIn, 'tokenIn');
95
+ (0, validation_1.validateAddress)(tokenOut, 'tokenOut');
96
+ (0, validation_1.validateAddress)(recipient, 'recipient');
87
97
  // Find route if not provided
88
98
  if (!route) {
89
99
  route = await this.routeService.findRoute(tokenIn, tokenOut);
@@ -137,9 +147,19 @@ class SwapService {
137
147
  }
138
148
  /**
139
149
  * Calculates minimum output amount after applying slippage tolerance
150
+ * @param amountOut - Expected output amount
151
+ * @param slippageTolerance - Slippage tolerance as percentage (e.g., 0.5 for 0.5%)
152
+ * @returns Minimum acceptable output amount
153
+ * @throws Error if slippage tolerance is invalid
140
154
  * @private
141
155
  */
142
156
  calculateMinAmountOut(amountOut, slippageTolerance) {
157
+ if (slippageTolerance < 0) {
158
+ throw new Error('Slippage tolerance cannot be negative');
159
+ }
160
+ if (slippageTolerance > 100) {
161
+ throw new Error('Slippage tolerance cannot exceed 100%');
162
+ }
143
163
  const basisPoints = BigInt(Math.floor(slippageTolerance * 100));
144
164
  const slippageMultiplier = 10000n - basisPoints;
145
165
  return (amountOut * slippageMultiplier) / 10000n;
@@ -1 +1 @@
1
- {"version":3,"file":"SwapService.js","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SwapService.js","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,6 @@ import { CalculatorFactory } from './supply/calculatorFactory';
3
3
  import type { PublicClient } from 'viem';
4
4
  export declare class SupplyAdjustmentService {
5
5
  private readonly config;
6
- STABLE_TOKEN_SYMBOLS: {
7
- readonly cUSD: "cUSD";
8
- readonly cEUR: "cEUR";
9
- };
10
6
  constructor(publicClient: PublicClient, chainId: number, calculatorFactory: CalculatorFactory);
11
7
  private initializeConfig;
12
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"supplyAdjustmentService.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/supplyAdjustmentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,oBAAoB;;;MAGV;gBAGR,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,iBAAiB;IAYtC,OAAO,CAAC,gBAAgB;IAqBxB;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAa7D"}
1
+ {"version":3,"file":"supplyAdjustmentService.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/supplyAdjustmentService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;gBAExC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB;IAO7F,OAAO,CAAC,gBAAgB;IAmBxB;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAa7D"}
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SupplyAdjustmentService = void 0;
4
+ const tokens_1 = require("../../cache/tokens");
4
5
  class SupplyAdjustmentService {
5
6
  constructor(publicClient, chainId, calculatorFactory) {
6
- this.STABLE_TOKEN_SYMBOLS = {
7
- cUSD: 'cUSD',
8
- cEUR: 'cEUR',
9
- };
10
7
  if (!publicClient)
11
8
  throw new Error('PublicClient is required');
12
9
  if (!calculatorFactory)
@@ -18,14 +15,12 @@ class SupplyAdjustmentService {
18
15
  const aaveCalculator = factory.createAAVECalculator(publicClient, chainId);
19
16
  const multisigCalculator = factory.createMultisigCalculator(publicClient);
20
17
  return Object.freeze({
21
- [this.STABLE_TOKEN_SYMBOLS.cUSD]: Object.freeze([
18
+ [tokens_1.TokenSymbol.USDm]: Object.freeze([
22
19
  { calculator: uniV3Calculator },
23
20
  { calculator: multisigCalculator },
24
21
  { calculator: aaveCalculator },
25
22
  ]),
26
- [this.STABLE_TOKEN_SYMBOLS.cEUR]: Object.freeze([
27
- { calculator: aaveCalculator },
28
- ]),
23
+ [tokens_1.TokenSymbol.EURm]: Object.freeze([{ calculator: aaveCalculator }]),
29
24
  });
30
25
  }
31
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"supplyAdjustmentService.js","sourceRoot":"","sources":["../../../src/services/tokens/supplyAdjustmentService.ts"],"names":[],"mappings":";;;AAIA,MAAa,uBAAuB;IAQlC,YACE,YAA0B,EAC1B,OAAe,EACf,iBAAoC;QARtC,yBAAoB,GAAG;YACrB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;SACJ,CAAA;QAOR,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC9D,IAAI,CAAC,iBAAiB;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAEzE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CACjC,YAAY,EACZ,OAAO,EACP,iBAAiB,CAClB,CAAA;IACH,CAAC;IAEO,gBAAgB,CACtB,YAA0B,EAC1B,OAAe,EACf,OAA0B;QAE1B,MAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;QACnE,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC1E,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAA;QAEzE,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;gBAC9C,EAAE,UAAU,EAAE,eAAe,EAAE;gBAC/B,EAAE,UAAU,EAAE,kBAAkB,EAAE;gBAClC,EAAE,UAAU,EAAE,cAAc,EAAE;aAC/B,CAAC;YACF,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;gBAC9C,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;AA9DD,0DA8DC"}
1
+ {"version":3,"file":"supplyAdjustmentService.js","sourceRoot":"","sources":["../../../src/services/tokens/supplyAdjustmentService.ts"],"names":[],"mappings":";;;AAGA,+CAAgD;AAEhD,MAAa,uBAAuB;IAGlC,YAAY,YAA0B,EAAE,OAAe,EAAE,iBAAoC;QAC3F,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC9D,IAAI,CAAC,iBAAiB;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAEzE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;IAC/E,CAAC;IAEO,gBAAgB,CACtB,YAA0B,EAC1B,OAAe,EACf,OAA0B;QAE1B,MAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;QACnE,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC1E,MAAM,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAA;QAEzE,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,CAAC,oBAAW,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;gBAChC,EAAE,UAAU,EAAE,eAAe,EAAE;gBAC/B,EAAE,UAAU,EAAE,kBAAkB,EAAE;gBAClC,EAAE,UAAU,EAAE,cAAc,EAAE;aAC/B,CAAC;YACF,CAAC,oBAAW,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;SACpE,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;AA/CD,0DA+CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenService.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/tokenService.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAkBtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,qBAAa,YAAY;IAGX,OAAO,CAAC,YAAY;IAAgB,OAAO,CAAC,OAAO;IAF/D,OAAO,CAAC,uBAAuB,CAAyB;gBAEpC,YAAY,EAAE,YAAY,EAAU,OAAO,EAAE,MAAM;IAQvE;;;;OAIG;YACW,gBAAgB;IAqC9B;;;;OAIG;YACW,cAAc;IAa5B;;;;OAIG;IACU,eAAe,CAAC,aAAa,UAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAuC1E;;;;OAIG;IACU,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CA2C/D"}
1
+ {"version":3,"file":"tokenService.d.ts","sourceRoot":"","sources":["../../../src/services/tokens/tokenService.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAetE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,qBAAa,YAAY;IAGX,OAAO,CAAC,YAAY;IAAgB,OAAO,CAAC,OAAO;IAF/D,OAAO,CAAC,uBAAuB,CAAyB;gBAEpC,YAAY,EAAE,YAAY,EAAU,OAAO,EAAE,MAAM;IAQvE;;;;OAIG;YACW,gBAAgB;IAqC9B;;;;OAIG;YACW,cAAc;IAa5B;;;;OAIG;IACU,eAAe,CAAC,aAAa,UAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAyC1E;;;;OAIG;IACU,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CA0C/D"}
@@ -71,6 +71,8 @@ class TokenService {
71
71
  functionName: 'getTokens',
72
72
  args: [],
73
73
  }));
74
+ // TODO: Once we have a cached mapping of stableToken -> addressRegistry we can
75
+ // use that to get the token addresses.
74
76
  const tokens = [];
75
77
  for (const address of tokenAddresses) {
76
78
  const metadata = await this.getTokenMetadata(address);
@@ -91,7 +93,6 @@ class TokenService {
91
93
  }
92
94
  return tokens;
93
95
  }
94
- // TODO: V3 - How does USD.m fit in here?
95
96
  /**
96
97
  * Get all collateral assets from exchanges
97
98
  * Filters tokens that are marked as collateral in the Reserve contract
@@ -100,7 +101,6 @@ class TokenService {
100
101
  async getCollateralAssets() {
101
102
  const biPoolManagerAddress = (0, constants_1.getContractAddress)(this.chainId, constants_1.BIPOOLMANAGER);
102
103
  const reserveAddress = (0, constants_1.getContractAddress)(this.chainId, constants_1.RESERVE);
103
- // TODO: V3 - Should instead use the factories.
104
104
  // Get all exchanges to find unique token addresses
105
105
  const exchanges = (await (0, utils_1.retryOperation)(() => this.publicClient.readContract({
106
106
  address: biPoolManagerAddress,
@@ -1 +1 @@
1
- {"version":3,"file":"tokenService.js","sourceRoot":"","sources":["../../../src/services/tokens/tokenService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenService.js","sourceRoot":"","sources":["../../../src/services/tokens/tokenService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { PublicClient } from 'viem';
2
+ import type { Pool, TradingLimit } from '../../core/types';
3
+ /**
4
+ * Service for querying trading limits from the Mento protocol.
5
+ * Supports both FPMM pools (TradingLimitsV2) and Virtual pools (TradingLimitsV1).
6
+ */
7
+ export declare class TradingLimitsService {
8
+ private publicClient;
9
+ private chainId;
10
+ constructor(publicClient: PublicClient, chainId: number);
11
+ /**
12
+ * Get trading limits for a pool.
13
+ * Returns an array of TradingLimit objects for each configured limit.
14
+ *
15
+ * @param pool - The pool to get trading limits for
16
+ * @returns Array of TradingLimit objects with maxIn/maxOut/until
17
+ */
18
+ getPoolTradingLimits(pool: Pool): Promise<TradingLimit[]>;
19
+ /**
20
+ * Get trading limits for an FPMM pool.
21
+ * FPMM pools use TradingLimitsV2 with fixed timeframes.
22
+ */
23
+ private getFPMMTradingLimits;
24
+ /**
25
+ * Get trading limits for a specific token in an FPMM pool.
26
+ */
27
+ private getFPMMTokenLimits;
28
+ /**
29
+ * Get trading limits for a Virtual pool.
30
+ * Virtual pools use TradingLimitsV1 via the Broker contract.
31
+ */
32
+ private getVirtualPoolTradingLimits;
33
+ /**
34
+ * Get trading limits for a specific token in a Virtual pool.
35
+ */
36
+ private getVirtualPoolTokenLimits;
37
+ }
38
+ //# sourceMappingURL=TradingLimitsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TradingLimitsService.d.ts","sourceRoot":"","sources":["../../../src/services/trading/TradingLimitsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAW,MAAM,MAAM,CAAA;AAC5C,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EAKb,MAAM,kBAAkB,CAAA;AAYzB;;;GAGG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;gBADP,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM;IAGzB;;;;;;OAMG;IACG,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQ/D;;;OAGG;YACW,oBAAoB;IAelC;;OAEG;YACW,kBAAkB;IA0ChC;;;OAGG;YACW,2BAA2B;IAoBzC;;OAEG;YACW,yBAAyB;CA4DxC"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TradingLimitsService = void 0;
4
+ const types_1 = require("../../core/types");
5
+ const abis_1 = require("../../core/abis");
6
+ const constants_1 = require("../../core/constants");
7
+ const tradingLimits_1 = require("../../utils/tradingLimits");
8
+ /**
9
+ * Service for querying trading limits from the Mento protocol.
10
+ * Supports both FPMM pools (TradingLimitsV2) and Virtual pools (TradingLimitsV1).
11
+ */
12
+ class TradingLimitsService {
13
+ constructor(publicClient, chainId) {
14
+ this.publicClient = publicClient;
15
+ this.chainId = chainId;
16
+ }
17
+ /**
18
+ * Get trading limits for a pool.
19
+ * Returns an array of TradingLimit objects for each configured limit.
20
+ *
21
+ * @param pool - The pool to get trading limits for
22
+ * @returns Array of TradingLimit objects with maxIn/maxOut/until
23
+ */
24
+ async getPoolTradingLimits(pool) {
25
+ if (pool.poolType === types_1.PoolType.FPMM) {
26
+ return this.getFPMMTradingLimits(pool);
27
+ }
28
+ else {
29
+ return this.getVirtualPoolTradingLimits(pool);
30
+ }
31
+ }
32
+ /**
33
+ * Get trading limits for an FPMM pool.
34
+ * FPMM pools use TradingLimitsV2 with fixed timeframes.
35
+ */
36
+ async getFPMMTradingLimits(pool) {
37
+ const limits = [];
38
+ // Get trading limits for both tokens
39
+ const [token0Limits, token1Limits] = await Promise.all([
40
+ this.getFPMMTokenLimits(pool.poolAddr, pool.token0),
41
+ this.getFPMMTokenLimits(pool.poolAddr, pool.token1),
42
+ ]);
43
+ limits.push(...token0Limits);
44
+ limits.push(...token1Limits);
45
+ return limits;
46
+ }
47
+ /**
48
+ * Get trading limits for a specific token in an FPMM pool.
49
+ */
50
+ async getFPMMTokenLimits(poolAddr, token) {
51
+ try {
52
+ const result = await this.publicClient.readContract({
53
+ address: poolAddr,
54
+ abi: abis_1.FPMM_ABI,
55
+ functionName: 'getTradingLimits',
56
+ args: [token],
57
+ });
58
+ // Result is a tuple: [config, state]
59
+ const [configTuple, stateTuple] = result;
60
+ const config = {
61
+ limit0: configTuple.limit0,
62
+ limit1: configTuple.limit1,
63
+ decimals: configTuple.decimals,
64
+ };
65
+ const state = {
66
+ lastUpdated0: Number(stateTuple.lastUpdated0),
67
+ lastUpdated1: Number(stateTuple.lastUpdated1),
68
+ netflow0: stateTuple.netflow0,
69
+ netflow1: stateTuple.netflow1,
70
+ };
71
+ if (!(0, tradingLimits_1.hasConfiguredLimitsV2)(config)) {
72
+ return [];
73
+ }
74
+ return (0, tradingLimits_1.calculateTradingLimitsV2)(config, state, token);
75
+ }
76
+ catch {
77
+ // Token may not have limits configured, or invalid token
78
+ return [];
79
+ }
80
+ }
81
+ /**
82
+ * Get trading limits for a Virtual pool.
83
+ * Virtual pools use TradingLimitsV1 via the Broker contract.
84
+ */
85
+ async getVirtualPoolTradingLimits(pool) {
86
+ if (!pool.exchangeId) {
87
+ console.warn(`Virtual pool ${pool.poolAddr} missing exchangeId - cannot query trading limits`);
88
+ return [];
89
+ }
90
+ const limits = [];
91
+ // Get trading limits for both tokens
92
+ const [token0Limits, token1Limits] = await Promise.all([
93
+ this.getVirtualPoolTokenLimits(pool.exchangeId, pool.token0),
94
+ this.getVirtualPoolTokenLimits(pool.exchangeId, pool.token1),
95
+ ]);
96
+ limits.push(...token0Limits);
97
+ limits.push(...token1Limits);
98
+ return limits;
99
+ }
100
+ /**
101
+ * Get trading limits for a specific token in a Virtual pool.
102
+ */
103
+ async getVirtualPoolTokenLimits(exchangeId, token) {
104
+ const brokerAddr = (0, constants_1.getContractAddress)(this.chainId, 'Broker');
105
+ const limitId = (0, tradingLimits_1.computeLimitId)(exchangeId, token);
106
+ try {
107
+ // Fetch config and state in parallel
108
+ const [configResult, stateResult] = await Promise.all([
109
+ this.publicClient.readContract({
110
+ address: brokerAddr,
111
+ abi: abis_1.BROKER_ABI,
112
+ functionName: 'tradingLimitsConfig',
113
+ args: [limitId],
114
+ }),
115
+ this.publicClient.readContract({
116
+ address: brokerAddr,
117
+ abi: abis_1.BROKER_ABI,
118
+ functionName: 'tradingLimitsState',
119
+ args: [limitId],
120
+ }),
121
+ ]);
122
+ // Parse config result
123
+ const configTuple = configResult;
124
+ const config = {
125
+ timestep0: Number(configTuple[0]),
126
+ timestep1: Number(configTuple[1]),
127
+ limit0: configTuple[2],
128
+ limit1: configTuple[3],
129
+ limitGlobal: configTuple[4],
130
+ flags: Number(configTuple[5]),
131
+ };
132
+ // Parse state result
133
+ const stateTuple = stateResult;
134
+ const state = {
135
+ lastUpdated0: Number(stateTuple[0]),
136
+ lastUpdated1: Number(stateTuple[1]),
137
+ netflow0: stateTuple[2],
138
+ netflow1: stateTuple[3],
139
+ netflowGlobal: stateTuple[4],
140
+ };
141
+ // Only return limits if configured
142
+ if (!(0, tradingLimits_1.hasConfiguredLimitsV1)(config)) {
143
+ return [];
144
+ }
145
+ // Get token decimals (V1 uses 0 decimals internally, but we track token decimals for display)
146
+ // For now, return 0 as the reference - consumers should query token decimals separately
147
+ const tokenDecimals = 0; // V1 stores values with 0 decimal precision
148
+ return (0, tradingLimits_1.calculateTradingLimitsV1)(config, state, token, tokenDecimals);
149
+ }
150
+ catch {
151
+ // Trading limits may not be configured for this token
152
+ return [];
153
+ }
154
+ }
155
+ }
156
+ exports.TradingLimitsService = TradingLimitsService;
157
+ //# sourceMappingURL=TradingLimitsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TradingLimitsService.js","sourceRoot":"","sources":["../../../src/services/trading/TradingLimitsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { PublicClient } from 'viem';
2
+ import { Route, Pool, TradingLimit, PoolTradabilityStatus } from '../../core/types';
3
+ import { RouteService } from '../routes';
4
+ /**
5
+ * Service for checking trading status and circuit breaker state in the Mento protocol.
6
+ * Provides methods to query whether trading is enabled for specific rate feeds,
7
+ * token pairs, or routes. Also integrates trading limit checks.
8
+ */
9
+ export declare class TradingService {
10
+ private publicClient;
11
+ private chainId;
12
+ private routeService;
13
+ private tradingLimitsService;
14
+ constructor(publicClient: PublicClient, chainId: number, routeService: RouteService);
15
+ /**
16
+ * Returns the current trading mode for a given rate feed.
17
+ *
18
+ * The BreakerBox uses a bitmask approach where 0 means bidirectional trading
19
+ * is enabled, and any non-zero value means trading is suspended.
20
+ *
21
+ * @param rateFeedId - The address of the rate feed
22
+ * @returns The raw trading mode value from BreakerBox (0 = enabled, non-zero = suspended)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const mode = await tradingService.getRateFeedTradingMode(rateFeedId)
27
+ * if (mode === TradingMode.BIDIRECTIONAL) {
28
+ * console.log('Trading is enabled')
29
+ * }
30
+ * ```
31
+ */
32
+ getRateFeedTradingMode(rateFeedId: string): Promise<number>;
33
+ /**
34
+ * Checks if a trading pair is currently tradable.
35
+ * For multi-hop routes (e.g., CELO → USDm → USDT), checks that ALL
36
+ * intermediate rate feeds are in BIDIRECTIONAL mode.
37
+ *
38
+ * @param tokenIn - Input token address
39
+ * @param tokenOut - Output token address
40
+ * @returns true if the pair is tradable (all rate feeds BIDIRECTIONAL), false otherwise
41
+ * @throws {RouteNotFoundError} If no route exists between the token pair
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const isTradable = await tradingService.isPairTradable(USDm, CELO)
46
+ * if (!isTradable) {
47
+ * console.log('Trading is currently suspended for this pair')
48
+ * }
49
+ * ```
50
+ */
51
+ isPairTradable(tokenIn: string, tokenOut: string): Promise<boolean>;
52
+ /**
53
+ * Checks if a route is currently tradable.
54
+ * Verifies that all pools in the route's path have their rate feeds
55
+ * in BIDIRECTIONAL mode.
56
+ *
57
+ * @param route - The route to check
58
+ * @returns true if all pools in the route are tradable, false otherwise
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const route = await routeService.findRoute(tokenIn, tokenOut)
63
+ * const isRouteTradable = await tradingService.isRouteTradable(route)
64
+ * ```
65
+ */
66
+ isRouteTradable(route: Route): Promise<boolean>;
67
+ /**
68
+ * Get trading limits for a pool.
69
+ *
70
+ * @param pool - The pool to get trading limits for
71
+ * @returns Array of TradingLimit objects with maxIn/maxOut/until
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * const limits = await tradingService.getPoolTradingLimits(pool)
76
+ * limits.forEach(limit => {
77
+ * console.log(`${limit.asset}: maxIn=${limit.maxIn}, maxOut=${limit.maxOut}`)
78
+ * })
79
+ * ```
80
+ */
81
+ getPoolTradingLimits(pool: Pool): Promise<TradingLimit[]>;
82
+ /**
83
+ * Get complete tradability status for a pool.
84
+ * Returns separate flags for circuit breaker and trading limits,
85
+ * allowing frontends to show different messages for each condition.
86
+ *
87
+ * @param pool - The pool to check
88
+ * @returns PoolTradabilityStatus with tradable, circuitBreakerOk, limitsOk, and limits
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const status = await tradingService.getPoolTradabilityStatus(pool)
93
+ * if (!status.circuitBreakerOk) {
94
+ * showModal("Trading temporarily suspended (circuit breaker)")
95
+ * } else if (!status.limitsOk) {
96
+ * showModal("Trading limit reached", status.limits)
97
+ * }
98
+ * ```
99
+ */
100
+ getPoolTradabilityStatus(pool: Pool): Promise<PoolTradabilityStatus>;
101
+ /**
102
+ * Get the reference rate feed ID for a pool.
103
+ * Both FPMM and Virtual pools expose this via the referenceRateFeedID() view function.
104
+ *
105
+ * @param pool - The pool to get rate feed ID for
106
+ * @returns The rate feed ID address
107
+ */
108
+ getPoolRateFeedId(pool: Pool): Promise<string>;
109
+ }
110
+ //# sourceMappingURL=TradingService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TradingService.d.ts","sourceRoot":"","sources":["../../../src/services/trading/TradingService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAEL,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC;;;;GAIG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IALtB,OAAO,CAAC,oBAAoB,CAAsB;gBAGxC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY;IAKpC;;;;;;;;;;;;;;;;OAgBG;IACG,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAajE;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzE;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAcrD;;;;;;;;;;;;;OAaG;IACG,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI/D;;;;;;;;;;;;;;;;;OAiBG;IACG,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqB1E;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CASrD"}