@shapeshiftoss/swapper 20.4.0 → 20.6.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/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
- package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +17 -22
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
- package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
- package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
- package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
- package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
- package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +5 -7
- package/dist/cjs/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
- package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
- package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
- package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
- package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +22 -0
- package/dist/cjs/swappers/KyberSwapper/utils/constants.js +25 -0
- package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
- package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
- package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
- package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
- package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
- package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
- package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
- package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
- package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
- package/dist/cjs/swappers/RelaySwapper/constant.js +1 -0
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +5 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
- package/dist/cjs/swappers/ZrxSwapper/types.d.ts +1 -1
- package/dist/cjs/swappers/ZrxSwapper/types.js +1 -0
- package/dist/cjs/swappers/ZrxSwapper/utils/constants.js +1 -0
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
- package/dist/cjs/swappers/ZrxSwapper/utils/helpers.d.ts +1 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/helpers.js +5 -0
- package/dist/cjs/types.d.ts +36 -8
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/utils/aptos/constants.d.ts +2 -0
- package/dist/cjs/utils/aptos/constants.js +7 -0
- package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
- package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
- package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
- package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
- package/dist/cjs/utils/aptos/index.d.ts +3 -0
- package/dist/cjs/utils/aptos/index.js +19 -0
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
- package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
- package/dist/cjs/utils/evm/stateOverride.js +10 -4
- package/dist/cjs/utils/helpers.js +2 -0
- package/dist/cjs/utils/helpers.test.js +2 -0
- package/dist/cjs/utils/index.d.ts +3 -2
- package/dist/cjs/utils/index.js +11 -27
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
- package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
- package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +18 -23
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
- package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
- package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
- package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
- package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
- package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
- package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
- package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
- package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
- package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
- package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +6 -8
- package/dist/esm/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
- package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
- package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/KyberSwapper/index.js +2 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
- package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
- package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
- package/dist/esm/swappers/KyberSwapper/types.js +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +22 -0
- package/dist/esm/swappers/KyberSwapper/utils/constants.js +22 -0
- package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
- package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
- package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
- package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
- package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
- package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
- package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
- package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
- package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +34 -53
- package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
- package/dist/esm/swappers/RelaySwapper/constant.js +2 -1
- package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +5 -0
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
- package/dist/esm/swappers/ZrxSwapper/types.d.ts +1 -1
- package/dist/esm/swappers/ZrxSwapper/types.js +1 -0
- package/dist/esm/swappers/ZrxSwapper/utils/constants.js +1 -0
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
- package/dist/esm/swappers/ZrxSwapper/utils/helpers.d.ts +1 -1
- package/dist/esm/swappers/ZrxSwapper/utils/helpers.js +5 -0
- package/dist/esm/types.d.ts +36 -8
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/aptos/constants.d.ts +2 -0
- package/dist/esm/utils/aptos/constants.js +4 -0
- package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
- package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
- package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
- package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
- package/dist/esm/utils/aptos/index.d.ts +3 -0
- package/dist/esm/utils/aptos/index.js +3 -0
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
- package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
- package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
- package/dist/esm/utils/evm/stateOverride.js +8 -3
- package/dist/esm/utils/helpers.js +3 -1
- package/dist/esm/utils/helpers.test.js +2 -0
- package/dist/esm/utils/index.d.ts +3 -2
- package/dist/esm/utils/index.js +9 -26
- package/package.json +10 -11
package/dist/cjs/constants.js
CHANGED
|
@@ -13,6 +13,7 @@ const ChainflipSwapper_1 = require("./swappers/ChainflipSwapper");
|
|
|
13
13
|
const CowSwapper_1 = require("./swappers/CowSwapper");
|
|
14
14
|
const DebridgeSwapper_1 = require("./swappers/DebridgeSwapper");
|
|
15
15
|
const FyndSwapper_1 = require("./swappers/FyndSwapper");
|
|
16
|
+
const KyberSwapper_1 = require("./swappers/KyberSwapper");
|
|
16
17
|
const MayachainSwapper_1 = require("./swappers/MayachainSwapper");
|
|
17
18
|
const NearIntentsSwapper_1 = require("./swappers/NearIntentsSwapper");
|
|
18
19
|
const PortalsSwapper_1 = require("./swappers/PortalsSwapper");
|
|
@@ -112,6 +113,10 @@ exports.swappers = {
|
|
|
112
113
|
...FyndSwapper_1.fyndSwapper,
|
|
113
114
|
...FyndSwapper_1.fyndApi,
|
|
114
115
|
},
|
|
116
|
+
[types_1.SwapperName.KyberSwap]: {
|
|
117
|
+
...KyberSwapper_1.kyberSwapper,
|
|
118
|
+
...KyberSwapper_1.kyberApi,
|
|
119
|
+
},
|
|
115
120
|
[types_1.SwapperName.Test]: undefined,
|
|
116
121
|
};
|
|
117
122
|
const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
|
|
@@ -140,6 +145,7 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
|
|
|
140
145
|
case types_1.SwapperName.Zrx:
|
|
141
146
|
case types_1.SwapperName.Bebop:
|
|
142
147
|
case types_1.SwapperName.Fynd:
|
|
148
|
+
case types_1.SwapperName.KyberSwap:
|
|
143
149
|
case types_1.SwapperName.Test:
|
|
144
150
|
return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
|
|
145
151
|
case types_1.SwapperName.CowSwap:
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export * from './swappers/SunioSwapper';
|
|
|
16
16
|
export * from './swappers/CowSwapper';
|
|
17
17
|
export * from './swappers/DebridgeSwapper';
|
|
18
18
|
export * from './swappers/FyndSwapper';
|
|
19
|
+
export * from './swappers/KyberSwapper';
|
|
19
20
|
export * from './swappers/PortalsSwapper';
|
|
20
21
|
export * from './swappers/ThorchainSwapper';
|
|
21
22
|
export * from './swappers/MayachainSwapper';
|
package/dist/cjs/index.js
CHANGED
|
@@ -45,6 +45,7 @@ __exportStar(require("./swappers/SunioSwapper"), exports);
|
|
|
45
45
|
__exportStar(require("./swappers/CowSwapper"), exports);
|
|
46
46
|
__exportStar(require("./swappers/DebridgeSwapper"), exports);
|
|
47
47
|
__exportStar(require("./swappers/FyndSwapper"), exports);
|
|
48
|
+
__exportStar(require("./swappers/KyberSwapper"), exports);
|
|
48
49
|
__exportStar(require("./swappers/PortalsSwapper"), exports);
|
|
49
50
|
__exportStar(require("./swappers/ThorchainSwapper"), exports);
|
|
50
51
|
__exportStar(require("./swappers/MayachainSwapper"), exports);
|
|
@@ -21,7 +21,6 @@ async function getAcrossStepData(args) {
|
|
|
21
21
|
to: swapTx.to,
|
|
22
22
|
data: swapTx.data,
|
|
23
23
|
value: swapTx.value ?? '0',
|
|
24
|
-
gasLimit: swapTx.gas,
|
|
25
24
|
};
|
|
26
25
|
const stateOverride = {
|
|
27
26
|
sellAsset,
|
|
@@ -29,20 +28,12 @@ async function getAcrossStepData(args) {
|
|
|
29
28
|
spenderAddress,
|
|
30
29
|
};
|
|
31
30
|
if (type === 'rate') {
|
|
32
|
-
const networkFeeCryptoBaseUnit = await (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
supportsEIP1559,
|
|
39
|
-
stateOverride,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return fallbackNetworkFeeCryptoBaseUnit;
|
|
44
|
-
}
|
|
45
|
-
})();
|
|
31
|
+
const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
|
|
32
|
+
adapter,
|
|
33
|
+
supportsEIP1559,
|
|
34
|
+
providerGasLimit: swapTx.gas,
|
|
35
|
+
simulation: { transactionData, from, stateOverride },
|
|
36
|
+
}).catch(() => fallbackNetworkFeeCryptoBaseUnit);
|
|
46
37
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
47
38
|
return (0, monads_1.Ok)(stepData);
|
|
48
39
|
}
|
|
@@ -53,6 +44,7 @@ async function getAcrossStepData(args) {
|
|
|
53
44
|
from,
|
|
54
45
|
supportsEIP1559,
|
|
55
46
|
stateOverride,
|
|
47
|
+
providerGasLimit: swapTx.gas,
|
|
56
48
|
});
|
|
57
49
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
58
50
|
return (0, monads_1.Ok)(stepData);
|
|
@@ -11,7 +11,7 @@ const helpers_1 = require("./utils/helpers");
|
|
|
11
11
|
exports.avnuApi = {
|
|
12
12
|
getTradeQuote: (input, deps) => (0, getTradeQuote_1.getTradeQuote)(input, deps),
|
|
13
13
|
getTradeRate: (input, deps) => (0, getTradeRate_1.getTradeRate)(input, deps),
|
|
14
|
-
getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, slippageTolerancePercentageDecimal, assertGetStarknetChainAdapter, }) => {
|
|
14
|
+
getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, callsOnly, slippageTolerancePercentageDecimal, assertGetStarknetChainAdapter, }) => {
|
|
15
15
|
if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
|
|
16
16
|
throw new Error('Unable to execute a trade rate quote');
|
|
17
17
|
const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
|
|
@@ -37,19 +37,23 @@ exports.avnuApi = {
|
|
|
37
37
|
if (!avnuCalls || avnuCalls.length === 0) {
|
|
38
38
|
throw new Error('No swap calls returned from AVNU - quote may have expired');
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
// Format: [call_array_length, contract1, selector1, calldata_len1, ...calldata1, ...]
|
|
42
|
-
const fullCalldata = [avnuCalls.length.toString()];
|
|
43
|
-
for (const call of avnuCalls) {
|
|
40
|
+
const calls = avnuCalls.map(call => {
|
|
44
41
|
const rawCalldata = call.calldata ?? [];
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
const calldata = Array.isArray(rawCalldata) ? rawCalldata : starknet_1.CallData.compile(rawCalldata);
|
|
43
|
+
return {
|
|
44
|
+
contractAddress: (0, starknet_1.validateAndParseAddress)(call.contractAddress),
|
|
45
|
+
entrypoint: call.entrypoint,
|
|
46
|
+
calldata: calldata.map(String),
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
if (callsOnly) {
|
|
50
|
+
return {
|
|
51
|
+
addressNList: (0, chain_adapters_1.toAddressNList)(adapter.getBip44Params({ accountNumber })),
|
|
52
|
+
txHash: '',
|
|
53
|
+
calls,
|
|
54
|
+
};
|
|
50
55
|
}
|
|
51
|
-
|
|
52
|
-
const formattedCalldata = fullCalldata.map(helpers_1.toHexString);
|
|
56
|
+
const formattedCalldata = starknet_1.transaction.getExecuteCalldata(calls, '1').map(helpers_1.toHexString);
|
|
53
57
|
// Get nonce using adapter method (checks deployment status and returns appropriate nonce)
|
|
54
58
|
const chainIdHex = await adapter.getStarknetProvider().getChainId();
|
|
55
59
|
const nonce = await adapter.getNonce(normalizedFrom);
|
|
@@ -147,6 +151,7 @@ exports.avnuApi = {
|
|
|
147
151
|
return {
|
|
148
152
|
addressNList: (0, chain_adapters_1.toAddressNList)(adapter.getBip44Params({ accountNumber })),
|
|
149
153
|
txHash,
|
|
154
|
+
calls,
|
|
150
155
|
_txDetails: {
|
|
151
156
|
fromAddress: normalizedFrom,
|
|
152
157
|
calldata: formattedCalldata,
|
|
@@ -11,41 +11,36 @@ async function getBebopStepData(args) {
|
|
|
11
11
|
const { tx, spenderAddress, sellAsset, sellAmountCryptoBaseUnit, type, input, from, deps } = args;
|
|
12
12
|
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
13
13
|
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
14
|
-
if (type === 'rate') {
|
|
15
|
-
const networkFeeCryptoBaseUnit = await (async () => {
|
|
16
|
-
try {
|
|
17
|
-
return await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
|
|
18
|
-
adapter,
|
|
19
|
-
supportsEIP1559,
|
|
20
|
-
gasLimit: (0, utils_1.bnOrZero)(tx.gas).toString(),
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return (0, utils_1.bnOrZero)(tx.gas).times((0, utils_1.bnOrZero)(tx.gasPrice)).toFixed(0);
|
|
25
|
-
}
|
|
26
|
-
})();
|
|
27
|
-
const stepData = { networkFeeCryptoBaseUnit };
|
|
28
|
-
return (0, monads_1.Ok)(stepData);
|
|
29
|
-
}
|
|
30
14
|
const transactionData = {
|
|
31
15
|
type: 'evm',
|
|
32
16
|
chainId: Number((0, caip_1.fromChainId)(sellAsset.chainId).chainReference),
|
|
33
17
|
to: tx.to,
|
|
34
18
|
data: tx.data,
|
|
35
19
|
value: (0, viem_1.fromHex)(tx.value, 'bigint').toString(),
|
|
36
|
-
gasLimit: tx.gas?.toString(),
|
|
37
20
|
};
|
|
21
|
+
const stateOverride = {
|
|
22
|
+
sellAsset,
|
|
23
|
+
sellAmountCryptoBaseUnit,
|
|
24
|
+
spenderAddress,
|
|
25
|
+
};
|
|
26
|
+
if (type === 'rate') {
|
|
27
|
+
const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
|
|
28
|
+
adapter,
|
|
29
|
+
supportsEIP1559,
|
|
30
|
+
providerGasLimit: tx.gas?.toString(),
|
|
31
|
+
simulation: { transactionData, from, stateOverride },
|
|
32
|
+
}).catch(() => (0, utils_1.bnOrZero)(tx.gas).times((0, utils_1.bnOrZero)(tx.gasPrice)).toFixed(0));
|
|
33
|
+
const stepData = { networkFeeCryptoBaseUnit };
|
|
34
|
+
return (0, monads_1.Ok)(stepData);
|
|
35
|
+
}
|
|
38
36
|
try {
|
|
39
37
|
const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
|
|
40
38
|
adapter,
|
|
41
39
|
transactionData,
|
|
42
40
|
from,
|
|
43
41
|
supportsEIP1559,
|
|
44
|
-
stateOverride
|
|
45
|
-
|
|
46
|
-
sellAmountCryptoBaseUnit,
|
|
47
|
-
spenderAddress,
|
|
48
|
-
},
|
|
42
|
+
stateOverride,
|
|
43
|
+
providerGasLimit: tx.gas?.toString(),
|
|
49
44
|
});
|
|
50
45
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
51
46
|
return (0, monads_1.Ok)(stepData);
|
|
@@ -56,6 +56,7 @@ const mockEvmChainAdapter = {
|
|
|
56
56
|
assertGetNearChainAdapter: () => vitest_1.vi.fn(),
|
|
57
57
|
assertGetStarknetChainAdapter: () => vitest_1.vi.fn(),
|
|
58
58
|
assertGetTonChainAdapter: () => vitest_1.vi.fn(),
|
|
59
|
+
assertGetAptosChainAdapter: () => vitest_1.vi.fn(),
|
|
59
60
|
config: {
|
|
60
61
|
VITE_BUTTERSWAP_CLIENT_ID: 'test',
|
|
61
62
|
},
|
|
@@ -36,6 +36,7 @@ const mockEvmChainAdapter = {
|
|
|
36
36
|
assertGetNearChainAdapter: () => vitest_1.vi.fn(),
|
|
37
37
|
assertGetStarknetChainAdapter: () => vitest_1.vi.fn(),
|
|
38
38
|
assertGetTonChainAdapter: () => vitest_1.vi.fn(),
|
|
39
|
+
assertGetAptosChainAdapter: () => vitest_1.vi.fn(),
|
|
39
40
|
config: {
|
|
40
41
|
VITE_BUTTERSWAP_CLIENT_ID: 'test',
|
|
41
42
|
},
|
|
@@ -28,10 +28,10 @@ async function getButterSwapStepData(args) {
|
|
|
28
28
|
if (args.type === 'rate') {
|
|
29
29
|
const networkFeeCryptoBaseUnit = await (async () => {
|
|
30
30
|
try {
|
|
31
|
-
return await (0, evm_1.
|
|
31
|
+
return await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
|
|
32
32
|
adapter,
|
|
33
33
|
supportsEIP1559,
|
|
34
|
-
|
|
34
|
+
providerGasLimit: (0, utils_1.bnOrZero)(route.gasEstimatedTarget).toFixed(),
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
catch {
|
|
@@ -55,13 +55,12 @@ async function getButterSwapStepData(args) {
|
|
|
55
55
|
supportsEIP1559,
|
|
56
56
|
transactionData,
|
|
57
57
|
from,
|
|
58
|
-
// Butter's gasEstimatedTarget lands short on chain (observed 24% under actual, causing
|
|
59
|
-
// in-flight OOG/SWAP_FAIL reverts) - estimate ourselves instead
|
|
60
58
|
stateOverride: {
|
|
61
59
|
sellAsset,
|
|
62
60
|
sellAmountCryptoBaseUnit,
|
|
63
61
|
spenderAddress,
|
|
64
62
|
},
|
|
63
|
+
providerGasLimit: (0, utils_1.bnOrZero)(route.gasEstimatedTarget).toFixed(),
|
|
65
64
|
});
|
|
66
65
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
67
66
|
return (0, monads_1.Ok)(stepData);
|
|
@@ -96,7 +96,7 @@ const evmQuoteInput = { supportsEIP1559: false };
|
|
|
96
96
|
});
|
|
97
97
|
// gasEstimatedTarget 1159118 is ignored - the tx carries the buffered on chain estimate
|
|
98
98
|
(0, vitest_1.expect)(actual.unwrap()).toEqual({
|
|
99
|
-
networkFeeCryptoBaseUnit: '
|
|
99
|
+
networkFeeCryptoBaseUnit: '600000000000000',
|
|
100
100
|
transactionData: {
|
|
101
101
|
type: 'evm',
|
|
102
102
|
chainId: 1,
|
|
@@ -123,7 +123,7 @@ const evmQuoteInput = { supportsEIP1559: false };
|
|
|
123
123
|
const { transactionData, networkFeeCryptoBaseUnit } = actual.unwrap();
|
|
124
124
|
// The buffered limit is set on the tx data in place, so the executable tx always carries one
|
|
125
125
|
(0, vitest_1.expect)(transactionData).toMatchObject({ gasLimit: '600000' });
|
|
126
|
-
(0, vitest_1.expect)(networkFeeCryptoBaseUnit).toBe('
|
|
126
|
+
(0, vitest_1.expect)(networkFeeCryptoBaseUnit).toBe('600000000000000');
|
|
127
127
|
});
|
|
128
128
|
(0, vitest_1.it)('errors rather than falling back to the provider fee when quote estimation fails', async () => {
|
|
129
129
|
const actual = await (0, getButterSwapStepData_1.getButterSwapStepData)({
|
|
@@ -11,7 +11,6 @@ const types_1 = require("../../types");
|
|
|
11
11
|
const utils_2 = require("../../utils");
|
|
12
12
|
const getTradeQuote_1 = require("./swapperApi/getTradeQuote");
|
|
13
13
|
const getTradeRate_1 = require("./swapperApi/getTradeRate");
|
|
14
|
-
const constants_2 = require("./utils/constants");
|
|
15
14
|
const helpers_1 = require("./utils/helpers");
|
|
16
15
|
exports.cetusApi = {
|
|
17
16
|
getTradeQuote: (input, deps) => (0, getTradeQuote_1.getTradeQuote)(input, deps),
|
|
@@ -23,12 +22,12 @@ exports.cetusApi = {
|
|
|
23
22
|
const { accountNumber, sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = step;
|
|
24
23
|
const adapter = assertGetSuiChainAdapter(sellAsset.chainId);
|
|
25
24
|
const rpcUrl = config.VITE_SUI_NODE_URL;
|
|
26
|
-
const client = (0, helpers_1.getAggregatorClient)(rpcUrl);
|
|
25
|
+
const client = (0, helpers_1.getAggregatorClient)(rpcUrl, from);
|
|
27
26
|
const suiClient = (0, helpers_1.getSuiClient)(rpcUrl);
|
|
28
27
|
const sellCoinType = (0, helpers_1.getCoinType)(sellAsset);
|
|
29
28
|
const buyCoinType = (0, helpers_1.getCoinType)(buyAsset);
|
|
30
29
|
// Exclude Pyth-dependent providers to avoid oracle failures
|
|
31
|
-
const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(
|
|
30
|
+
const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(aggregator_sdk_1.PYTH_ORACLE_BASED_DEXES);
|
|
32
31
|
const routerData = await (0, helpers_1.findBestRoute)(client, sellCoinType, buyCoinType, sellAmountIncludingProtocolFeesCryptoBaseUnit, providersWithoutPyth);
|
|
33
32
|
if (!routerData) {
|
|
34
33
|
throw new Error(`No route found for ${sellAsset.symbol}/${buyAsset.symbol}`);
|
|
@@ -8,9 +8,11 @@ const constants_1 = require("../../../constants");
|
|
|
8
8
|
const types_1 = require("../../../types");
|
|
9
9
|
const utils_2 = require("../../../utils");
|
|
10
10
|
const helpers_1 = require("../utils/helpers");
|
|
11
|
+
// The 0x0 dummy sender only holds dust SUI, so server-side gas selection exceeds the payment object limit
|
|
12
|
+
const UNFUNDED_SENDER_ERRORS = ['Insufficient balance of', 'maximum number of gas payment objects'];
|
|
11
13
|
async function getCetusStepData(args) {
|
|
12
14
|
const { routerData, rpcUrl, slippageTolerancePercentageDecimal, from } = args;
|
|
13
|
-
const client = (0, helpers_1.getAggregatorClient)(rpcUrl);
|
|
15
|
+
const client = (0, helpers_1.getAggregatorClient)(rpcUrl, from);
|
|
14
16
|
const suiClient = (0, helpers_1.getSuiClient)(rpcUrl);
|
|
15
17
|
const slippage = (0, utils_1.bnOrZero)(slippageTolerancePercentageDecimal ??
|
|
16
18
|
(0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Cetus)).toNumber();
|
|
@@ -20,12 +22,14 @@ async function getCetusStepData(args) {
|
|
|
20
22
|
txb.setSender(from);
|
|
21
23
|
await client.fastRouterSwap({ router: routerData, slippage, txb, refreshAllCoins: true });
|
|
22
24
|
const transactionBytes = await txb.build({ client: suiClient });
|
|
23
|
-
const dryRunResult = await suiClient.
|
|
24
|
-
|
|
25
|
+
const dryRunResult = await suiClient.simulateTransaction({
|
|
26
|
+
transaction: transactionBytes,
|
|
27
|
+
include: { effects: true },
|
|
25
28
|
});
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
+
const { gasUsed } = (dryRunResult.Transaction ?? dryRunResult.FailedTransaction).effects;
|
|
30
|
+
const computationCost = BigInt(gasUsed.computationCost);
|
|
31
|
+
const storageCost = BigInt(gasUsed.storageCost);
|
|
32
|
+
const storageRebate = BigInt(gasUsed.storageRebate);
|
|
29
33
|
const netStorageCost = storageCost > storageRebate ? storageCost - storageRebate : 0n;
|
|
30
34
|
return (computationCost + netStorageCost).toString();
|
|
31
35
|
};
|
|
@@ -36,8 +40,9 @@ async function getCetusStepData(args) {
|
|
|
36
40
|
return (0, monads_1.Ok)(stepData);
|
|
37
41
|
}
|
|
38
42
|
catch (error) {
|
|
39
|
-
// Walletless rates have no coins to dry-run against - degrade to an unknown fee, but a real route/build error still fails
|
|
40
|
-
|
|
43
|
+
// Walletless rates have no usable coins to dry-run against - degrade to an unknown fee, but a real route/build error still fails
|
|
44
|
+
const errorMessage = error instanceof Error ? error.message : '';
|
|
45
|
+
if (UNFUNDED_SENDER_ERRORS.some(message => errorMessage.includes(message))) {
|
|
41
46
|
const stepData = { networkFeeCryptoBaseUnit: undefined };
|
|
42
47
|
return (0, monads_1.Ok)(stepData);
|
|
43
48
|
}
|
|
@@ -7,7 +7,6 @@ const uuid_1 = require("uuid");
|
|
|
7
7
|
const types_1 = require("../../../types");
|
|
8
8
|
const utils_1 = require("../../../utils");
|
|
9
9
|
const affiliateFee_1 = require("../../../utils/affiliateFee");
|
|
10
|
-
const constants_1 = require("../utils/constants");
|
|
11
10
|
const helpers_1 = require("../utils/helpers");
|
|
12
11
|
const getCetusTradeContext = async (input, deps) => {
|
|
13
12
|
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
|
|
@@ -20,7 +19,7 @@ const getCetusTradeContext = async (input, deps) => {
|
|
|
20
19
|
const sellCoinType = (0, helpers_1.getCoinType)(sellAsset);
|
|
21
20
|
const buyCoinType = (0, helpers_1.getCoinType)(buyAsset);
|
|
22
21
|
// Exclude Pyth-dependent providers to avoid oracle failures
|
|
23
|
-
const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(
|
|
22
|
+
const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(aggregator_sdk_1.PYTH_ORACLE_BASED_DEXES);
|
|
24
23
|
const routerData = await (0, helpers_1.findBestRoute)(client, sellCoinType, buyCoinType, sellAmountIncludingProtocolFeesCryptoBaseUnit, providersWithoutPyth);
|
|
25
24
|
if (!routerData) {
|
|
26
25
|
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ChainId } from '@shapeshiftoss/caip';
|
|
2
2
|
export declare const SUPPORTED_CETUS_CHAIN_IDS: readonly ChainId[];
|
|
3
3
|
export declare const isSupportedChainId: (chainId: ChainId) => chainId is ChainId;
|
|
4
|
-
export declare const PYTH_DEPENDENT_PROVIDERS: string[];
|
|
5
4
|
export declare const CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = exports.
|
|
3
|
+
exports.CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = exports.isSupportedChainId = exports.SUPPORTED_CETUS_CHAIN_IDS = void 0;
|
|
4
4
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
5
5
|
exports.SUPPORTED_CETUS_CHAIN_IDS = [caip_1.suiChainId];
|
|
6
6
|
const isSupportedChainId = (chainId) => {
|
|
7
7
|
return exports.SUPPORTED_CETUS_CHAIN_IDS.includes(chainId);
|
|
8
8
|
};
|
|
9
9
|
exports.isSupportedChainId = isSupportedChainId;
|
|
10
|
-
exports.PYTH_DEPENDENT_PROVIDERS = ['HAEDALPMM', 'HAEDALHMMV2', 'METASTABLE'];
|
|
11
10
|
// Placeholder sender for walletless rate fee estimation - dry-run needs a sender, real coins aren't required
|
|
12
11
|
exports.CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RouterDataV3 } from '@cetusprotocol/aggregator-sdk';
|
|
2
2
|
import { AggregatorClient } from '@cetusprotocol/aggregator-sdk';
|
|
3
|
-
import {
|
|
3
|
+
import { SuiGrpcClient } from '@mysten/sui/grpc';
|
|
4
4
|
import type { Asset } from '@shapeshiftoss/types';
|
|
5
5
|
import type { Result } from '@sniptt/monads';
|
|
6
6
|
import type { SwapErrorRight } from '../../../types';
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
7
|
+
export declare const getSuiClient: (rpcUrl: string) => SuiGrpcClient;
|
|
8
|
+
export declare const getAggregatorClient: (rpcUrl: string, signer?: string) => AggregatorClient;
|
|
9
9
|
export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
|
|
10
10
|
sellAsset: Asset;
|
|
11
11
|
buyAsset: Asset;
|
|
@@ -1,37 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findBestRoute = exports.getCoinType = exports.assertValidTrade = exports.
|
|
3
|
+
exports.findBestRoute = exports.getCoinType = exports.assertValidTrade = exports.getAggregatorClient = exports.getSuiClient = void 0;
|
|
4
4
|
const aggregator_sdk_1 = require("@cetusprotocol/aggregator-sdk");
|
|
5
|
-
const
|
|
5
|
+
const grpc_1 = require("@mysten/sui/grpc");
|
|
6
6
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
7
7
|
const monads_1 = require("@sniptt/monads");
|
|
8
8
|
const types_1 = require("../../../types");
|
|
9
9
|
const utils_1 = require("../../../utils");
|
|
10
10
|
const constants_1 = require("./constants");
|
|
11
11
|
let suiClientInstance;
|
|
12
|
-
let aggregatorClientInstance;
|
|
13
12
|
let currentRpcUrl;
|
|
14
|
-
const getAggregatorClient = (rpcUrl) => {
|
|
15
|
-
if (!aggregatorClientInstance || !suiClientInstance || currentRpcUrl !== rpcUrl) {
|
|
16
|
-
suiClientInstance = new client_1.SuiClient({ url: rpcUrl });
|
|
17
|
-
aggregatorClientInstance = new aggregator_sdk_1.AggregatorClient({
|
|
18
|
-
client: suiClientInstance,
|
|
19
|
-
env: aggregator_sdk_1.Env.Mainnet,
|
|
20
|
-
signer: '0x0',
|
|
21
|
-
});
|
|
22
|
-
currentRpcUrl = rpcUrl;
|
|
23
|
-
}
|
|
24
|
-
return aggregatorClientInstance;
|
|
25
|
-
};
|
|
26
|
-
exports.getAggregatorClient = getAggregatorClient;
|
|
27
13
|
const getSuiClient = (rpcUrl) => {
|
|
28
14
|
if (!suiClientInstance || currentRpcUrl !== rpcUrl) {
|
|
29
|
-
suiClientInstance = new
|
|
15
|
+
suiClientInstance = new grpc_1.SuiGrpcClient({ network: 'mainnet', baseUrl: rpcUrl });
|
|
30
16
|
currentRpcUrl = rpcUrl;
|
|
31
17
|
}
|
|
32
18
|
return suiClientInstance;
|
|
33
19
|
};
|
|
34
20
|
exports.getSuiClient = getSuiClient;
|
|
21
|
+
// Cetus merges the swap output into an existing coin owned by signer, so it must be the tx sender
|
|
22
|
+
const getAggregatorClient = (rpcUrl, signer) => new aggregator_sdk_1.AggregatorClient({ client: (0, exports.getSuiClient)(rpcUrl), env: aggregator_sdk_1.Env.Mainnet, signer });
|
|
23
|
+
exports.getAggregatorClient = getAggregatorClient;
|
|
35
24
|
const assertValidTrade = ({ sellAsset, buyAsset, }) => {
|
|
36
25
|
if (!(0, constants_1.isSupportedChainId)(sellAsset.chainId)) {
|
|
37
26
|
return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
|
|
@@ -6,7 +6,7 @@ const monads_1 = require("@sniptt/monads");
|
|
|
6
6
|
const utils_1 = require("../../../utils");
|
|
7
7
|
const evm_1 = require("../../../utils/evm");
|
|
8
8
|
async function getDebridgeStepData(args) {
|
|
9
|
-
const { tx, sellAmountCryptoBaseUnit,
|
|
9
|
+
const { tx, sellAmountCryptoBaseUnit, spenderAddress, fallbackNetworkFeeCryptoBaseUnit, sellAsset, from, type, input, deps, } = args;
|
|
10
10
|
const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
|
|
11
11
|
const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
|
|
12
12
|
const transactionData = {
|
|
@@ -15,7 +15,6 @@ async function getDebridgeStepData(args) {
|
|
|
15
15
|
to: tx.to,
|
|
16
16
|
data: tx.data,
|
|
17
17
|
value: tx.value,
|
|
18
|
-
gasLimit,
|
|
19
18
|
};
|
|
20
19
|
const stateOverride = {
|
|
21
20
|
sellAsset,
|
|
@@ -23,20 +22,14 @@ async function getDebridgeStepData(args) {
|
|
|
23
22
|
spenderAddress,
|
|
24
23
|
};
|
|
25
24
|
if (type === 'rate') {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return fallbackNetworkFeeCryptoBaseUnit;
|
|
38
|
-
}
|
|
39
|
-
})();
|
|
25
|
+
// deBridge returns a flat gas limit far above actual usage, so rates simulate instead
|
|
26
|
+
const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
|
|
27
|
+
adapter,
|
|
28
|
+
transactionData,
|
|
29
|
+
from,
|
|
30
|
+
supportsEIP1559,
|
|
31
|
+
stateOverride,
|
|
32
|
+
}).catch(() => fallbackNetworkFeeCryptoBaseUnit);
|
|
40
33
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
41
34
|
return (0, monads_1.Ok)(stepData);
|
|
42
35
|
}
|
|
@@ -85,7 +85,6 @@ const getDebridgeTradeContext = async ({ input, deps, senderAddress, recipientAd
|
|
|
85
85
|
stepDataArgs: {
|
|
86
86
|
tx: quote.tx,
|
|
87
87
|
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
88
|
-
gasLimit: quote.gasLimit,
|
|
89
88
|
fallbackNetworkFeeCryptoBaseUnit: quote.fallbackNetworkFeeCryptoBaseUnit,
|
|
90
89
|
sellAsset,
|
|
91
90
|
spenderAddress: allowanceContract,
|
|
@@ -139,7 +138,6 @@ const fetchCrossChainQuote = async ({ input, deps, sellDebridgeChainId, buyDebri
|
|
|
139
138
|
isSameChainSwap: false,
|
|
140
139
|
slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal,
|
|
141
140
|
tx: quote.tx,
|
|
142
|
-
gasLimit: quote.estimatedTransactionFee?.details.gasLimit,
|
|
143
141
|
fallbackNetworkFeeCryptoBaseUnit: quote.estimatedTransactionFee?.total,
|
|
144
142
|
});
|
|
145
143
|
};
|
|
@@ -195,7 +193,6 @@ const fetchSameChainQuote = async ({ input, deps, sellDebridgeChainId, senderAdd
|
|
|
195
193
|
slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal ??
|
|
196
194
|
(quote.slippage ? (0, utils_1.bnOrZero)(quote.slippage).div(100).toString() : undefined),
|
|
197
195
|
tx: quote.tx,
|
|
198
|
-
gasLimit: quote.estimatedTransactionFee?.details.gasLimit,
|
|
199
196
|
fallbackNetworkFeeCryptoBaseUnit: quote.estimatedTransactionFee?.total,
|
|
200
197
|
});
|
|
201
198
|
};
|
|
@@ -18,15 +18,12 @@ async function getFyndStepData(args) {
|
|
|
18
18
|
};
|
|
19
19
|
const stateOverride = { sellAsset, sellAmountCryptoBaseUnit, spenderAddress };
|
|
20
20
|
if (type === 'rate') {
|
|
21
|
-
const networkFeeCryptoBaseUnit = await (0, evm_1.
|
|
21
|
+
const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
|
|
22
22
|
adapter,
|
|
23
|
-
transactionData,
|
|
24
|
-
from,
|
|
25
23
|
supportsEIP1559,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.catch(() => undefined);
|
|
24
|
+
providerGasLimit: quote.gas_estimate,
|
|
25
|
+
simulation: { transactionData, from, stateOverride },
|
|
26
|
+
}).catch(() => undefined);
|
|
30
27
|
const stepData = { networkFeeCryptoBaseUnit };
|
|
31
28
|
return (0, monads_1.Ok)(stepData);
|
|
32
29
|
}
|
|
@@ -37,6 +34,7 @@ async function getFyndStepData(args) {
|
|
|
37
34
|
from,
|
|
38
35
|
supportsEIP1559,
|
|
39
36
|
stateOverride,
|
|
37
|
+
providerGasLimit: quote.gas_estimate,
|
|
40
38
|
});
|
|
41
39
|
const stepData = { transactionData, networkFeeCryptoBaseUnit };
|
|
42
40
|
return (0, monads_1.Ok)(stepData);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kyberApi = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const evm_1 = require("../../utils/evm");
|
|
6
|
+
const getKyberTradeQuote_1 = require("./swapperApi/getKyberTradeQuote");
|
|
7
|
+
const getKyberTradeRate_1 = require("./swapperApi/getKyberTradeRate");
|
|
8
|
+
exports.kyberApi = {
|
|
9
|
+
getTradeQuote: (input, deps) => (0, getKyberTradeQuote_1.getKyberTradeQuote)(input, deps),
|
|
10
|
+
getTradeRate: (input, deps) => (0, getKyberTradeRate_1.getKyberTradeRate)(input, deps),
|
|
11
|
+
getUnsignedEvmTransaction: evm_1.getUnsignedEvmTransaction,
|
|
12
|
+
getEvmTransactionFees: evm_1.getEvmTransactionFees,
|
|
13
|
+
checkTradeStatus: utils_1.checkEvmSwapStatus,
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kyberSwapper = exports.kyberApi = void 0;
|
|
4
|
+
var endpoints_1 = require("./endpoints");
|
|
5
|
+
Object.defineProperty(exports, "kyberApi", { enumerable: true, get: function () { return endpoints_1.kyberApi; } });
|
|
6
|
+
var KyberSwapper_1 = require("./KyberSwapper");
|
|
7
|
+
Object.defineProperty(exports, "kyberSwapper", { enumerable: true, get: function () { return KyberSwapper_1.kyberSwapper; } });
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sniptt/monads';
|
|
2
|
+
import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types';
|
|
3
|
+
import type { KyberTradeQuoteInput } from '../types';
|
|
4
|
+
export declare const getKyberTradeQuote: (input: KyberTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
|