curvance 4.1.2 → 5.1.0
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 +65 -10
- package/dist/abis/OptimizerReader.json +43 -45
- package/dist/abis/ProtocolReader.json +279 -55
- package/dist/chains/arbitrum.js +3 -3
- package/dist/chains/arbitrum.js.map +1 -1
- package/dist/classes/Api.d.ts +2 -2
- package/dist/classes/Api.d.ts.map +1 -1
- package/dist/classes/Api.js +87 -14
- package/dist/classes/Api.js.map +1 -1
- package/dist/classes/BorrowableCToken.d.ts +9 -1
- package/dist/classes/BorrowableCToken.d.ts.map +1 -1
- package/dist/classes/BorrowableCToken.js +67 -12
- package/dist/classes/BorrowableCToken.js.map +1 -1
- package/dist/classes/CToken.d.ts +210 -21
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +692 -284
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/Calldata.d.ts +2 -2
- package/dist/classes/Calldata.d.ts.map +1 -1
- package/dist/classes/Calldata.js +6 -2
- package/dist/classes/Calldata.js.map +1 -1
- package/dist/classes/DexAggregators/IDexAgg.d.ts +1 -1
- package/dist/classes/DexAggregators/Kuru.js +1 -1
- package/dist/classes/DexAggregators/Kuru.js.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +112 -61
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/DexAggregators/MultiDexAgg.d.ts +2 -2
- package/dist/classes/DexAggregators/MultiDexAgg.d.ts.map +1 -1
- package/dist/classes/DexAggregators/MultiDexAgg.js +30 -18
- package/dist/classes/DexAggregators/MultiDexAgg.js.map +1 -1
- package/dist/classes/DexAggregators/UnsupportedDexAgg.d.ts +19 -0
- package/dist/classes/DexAggregators/UnsupportedDexAgg.d.ts.map +1 -0
- package/dist/classes/DexAggregators/UnsupportedDexAgg.js +29 -0
- package/dist/classes/DexAggregators/UnsupportedDexAgg.js.map +1 -0
- package/dist/classes/DexAggregators/helpers.d.ts +30 -0
- package/dist/classes/DexAggregators/helpers.d.ts.map +1 -0
- package/dist/classes/DexAggregators/helpers.js +57 -0
- package/dist/classes/DexAggregators/helpers.js.map +1 -0
- package/dist/classes/DexAggregators/index.d.ts +2 -0
- package/dist/classes/DexAggregators/index.d.ts.map +1 -1
- package/dist/classes/DexAggregators/index.js +1 -0
- package/dist/classes/DexAggregators/index.js.map +1 -1
- package/dist/classes/ERC20.d.ts +3 -3
- package/dist/classes/ERC20.d.ts.map +1 -1
- package/dist/classes/ERC20.js +26 -10
- package/dist/classes/ERC20.js.map +1 -1
- package/dist/classes/FormatConverter.d.ts.map +1 -1
- package/dist/classes/FormatConverter.js +4 -1
- package/dist/classes/FormatConverter.js.map +1 -1
- package/dist/classes/Market.d.ts +46 -8
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +342 -111
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/NativeToken.d.ts +2 -2
- package/dist/classes/NativeToken.d.ts.map +1 -1
- package/dist/classes/NativeToken.js +21 -7
- package/dist/classes/NativeToken.js.map +1 -1
- package/dist/classes/OptimizerReader.d.ts +15 -7
- package/dist/classes/OptimizerReader.d.ts.map +1 -1
- package/dist/classes/OptimizerReader.js +108 -30
- package/dist/classes/OptimizerReader.js.map +1 -1
- package/dist/classes/OracleManager.d.ts.map +1 -1
- package/dist/classes/OracleManager.js +11 -4
- package/dist/classes/OracleManager.js.map +1 -1
- package/dist/classes/PositionManager.d.ts.map +1 -1
- package/dist/classes/PositionManager.js +1 -3
- package/dist/classes/PositionManager.js.map +1 -1
- package/dist/classes/ProtocolReader.d.ts +30 -9
- package/dist/classes/ProtocolReader.d.ts.map +1 -1
- package/dist/classes/ProtocolReader.js +158 -138
- package/dist/classes/ProtocolReader.js.map +1 -1
- package/dist/classes/Zapper.d.ts +5 -5
- package/dist/classes/Zapper.d.ts.map +1 -1
- package/dist/classes/Zapper.js +21 -18
- package/dist/classes/Zapper.js.map +1 -1
- package/dist/contracts/monad-mainnet.json +1 -1
- package/dist/feePolicy.d.ts +2 -0
- package/dist/feePolicy.d.ts.map +1 -1
- package/dist/feePolicy.js +19 -0
- package/dist/feePolicy.js.map +1 -1
- package/dist/format/borrow.d.ts.map +1 -1
- package/dist/format/borrow.js +7 -1
- package/dist/format/borrow.js.map +1 -1
- package/dist/format/health.d.ts +3 -2
- package/dist/format/health.d.ts.map +1 -1
- package/dist/format/health.js +10 -9
- package/dist/format/health.js.map +1 -1
- package/dist/format/leverage.js +5 -4
- package/dist/format/leverage.js.map +1 -1
- package/dist/helpers.d.ts +14 -11
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +171 -52
- package/dist/helpers.js.map +1 -1
- package/dist/integrations/merkl.d.ts +2 -1
- package/dist/integrations/merkl.d.ts.map +1 -1
- package/dist/integrations/merkl.js +199 -4
- package/dist/integrations/merkl.js.map +1 -1
- package/dist/integrations/snapshot.d.ts +28 -24
- package/dist/integrations/snapshot.d.ts.map +1 -1
- package/dist/integrations/snapshot.js +106 -42
- package/dist/integrations/snapshot.js.map +1 -1
- package/dist/retry-provider.d.ts +6 -0
- package/dist/retry-provider.d.ts.map +1 -1
- package/dist/retry-provider.js +103 -11
- package/dist/retry-provider.js.map +1 -1
- package/dist/setup.d.ts +8 -6
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +125 -45
- package/dist/setup.js.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +13 -7
- package/dist/validation.js.map +1 -1
- package/package.json +6 -3
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.KyberSwap = void 0;
|
|
7
4
|
const setup_1 = require("../../setup");
|
|
8
5
|
const helpers_1 = require("../../helpers");
|
|
9
|
-
const ERC20_1 = require("../ERC20");
|
|
10
|
-
const FormatConverter_1 = __importDefault(require("../FormatConverter"));
|
|
11
6
|
const validation_1 = require("../../validation");
|
|
12
7
|
const ethers_1 = require("ethers");
|
|
8
|
+
const helpers_2 = require("./helpers");
|
|
13
9
|
// ── Calldata validation ─────────────────────────────────────────────
|
|
14
10
|
// The KyberSwap API returns an opaque calldata blob. We trust the API to
|
|
15
11
|
// embed the fee params we requested, but verify before submitting the tx.
|
|
@@ -20,31 +16,60 @@ const ethers_1 = require("ethers");
|
|
|
20
16
|
* API always sets on Monad. Router-inert (consumed by executor only).
|
|
21
17
|
* Must match KyberSwapChecker.REQUIRED_FLAGS on-chain. */
|
|
22
18
|
const REQUIRED_FLAGS = 0x280n;
|
|
23
|
-
|
|
19
|
+
const CHECKER_FEE_BPS = 4n;
|
|
20
|
+
const KYBER_SWAP_SELECTOR = '0xe21fd0e9';
|
|
21
|
+
/** ABI type string for KyberSwap MetaAggregationRouterV2's SwapExecutionParams struct. */
|
|
24
22
|
const SWAP_PARAMS_TYPE = 'tuple(address callTarget, address approveTarget, ' +
|
|
23
|
+
'bytes targetData, ' +
|
|
25
24
|
'tuple(address srcToken, address dstToken, address[] srcReceivers, ' +
|
|
26
25
|
'uint256[] srcAmounts, address[] feeReceivers, uint256[] feeAmounts, ' +
|
|
27
26
|
'address dstReceiver, uint256 amount, uint256 minReturnAmount, ' +
|
|
28
27
|
'uint256 flags, bytes permit) desc, ' +
|
|
29
|
-
'bytes
|
|
28
|
+
'bytes clientData)';
|
|
29
|
+
function normalizeCalldataAddress(value, context) {
|
|
30
|
+
return (0, validation_1.validateAddress)(value, context).toLowerCase();
|
|
31
|
+
}
|
|
32
|
+
function validateEqualAddress(actual, expected, context) {
|
|
33
|
+
if (normalizeCalldataAddress(actual, context) !== normalizeCalldataAddress(expected, `${context} expected`)) {
|
|
34
|
+
throw new Error(`KyberSwap calldata ${context}=${actual}, expected ${expected}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function validateRecipientAddress(actual, expected) {
|
|
38
|
+
const normalizedActual = normalizeCalldataAddress(actual, 'dstReceiver');
|
|
39
|
+
if (normalizedActual === helpers_1.EMPTY_ADDRESS.toLowerCase()) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (normalizedActual !== normalizeCalldataAddress(expected, 'dstReceiver expected')) {
|
|
43
|
+
throw new Error(`KyberSwap calldata dstReceiver=${actual}, expected ${expected}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
30
46
|
/**
|
|
31
|
-
* Decode and validate
|
|
47
|
+
* Decode and validate checker-bound fields in KyberSwap swap calldata.
|
|
32
48
|
* Catches API misconfigurations before the tx hits the on-chain checker.
|
|
33
49
|
*
|
|
34
50
|
* @param calldata - Raw calldata from KyberSwap build API
|
|
35
|
-
* @param
|
|
36
|
-
* @param feeReceiver - Expected fee receiver address (undefined to skip)
|
|
51
|
+
* @param expected - Swap parameters the build calldata must preserve
|
|
37
52
|
*/
|
|
38
|
-
function validateSwapCalldata(calldata,
|
|
39
|
-
// No fee configured — nothing to validate in the calldata
|
|
40
|
-
if (!feeBps || feeBps === 0n || !feeReceiver)
|
|
41
|
-
return;
|
|
53
|
+
function validateSwapCalldata(calldata, expected) {
|
|
42
54
|
try {
|
|
55
|
+
const selector = calldata.slice(0, 10).toLowerCase();
|
|
56
|
+
if (selector !== KYBER_SWAP_SELECTOR) {
|
|
57
|
+
throw new Error(`KyberSwap calldata selector=${selector}, expected ${KYBER_SWAP_SELECTOR}`);
|
|
58
|
+
}
|
|
43
59
|
// Strip 4-byte selector (0x + 8 hex chars = 10 chars)
|
|
44
60
|
const encoded = '0x' + calldata.slice(10);
|
|
45
61
|
const coder = ethers_1.AbiCoder.defaultAbiCoder();
|
|
46
62
|
const [execution] = coder.decode([SWAP_PARAMS_TYPE], encoded);
|
|
47
63
|
const desc = execution.desc;
|
|
64
|
+
validateEqualAddress(desc.srcToken, expected.tokenIn, 'srcToken');
|
|
65
|
+
validateEqualAddress(desc.dstToken, expected.tokenOut, 'dstToken');
|
|
66
|
+
validateRecipientAddress(desc.dstReceiver, expected.recipient);
|
|
67
|
+
if (BigInt(desc.amount) !== expected.amount) {
|
|
68
|
+
throw new Error(`KyberSwap calldata amount=${desc.amount}, expected ${expected.amount}`);
|
|
69
|
+
}
|
|
70
|
+
if (BigInt(desc.minReturnAmount) < expected.minReturnAmount) {
|
|
71
|
+
throw new Error(`KyberSwap calldata minReturnAmount=${desc.minReturnAmount}, expected at least ${expected.minReturnAmount}`);
|
|
72
|
+
}
|
|
48
73
|
// Validate _FEE_IN_BPS flag — without it, feeAmounts[0]=4 means
|
|
49
74
|
// 4 wei instead of 4 BPS
|
|
50
75
|
const flags = BigInt(desc.flags);
|
|
@@ -53,17 +78,44 @@ function validateSwapCalldata(calldata, feeBps, feeReceiver) {
|
|
|
53
78
|
`expected ${REQUIRED_FLAGS} (0x${REQUIRED_FLAGS.toString(16)}). ` +
|
|
54
79
|
`Without _FEE_IN_BPS, fee is interpreted as absolute tokens.`);
|
|
55
80
|
}
|
|
81
|
+
if (normalizeCalldataAddress(execution.approveTarget, 'approveTarget') !== helpers_1.EMPTY_ADDRESS.toLowerCase()) {
|
|
82
|
+
throw new Error(`KyberSwap calldata approveTarget=${execution.approveTarget}, expected ${helpers_1.EMPTY_ADDRESS}`);
|
|
83
|
+
}
|
|
84
|
+
if (normalizeCalldataAddress(execution.callTarget, 'callTarget') === helpers_1.EMPTY_ADDRESS.toLowerCase()) {
|
|
85
|
+
throw new Error(`KyberSwap calldata callTarget cannot be ${helpers_1.EMPTY_ADDRESS}`);
|
|
86
|
+
}
|
|
87
|
+
if (execution.targetData.length === 0 || execution.targetData === '0x') {
|
|
88
|
+
throw new Error('KyberSwap calldata targetData cannot be empty');
|
|
89
|
+
}
|
|
90
|
+
if (desc.permit.length !== 0 && desc.permit !== '0x') {
|
|
91
|
+
throw new Error('KyberSwap calldata permit must be empty');
|
|
92
|
+
}
|
|
93
|
+
if (desc.srcReceivers.length === 0 || desc.srcReceivers.length !== desc.srcAmounts.length) {
|
|
94
|
+
throw new Error(`KyberSwap calldata srcReceivers/srcAmounts length mismatch: ${desc.srcReceivers.length}/${desc.srcAmounts.length}`);
|
|
95
|
+
}
|
|
96
|
+
for (const receiver of desc.srcReceivers) {
|
|
97
|
+
if (normalizeCalldataAddress(receiver, 'srcReceiver') === helpers_1.EMPTY_ADDRESS.toLowerCase()) {
|
|
98
|
+
throw new Error(`KyberSwap calldata srcReceiver cannot be ${helpers_1.EMPTY_ADDRESS}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const totalSourceAmount = desc.srcAmounts.reduce((total, amount) => total + BigInt(amount), 0n);
|
|
102
|
+
if (totalSourceAmount !== expected.amount) {
|
|
103
|
+
throw new Error(`KyberSwap calldata srcAmounts total=${totalSourceAmount}, expected ${expected.amount}`);
|
|
104
|
+
}
|
|
56
105
|
// Validate fee receiver
|
|
57
106
|
if (desc.feeReceivers.length !== 1) {
|
|
58
107
|
throw new Error(`KyberSwap calldata has ${desc.feeReceivers.length} fee receivers, expected 1`);
|
|
59
108
|
}
|
|
60
|
-
if (
|
|
109
|
+
if (!expected.feeReceiver) {
|
|
110
|
+
throw new Error('KyberSwap calldata feeReceiver expected but no fee receiver was configured');
|
|
111
|
+
}
|
|
112
|
+
if (desc.feeReceivers[0].toLowerCase() !== expected.feeReceiver.toLowerCase()) {
|
|
61
113
|
throw new Error(`KyberSwap calldata feeReceiver=${desc.feeReceivers[0]}, ` +
|
|
62
|
-
`expected ${feeReceiver}`);
|
|
114
|
+
`expected ${expected.feeReceiver}`);
|
|
63
115
|
}
|
|
64
116
|
// Validate fee amount
|
|
65
|
-
if (desc.feeAmounts.length !== 1 || BigInt(desc.feeAmounts[0]) !== feeBps) {
|
|
66
|
-
throw new Error(`KyberSwap calldata feeAmount=${desc.feeAmounts[0]}, expected ${feeBps}`);
|
|
117
|
+
if (desc.feeAmounts.length !== 1 || BigInt(desc.feeAmounts[0]) !== expected.feeBps) {
|
|
118
|
+
throw new Error(`KyberSwap calldata feeAmount=${desc.feeAmounts[0]}, expected ${expected.feeBps}`);
|
|
67
119
|
}
|
|
68
120
|
}
|
|
69
121
|
catch (e) {
|
|
@@ -71,8 +123,16 @@ function validateSwapCalldata(calldata, feeBps, feeReceiver) {
|
|
|
71
123
|
if (e.message?.startsWith('KyberSwap calldata'))
|
|
72
124
|
throw e;
|
|
73
125
|
// ABI decode failure — calldata structure doesn't match expected format.
|
|
74
|
-
//
|
|
75
|
-
|
|
126
|
+
// The on-chain checker remains the final guard, but the SDK should
|
|
127
|
+
// fail before returning malformed checker-rejected calldata.
|
|
128
|
+
throw new Error(`KyberSwap calldata could not be decoded for fee validation: ${e.message}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function validateCheckerFeePolicy(dao, feeBps, feeReceiver) {
|
|
132
|
+
if (feeBps !== CHECKER_FEE_BPS || !feeReceiver || feeReceiver.toLowerCase() !== dao.toLowerCase()) {
|
|
133
|
+
throw new Error(`KyberSwap checker requires feeBps=${CHECKER_FEE_BPS} and feeReceiver=${dao}; ` +
|
|
134
|
+
`got feeBps=${feeBps?.toString() ?? "undefined"} ` +
|
|
135
|
+
`feeReceiver=${feeReceiver ?? "undefined"}`);
|
|
76
136
|
}
|
|
77
137
|
}
|
|
78
138
|
;
|
|
@@ -93,47 +153,29 @@ class KyberSwap {
|
|
|
93
153
|
this.api = `${api}/${this.chain}`;
|
|
94
154
|
}
|
|
95
155
|
async getAvailableTokens(provider, query = null, account = null, page = 1, pageSize = 25) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
tokens_set.add(asset.address);
|
|
105
|
-
if (query) {
|
|
106
|
-
const lowerQuery = query.toLowerCase();
|
|
107
|
-
if (!token.name.toLowerCase().includes(lowerQuery) && !token.symbol.toLowerCase().includes(lowerQuery)) {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
zap_tokens.push({
|
|
112
|
-
interface: token.getAsset(true),
|
|
113
|
-
type: 'simple',
|
|
114
|
-
quote: async (tokenIn, tokenOut, amount, slippage) => {
|
|
115
|
-
const wallet = account ?? helpers_1.EMPTY_ADDRESS;
|
|
116
|
-
const erc20in = new ERC20_1.ERC20(provider, tokenIn, undefined, undefined, null);
|
|
117
|
-
const decimalsIn = erc20in.decimals ?? await erc20in.contract.decimals();
|
|
118
|
-
const amount_bigint = (0, helpers_1.toBigInt)(amount, decimalsIn);
|
|
119
|
-
const erc20Out = new ERC20_1.ERC20(provider, tokenOut, undefined, undefined, null);
|
|
120
|
-
const decimalsOut = erc20Out.decimals ?? await erc20Out.contract.decimals();
|
|
121
|
-
const results = await this.quote(wallet, tokenIn, tokenOut, amount_bigint, FormatConverter_1.default.percentageToBps(slippage));
|
|
122
|
-
return {
|
|
123
|
-
minOut_raw: results.min_out,
|
|
124
|
-
output_raw: results.out,
|
|
125
|
-
minOut: FormatConverter_1.default.bigIntToDecimal(results.min_out, decimalsOut),
|
|
126
|
-
output: FormatConverter_1.default.bigIntToDecimal(results.out, decimalsOut),
|
|
127
|
-
extra: results.raw
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
});
|
|
156
|
+
void page;
|
|
157
|
+
void pageSize;
|
|
158
|
+
return (0, helpers_2.buildLocalSimpleZapTokens)(setup_1.all_markets, provider, query, account, (wallet, tokenIn, tokenOut, amount, formattedSlippage, feeBps, feeReceiver) => this.quote(wallet, tokenIn, tokenOut, amount, formattedSlippage, feeBps, feeReceiver), (tokenIn, tokenOut, amount) => {
|
|
159
|
+
const feePolicy = setup_1.setup_config?.feePolicy;
|
|
160
|
+
if (feePolicy == null) {
|
|
161
|
+
return { feeBps: 0n };
|
|
131
162
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
163
|
+
const feeBps = feePolicy.getFeeBps({
|
|
164
|
+
operation: 'zap',
|
|
165
|
+
inputToken: tokenIn,
|
|
166
|
+
outputToken: tokenOut,
|
|
167
|
+
inputAmount: amount,
|
|
168
|
+
currentLeverage: null,
|
|
169
|
+
targetLeverage: null,
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
feeBps,
|
|
173
|
+
feeReceiver: feeBps > 0n ? feePolicy.feeReceiver : undefined,
|
|
174
|
+
};
|
|
175
|
+
});
|
|
135
176
|
}
|
|
136
177
|
async quoteAction(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver) {
|
|
178
|
+
const actionSlippage = (0, helpers_1.toContractSwapSlippage)(slippage, feeBps);
|
|
137
179
|
const quote = await this.quote(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver);
|
|
138
180
|
// Fee-aware slippage expansion: KyberSwap deducts its `currency_in`
|
|
139
181
|
// fee before the swap executes, so on-chain `_swapSafe` measures
|
|
@@ -147,17 +189,18 @@ class KyberSwap {
|
|
|
147
189
|
inputAmount: BigInt(amount),
|
|
148
190
|
outputToken: tokenOut,
|
|
149
191
|
target: quote.to,
|
|
150
|
-
slippage:
|
|
192
|
+
slippage: actionSlippage,
|
|
151
193
|
call: quote.calldata
|
|
152
194
|
};
|
|
153
195
|
return { action, quote };
|
|
154
196
|
}
|
|
155
197
|
async quoteMin(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver) {
|
|
156
198
|
const quote = await this.quote(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver);
|
|
157
|
-
return quote.
|
|
199
|
+
return quote.min_out;
|
|
158
200
|
}
|
|
159
201
|
async quote(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver) {
|
|
160
202
|
(0, validation_1.validateSlippageBps)(slippage, 'KyberSwap quote');
|
|
203
|
+
validateCheckerFeePolicy(this.dao, feeBps, feeReceiver);
|
|
161
204
|
const params = new URLSearchParams({
|
|
162
205
|
tokenIn,
|
|
163
206
|
tokenOut,
|
|
@@ -222,7 +265,15 @@ class KyberSwap {
|
|
|
222
265
|
const validatedRouter = (0, validation_1.validateRouterAddress)(build_data.data.routerAddress, this.router, 'KyberSwap');
|
|
223
266
|
// Validate that the API actually embedded the fee params we requested.
|
|
224
267
|
// Without this, a misconfigured API response silently reverts on-chain.
|
|
225
|
-
validateSwapCalldata(build_data.data.data,
|
|
268
|
+
validateSwapCalldata(build_data.data.data, {
|
|
269
|
+
tokenIn,
|
|
270
|
+
tokenOut,
|
|
271
|
+
amount,
|
|
272
|
+
recipient: wallet,
|
|
273
|
+
minReturnAmount: min_out,
|
|
274
|
+
feeBps: feeBps ?? 0n,
|
|
275
|
+
feeReceiver,
|
|
276
|
+
});
|
|
226
277
|
return {
|
|
227
278
|
to: validatedRouter,
|
|
228
279
|
calldata: build_data.data.data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KyberSwap.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/KyberSwap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KyberSwap.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/KyberSwap.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,12 +46,12 @@ export declare class MultiDexAgg implements IDexAgg {
|
|
|
46
46
|
/**
|
|
47
47
|
* Returns the minimum output from the best quote.
|
|
48
48
|
*/
|
|
49
|
-
quoteMin(wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint, feeBps?: bigint, feeReceiver?: address): Promise<
|
|
49
|
+
quoteMin(wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint, feeBps?: bigint, feeReceiver?: address): Promise<bigint>;
|
|
50
50
|
/**
|
|
51
51
|
* Returns the best quote across all aggregators.
|
|
52
52
|
*/
|
|
53
53
|
quote(wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint, feeBps?: bigint, feeReceiver?: address): Promise<Quote>;
|
|
54
|
-
private
|
|
54
|
+
private _bestQuoteByValue;
|
|
55
55
|
private _bestQuoteAction;
|
|
56
56
|
/**
|
|
57
57
|
* Wraps a promise with a timeout.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiDexAgg.d.ts","sourceRoot":"","sources":["../../../src/classes/DexAggregators/MultiDexAgg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,sBAAsB,EAAc,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,OAAO,EAAE,EAAE,KAAK,EAAa,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAC9B,4FAA4F;IAC5F,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"MultiDexAgg.d.ts","sourceRoot":"","sources":["../../../src/classes/DexAggregators/MultiDexAgg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,sBAAsB,EAAc,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,OAAO,EAAE,EAAE,KAAK,EAAa,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAC9B,4FAA4F;IAC5F,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,YAAW,OAAO;IACvC,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAA8B;IAE5C,yFAAyF;IACzF,IAAI,GAAG,IAAI,OAAO,CAA6B;IAC/C,IAAI,MAAM,IAAI,OAAO,CAAgC;gBAEzC,WAAW,EAAE,OAAO,EAAE,EAAE,MAAM,GAAE,iBAAsB;IAalE;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,GAAE,MAAM,GAAG,IAAW,EAC3B,OAAO,GAAE,OAAO,GAAG,IAAW,GAC/B,OAAO,CAAC,QAAQ,EAAE,CAAC;IA0BtB;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IASvL;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB5J;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;YAsB1I,iBAAiB;YA8BjB,gBAAgB;IAuB9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,SAAS;IAgDjB;;OAEG;IACH,OAAO,CAAC,eAAe;CAmB1B"}
|
|
@@ -75,8 +75,8 @@ class MultiDexAgg {
|
|
|
75
75
|
if (this.aggregators.length === 1) {
|
|
76
76
|
return this.primary.quoteMin(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver);
|
|
77
77
|
}
|
|
78
|
-
const best = await this.
|
|
79
|
-
return best.quote.
|
|
78
|
+
const best = await this._bestQuoteByValue(wallet, tokenIn, tokenOut, amount, slippage, (quote) => quote.min_out, feeBps, feeReceiver);
|
|
79
|
+
return best.quote.min_out;
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* Returns the best quote across all aggregators.
|
|
@@ -85,19 +85,19 @@ class MultiDexAgg {
|
|
|
85
85
|
if (this.aggregators.length === 1) {
|
|
86
86
|
return this.primary.quote(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver);
|
|
87
87
|
}
|
|
88
|
-
const best = await this.
|
|
88
|
+
const best = await this._bestQuoteByValue(wallet, tokenIn, tokenOut, amount, slippage, (quote) => quote.out, feeBps, feeReceiver);
|
|
89
89
|
return best.quote;
|
|
90
90
|
}
|
|
91
91
|
// -----------------------------------------------------------------------
|
|
92
92
|
// Internal: fan-out for quote()
|
|
93
93
|
// -----------------------------------------------------------------------
|
|
94
|
-
async
|
|
94
|
+
async _bestQuoteByValue(wallet, tokenIn, tokenOut, amount, slippage, selectValue, feeBps, feeReceiver) {
|
|
95
95
|
const results = await Promise.allSettled(this.aggregators.map(agg => this._withTimeout(agg.quote(wallet, tokenIn, tokenOut, amount, slippage, feeBps, feeReceiver)
|
|
96
96
|
.then(quote => {
|
|
97
97
|
this._validateQuote(quote, agg);
|
|
98
98
|
return { aggregator: agg, quote };
|
|
99
99
|
}), agg)));
|
|
100
|
-
return this._pickBest(results, tokenIn, tokenOut, amount);
|
|
100
|
+
return this._pickBest(results, tokenIn, tokenOut, amount, selectValue);
|
|
101
101
|
}
|
|
102
102
|
// -----------------------------------------------------------------------
|
|
103
103
|
// Internal: fan-out for quoteAction()
|
|
@@ -108,7 +108,7 @@ class MultiDexAgg {
|
|
|
108
108
|
this._validateQuote(quote, agg);
|
|
109
109
|
return { aggregator: agg, action, quote };
|
|
110
110
|
}), agg)));
|
|
111
|
-
return this._pickBest(results, tokenIn, tokenOut, amount);
|
|
111
|
+
return this._pickBest(results, tokenIn, tokenOut, amount, (quote) => quote.min_out);
|
|
112
112
|
}
|
|
113
113
|
// -----------------------------------------------------------------------
|
|
114
114
|
// Shared helpers
|
|
@@ -117,21 +117,32 @@ class MultiDexAgg {
|
|
|
117
117
|
* Wraps a promise with a timeout.
|
|
118
118
|
*/
|
|
119
119
|
_withTimeout(promise, agg) {
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
let timeoutId;
|
|
121
|
+
const timeout = new Promise((_, reject) => {
|
|
122
|
+
timeoutId = setTimeout(() => reject(new Error(`${agg.constructor.name} timed out after ${this.config.quoteTimeoutMs}ms`)), this.config.quoteTimeoutMs);
|
|
123
|
+
});
|
|
124
|
+
return Promise.race([promise, timeout]).finally(() => {
|
|
125
|
+
if (timeoutId != undefined) {
|
|
126
|
+
clearTimeout(timeoutId);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
122
129
|
}
|
|
123
130
|
/**
|
|
124
131
|
* Validates a quote response has the required fields.
|
|
125
132
|
*/
|
|
126
133
|
_validateQuote(quote, agg) {
|
|
127
|
-
if (
|
|
134
|
+
if (quote == null ||
|
|
135
|
+
quote.out == undefined ||
|
|
136
|
+
quote.min_out == undefined ||
|
|
137
|
+
quote.calldata == undefined ||
|
|
138
|
+
quote.to == undefined) {
|
|
128
139
|
throw new Error(`${agg.constructor.name} returned incomplete quote`);
|
|
129
140
|
}
|
|
130
141
|
}
|
|
131
142
|
/**
|
|
132
143
|
* From settled results, filter outliers and pick the best output.
|
|
133
144
|
*/
|
|
134
|
-
_pickBest(results, tokenIn, tokenOut, amount) {
|
|
145
|
+
_pickBest(results, tokenIn, tokenOut, amount, selectValue) {
|
|
135
146
|
const quotes = [];
|
|
136
147
|
const errors = [];
|
|
137
148
|
for (let i = 0; i < results.length; i++) {
|
|
@@ -152,13 +163,13 @@ class MultiDexAgg {
|
|
|
152
163
|
}
|
|
153
164
|
// Filter outliers if enough data points
|
|
154
165
|
const validQuotes = quotes.length >= 3
|
|
155
|
-
? this._filterOutliers(quotes)
|
|
166
|
+
? this._filterOutliers(quotes, selectValue)
|
|
156
167
|
: quotes;
|
|
157
168
|
const candidates = validQuotes.length > 0 ? validQuotes : quotes;
|
|
158
|
-
// Return highest
|
|
169
|
+
// Return highest selected value.
|
|
159
170
|
let best = candidates[0];
|
|
160
171
|
for (const candidate of candidates) {
|
|
161
|
-
if (candidate.quote
|
|
172
|
+
if (selectValue(candidate.quote) > selectValue(best.quote)) {
|
|
162
173
|
best = candidate;
|
|
163
174
|
}
|
|
164
175
|
}
|
|
@@ -167,16 +178,17 @@ class MultiDexAgg {
|
|
|
167
178
|
/**
|
|
168
179
|
* Filters quotes whose output deviates more than the threshold from the median.
|
|
169
180
|
*/
|
|
170
|
-
_filterOutliers(quotes) {
|
|
171
|
-
const outputs = quotes.map(
|
|
181
|
+
_filterOutliers(quotes, selectValue) {
|
|
182
|
+
const outputs = quotes.map((quote) => selectValue(quote.quote)).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
|
|
172
183
|
const median = outputs[Math.floor(outputs.length / 2)];
|
|
173
184
|
if (median === 0n)
|
|
174
185
|
return quotes;
|
|
175
186
|
const threshold = BigInt(this.config.outlierThresholdPercent);
|
|
176
187
|
return quotes.filter(q => {
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
188
|
+
const value = selectValue(q.quote);
|
|
189
|
+
const diff = value > median
|
|
190
|
+
? value - median
|
|
191
|
+
: median - value;
|
|
180
192
|
return (diff * 100n / median) <= threshold;
|
|
181
193
|
});
|
|
182
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiDexAgg.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/MultiDexAgg.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MultiDexAgg.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/MultiDexAgg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { address, curvance_read_provider } from "../../types";
|
|
2
|
+
import { ZapToken } from "../CToken";
|
|
3
|
+
import { Swap } from "../Zapper";
|
|
4
|
+
import IDexAgg, { Quote, QuoteArgs } from "./IDexAgg";
|
|
5
|
+
export declare class UnsupportedDexAgg implements IDexAgg {
|
|
6
|
+
private readonly chain;
|
|
7
|
+
dao: address;
|
|
8
|
+
router: address;
|
|
9
|
+
constructor(chain: string);
|
|
10
|
+
getAvailableTokens(_provider: curvance_read_provider, _query?: string | null, _account?: address | null): Promise<ZapToken[]>;
|
|
11
|
+
quoteAction(..._args: QuoteArgs): Promise<{
|
|
12
|
+
action: Swap;
|
|
13
|
+
quote: Quote;
|
|
14
|
+
}>;
|
|
15
|
+
quoteMin(..._args: QuoteArgs): Promise<bigint>;
|
|
16
|
+
quote(..._args: QuoteArgs): Promise<Quote>;
|
|
17
|
+
private unsupportedError;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=UnsupportedDexAgg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsupportedDexAgg.d.ts","sourceRoot":"","sources":["../../../src/classes/DexAggregators/UnsupportedDexAgg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtD,qBAAa,iBAAkB,YAAW,OAAO;IAIjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,GAAG,EAAE,OAAO,CAAiB;IAC7B,MAAM,EAAE,OAAO,CAAiB;gBAEH,KAAK,EAAE,MAAM;IAEpC,kBAAkB,CACpB,SAAS,EAAE,sBAAsB,EACjC,MAAM,GAAE,MAAM,GAAG,IAAW,EAC5B,QAAQ,GAAE,OAAO,GAAG,IAAW,GAChC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIhB,WAAW,CAAC,GAAG,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IAIzE,QAAQ,CAAC,GAAG,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9C,KAAK,CAAC,GAAG,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAIhD,OAAO,CAAC,gBAAgB;CAG3B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnsupportedDexAgg = void 0;
|
|
4
|
+
const helpers_1 = require("../../helpers");
|
|
5
|
+
class UnsupportedDexAgg {
|
|
6
|
+
chain;
|
|
7
|
+
dao = helpers_1.EMPTY_ADDRESS;
|
|
8
|
+
router = helpers_1.EMPTY_ADDRESS;
|
|
9
|
+
constructor(chain) {
|
|
10
|
+
this.chain = chain;
|
|
11
|
+
}
|
|
12
|
+
async getAvailableTokens(_provider, _query = null, _account = null) {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
async quoteAction(..._args) {
|
|
16
|
+
throw this.unsupportedError();
|
|
17
|
+
}
|
|
18
|
+
async quoteMin(..._args) {
|
|
19
|
+
throw this.unsupportedError();
|
|
20
|
+
}
|
|
21
|
+
async quote(..._args) {
|
|
22
|
+
throw this.unsupportedError();
|
|
23
|
+
}
|
|
24
|
+
unsupportedError() {
|
|
25
|
+
return new Error(`DEX aggregation is not configured for ${this.chain}.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.UnsupportedDexAgg = UnsupportedDexAgg;
|
|
29
|
+
//# sourceMappingURL=UnsupportedDexAgg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsupportedDexAgg.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/UnsupportedDexAgg.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAM9C,MAAa,iBAAiB;IAIG;IAH7B,GAAG,GAAY,uBAAa,CAAC;IAC7B,MAAM,GAAY,uBAAa,CAAC;IAEhC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,KAAK,CAAC,kBAAkB,CACpB,SAAiC,EACjC,SAAwB,IAAI,EAC5B,WAA2B,IAAI;QAE/B,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAG,KAAgB;QACjC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAgB;QAC9B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAG,KAAgB;QAC3B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;IAEO,gBAAgB;QACpB,OAAO,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAC7E,CAAC;CACJ;AA7BD,8CA6BC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { address, Percentage, TokenInput, curvance_read_provider } from "../../types";
|
|
2
|
+
import { ZapToken } from "../CToken";
|
|
3
|
+
import { ERC20 } from "../ERC20";
|
|
4
|
+
import type { Quote } from "./IDexAgg";
|
|
5
|
+
type MarketTokenSource = {
|
|
6
|
+
name: string;
|
|
7
|
+
symbol: string;
|
|
8
|
+
getAsset: (asErc20: true) => ERC20;
|
|
9
|
+
};
|
|
10
|
+
type MarketSource = {
|
|
11
|
+
tokens: MarketTokenSource[];
|
|
12
|
+
};
|
|
13
|
+
type ZapQuoteResult = Quote & {
|
|
14
|
+
raw?: any;
|
|
15
|
+
};
|
|
16
|
+
type QuoteFn = (wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint, feeBps?: bigint, feeReceiver?: address) => Promise<ZapQuoteResult>;
|
|
17
|
+
type QuoteFeeResolver = (tokenIn: string, tokenOut: string, amount: bigint) => {
|
|
18
|
+
feeBps: bigint;
|
|
19
|
+
feeReceiver?: address | undefined;
|
|
20
|
+
};
|
|
21
|
+
export declare function createSimpleZapQuote(provider: curvance_read_provider, account: address | null, quoteFn: QuoteFn, resolveFee?: QuoteFeeResolver): (tokenIn: string, tokenOut: string, amount: TokenInput, slippage: Percentage) => Promise<{
|
|
22
|
+
minOut_raw: bigint;
|
|
23
|
+
output_raw: bigint;
|
|
24
|
+
minOut: import("decimal.js").Decimal;
|
|
25
|
+
output: import("decimal.js").Decimal;
|
|
26
|
+
extra: any;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function buildLocalSimpleZapTokens(markets: MarketSource[], provider: curvance_read_provider, query: string | null, account: address | null, quoteFn: QuoteFn, resolveFee?: QuoteFeeResolver): ZapToken[];
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/classes/DexAggregators/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,KAAK,iBAAiB,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,KAAK,CAAC;CACtC,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,cAAc,GAAG,KAAK,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAE5C,KAAK,OAAO,GAAG,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,OAAO,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7B,KAAK,gBAAgB,GAAG,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,KACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,CAAC;AAE3D,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,gBAAgB,IAGzB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,QAAQ,UAAU,EAClB,UAAU,UAAU;;;;;;GA4B3B;AAED,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,gBAAgB,GAC9B,QAAQ,EAAE,CAgCZ"}
|