@shapeshiftoss/swapper 17.6.7 → 17.6.9

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 (219) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.js +42 -24
  3. package/dist/cjs/cowswap-utils/constants.js +1 -0
  4. package/dist/cjs/cowswap-utils/index.js +2 -0
  5. package/dist/cjs/index.d.ts +2 -0
  6. package/dist/cjs/index.js +2 -0
  7. package/dist/cjs/swappers/AvnuSwapper/AvnuSwapper.d.ts +2 -0
  8. package/dist/cjs/swappers/AvnuSwapper/AvnuSwapper.js +7 -0
  9. package/dist/cjs/swappers/AvnuSwapper/endpoints.d.ts +2 -0
  10. package/dist/cjs/swappers/AvnuSwapper/endpoints.js +181 -0
  11. package/dist/cjs/swappers/AvnuSwapper/index.d.ts +1 -0
  12. package/dist/cjs/swappers/AvnuSwapper/index.js +5 -0
  13. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.d.ts +3 -0
  14. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +142 -0
  15. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.d.ts +3 -0
  16. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +120 -0
  17. package/dist/cjs/swappers/AvnuSwapper/types.d.ts +2 -0
  18. package/dist/cjs/swappers/AvnuSwapper/types.js +2 -0
  19. package/dist/cjs/swappers/AvnuSwapper/utils/constants.d.ts +5 -0
  20. package/dist/cjs/swappers/AvnuSwapper/utils/constants.js +11 -0
  21. package/dist/cjs/swappers/AvnuSwapper/utils/helpers.d.ts +7 -0
  22. package/dist/cjs/swappers/AvnuSwapper/utils/helpers.js +21 -0
  23. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +2 -0
  24. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +4 -0
  25. package/dist/cjs/swappers/ButterSwap/utils/helpers.js +1 -0
  26. package/dist/cjs/swappers/CetusSwapper/endpoints.js +33 -27
  27. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeData.d.ts +24 -0
  28. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeData.js +79 -0
  29. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +44 -69
  30. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +49 -65
  31. package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +1 -0
  32. package/dist/cjs/swappers/CetusSwapper/utils/constants.js +2 -1
  33. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +6 -11
  34. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +41 -96
  35. package/dist/cjs/swappers/JupiterSwapper/utils/helpers.d.ts +0 -2
  36. package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +1 -0
  37. package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -0
  38. package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +68 -0
  39. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +30 -0
  40. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +53 -5
  41. package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +1 -1
  42. package/dist/cjs/swappers/NearIntentsSwapper/types.js +8 -0
  43. package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers/helpers.js +28 -8
  44. package/dist/cjs/swappers/PortalsSwapper/constants.js +1 -1
  45. package/dist/cjs/swappers/PortalsSwapper/endpoints.js +92 -1
  46. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +29 -17
  47. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +21 -17
  48. package/dist/cjs/swappers/PortalsSwapper/types.js +1 -0
  49. package/dist/cjs/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.d.ts +9 -0
  50. package/dist/cjs/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.js +52 -0
  51. package/dist/cjs/swappers/PortalsSwapper/utils/fetchPortalsTradeOrder.d.ts +1 -0
  52. package/dist/cjs/swappers/PortalsSwapper/utils/fetchSquidStatus.d.ts +9 -0
  53. package/dist/cjs/swappers/PortalsSwapper/utils/fetchSquidStatus.js +57 -0
  54. package/dist/cjs/swappers/RelaySwapper/constant.js +3 -0
  55. package/dist/cjs/swappers/RelaySwapper/utils/fetchRelayTrade.js +1 -1
  56. package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +16 -1
  57. package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +20 -0
  58. package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +13 -4
  59. package/dist/cjs/swappers/RelaySwapper/utils/types.js +5 -1
  60. package/dist/cjs/swappers/SunioSwapper/SunioSwapper.d.ts +2 -0
  61. package/dist/cjs/swappers/SunioSwapper/SunioSwapper.js +7 -0
  62. package/dist/cjs/swappers/SunioSwapper/endpoints.d.ts +2 -0
  63. package/dist/cjs/swappers/SunioSwapper/endpoints.js +131 -0
  64. package/dist/cjs/swappers/SunioSwapper/getSunioTradeQuote/getSunioTradeQuote.d.ts +3 -0
  65. package/dist/cjs/swappers/SunioSwapper/getSunioTradeQuote/getSunioTradeQuote.js +8 -0
  66. package/dist/cjs/swappers/SunioSwapper/getSunioTradeRate/getSunioTradeRate.d.ts +3 -0
  67. package/dist/cjs/swappers/SunioSwapper/getSunioTradeRate/getSunioTradeRate.js +8 -0
  68. package/dist/cjs/swappers/SunioSwapper/index.d.ts +4 -0
  69. package/dist/cjs/swappers/SunioSwapper/index.js +23 -0
  70. package/dist/cjs/swappers/SunioSwapper/types.d.ts +22 -0
  71. package/dist/cjs/swappers/SunioSwapper/types.js +12 -0
  72. package/dist/cjs/swappers/SunioSwapper/utils/abi.d.ts +48 -0
  73. package/dist/cjs/swappers/SunioSwapper/utils/abi.js +28 -0
  74. package/dist/cjs/swappers/SunioSwapper/utils/buildSwapRouteParameters.d.ts +14 -0
  75. package/dist/cjs/swappers/SunioSwapper/utils/buildSwapRouteParameters.js +32 -0
  76. package/dist/cjs/swappers/SunioSwapper/utils/buildSwapTransaction.d.ts +11 -0
  77. package/dist/cjs/swappers/SunioSwapper/utils/buildSwapTransaction.js +57 -0
  78. package/dist/cjs/swappers/SunioSwapper/utils/constants.d.ts +6 -0
  79. package/dist/cjs/swappers/SunioSwapper/utils/constants.js +16 -0
  80. package/dist/cjs/swappers/SunioSwapper/utils/fetchFromSunio.d.ts +11 -0
  81. package/dist/cjs/swappers/SunioSwapper/utils/fetchFromSunio.js +45 -0
  82. package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.d.ts +4 -0
  83. package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.js +203 -0
  84. package/dist/cjs/swappers/SunioSwapper/utils/helpers/helpers.d.ts +4 -0
  85. package/dist/cjs/swappers/SunioSwapper/utils/helpers/helpers.js +22 -0
  86. package/dist/cjs/swappers/SunioSwapper/utils/sunioService.d.ts +6 -0
  87. package/dist/cjs/swappers/SunioSwapper/utils/sunioService.js +18 -0
  88. package/dist/cjs/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  89. package/dist/cjs/swappers/ThorchainSwapper/endpoints.js +2 -0
  90. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +2 -2
  91. package/dist/cjs/swappers/utils/helpers/helpers.js +7 -0
  92. package/dist/cjs/thorchain-utils/getL1RateOrQuote.js +80 -3
  93. package/dist/cjs/thorchain-utils/index.d.ts +1 -0
  94. package/dist/cjs/thorchain-utils/index.js +2 -1
  95. package/dist/cjs/thorchain-utils/tron/getThorTxData.d.ts +12 -0
  96. package/dist/cjs/thorchain-utils/tron/getThorTxData.js +14 -0
  97. package/dist/cjs/thorchain-utils/tron/getTronTransactionFees.d.ts +2 -0
  98. package/dist/cjs/thorchain-utils/tron/getTronTransactionFees.js +65 -0
  99. package/dist/cjs/thorchain-utils/tron/getUnsignedTronTransaction.d.ts +3 -0
  100. package/dist/cjs/thorchain-utils/tron/getUnsignedTronTransaction.js +35 -0
  101. package/dist/cjs/thorchain-utils/tron/index.d.ts +3 -0
  102. package/dist/cjs/thorchain-utils/tron/index.js +19 -0
  103. package/dist/cjs/types.d.ts +74 -9
  104. package/dist/cjs/types.js +2 -0
  105. package/dist/cjs/utils/tenderly/simulate.d.ts +6 -1
  106. package/dist/cjs/utils/tenderly/simulate.js +22 -2
  107. package/dist/cjs/utils/tenderly/types.d.ts +21 -0
  108. package/dist/cjs/utils.d.ts +10 -4
  109. package/dist/cjs/utils.js +53 -1
  110. package/dist/esm/.tsbuildinfo +1 -1
  111. package/dist/esm/constants.js +18 -0
  112. package/dist/esm/cowswap-utils/constants.js +1 -0
  113. package/dist/esm/cowswap-utils/index.js +2 -0
  114. package/dist/esm/index.d.ts +2 -0
  115. package/dist/esm/index.js +2 -0
  116. package/dist/esm/swappers/AvnuSwapper/AvnuSwapper.d.ts +2 -0
  117. package/dist/esm/swappers/AvnuSwapper/AvnuSwapper.js +4 -0
  118. package/dist/esm/swappers/AvnuSwapper/endpoints.d.ts +2 -0
  119. package/dist/esm/swappers/AvnuSwapper/endpoints.js +178 -0
  120. package/dist/esm/swappers/AvnuSwapper/index.d.ts +1 -0
  121. package/dist/esm/swappers/AvnuSwapper/index.js +1 -0
  122. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.d.ts +3 -0
  123. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +138 -0
  124. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.d.ts +3 -0
  125. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +116 -0
  126. package/dist/esm/swappers/AvnuSwapper/types.d.ts +2 -0
  127. package/dist/esm/swappers/AvnuSwapper/types.js +1 -0
  128. package/dist/esm/swappers/AvnuSwapper/utils/constants.d.ts +5 -0
  129. package/dist/esm/swappers/AvnuSwapper/utils/constants.js +7 -0
  130. package/dist/esm/swappers/AvnuSwapper/utils/helpers.d.ts +7 -0
  131. package/dist/esm/swappers/AvnuSwapper/utils/helpers.js +17 -0
  132. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +2 -0
  133. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +4 -0
  134. package/dist/esm/swappers/ButterSwap/utils/helpers.js +1 -0
  135. package/dist/esm/swappers/CetusSwapper/endpoints.js +28 -22
  136. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeData.d.ts +24 -0
  137. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeData.js +75 -0
  138. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +44 -69
  139. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +50 -66
  140. package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +1 -0
  141. package/dist/esm/swappers/CetusSwapper/utils/constants.js +1 -0
  142. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +6 -11
  143. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +37 -67
  144. package/dist/esm/swappers/JupiterSwapper/utils/helpers.d.ts +0 -2
  145. package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +1 -0
  146. package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +3 -1
  147. package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +68 -0
  148. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +30 -0
  149. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +54 -6
  150. package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +1 -1
  151. package/dist/esm/swappers/NearIntentsSwapper/types.js +8 -0
  152. package/dist/esm/swappers/NearIntentsSwapper/utils/helpers/helpers.js +29 -9
  153. package/dist/esm/swappers/PortalsSwapper/constants.js +1 -1
  154. package/dist/esm/swappers/PortalsSwapper/endpoints.js +92 -1
  155. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +30 -18
  156. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +21 -17
  157. package/dist/esm/swappers/PortalsSwapper/types.js +1 -0
  158. package/dist/esm/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.d.ts +9 -0
  159. package/dist/esm/swappers/PortalsSwapper/utils/fetchAxelarscanStatus.js +47 -0
  160. package/dist/esm/swappers/PortalsSwapper/utils/fetchPortalsTradeOrder.d.ts +1 -0
  161. package/dist/esm/swappers/PortalsSwapper/utils/fetchSquidStatus.d.ts +9 -0
  162. package/dist/esm/swappers/PortalsSwapper/utils/fetchSquidStatus.js +52 -0
  163. package/dist/esm/swappers/RelaySwapper/constant.js +5 -2
  164. package/dist/esm/swappers/RelaySwapper/utils/fetchRelayTrade.js +1 -1
  165. package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +18 -3
  166. package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +20 -0
  167. package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +13 -4
  168. package/dist/esm/swappers/RelaySwapper/utils/types.js +3 -0
  169. package/dist/esm/swappers/SunioSwapper/SunioSwapper.d.ts +2 -0
  170. package/dist/esm/swappers/SunioSwapper/SunioSwapper.js +4 -0
  171. package/dist/esm/swappers/SunioSwapper/endpoints.d.ts +2 -0
  172. package/dist/esm/swappers/SunioSwapper/endpoints.js +128 -0
  173. package/dist/esm/swappers/SunioSwapper/getSunioTradeQuote/getSunioTradeQuote.d.ts +3 -0
  174. package/dist/esm/swappers/SunioSwapper/getSunioTradeQuote/getSunioTradeQuote.js +4 -0
  175. package/dist/esm/swappers/SunioSwapper/getSunioTradeRate/getSunioTradeRate.d.ts +3 -0
  176. package/dist/esm/swappers/SunioSwapper/getSunioTradeRate/getSunioTradeRate.js +4 -0
  177. package/dist/esm/swappers/SunioSwapper/index.d.ts +4 -0
  178. package/dist/esm/swappers/SunioSwapper/index.js +4 -0
  179. package/dist/esm/swappers/SunioSwapper/types.d.ts +22 -0
  180. package/dist/esm/swappers/SunioSwapper/types.js +9 -0
  181. package/dist/esm/swappers/SunioSwapper/utils/abi.d.ts +48 -0
  182. package/dist/esm/swappers/SunioSwapper/utils/abi.js +25 -0
  183. package/dist/esm/swappers/SunioSwapper/utils/buildSwapRouteParameters.d.ts +14 -0
  184. package/dist/esm/swappers/SunioSwapper/utils/buildSwapRouteParameters.js +28 -0
  185. package/dist/esm/swappers/SunioSwapper/utils/buildSwapTransaction.d.ts +11 -0
  186. package/dist/esm/swappers/SunioSwapper/utils/buildSwapTransaction.js +53 -0
  187. package/dist/esm/swappers/SunioSwapper/utils/constants.d.ts +6 -0
  188. package/dist/esm/swappers/SunioSwapper/utils/constants.js +13 -0
  189. package/dist/esm/swappers/SunioSwapper/utils/fetchFromSunio.d.ts +11 -0
  190. package/dist/esm/swappers/SunioSwapper/utils/fetchFromSunio.js +41 -0
  191. package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.d.ts +4 -0
  192. package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +199 -0
  193. package/dist/esm/swappers/SunioSwapper/utils/helpers/helpers.d.ts +4 -0
  194. package/dist/esm/swappers/SunioSwapper/utils/helpers/helpers.js +16 -0
  195. package/dist/esm/swappers/SunioSwapper/utils/sunioService.d.ts +6 -0
  196. package/dist/esm/swappers/SunioSwapper/utils/sunioService.js +14 -0
  197. package/dist/esm/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  198. package/dist/esm/swappers/ThorchainSwapper/endpoints.js +3 -1
  199. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +2 -2
  200. package/dist/esm/swappers/utils/helpers/helpers.js +9 -2
  201. package/dist/esm/thorchain-utils/getL1RateOrQuote.js +81 -4
  202. package/dist/esm/thorchain-utils/index.d.ts +1 -0
  203. package/dist/esm/thorchain-utils/index.js +1 -0
  204. package/dist/esm/thorchain-utils/tron/getThorTxData.d.ts +12 -0
  205. package/dist/esm/thorchain-utils/tron/getThorTxData.js +10 -0
  206. package/dist/esm/thorchain-utils/tron/getTronTransactionFees.d.ts +2 -0
  207. package/dist/esm/thorchain-utils/tron/getTronTransactionFees.js +61 -0
  208. package/dist/esm/thorchain-utils/tron/getUnsignedTronTransaction.d.ts +3 -0
  209. package/dist/esm/thorchain-utils/tron/getUnsignedTronTransaction.js +31 -0
  210. package/dist/esm/thorchain-utils/tron/index.d.ts +3 -0
  211. package/dist/esm/thorchain-utils/tron/index.js +3 -0
  212. package/dist/esm/types.d.ts +74 -9
  213. package/dist/esm/types.js +2 -0
  214. package/dist/esm/utils/tenderly/simulate.d.ts +6 -1
  215. package/dist/esm/utils/tenderly/simulate.js +20 -1
  216. package/dist/esm/utils/tenderly/types.d.ts +21 -0
  217. package/dist/esm/utils.d.ts +10 -4
  218. package/dist/esm/utils.js +50 -1
  219. package/package.json +5 -4
@@ -1,40 +1,33 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.calculateSwapAmounts = exports.findBestPool = exports.calculateAmountLimit = exports.determineSwapDirection = exports.getCoinType = exports.getCetusSDK = void 0;
3
+ exports.findBestRoute = exports.getCoinType = exports.getSuiClient = exports.getAggregatorClient = void 0;
4
+ const aggregator_sdk_1 = require("@cetusprotocol/aggregator-sdk");
5
+ const client_1 = require("@cetusprotocol/aggregator-sdk/node_modules/@mysten/sui/client");
27
6
  const caip_1 = require("@shapeshiftoss/caip");
28
- const utils_1 = require("@shapeshiftoss/utils");
29
- let sdkInstance;
30
- const getCetusSDK = async () => {
31
- if (!sdkInstance) {
32
- const { initMainnetSDK } = await Promise.resolve().then(() => __importStar(require('@cetusprotocol/cetus-sui-clmm-sdk')));
33
- sdkInstance = initMainnetSDK();
7
+ let suiClientInstance;
8
+ let aggregatorClientInstance;
9
+ let currentRpcUrl;
10
+ const getAggregatorClient = (rpcUrl) => {
11
+ if (!aggregatorClientInstance || !suiClientInstance || currentRpcUrl !== rpcUrl) {
12
+ suiClientInstance = new client_1.SuiClient({ url: rpcUrl });
13
+ aggregatorClientInstance = new aggregator_sdk_1.AggregatorClient({
14
+ client: suiClientInstance,
15
+ env: aggregator_sdk_1.Env.Mainnet,
16
+ signer: '0x0',
17
+ });
18
+ currentRpcUrl = rpcUrl;
19
+ }
20
+ return aggregatorClientInstance;
21
+ };
22
+ exports.getAggregatorClient = getAggregatorClient;
23
+ const getSuiClient = (rpcUrl) => {
24
+ if (!suiClientInstance || currentRpcUrl !== rpcUrl) {
25
+ suiClientInstance = new client_1.SuiClient({ url: rpcUrl });
26
+ currentRpcUrl = rpcUrl;
34
27
  }
35
- return sdkInstance;
28
+ return suiClientInstance;
36
29
  };
37
- exports.getCetusSDK = getCetusSDK;
30
+ exports.getSuiClient = getSuiClient;
38
31
  const getCoinType = (asset) => {
39
32
  const { assetReference, assetNamespace } = (0, caip_1.fromAssetId)(asset.assetId);
40
33
  // For native SUI token, the assetReference is 'slip44:784' but Cetus expects '0x2::sui::SUI'
@@ -45,74 +38,26 @@ const getCoinType = (asset) => {
45
38
  return assetReference;
46
39
  };
47
40
  exports.getCoinType = getCoinType;
48
- const determineSwapDirection = (pool, sellCoinType, buyCoinType) => {
49
- if (pool.coinTypeA === sellCoinType && pool.coinTypeB === buyCoinType) {
50
- return true;
51
- }
52
- if (pool.coinTypeA === buyCoinType && pool.coinTypeB === sellCoinType) {
53
- return false;
54
- }
55
- throw new Error('Pool does not match the swap pair');
56
- };
57
- exports.determineSwapDirection = determineSwapDirection;
58
- const calculateAmountLimit = (estimatedAmount, slippageTolerancePercentageDecimal, isBuyAmount) => {
59
- if (!slippageTolerancePercentageDecimal) {
60
- return estimatedAmount;
61
- }
62
- const slippageFactor = (0, utils_1.bn)(1).minus(slippageTolerancePercentageDecimal);
63
- if (isBuyAmount) {
64
- return (0, utils_1.bnOrZero)(estimatedAmount).times(slippageFactor).toFixed(0);
65
- }
66
- const maxSlippageFactor = (0, utils_1.bn)(1).plus(slippageTolerancePercentageDecimal);
67
- return (0, utils_1.bnOrZero)(estimatedAmount).times(maxSlippageFactor).toFixed(0);
68
- };
69
- exports.calculateAmountLimit = calculateAmountLimit;
70
- const findBestPool = async (sdk, sellCoinType, buyCoinType) => {
71
- const pools = await sdk.Pool.getPoolByCoins([sellCoinType, buyCoinType]);
72
- if (!pools || pools.length === 0) {
73
- return undefined;
74
- }
75
- const poolWithLiquidity = pools.find(pool => {
76
- const hasLiquidity = pool.liquidity && (0, utils_1.bnOrZero)(pool.liquidity).gt(0);
77
- return hasLiquidity;
41
+ const findBestRoute = async (client, sellCoinType, buyCoinType, sellAmountCryptoBaseUnit, providers) => {
42
+ const routerData = await client.findRouters({
43
+ from: sellCoinType,
44
+ target: buyCoinType,
45
+ amount: sellAmountCryptoBaseUnit,
46
+ byAmountIn: true,
47
+ ...(providers && { providers }),
78
48
  });
79
- if (!poolWithLiquidity) {
80
- console.warn('[Cetus] No pools with liquidity found for', sellCoinType, buyCoinType, {
81
- totalPools: pools.length,
82
- pools: pools.map(p => ({ id: p.poolAddress, liquidity: p.liquidity })),
83
- });
49
+ if (!routerData) {
50
+ console.warn('[Cetus Aggregator] No route found for', sellCoinType, buyCoinType);
51
+ return undefined;
84
52
  }
85
- return poolWithLiquidity;
86
- };
87
- exports.findBestPool = findBestPool;
88
- const calculateSwapAmounts = async (sdk, pool, sellAsset, buyAsset, sellAmount) => {
89
- const sellCoinType = (0, exports.getCoinType)(sellAsset);
90
- const buyCoinType = (0, exports.getCoinType)(buyAsset);
91
- const a2b = (0, exports.determineSwapDirection)(pool, sellCoinType, buyCoinType);
92
- const decimalsA = pool.coinTypeA === sellCoinType ? sellAsset.precision : buyAsset.precision;
93
- const decimalsB = pool.coinTypeA === sellCoinType ? buyAsset.precision : sellAsset.precision;
94
- const preSwapParams = {
95
- pool,
96
- currentSqrtPrice: pool.current_sqrt_price,
97
- coinTypeA: pool.coinTypeA,
98
- coinTypeB: pool.coinTypeB,
99
- decimalsA,
100
- decimalsB,
101
- a2b,
102
- byAmountIn: true,
103
- amount: sellAmount,
104
- };
105
- const preSwapResult = await sdk.Swap.preswap(preSwapParams);
106
- if (!preSwapResult) {
53
+ if (routerData.insufficientLiquidity) {
54
+ console.warn('[Cetus Aggregator] Insufficient liquidity for', sellCoinType, buyCoinType);
107
55
  return undefined;
108
56
  }
109
- if (preSwapResult.estimatedAmountOut === '0' || preSwapResult.estimatedAmountOut === '') {
57
+ if (routerData.error) {
58
+ console.warn('[Cetus Aggregator] Error finding route:', routerData.error);
110
59
  return undefined;
111
60
  }
112
- return {
113
- estimatedAmountOut: preSwapResult.estimatedAmountOut,
114
- estimatedAmountIn: preSwapResult.estimatedAmountIn,
115
- estimatedFeeAmount: preSwapResult.estimatedFeeAmount,
116
- };
61
+ return routerData;
117
62
  };
118
- exports.calculateSwapAmounts = calculateSwapAmounts;
63
+ exports.findBestRoute = findBestRoute;
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import type { QuoteResponse, SwapInstructionsResponse } from '@jup-ag/api';
4
2
  import type { ChainId } from '@shapeshiftoss/caip';
5
3
  import type { solana } from '@shapeshiftoss/chain-adapters';
@@ -21,5 +21,6 @@
21
21
  "ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7",
22
22
  "ETH.WSTETH-0X7F39C581F595B53C5CB19BD0B3F8DA6C935E2CA0": "eip155:1/erc20:0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0",
23
23
  "THOR.RUNE": "cosmos:thorchain-1/slip44:931",
24
+ "ZEC.ZEC": "bip122:00040fe8ec8471911baa1db1266ea15d/slip44:133",
24
25
  "MAYA.CACAO": "cosmos:mayachain-mainnet-v1/slip44:931"
25
26
  }
@@ -5,8 +5,10 @@ const utils_1 = require("../../utils");
5
5
  exports.nearIntentsSwapper = {
6
6
  executeEvmTransaction: utils_1.executeEvmTransaction,
7
7
  executeSolanaTransaction: utils_1.executeSolanaTransaction,
8
+ executeStarknetTransaction: utils_1.executeStarknetTransaction,
8
9
  executeTronTransaction: utils_1.executeTronTransaction,
9
10
  executeSuiTransaction: utils_1.executeSuiTransaction,
11
+ executeNearTransaction: utils_1.executeNearTransaction,
10
12
  executeUtxoTransaction: (txToSign, { signAndBroadcastTransaction }) => {
11
13
  return signAndBroadcastTransaction(txToSign);
12
14
  },
@@ -180,6 +180,74 @@ exports.nearIntentsApi = {
180
180
  }
181
181
  return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
182
182
  },
183
+ getUnsignedNearTransaction: async ({ stepIndex, tradeQuote, from, assertGetNearChainAdapter, }) => {
184
+ if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
185
+ throw new Error('Unable to execute a trade rate quote');
186
+ const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
187
+ const { accountNumber, sellAsset, nearIntentsSpecific } = step;
188
+ if (!nearIntentsSpecific)
189
+ throw new Error('nearIntentsSpecific is required');
190
+ const adapter = assertGetNearChainAdapter(sellAsset.chainId);
191
+ const to = nearIntentsSpecific.depositAddress;
192
+ const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
193
+ const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
194
+ return await adapter.buildSendApiTransaction({
195
+ to,
196
+ from,
197
+ value,
198
+ accountNumber,
199
+ chainSpecific: { contractAddress },
200
+ });
201
+ },
202
+ getNearTransactionFees: ({ tradeQuote, stepIndex }) => {
203
+ if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
204
+ throw new Error('Unable to execute a trade rate quote');
205
+ const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
206
+ if (!step.feeData.networkFeeCryptoBaseUnit) {
207
+ throw new Error('Missing network fee in quote');
208
+ }
209
+ return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
210
+ },
211
+ getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, assertGetStarknetChainAdapter, }) => {
212
+ if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
213
+ throw new Error('Unable to execute a trade rate quote');
214
+ const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
215
+ const { accountNumber, sellAsset, nearIntentsSpecific } = step;
216
+ if (!nearIntentsSpecific)
217
+ throw new Error('nearIntentsSpecific is required');
218
+ const adapter = assertGetStarknetChainAdapter(sellAsset.chainId);
219
+ const to = nearIntentsSpecific.depositAddress;
220
+ const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
221
+ const tokenContractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
222
+ const { fast } = await adapter.getFeeData({
223
+ to,
224
+ value,
225
+ chainSpecific: {
226
+ from,
227
+ tokenContractAddress,
228
+ },
229
+ sendMax: false,
230
+ });
231
+ return adapter.buildSendApiTransaction({
232
+ from,
233
+ to,
234
+ value,
235
+ accountNumber,
236
+ chainSpecific: {
237
+ tokenContractAddress,
238
+ maxFee: fast.chainSpecific.maxFee,
239
+ },
240
+ });
241
+ },
242
+ getStarknetTransactionFees: ({ tradeQuote, stepIndex }) => {
243
+ if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
244
+ throw new Error('Unable to execute a trade rate quote');
245
+ const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
246
+ if (!step.feeData.networkFeeCryptoBaseUnit) {
247
+ throw new Error('Missing network fee in quote');
248
+ }
249
+ return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
250
+ },
183
251
  checkTradeStatus: async ({ config, swap }) => {
184
252
  const { nearIntentsSpecific } = swap?.metadata ?? {};
185
253
  if (!nearIntentsSpecific?.depositAddress) {
@@ -148,9 +148,14 @@ const getTradeQuote = async (input, deps) => {
148
148
  }
149
149
  case caip_1.CHAIN_NAMESPACE.Tron: {
150
150
  const sellAdapter = deps.assertGetTronChainAdapter(sellAsset.chainId);
151
+ const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
151
152
  const feeData = await sellAdapter.getFeeData({
152
153
  to: depositAddress,
153
154
  value: sellAmount,
155
+ chainSpecific: {
156
+ from: sendAddress,
157
+ contractAddress,
158
+ },
154
159
  });
155
160
  return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
156
161
  }
@@ -170,6 +175,31 @@ const getTradeQuote = async (input, deps) => {
170
175
  });
171
176
  return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
172
177
  }
178
+ case caip_1.CHAIN_NAMESPACE.Near: {
179
+ const sellAdapter = deps.assertGetNearChainAdapter(sellAsset.chainId);
180
+ const feeData = await sellAdapter.getFeeData({
181
+ to: depositAddress,
182
+ value: sellAmount,
183
+ chainSpecific: { from },
184
+ });
185
+ return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
186
+ }
187
+ case caip_1.CHAIN_NAMESPACE.Starknet: {
188
+ const sellAdapter = deps.assertGetStarknetChainAdapter(sellAsset.chainId);
189
+ const tokenContractAddress = (0, utils_1.isToken)(sellAsset.assetId)
190
+ ? (0, caip_1.fromAssetId)(sellAsset.assetId).assetReference
191
+ : undefined;
192
+ const feeData = await sellAdapter.getFeeData({
193
+ to: depositAddress,
194
+ value: sellAmount,
195
+ chainSpecific: {
196
+ from,
197
+ tokenContractAddress,
198
+ },
199
+ sendMax: false,
200
+ });
201
+ return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
202
+ }
173
203
  default:
174
204
  throw new Error(`Unsupported chain namespace: ${chainNamespace}`);
175
205
  }
@@ -23,14 +23,12 @@ const getTradeRate = async (input, deps) => {
23
23
  const originAsset = await (0, helpers_2.assetToNearIntentsAsset)(sellAsset);
24
24
  const destinationAsset = await (0, helpers_2.assetToNearIntentsAsset)(buyAsset);
25
25
  if (!originAsset) {
26
- console.log('[NEAR] Returning error - originAsset not supported');
27
26
  return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
28
27
  code: types_1.TradeQuoteError.UnsupportedTradePair,
29
28
  message: `Asset ${sellAsset.symbol} on ${sellAsset.networkName || sellAsset.chainId} is not supported by NEAR Intents`,
30
29
  }));
31
30
  }
32
31
  if (!destinationAsset) {
33
- console.log('[NEAR] Returning error - destinationAsset not supported');
34
32
  return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
35
33
  code: types_1.TradeQuoteError.UnsupportedTradePair,
36
34
  message: `Asset ${buyAsset.symbol} on ${buyAsset.networkName || buyAsset.chainId} is not supported by NEAR Intents`,
@@ -76,9 +74,31 @@ const getTradeRate = async (input, deps) => {
76
74
  const getFeeData = async () => {
77
75
  switch (chainNamespace) {
78
76
  case caip_1.CHAIN_NAMESPACE.Evm: {
77
+ const sellAdapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
78
+ const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
79
+ const data = chain_adapters_1.evm.getErc20Data(depositAddress, sellAmount, contractAddress);
80
+ // For Monad, skip Tenderly and use adapter's getFeeData directly
81
+ if (sellAsset.chainId === caip_1.monadChainId) {
82
+ try {
83
+ const feeData = await sellAdapter.getFeeData({
84
+ to: contractAddress ?? depositAddress,
85
+ value: (0, helpers_1.isNativeEvmAsset)(sellAsset.assetId) ? sellAmount : '0',
86
+ chainSpecific: {
87
+ from: sendAddress || depositAddress,
88
+ contractAddress,
89
+ data: data || '0x',
90
+ },
91
+ sendMax: false,
92
+ });
93
+ return feeData.fast.txFee;
94
+ }
95
+ catch (error) {
96
+ console.error('Failed to estimate fees for Monad Near Intents:', error);
97
+ return '0';
98
+ }
99
+ }
100
+ // For other EVM chains, use Tenderly simulation
79
101
  try {
80
- const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
81
- const data = chain_adapters_1.evm.getErc20Data(depositAddress, sellAmount, contractAddress);
82
102
  const simulationResult = await (0, tenderly_1.simulateWithStateOverrides)({
83
103
  chainId: sellAsset.chainId,
84
104
  from: (0, viem_1.getAddress)(sendAddress || depositAddress),
@@ -95,7 +115,6 @@ const getTradeRate = async (input, deps) => {
95
115
  return '0';
96
116
  }
97
117
  // Calculate network fee using the simulated gas limit
98
- const sellAdapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
99
118
  const { average } = await sellAdapter.getGasFeeData();
100
119
  const supportsEIP1559 = 'maxFeePerGas' in average;
101
120
  const networkFeeCryptoBaseUnit = chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({
@@ -159,9 +178,14 @@ const getTradeRate = async (input, deps) => {
159
178
  case caip_1.CHAIN_NAMESPACE.Tron: {
160
179
  try {
161
180
  const sellAdapter = deps.assertGetTronChainAdapter(sellAsset.chainId);
181
+ const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
162
182
  const feeData = await sellAdapter.getFeeData({
163
183
  to: depositAddress,
164
184
  value: sellAmount,
185
+ chainSpecific: {
186
+ from: sendAddress,
187
+ contractAddress,
188
+ },
165
189
  });
166
190
  return feeData.fast.txFee;
167
191
  }
@@ -193,6 +217,30 @@ const getTradeRate = async (input, deps) => {
193
217
  return '0';
194
218
  }
195
219
  }
220
+ case caip_1.CHAIN_NAMESPACE.Starknet: {
221
+ try {
222
+ const sellAdapter = deps.assertGetStarknetChainAdapter(sellAsset.chainId);
223
+ const tokenContractAddress = (0, utils_1.isToken)(sellAsset.assetId)
224
+ ? (0, caip_1.fromAssetId)(sellAsset.assetId).assetReference
225
+ : undefined;
226
+ if (!sendAddress) {
227
+ return '0';
228
+ }
229
+ const feeData = await sellAdapter.getFeeData({
230
+ to: depositAddress,
231
+ value: sellAmount,
232
+ chainSpecific: {
233
+ from: sendAddress,
234
+ tokenContractAddress,
235
+ },
236
+ sendMax: false,
237
+ });
238
+ return feeData.fast.txFee;
239
+ }
240
+ catch (error) {
241
+ return '0';
242
+ }
243
+ }
196
244
  default:
197
245
  return undefined;
198
246
  }
@@ -1,6 +1,6 @@
1
1
  import { KnownChainIds } from '@shapeshiftoss/types';
2
2
  export { QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
3
3
  export type { GetExecutionStatusResponse, QuoteResponse, TokenResponse, } from '@defuse-protocol/one-click-sdk-typescript';
4
- export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet];
4
+ export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet];
5
5
  export type NearIntentsSupportedChainId = (typeof nearIntentsSupportedChainIds)[number];
6
6
  export declare const chainIdToNearIntentsChain: Record<NearIntentsSupportedChainId, string>;
@@ -15,9 +15,13 @@ exports.nearIntentsSupportedChainIds = [
15
15
  types_1.KnownChainIds.OptimismMainnet,
16
16
  types_1.KnownChainIds.BitcoinMainnet,
17
17
  types_1.KnownChainIds.DogecoinMainnet,
18
+ types_1.KnownChainIds.ZcashMainnet,
18
19
  types_1.KnownChainIds.SolanaMainnet,
19
20
  types_1.KnownChainIds.TronMainnet,
20
21
  types_1.KnownChainIds.SuiMainnet,
22
+ types_1.KnownChainIds.StarknetMainnet,
23
+ types_1.KnownChainIds.MonadMainnet,
24
+ types_1.KnownChainIds.NearMainnet,
21
25
  ];
22
26
  exports.chainIdToNearIntentsChain = {
23
27
  [types_1.KnownChainIds.EthereumMainnet]: 'eth',
@@ -30,7 +34,11 @@ exports.chainIdToNearIntentsChain = {
30
34
  [types_1.KnownChainIds.OptimismMainnet]: 'op',
31
35
  [types_1.KnownChainIds.BitcoinMainnet]: 'btc',
32
36
  [types_1.KnownChainIds.DogecoinMainnet]: 'doge',
37
+ [types_1.KnownChainIds.ZcashMainnet]: 'zec',
33
38
  [types_1.KnownChainIds.SolanaMainnet]: 'sol',
34
39
  [types_1.KnownChainIds.TronMainnet]: 'tron',
35
40
  [types_1.KnownChainIds.SuiMainnet]: 'sui',
41
+ [types_1.KnownChainIds.StarknetMainnet]: 'starknet',
42
+ [types_1.KnownChainIds.MonadMainnet]: 'monad',
43
+ [types_1.KnownChainIds.NearMainnet]: 'near',
36
44
  };
@@ -28,25 +28,45 @@ const getNearIntentsAsset = ({ nearNetwork, contractAddress, }) => {
28
28
  return `nep141:${nearNetwork}-${contractAddress.toLowerCase()}.omft.near`;
29
29
  };
30
30
  exports.getNearIntentsAsset = getNearIntentsAsset;
31
- const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron'];
32
- const TOKEN_LOOKUP_CHAINS = ['sui'];
31
+ const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad'];
32
+ const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet'];
33
+ const NEAR_CHAIN = 'near';
34
+ const WNEAR_CONTRACT_ADDRESS = 'wrap.near';
35
+ const isNep245Chain = (chain) => {
36
+ return NEP245_CHAINS.includes(chain);
37
+ };
38
+ const isTokenLookupChain = (chain) => {
39
+ return TOKEN_LOOKUP_CHAINS.includes(chain);
40
+ };
33
41
  const assetToNearIntentsAsset = async (asset) => {
34
42
  const nearNetwork = types_1.chainIdToNearIntentsChain[asset.chainId];
35
43
  if (!nearNetwork)
36
44
  return null;
37
- // NEP-245 chains (BSC, Polygon, Avalanche, Optimism, TRON, SUI) and Solana require token lookup
45
+ // NEAR chain requires special handling
46
+ // Native NEAR maps to wNEAR (wrap.near)
47
+ if (nearNetwork === NEAR_CHAIN) {
48
+ const tokens = await oneClickService_1.OneClickService.getTokens();
49
+ const { assetNamespace, assetReference } = (0, caip_1.fromAssetId)(asset.assetId);
50
+ const isNativeAsset = assetNamespace === 'slip44';
51
+ // Native NEAR maps to wNEAR, tokens use their contract address directly
52
+ const contractAddress = isNativeAsset ? WNEAR_CONTRACT_ADDRESS : assetReference;
53
+ const match = tokens.find((t) => {
54
+ if (t.blockchain !== NEAR_CHAIN)
55
+ return false;
56
+ return t.contractAddress === contractAddress;
57
+ });
58
+ return match?.assetId ?? null;
59
+ }
60
+ // NEP-245 chains (BSC, Polygon, Avalanche, Optimism, TRON, Monad), Token lookup chains (Sui, Starknet), and Solana require token lookup
38
61
  // Asset IDs use hashed format that can't be generated from contract addresses
39
- const requiresLookup = NEP245_CHAINS.includes(nearNetwork) ||
40
- TOKEN_LOOKUP_CHAINS.includes(nearNetwork) ||
41
- asset.chainId === caip_1.solanaChainId ||
42
- asset.chainId === caip_1.suiChainId;
62
+ const requiresLookup = isNep245Chain(nearNetwork) || isTokenLookupChain(nearNetwork) || asset.chainId === caip_1.solanaChainId;
43
63
  if (requiresLookup) {
44
64
  const tokens = await oneClickService_1.OneClickService.getTokens();
45
65
  const { assetNamespace, assetReference } = (0, caip_1.fromAssetId)(asset.assetId);
46
66
  const isNativeAsset = assetNamespace === 'slip44';
47
67
  const contractAddress = !isNativeAsset ? assetReference.toLowerCase() : null;
48
68
  const match = tokens.find((t) => {
49
- if (t.blockchain !== nearNetwork)
69
+ if (typeof t.blockchain !== 'string' || t.blockchain !== nearNetwork)
50
70
  return false;
51
71
  return contractAddress
52
72
  ? t.contractAddress?.toLowerCase() === contractAddress
@@ -8,7 +8,7 @@ exports.chainIdToPortalsNetwork = {
8
8
  [types_1.KnownChainIds.OptimismMainnet]: 'optimism',
9
9
  [types_1.KnownChainIds.BnbSmartChainMainnet]: 'bsc',
10
10
  [types_1.KnownChainIds.PolygonMainnet]: 'polygon',
11
- [types_1.KnownChainIds.GnosisMainnet]: 'gnosis',
12
11
  [types_1.KnownChainIds.ArbitrumMainnet]: 'arbitrum',
13
12
  [types_1.KnownChainIds.BaseMainnet]: 'base',
13
+ [types_1.KnownChainIds.HyperEvmMainnet]: 'hyperevm',
14
14
  };
@@ -5,10 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.portalsApi = void 0;
7
7
  const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
8
+ const unchained_client_1 = require("@shapeshiftoss/unchained-client");
8
9
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
10
  const utils_1 = require("../../utils");
10
11
  const getPortalsTradeQuote_1 = require("./getPortalsTradeQuote/getPortalsTradeQuote");
11
12
  const getPortalsTradeRate_1 = require("./getPortalsTradeRate/getPortalsTradeRate");
13
+ const fetchAxelarscanStatus_1 = require("./utils/fetchAxelarscanStatus");
14
+ const fetchSquidStatus_1 = require("./utils/fetchSquidStatus");
12
15
  exports.portalsApi = {
13
16
  getTradeQuote: async (input, { config, assertGetEvmChainAdapter }) => {
14
17
  const tradeQuoteResult = await (0, getPortalsTradeQuote_1.getPortalsTradeQuote)(input, assertGetEvmChainAdapter, config);
@@ -52,5 +55,93 @@ exports.portalsApi = {
52
55
  gasLimit: bignumber_js_1.default.max(feeData.gasLimit, estimatedGas).toFixed(),
53
56
  });
54
57
  },
55
- checkTradeStatus: utils_1.checkEvmSwapStatus,
58
+ checkTradeStatus: async (input) => {
59
+ const { txHash, chainId, swap, assertGetEvmChainAdapter, address, fetchIsSmartContractAddressQuery, } = input;
60
+ const isCrossChain = Boolean(swap && swap.sellAsset.chainId !== swap.buyAsset?.chainId);
61
+ if (!isCrossChain) {
62
+ return (0, utils_1.checkEvmSwapStatus)({
63
+ txHash,
64
+ chainId,
65
+ address,
66
+ assertGetEvmChainAdapter,
67
+ fetchIsSmartContractAddressQuery,
68
+ });
69
+ }
70
+ const sourceTxStatus = await (0, utils_1.checkEvmSwapStatus)({
71
+ txHash,
72
+ chainId,
73
+ address,
74
+ assertGetEvmChainAdapter,
75
+ fetchIsSmartContractAddressQuery,
76
+ });
77
+ if (sourceTxStatus.status === unchained_client_1.TxStatus.Pending || sourceTxStatus.status === unchained_client_1.TxStatus.Unknown) {
78
+ return {
79
+ status: unchained_client_1.TxStatus.Pending,
80
+ buyTxHash: undefined,
81
+ message: 'Source transaction pending',
82
+ };
83
+ }
84
+ if (sourceTxStatus.status === unchained_client_1.TxStatus.Failed) {
85
+ return sourceTxStatus;
86
+ }
87
+ const axelarscanResult = await (0, fetchAxelarscanStatus_1.fetchAxelarscanBridgeStatus)(txHash);
88
+ if ((axelarscanResult.isErr() || !axelarscanResult.unwrap()) && swap) {
89
+ const squidResult = await (0, fetchSquidStatus_1.fetchSquidBridgeStatus)(txHash, swap.sellAsset.chainId, swap.buyAsset.chainId);
90
+ if (squidResult.isOk()) {
91
+ const squidStatus = squidResult.unwrap();
92
+ const squidTxStatus = (() => {
93
+ switch (squidStatus.status) {
94
+ case 'confirmed':
95
+ return unchained_client_1.TxStatus.Confirmed;
96
+ case 'failed':
97
+ return unchained_client_1.TxStatus.Failed;
98
+ case 'pending':
99
+ default:
100
+ return unchained_client_1.TxStatus.Pending;
101
+ }
102
+ })();
103
+ return {
104
+ status: squidTxStatus,
105
+ buyTxHash: squidStatus.destinationTxHash,
106
+ relayerExplorerTxLink: (0, fetchSquidStatus_1.getSquidTrackingLink)(txHash, squidStatus, swap.sellAsset.explorerTxLink, swap.buyAsset.explorerTxLink),
107
+ message: squidTxStatus === unchained_client_1.TxStatus.Pending ? 'Cross-chain swap in progress' : undefined,
108
+ };
109
+ }
110
+ return {
111
+ status: unchained_client_1.TxStatus.Pending,
112
+ buyTxHash: undefined,
113
+ relayerExplorerTxLink: (0, fetchAxelarscanStatus_1.getAxelarscanTrackingLink)(txHash),
114
+ message: 'Bridge status check failed - track manually',
115
+ };
116
+ }
117
+ const bridgeStatus = axelarscanResult.unwrap();
118
+ if (!bridgeStatus) {
119
+ return {
120
+ status: unchained_client_1.TxStatus.Pending,
121
+ buyTxHash: undefined,
122
+ message: 'Cross-chain swap in progress',
123
+ };
124
+ }
125
+ const txStatus = (() => {
126
+ switch (bridgeStatus.status) {
127
+ case 'confirmed':
128
+ return unchained_client_1.TxStatus.Confirmed;
129
+ case 'failed':
130
+ return unchained_client_1.TxStatus.Failed;
131
+ case 'pending':
132
+ default:
133
+ return unchained_client_1.TxStatus.Pending;
134
+ }
135
+ })();
136
+ return {
137
+ status: txStatus,
138
+ buyTxHash: bridgeStatus.destinationTxHash,
139
+ relayerExplorerTxLink: (0, fetchAxelarscanStatus_1.getAxelarscanTrackingLink)(txHash),
140
+ message: txStatus === unchained_client_1.TxStatus.Pending
141
+ ? 'Bridge in progress'
142
+ : txStatus === unchained_client_1.TxStatus.Failed
143
+ ? bridgeStatus.errorMessage
144
+ : undefined,
145
+ };
146
+ },
56
147
  };