@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.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/constants.js +15 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
- package/dist/cjs/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
- package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/cjs/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
- package/dist/cjs/swappers/FyndSwapper/FyndSwapper.js +5 -0
- package/dist/cjs/swappers/FyndSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/FyndSwapper/endpoints.js +14 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +43 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.js +34 -0
- package/dist/cjs/swappers/FyndSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/FyndSwapper/index.js +7 -0
- package/dist/cjs/swappers/FyndSwapper/types.d.ts +41 -0
- package/dist/cjs/swappers/FyndSwapper/types.js +2 -0
- package/dist/cjs/swappers/FyndSwapper/utils/constants.d.ts +33 -0
- package/dist/cjs/swappers/FyndSwapper/utils/constants.js +38 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.js +42 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
- package/dist/cjs/swappers/FyndSwapper/utils/fyndService.js +9 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +48 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
- package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.js +94 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.js +174 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.js +101 -0
- package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
- package/dist/cjs/swappers/PortalsSwapper/endpoints.js +4 -1
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
- package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
- package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.js +4 -0
- package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.js +3 -3
- package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +9 -4
- package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
- package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.js +8 -0
- package/dist/cjs/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/SymbiosisSwapper/endpoints.js +66 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +42 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +34 -0
- package/dist/cjs/swappers/SymbiosisSwapper/index.d.ts +2 -0
- package/dist/cjs/swappers/SymbiosisSwapper/index.js +7 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.js +64 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +106 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +161 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +146 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.js +172 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.js +151 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.js +18 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
- package/dist/cjs/swappers/SymbiosisSwapper/utils/types.js +11 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +24 -1
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +110 -0
- package/dist/cjs/swappers/ZrxSwapper/types.d.ts +2 -1
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
- package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +26 -0
- package/dist/cjs/types.d.ts +6 -5
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/helpers.d.ts +1 -2
- package/dist/cjs/utils/helpers.js +8 -32
- package/dist/cjs/utils/helpers.test.js +6 -2
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +15 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
- package/dist/esm/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
- package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
- package/dist/esm/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
- package/dist/esm/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
- package/dist/esm/swappers/FyndSwapper/FyndSwapper.js +2 -0
- package/dist/esm/swappers/FyndSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/FyndSwapper/endpoints.js +11 -0
- package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +39 -0
- package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.js +30 -0
- package/dist/esm/swappers/FyndSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/FyndSwapper/index.js +2 -0
- package/dist/esm/swappers/FyndSwapper/types.d.ts +41 -0
- package/dist/esm/swappers/FyndSwapper/types.js +1 -0
- package/dist/esm/swappers/FyndSwapper/utils/constants.d.ts +33 -0
- package/dist/esm/swappers/FyndSwapper/utils/constants.js +35 -0
- package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
- package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.js +38 -0
- package/dist/esm/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
- package/dist/esm/swappers/FyndSwapper/utils/fyndService.js +3 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +44 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
- package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.js +90 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.js +162 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/FyndSwapper/utils/helpers.test.js +99 -0
- package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
- package/dist/esm/swappers/PortalsSwapper/endpoints.js +4 -1
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +2 -2
- package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
- package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
- package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.js +5 -1
- package/dist/esm/swappers/RelaySwapper/utils/relayStatus.js +3 -3
- package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +9 -4
- package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.js +5 -0
- package/dist/esm/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/endpoints.js +63 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +38 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
- package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +30 -0
- package/dist/esm/swappers/SymbiosisSwapper/index.d.ts +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/index.js +2 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/constants.js +61 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +102 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +159 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +139 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.js +156 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.js +149 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.js +12 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
- package/dist/esm/swappers/SymbiosisSwapper/utils/types.js +8 -0
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +25 -2
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +108 -0
- package/dist/esm/swappers/ZrxSwapper/types.d.ts +2 -1
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
- package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +22 -0
- package/dist/esm/types.d.ts +6 -5
- package/dist/esm/types.js +2 -0
- package/dist/esm/utils/helpers.d.ts +1 -2
- package/dist/esm/utils/helpers.js +9 -33
- package/dist/esm/utils/helpers.test.js +6 -2
- package/package.json +7 -7
package/dist/cjs/constants.js
CHANGED
|
@@ -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
|
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
43
|
+
const requests = [
|
|
45
44
|
service.get(`https://api.bebop.xyz/jam/${chainName}/v2/quote`, {
|
|
46
45
|
params: jamParams,
|
|
47
46
|
}),
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
80
|
-
swapperMetadata: { name: 'chainflip', swapId },
|
|
79
|
+
swapperMetadata: { name: 'chainflip', swapId, depositAddress },
|
|
81
80
|
transactionData,
|
|
82
81
|
feeData: { networkFeeCryptoBaseUnit, protocolFees },
|
|
83
82
|
},
|
|
@@ -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,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,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,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 }));
|