@shapeshiftoss/swapper 17.6.10 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/cjs/.tsbuildinfo +1 -1
  3. package/dist/cjs/constants.js +11 -10
  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 -1
  7. package/dist/cjs/index.js +1 -1
  8. package/dist/cjs/solana-utils/getUnsignedSolanaTransaction.js +4 -2
  9. package/dist/cjs/swappers/AcrossSwapper/constant.js +2 -0
  10. package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.js +15 -1
  11. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +12 -1
  12. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
  13. package/dist/cjs/swappers/BebopSwapper/BebopSwapper.js +2 -0
  14. package/dist/cjs/swappers/BebopSwapper/endpoints.js +35 -2
  15. package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
  16. package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.js +47 -0
  17. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
  18. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +91 -0
  19. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
  20. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +88 -0
  21. package/dist/cjs/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
  22. package/dist/cjs/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
  23. package/dist/cjs/swappers/BebopSwapper/types.d.ts +49 -1
  24. package/dist/cjs/swappers/BebopSwapper/types.js +9 -2
  25. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
  26. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +86 -1
  27. package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
  28. package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.js +47 -1
  29. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
  30. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
  31. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
  32. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
  33. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
  34. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +1 -1
  35. package/dist/cjs/swappers/ChainflipSwapper/constants.js +7 -3
  36. package/dist/cjs/swappers/ChainflipSwapper/endpoints.js +14 -4
  37. package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
  38. package/dist/cjs/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
  39. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
  40. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
  41. package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
  42. package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.js +7 -0
  43. package/dist/cjs/swappers/DebridgeSwapper/constant.d.ts +5 -0
  44. package/dist/cjs/swappers/DebridgeSwapper/constant.js +36 -0
  45. package/dist/cjs/swappers/{JupiterSwapper → DebridgeSwapper}/endpoints.d.ts +1 -1
  46. package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
  47. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
  48. package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +19 -0
  49. package/dist/cjs/swappers/DebridgeSwapper/index.d.ts +1 -0
  50. package/dist/cjs/swappers/DebridgeSwapper/index.js +5 -0
  51. package/dist/cjs/swappers/{JupiterSwapper/utils/jupiterService.d.ts → DebridgeSwapper/utils/debridgeService.d.ts} +1 -1
  52. package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.js +17 -0
  53. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
  54. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +23 -0
  55. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
  56. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +29 -0
  57. package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
  58. package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.js +367 -0
  59. package/dist/cjs/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
  60. package/dist/cjs/swappers/DebridgeSwapper/utils/types.js +9 -0
  61. package/dist/cjs/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
  62. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +12 -0
  63. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +12 -0
  64. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
  65. package/dist/cjs/swappers/RelaySwapper/constant.js +7 -10
  66. package/dist/cjs/swappers/RelaySwapper/endpoints.js +1 -1
  67. package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +56 -7
  68. package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +22 -7
  69. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +12 -1
  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/{swappers/JupiterSwapper → thorchain-utils/solana}/index.js +3 -2
  95. package/dist/cjs/tron-utils/getUnsignedTronTransaction.js +16 -0
  96. package/dist/cjs/types.d.ts +47 -11
  97. package/dist/cjs/types.js +1 -1
  98. package/dist/cjs/utils.d.ts +3 -0
  99. package/dist/cjs/utils.js +9 -3
  100. package/dist/esm/.tsbuildinfo +1 -1
  101. package/dist/esm/constants.js +11 -10
  102. package/dist/esm/cowswap-utils/constants.js +3 -0
  103. package/dist/esm/cowswap-utils/index.js +6 -0
  104. package/dist/esm/index.d.ts +1 -1
  105. package/dist/esm/index.js +1 -1
  106. package/dist/esm/solana-utils/getUnsignedSolanaTransaction.js +3 -1
  107. package/dist/esm/swappers/AcrossSwapper/constant.js +4 -2
  108. package/dist/esm/swappers/AcrossSwapper/utils/getTrade.js +15 -1
  109. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +12 -1
  110. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
  111. package/dist/esm/swappers/BebopSwapper/BebopSwapper.js +2 -0
  112. package/dist/esm/swappers/BebopSwapper/endpoints.js +36 -3
  113. package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
  114. package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.js +40 -0
  115. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
  116. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +87 -0
  117. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
  118. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +84 -0
  119. package/dist/esm/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
  120. package/dist/esm/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
  121. package/dist/esm/swappers/BebopSwapper/types.d.ts +49 -1
  122. package/dist/esm/swappers/BebopSwapper/types.js +8 -1
  123. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
  124. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +85 -2
  125. package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
  126. package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.js +44 -1
  127. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
  128. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
  129. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
  130. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
  131. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
  132. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +1 -1
  133. package/dist/esm/swappers/ChainflipSwapper/constants.js +8 -4
  134. package/dist/esm/swappers/ChainflipSwapper/endpoints.js +14 -4
  135. package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
  136. package/dist/esm/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
  137. package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
  138. package/dist/esm/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
  139. package/dist/esm/swappers/{JupiterSwapper/JupiterSwapper.d.ts → DebridgeSwapper/DebridgeSwapper.d.ts} +1 -1
  140. package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.js +4 -0
  141. package/dist/esm/swappers/DebridgeSwapper/constant.d.ts +5 -0
  142. package/dist/esm/swappers/DebridgeSwapper/constant.js +30 -0
  143. package/dist/esm/swappers/{JupiterSwapper → DebridgeSwapper}/endpoints.d.ts +1 -1
  144. package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
  145. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
  146. package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +15 -0
  147. package/dist/esm/swappers/DebridgeSwapper/index.d.ts +1 -0
  148. package/dist/esm/swappers/DebridgeSwapper/index.js +1 -0
  149. package/dist/esm/swappers/{JupiterSwapper/utils/jupiterService.d.ts → DebridgeSwapper/utils/debridgeService.d.ts} +1 -1
  150. package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.js +11 -0
  151. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
  152. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +19 -0
  153. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
  154. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +25 -0
  155. package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
  156. package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.js +360 -0
  157. package/dist/esm/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
  158. package/dist/esm/swappers/DebridgeSwapper/utils/types.js +5 -0
  159. package/dist/esm/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
  160. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +14 -2
  161. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +14 -2
  162. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
  163. package/dist/esm/swappers/RelaySwapper/constant.js +9 -12
  164. package/dist/esm/swappers/RelaySwapper/endpoints.js +2 -2
  165. package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +59 -10
  166. package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +22 -7
  167. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +12 -1
  168. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
  169. package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
  170. package/dist/esm/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  171. package/dist/esm/swappers/ThorchainSwapper/endpoints.js +3 -1
  172. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  173. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
  174. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
  175. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +11 -1
  176. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
  177. package/dist/esm/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
  178. package/dist/esm/swappers/utils/affiliateFee.d.ts +17 -0
  179. package/dist/esm/swappers/utils/affiliateFee.js +39 -0
  180. package/dist/esm/thorchain-utils/getL1RateOrQuote.js +57 -4
  181. package/dist/esm/thorchain-utils/index.d.ts +2 -1
  182. package/dist/esm/thorchain-utils/index.js +1 -0
  183. package/dist/esm/thorchain-utils/solana/constants.d.ts +1 -0
  184. package/dist/esm/thorchain-utils/solana/constants.js +3 -0
  185. package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
  186. package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.js +37 -0
  187. package/dist/esm/thorchain-utils/solana/getThorTxData.d.ts +12 -0
  188. package/dist/esm/thorchain-utils/solana/getThorTxData.js +10 -0
  189. package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
  190. package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.js +60 -0
  191. package/dist/esm/thorchain-utils/solana/index.d.ts +3 -0
  192. package/dist/esm/thorchain-utils/solana/index.js +3 -0
  193. package/dist/esm/tron-utils/getUnsignedTronTransaction.js +16 -0
  194. package/dist/esm/types.d.ts +47 -11
  195. package/dist/esm/types.js +1 -1
  196. package/dist/esm/utils.d.ts +3 -0
  197. package/dist/esm/utils.js +7 -2
  198. package/package.json +19 -19
  199. package/dist/cjs/swappers/JupiterSwapper/JupiterSwapper.d.ts +0 -2
  200. package/dist/cjs/swappers/JupiterSwapper/JupiterSwapper.js +0 -27
  201. package/dist/cjs/swappers/JupiterSwapper/endpoints.js +0 -15
  202. package/dist/cjs/swappers/JupiterSwapper/errorPatterns.d.ts +0 -15
  203. package/dist/cjs/swappers/JupiterSwapper/errorPatterns.js +0 -29
  204. package/dist/cjs/swappers/JupiterSwapper/idls/referral.d.ts +0 -739
  205. package/dist/cjs/swappers/JupiterSwapper/idls/referral.js +0 -741
  206. package/dist/cjs/swappers/JupiterSwapper/index.d.ts +0 -2
  207. package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +0 -191
  208. package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.js +0 -172
  209. package/dist/cjs/swappers/JupiterSwapper/utils/constants.d.ts +0 -9
  210. package/dist/cjs/swappers/JupiterSwapper/utils/constants.js +0 -14
  211. package/dist/cjs/swappers/JupiterSwapper/utils/helpers.d.ts +0 -56
  212. package/dist/cjs/swappers/JupiterSwapper/utils/helpers.js +0 -178
  213. package/dist/cjs/swappers/JupiterSwapper/utils/jupiterService.js +0 -15
  214. package/dist/esm/swappers/JupiterSwapper/JupiterSwapper.js +0 -24
  215. package/dist/esm/swappers/JupiterSwapper/endpoints.js +0 -12
  216. package/dist/esm/swappers/JupiterSwapper/errorPatterns.d.ts +0 -15
  217. package/dist/esm/swappers/JupiterSwapper/errorPatterns.js +0 -25
  218. package/dist/esm/swappers/JupiterSwapper/idls/referral.d.ts +0 -739
  219. package/dist/esm/swappers/JupiterSwapper/idls/referral.js +0 -738
  220. package/dist/esm/swappers/JupiterSwapper/index.d.ts +0 -2
  221. package/dist/esm/swappers/JupiterSwapper/index.js +0 -2
  222. package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +0 -187
  223. package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +0 -168
  224. package/dist/esm/swappers/JupiterSwapper/utils/constants.d.ts +0 -9
  225. package/dist/esm/swappers/JupiterSwapper/utils/constants.js +0 -11
  226. package/dist/esm/swappers/JupiterSwapper/utils/helpers.d.ts +0 -56
  227. package/dist/esm/swappers/JupiterSwapper/utils/helpers.js +0 -169
  228. package/dist/esm/swappers/JupiterSwapper/utils/jupiterService.js +0 -12
  229. /package/dist/cjs/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeQuote}/getTradeQuote.d.ts +0 -0
  230. /package/dist/cjs/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeRate}/getTradeRate.d.ts +0 -0
  231. /package/dist/esm/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeQuote}/getTradeQuote.d.ts +0 -0
  232. /package/dist/esm/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeRate}/getTradeRate.d.ts +0 -0
@@ -18,8 +18,8 @@ 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");
22
- const JupiterSwapper_1 = require("./swappers/JupiterSwapper/JupiterSwapper");
21
+ const DebridgeSwapper_1 = require("./swappers/DebridgeSwapper");
22
+ const endpoints_9 = require("./swappers/DebridgeSwapper/endpoints");
23
23
  const endpoints_10 = require("./swappers/MayachainSwapper/endpoints");
24
24
  const MayachainSwapper_1 = require("./swappers/MayachainSwapper/MayachainSwapper");
25
25
  const endpoints_11 = require("./swappers/NearIntentsSwapper/endpoints");
@@ -74,10 +74,6 @@ exports.swappers = {
74
74
  ...ChainflipSwapper_1.chainflipSwapper,
75
75
  ...endpoints_7.chainflipApi,
76
76
  },
77
- [types_1.SwapperName.Jupiter]: {
78
- ...JupiterSwapper_1.jupiterSwapper,
79
- ...endpoints_9.jupiterApi,
80
- },
81
77
  [types_1.SwapperName.Relay]: {
82
78
  ...RelaySwapper_1.relaySwapper,
83
79
  ...endpoints_13.relayApi,
@@ -114,6 +110,10 @@ exports.swappers = {
114
110
  ...AcrossSwapper_1.acrossSwapper,
115
111
  ...endpoints_1.acrossApi,
116
112
  },
113
+ [types_1.SwapperName.Debridge]: {
114
+ ...DebridgeSwapper_1.debridgeSwapper,
115
+ ...endpoints_9.debridgeApi,
116
+ },
117
117
  [types_1.SwapperName.Test]: undefined,
118
118
  };
119
119
  const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
@@ -130,6 +130,8 @@ const DEFAULT_SUNIO_SLIPPAGE_DECIMAL_PERCENTAGE = '0.005';
130
130
  // Starknet swaps can have more latency, so use higher default slippage
131
131
  const DEFAULT_AVNU_SLIPPAGE_DECIMAL_PERCENTAGE = '0.02';
132
132
  const DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
133
+ // deBridge API off-chain simulation overestimates output on some chains (e.g. SEI ~2.4%), so auto slippage (1%) is insufficient
134
+ const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
133
135
  const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
134
136
  if (swapperName === undefined)
135
137
  return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
@@ -150,12 +152,12 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
150
152
  return DEFAULT_ARBITRUM_BRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE;
151
153
  case types_1.SwapperName.Chainflip:
152
154
  return DEFAULT_CHAINFLIP_SLIPPAGE_DECIMAL_PERCENTAGE;
153
- case types_1.SwapperName.Jupiter:
154
- throw new Error('Default slippage not supported by Jupiter');
155
155
  case types_1.SwapperName.Relay:
156
156
  throw new Error('Default slippage not supported by Relay');
157
157
  case types_1.SwapperName.Across:
158
158
  throw new Error('Default slippage not supported by Across');
159
+ case types_1.SwapperName.Debridge:
160
+ return DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE;
159
161
  case types_1.SwapperName.ButterSwap:
160
162
  return DEFAULT_BUTTERSWAP_SLIPPAGE_DECIMAL_PERCENTAGE;
161
163
  case types_1.SwapperName.NearIntents:
@@ -175,10 +177,9 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
175
177
  exports.getDefaultSlippageDecimalPercentageForSwapper = getDefaultSlippageDecimalPercentageForSwapper;
176
178
  const isAutoSlippageSupportedBySwapper = (swapperName) => {
177
179
  switch (swapperName) {
178
- case types_1.SwapperName.Jupiter:
179
- return true;
180
180
  case types_1.SwapperName.Relay:
181
181
  case types_1.SwapperName.Across:
182
+ case types_1.SwapperName.Debridge:
182
183
  return true;
183
184
  default:
184
185
  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,7 +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/JupiterSwapper';
12
+ export * from './swappers/DebridgeSwapper';
13
13
  export * from './swappers/PortalsSwapper';
14
14
  export * from './swappers/ThorchainSwapper';
15
15
  export * from './swappers/MayachainSwapper';
package/dist/cjs/index.js CHANGED
@@ -38,7 +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/JupiterSwapper"), exports);
41
+ __exportStar(require("./swappers/DebridgeSwapper"), exports);
42
42
  __exportStar(require("./swappers/PortalsSwapper"), exports);
43
43
  __exportStar(require("./swappers/ThorchainSwapper"), exports);
44
44
  __exportStar(require("./swappers/MayachainSwapper"), exports);
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUnsignedSolanaTransaction = void 0;
4
4
  const utils_1 = require("@shapeshiftoss/utils");
5
- const JupiterSwapper_1 = require("../swappers/JupiterSwapper");
6
5
  const utils_2 = require("../utils");
6
+ // Jupiter (and Relay which uses Jupiter under the hood) use 40% as a compute unit margin while
7
+ // calculating them, some TX reverts without this. For stability purposes we add 60% margin.
8
+ const COMPUTE_UNIT_MARGIN_MULTIPLIER = 1.6;
7
9
  const getUnsignedSolanaTransaction = async ({ stepIndex, tradeQuote, from, assertGetSolanaChainAdapter, }) => {
8
10
  if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
9
11
  throw new Error('Unable to execute a trade rate quote');
@@ -30,7 +32,7 @@ const getUnsignedSolanaTransaction = async ({ stepIndex, tradeQuote, from, asser
30
32
  instructions: solanaInstructions,
31
33
  // As always, as relay uses jupiter under the hood, we need to add the compute unit safety margin
32
34
  computeUnitLimit: (0, utils_1.bnOrZero)(fast.chainSpecific.computeUnits)
33
- .times(JupiterSwapper_1.COMPUTE_UNIT_MARGIN_MULTIPLIER)
35
+ .times(COMPUTE_UNIT_MARGIN_MULTIPLIER)
34
36
  .toFixed(0),
35
37
  computeUnitPrice: fast.chainSpecific.priorityFee,
36
38
  },
@@ -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,
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTradeQuote = void 0;
4
4
  const avnu_sdk_1 = require("@avnu/avnu-sdk");
5
+ const caip_1 = require("@shapeshiftoss/caip");
5
6
  const utils_1 = require("@shapeshiftoss/utils");
6
7
  const monads_1 = require("@sniptt/monads");
7
8
  const starknet_1 = require("starknet");
@@ -9,6 +10,7 @@ const uuid_1 = require("uuid");
9
10
  const constants_1 = require("../../../constants");
10
11
  const types_1 = require("../../../types");
11
12
  const utils_2 = require("../../../utils");
13
+ const affiliateFee_1 = require("../../utils/affiliateFee");
12
14
  const helpers_1 = require("../../utils/helpers/helpers");
13
15
  const constants_2 = require("../utils/constants");
14
16
  const helpers_2 = require("../utils/helpers");
@@ -58,7 +60,8 @@ const getTradeQuote = async (input, deps) => {
58
60
  takerAddress: normalizedSendAddress,
59
61
  size: 1,
60
62
  integratorFees: affiliateBps ? BigInt(affiliateBps) : undefined,
61
- integratorFeeRecipient: (0, helpers_1.getTreasuryAddressFromChainId)(sellAsset.chainId),
63
+ integratorFeeRecipient: (0, helpers_1.getTreasuryAddressFromChainId)(caip_1.starknetChainId),
64
+ integratorName: 'shapeshift',
62
65
  });
63
66
  if (!quotes || quotes.length === 0) {
64
67
  return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
@@ -131,6 +134,14 @@ const getTradeQuote = async (input, deps) => {
131
134
  quoteId: bestQuote.quoteId,
132
135
  routes: bestQuote.routes,
133
136
  },
137
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
138
+ strategy: 'buy_asset',
139
+ affiliateBps,
140
+ sellAsset,
141
+ buyAsset,
142
+ sellAmountCryptoBaseUnit: sellAmount,
143
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
144
+ }),
134
145
  },
135
146
  ],
136
147
  };
@@ -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
  });