@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
@@ -18,23 +18,25 @@ const ChainflipSwapper_1 = require("./swappers/ChainflipSwapper/ChainflipSwapper
18
18
  const endpoints_7 = require("./swappers/ChainflipSwapper/endpoints");
19
19
  const CowSwapper_1 = require("./swappers/CowSwapper/CowSwapper");
20
20
  const endpoints_8 = require("./swappers/CowSwapper/endpoints");
21
- const endpoints_9 = require("./swappers/JupiterSwapper/endpoints");
21
+ const DebridgeSwapper_1 = require("./swappers/DebridgeSwapper");
22
+ const endpoints_9 = require("./swappers/DebridgeSwapper/endpoints");
23
+ const endpoints_10 = require("./swappers/JupiterSwapper/endpoints");
22
24
  const JupiterSwapper_1 = require("./swappers/JupiterSwapper/JupiterSwapper");
23
- const endpoints_10 = require("./swappers/MayachainSwapper/endpoints");
25
+ const endpoints_11 = require("./swappers/MayachainSwapper/endpoints");
24
26
  const MayachainSwapper_1 = require("./swappers/MayachainSwapper/MayachainSwapper");
25
- const endpoints_11 = require("./swappers/NearIntentsSwapper/endpoints");
27
+ const endpoints_12 = require("./swappers/NearIntentsSwapper/endpoints");
26
28
  const NearIntentsSwapper_1 = require("./swappers/NearIntentsSwapper/NearIntentsSwapper");
27
- const endpoints_12 = require("./swappers/PortalsSwapper/endpoints");
29
+ const endpoints_13 = require("./swappers/PortalsSwapper/endpoints");
28
30
  const PortalsSwapper_1 = require("./swappers/PortalsSwapper/PortalsSwapper");
29
31
  const RelaySwapper_1 = require("./swappers/RelaySwapper");
30
- const endpoints_13 = require("./swappers/RelaySwapper/endpoints");
31
- const endpoints_14 = require("./swappers/StonfiSwapper/endpoints");
32
+ const endpoints_14 = require("./swappers/RelaySwapper/endpoints");
33
+ const endpoints_15 = require("./swappers/StonfiSwapper/endpoints");
32
34
  const StonfiSwapper_1 = require("./swappers/StonfiSwapper/StonfiSwapper");
33
- const endpoints_15 = require("./swappers/SunioSwapper/endpoints");
35
+ const endpoints_16 = require("./swappers/SunioSwapper/endpoints");
34
36
  const SunioSwapper_1 = require("./swappers/SunioSwapper/SunioSwapper");
35
- const endpoints_16 = require("./swappers/ThorchainSwapper/endpoints");
37
+ const endpoints_17 = require("./swappers/ThorchainSwapper/endpoints");
36
38
  const ThorchainSwapper_1 = require("./swappers/ThorchainSwapper/ThorchainSwapper");
37
- const endpoints_17 = require("./swappers/ZrxSwapper/endpoints");
39
+ const endpoints_18 = require("./swappers/ZrxSwapper/endpoints");
38
40
  const ZrxSwapper_1 = require("./swappers/ZrxSwapper/ZrxSwapper");
39
41
  const types_1 = require("./types");
40
42
  const utils_2 = require("./utils");
@@ -48,15 +50,15 @@ exports.QUOTE_TIMEOUT_ERROR = (0, utils_2.makeSwapErrorRight)({
48
50
  exports.swappers = {
49
51
  [types_1.SwapperName.Thorchain]: {
50
52
  ...ThorchainSwapper_1.thorchainSwapper,
51
- ...endpoints_16.thorchainApi,
53
+ ...endpoints_17.thorchainApi,
52
54
  },
53
55
  [types_1.SwapperName.Mayachain]: {
54
56
  ...MayachainSwapper_1.mayachainSwapper,
55
- ...endpoints_10.mayachainApi,
57
+ ...endpoints_11.mayachainApi,
56
58
  },
57
59
  [types_1.SwapperName.Zrx]: {
58
60
  ...ZrxSwapper_1.zrxSwapper,
59
- ...endpoints_17.zrxApi,
61
+ ...endpoints_18.zrxApi,
60
62
  },
61
63
  [types_1.SwapperName.CowSwap]: {
62
64
  ...CowSwapper_1.cowSwapper,
@@ -68,7 +70,7 @@ exports.swappers = {
68
70
  },
69
71
  [types_1.SwapperName.Portals]: {
70
72
  ...PortalsSwapper_1.portalsSwapper,
71
- ...endpoints_12.portalsApi,
73
+ ...endpoints_13.portalsApi,
72
74
  },
73
75
  [types_1.SwapperName.Chainflip]: {
74
76
  ...ChainflipSwapper_1.chainflipSwapper,
@@ -76,11 +78,11 @@ exports.swappers = {
76
78
  },
77
79
  [types_1.SwapperName.Jupiter]: {
78
80
  ...JupiterSwapper_1.jupiterSwapper,
79
- ...endpoints_9.jupiterApi,
81
+ ...endpoints_10.jupiterApi,
80
82
  },
81
83
  [types_1.SwapperName.Relay]: {
82
84
  ...RelaySwapper_1.relaySwapper,
83
- ...endpoints_13.relayApi,
85
+ ...endpoints_14.relayApi,
84
86
  },
85
87
  [types_1.SwapperName.ButterSwap]: {
86
88
  ...ButterSwap_1.butterSwap,
@@ -92,7 +94,7 @@ exports.swappers = {
92
94
  },
93
95
  [types_1.SwapperName.NearIntents]: {
94
96
  ...NearIntentsSwapper_1.nearIntentsSwapper,
95
- ...endpoints_11.nearIntentsApi,
97
+ ...endpoints_12.nearIntentsApi,
96
98
  },
97
99
  [types_1.SwapperName.Cetus]: {
98
100
  ...CetusSwapper_1.cetusSwapper,
@@ -100,7 +102,7 @@ exports.swappers = {
100
102
  },
101
103
  [types_1.SwapperName.Sunio]: {
102
104
  ...SunioSwapper_1.sunioSwapper,
103
- ...endpoints_15.sunioApi,
105
+ ...endpoints_16.sunioApi,
104
106
  },
105
107
  [types_1.SwapperName.Avnu]: {
106
108
  ...AvnuSwapper_1.avnuSwapper,
@@ -108,12 +110,16 @@ exports.swappers = {
108
110
  },
109
111
  [types_1.SwapperName.Stonfi]: {
110
112
  ...StonfiSwapper_1.stonfiSwapper,
111
- ...endpoints_14.stonfiApi,
113
+ ...endpoints_15.stonfiApi,
112
114
  },
113
115
  [types_1.SwapperName.Across]: {
114
116
  ...AcrossSwapper_1.acrossSwapper,
115
117
  ...endpoints_1.acrossApi,
116
118
  },
119
+ [types_1.SwapperName.Debridge]: {
120
+ ...DebridgeSwapper_1.debridgeSwapper,
121
+ ...endpoints_9.debridgeApi,
122
+ },
117
123
  [types_1.SwapperName.Test]: undefined,
118
124
  };
119
125
  const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
@@ -130,6 +136,8 @@ const DEFAULT_SUNIO_SLIPPAGE_DECIMAL_PERCENTAGE = '0.005';
130
136
  // Starknet swaps can have more latency, so use higher default slippage
131
137
  const DEFAULT_AVNU_SLIPPAGE_DECIMAL_PERCENTAGE = '0.02';
132
138
  const DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
139
+ // deBridge API off-chain simulation overestimates output on some chains (e.g. SEI ~2.4%), so auto slippage (1%) is insufficient
140
+ const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
133
141
  const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
134
142
  if (swapperName === undefined)
135
143
  return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
@@ -156,6 +164,8 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
156
164
  throw new Error('Default slippage not supported by Relay');
157
165
  case types_1.SwapperName.Across:
158
166
  throw new Error('Default slippage not supported by Across');
167
+ case types_1.SwapperName.Debridge:
168
+ return DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE;
159
169
  case types_1.SwapperName.ButterSwap:
160
170
  return DEFAULT_BUTTERSWAP_SLIPPAGE_DECIMAL_PERCENTAGE;
161
171
  case types_1.SwapperName.NearIntents:
@@ -179,6 +189,7 @@ const isAutoSlippageSupportedBySwapper = (swapperName) => {
179
189
  return true;
180
190
  case types_1.SwapperName.Relay:
181
191
  case types_1.SwapperName.Across:
192
+ case types_1.SwapperName.Debridge:
182
193
  return true;
183
194
  default:
184
195
  return false;
@@ -27,6 +27,9 @@ exports.SUPPORTED_CHAIN_IDS = [
27
27
  types_1.KnownChainIds.AvalancheMainnet,
28
28
  types_1.KnownChainIds.PolygonMainnet,
29
29
  types_1.KnownChainIds.BnbSmartChainMainnet,
30
+ types_1.KnownChainIds.PlasmaMainnet,
31
+ types_1.KnownChainIds.LineaMainnet,
32
+ types_1.KnownChainIds.InkMainnet,
30
33
  ];
31
34
  exports.COW_SWAP_VAULT_RELAYER_ADDRESS = '0xc92e8bdf79f0507f65a392b0ab4667716bfe0110';
32
35
  exports.COW_SWAP_SETTLEMENT_ADDRESS = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41';
@@ -41,6 +41,12 @@ const getCowNetwork = (chainId) => {
41
41
  return types_1.CowNetwork.Polygon;
42
42
  case types_1.KnownChainIds.BnbSmartChainMainnet:
43
43
  return types_1.CowNetwork.Bnb;
44
+ case types_1.KnownChainIds.PlasmaMainnet:
45
+ return types_1.CowNetwork.Plasma;
46
+ case types_1.KnownChainIds.LineaMainnet:
47
+ return types_1.CowNetwork.Linea;
48
+ case types_1.KnownChainIds.InkMainnet:
49
+ return types_1.CowNetwork.Ink;
44
50
  default:
45
51
  return;
46
52
  }
@@ -9,6 +9,7 @@ export * from './swappers/CetusSwapper';
9
9
  export * from './swappers/ChainflipSwapper';
10
10
  export * from './swappers/SunioSwapper';
11
11
  export * from './swappers/CowSwapper';
12
+ export * from './swappers/DebridgeSwapper';
12
13
  export * from './swappers/JupiterSwapper';
13
14
  export * from './swappers/PortalsSwapper';
14
15
  export * from './swappers/ThorchainSwapper';
package/dist/cjs/index.js CHANGED
@@ -38,6 +38,7 @@ __exportStar(require("./swappers/CetusSwapper"), exports);
38
38
  __exportStar(require("./swappers/ChainflipSwapper"), exports);
39
39
  __exportStar(require("./swappers/SunioSwapper"), exports);
40
40
  __exportStar(require("./swappers/CowSwapper"), exports);
41
+ __exportStar(require("./swappers/DebridgeSwapper"), exports);
41
42
  __exportStar(require("./swappers/JupiterSwapper"), exports);
42
43
  __exportStar(require("./swappers/PortalsSwapper"), exports);
43
44
  __exportStar(require("./swappers/ThorchainSwapper"), exports);
@@ -30,6 +30,8 @@ exports.chainIdToAcrossChainId = {
30
30
  [caip_1.soneiumChainId]: chains_1.soneium.id,
31
31
  // Across uses a custom Solana chain ID
32
32
  [caip_1.solanaChainId]: 34268394551451,
33
+ [caip_1.scrollChainId]: chains_1.scroll.id,
34
+ [caip_1.megaethChainId]: 4326,
33
35
  };
34
36
  exports.acrossChainIdToChainId = (0, invert_1.default)(exports.chainIdToAcrossChainId);
35
37
  exports.ACROSS_SUPPORTED_CHAIN_IDS = Object.keys(exports.chainIdToAcrossChainId);
@@ -13,6 +13,7 @@ const axios_1 = __importDefault(require("axios"));
13
13
  const viem_1 = require("viem");
14
14
  const types_1 = require("../../../types");
15
15
  const utils_2 = require("../../../utils");
16
+ const affiliateFee_1 = require("../../utils/affiliateFee");
16
17
  const helpers_1 = require("../../utils/helpers/helpers");
17
18
  const constant_1 = require("../constant");
18
19
  const fetchAcrossTrade_1 = require("./fetchAcrossTrade");
@@ -184,7 +185,9 @@ async function getTrade({ input, deps, }) {
184
185
  if (quote.swapTx.ecosystem !== 'svm')
185
186
  return (0, monads_1.Ok)(undefined);
186
187
  try {
187
- const versionedTransaction = web3_js_1.VersionedTransaction.deserialize(new Uint8Array(Buffer.from(quote.swapTx.data, 'base64')));
188
+ const txBytes = Buffer.from(quote.swapTx.data, 'base64');
189
+ const isOversized = txBytes.length > 1232;
190
+ const versionedTransaction = web3_js_1.VersionedTransaction.deserialize(new Uint8Array(txBytes));
188
191
  const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
189
192
  const addressLookupTableAccountKeys = versionedTransaction.message.addressTableLookups.map(lookup => lookup.accountKey.toString());
190
193
  const addressLookupTableAccountsInfos = await adapter.getAddressLookupTableAccounts(addressLookupTableAccountKeys);
@@ -200,6 +203,7 @@ async function getTrade({ input, deps, }) {
200
203
  return (0, monads_1.Ok)({
201
204
  instructions: instructionsWithoutComputeBudget,
202
205
  addressLookupTableAddresses: addressLookupTableAccountKeys,
206
+ isOversized,
203
207
  });
204
208
  }
205
209
  catch (e) {
@@ -301,6 +305,16 @@ async function getTrade({ input, deps, }) {
301
305
  estimatedExecutionTimeMs: quote.expectedFillTime * 1000,
302
306
  acrossTransactionMetadata,
303
307
  solanaTransactionMetadata,
308
+ affiliateFee: appFee !== undefined && appFeeRecipient !== undefined
309
+ ? (0, affiliateFee_1.buildAffiliateFee)({
310
+ strategy: 'buy_asset',
311
+ affiliateBps,
312
+ sellAsset,
313
+ buyAsset,
314
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
315
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
316
+ })
317
+ : undefined,
304
318
  };
305
319
  const baseQuoteOrRate = {
306
320
  id: quote.id,
@@ -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("../utils/constants");
14
15
  const helpers_2 = require("../utils/helpers");
@@ -131,6 +132,14 @@ const getTradeQuote = async (input, deps) => {
131
132
  quoteId: bestQuote.quoteId,
132
133
  routes: bestQuote.routes,
133
134
  },
135
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
136
+ strategy: 'buy_asset',
137
+ affiliateBps,
138
+ sellAsset,
139
+ buyAsset,
140
+ sellAmountCryptoBaseUnit: sellAmount,
141
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
142
+ }),
134
143
  },
135
144
  ],
136
145
  };
@@ -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("../utils/constants");
14
15
  const helpers_2 = require("../utils/helpers");
@@ -108,6 +109,14 @@ const getTradeRate = async (input, deps) => {
108
109
  sellAsset,
109
110
  source: types_1.SwapperName.Avnu,
110
111
  estimatedExecutionTimeMs: undefined,
112
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
113
+ strategy: 'buy_asset',
114
+ affiliateBps,
115
+ sellAsset,
116
+ buyAsset,
117
+ sellAmountCryptoBaseUnit: sellAmount,
118
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
119
+ }),
111
120
  },
112
121
  ],
113
122
  };
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bebopSwapper = void 0;
4
4
  const utils_1 = require("../../utils");
5
+ const executeSolanaMessage_1 = require("./executeSolanaMessage");
5
6
  exports.bebopSwapper = {
6
7
  executeEvmTransaction: utils_1.executeEvmTransaction,
8
+ executeSolanaMessage: executeSolanaMessage_1.executeSolanaMessage,
7
9
  };
@@ -4,18 +4,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.bebopApi = void 0;
7
+ const caip_1 = require("@shapeshiftoss/caip");
7
8
  const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
8
9
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
10
  const viem_1 = require("viem");
10
11
  const utils_1 = require("../../utils");
12
+ const getBebopSolanaTradeQuote_1 = require("./getBebopSolanaTradeQuote/getBebopSolanaTradeQuote");
13
+ const getBebopSolanaTradeRate_1 = require("./getBebopSolanaTradeRate/getBebopSolanaTradeRate");
11
14
  const getBebopTradeQuote_1 = require("./getBebopTradeQuote/getBebopTradeQuote");
12
15
  const getBebopTradeRate_1 = require("./getBebopTradeRate/getBebopTradeRate");
16
+ const helpers_1 = require("./utils/helpers/helpers");
13
17
  exports.bebopApi = {
14
18
  getTradeQuote: async (input, { assertGetEvmChainAdapter, assetsById, config }) => {
19
+ if ((0, helpers_1.isSolanaChainId)(input.sellAsset.chainId)) {
20
+ const tradeQuoteResult = await (0, getBebopSolanaTradeQuote_1.getBebopSolanaTradeQuote)(input, assetsById, config.VITE_BEBOP_API_KEY);
21
+ return tradeQuoteResult.map(tradeQuote => [tradeQuote]);
22
+ }
15
23
  const tradeQuoteResult = await (0, getBebopTradeQuote_1.getBebopTradeQuote)(input, assertGetEvmChainAdapter, assetsById, config.VITE_BEBOP_API_KEY);
16
24
  return tradeQuoteResult.map(tradeQuote => [tradeQuote]);
17
25
  },
18
26
  getTradeRate: async (input, { assertGetEvmChainAdapter, assetsById, config }) => {
27
+ if ((0, helpers_1.isSolanaChainId)(input.sellAsset.chainId)) {
28
+ const tradeRateResult = await (0, getBebopSolanaTradeRate_1.getBebopSolanaTradeRate)(input, assetsById, config.VITE_BEBOP_API_KEY);
29
+ return tradeRateResult.map(tradeRate => [tradeRate]);
30
+ }
19
31
  const tradeRateResult = await (0, getBebopTradeRate_1.getBebopTradeRate)(input, assertGetEvmChainAdapter, assetsById, config.VITE_BEBOP_API_KEY);
20
32
  return tradeRateResult.map(tradeRate => [tradeRate]);
21
33
  },
@@ -40,10 +52,22 @@ exports.bebopApi = {
40
52
  to,
41
53
  value,
42
54
  ...feeData,
43
- // Use the higher amount of the node or the API, as the node doesn't always provide enough gas padding
44
55
  gasLimit: bignumber_js_1.default.max(feeData.gasLimit, gas).toFixed(),
45
56
  });
46
57
  },
58
+ getUnsignedSolanaMessage: ({ tradeQuote, stepIndex }) => {
59
+ if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
60
+ throw new Error('Unable to execute a trade rate quote');
61
+ const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
62
+ const { bebopSolanaSerializedTx, bebopQuoteId } = step;
63
+ if (!bebopSolanaSerializedTx || !bebopQuoteId) {
64
+ throw new Error('Bebop Solana transaction metadata is required');
65
+ }
66
+ return Promise.resolve({
67
+ serializedTx: bebopSolanaSerializedTx,
68
+ quoteId: bebopQuoteId,
69
+ });
70
+ },
47
71
  getEvmTransactionFees: async ({ from, stepIndex, tradeQuote, supportsEIP1559, assertGetEvmChainAdapter, }) => {
48
72
  if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
49
73
  throw new Error('Unable to execute a trade rate quote');
@@ -57,5 +81,14 @@ exports.bebopApi = {
57
81
  const feeData = await chain_adapters_1.evm.getFees({ adapter, data, to, value, from, supportsEIP1559 });
58
82
  return feeData.networkFeeCryptoBaseUnit;
59
83
  },
60
- checkTradeStatus: utils_1.checkEvmSwapStatus,
84
+ checkTradeStatus: input => {
85
+ if (input.chainId === caip_1.solanaChainId) {
86
+ return (0, utils_1.checkSolanaSwapStatus)({
87
+ txHash: input.txHash,
88
+ address: input.address,
89
+ assertGetSolanaChainAdapter: input.assertGetSolanaChainAdapter,
90
+ });
91
+ }
92
+ return (0, utils_1.checkEvmSwapStatus)(input);
93
+ },
61
94
  };
@@ -0,0 +1,2 @@
1
+ import type { SolanaMessageExecutionProps, SolanaMessageToSign, SwapperConfig } from '../../types';
2
+ export declare const executeSolanaMessage: (messageData: SolanaMessageToSign, { signSerializedTransaction }: SolanaMessageExecutionProps, config: SwapperConfig) => Promise<string>;
@@ -0,0 +1,47 @@
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.executeSolanaMessage = void 0;
7
+ const bs58_1 = __importDefault(require("bs58"));
8
+ const bebopService_1 = require("./utils/bebopService");
9
+ const executeSolanaMessage = async (messageData, { signSerializedTransaction }, config) => {
10
+ const { serializedTx, quoteId } = messageData;
11
+ if (!serializedTx || !quoteId) {
12
+ throw new Error('Missing serializedTx or quoteId in message data');
13
+ }
14
+ const signatures = await signSerializedTransaction(serializedTx);
15
+ if (!signatures.length) {
16
+ throw new Error('No signatures returned from wallet');
17
+ }
18
+ // Find the actual non-zero user signature (skip empty placeholder slots from co-signers)
19
+ const nonZeroSigIndex = signatures.findIndex(sig => {
20
+ const bytes = Buffer.from(sig, 'base64');
21
+ return !bytes.every(b => b === 0);
22
+ });
23
+ if (nonZeroSigIndex === -1) {
24
+ throw new Error('No non-zero signatures found after signing');
25
+ }
26
+ const userSignatureBase64 = signatures[nonZeroSigIndex];
27
+ const userSignatureBytes = Buffer.from(userSignatureBase64, 'base64');
28
+ const userSignatureBase58 = bs58_1.default.encode(userSignatureBytes);
29
+ const bebopService = (0, bebopService_1.bebopServiceFactory)({ apiKey: config.VITE_BEBOP_API_KEY });
30
+ const maybeOrderResponse = await bebopService.post('https://api.bebop.xyz/pmm/solana/v3/order', {
31
+ quote_id: quoteId,
32
+ signature: userSignatureBase58,
33
+ });
34
+ if (maybeOrderResponse.isErr()) {
35
+ const error = maybeOrderResponse.unwrapErr();
36
+ throw new Error(`Bebop order submission failed: ${error.cause ?? error.message}`);
37
+ }
38
+ const { data: orderResponse } = maybeOrderResponse.unwrap();
39
+ if (orderResponse.error) {
40
+ throw new Error(`Bebop order failed: ${orderResponse.error.message} (code ${orderResponse.error.errorCode})`);
41
+ }
42
+ if (!orderResponse.txHash) {
43
+ throw new Error(`Bebop order response missing txHash: ${JSON.stringify(orderResponse)}`);
44
+ }
45
+ return orderResponse.txHash;
46
+ };
47
+ exports.executeSolanaMessage = executeSolanaMessage;
@@ -0,0 +1,4 @@
1
+ import type { AssetsByIdPartial } from '@shapeshiftoss/types';
2
+ import type { Result } from '@sniptt/monads';
3
+ import type { GetSolanaTradeQuoteInput, SwapErrorRight, TradeQuote } from '../../../types';
4
+ export declare function getBebopSolanaTradeQuote(input: GetSolanaTradeQuoteInput, _assetsById: AssetsByIdPartial, apiKey: string): Promise<Result<TradeQuote, SwapErrorRight>>;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBebopSolanaTradeQuote = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const uuid_1 = require("uuid");
6
+ const constants_1 = require("../../../constants");
7
+ const types_1 = require("../../../types");
8
+ const utils_1 = require("../../../utils");
9
+ const fetchFromBebop_1 = require("../utils/fetchFromBebop");
10
+ const helpers_1 = require("../utils/helpers/helpers");
11
+ async function getBebopSolanaTradeQuote(input, _assetsById, apiKey) {
12
+ const { sellAsset, buyAsset, accountNumber, sendAddress, receiveAddress, affiliateBps, sellAmountIncludingProtocolFeesCryptoBaseUnit, } = input;
13
+ const assertion = (0, helpers_1.assertValidTrade)({ buyAsset, sellAsset });
14
+ if (assertion.isErr())
15
+ return (0, monads_1.Err)(assertion.unwrapErr());
16
+ const takerAddress = sendAddress || receiveAddress;
17
+ if (!takerAddress) {
18
+ return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
19
+ message: 'Cannot execute quote without a wallet address',
20
+ code: types_1.TradeQuoteError.UnknownError,
21
+ }));
22
+ }
23
+ const slippageTolerancePercentageDecimal = input.slippageTolerancePercentageDecimal ??
24
+ (0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Bebop);
25
+ const maybeBebopQuoteResponse = await (0, fetchFromBebop_1.fetchBebopSolanaQuote)({
26
+ buyAsset,
27
+ sellAsset,
28
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
29
+ takerAddress,
30
+ receiverAddress: receiveAddress ?? takerAddress,
31
+ slippageTolerancePercentageDecimal,
32
+ affiliateBps,
33
+ apiKey,
34
+ });
35
+ if (maybeBebopQuoteResponse.isErr())
36
+ return (0, monads_1.Err)(maybeBebopQuoteResponse.unwrapErr());
37
+ const bebopQuoteResponse = maybeBebopQuoteResponse.unwrap();
38
+ const sellTokenAddress = Object.keys(bebopQuoteResponse.sellTokens)[0];
39
+ const buyTokenAddress = Object.keys(bebopQuoteResponse.buyTokens)[0];
40
+ if (!sellTokenAddress || !buyTokenAddress) {
41
+ return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
42
+ message: 'Invalid token addresses in response',
43
+ code: types_1.TradeQuoteError.InvalidResponse,
44
+ }));
45
+ }
46
+ if (bebopQuoteResponse.solana_tx &&
47
+ !(0, helpers_1.isBebopSolanaTxSafe)(bebopQuoteResponse.solana_tx, takerAddress)) {
48
+ return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
49
+ message: 'Bebop signer index mismatch - taker not at expected position',
50
+ code: types_1.TradeQuoteError.NoRouteFound,
51
+ }));
52
+ }
53
+ const sellAmount = bebopQuoteResponse.sellTokens[sellTokenAddress].amount;
54
+ const buyAmount = bebopQuoteResponse.buyTokens[buyTokenAddress].amount;
55
+ const rate = (0, helpers_1.calculateRate)({ buyAmount, sellAmount, buyAsset, sellAsset });
56
+ const buyTokenData = bebopQuoteResponse.buyTokens[buyTokenAddress];
57
+ const buyAmountBeforeFeesCryptoBaseUnit = buyTokenData.amountBeforeFee || buyAmount;
58
+ const buyAmountAfterFeesCryptoBaseUnit = buyAmount;
59
+ // Bebop Solana is gasless - Bebop pays the network fees via co-signing
60
+ const networkFeeCryptoBaseUnit = '0';
61
+ return (0, monads_1.Ok)({
62
+ id: (0, uuid_1.v4)(),
63
+ quoteOrRate: 'quote',
64
+ receiveAddress: receiveAddress ?? takerAddress,
65
+ affiliateBps,
66
+ slippageTolerancePercentageDecimal,
67
+ rate,
68
+ swapperName: types_1.SwapperName.Bebop,
69
+ steps: [
70
+ {
71
+ estimatedExecutionTimeMs: 0,
72
+ allowanceContract: '0x0',
73
+ buyAsset,
74
+ sellAsset,
75
+ accountNumber,
76
+ rate,
77
+ feeData: {
78
+ protocolFees: {},
79
+ networkFeeCryptoBaseUnit,
80
+ },
81
+ buyAmountBeforeFeesCryptoBaseUnit,
82
+ buyAmountAfterFeesCryptoBaseUnit,
83
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
84
+ source: types_1.SwapperName.Bebop,
85
+ bebopSolanaSerializedTx: bebopQuoteResponse.solana_tx,
86
+ bebopQuoteId: bebopQuoteResponse.quoteId,
87
+ },
88
+ ],
89
+ });
90
+ }
91
+ exports.getBebopSolanaTradeQuote = getBebopSolanaTradeQuote;
@@ -0,0 +1,4 @@
1
+ import type { AssetsByIdPartial } from '@shapeshiftoss/types';
2
+ import type { Result } from '@sniptt/monads';
3
+ import type { GetSolanaTradeRateInput, SwapErrorRight, TradeRate } from '../../../types';
4
+ export declare function getBebopSolanaTradeRate(input: GetSolanaTradeRateInput, _assetsById: AssetsByIdPartial, apiKey: string): Promise<Result<TradeRate, SwapErrorRight>>;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBebopSolanaTradeRate = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const uuid_1 = require("uuid");
6
+ const constants_1 = require("../../../constants");
7
+ const types_1 = require("../../../types");
8
+ const utils_1 = require("../../../utils");
9
+ const fetchFromBebop_1 = require("../utils/fetchFromBebop");
10
+ const helpers_1 = require("../utils/helpers/helpers");
11
+ async function getBebopSolanaTradeRate(input, _assetsById, apiKey) {
12
+ const { sellAsset, buyAsset, accountNumber, receiveAddress, affiliateBps, sellAmountIncludingProtocolFeesCryptoBaseUnit, } = input;
13
+ const assertion = (0, helpers_1.assertValidTrade)({ buyAsset, sellAsset });
14
+ if (assertion.isErr())
15
+ return (0, monads_1.Err)(assertion.unwrapErr());
16
+ const slippageTolerancePercentageDecimal = input.slippageTolerancePercentageDecimal ??
17
+ (0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Bebop);
18
+ const maybeBebopPriceResponse = await (0, fetchFromBebop_1.fetchBebopSolanaPrice)({
19
+ buyAsset,
20
+ sellAsset,
21
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
22
+ receiveAddress,
23
+ affiliateBps,
24
+ apiKey,
25
+ });
26
+ if (maybeBebopPriceResponse.isErr())
27
+ return (0, monads_1.Err)(maybeBebopPriceResponse.unwrapErr());
28
+ const bebopPriceResponse = maybeBebopPriceResponse.unwrap();
29
+ const sellTokenAddress = Object.keys(bebopPriceResponse.sellTokens)[0];
30
+ const buyTokenAddress = Object.keys(bebopPriceResponse.buyTokens)[0];
31
+ if (!sellTokenAddress || !buyTokenAddress) {
32
+ return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
33
+ message: 'Invalid token addresses in response',
34
+ code: types_1.TradeQuoteError.InvalidResponse,
35
+ }));
36
+ }
37
+ if (bebopPriceResponse.solana_tx) {
38
+ if (!receiveAddress) {
39
+ return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
40
+ message: 'Cannot validate Bebop Solana tx without a taker address',
41
+ code: types_1.TradeQuoteError.NoRouteFound,
42
+ }));
43
+ }
44
+ if (!(0, helpers_1.isBebopSolanaTxSafe)(bebopPriceResponse.solana_tx, receiveAddress)) {
45
+ return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
46
+ message: 'Bebop signer index mismatch - taker not at expected position',
47
+ code: types_1.TradeQuoteError.NoRouteFound,
48
+ }));
49
+ }
50
+ }
51
+ const sellAmount = bebopPriceResponse.sellTokens[sellTokenAddress].amount;
52
+ const buyAmount = bebopPriceResponse.buyTokens[buyTokenAddress].amount;
53
+ const rate = (0, helpers_1.calculateRate)({ buyAmount, sellAmount, buyAsset, sellAsset });
54
+ const buyTokenData = bebopPriceResponse.buyTokens[buyTokenAddress];
55
+ const buyAmountBeforeFeesCryptoBaseUnit = buyTokenData.amountBeforeFee || buyAmount;
56
+ const buyAmountAfterFeesCryptoBaseUnit = buyAmount;
57
+ // Bebop Solana is gasless - Bebop pays the network fees via co-signing
58
+ const networkFeeCryptoBaseUnit = '0';
59
+ return (0, monads_1.Ok)({
60
+ id: (0, uuid_1.v4)(),
61
+ quoteOrRate: 'rate',
62
+ accountNumber: undefined,
63
+ receiveAddress,
64
+ affiliateBps,
65
+ slippageTolerancePercentageDecimal,
66
+ rate,
67
+ swapperName: types_1.SwapperName.Bebop,
68
+ steps: [
69
+ {
70
+ estimatedExecutionTimeMs: 0,
71
+ allowanceContract: '0x0',
72
+ buyAsset,
73
+ sellAsset,
74
+ accountNumber,
75
+ rate,
76
+ feeData: {
77
+ protocolFees: {},
78
+ networkFeeCryptoBaseUnit,
79
+ },
80
+ buyAmountBeforeFeesCryptoBaseUnit,
81
+ buyAmountAfterFeesCryptoBaseUnit,
82
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
83
+ source: types_1.SwapperName.Bebop,
84
+ },
85
+ ],
86
+ });
87
+ }
88
+ exports.getBebopSolanaTradeRate = getBebopSolanaTradeRate;
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
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 types_2 = require("../types");
14
15
  const fetchFromBebop_1 = require("../utils/fetchFromBebop");
@@ -102,6 +103,15 @@ async function getBebopTradeQuote(input, assertGetEvmChainAdapter, _assetsById,
102
103
  sellAmountIncludingProtocolFeesCryptoBaseUnit,
103
104
  source: types_1.SwapperName.Bebop,
104
105
  bebopTransactionMetadata: transactionMetadata,
106
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
107
+ strategy: 'buy_asset',
108
+ affiliateBps,
109
+ sellAsset,
110
+ buyAsset,
111
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
112
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
113
+ isEstimate: true,
114
+ }),
105
115
  },
106
116
  ],
107
117
  });
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
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 fetchFromBebop_1 = require("../utils/fetchFromBebop");
14
15
  const helpers_2 = require("../utils/helpers/helpers");
@@ -85,6 +86,15 @@ async function getBebopTradeRate(input, assertGetEvmChainAdapter, _assetsById, a
85
86
  buyAmountAfterFeesCryptoBaseUnit,
86
87
  sellAmountIncludingProtocolFeesCryptoBaseUnit,
87
88
  source: types_1.SwapperName.Bebop,
89
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
90
+ strategy: 'buy_asset',
91
+ affiliateBps,
92
+ sellAsset,
93
+ buyAsset,
94
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
95
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
96
+ isEstimate: true,
97
+ }),
88
98
  },
89
99
  ],
90
100
  });