@shapeshiftoss/swapper 20.4.0 → 20.5.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.
Files changed (169) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.js +6 -0
  3. package/dist/cjs/index.d.ts +1 -0
  4. package/dist/cjs/index.js +1 -0
  5. package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
  6. package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
  7. package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +17 -22
  8. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  9. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  10. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
  11. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  12. package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
  13. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  14. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
  15. package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  16. package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
  17. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  18. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
  19. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  20. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  21. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  22. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +5 -7
  23. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  24. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
  25. package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
  26. package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
  27. package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
  28. package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
  29. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  30. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
  31. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  32. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
  33. package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
  34. package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
  35. package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  36. package/dist/cjs/swappers/KyberSwapper/utils/constants.js +24 -0
  37. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  38. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
  39. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  40. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
  41. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  42. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
  43. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  44. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
  45. package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  46. package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
  47. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  48. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
  49. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  50. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
  51. package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
  52. package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
  53. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  54. package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
  55. package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
  56. package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
  57. package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  58. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
  59. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  60. package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
  61. package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  62. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
  63. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  64. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
  65. package/dist/cjs/types.d.ts +36 -8
  66. package/dist/cjs/types.js +1 -0
  67. package/dist/cjs/utils/aptos/constants.d.ts +2 -0
  68. package/dist/cjs/utils/aptos/constants.js +7 -0
  69. package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  70. package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
  71. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  72. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
  73. package/dist/cjs/utils/aptos/index.d.ts +3 -0
  74. package/dist/cjs/utils/aptos/index.js +19 -0
  75. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  76. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
  77. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  78. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
  79. package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
  80. package/dist/cjs/utils/evm/stateOverride.js +10 -4
  81. package/dist/cjs/utils/helpers.js +1 -0
  82. package/dist/cjs/utils/helpers.test.js +1 -0
  83. package/dist/cjs/utils/index.d.ts +3 -2
  84. package/dist/cjs/utils/index.js +11 -27
  85. package/dist/esm/.tsbuildinfo +1 -1
  86. package/dist/esm/constants.js +6 -0
  87. package/dist/esm/index.d.ts +1 -0
  88. package/dist/esm/index.js +1 -0
  89. package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
  90. package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
  91. package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +18 -23
  92. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  93. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  94. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
  95. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  96. package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
  97. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  98. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
  99. package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  100. package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
  101. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  102. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
  103. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  104. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  105. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  106. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +6 -8
  107. package/dist/esm/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  108. package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
  109. package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
  110. package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
  111. package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
  112. package/dist/esm/swappers/KyberSwapper/index.js +2 -0
  113. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  114. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
  115. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  116. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
  117. package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
  118. package/dist/esm/swappers/KyberSwapper/types.js +1 -0
  119. package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  120. package/dist/esm/swappers/KyberSwapper/utils/constants.js +21 -0
  121. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  122. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
  123. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  124. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
  125. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  126. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
  127. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  128. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
  129. package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  130. package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
  131. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  132. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
  133. package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  134. package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
  135. package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
  136. package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
  137. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  138. package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
  139. package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
  140. package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
  141. package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  142. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +34 -53
  143. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  144. package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
  145. package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  146. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +3 -1
  147. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  148. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
  149. package/dist/esm/types.d.ts +36 -8
  150. package/dist/esm/types.js +1 -0
  151. package/dist/esm/utils/aptos/constants.d.ts +2 -0
  152. package/dist/esm/utils/aptos/constants.js +4 -0
  153. package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  154. package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
  155. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  156. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
  157. package/dist/esm/utils/aptos/index.d.ts +3 -0
  158. package/dist/esm/utils/aptos/index.js +3 -0
  159. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  160. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
  161. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  162. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
  163. package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
  164. package/dist/esm/utils/evm/stateOverride.js +8 -3
  165. package/dist/esm/utils/helpers.js +2 -1
  166. package/dist/esm/utils/helpers.test.js +1 -0
  167. package/dist/esm/utils/index.d.ts +3 -2
  168. package/dist/esm/utils/index.js +9 -26
  169. package/package.json +10 -11
@@ -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:
@@ -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 (async () => {
33
- try {
34
- return await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
35
- adapter,
36
- transactionData,
37
- from,
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
- // Build the full invoke transaction calldata from AVNU calls
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 calldataArray = Array.isArray(rawCalldata) ? rawCalldata : starknet_1.CallData.compile(rawCalldata);
46
- const selector = starknet_1.hash.getSelectorFromName(call.entrypoint);
47
- // Normalize contract address from AVNU to ensure consistent format
48
- const normalizedContractAddress = (0, starknet_1.validateAndParseAddress)(call.contractAddress);
49
- fullCalldata.push(normalizedContractAddress, selector, calldataArray.length.toString(), ...calldataArray.map(cd => String(cd)));
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
- // Format calldata for RPC (convert all values to proper hex format)
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
- sellAsset,
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.getEvmNetworkFeeCryptoBaseUnit)({
31
+ return await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
32
32
  adapter,
33
33
  supportsEIP1559,
34
- gasLimit: (0, utils_1.bnOrZero)(route.gasEstimatedTarget).toFixed(),
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: '500000000000000',
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('500000000000000');
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)(constants_2.PYTH_DEPENDENT_PROVIDERS);
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.dryRunTransactionBlock({
24
- transactionBlock: transactionBytes,
25
+ const dryRunResult = await suiClient.simulateTransaction({
26
+ transaction: transactionBytes,
27
+ include: { effects: true },
25
28
  });
26
- const computationCost = BigInt(dryRunResult.effects.gasUsed.computationCost);
27
- const storageCost = BigInt(dryRunResult.effects.gasUsed.storageCost);
28
- const storageRebate = BigInt(dryRunResult.effects.gasUsed.storageRebate);
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
- if (error instanceof Error && error.message.includes('Not enough coins of type')) {
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)(constants_1.PYTH_DEPENDENT_PROVIDERS);
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.PYTH_DEPENDENT_PROVIDERS = exports.isSupportedChainId = exports.SUPPORTED_CETUS_CHAIN_IDS = void 0;
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 { SuiClient } from '@mysten/sui/client';
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 getAggregatorClient: (rpcUrl: string) => AggregatorClient;
8
- export declare const getSuiClient: (rpcUrl: string) => SuiClient;
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.getSuiClient = exports.getAggregatorClient = void 0;
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 client_1 = require("@mysten/sui/client");
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 client_1.SuiClient({ url: rpcUrl });
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)({
@@ -4,7 +4,6 @@ import type { DebridgeTx } from './types';
4
4
  type BaseArgs = {
5
5
  tx: DebridgeTx;
6
6
  sellAmountCryptoBaseUnit: string;
7
- gasLimit: string | undefined;
8
7
  spenderAddress: string;
9
8
  fallbackNetworkFeeCryptoBaseUnit: string | undefined;
10
9
  };
@@ -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, gasLimit, spenderAddress, fallbackNetworkFeeCryptoBaseUnit, sellAsset, from, type, input, deps, } = args;
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
- const networkFeeCryptoBaseUnit = await (async () => {
27
- try {
28
- return await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
29
- adapter,
30
- transactionData,
31
- from,
32
- supportsEIP1559,
33
- stateOverride,
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.getEvmNetworkFeeCryptoBaseUnit)({
21
+ const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
22
22
  adapter,
23
- transactionData,
24
- from,
25
23
  supportsEIP1559,
26
- stateOverride,
27
- })
28
- .catch(() => (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({ adapter, supportsEIP1559, gasLimit: quote.gas_estimate }))
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,2 @@
1
+ import type { Swapper } from '../../types';
2
+ export declare const kyberSwapper: Swapper;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kyberSwapper = void 0;
4
+ const utils_1 = require("../../utils");
5
+ exports.kyberSwapper = { executeEvmTransaction: utils_1.executeEvmTransaction };
@@ -0,0 +1,2 @@
1
+ import type { SwapperApi } from '../../types';
2
+ export declare const kyberApi: SwapperApi;
@@ -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,2 @@
1
+ export { kyberApi } from './endpoints';
2
+ export { kyberSwapper } from './KyberSwapper';
@@ -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>>;