@shapeshiftoss/swapper 17.6.10 → 17.6.11

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 (192) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/cjs/.tsbuildinfo +1 -1
  3. package/dist/cjs/constants.js +29 -18
  4. package/dist/cjs/cowswap-utils/constants.js +3 -0
  5. package/dist/cjs/cowswap-utils/index.js +6 -0
  6. package/dist/cjs/index.d.ts +1 -0
  7. package/dist/cjs/index.js +1 -0
  8. package/dist/cjs/swappers/AcrossSwapper/constant.js +2 -0
  9. package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.js +15 -1
  10. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +9 -0
  11. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
  12. package/dist/cjs/swappers/BebopSwapper/BebopSwapper.js +2 -0
  13. package/dist/cjs/swappers/BebopSwapper/endpoints.js +35 -2
  14. package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
  15. package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.js +47 -0
  16. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
  17. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +91 -0
  18. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
  19. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +88 -0
  20. package/dist/cjs/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
  21. package/dist/cjs/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
  22. package/dist/cjs/swappers/BebopSwapper/types.d.ts +49 -1
  23. package/dist/cjs/swappers/BebopSwapper/types.js +9 -2
  24. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
  25. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +86 -1
  26. package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
  27. package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.js +47 -1
  28. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
  29. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
  30. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
  31. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
  32. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
  33. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +1 -1
  34. package/dist/cjs/swappers/ChainflipSwapper/constants.js +7 -3
  35. package/dist/cjs/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
  36. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
  37. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
  38. package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
  39. package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.js +7 -0
  40. package/dist/cjs/swappers/DebridgeSwapper/constant.d.ts +5 -0
  41. package/dist/cjs/swappers/DebridgeSwapper/constant.js +36 -0
  42. package/dist/cjs/swappers/DebridgeSwapper/endpoints.d.ts +2 -0
  43. package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
  44. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
  45. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
  46. package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -0
  47. package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +19 -0
  48. package/dist/cjs/swappers/DebridgeSwapper/index.d.ts +1 -0
  49. package/dist/cjs/swappers/DebridgeSwapper/index.js +5 -0
  50. package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
  51. package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.js +17 -0
  52. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
  53. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +23 -0
  54. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
  55. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +29 -0
  56. package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
  57. package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.js +369 -0
  58. package/dist/cjs/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
  59. package/dist/cjs/swappers/DebridgeSwapper/utils/types.js +9 -0
  60. package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +32 -0
  61. package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -0
  62. package/dist/cjs/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
  63. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +12 -0
  64. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +12 -0
  65. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
  66. package/dist/cjs/swappers/RelaySwapper/constant.js +4 -3
  67. package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +44 -5
  68. package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +17 -7
  69. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +10 -0
  70. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
  71. package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
  72. package/dist/cjs/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  73. package/dist/cjs/swappers/ThorchainSwapper/endpoints.js +2 -0
  74. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  75. package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
  76. package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
  77. package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +10 -0
  78. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
  79. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
  80. package/dist/cjs/swappers/utils/affiliateFee.d.ts +17 -0
  81. package/dist/cjs/swappers/utils/affiliateFee.js +43 -0
  82. package/dist/cjs/thorchain-utils/getL1RateOrQuote.js +57 -4
  83. package/dist/cjs/thorchain-utils/index.d.ts +2 -1
  84. package/dist/cjs/thorchain-utils/index.js +2 -1
  85. package/dist/cjs/thorchain-utils/solana/constants.d.ts +1 -0
  86. package/dist/cjs/thorchain-utils/solana/constants.js +6 -0
  87. package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
  88. package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.js +41 -0
  89. package/dist/cjs/thorchain-utils/solana/getThorTxData.d.ts +12 -0
  90. package/dist/cjs/thorchain-utils/solana/getThorTxData.js +14 -0
  91. package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
  92. package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.js +64 -0
  93. package/dist/cjs/thorchain-utils/solana/index.d.ts +3 -0
  94. package/dist/cjs/thorchain-utils/solana/index.js +19 -0
  95. package/dist/cjs/types.d.ts +44 -5
  96. package/dist/cjs/types.js +1 -0
  97. package/dist/esm/.tsbuildinfo +1 -1
  98. package/dist/esm/constants.js +11 -0
  99. package/dist/esm/cowswap-utils/constants.js +3 -0
  100. package/dist/esm/cowswap-utils/index.js +6 -0
  101. package/dist/esm/index.d.ts +1 -0
  102. package/dist/esm/index.js +1 -0
  103. package/dist/esm/swappers/AcrossSwapper/constant.js +4 -2
  104. package/dist/esm/swappers/AcrossSwapper/utils/getTrade.js +15 -1
  105. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +9 -0
  106. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
  107. package/dist/esm/swappers/BebopSwapper/BebopSwapper.js +2 -0
  108. package/dist/esm/swappers/BebopSwapper/endpoints.js +36 -3
  109. package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
  110. package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.js +40 -0
  111. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
  112. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +87 -0
  113. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
  114. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +84 -0
  115. package/dist/esm/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
  116. package/dist/esm/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
  117. package/dist/esm/swappers/BebopSwapper/types.d.ts +49 -1
  118. package/dist/esm/swappers/BebopSwapper/types.js +8 -1
  119. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
  120. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +85 -2
  121. package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
  122. package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.js +44 -1
  123. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
  124. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
  125. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
  126. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
  127. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
  128. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +1 -1
  129. package/dist/esm/swappers/ChainflipSwapper/constants.js +8 -4
  130. package/dist/esm/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
  131. package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
  132. package/dist/esm/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
  133. package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
  134. package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.js +4 -0
  135. package/dist/esm/swappers/DebridgeSwapper/constant.d.ts +5 -0
  136. package/dist/esm/swappers/DebridgeSwapper/constant.js +30 -0
  137. package/dist/esm/swappers/DebridgeSwapper/endpoints.d.ts +2 -0
  138. package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
  139. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
  140. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
  141. package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -0
  142. package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +15 -0
  143. package/dist/esm/swappers/DebridgeSwapper/index.d.ts +1 -0
  144. package/dist/esm/swappers/DebridgeSwapper/index.js +1 -0
  145. package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
  146. package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.js +11 -0
  147. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
  148. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +19 -0
  149. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
  150. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +25 -0
  151. package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
  152. package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.js +362 -0
  153. package/dist/esm/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
  154. package/dist/esm/swappers/DebridgeSwapper/utils/types.js +5 -0
  155. package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +33 -1
  156. package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -0
  157. package/dist/esm/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
  158. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +14 -2
  159. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +14 -2
  160. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
  161. package/dist/esm/swappers/RelaySwapper/constant.js +6 -5
  162. package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +47 -8
  163. package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +17 -7
  164. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +10 -0
  165. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
  166. package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
  167. package/dist/esm/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  168. package/dist/esm/swappers/ThorchainSwapper/endpoints.js +3 -1
  169. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  170. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
  171. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
  172. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +11 -1
  173. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
  174. package/dist/esm/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
  175. package/dist/esm/swappers/utils/affiliateFee.d.ts +17 -0
  176. package/dist/esm/swappers/utils/affiliateFee.js +39 -0
  177. package/dist/esm/thorchain-utils/getL1RateOrQuote.js +57 -4
  178. package/dist/esm/thorchain-utils/index.d.ts +2 -1
  179. package/dist/esm/thorchain-utils/index.js +1 -0
  180. package/dist/esm/thorchain-utils/solana/constants.d.ts +1 -0
  181. package/dist/esm/thorchain-utils/solana/constants.js +3 -0
  182. package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
  183. package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.js +37 -0
  184. package/dist/esm/thorchain-utils/solana/getThorTxData.d.ts +12 -0
  185. package/dist/esm/thorchain-utils/solana/getThorTxData.js +10 -0
  186. package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
  187. package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.js +60 -0
  188. package/dist/esm/thorchain-utils/solana/index.d.ts +3 -0
  189. package/dist/esm/thorchain-utils/solana/index.js +3 -0
  190. package/dist/esm/types.d.ts +44 -5
  191. package/dist/esm/types.js +1 -0
  192. package/package.json +19 -18
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getTrade = void 0;
7
+ const caip_1 = require("@shapeshiftoss/caip");
8
+ const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
9
+ const utils_1 = require("@shapeshiftoss/utils");
10
+ const monads_1 = require("@sniptt/monads");
11
+ const axios_1 = __importDefault(require("axios"));
12
+ const uuid_1 = require("uuid");
13
+ const viem_1 = require("viem");
14
+ const types_1 = require("../../../types");
15
+ const utils_2 = require("../../../utils");
16
+ const helpers_1 = require("../../utils/helpers/helpers");
17
+ const constant_1 = require("../constant");
18
+ const fetchDebridgeSingleChainTrade_1 = require("./fetchDebridgeSingleChainTrade");
19
+ const fetchDebridgeTrade_1 = require("./fetchDebridgeTrade");
20
+ const types_2 = require("./types");
21
+ const getDebridgeAssetAddress = (assetId) => {
22
+ if ((0, helpers_1.isNativeEvmAsset)(assetId))
23
+ return constant_1.DEFAULT_DEBRIDGE_TOKEN_ADDRESS;
24
+ const { assetReference } = (0, caip_1.fromAssetId)(assetId);
25
+ return (0, caip_1.isAssetReference)(assetReference) ? viem_1.zeroAddress : assetReference;
26
+ };
27
+ async function getTrade({ input, deps, }) {
28
+ const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
29
+ const isSameChainSwap = sellAsset.chainId === buyAsset.chainId;
30
+ const sellDebridgeChainId = constant_1.chainIdToDebridgeChainId[sellAsset.chainId];
31
+ if (sellDebridgeChainId === undefined) {
32
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
33
+ message: `Sell asset chain '${sellAsset.chainId}' not supported by deBridge`,
34
+ code: types_1.TradeQuoteError.UnsupportedChain,
35
+ }));
36
+ }
37
+ if (!isSameChainSwap) {
38
+ const buyDebridgeChainId = constant_1.chainIdToDebridgeChainId[buyAsset.chainId];
39
+ if (buyDebridgeChainId === undefined) {
40
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
41
+ message: `Buy asset chain '${buyAsset.chainId}' not supported by deBridge`,
42
+ code: types_1.TradeQuoteError.UnsupportedChain,
43
+ }));
44
+ }
45
+ }
46
+ const senderAddress = (() => {
47
+ if (input.quoteOrRate === 'rate') {
48
+ if (input.sendAddress)
49
+ return input.sendAddress;
50
+ return constant_1.DEFAULT_DEBRIDGE_USER_ADDRESS;
51
+ }
52
+ return input.sendAddress ?? constant_1.DEFAULT_DEBRIDGE_USER_ADDRESS;
53
+ })();
54
+ const recipientAddress = (() => {
55
+ if (input.quoteOrRate === 'rate') {
56
+ if (input.receiveAddress)
57
+ return input.receiveAddress;
58
+ return constant_1.DEFAULT_DEBRIDGE_USER_ADDRESS;
59
+ }
60
+ return input.receiveAddress;
61
+ })();
62
+ const affiliateFeePercent = (() => {
63
+ if (!(0, utils_1.isTreasuryChainId)(buyAsset.chainId))
64
+ return undefined;
65
+ const bps = (0, utils_1.bnOrZero)(affiliateBps);
66
+ if (!bps.isFinite() || bps.lte(0))
67
+ return undefined;
68
+ return bps.div(100).toFixed();
69
+ })();
70
+ const affiliateFeeRecipient = (() => {
71
+ if (affiliateFeePercent === undefined)
72
+ return undefined;
73
+ try {
74
+ return (0, helpers_1.getTreasuryAddressFromChainId)(buyAsset.chainId).toLowerCase();
75
+ }
76
+ catch (e) {
77
+ console.error(`[getTrade] Failed to get treasury address for chainId ${buyAsset.chainId}, affiliate fee will not be applied`, e);
78
+ return undefined;
79
+ }
80
+ })();
81
+ if (isSameChainSwap) {
82
+ return getSameChainTrade({
83
+ input,
84
+ deps,
85
+ sellDebridgeChainId,
86
+ senderAddress,
87
+ recipientAddress,
88
+ affiliateFeePercent,
89
+ affiliateFeeRecipient,
90
+ });
91
+ }
92
+ const buyDebridgeChainId = constant_1.chainIdToDebridgeChainId[buyAsset.chainId];
93
+ if (buyDebridgeChainId === undefined) {
94
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
95
+ message: `Buy asset chain '${buyAsset.chainId}' not supported by deBridge`,
96
+ code: types_1.TradeQuoteError.UnsupportedChain,
97
+ }));
98
+ }
99
+ const maybeQuote = await (0, fetchDebridgeTrade_1.fetchDebridgeTrade)({
100
+ srcChainId: sellDebridgeChainId,
101
+ srcChainTokenIn: getDebridgeAssetAddress(sellAsset.assetId),
102
+ srcChainTokenInAmount: sellAmountIncludingProtocolFeesCryptoBaseUnit,
103
+ dstChainId: buyDebridgeChainId,
104
+ dstChainTokenOut: getDebridgeAssetAddress(buyAsset.assetId),
105
+ dstChainTokenOutAmount: 'auto',
106
+ dstChainTokenOutRecipient: recipientAddress,
107
+ srcChainOrderAuthorityAddress: senderAddress,
108
+ dstChainOrderAuthorityAddress: recipientAddress,
109
+ senderAddress,
110
+ prependOperatingExpenses: 'true',
111
+ affiliateFeePercent,
112
+ affiliateFeeRecipient,
113
+ }, deps.config);
114
+ if (maybeQuote.isErr()) {
115
+ return handleDebridgeError(maybeQuote.unwrapErr());
116
+ }
117
+ const { data: quote } = maybeQuote.unwrap();
118
+ const buyAmountAfterFeesCryptoBaseUnit = quote.estimation.dstChainTokenOut.recommendedAmount;
119
+ const rate = (0, utils_2.getInputOutputRate)({
120
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
121
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
122
+ sellAsset,
123
+ buyAsset,
124
+ });
125
+ const nativePreFee = (0, utils_1.bnOrZero)(quote.fixFee)
126
+ .plus((0, utils_1.bnOrZero)(quote.prependedOperatingExpenseCost))
127
+ .toFixed();
128
+ const buyAmountBeforeFeesCryptoBaseUnit = buyAmountAfterFeesCryptoBaseUnit;
129
+ const allowanceContract = (0, chain_adapters_1.isEvmChainId)(sellAsset.chainId) ? quote.tx.to : '';
130
+ const debridgeTransactionMetadata = {
131
+ to: quote.tx.to,
132
+ data: quote.tx.data,
133
+ value: quote.tx.value,
134
+ orderId: quote.orderId,
135
+ gasLimit: quote.estimatedTransactionFee?.details.gasLimit,
136
+ };
137
+ const networkFeeCryptoBaseUnit = await getNetworkFee({
138
+ sellAsset,
139
+ debridgeTransactionMetadata,
140
+ senderAddress,
141
+ deps,
142
+ });
143
+ const protocolFeeAssetCaipChainId = constant_1.debridgeChainIdToChainId[sellDebridgeChainId.toString()];
144
+ const protocolFeeAssetIdForFees = (() => {
145
+ if (!protocolFeeAssetCaipChainId)
146
+ return undefined;
147
+ return (0, utils_1.chainIdToFeeAssetId)(protocolFeeAssetCaipChainId);
148
+ })();
149
+ const accountNumber = input.accountNumber;
150
+ const step = {
151
+ allowanceContract,
152
+ rate,
153
+ buyAmountBeforeFeesCryptoBaseUnit,
154
+ buyAmountAfterFeesCryptoBaseUnit,
155
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
156
+ buyAsset,
157
+ sellAsset,
158
+ accountNumber,
159
+ feeData: {
160
+ networkFeeCryptoBaseUnit,
161
+ protocolFees: protocolFeeAssetIdForFees && (0, utils_1.bnOrZero)(nativePreFee).gt(0)
162
+ ? {
163
+ [protocolFeeAssetIdForFees]: {
164
+ amountCryptoBaseUnit: nativePreFee,
165
+ asset: (0, utils_1.getBaseAsset)(sellAsset.chainId),
166
+ requiresBalance: true,
167
+ },
168
+ }
169
+ : {},
170
+ },
171
+ source: types_1.SwapperName.Debridge,
172
+ estimatedExecutionTimeMs: quote.order.approximateFulfillmentDelay * 1000,
173
+ debridgeTransactionMetadata,
174
+ };
175
+ const baseQuoteOrRate = {
176
+ id: quote.orderId,
177
+ rate,
178
+ swapperName: types_1.SwapperName.Debridge,
179
+ affiliateBps,
180
+ slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal,
181
+ };
182
+ if (input.quoteOrRate === 'quote') {
183
+ if (!input.receiveAddress) {
184
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
185
+ message: 'Receive address is required for quote',
186
+ code: types_1.TradeQuoteError.InternalError,
187
+ }));
188
+ }
189
+ const tradeQuote = {
190
+ ...baseQuoteOrRate,
191
+ steps: [step],
192
+ receiveAddress: input.receiveAddress,
193
+ quoteOrRate: 'quote',
194
+ };
195
+ return (0, monads_1.Ok)([tradeQuote]);
196
+ }
197
+ const tradeRate = {
198
+ ...baseQuoteOrRate,
199
+ steps: [step],
200
+ receiveAddress: recipientAddress,
201
+ quoteOrRate: 'rate',
202
+ };
203
+ return (0, monads_1.Ok)([tradeRate]);
204
+ }
205
+ exports.getTrade = getTrade;
206
+ function handleDebridgeError(error) {
207
+ if (!axios_1.default.isAxiosError(error.cause)) {
208
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
209
+ message: 'Unknown error',
210
+ code: types_1.TradeQuoteError.UnknownError,
211
+ }));
212
+ }
213
+ const debridgeError = error.cause?.response?.data;
214
+ if (!(0, types_2.isDebridgeError)(debridgeError)) {
215
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
216
+ message: 'Unknown error',
217
+ code: types_1.TradeQuoteError.UnknownError,
218
+ }));
219
+ }
220
+ const errorMessage = debridgeError.errorMessage ?? debridgeError.message ?? 'Unknown error';
221
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
222
+ message: errorMessage,
223
+ code: types_1.TradeQuoteError.UnknownError,
224
+ }));
225
+ }
226
+ async function getNetworkFee({ sellAsset, debridgeTransactionMetadata, senderAddress, deps, }) {
227
+ if (!(0, chain_adapters_1.isEvmChainId)(sellAsset.chainId))
228
+ return undefined;
229
+ const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
230
+ const { average } = await adapter.getGasFeeData();
231
+ const supportsEIP1559 = 'maxFeePerGas' in average;
232
+ try {
233
+ const feeData = await chain_adapters_1.evm.getFees({
234
+ adapter,
235
+ data: debridgeTransactionMetadata.data,
236
+ to: debridgeTransactionMetadata.to,
237
+ value: debridgeTransactionMetadata.value,
238
+ from: senderAddress,
239
+ supportsEIP1559,
240
+ });
241
+ return feeData.networkFeeCryptoBaseUnit;
242
+ }
243
+ catch {
244
+ const gasLimitFromApi = debridgeTransactionMetadata.gasLimit;
245
+ if (!gasLimitFromApi)
246
+ return undefined;
247
+ return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({
248
+ ...average,
249
+ gasLimit: gasLimitFromApi,
250
+ supportsEIP1559,
251
+ });
252
+ }
253
+ }
254
+ async function getSameChainTrade({ input, deps, sellDebridgeChainId, senderAddress, recipientAddress, affiliateFeePercent, affiliateFeeRecipient, }) {
255
+ const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
256
+ const slippage = input.slippageTolerancePercentageDecimal
257
+ ? (0, utils_1.bnOrZero)(input.slippageTolerancePercentageDecimal).times(100).toFixed()
258
+ : '5';
259
+ const maybeQuote = await (0, fetchDebridgeSingleChainTrade_1.fetchDebridgeSingleChainTrade)({
260
+ chainId: sellDebridgeChainId,
261
+ tokenIn: getDebridgeAssetAddress(sellAsset.assetId),
262
+ tokenInAmount: sellAmountIncludingProtocolFeesCryptoBaseUnit,
263
+ tokenOut: getDebridgeAssetAddress(buyAsset.assetId),
264
+ tokenOutRecipient: recipientAddress,
265
+ senderAddress,
266
+ slippage,
267
+ affiliateFeePercent,
268
+ affiliateFeeRecipient,
269
+ }, deps.config);
270
+ if (maybeQuote.isErr()) {
271
+ return handleDebridgeError(maybeQuote.unwrapErr());
272
+ }
273
+ const { data: quote } = maybeQuote.unwrap();
274
+ const buyAmountAfterFeesCryptoBaseUnit = quote.tokenOut.amount;
275
+ const rate = (0, utils_2.getInputOutputRate)({
276
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
277
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
278
+ sellAsset,
279
+ buyAsset,
280
+ });
281
+ const protocolFeeAmount = quote.protocolFee ?? '0';
282
+ const buyAmountBeforeFeesCryptoBaseUnit = (() => {
283
+ if (protocolFeeAmount === '0')
284
+ return buyAmountAfterFeesCryptoBaseUnit;
285
+ return utils_1.BigAmount.fromBaseUnit({
286
+ value: buyAmountAfterFeesCryptoBaseUnit,
287
+ precision: buyAsset.precision,
288
+ })
289
+ .plus(utils_1.BigAmount.fromBaseUnit({
290
+ value: protocolFeeAmount,
291
+ precision: buyAsset.precision,
292
+ }))
293
+ .toBaseUnit();
294
+ })();
295
+ const allowanceContract = (0, chain_adapters_1.isEvmChainId)(sellAsset.chainId) ? quote.tx.to : '';
296
+ const debridgeTransactionMetadata = {
297
+ to: quote.tx.to,
298
+ data: quote.tx.data,
299
+ value: quote.tx.value,
300
+ gasLimit: quote.estimatedTransactionFee?.details.gasLimit,
301
+ isSameChainSwap: true,
302
+ };
303
+ const networkFeeCryptoBaseUnit = await getNetworkFee({
304
+ sellAsset,
305
+ debridgeTransactionMetadata,
306
+ senderAddress,
307
+ deps,
308
+ });
309
+ const tradeId = (0, uuid_1.v4)();
310
+ const step = {
311
+ allowanceContract,
312
+ rate,
313
+ buyAmountBeforeFeesCryptoBaseUnit,
314
+ buyAmountAfterFeesCryptoBaseUnit,
315
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
316
+ buyAsset,
317
+ sellAsset,
318
+ accountNumber: input.accountNumber,
319
+ feeData: {
320
+ networkFeeCryptoBaseUnit,
321
+ protocolFees: protocolFeeAmount !== '0'
322
+ ? {
323
+ [buyAsset.assetId]: {
324
+ amountCryptoBaseUnit: protocolFeeAmount,
325
+ asset: {
326
+ symbol: quote.tokenOut.symbol,
327
+ chainId: buyAsset.chainId,
328
+ precision: buyAsset.precision,
329
+ },
330
+ requiresBalance: false,
331
+ },
332
+ }
333
+ : {},
334
+ },
335
+ source: types_1.SwapperName.Debridge,
336
+ estimatedExecutionTimeMs: 15_000,
337
+ debridgeTransactionMetadata,
338
+ };
339
+ const baseQuoteOrRate = {
340
+ id: tradeId,
341
+ rate,
342
+ swapperName: types_1.SwapperName.Debridge,
343
+ affiliateBps,
344
+ slippageTolerancePercentageDecimal: input.slippageTolerancePercentageDecimal ??
345
+ (quote.slippage ? (0, utils_1.bnOrZero)(quote.slippage).div(100).toString() : undefined),
346
+ };
347
+ if (input.quoteOrRate === 'quote') {
348
+ if (!input.receiveAddress) {
349
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
350
+ message: 'Receive address is required for quote',
351
+ code: types_1.TradeQuoteError.InternalError,
352
+ }));
353
+ }
354
+ const tradeQuote = {
355
+ ...baseQuoteOrRate,
356
+ steps: [step],
357
+ receiveAddress: input.receiveAddress,
358
+ quoteOrRate: 'quote',
359
+ };
360
+ return (0, monads_1.Ok)([tradeQuote]);
361
+ }
362
+ const tradeRate = {
363
+ ...baseQuoteOrRate,
364
+ steps: [step],
365
+ receiveAddress: recipientAddress,
366
+ quoteOrRate: 'rate',
367
+ };
368
+ return (0, monads_1.Ok)([tradeRate]);
369
+ }
@@ -0,0 +1,155 @@
1
+ import type { Asset } from '@shapeshiftoss/types';
2
+ export type DebridgeTradeBaseParams = {
3
+ buyAsset: Asset;
4
+ sellAsset: Asset;
5
+ sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
6
+ affiliateBps: string;
7
+ };
8
+ export type DebridgeTradeInputParams<T extends 'rate' | 'quote'> = DebridgeTradeBaseParams & {
9
+ quoteOrRate: T;
10
+ receiveAddress: T extends 'rate' ? string | undefined : string;
11
+ sendAddress: T extends 'rate' ? undefined : string;
12
+ accountNumber: T extends 'rate' ? undefined : number;
13
+ slippageTolerancePercentageDecimal?: string;
14
+ };
15
+ export type DebridgeTransactionMetadata = {
16
+ to: string;
17
+ data: string;
18
+ value: string;
19
+ gasLimit?: string;
20
+ orderId?: string;
21
+ isSameChainSwap?: boolean;
22
+ };
23
+ export type DebridgeTokenInfo = {
24
+ address: string;
25
+ chainId: number;
26
+ decimals: number;
27
+ name: string;
28
+ symbol: string;
29
+ amount: string;
30
+ approximateOperatingExpense?: string;
31
+ mutatedWithOperatingExpense?: boolean;
32
+ approximateUsdValue?: number;
33
+ maxRefundAmount?: string;
34
+ };
35
+ export type DebridgeCostDetail = {
36
+ type: 'DlnProtocolFee' | 'TakerMargin' | 'EstimatedOperatingExpenses' | 'InputTokenFee' | 'OutputTokenFee';
37
+ payload: {
38
+ feeAmount: string;
39
+ feeBps?: string;
40
+ chain?: string;
41
+ tokenAddress?: string;
42
+ };
43
+ };
44
+ export type DebridgeEstimation = {
45
+ srcChainTokenIn: DebridgeTokenInfo;
46
+ srcChainTokenOut?: DebridgeTokenInfo;
47
+ dstChainTokenOut: DebridgeTokenInfo & {
48
+ recommendedAmount: string;
49
+ };
50
+ costsDetails: DebridgeCostDetail[];
51
+ recommendedSlippage: number;
52
+ };
53
+ export type DebridgeTx = {
54
+ to: string;
55
+ data: string;
56
+ value: string;
57
+ };
58
+ export type DebridgeOrder = {
59
+ approximateFulfillmentDelay: number;
60
+ salt: number;
61
+ metadata: string;
62
+ };
63
+ export type DebridgeCreateTxResponse = {
64
+ estimation: DebridgeEstimation;
65
+ tx: DebridgeTx;
66
+ orderId: string;
67
+ order: DebridgeOrder;
68
+ fixFee: string;
69
+ prependedOperatingExpenseCost?: string;
70
+ estimatedTransactionFee?: DebridgeSingleChainEstimatedTransactionFee;
71
+ };
72
+ export type DebridgeOrderStatus = {
73
+ orderId: string;
74
+ status: 'None' | 'Created' | 'Fulfilled' | 'SentUnlock' | 'ClaimedUnlock' | 'OrderCancelled' | 'SentOrderCancel' | 'ClaimedOrderCancel';
75
+ };
76
+ export type DebridgeHashObject = {
77
+ stringValue: string;
78
+ bytesValue: string;
79
+ bytesArrayValue: string;
80
+ };
81
+ export type DebridgeOrderDetail = {
82
+ orderId: DebridgeHashObject;
83
+ fulfilledDstEventMetadata?: {
84
+ transactionHash?: DebridgeHashObject;
85
+ };
86
+ };
87
+ export type DebridgeOrderId = {
88
+ bytesValue: string;
89
+ bytesArrayValue: string;
90
+ stringValue: string;
91
+ };
92
+ export type DebridgeOrderIdsResponse = {
93
+ orderIds: DebridgeOrderId[];
94
+ };
95
+ export type DebridgeSingleChainTokenInfo = {
96
+ address: string;
97
+ name: string;
98
+ symbol: string;
99
+ decimals: number;
100
+ amount: string;
101
+ approximateUsdValue?: number;
102
+ };
103
+ export type DebridgeSingleChainTokenOut = DebridgeSingleChainTokenInfo & {
104
+ minAmount: string;
105
+ };
106
+ export type DebridgeSingleChainCostDetail = {
107
+ chain: string;
108
+ tokenIn: string;
109
+ tokenOut: string;
110
+ amountIn: string;
111
+ amountOut: string;
112
+ type: string;
113
+ payload: {
114
+ feeAmount?: string;
115
+ feeBps?: string;
116
+ amountOutBeforeCorrection?: string;
117
+ estimatedVolatilityBps?: string;
118
+ actualFeeAmount?: string;
119
+ actualFeeBps?: string;
120
+ subsidyAmount?: string;
121
+ feeApproximateUsdValue?: string;
122
+ };
123
+ };
124
+ export type DebridgeSingleChainEstimatedTransactionFee = {
125
+ total: string;
126
+ details: {
127
+ gasLimit: string;
128
+ baseFee?: string;
129
+ maxFeePerGas?: string;
130
+ maxPriorityFeePerGas?: string;
131
+ };
132
+ approximateUsdValue?: number;
133
+ };
134
+ export type DebridgeSingleChainTransactionResponse = {
135
+ tokenIn: DebridgeSingleChainTokenInfo;
136
+ tokenOut: DebridgeSingleChainTokenOut;
137
+ slippage: number;
138
+ recommendedSlippage: number;
139
+ protocolFee?: string;
140
+ costsDetails: DebridgeSingleChainCostDetail[];
141
+ estimatedTransactionFee?: DebridgeSingleChainEstimatedTransactionFee;
142
+ tx: {
143
+ to: string;
144
+ data: string;
145
+ value: string;
146
+ };
147
+ };
148
+ export type DebridgeError = {
149
+ errorCode?: number;
150
+ errorId?: string;
151
+ errorMessage?: string;
152
+ statusCode?: number;
153
+ message?: string;
154
+ };
155
+ export declare const isDebridgeError: (error: unknown) => error is DebridgeError;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDebridgeError = void 0;
4
+ const isDebridgeError = (error) => {
5
+ return (typeof error === 'object' &&
6
+ error !== null &&
7
+ ('errorCode' in error || 'errorId' in error || 'errorMessage' in error));
8
+ };
9
+ exports.isDebridgeError = isDebridgeError;
@@ -8,6 +8,7 @@ const web3_js_1 = require("@solana/web3.js");
8
8
  const uuid_1 = require("uuid");
9
9
  const types_1 = require("../../../types");
10
10
  const utils_2 = require("../../../utils");
11
+ const affiliateFee_1 = require("../../utils/affiliateFee");
11
12
  const constants_1 = require("../utils/constants");
12
13
  const helpers_1 = require("../utils/helpers");
13
14
  const getTradeQuote = async (input, deps) => {
@@ -92,6 +93,28 @@ const getTradeQuote = async (input, deps) => {
92
93
  adapter,
93
94
  jupiterUrl,
94
95
  });
96
+ // Build a trial VersionedTransaction to check if it exceeds the 1232-byte Solana tx size limit
97
+ const isOversized = await (async () => {
98
+ try {
99
+ const lookupTableInfos = await adapter.getAddressLookupTableAccounts(addressLookupTableAddresses);
100
+ const lookupTableAccounts = lookupTableInfos.map(info => new web3_js_1.AddressLookupTableAccount({
101
+ key: new web3_js_1.PublicKey(info.key),
102
+ state: web3_js_1.AddressLookupTableAccount.deserialize(new Uint8Array(info.data)),
103
+ }));
104
+ const messageV0 = web3_js_1.MessageV0.compile({
105
+ payerKey: new web3_js_1.PublicKey(sendAddress),
106
+ instructions,
107
+ // Blockhash doesn't affect size, use a dummy one
108
+ recentBlockhash: web3_js_1.PublicKey.default.toString(),
109
+ addressLookupTableAccounts: lookupTableAccounts,
110
+ });
111
+ const txBytes = new web3_js_1.VersionedTransaction(messageV0).serialize();
112
+ return txBytes.length > 1232;
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ })();
95
118
  const getFeeData = async () => {
96
119
  const sellAdapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
97
120
  const getFeeDataInput = {
@@ -169,6 +192,7 @@ const getTradeQuote = async (input, deps) => {
169
192
  solanaTransactionMetadata: {
170
193
  addressLookupTableAddresses,
171
194
  instructions,
195
+ isOversized,
172
196
  },
173
197
  feeData: {
174
198
  protocolFees,
@@ -182,6 +206,14 @@ const getTradeQuote = async (input, deps) => {
182
206
  allowanceContract: '0x0',
183
207
  // Swap are so fasts on solana that times are under 100ms displaying 0 or very small amount of time is not user friendly
184
208
  estimatedExecutionTimeMs: undefined,
209
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
210
+ strategy: 'buy_asset',
211
+ affiliateBps,
212
+ sellAsset,
213
+ buyAsset,
214
+ sellAmountCryptoBaseUnit: priceResponse.inAmount,
215
+ buyAmountCryptoBaseUnit: priceResponse.outAmount,
216
+ }),
185
217
  },
186
218
  ],
187
219
  };
@@ -8,6 +8,7 @@ const web3_js_1 = require("@solana/web3.js");
8
8
  const uuid_1 = require("uuid");
9
9
  const types_1 = require("../../../types");
10
10
  const utils_2 = require("../../../utils");
11
+ const affiliateFee_1 = require("../../utils/affiliateFee");
11
12
  const constants_1 = require("../utils/constants");
12
13
  const helpers_1 = require("../utils/helpers");
13
14
  const getTradeRate = async (input, deps) => {
@@ -163,6 +164,14 @@ const getTradeRate = async (input, deps) => {
163
164
  allowanceContract: '0x0',
164
165
  // Swap are so fasts on solana that times are under 100ms displaying 0 or very small amount of time is not user friendly
165
166
  estimatedExecutionTimeMs: undefined,
167
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
168
+ strategy: 'buy_asset',
169
+ affiliateBps,
170
+ sellAsset,
171
+ buyAsset,
172
+ sellAmountCryptoBaseUnit: priceResponse.inAmount,
173
+ buyAmountCryptoBaseUnit: priceResponse.outAmount,
174
+ }),
166
175
  },
167
176
  ],
168
177
  };
@@ -10,5 +10,5 @@ const mayaPoolIdAssetIdSymbolMap = generatedTradableAssetMap_json_1.default;
10
10
  exports.assetIdToMayaPoolAssetIdMap = (0, invert_1.default)(mayaPoolIdAssetIdSymbolMap);
11
11
  const mayaPoolAssetIdToAssetId = (id) => mayaPoolIdAssetIdSymbolMap[id.toUpperCase()];
12
12
  exports.mayaPoolAssetIdToAssetId = mayaPoolAssetIdToAssetId;
13
- const assetIdToMayaPoolAssetId = ({ assetId }) => exports.assetIdToMayaPoolAssetIdMap[assetId.toLowerCase()];
13
+ const assetIdToMayaPoolAssetId = ({ assetId }) => exports.assetIdToMayaPoolAssetIdMap[assetId];
14
14
  exports.assetIdToMayaPoolAssetId = assetIdToMayaPoolAssetId;
@@ -9,6 +9,7 @@ const uuid_1 = require("uuid");
9
9
  const constants_1 = require("../../../constants");
10
10
  const types_1 = require("../../../types");
11
11
  const utils_2 = require("../../../utils");
12
+ const affiliateFee_1 = require("../../utils/affiliateFee");
12
13
  const helpers_1 = require("../../utils/helpers/helpers");
13
14
  const constants_2 = require("../constants");
14
15
  const types_2 = require("../types");
@@ -278,6 +279,17 @@ const getTradeQuote = async (input, deps) => {
278
279
  timeEstimate: quote.timeEstimate,
279
280
  deadline: quote.deadline ?? '',
280
281
  },
282
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
283
+ strategy: 'fixed_asset',
284
+ affiliateBps,
285
+ sellAsset,
286
+ buyAsset,
287
+ sellAmountCryptoBaseUnit: quote.amountIn,
288
+ buyAmountCryptoBaseUnit: quote.amountOut,
289
+ fixedAssetId: (0, utils_1.chainIdToFeeAssetId)(caip_1.nearChainId),
290
+ fixedAsset: deps.assetsById[(0, utils_1.chainIdToFeeAssetId)(caip_1.nearChainId)],
291
+ isEstimate: true,
292
+ }),
281
293
  },
282
294
  ],
283
295
  };
@@ -11,6 +11,7 @@ const constants_1 = require("../../../constants");
11
11
  const types_1 = require("../../../types");
12
12
  const utils_2 = require("../../../utils");
13
13
  const tenderly_1 = require("../../../utils/tenderly");
14
+ const affiliateFee_1 = require("../../utils/affiliateFee");
14
15
  const helpers_1 = require("../../utils/helpers/helpers");
15
16
  const constants_2 = require("../constants");
16
17
  const types_2 = require("../types");
@@ -337,6 +338,17 @@ const getTradeRate = async (input, deps) => {
337
338
  sellAsset,
338
339
  source: types_1.SwapperName.NearIntents,
339
340
  estimatedExecutionTimeMs: quote.timeEstimate ? quote.timeEstimate * 1000 : undefined,
341
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
342
+ strategy: 'fixed_asset',
343
+ affiliateBps,
344
+ sellAsset,
345
+ buyAsset,
346
+ sellAmountCryptoBaseUnit: quote.amountIn,
347
+ buyAmountCryptoBaseUnit: quote.amountOut,
348
+ fixedAssetId: (0, utils_1.chainIdToFeeAssetId)(caip_1.nearChainId),
349
+ fixedAsset: deps.assetsById[(0, utils_1.chainIdToFeeAssetId)(caip_1.nearChainId)],
350
+ isEstimate: true,
351
+ }),
340
352
  },
341
353
  ],
342
354
  };