@shapeshiftoss/swapper 20.3.0 → 20.4.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 (179) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.js +15 -0
  3. package/dist/cjs/index.d.ts +2 -0
  4. package/dist/cjs/index.js +2 -0
  5. package/dist/cjs/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  6. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
  7. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
  8. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
  9. package/dist/cjs/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
  10. package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
  11. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
  12. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
  13. package/dist/cjs/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
  14. package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
  15. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  16. package/dist/cjs/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
  17. package/dist/cjs/swappers/FyndSwapper/FyndSwapper.js +5 -0
  18. package/dist/cjs/swappers/FyndSwapper/endpoints.d.ts +2 -0
  19. package/dist/cjs/swappers/FyndSwapper/endpoints.js +14 -0
  20. package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  21. package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +43 -0
  22. package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  23. package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.js +34 -0
  24. package/dist/cjs/swappers/FyndSwapper/index.d.ts +2 -0
  25. package/dist/cjs/swappers/FyndSwapper/index.js +7 -0
  26. package/dist/cjs/swappers/FyndSwapper/types.d.ts +41 -0
  27. package/dist/cjs/swappers/FyndSwapper/types.js +2 -0
  28. package/dist/cjs/swappers/FyndSwapper/utils/constants.d.ts +33 -0
  29. package/dist/cjs/swappers/FyndSwapper/utils/constants.js +38 -0
  30. package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
  31. package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.js +42 -0
  32. package/dist/cjs/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
  33. package/dist/cjs/swappers/FyndSwapper/utils/fyndService.js +9 -0
  34. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
  35. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +48 -0
  36. package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
  37. package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.js +94 -0
  38. package/dist/cjs/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
  39. package/dist/cjs/swappers/FyndSwapper/utils/helpers.js +174 -0
  40. package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
  41. package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.js +101 -0
  42. package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
  43. package/dist/cjs/swappers/PortalsSwapper/endpoints.js +4 -1
  44. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
  45. package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
  46. package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
  47. package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.js +4 -0
  48. package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.js +3 -3
  49. package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +9 -4
  50. package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
  51. package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.js +8 -0
  52. package/dist/cjs/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
  53. package/dist/cjs/swappers/SymbiosisSwapper/endpoints.js +66 -0
  54. package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  55. package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +42 -0
  56. package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  57. package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +34 -0
  58. package/dist/cjs/swappers/SymbiosisSwapper/index.d.ts +2 -0
  59. package/dist/cjs/swappers/SymbiosisSwapper/index.js +7 -0
  60. package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
  61. package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.js +64 -0
  62. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
  63. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +106 -0
  64. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
  65. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +161 -0
  66. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
  67. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +146 -0
  68. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
  69. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.js +172 -0
  70. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
  71. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.js +151 -0
  72. package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
  73. package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.js +18 -0
  74. package/dist/cjs/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
  75. package/dist/cjs/swappers/SymbiosisSwapper/utils/types.js +11 -0
  76. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
  77. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  78. package/dist/cjs/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
  79. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +24 -1
  80. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
  81. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +110 -0
  82. package/dist/cjs/swappers/ZrxSwapper/types.d.ts +2 -1
  83. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
  84. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +26 -0
  85. package/dist/cjs/types.d.ts +6 -5
  86. package/dist/cjs/types.js +2 -0
  87. package/dist/cjs/utils/helpers.d.ts +1 -2
  88. package/dist/cjs/utils/helpers.js +8 -32
  89. package/dist/cjs/utils/helpers.test.js +6 -2
  90. package/dist/esm/.tsbuildinfo +1 -1
  91. package/dist/esm/constants.js +15 -0
  92. package/dist/esm/index.d.ts +2 -0
  93. package/dist/esm/index.js +2 -0
  94. package/dist/esm/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  95. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
  96. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
  97. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
  98. package/dist/esm/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
  99. package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
  100. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
  101. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
  102. package/dist/esm/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
  103. package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
  104. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  105. package/dist/esm/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
  106. package/dist/esm/swappers/FyndSwapper/FyndSwapper.js +2 -0
  107. package/dist/esm/swappers/FyndSwapper/endpoints.d.ts +2 -0
  108. package/dist/esm/swappers/FyndSwapper/endpoints.js +11 -0
  109. package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  110. package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +39 -0
  111. package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  112. package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.js +30 -0
  113. package/dist/esm/swappers/FyndSwapper/index.d.ts +2 -0
  114. package/dist/esm/swappers/FyndSwapper/index.js +2 -0
  115. package/dist/esm/swappers/FyndSwapper/types.d.ts +41 -0
  116. package/dist/esm/swappers/FyndSwapper/types.js +1 -0
  117. package/dist/esm/swappers/FyndSwapper/utils/constants.d.ts +33 -0
  118. package/dist/esm/swappers/FyndSwapper/utils/constants.js +35 -0
  119. package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
  120. package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.js +38 -0
  121. package/dist/esm/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
  122. package/dist/esm/swappers/FyndSwapper/utils/fyndService.js +3 -0
  123. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
  124. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +44 -0
  125. package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
  126. package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.js +90 -0
  127. package/dist/esm/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
  128. package/dist/esm/swappers/FyndSwapper/utils/helpers.js +162 -0
  129. package/dist/esm/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
  130. package/dist/esm/swappers/FyndSwapper/utils/helpers.test.js +99 -0
  131. package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
  132. package/dist/esm/swappers/PortalsSwapper/endpoints.js +4 -1
  133. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +2 -2
  134. package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
  135. package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
  136. package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.js +5 -1
  137. package/dist/esm/swappers/RelaySwapper/utils/relayStatus.js +3 -3
  138. package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +9 -4
  139. package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
  140. package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.js +5 -0
  141. package/dist/esm/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
  142. package/dist/esm/swappers/SymbiosisSwapper/endpoints.js +63 -0
  143. package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  144. package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +38 -0
  145. package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  146. package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +30 -0
  147. package/dist/esm/swappers/SymbiosisSwapper/index.d.ts +2 -0
  148. package/dist/esm/swappers/SymbiosisSwapper/index.js +2 -0
  149. package/dist/esm/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
  150. package/dist/esm/swappers/SymbiosisSwapper/utils/constants.js +61 -0
  151. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
  152. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +102 -0
  153. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
  154. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +159 -0
  155. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
  156. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +139 -0
  157. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
  158. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.js +156 -0
  159. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
  160. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.js +149 -0
  161. package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
  162. package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.js +12 -0
  163. package/dist/esm/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
  164. package/dist/esm/swappers/SymbiosisSwapper/utils/types.js +8 -0
  165. package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
  166. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  167. package/dist/esm/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
  168. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +25 -2
  169. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
  170. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +108 -0
  171. package/dist/esm/swappers/ZrxSwapper/types.d.ts +2 -1
  172. package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
  173. package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +22 -0
  174. package/dist/esm/types.d.ts +6 -5
  175. package/dist/esm/types.js +2 -0
  176. package/dist/esm/utils/helpers.d.ts +1 -2
  177. package/dist/esm/utils/helpers.js +9 -33
  178. package/dist/esm/utils/helpers.test.js +6 -2
  179. package/package.json +7 -7
@@ -12,12 +12,14 @@ const CetusSwapper_1 = require("./swappers/CetusSwapper");
12
12
  const ChainflipSwapper_1 = require("./swappers/ChainflipSwapper");
13
13
  const CowSwapper_1 = require("./swappers/CowSwapper");
14
14
  const DebridgeSwapper_1 = require("./swappers/DebridgeSwapper");
15
+ const FyndSwapper_1 = require("./swappers/FyndSwapper");
15
16
  const MayachainSwapper_1 = require("./swappers/MayachainSwapper");
16
17
  const NearIntentsSwapper_1 = require("./swappers/NearIntentsSwapper");
17
18
  const PortalsSwapper_1 = require("./swappers/PortalsSwapper");
18
19
  const RelaySwapper_1 = require("./swappers/RelaySwapper");
19
20
  const StonfiSwapper_1 = require("./swappers/StonfiSwapper");
20
21
  const SunioSwapper_1 = require("./swappers/SunioSwapper");
22
+ const SymbiosisSwapper_1 = require("./swappers/SymbiosisSwapper");
21
23
  const ThorchainSwapper_1 = require("./swappers/ThorchainSwapper");
22
24
  const ZrxSwapper_1 = require("./swappers/ZrxSwapper");
23
25
  const types_1 = require("./types");
@@ -102,6 +104,14 @@ exports.swappers = {
102
104
  ...BobGatewaySwapper_1.bobGatewaySwapper,
103
105
  ...BobGatewaySwapper_1.bobGatewayApi,
104
106
  },
107
+ [types_1.SwapperName.Symbiosis]: {
108
+ ...SymbiosisSwapper_1.symbiosisSwapper,
109
+ ...SymbiosisSwapper_1.symbiosisApi,
110
+ },
111
+ [types_1.SwapperName.Fynd]: {
112
+ ...FyndSwapper_1.fyndSwapper,
113
+ ...FyndSwapper_1.fyndApi,
114
+ },
105
115
  [types_1.SwapperName.Test]: undefined,
106
116
  };
107
117
  const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
@@ -121,12 +131,15 @@ const DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
121
131
  // deBridge API off-chain simulation overestimates output on some chains (e.g. SEI ~2.4%), so auto slippage (1%) is insufficient
122
132
  const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
123
133
  const DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
134
+ // Symbiosis splits the tolerance across up to three legs, and a destination leg over its share pays out the transit token instead of reverting
135
+ const DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
124
136
  const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
125
137
  if (swapperName === undefined)
126
138
  return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
127
139
  switch (swapperName) {
128
140
  case types_1.SwapperName.Zrx:
129
141
  case types_1.SwapperName.Bebop:
142
+ case types_1.SwapperName.Fynd:
130
143
  case types_1.SwapperName.Test:
131
144
  return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
132
145
  case types_1.SwapperName.CowSwap:
@@ -161,6 +174,8 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
161
174
  return DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE;
162
175
  case types_1.SwapperName.BobGateway:
163
176
  return DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE;
177
+ case types_1.SwapperName.Symbiosis:
178
+ return DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE;
164
179
  default:
165
180
  return (0, utils_1.assertUnreachable)(swapperName);
166
181
  }
@@ -15,11 +15,13 @@ export * from './swappers/ChainflipSwapper';
15
15
  export * from './swappers/SunioSwapper';
16
16
  export * from './swappers/CowSwapper';
17
17
  export * from './swappers/DebridgeSwapper';
18
+ export * from './swappers/FyndSwapper';
18
19
  export * from './swappers/PortalsSwapper';
19
20
  export * from './swappers/ThorchainSwapper';
20
21
  export * from './swappers/MayachainSwapper';
21
22
  export * from './swappers/ButterSwap';
22
23
  export * from './swappers/RelaySwapper';
24
+ export * from './swappers/SymbiosisSwapper';
23
25
  export * from './utils/helpers';
24
26
  export * from './utils/thorchain';
25
27
  export * from './types';
package/dist/cjs/index.js CHANGED
@@ -44,11 +44,13 @@ __exportStar(require("./swappers/ChainflipSwapper"), exports);
44
44
  __exportStar(require("./swappers/SunioSwapper"), exports);
45
45
  __exportStar(require("./swappers/CowSwapper"), exports);
46
46
  __exportStar(require("./swappers/DebridgeSwapper"), exports);
47
+ __exportStar(require("./swappers/FyndSwapper"), exports);
47
48
  __exportStar(require("./swappers/PortalsSwapper"), exports);
48
49
  __exportStar(require("./swappers/ThorchainSwapper"), exports);
49
50
  __exportStar(require("./swappers/MayachainSwapper"), exports);
50
51
  __exportStar(require("./swappers/ButterSwap"), exports);
51
52
  __exportStar(require("./swappers/RelaySwapper"), exports);
53
+ __exportStar(require("./swappers/SymbiosisSwapper"), exports);
52
54
  __exportStar(require("./utils/helpers"), exports);
53
55
  __exportStar(require("./utils/thorchain"), exports);
54
56
  __exportStar(require("./types"), exports);
@@ -4,7 +4,6 @@ exports.getTradeQuote = exports.getTradeQuoteWithWallet = void 0;
4
4
  const hdwallet_core_1 = require("@shapeshiftoss/hdwallet-core");
5
5
  const monads_1 = require("@sniptt/monads");
6
6
  const utils_1 = require("../../../utils");
7
- const helpers_1 = require("../../../utils/helpers");
8
7
  const getArbitrumBridgeStepData_1 = require("../utils/getArbitrumBridgeStepData");
9
8
  const getArbitrumBridgeTradeContext_1 = require("../utils/getArbitrumBridgeTradeContext");
10
9
  const getTradeQuoteWithWallet = async (inputWithWallet, deps) => {
@@ -37,7 +36,6 @@ const getTradeQuote = async (input, deps) => {
37
36
  const tradeQuote = {
38
37
  ...tradeCommon,
39
38
  quoteOrRate: 'quote',
40
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
41
39
  receiveAddress,
42
40
  steps: [
43
41
  {
@@ -5,7 +5,6 @@ const monads_1 = require("@sniptt/monads");
5
5
  const starknet_1 = require("starknet");
6
6
  const types_1 = require("../../../types");
7
7
  const utils_1 = require("../../../utils");
8
- const helpers_1 = require("../../../utils/helpers");
9
8
  const getAvnuTradeContext_1 = require("../utils/getAvnuTradeContext");
10
9
  const getTradeQuote = async (input, deps) => {
11
10
  const { sellAsset, accountNumber } = input;
@@ -36,7 +35,7 @@ const getTradeQuote = async (input, deps) => {
36
35
  ...tradeCommon,
37
36
  receiveAddress: normalizedReceiveAddress,
38
37
  quoteOrRate: 'quote',
39
- deadline: deadline ?? Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
38
+ deadline,
40
39
  steps: [
41
40
  {
42
41
  ...stepCommon,
@@ -13,12 +13,13 @@ export declare const fetchBebopQuote: ({ buyAsset, sellAsset, sellAmountIncludin
13
13
  affiliateBps?: string | undefined;
14
14
  apiKey: string;
15
15
  }) => Promise<Result<BebopQuoteResponse, SwapErrorRight>>;
16
- export declare const fetchBebopSolanaQuote: ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, apiKey, }: {
16
+ export declare const fetchBebopSolanaQuote: ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }: {
17
17
  buyAsset: Asset;
18
18
  sellAsset: Asset;
19
19
  sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
20
20
  takerAddress: string;
21
21
  receiverAddress: string;
22
22
  slippageTolerancePercentageDecimal: string;
23
+ affiliateBps?: string | undefined;
23
24
  apiKey: string;
24
25
  }) => Promise<Result<BebopSolanaQuoteResponse, SwapErrorRight>>;
@@ -11,6 +11,9 @@ const helpers_1 = require("../../../utils/helpers");
11
11
  const types_2 = require("../types");
12
12
  const bebopService_1 = require("./bebopService");
13
13
  const helpers_2 = require("./helpers");
14
+ // PMM charges the fee set against our api key, which nets exactly this bps
15
+ const BEBOP_PMM_AFFILIATE_BPS = '60';
16
+ const isPmmEligible = (affiliateBps) => (0, utils_1.bnOrZero)(affiliateBps).eq(BEBOP_PMM_AFFILIATE_BPS);
14
17
  const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }) => {
15
18
  try {
16
19
  const sellToken = (0, helpers_2.assetIdToBebopToken)(sellAsset.assetId);
@@ -30,26 +33,24 @@ const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtoco
30
33
  approval_type: 'Standard',
31
34
  skip_validation: 'true',
32
35
  gasless: 'false',
33
- // PMM fees are configured against our api key on Bebop's side, not sent per quote
34
36
  source: 'shapeshift',
35
37
  };
36
38
  const jamParams = new URLSearchParams(baseParams);
37
- const pmmParams = new URLSearchParams(baseParams);
38
- // JAM settles the fee on-chain, so it still takes our bps and a recipient per quote
39
- if (affiliateBps && affiliateBps !== '0') {
40
- jamParams.set('fee', affiliateBps);
41
- jamParams.set('fee_recipient', (0, viem_1.getAddress)((0, helpers_1.getTreasuryAddressFromChainId)(buyAsset.chainId)));
42
- }
39
+ // Without an explicit fee JAM charges our api key's flat fee, so 1 bps is the lowest it can go
40
+ jamParams.set('fee', affiliateBps && (0, utils_1.bnOrZero)(affiliateBps).gt(0) ? affiliateBps : '1');
41
+ jamParams.set('fee_recipient', (0, viem_1.getAddress)((0, helpers_1.getTreasuryAddressFromChainId)(buyAsset.chainId)));
43
42
  const service = (0, bebopService_1.bebopServiceFactory)({ apiKey });
44
- const [maybeJam, maybePmm] = await Promise.all([
43
+ const requests = [
45
44
  service.get(`https://api.bebop.xyz/jam/${chainName}/v2/quote`, {
46
45
  params: jamParams,
47
46
  }),
48
- service.get(`https://api.bebop.xyz/pmm/${chainName}/v3/quote`, {
49
- params: pmmParams,
50
- }),
51
- ]);
52
- const maybeResponses = [maybeJam, maybePmm];
47
+ ];
48
+ if (isPmmEligible(affiliateBps)) {
49
+ requests.push(service.get(`https://api.bebop.xyz/pmm/${chainName}/v3/quote`, {
50
+ params: new URLSearchParams(baseParams),
51
+ }));
52
+ }
53
+ const maybeResponses = await Promise.all(requests);
53
54
  if (maybeResponses.every(maybeResponse => maybeResponse.isErr())) {
54
55
  return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
55
56
  message: 'Failed to fetch quote from Bebop',
@@ -80,8 +81,14 @@ const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtoco
80
81
  }
81
82
  };
82
83
  exports.fetchBebopQuote = fetchBebopQuote;
83
- const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, apiKey, }) => {
84
+ const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }) => {
84
85
  try {
86
+ if (!isPmmEligible(affiliateBps)) {
87
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
88
+ message: 'Bebop Solana is PMM only and cannot take the requested bps',
89
+ code: types_1.TradeQuoteError.NoRouteFound,
90
+ }));
91
+ }
85
92
  // Bebop's Solana routes don't wrap native SOL on the input side, so selling native SOL
86
93
  // always fails on-chain. Reject up front instead of returning an unexecutable quote.
87
94
  if (sellAsset.assetId === caip_1.solAssetId) {
@@ -104,7 +111,6 @@ const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingP
104
111
  approval_type: 'Standard',
105
112
  skip_validation: 'false',
106
113
  gasless: 'true',
107
- // Solana is PMM only, so its fees are configured against our api key on Bebop's side
108
114
  source: 'shapeshift',
109
115
  });
110
116
  const maybeResponse = await (0, bebopService_1.bebopServiceFactory)({ apiKey }).get('https://api.bebop.xyz/pmm/solana/v3/quote', { params });
@@ -22,6 +22,7 @@ const getBebopSolanaTradeContext = async ({ input, deps, takerAddress, receiverA
22
22
  takerAddress,
23
23
  receiverAddress,
24
24
  slippageTolerancePercentageDecimal,
25
+ affiliateBps,
25
26
  apiKey: deps.config.VITE_BEBOP_API_KEY,
26
27
  });
27
28
  if (maybeBebopQuoteResponse.isErr())
@@ -4,7 +4,6 @@ exports.getBobGatewayTradeQuote = void 0;
4
4
  const caip_1 = require("@shapeshiftoss/caip");
5
5
  const monads_1 = require("@sniptt/monads");
6
6
  const utils_1 = require("../../../utils");
7
- const helpers_1 = require("../../../utils/helpers");
8
7
  const getBobGatewayStepData_1 = require("../utils/getBobGatewayStepData");
9
8
  const getBobGatewayTradeContext_1 = require("../utils/getBobGatewayTradeContext");
10
9
  const getBobGatewayTradeQuote = async (input, deps) => {
@@ -38,7 +37,6 @@ const getBobGatewayTradeQuote = async (input, deps) => {
38
37
  const tradeQuote = {
39
38
  ...tradeCommon,
40
39
  quoteOrRate: 'quote',
41
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
42
40
  receiveAddress,
43
41
  steps: [
44
42
  {
@@ -7,7 +7,6 @@ const monads_1 = require("@sniptt/monads");
7
7
  const constants_1 = require("../../../constants");
8
8
  const types_1 = require("../../../types");
9
9
  const utils_2 = require("../../../utils");
10
- const helpers_1 = require("../../../utils/helpers");
11
10
  const getButterSwapStepData_1 = require("../utils/getButterSwapStepData");
12
11
  const getButterSwapTradeContext_1 = require("../utils/getButterSwapTradeContext");
13
12
  const xhr_1 = require("../xhr");
@@ -63,7 +62,6 @@ const getTradeQuote = async (input, deps) => {
63
62
  const tradeQuote = {
64
63
  ...tradeCommon,
65
64
  quoteOrRate: 'quote',
66
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
67
65
  receiveAddress,
68
66
  steps: [
69
67
  {
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTradeQuote = void 0;
4
4
  const monads_1 = require("@sniptt/monads");
5
5
  const utils_1 = require("../../../utils");
6
- const helpers_1 = require("../../../utils/helpers");
7
6
  const getCetusStepData_1 = require("./getCetusStepData");
8
7
  const getCetusTradeContext_1 = require("./getCetusTradeContext");
9
8
  const getTradeQuote = async (input, deps) => {
@@ -28,7 +27,6 @@ const getTradeQuote = async (input, deps) => {
28
27
  const tradeQuote = {
29
28
  ...tradeCommon,
30
29
  quoteOrRate: 'quote',
31
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
32
30
  receiveAddress,
33
31
  steps: [
34
32
  {
@@ -76,8 +76,7 @@ const getTradeQuote = async (input, deps) => {
76
76
  {
77
77
  ...stepCommon,
78
78
  accountNumber,
79
- chainflipSpecific: { depositAddress },
80
- swapperMetadata: { name: 'chainflip', swapId },
79
+ swapperMetadata: { name: 'chainflip', swapId, depositAddress },
81
80
  transactionData,
82
81
  feeData: { networkFeeCryptoBaseUnit, protocolFees },
83
82
  },
@@ -6,6 +6,7 @@ export type ChainflipTradeRateInput = GetEvmTradeRateInput | GetUtxoTradeRateInp
6
6
  export type ChainflipMetadata = {
7
7
  name: 'chainflip';
8
8
  swapId: number | string;
9
+ depositAddress: string;
9
10
  };
10
11
  export type ChainFlipStatus = {
11
12
  status: {
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTradeQuote = void 0;
4
4
  const monads_1 = require("@sniptt/monads");
5
5
  const utils_1 = require("../../../utils");
6
- const helpers_1 = require("../../../utils/helpers");
7
6
  const getDebridgeStepData_1 = require("../utils/getDebridgeStepData");
8
7
  const getDebridgeTradeContext_1 = require("../utils/getDebridgeTradeContext");
9
8
  const getTradeQuote = async (input, deps) => {
@@ -27,7 +26,6 @@ const getTradeQuote = async (input, deps) => {
27
26
  const tradeQuote = {
28
27
  ...tradeCommon,
29
28
  quoteOrRate: 'quote',
30
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
31
29
  receiveAddress,
32
30
  steps: [
33
31
  {
@@ -0,0 +1,2 @@
1
+ import type { Swapper } from '../../types';
2
+ export declare const fyndSwapper: Swapper;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fyndSwapper = void 0;
4
+ const utils_1 = require("../../utils");
5
+ exports.fyndSwapper = { executeEvmTransaction: utils_1.executeEvmTransaction };
@@ -0,0 +1,2 @@
1
+ import type { SwapperApi } from '../../types';
2
+ export declare const fyndApi: SwapperApi;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fyndApi = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const evm_1 = require("../../utils/evm");
6
+ const getTradeQuote_1 = require("./getTradeQuote/getTradeQuote");
7
+ const getTradeRate_1 = require("./getTradeRate/getTradeRate");
8
+ exports.fyndApi = {
9
+ getTradeQuote: (input, deps) => (0, getTradeQuote_1.getTradeQuote)(input, deps),
10
+ getTradeRate: (input, deps) => (0, getTradeRate_1.getTradeRate)(input, deps),
11
+ getUnsignedEvmTransaction: evm_1.getUnsignedEvmTransaction,
12
+ getEvmTransactionFees: evm_1.getEvmTransactionFees,
13
+ checkTradeStatus: utils_1.checkEvmSwapStatus,
14
+ };
@@ -0,0 +1,4 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types';
3
+ import type { FyndTradeQuoteInput } from '../types';
4
+ export declare const getTradeQuote: (input: FyndTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTradeQuote = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const utils_1 = require("../../../utils");
6
+ const getFyndStepData_1 = require("../utils/getFyndStepData");
7
+ const getFyndTradeContext_1 = require("../utils/getFyndTradeContext");
8
+ const getTradeQuote = async (input, deps) => {
9
+ const { accountNumber } = input;
10
+ const maybeAddresses = (0, utils_1.assertQuoteAddresses)(input);
11
+ if (maybeAddresses.isErr())
12
+ return (0, monads_1.Err)(maybeAddresses.unwrapErr());
13
+ const { sendAddress, receiveAddress } = maybeAddresses.unwrap();
14
+ const maybeContext = await (0, getFyndTradeContext_1.getFyndTradeContext)({
15
+ input,
16
+ deps,
17
+ from: sendAddress,
18
+ to: receiveAddress,
19
+ });
20
+ if (maybeContext.isErr())
21
+ return (0, monads_1.Err)(maybeContext.unwrapErr());
22
+ const { tradeCommon, stepCommon, protocolFees, deadline, stepDataArgs } = maybeContext.unwrap();
23
+ const maybeStepData = await (0, getFyndStepData_1.getFyndStepData)({ ...stepDataArgs, type: 'quote', input });
24
+ if (maybeStepData.isErr())
25
+ return (0, monads_1.Err)(maybeStepData.unwrapErr());
26
+ const { transactionData, networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
27
+ const tradeQuote = {
28
+ ...tradeCommon,
29
+ quoteOrRate: 'quote',
30
+ receiveAddress,
31
+ deadline,
32
+ steps: [
33
+ {
34
+ ...stepCommon,
35
+ accountNumber,
36
+ transactionData,
37
+ feeData: { networkFeeCryptoBaseUnit, protocolFees },
38
+ },
39
+ ],
40
+ };
41
+ return (0, monads_1.Ok)([tradeQuote]);
42
+ };
43
+ exports.getTradeQuote = getTradeQuote;
@@ -0,0 +1,4 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { SwapErrorRight, SwapperDeps, TradeRate } from '../../../types';
3
+ import type { FyndTradeRateInput } from '../types';
4
+ export declare const getTradeRate: (input: FyndTradeRateInput, deps: SwapperDeps) => Promise<Result<TradeRate[], SwapErrorRight>>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTradeRate = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const constants_1 = require("../../../utils/evm/constants");
6
+ const getFyndStepData_1 = require("../utils/getFyndStepData");
7
+ const getFyndTradeContext_1 = require("../utils/getFyndTradeContext");
8
+ const getTradeRate = async (input, deps) => {
9
+ const { accountNumber, sendAddress, receiveAddress } = input;
10
+ const from = sendAddress ?? constants_1.EVM_PLACEHOLDER_ADDRESS;
11
+ const to = receiveAddress ?? from;
12
+ const maybeContext = await (0, getFyndTradeContext_1.getFyndTradeContext)({ input, deps, from, to });
13
+ if (maybeContext.isErr())
14
+ return (0, monads_1.Err)(maybeContext.unwrapErr());
15
+ const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
16
+ const maybeStepData = await (0, getFyndStepData_1.getFyndStepData)({ ...stepDataArgs, type: 'rate', input });
17
+ if (maybeStepData.isErr())
18
+ return (0, monads_1.Err)(maybeStepData.unwrapErr());
19
+ const { networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
20
+ const tradeRate = {
21
+ ...tradeCommon,
22
+ quoteOrRate: 'rate',
23
+ receiveAddress,
24
+ steps: [
25
+ {
26
+ ...stepCommon,
27
+ accountNumber,
28
+ feeData: { networkFeeCryptoBaseUnit, protocolFees },
29
+ },
30
+ ],
31
+ };
32
+ return (0, monads_1.Ok)([tradeRate]);
33
+ };
34
+ exports.getTradeRate = getTradeRate;
@@ -0,0 +1,2 @@
1
+ export { fyndApi } from './endpoints';
2
+ export { fyndSwapper } from './FyndSwapper';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fyndSwapper = exports.fyndApi = void 0;
4
+ var endpoints_1 = require("./endpoints");
5
+ Object.defineProperty(exports, "fyndApi", { enumerable: true, get: function () { return endpoints_1.fyndApi; } });
6
+ var FyndSwapper_1 = require("./FyndSwapper");
7
+ Object.defineProperty(exports, "fyndSwapper", { enumerable: true, get: function () { return FyndSwapper_1.fyndSwapper; } });
@@ -0,0 +1,41 @@
1
+ import type { Address, Hex } from 'viem';
2
+ import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput } from '../../types';
3
+ export type FyndTradeQuoteInput = GetEvmTradeQuoteInput;
4
+ export type FyndTradeRateInput = GetEvmTradeRateInput;
5
+ export type FyndTransaction = {
6
+ to: Address;
7
+ value: string;
8
+ data: Hex;
9
+ client_fee_signature_offset?: number | null;
10
+ };
11
+ export type FyndFeeBreakdown = {
12
+ router_fee: string;
13
+ client_fee: string;
14
+ max_slippage: string;
15
+ min_amount_received: string;
16
+ };
17
+ export type FyndErrorResponse = {
18
+ error: string;
19
+ code: string;
20
+ };
21
+ export type FyndRouteSwap = {
22
+ protocol: string;
23
+ };
24
+ export type FyndEncodedQuote = {
25
+ status: 'success';
26
+ amount_in: string;
27
+ amount_out: string;
28
+ gas_estimate: string;
29
+ route?: {
30
+ swaps: FyndRouteSwap[];
31
+ } | null;
32
+ transaction: FyndTransaction;
33
+ fee_breakdown: FyndFeeBreakdown;
34
+ client_fee_deadline?: number | null;
35
+ };
36
+ export type FyndFailedOrder = {
37
+ status: 'no_route_found' | 'insufficient_liquidity' | 'timeout' | 'not_ready' | 'price_check_failed' | 'encoding_failed';
38
+ };
39
+ export type FyndQuoteResponse = {
40
+ orders: (FyndEncodedQuote | FyndFailedOrder)[];
41
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,33 @@
1
+ export declare const FYND_CHAINS: {
2
+ readonly "eip155:1": {
3
+ readonly name: "ethereum";
4
+ readonly routerAddress: "0x1644d2477f809cc2c71bccfd6dc9497e3f83210d";
5
+ };
6
+ readonly "eip155:8453": {
7
+ readonly name: "base";
8
+ readonly routerAddress: "0xaba5b53b03eafad1c5fc8bd5fc765fc85bb3de67";
9
+ };
10
+ readonly "eip155:42161": {
11
+ readonly name: "arbitrum";
12
+ readonly routerAddress: "0x924f147c50ea59f5180a26031a8b65b2aa1e81cd";
13
+ };
14
+ readonly "eip155:56": {
15
+ readonly name: "bsc";
16
+ readonly routerAddress: "0x7f3d12bbafb8955e51b3ab9588b34c8ad95bda4e";
17
+ };
18
+ readonly "eip155:137": {
19
+ readonly name: "polygon";
20
+ readonly routerAddress: "0xbd4e6011f03355c2a377fd9af939322a7d0a1bc1";
21
+ };
22
+ readonly "eip155:130": {
23
+ readonly name: "unichain";
24
+ readonly routerAddress: "0xcba5574597ad00ea250fd106dab4fc7461949635";
25
+ };
26
+ readonly "eip155:4663": {
27
+ readonly name: "robinhood";
28
+ readonly routerAddress: "0x09215a470bd585e59eb3f4b612fbd2678131ff9e";
29
+ };
30
+ };
31
+ export type FyndSupportedChainId = keyof typeof FYND_CHAINS;
32
+ export declare const FYND_CLIENT_FEE_SHARE = 0.8;
33
+ export declare const FYND_CLIENT_FEE_SIGNATURE_BYTES = 65;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FYND_CLIENT_FEE_SIGNATURE_BYTES = exports.FYND_CLIENT_FEE_SHARE = exports.FYND_CHAINS = void 0;
4
+ const types_1 = require("@shapeshiftoss/types");
5
+ // Fynd Router Registry: https://docs.propellerheads.xyz/tycho/for-solvers/execution/contract-addresses
6
+ exports.FYND_CHAINS = {
7
+ [types_1.KnownChainIds.EthereumMainnet]: {
8
+ name: 'ethereum',
9
+ routerAddress: '0x1644d2477f809cc2c71bccfd6dc9497e3f83210d',
10
+ },
11
+ [types_1.KnownChainIds.BaseMainnet]: {
12
+ name: 'base',
13
+ routerAddress: '0xaba5b53b03eafad1c5fc8bd5fc765fc85bb3de67',
14
+ },
15
+ [types_1.KnownChainIds.ArbitrumMainnet]: {
16
+ name: 'arbitrum',
17
+ routerAddress: '0x924f147c50ea59f5180a26031a8b65b2aa1e81cd',
18
+ },
19
+ [types_1.KnownChainIds.BnbSmartChainMainnet]: {
20
+ name: 'bsc',
21
+ routerAddress: '0x7f3d12bbafb8955e51b3ab9588b34c8ad95bda4e',
22
+ },
23
+ [types_1.KnownChainIds.PolygonMainnet]: {
24
+ name: 'polygon',
25
+ routerAddress: '0xbd4e6011f03355c2a377fd9af939322a7d0a1bc1',
26
+ },
27
+ [types_1.KnownChainIds.UnichainMainnet]: {
28
+ name: 'unichain',
29
+ routerAddress: '0xcba5574597ad00ea250fd106dab4fc7461949635',
30
+ },
31
+ [types_1.KnownChainIds.RobinhoodMainnet]: {
32
+ name: 'robinhood',
33
+ routerAddress: '0x09215a470bd585e59eb3f4b612fbd2678131ff9e',
34
+ },
35
+ };
36
+ // Fynd keeps 20% of the client fee, so request the gross bps that nets affiliateBps
37
+ exports.FYND_CLIENT_FEE_SHARE = 0.8;
38
+ exports.FYND_CLIENT_FEE_SIGNATURE_BYTES = 65;
@@ -0,0 +1,13 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { SwapErrorRight } from '../../../types';
3
+ import type { FyndEncodedQuote, FyndTradeQuoteInput, FyndTradeRateInput } from '../types';
4
+ import type { FyndSupportedChainId } from './constants';
5
+ export declare const fetchFromFynd: ({ input, chainId, sender, receiver, slippageTolerancePercentageDecimal, clientFeeBps, baseUrl, }: {
6
+ input: FyndTradeQuoteInput | FyndTradeRateInput;
7
+ chainId: FyndSupportedChainId;
8
+ sender: string;
9
+ receiver: string;
10
+ slippageTolerancePercentageDecimal: string;
11
+ clientFeeBps: number;
12
+ baseUrl: string;
13
+ }) => Promise<Result<FyndEncodedQuote, SwapErrorRight>>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchFromFynd = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const constants_1 = require("./constants");
6
+ const fyndService_1 = require("./fyndService");
7
+ const helpers_1 = require("./helpers");
8
+ const fetchFromFynd = async ({ input, chainId, sender, receiver, slippageTolerancePercentageDecimal, clientFeeBps, baseUrl, }) => {
9
+ const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = input;
10
+ const maybeResponse = await fyndService_1.fyndService.post(`${baseUrl}/${constants_1.FYND_CHAINS[chainId].name}/quote`, {
11
+ orders: [
12
+ {
13
+ token_in: (0, helpers_1.convertAssetIdToFyndToken)(sellAsset.assetId),
14
+ token_out: (0, helpers_1.convertAssetIdToFyndToken)(buyAsset.assetId),
15
+ amount: sellAmountIncludingProtocolFeesCryptoBaseUnit,
16
+ side: 'sell',
17
+ sender,
18
+ receiver,
19
+ },
20
+ ],
21
+ options: {
22
+ timeout_ms: 5_000,
23
+ min_responses: 1,
24
+ encoding_options: {
25
+ slippage: slippageTolerancePercentageDecimal,
26
+ transfer_type: 'transfer_from',
27
+ // The proxy sets the fee receiver and deadline and signs the quote
28
+ ...(clientFeeBps > 0 ? { client_fee_params: { bps: clientFeeBps } } : {}),
29
+ },
30
+ },
31
+ });
32
+ if (maybeResponse.isErr())
33
+ return (0, monads_1.Err)((0, helpers_1.getFyndRequestError)(maybeResponse.unwrapErr()));
34
+ return (0, helpers_1.validateFyndQuoteResponse)(maybeResponse.unwrap().data, {
35
+ chainId,
36
+ sellAsset,
37
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
38
+ slippageTolerancePercentageDecimal,
39
+ clientFeeBps,
40
+ });
41
+ };
42
+ exports.fetchFromFynd = fetchFromFynd;
@@ -0,0 +1,5 @@
1
+ export declare const fyndService: {
2
+ get: <T = any>(url: string, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("@sniptt/monads").Result<import("axios").AxiosResponse<T, any, {}>, import("../../..").SwapErrorRight>>;
3
+ post: <T_1 = any>(url: string, data: any, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("@sniptt/monads").Result<import("axios").AxiosResponse<T_1, any, {}>, import("../../..").SwapErrorRight>>;
4
+ delete: <T_2 = any>(url: string, data: any, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("@sniptt/monads").Result<import("axios").AxiosResponse<T_2, any, {}>, import("../../..").SwapErrorRight>>;
5
+ };
@@ -0,0 +1,9 @@
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.fyndService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const utils_1 = require("../../../utils");
9
+ exports.fyndService = (0, utils_1.makeSwapperAxiosServiceMonadic)(axios_1.default.create({ timeout: 10_000 }));