@mento-protocol/mento-sdk 3.0.0-beta.6 → 3.0.0-beta.7
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.
- package/README.md +34 -0
- package/dist/cache/routes.d.ts.map +1 -1
- package/dist/cache/routes.js +2 -4
- package/dist/cache/routes.js.map +1 -1
- package/dist/core/abis/erc20.d.ts +7 -0
- package/dist/core/abis/erc20.d.ts.map +1 -1
- package/dist/core/abis/erc20.js +7 -0
- package/dist/core/abis/erc20.js.map +1 -1
- package/dist/core/constants/aaveConfig.js +2 -2
- package/dist/core/constants/addresses.d.ts.map +1 -1
- package/dist/core/constants/addresses.js +3 -1
- package/dist/core/constants/addresses.js.map +1 -1
- package/dist/core/types/provider.d.ts +45 -0
- package/dist/core/types/provider.d.ts.map +1 -0
- package/dist/core/types/provider.js +3 -0
- package/dist/core/types/provider.js.map +1 -0
- package/dist/core/types/route.d.ts +3 -3
- package/dist/core/types/route.d.ts.map +1 -1
- package/dist/core/types/token.d.ts +13 -3
- package/dist/core/types/token.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/services/pools/PoolService.d.ts +1 -1
- package/dist/services/pools/PoolService.d.ts.map +1 -1
- package/dist/services/pools/PoolService.js +17 -11
- package/dist/services/pools/PoolService.js.map +1 -1
- package/dist/services/quotes/QuoteService.d.ts +21 -12
- package/dist/services/quotes/QuoteService.d.ts.map +1 -1
- package/dist/services/quotes/QuoteService.js +23 -11
- package/dist/services/quotes/QuoteService.js.map +1 -1
- package/dist/services/routes/RouteService.d.ts +3 -3
- package/dist/services/routes/RouteService.d.ts.map +1 -1
- package/dist/services/routes/RouteService.js +3 -5
- package/dist/services/routes/RouteService.js.map +1 -1
- package/dist/services/swap/SwapService.d.ts +18 -14
- package/dist/services/swap/SwapService.d.ts.map +1 -1
- package/dist/services/swap/SwapService.js +31 -14
- package/dist/services/swap/SwapService.js.map +1 -1
- package/dist/services/tokens/supplyAdjustmentService.d.ts +0 -4
- package/dist/services/tokens/supplyAdjustmentService.d.ts.map +1 -1
- package/dist/services/tokens/supplyAdjustmentService.js +3 -8
- package/dist/services/tokens/supplyAdjustmentService.js.map +1 -1
- package/dist/services/tokens/tokenService.d.ts.map +1 -1
- package/dist/services/tokens/tokenService.js +2 -2
- package/dist/services/tokens/tokenService.js.map +1 -1
- package/dist/services/trading/TradingService.d.ts +1 -1
- package/dist/services/trading/TradingService.js +1 -1
- package/dist/utils/costUtils.js +4 -4
- package/dist/utils/costUtils.js.map +1 -1
- package/dist/utils/pathEncoder.d.ts +3 -2
- package/dist/utils/pathEncoder.d.ts.map +1 -1
- package/dist/utils/pathEncoder.js +19 -3
- package/dist/utils/pathEncoder.js.map +1 -1
- package/dist/utils/routeUtils.d.ts +53 -53
- package/dist/utils/routeUtils.d.ts.map +1 -1
- package/dist/utils/routeUtils.js +41 -41
- package/dist/utils/routeUtils.js.map +1 -1
- package/dist/utils/validation.d.ts +19 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +34 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +1 -1
|
@@ -149,9 +149,9 @@ class RouteService {
|
|
|
149
149
|
*
|
|
150
150
|
* @example
|
|
151
151
|
* ```typescript
|
|
152
|
-
* const
|
|
153
|
-
* const
|
|
154
|
-
* const route = await routeService.findRoute(
|
|
152
|
+
* const USDm = '0x765DE816845861e75A25fCA122bb6898B8B1282a'
|
|
153
|
+
* const BRLm = '0xE4D5...'
|
|
154
|
+
* const route = await routeService.findRoute(USDm, BRLm)
|
|
155
155
|
*
|
|
156
156
|
* if (route.path.length === 1) {
|
|
157
157
|
* console.log('Direct route available')
|
|
@@ -219,7 +219,6 @@ class RouteService {
|
|
|
219
219
|
}
|
|
220
220
|
try {
|
|
221
221
|
const symbol = (await this.publicClient.readContract({
|
|
222
|
-
// TODO: Consider using Address type from viem. Keep this consistent across the codebase
|
|
223
222
|
address: address,
|
|
224
223
|
abi: abis_1.ERC20_ABI,
|
|
225
224
|
functionName: 'symbol',
|
|
@@ -231,7 +230,6 @@ class RouteService {
|
|
|
231
230
|
}
|
|
232
231
|
catch {
|
|
233
232
|
// Fallback to address if symbol fetch fails
|
|
234
|
-
console.warn(`Failed to fetch symbol for token ${address}, using address as fallback`);
|
|
235
233
|
this.symbolCache.set(address, address);
|
|
236
234
|
return address;
|
|
237
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteService.js","sourceRoot":"","sources":["../../../src/services/routes/RouteService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RouteService.js","sourceRoot":"","sources":["../../../src/services/routes/RouteService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PublicClient } from 'viem';
|
|
2
2
|
import { RouteService } from '../routes';
|
|
3
3
|
import { QuoteService } from '../quotes';
|
|
4
4
|
import { Route, CallParams } from '../../core/types';
|
|
@@ -77,8 +77,8 @@ export declare class SwapService {
|
|
|
77
77
|
* Builds a complete swap transaction including approval if needed.
|
|
78
78
|
* This is the recommended method for most use cases.
|
|
79
79
|
*
|
|
80
|
-
* @param tokenIn - The address of the input token
|
|
81
|
-
* @param tokenOut - The address of the output token
|
|
80
|
+
* @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
|
|
81
|
+
* @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
|
|
82
82
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
83
83
|
* @param recipient - The address to receive the output tokens
|
|
84
84
|
* @param owner - The address that owns the input tokens (needed to check allowance)
|
|
@@ -89,11 +89,11 @@ export declare class SwapService {
|
|
|
89
89
|
* @example
|
|
90
90
|
* ```typescript
|
|
91
91
|
* const { approval, swap } = await mento.swap.buildSwapTransaction(
|
|
92
|
-
*
|
|
93
|
-
* CELO
|
|
92
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
93
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
94
94
|
* parseUnits('100', 18),
|
|
95
|
-
*
|
|
96
|
-
*
|
|
95
|
+
* '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
|
|
96
|
+
* '0x123...', // owner
|
|
97
97
|
* { slippageTolerance: 0.5 }
|
|
98
98
|
* )
|
|
99
99
|
*
|
|
@@ -106,13 +106,13 @@ export declare class SwapService {
|
|
|
106
106
|
* await walletClient.sendTransaction(swap.params)
|
|
107
107
|
* ```
|
|
108
108
|
*/
|
|
109
|
-
buildSwapTransaction(tokenIn:
|
|
109
|
+
buildSwapTransaction(tokenIn: string, tokenOut: string, amountIn: bigint, recipient: string, owner: string, options: SwapOptions, route?: Route): Promise<SwapTransaction>;
|
|
110
110
|
/**
|
|
111
111
|
* Builds swap transaction parameters without executing the transaction.
|
|
112
112
|
* Does NOT check or handle token approval - use buildSwapTransaction for that.
|
|
113
113
|
*
|
|
114
|
-
* @param tokenIn - The address of the input token
|
|
115
|
-
* @param tokenOut - The address of the output token
|
|
114
|
+
* @param tokenIn - The address of the input token (e.g., '0x765DE816845861e75A25fCA122bb6898B8B1282a')
|
|
115
|
+
* @param tokenOut - The address of the output token (e.g., '0x471EcE3750Da237f93B8E339c536989b8978a438')
|
|
116
116
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
117
117
|
* @param recipient - The address to receive the output tokens
|
|
118
118
|
* @param options - Swap configuration options (slippage, deadline)
|
|
@@ -122,10 +122,10 @@ export declare class SwapService {
|
|
|
122
122
|
* @example
|
|
123
123
|
* ```typescript
|
|
124
124
|
* const swapDetails = await mento.swap.buildSwapParams(
|
|
125
|
-
*
|
|
126
|
-
* CELO
|
|
125
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
126
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
127
127
|
* parseUnits('100', 18),
|
|
128
|
-
*
|
|
128
|
+
* '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
|
|
129
129
|
* { slippageTolerance: 0.5 }
|
|
130
130
|
* )
|
|
131
131
|
*
|
|
@@ -133,7 +133,7 @@ export declare class SwapService {
|
|
|
133
133
|
* await walletClient.sendTransaction(swapDetails.params)
|
|
134
134
|
* ```
|
|
135
135
|
*/
|
|
136
|
-
buildSwapParams(tokenIn:
|
|
136
|
+
buildSwapParams(tokenIn: string, tokenOut: string, amountIn: bigint, recipient: string, options: SwapOptions, route?: Route): Promise<SwapDetails>;
|
|
137
137
|
/**
|
|
138
138
|
* Builds approval transaction params for the Router to spend tokenIn
|
|
139
139
|
* @private
|
|
@@ -146,6 +146,10 @@ export declare class SwapService {
|
|
|
146
146
|
private getAllowance;
|
|
147
147
|
/**
|
|
148
148
|
* Calculates minimum output amount after applying slippage tolerance
|
|
149
|
+
* @param amountOut - Expected output amount
|
|
150
|
+
* @param slippageTolerance - Slippage tolerance as percentage (e.g., 0.5 for 0.5%)
|
|
151
|
+
* @returns Minimum acceptable output amount
|
|
152
|
+
* @throws Error if slippage tolerance is invalid
|
|
149
153
|
* @private
|
|
150
154
|
*/
|
|
151
155
|
private calculateMinAmountOut;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapService.d.ts","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SwapService.d.ts","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAsB,MAAM,MAAM,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGpD,OAAO,EAAmB,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGtE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;OAEG;IACH,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B;;OAEG;IACH,IAAI,EAAE,WAAW,CAAA;CAClB;AAED;;;GAGG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;gBAHZ,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,oBAAoB,CACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,eAAe,CAAC;IAiB3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,WAAW,CAAC;IAoCvB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;YACW,YAAY;IAU1B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,OAAO,CAAC,cAAc;CAavB"}
|
|
@@ -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
|
-
*
|
|
36
|
-
* CELO
|
|
36
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
37
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
37
38
|
* parseUnits('100', 18),
|
|
38
|
-
*
|
|
39
|
-
*
|
|
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
|
|
@@ -57,15 +63,12 @@ class SwapService {
|
|
|
57
63
|
const approval = currentAllowance < amountIn ? this.buildApprovalParams(tokenIn, amountIn) : null;
|
|
58
64
|
return { approval, swap };
|
|
59
65
|
}
|
|
60
|
-
// TODO: Do not use viem.Address on public interface functions.
|
|
61
|
-
// Instead use a string and validate it is a valid address.
|
|
62
|
-
// This prevents consumers from having to do any weird casting or importing viem.address
|
|
63
66
|
/**
|
|
64
67
|
* Builds swap transaction parameters without executing the transaction.
|
|
65
68
|
* Does NOT check or handle token approval - use buildSwapTransaction for that.
|
|
66
69
|
*
|
|
67
|
-
* @param tokenIn - The address of the input token
|
|
68
|
-
* @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')
|
|
69
72
|
* @param amountIn - The amount of input tokens (in wei/smallest unit)
|
|
70
73
|
* @param recipient - The address to receive the output tokens
|
|
71
74
|
* @param options - Swap configuration options (slippage, deadline)
|
|
@@ -75,10 +78,10 @@ class SwapService {
|
|
|
75
78
|
* @example
|
|
76
79
|
* ```typescript
|
|
77
80
|
* const swapDetails = await mento.swap.buildSwapParams(
|
|
78
|
-
*
|
|
79
|
-
* CELO
|
|
81
|
+
* '0x765DE816845861e75A25fCA122bb6898B8B1282a', // USDm
|
|
82
|
+
* '0x471EcE3750Da237f93B8E339c536989b8978a438', // CELO
|
|
80
83
|
* parseUnits('100', 18),
|
|
81
|
-
*
|
|
84
|
+
* '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', // recipient
|
|
82
85
|
* { slippageTolerance: 0.5 }
|
|
83
86
|
* )
|
|
84
87
|
*
|
|
@@ -87,6 +90,10 @@ class SwapService {
|
|
|
87
90
|
* ```
|
|
88
91
|
*/
|
|
89
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');
|
|
90
97
|
// Find route if not provided
|
|
91
98
|
if (!route) {
|
|
92
99
|
route = await this.routeService.findRoute(tokenIn, tokenOut);
|
|
@@ -140,9 +147,19 @@ class SwapService {
|
|
|
140
147
|
}
|
|
141
148
|
/**
|
|
142
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
|
|
143
154
|
* @private
|
|
144
155
|
*/
|
|
145
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
|
+
}
|
|
146
163
|
const basisPoints = BigInt(Math.floor(slippageTolerance * 100));
|
|
147
164
|
const slippageMultiplier = 10000n - basisPoints;
|
|
148
165
|
return (amountOut * slippageMultiplier) / 10000n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapService.js","sourceRoot":"","sources":["../../../src/services/swap/SwapService.ts"],"names":[],"mappings":";;;AAAA,+BAAgE;AAIhE,0CAAuD;AACvD,oDAAkE;AAClE,yDAAsE;
|
|
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;
|
|
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
|
-
[
|
|
18
|
+
[tokens_1.TokenSymbol.USDm]: Object.freeze([
|
|
22
19
|
{ calculator: uniV3Calculator },
|
|
23
20
|
{ calculator: multisigCalculator },
|
|
24
21
|
{ calculator: aaveCalculator },
|
|
25
22
|
]),
|
|
26
|
-
[
|
|
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":";;;
|
|
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;
|
|
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":";;;AAAA,0CAA4E;
|
|
1
|
+
{"version":3,"file":"tokenService.js","sourceRoot":"","sources":["../../../src/services/tokens/tokenService.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export declare class TradingService {
|
|
|
42
42
|
*
|
|
43
43
|
* @example
|
|
44
44
|
* ```typescript
|
|
45
|
-
* const isTradable = await tradingService.isPairTradable(
|
|
45
|
+
* const isTradable = await tradingService.isPairTradable(USDm, CELO)
|
|
46
46
|
* if (!isTradable) {
|
|
47
47
|
* console.log('Trading is currently suspended for this pair')
|
|
48
48
|
* }
|
|
@@ -56,7 +56,7 @@ class TradingService {
|
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
58
58
|
* ```typescript
|
|
59
|
-
* const isTradable = await tradingService.isPairTradable(
|
|
59
|
+
* const isTradable = await tradingService.isPairTradable(USDm, CELO)
|
|
60
60
|
* if (!isTradable) {
|
|
61
61
|
* console.log('Trading is currently suspended for this pair')
|
|
62
62
|
* }
|
package/dist/utils/costUtils.js
CHANGED
|
@@ -40,9 +40,9 @@ async function getFPMMCostPercent(poolAddress, publicClient) {
|
|
|
40
40
|
functionName: 'protocolFee',
|
|
41
41
|
}),
|
|
42
42
|
]);
|
|
43
|
-
// Convert from basis points to percentage, rounded to
|
|
43
|
+
// Convert from basis points to percentage, rounded to 8dp for precision
|
|
44
44
|
const totalBasisPoints = Number(lpFee) + Number(protocolFee);
|
|
45
|
-
return Math.round((totalBasisPoints / 100) *
|
|
45
|
+
return Math.round((totalBasisPoints / 100) * 1e8) / 1e8;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Calculate cost for Virtual pools
|
|
@@ -53,7 +53,7 @@ async function getVirtualPoolCostPercent(poolAddress, publicClient) {
|
|
|
53
53
|
abi: virtualPool_1.VIRTUAL_POOL_ABI,
|
|
54
54
|
functionName: 'protocolFee',
|
|
55
55
|
});
|
|
56
|
-
// Convert from basis points to percentage, rounded to
|
|
57
|
-
return Math.round((Number(protocolFee) / 100) *
|
|
56
|
+
// Convert from basis points to percentage, rounded to 8dp for precision
|
|
57
|
+
return Math.round((Number(protocolFee) / 100) * 1e8) / 1e8;
|
|
58
58
|
}
|
|
59
59
|
//# sourceMappingURL=costUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"costUtils.js","sourceRoot":"","sources":["../../src/utils/costUtils.ts"],"names":[],"mappings":";;AAaA,gDAQC;AArBD,yCAA8C;AAC9C,uCAAuC;AAEvC,0DAA2D;AAE3D;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,YAA0B;IAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACxD,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC/D,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAA0B;IAC/E,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,WAA4B;YACrC,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,OAAO;SACtB,CAAoB;QACrB,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,WAA4B;YACrC,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,aAAa;SAC5B,CAAoB;KACtB,CAAC,CAAA;IAEF,
|
|
1
|
+
{"version":3,"file":"costUtils.js","sourceRoot":"","sources":["../../src/utils/costUtils.ts"],"names":[],"mappings":";;AAaA,gDAQC;AArBD,yCAA8C;AAC9C,uCAAuC;AAEvC,0DAA2D;AAE3D;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,YAA0B;IAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACxD,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC/D,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAA0B;IAC/E,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,WAA4B;YACrC,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,OAAO;SACtB,CAAoB;QACrB,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,WAA4B;YACrC,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,aAAa;SAC5B,CAAoB;KACtB,CAAC,CAAA;IAEF,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AACzD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CAAC,WAAmB,EAAE,YAA0B;IACtF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;QAClD,OAAO,EAAE,WAA4B;QACrC,GAAG,EAAE,8BAAgB;QACrB,YAAY,EAAE,aAAa;KAC5B,CAAC,CAAA;IAEF,wEAAwE;IACxE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAC5D,CAAC"}
|
|
@@ -16,11 +16,12 @@ export interface RouterRoute {
|
|
|
16
16
|
* @param tokenIn - The input token address (determines swap direction)
|
|
17
17
|
* @param _tokenOut - The output token address (unused but kept for API clarity)
|
|
18
18
|
* @returns Array of RouterRoute objects for the contract call
|
|
19
|
+
* @throws {Error} If path is empty, too long, or contains invalid pools
|
|
19
20
|
*
|
|
20
21
|
* @example
|
|
21
22
|
* ```typescript
|
|
22
|
-
* const route = await routeService.findRoute(
|
|
23
|
-
* const routerRoutes = encodeRoutePath(route.path,
|
|
23
|
+
* const route = await routeService.findRoute(USDm, CELO)
|
|
24
|
+
* const routerRoutes = encodeRoutePath(route.path, USDm, CELO)
|
|
24
25
|
* // routerRoutes can now be passed to Router.getAmountsOut or Router.swapTokensForTokens
|
|
25
26
|
* ```
|
|
26
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB;AAED
|
|
1
|
+
{"version":3,"file":"pathEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,WAAW,EAAE,CAmEjG"}
|
|
@@ -9,15 +9,29 @@ exports.encodeRoutePath = encodeRoutePath;
|
|
|
9
9
|
* @param tokenIn - The input token address (determines swap direction)
|
|
10
10
|
* @param _tokenOut - The output token address (unused but kept for API clarity)
|
|
11
11
|
* @returns Array of RouterRoute objects for the contract call
|
|
12
|
+
* @throws {Error} If path is empty, too long, or contains invalid pools
|
|
12
13
|
*
|
|
13
14
|
* @example
|
|
14
15
|
* ```typescript
|
|
15
|
-
* const route = await routeService.findRoute(
|
|
16
|
-
* const routerRoutes = encodeRoutePath(route.path,
|
|
16
|
+
* const route = await routeService.findRoute(USDm, CELO)
|
|
17
|
+
* const routerRoutes = encodeRoutePath(route.path, USDm, CELO)
|
|
17
18
|
* // routerRoutes can now be passed to Router.getAmountsOut or Router.swapTokensForTokens
|
|
18
19
|
* ```
|
|
19
20
|
*/
|
|
20
21
|
function encodeRoutePath(path, tokenIn, _tokenOut) {
|
|
22
|
+
// Validate path is not empty
|
|
23
|
+
if (!path || path.length === 0) {
|
|
24
|
+
throw new Error('Internal error: Route path is empty. This should not happen - routes are validated before encoding.');
|
|
25
|
+
}
|
|
26
|
+
// Validate all pools have required structure
|
|
27
|
+
for (let i = 0; i < path.length; i++) {
|
|
28
|
+
const pool = path[i];
|
|
29
|
+
if (!pool.token0 || !pool.token1 || !pool.factoryAddr) {
|
|
30
|
+
throw new Error(`Invalid pool structure at index ${i}: missing required fields. ` +
|
|
31
|
+
`Pool must have token0, token1, and factoryAddr. ` +
|
|
32
|
+
`Got: ${JSON.stringify(pool)}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
21
35
|
const routes = [];
|
|
22
36
|
const tokenInLower = tokenIn.toLowerCase();
|
|
23
37
|
// Check if we need to reverse the path
|
|
@@ -42,7 +56,9 @@ function encodeRoutePath(path, tokenIn, _tokenOut) {
|
|
|
42
56
|
to = pool.token0;
|
|
43
57
|
}
|
|
44
58
|
else {
|
|
45
|
-
throw new Error(`Token ${currentTokenIn} not found in pool ${pool.poolAddr}`
|
|
59
|
+
throw new Error(`Route encoding error: Token ${currentTokenIn} not found in pool ${pool.poolAddr}. ` +
|
|
60
|
+
`Pool contains tokens: ${token0}, ${token1}. ` +
|
|
61
|
+
`This indicates the route path is invalid or tokens don't form a connected path.`);
|
|
46
62
|
}
|
|
47
63
|
routes.push({
|
|
48
64
|
from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathEncoder.js","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pathEncoder.js","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":";;AA6BA,0CAmEC;AApFD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,OAAgB,EAAE,SAAkB;IAChF,6BAA6B;IAC7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAA;IACH,CAAC;IAED,6CAA6C;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,6BAA6B;gBACjE,kDAAkD;gBAClD,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAC/B,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAE1C,uCAAuC;IACvC,kFAAkF;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,iBAAiB,GACrB,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,YAAY,CAAA;IAEpG,uDAAuD;IACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;IAElE,IAAI,cAAc,GAAG,YAAY,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QAExC,8DAA8D;QAC9D,IAAI,IAAa,CAAA;QACjB,IAAI,EAAW,CAAA;QAEf,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,MAAiB,CAAA;YAC7B,EAAE,GAAG,IAAI,CAAC,MAAiB,CAAA;QAC7B,CAAC;aAAM,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,MAAiB,CAAA;YAC7B,EAAE,GAAG,IAAI,CAAC,MAAiB,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,+BAA+B,cAAc,sBAAsB,IAAI,CAAC,QAAQ,IAAI;gBACpF,yBAAyB,MAAM,KAAK,MAAM,IAAI;gBAC9C,iFAAiF,CAClF,CAAA;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,WAAsB;SACrC,CAAC,CAAA;QAEF,2DAA2D;QAC3D,cAAc,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;IACnC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|