@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
@@ -1,2 +0,0 @@
1
- export * from './utils/constants';
2
- export * from './errorPatterns';
@@ -1,191 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTradeQuote = void 0;
4
- const caip_1 = require("@shapeshiftoss/caip");
5
- const utils_1 = require("@shapeshiftoss/utils");
6
- const monads_1 = require("@sniptt/monads");
7
- const web3_js_1 = require("@solana/web3.js");
8
- const uuid_1 = require("uuid");
9
- const types_1 = require("../../../types");
10
- const utils_2 = require("../../../utils");
11
- const constants_1 = require("../utils/constants");
12
- const helpers_1 = require("../utils/helpers");
13
- const getTradeQuote = async (input, deps) => {
14
- const { sellAsset, buyAsset, receiveAddress, accountNumber, sendAddress, sellAmountIncludingProtocolFeesCryptoBaseUnit: sellAmount, } = input;
15
- const { assetsById } = deps;
16
- const jupiterUrl = deps.config.VITE_JUPITER_API_URL;
17
- const solAsset = assetsById[caip_1.solAssetId];
18
- if (accountNumber === undefined) {
19
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
20
- message: `accountNumber is required`,
21
- code: types_1.TradeQuoteError.UnknownError,
22
- }));
23
- }
24
- if (!(0, helpers_1.isSupportedChainId)(sellAsset.chainId)) {
25
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
26
- message: `unsupported chainId`,
27
- code: types_1.TradeQuoteError.UnsupportedChain,
28
- details: { chainId: sellAsset.chainId },
29
- }));
30
- }
31
- if (!(0, helpers_1.isSupportedChainId)(buyAsset.chainId)) {
32
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
33
- message: `unsupported chainId`,
34
- code: types_1.TradeQuoteError.UnsupportedChain,
35
- details: { chainId: sellAsset.chainId },
36
- }));
37
- }
38
- if (!sendAddress) {
39
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
40
- message: `sendAddress is required`,
41
- code: types_1.TradeQuoteError.UnknownError,
42
- }));
43
- }
44
- if (!solAsset) {
45
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
46
- message: `solAsset is required`,
47
- code: types_1.TradeQuoteError.UnknownError,
48
- }));
49
- }
50
- const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
51
- const buyAssetAddress = buyAsset.assetId === caip_1.solAssetId
52
- ? (0, caip_1.fromAssetId)(caip_1.wrappedSolAssetId).assetReference
53
- : (0, caip_1.fromAssetId)(buyAsset.assetId).assetReference;
54
- const sellAssetAddress = sellAsset.assetId === caip_1.solAssetId
55
- ? (0, caip_1.fromAssetId)(caip_1.wrappedSolAssetId).assetReference
56
- : (0, caip_1.fromAssetId)(sellAsset.assetId).assetReference;
57
- const sellTokenInfo = await adapter
58
- .getConnection()
59
- .getAccountInfo(new web3_js_1.PublicKey(sellAssetAddress));
60
- const buyTokenInfo = await adapter.getConnection().getAccountInfo(new web3_js_1.PublicKey(buyAssetAddress));
61
- const isSellTokenToken2022 = sellTokenInfo?.owner.toString() === constants_1.TOKEN_2022_PROGRAM_ID.toString();
62
- const isBuyTokenToken2022 = buyTokenInfo?.owner.toString() === constants_1.TOKEN_2022_PROGRAM_ID.toString();
63
- const affiliateBps = isSellTokenToken2022 || isBuyTokenToken2022 ? '0' : input.affiliateBps;
64
- const maybePriceResponse = await (0, helpers_1.getJupiterPrice)({
65
- apiUrl: jupiterUrl,
66
- sourceAssetAddress: sellAssetAddress,
67
- destinationAssetAddress: buyAssetAddress,
68
- commissionBps: affiliateBps,
69
- amount: sellAmount,
70
- slippageBps: input.slippageTolerancePercentageDecimal
71
- ? (0, utils_1.convertDecimalPercentageToBasisPoints)(input.slippageTolerancePercentageDecimal).toFixed()
72
- : undefined,
73
- });
74
- if (maybePriceResponse.isErr()) {
75
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
76
- message: 'Quote request failed',
77
- code: types_1.TradeQuoteError.NoRouteFound,
78
- }));
79
- }
80
- const { data: priceResponse } = maybePriceResponse.unwrap();
81
- const slippageTolerancePercentageDecimal =
82
- // Divide by 100 to get actual decimal percentage from bps
83
- // e.g for 0.5% bps, Jupiter represents this as 50. 50/100 = 0.5, then we div by 100 again to honour our decimal format e.g 0.5/100 = 0.005
84
- (0, utils_1.bn)(priceResponse.slippageBps).div(100).div(100).toString();
85
- const { instructions, addressLookupTableAddresses } = await (0, helpers_1.createSwapInstructions)({
86
- priceResponse,
87
- sendAddress,
88
- receiveAddress,
89
- affiliateBps,
90
- buyAsset,
91
- sellAsset,
92
- adapter,
93
- jupiterUrl,
94
- });
95
- const getFeeData = async () => {
96
- const sellAdapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
97
- const getFeeDataInput = {
98
- to: '',
99
- value: '0',
100
- chainSpecific: {
101
- from: sendAddress,
102
- addressLookupTableAccounts: addressLookupTableAddresses,
103
- instructions,
104
- },
105
- };
106
- const feeData = await sellAdapter.getFeeData(getFeeDataInput);
107
- return {
108
- txFee: feeData.fast.txFee,
109
- chainSpecific: {
110
- computeUnits: (0, utils_1.bnOrZero)(feeData.fast.chainSpecific.computeUnits)
111
- .times(constants_1.COMPUTE_UNIT_MARGIN_MULTIPLIER)
112
- .toFixed(0),
113
- priorityFee: feeData.fast.chainSpecific.priorityFee,
114
- },
115
- };
116
- };
117
- const protocolFees = priceResponse.routePlan.reduce((acc, route) => {
118
- const feeAssetId = (0, caip_1.toAssetId)({
119
- assetReference: route.swapInfo.feeMint,
120
- assetNamespace: caip_1.ASSET_NAMESPACE.splToken,
121
- chainNamespace: caip_1.CHAIN_NAMESPACE.Solana,
122
- chainReference: caip_1.CHAIN_REFERENCE.SolanaMainnet,
123
- });
124
- const feeAsset = assetsById[feeAssetId];
125
- // If we can't find the feeAsset, we can't provide a protocol fee to display
126
- // But these fees exists at protocol level, it's mostly to make TS happy as we should have the market data and assets
127
- if (!feeAsset)
128
- return acc;
129
- acc[feeAssetId] = {
130
- requiresBalance: false,
131
- amountCryptoBaseUnit: (0, utils_1.bnOrZero)(route.swapInfo.feeAmount).toFixed(0),
132
- asset: feeAsset,
133
- };
134
- return acc;
135
- }, {});
136
- const quotes = [];
137
- const feeData = await getFeeData();
138
- const rate = (0, utils_2.getInputOutputRate)({
139
- sellAmountCryptoBaseUnit: priceResponse.inAmount,
140
- buyAmountCryptoBaseUnit: priceResponse.outAmount,
141
- sellAsset,
142
- buyAsset,
143
- });
144
- const accountCreationFees = (0, helpers_1.calculateAccountCreationCosts)(instructions);
145
- if (accountCreationFees !== '0') {
146
- const solProtocolFeeAmount = (0, utils_1.bnOrZero)(protocolFees[caip_1.solAssetId]?.amountCryptoBaseUnit);
147
- protocolFees[caip_1.solAssetId] = {
148
- requiresBalance: true,
149
- amountCryptoBaseUnit: (0, utils_1.bnOrZero)(solProtocolFeeAmount).plus(accountCreationFees).toFixed(),
150
- asset: solAsset,
151
- };
152
- }
153
- const tradeQuote = {
154
- id: (0, uuid_1.v4)(),
155
- quoteOrRate: 'quote',
156
- rate,
157
- affiliateBps,
158
- receiveAddress,
159
- slippageTolerancePercentageDecimal,
160
- priceImpactPercentageDecimal: priceResponse.priceImpactPct,
161
- swapperName: types_1.SwapperName.Jupiter,
162
- steps: [
163
- {
164
- accountNumber,
165
- buyAmountBeforeFeesCryptoBaseUnit: priceResponse.outAmount,
166
- buyAmountAfterFeesCryptoBaseUnit: priceResponse.outAmount,
167
- sellAmountIncludingProtocolFeesCryptoBaseUnit: priceResponse.inAmount,
168
- jupiterQuoteResponse: priceResponse,
169
- solanaTransactionMetadata: {
170
- addressLookupTableAddresses,
171
- instructions,
172
- },
173
- feeData: {
174
- protocolFees,
175
- networkFeeCryptoBaseUnit: feeData.txFee,
176
- chainSpecific: feeData.chainSpecific,
177
- },
178
- rate,
179
- source: types_1.SwapperName.Jupiter,
180
- buyAsset,
181
- sellAsset,
182
- allowanceContract: '0x0',
183
- // Swap are so fasts on solana that times are under 100ms displaying 0 or very small amount of time is not user friendly
184
- estimatedExecutionTimeMs: undefined,
185
- },
186
- ],
187
- };
188
- quotes.push(tradeQuote);
189
- return (0, monads_1.Ok)(quotes);
190
- };
191
- exports.getTradeQuote = getTradeQuote;
@@ -1,172 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTradeRate = void 0;
4
- const caip_1 = require("@shapeshiftoss/caip");
5
- const utils_1 = require("@shapeshiftoss/utils");
6
- const monads_1 = require("@sniptt/monads");
7
- const web3_js_1 = require("@solana/web3.js");
8
- const uuid_1 = require("uuid");
9
- const types_1 = require("../../../types");
10
- const utils_2 = require("../../../utils");
11
- const constants_1 = require("../utils/constants");
12
- const helpers_1 = require("../utils/helpers");
13
- const getTradeRate = async (input, deps) => {
14
- const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit: sellAmount, receiveAddress, accountNumber, } = input;
15
- const { assetsById } = deps;
16
- const jupiterUrl = deps.config.VITE_JUPITER_API_URL;
17
- const solAsset = assetsById[caip_1.solAssetId];
18
- if (!(0, helpers_1.isSupportedChainId)(sellAsset.chainId)) {
19
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
20
- message: `unsupported chainId`,
21
- code: types_1.TradeQuoteError.UnsupportedChain,
22
- details: { chainId: sellAsset.chainId },
23
- }));
24
- }
25
- if (!(0, helpers_1.isSupportedChainId)(buyAsset.chainId)) {
26
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
27
- message: `unsupported chainId`,
28
- code: types_1.TradeQuoteError.UnsupportedChain,
29
- details: { chainId: sellAsset.chainId },
30
- }));
31
- }
32
- if (buyAsset.assetId === caip_1.wrappedSolAssetId || sellAsset.assetId === caip_1.wrappedSolAssetId) {
33
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
34
- message: `Unsupported trade pair`,
35
- code: types_1.TradeQuoteError.UnsupportedTradePair,
36
- }));
37
- }
38
- if (!solAsset) {
39
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
40
- message: `solAsset should be defined`,
41
- code: types_1.TradeQuoteError.UnknownError,
42
- }));
43
- }
44
- const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
45
- const buyAssetAddress = buyAsset.assetId === caip_1.solAssetId
46
- ? (0, caip_1.fromAssetId)(caip_1.wrappedSolAssetId).assetReference
47
- : (0, caip_1.fromAssetId)(buyAsset.assetId).assetReference;
48
- const sellAssetAddress = sellAsset.assetId === caip_1.solAssetId
49
- ? (0, caip_1.fromAssetId)(caip_1.wrappedSolAssetId).assetReference
50
- : (0, caip_1.fromAssetId)(sellAsset.assetId).assetReference;
51
- const sellTokenInfo = await adapter
52
- .getConnection()
53
- .getAccountInfo(new web3_js_1.PublicKey(sellAssetAddress));
54
- const buyTokenInfo = await adapter.getConnection().getAccountInfo(new web3_js_1.PublicKey(buyAssetAddress));
55
- const isSellTokenToken2022 = sellTokenInfo?.owner.toString() === constants_1.TOKEN_2022_PROGRAM_ID.toString();
56
- const isBuyTokenToken2022 = buyTokenInfo?.owner.toString() === constants_1.TOKEN_2022_PROGRAM_ID.toString();
57
- const affiliateBps = isSellTokenToken2022 || isBuyTokenToken2022 ? '0' : input.affiliateBps;
58
- const maybePriceResponse = await (0, helpers_1.getJupiterPrice)({
59
- apiUrl: jupiterUrl,
60
- sourceAssetAddress: sellAssetAddress,
61
- destinationAssetAddress: buyAssetAddress,
62
- commissionBps: affiliateBps,
63
- amount: sellAmount,
64
- slippageBps: input.slippageTolerancePercentageDecimal
65
- ? (0, utils_1.convertDecimalPercentageToBasisPoints)(input.slippageTolerancePercentageDecimal).toFixed()
66
- : undefined,
67
- });
68
- if (maybePriceResponse.isErr()) {
69
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
70
- message: 'Quote request failed',
71
- code: types_1.TradeQuoteError.NoRouteFound,
72
- }));
73
- }
74
- const { data: priceResponse } = maybePriceResponse.unwrap();
75
- const { instructions } = await (0, helpers_1.createSwapInstructions)({
76
- priceResponse,
77
- sendAddress: input.sendAddress ?? constants_1.SOLANA_RANDOM_ADDRESS,
78
- receiveAddress,
79
- affiliateBps,
80
- buyAsset,
81
- sellAsset,
82
- adapter,
83
- jupiterUrl,
84
- });
85
- const getFeeData = async () => {
86
- const sellAdapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
87
- const getFeeDataInput = {
88
- // Use real address and instructions for accurate fee estimation whenever possible (Solana account connected)
89
- to: input.sendAddress ?? constants_1.SOLANA_RANDOM_ADDRESS,
90
- value: sellAmount,
91
- chainSpecific: {
92
- from: input.sendAddress ?? constants_1.SOLANA_RANDOM_ADDRESS,
93
- instructions,
94
- },
95
- };
96
- const { fast } = await sellAdapter.getFeeData(getFeeDataInput);
97
- return { networkFeeCryptoBaseUnit: fast.txFee };
98
- };
99
- const protocolFees = priceResponse.routePlan.reduce((acc, route) => {
100
- const feeAssetId = (0, caip_1.toAssetId)({
101
- assetReference: route.swapInfo.feeMint,
102
- assetNamespace: caip_1.ASSET_NAMESPACE.splToken,
103
- chainNamespace: caip_1.CHAIN_NAMESPACE.Solana,
104
- chainReference: caip_1.CHAIN_REFERENCE.SolanaMainnet,
105
- });
106
- const feeAsset = assetsById[feeAssetId];
107
- // If we can't find the feeAsset, we can't provide a protocol fee to display
108
- // But these fees exists at protocol level, it's mostly to make TS happy as we should have the market data and assets
109
- if (!feeAsset)
110
- return acc;
111
- acc[feeAssetId] = {
112
- requiresBalance: false,
113
- amountCryptoBaseUnit: (0, utils_1.bnOrZero)(route.swapInfo.feeAmount).toFixed(0),
114
- asset: feeAsset,
115
- };
116
- return acc;
117
- }, {});
118
- const rates = [];
119
- const feeData = await getFeeData();
120
- const inputOutputRate = (0, utils_2.getInputOutputRate)({
121
- sellAmountCryptoBaseUnit: priceResponse.inAmount,
122
- buyAmountCryptoBaseUnit: priceResponse.outAmount,
123
- sellAsset,
124
- buyAsset,
125
- });
126
- const slippageTolerancePercentageDecimal =
127
- // Divide by 100 to get actual decimal percentage from bps
128
- // e.g for 0.5% bps, Jupiter represents this as 50. 50/100 = 0.5, then we div by 100 again to honour our decimal format e.g 0.5/100 = 0.005
129
- (0, utils_1.bn)(priceResponse.slippageBps).div(100).div(100).toString();
130
- const accountCreationFees = (0, helpers_1.calculateAccountCreationCosts)(instructions);
131
- if (accountCreationFees !== '0') {
132
- const solProtocolFeeAmount = (0, utils_1.bnOrZero)(protocolFees[caip_1.solAssetId]?.amountCryptoBaseUnit);
133
- protocolFees[caip_1.solAssetId] = {
134
- requiresBalance: true,
135
- amountCryptoBaseUnit: (0, utils_1.bnOrZero)(solProtocolFeeAmount).plus(accountCreationFees).toFixed(),
136
- asset: solAsset,
137
- };
138
- }
139
- const tradeRate = {
140
- id: (0, uuid_1.v4)(),
141
- quoteOrRate: 'rate',
142
- rate: inputOutputRate,
143
- receiveAddress,
144
- affiliateBps,
145
- priceImpactPercentageDecimal: priceResponse.priceImpactPct,
146
- slippageTolerancePercentageDecimal,
147
- swapperName: types_1.SwapperName.Jupiter,
148
- steps: [
149
- {
150
- buyAmountBeforeFeesCryptoBaseUnit: priceResponse.outAmount,
151
- buyAmountAfterFeesCryptoBaseUnit: priceResponse.outAmount,
152
- sellAmountIncludingProtocolFeesCryptoBaseUnit: priceResponse.inAmount,
153
- jupiterQuoteResponse: priceResponse,
154
- feeData: {
155
- protocolFees,
156
- ...feeData,
157
- },
158
- rate: inputOutputRate,
159
- source: types_1.SwapperName.Jupiter,
160
- buyAsset,
161
- sellAsset,
162
- accountNumber,
163
- allowanceContract: '0x0',
164
- // Swap are so fasts on solana that times are under 100ms displaying 0 or very small amount of time is not user friendly
165
- estimatedExecutionTimeMs: undefined,
166
- },
167
- ],
168
- };
169
- rates.push(tradeRate);
170
- return (0, monads_1.Ok)(rates);
171
- };
172
- exports.getTradeRate = getTradeRate;
@@ -1,9 +0,0 @@
1
- import type { ChainId } from '@shapeshiftoss/caip';
2
- export declare const jupiterSupportedChainIds: ChainId[];
3
- export declare const PDA_ACCOUNT_CREATION_COST = 2040000;
4
- export declare const SOLANA_RANDOM_ADDRESS = "2zHKF6tqam3tnNFPK2E9nBDkV7GMXnvdJautmzqQdn8A";
5
- export declare const TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
6
- export declare const COMPUTE_UNIT_MARGIN_MULTIPLIER = 1.6;
7
- export declare const SHAPESHIFT_JUPITER_REFERRAL_KEY = "Ajgmo453yGmcHDPoJBrMUj3GFwLVL7HaaZGNLkB8vREG";
8
- export declare const JUPITER_AFFILIATE_CONTRACT_ADDRESS = "REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3";
9
- export declare const JUPITER_REFERALL_FEE_PROJECT_ACCOUNT = "45ruCyfdRkWpRNGEqWzjCiXRHkZs8WXCLQ67Pnpye7Hp";
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JUPITER_REFERALL_FEE_PROJECT_ACCOUNT = exports.JUPITER_AFFILIATE_CONTRACT_ADDRESS = exports.SHAPESHIFT_JUPITER_REFERRAL_KEY = exports.COMPUTE_UNIT_MARGIN_MULTIPLIER = exports.TOKEN_2022_PROGRAM_ID = exports.SOLANA_RANDOM_ADDRESS = exports.PDA_ACCOUNT_CREATION_COST = exports.jupiterSupportedChainIds = void 0;
4
- const types_1 = require("@shapeshiftoss/types");
5
- exports.jupiterSupportedChainIds = [types_1.KnownChainIds.SolanaMainnet];
6
- exports.PDA_ACCOUNT_CREATION_COST = 2040000;
7
- exports.SOLANA_RANDOM_ADDRESS = '2zHKF6tqam3tnNFPK2E9nBDkV7GMXnvdJautmzqQdn8A';
8
- exports.TOKEN_2022_PROGRAM_ID = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
9
- // Jupiter use 40% as a compute unit margin while calculating them, some TX reverts without this, as we add some compute units
10
- // for account creations and referral, for stability purposes we add 60% margin
11
- exports.COMPUTE_UNIT_MARGIN_MULTIPLIER = 1.6;
12
- exports.SHAPESHIFT_JUPITER_REFERRAL_KEY = 'Ajgmo453yGmcHDPoJBrMUj3GFwLVL7HaaZGNLkB8vREG';
13
- exports.JUPITER_AFFILIATE_CONTRACT_ADDRESS = 'REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3';
14
- exports.JUPITER_REFERALL_FEE_PROJECT_ACCOUNT = '45ruCyfdRkWpRNGEqWzjCiXRHkZs8WXCLQ67Pnpye7Hp';
@@ -1,56 +0,0 @@
1
- import type { QuoteResponse, SwapInstructionsResponse } from '@jup-ag/api';
2
- import type { ChainId } from '@shapeshiftoss/caip';
3
- import type { solana } from '@shapeshiftoss/chain-adapters';
4
- import type { Asset, KnownChainIds } from '@shapeshiftoss/types';
5
- import type { Result } from '@sniptt/monads';
6
- import type { Connection } from '@solana/web3.js';
7
- import { PublicKey, TransactionInstruction } from '@solana/web3.js';
8
- import type { AxiosResponse } from 'axios';
9
- import type { SwapErrorRight } from '../../../types';
10
- export declare const isSupportedChainId: (chainId: ChainId) => chainId is KnownChainIds.SolanaMainnet;
11
- type GetJupiterQuoteArgs = {
12
- apiUrl: string;
13
- sourceAssetAddress: string;
14
- destinationAssetAddress: string;
15
- commissionBps: string;
16
- amount: string;
17
- slippageBps: string | undefined;
18
- };
19
- type GetJupiterSwapArgs = {
20
- apiUrl: string;
21
- fromAddress: string;
22
- rawQuote: unknown;
23
- toAddress?: string;
24
- feeAccount: string | undefined;
25
- };
26
- type CreateInstructionsParams = {
27
- priceResponse: QuoteResponse;
28
- sendAddress: string;
29
- receiveAddress?: string;
30
- affiliateBps: string;
31
- buyAsset: Asset;
32
- sellAsset: any;
33
- adapter: solana.ChainAdapter;
34
- jupiterUrl: string;
35
- };
36
- export declare const getJupiterPrice: ({ apiUrl, sourceAssetAddress, destinationAssetAddress, commissionBps, amount, slippageBps, }: GetJupiterQuoteArgs) => Promise<Result<AxiosResponse<QuoteResponse, any>, SwapErrorRight>>;
37
- export declare const getJupiterSwapInstructions: ({ apiUrl, fromAddress, toAddress, rawQuote, feeAccount, }: GetJupiterSwapArgs) => Promise<Result<AxiosResponse<SwapInstructionsResponse, any>, SwapErrorRight>>;
38
- export declare const getFeeTokenAccountAndInstruction: ({ feePayerPubKey, programId, buyAssetReferralPubKey, sellAssetReferralPubKey, buyTokenId, sellTokenId, instructionData, connection, }: {
39
- feePayerPubKey: PublicKey;
40
- programId: PublicKey;
41
- buyAssetReferralPubKey: PublicKey;
42
- sellAssetReferralPubKey: PublicKey;
43
- buyTokenId: string;
44
- sellTokenId: string;
45
- instructionData: Buffer;
46
- connection: Connection;
47
- }) => Promise<{
48
- tokenAccount?: PublicKey;
49
- instruction?: TransactionInstruction | undefined;
50
- }>;
51
- export declare const calculateAccountCreationCosts: (instructions: TransactionInstruction[]) => string;
52
- export declare const createSwapInstructions: ({ priceResponse, sendAddress, receiveAddress, affiliateBps, buyAsset, sellAsset, adapter, jupiterUrl, }: CreateInstructionsParams) => Promise<{
53
- instructions: TransactionInstruction[];
54
- addressLookupTableAddresses: string[];
55
- }>;
56
- export {};
@@ -1,178 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSwapInstructions = exports.calculateAccountCreationCosts = exports.getFeeTokenAccountAndInstruction = exports.getJupiterSwapInstructions = exports.getJupiterPrice = exports.isSupportedChainId = void 0;
4
- const anchor_1 = require("@coral-xyz/anchor");
5
- const token_1 = require("@coral-xyz/anchor/dist/cjs/utils/token");
6
- const caip_1 = require("@shapeshiftoss/caip");
7
- const utils_1 = require("@shapeshiftoss/utils");
8
- const web3_js_1 = require("@solana/web3.js");
9
- const referral_1 = require("../idls/referral");
10
- const constants_1 = require("./constants");
11
- const jupiterService_1 = require("./jupiterService");
12
- const isSupportedChainId = (chainId) => {
13
- return constants_1.jupiterSupportedChainIds.includes(chainId);
14
- };
15
- exports.isSupportedChainId = isSupportedChainId;
16
- const JUPITER_TRANSACTION_MAX_ACCOUNTS = 54;
17
- const getJupiterPrice = ({ apiUrl, sourceAssetAddress, destinationAssetAddress, commissionBps, amount, slippageBps, }) => jupiterService_1.jupiterService.get(`${apiUrl}/quote` +
18
- `?inputMint=${sourceAssetAddress}` +
19
- `&outputMint=${destinationAssetAddress}` +
20
- `&amount=${amount}` +
21
- (slippageBps ? `&slippageBps=${slippageBps}` : `&dynamicSlippage=true`) +
22
- `&maxAccounts=${JUPITER_TRANSACTION_MAX_ACCOUNTS}` +
23
- `&platformFeeBps=${commissionBps}`);
24
- exports.getJupiterPrice = getJupiterPrice;
25
- const getJupiterSwapInstructions = ({ apiUrl, fromAddress, toAddress, rawQuote, feeAccount, }) => jupiterService_1.jupiterService.post(`${apiUrl}/swap-instructions`, {
26
- userPublicKey: fromAddress,
27
- destinationTokenAccount: toAddress,
28
- quoteResponse: rawQuote,
29
- dynamicComputeUnitLimit: true,
30
- prioritizationFeeLamports: 'auto',
31
- feeAccount,
32
- });
33
- exports.getJupiterSwapInstructions = getJupiterSwapInstructions;
34
- const getFeeTokenAccountAndInstruction = async ({ feePayerPubKey, programId, buyAssetReferralPubKey, sellAssetReferralPubKey, buyTokenId, sellTokenId, instructionData, connection, }) => {
35
- const sellAssetTokenAccount = await connection.getAccountInfo(sellAssetReferralPubKey);
36
- if (sellAssetTokenAccount)
37
- return { tokenAccount: sellAssetReferralPubKey };
38
- const buyAssetTokenAccount = await connection.getAccountInfo(buyAssetReferralPubKey);
39
- if (buyAssetTokenAccount)
40
- return { tokenAccount: buyAssetReferralPubKey };
41
- const buyTokenInfo = await connection.getAccountInfo(new web3_js_1.PublicKey(buyTokenId));
42
- const sellTokenInfo = await connection.getAccountInfo(new web3_js_1.PublicKey(sellTokenId));
43
- const isSellTokenToken2022 = sellTokenInfo?.owner.toString() === constants_1.TOKEN_2022_PROGRAM_ID.toString();
44
- if (buyTokenInfo?.owner.toString() !== token_1.TOKEN_PROGRAM_ID.toString() &&
45
- sellTokenInfo?.owner.toString() !== token_1.TOKEN_PROGRAM_ID.toString()) {
46
- return { tokenAccount: undefined, instruction: undefined };
47
- }
48
- const project = new web3_js_1.PublicKey(constants_1.JUPITER_REFERALL_FEE_PROJECT_ACCOUNT);
49
- const referralPubkey = isSellTokenToken2022 ? buyAssetReferralPubKey : sellAssetReferralPubKey;
50
- return {
51
- tokenAccount: referralPubkey,
52
- instruction: new web3_js_1.TransactionInstruction({
53
- keys: [
54
- {
55
- pubkey: feePayerPubKey,
56
- isSigner: true,
57
- isWritable: true,
58
- },
59
- {
60
- pubkey: project,
61
- isWritable: false,
62
- isSigner: false,
63
- },
64
- {
65
- pubkey: new web3_js_1.PublicKey(constants_1.SHAPESHIFT_JUPITER_REFERRAL_KEY),
66
- isSigner: false,
67
- isWritable: false,
68
- },
69
- {
70
- pubkey: referralPubkey,
71
- isSigner: false,
72
- isWritable: true,
73
- },
74
- {
75
- pubkey: new web3_js_1.PublicKey(isSellTokenToken2022 ? buyTokenId : sellTokenId),
76
- isSigner: false,
77
- isWritable: false,
78
- },
79
- {
80
- pubkey: web3_js_1.SystemProgram.programId,
81
- isSigner: false,
82
- isWritable: false,
83
- },
84
- { pubkey: token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
85
- ],
86
- data: instructionData,
87
- programId,
88
- }),
89
- };
90
- };
91
- exports.getFeeTokenAccountAndInstruction = getFeeTokenAccountAndInstruction;
92
- const calculateAccountCreationCosts = (instructions) => {
93
- let totalCost = (0, utils_1.bnOrZero)(0);
94
- for (const ix of instructions) {
95
- if (ix.programId.toString() === token_1.ASSOCIATED_PROGRAM_ID.toString()) {
96
- if (ix.data?.[0] === 1) {
97
- totalCost = totalCost.plus(constants_1.PDA_ACCOUNT_CREATION_COST);
98
- }
99
- }
100
- }
101
- return totalCost.toString();
102
- };
103
- exports.calculateAccountCreationCosts = calculateAccountCreationCosts;
104
- const createSwapInstructions = async ({ priceResponse, sendAddress, receiveAddress, affiliateBps, buyAsset, sellAsset, adapter, jupiterUrl, }) => {
105
- const isCrossAccountTrade = receiveAddress ? receiveAddress !== sendAddress : false;
106
- const buyAssetAddress = buyAsset.assetId === caip_1.solAssetId
107
- ? (0, caip_1.fromAssetId)(caip_1.wrappedSolAssetId).assetReference
108
- : (0, caip_1.fromAssetId)(buyAsset.assetId).assetReference;
109
- const sellAssetAddress = sellAsset.assetId === caip_1.solAssetId
110
- ? (0, caip_1.fromAssetId)(caip_1.wrappedSolAssetId).assetReference
111
- : (0, caip_1.fromAssetId)(sellAsset.assetId).assetReference;
112
- const contractAddress = buyAsset.assetId === caip_1.solAssetId ? undefined : (0, caip_1.fromAssetId)(buyAsset.assetId).assetReference;
113
- const { instruction: createTokenAccountInstruction, destinationTokenAccount } = contractAddress && isCrossAccountTrade && receiveAddress
114
- ? await adapter.createAssociatedTokenAccountInstruction({
115
- from: sendAddress,
116
- to: receiveAddress,
117
- tokenId: contractAddress,
118
- })
119
- : { instruction: undefined, destinationTokenAccount: undefined };
120
- const [buyAssetReferralPubKey] = web3_js_1.PublicKey.findProgramAddressSync([
121
- Buffer.from('referral_ata'),
122
- new web3_js_1.PublicKey(constants_1.SHAPESHIFT_JUPITER_REFERRAL_KEY).toBuffer(),
123
- new web3_js_1.PublicKey(buyAssetAddress).toBuffer(),
124
- ], new web3_js_1.PublicKey(constants_1.JUPITER_AFFILIATE_CONTRACT_ADDRESS));
125
- const [sellAssetReferralPubKey] = web3_js_1.PublicKey.findProgramAddressSync([
126
- Buffer.from('referral_ata'),
127
- new web3_js_1.PublicKey(constants_1.SHAPESHIFT_JUPITER_REFERRAL_KEY).toBuffer(),
128
- new web3_js_1.PublicKey(sellAssetAddress).toBuffer(),
129
- ], new web3_js_1.PublicKey(constants_1.JUPITER_AFFILIATE_CONTRACT_ADDRESS));
130
- const instructionData = new anchor_1.BorshInstructionCoder(referral_1.referralIdl).encode('initializeReferralTokenAccount', {});
131
- const { instruction: feeAccountInstruction, tokenAccount } = await (0, exports.getFeeTokenAccountAndInstruction)({
132
- feePayerPubKey: new web3_js_1.PublicKey(sendAddress),
133
- buyAssetReferralPubKey,
134
- sellAssetReferralPubKey,
135
- programId: new web3_js_1.PublicKey(constants_1.JUPITER_AFFILIATE_CONTRACT_ADDRESS),
136
- instructionData,
137
- buyTokenId: buyAssetAddress,
138
- sellTokenId: sellAssetAddress,
139
- connection: adapter.getConnection(),
140
- });
141
- const maybeSwapResponse = await (0, exports.getJupiterSwapInstructions)({
142
- apiUrl: jupiterUrl,
143
- fromAddress: sendAddress,
144
- toAddress: isCrossAccountTrade ? destinationTokenAccount?.toString() : undefined,
145
- rawQuote: priceResponse,
146
- feeAccount: affiliateBps !== '0' && tokenAccount ? tokenAccount.toString() : undefined,
147
- });
148
- if (maybeSwapResponse.isErr()) {
149
- const error = maybeSwapResponse.unwrapErr();
150
- const cause = error.cause;
151
- throw Error(cause.response?.data.detail);
152
- }
153
- const { data: swapResponse } = maybeSwapResponse.unwrap();
154
- const convertJupiterInstruction = (instruction) => ({
155
- ...instruction,
156
- keys: instruction.accounts.map(account => ({
157
- ...account,
158
- pubkey: new web3_js_1.PublicKey(account.pubkey),
159
- })),
160
- data: Buffer.from(instruction.data, 'base64'),
161
- programId: new web3_js_1.PublicKey(instruction.programId),
162
- });
163
- const instructions = [
164
- ...swapResponse.setupInstructions.map(convertJupiterInstruction),
165
- convertJupiterInstruction(swapResponse.swapInstruction),
166
- ];
167
- if (feeAccountInstruction && affiliateBps !== '0') {
168
- instructions.unshift(feeAccountInstruction);
169
- }
170
- if (createTokenAccountInstruction) {
171
- instructions.unshift(createTokenAccountInstruction);
172
- }
173
- if (swapResponse.cleanupInstruction) {
174
- instructions.push(convertJupiterInstruction(swapResponse.cleanupInstruction));
175
- }
176
- return { instructions, addressLookupTableAddresses: swapResponse.addressLookupTableAddresses };
177
- };
178
- exports.createSwapInstructions = createSwapInstructions;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jupiterService = void 0;
4
- const utils_1 = require("../../../utils");
5
- const maxAgeMillis = 15 * 1000;
6
- const cachedUrls = [];
7
- const axiosConfig = {
8
- timeout: 10000,
9
- headers: {
10
- Accept: 'application/json',
11
- 'Content-Type': 'application/json',
12
- },
13
- };
14
- const jupiterServiceBase = (0, utils_1.createCache)(maxAgeMillis, cachedUrls, axiosConfig);
15
- exports.jupiterService = (0, utils_1.makeSwapperAxiosServiceMonadic)(jupiterServiceBase);
@@ -1,24 +0,0 @@
1
- import { executeSolanaTransaction } from '../../index.js';
2
- import { JUPITER_ERRORS, SolanaLogsError } from './errorPatterns.js';
3
- export const jupiterSwapper = {
4
- executeSolanaTransaction: async (txToSign, callbacks) => {
5
- try {
6
- const txid = await executeSolanaTransaction(txToSign, callbacks);
7
- return txid;
8
- }
9
- catch (e) {
10
- if (e instanceof Error) {
11
- const errorMessage = e.message;
12
- const swapperErrorType = Object.keys(JUPITER_ERRORS).reduce((acc, errorPattern) => {
13
- if (errorMessage.includes(errorPattern)) {
14
- acc = JUPITER_ERRORS[errorPattern];
15
- }
16
- return acc;
17
- }, undefined);
18
- if (swapperErrorType)
19
- throw new SolanaLogsError(swapperErrorType);
20
- }
21
- throw e;
22
- }
23
- },
24
- };