@openocean.finance/widget 1.0.28 → 1.0.29
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/esm/components/AmountInput/AmountInputEndAdornment.js +46 -39
- package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
- package/dist/esm/components/Messages/WarningMessages.js +2 -2
- package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
- package/dist/esm/components/Step/Step.js +37 -29
- package/dist/esm/components/Step/Step.js.map +1 -1
- package/dist/esm/components/TransactionDetails.js +2 -5
- package/dist/esm/components/TransactionDetails.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/cross/adapters/AcrossAdapter.d.ts +15 -0
- package/dist/esm/cross/adapters/AcrossAdapter.js +166 -0
- package/dist/esm/cross/adapters/AcrossAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/BaseSwapAdapter.d.ts +107 -0
- package/dist/esm/cross/adapters/BaseSwapAdapter.js +44 -0
- package/dist/esm/cross/adapters/BaseSwapAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/DebridgeAdapter.d.ts +20 -0
- package/dist/esm/cross/adapters/DebridgeAdapter.js +264 -0
- package/dist/esm/cross/adapters/DebridgeAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/LifiAdapter.d.ts +19 -0
- package/dist/esm/cross/adapters/LifiAdapter.js +169 -0
- package/dist/esm/cross/adapters/LifiAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/MayanAdapter.d.ts +14 -0
- package/dist/esm/cross/adapters/MayanAdapter.js +119 -0
- package/dist/esm/cross/adapters/MayanAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/NearIntentsAdapter.d.ts +21 -0
- package/dist/esm/cross/adapters/NearIntentsAdapter.js +425 -0
- package/dist/esm/cross/adapters/NearIntentsAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/OptimexAdapter.d.ts +19 -0
- package/dist/esm/cross/adapters/OptimexAdapter.js +216 -0
- package/dist/esm/cross/adapters/OptimexAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/OrbiterAdapter.d.ts +20 -0
- package/dist/esm/cross/adapters/OrbiterAdapter.js +213 -0
- package/dist/esm/cross/adapters/OrbiterAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/RelayAdapter.d.ts +14 -0
- package/dist/esm/cross/adapters/RelayAdapter.js +171 -0
- package/dist/esm/cross/adapters/RelayAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/SymbiosisAdapter.d.ts +14 -0
- package/dist/esm/cross/adapters/SymbiosisAdapter.js +120 -0
- package/dist/esm/cross/adapters/SymbiosisAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/XYFinanceAdapter.d.ts +14 -0
- package/dist/esm/cross/adapters/XYFinanceAdapter.js +177 -0
- package/dist/esm/cross/adapters/XYFinanceAdapter.js.map +1 -0
- package/dist/esm/cross/adapters/index.d.ts +2 -0
- package/dist/esm/cross/adapters/index.js +10 -0
- package/dist/esm/cross/adapters/index.js.map +1 -0
- package/dist/esm/cross/constants/index.d.ts +202 -0
- package/dist/esm/cross/constants/index.js +183 -0
- package/dist/esm/cross/constants/index.js.map +1 -0
- package/dist/esm/cross/crossChainQuote.d.ts +25 -0
- package/dist/esm/cross/crossChainQuote.js +127 -0
- package/dist/esm/cross/crossChainQuote.js.map +1 -0
- package/dist/esm/cross/factory.d.ts +9 -0
- package/dist/esm/cross/factory.js +125 -0
- package/dist/esm/cross/factory.js.map +1 -0
- package/dist/esm/cross/registry.d.ts +12 -0
- package/dist/esm/cross/registry.js +52 -0
- package/dist/esm/cross/registry.js.map +1 -0
- package/dist/esm/hooks/useChain.d.ts +1 -1
- package/dist/esm/hooks/useGasRefuel.d.ts +1 -1
- package/dist/esm/hooks/useGasSufficiencyBridge.js +1 -2
- package/dist/esm/hooks/useGasSufficiencyBridge.js.map +1 -1
- package/dist/esm/hooks/useRouteExecution.js +2 -1
- package/dist/esm/hooks/useRouteExecution.js.map +1 -1
- package/dist/esm/hooks/useRoutes.js +50 -32
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useSettingMonitor.js +1 -0
- package/dist/esm/hooks/useSettingMonitor.js.map +1 -1
- package/dist/esm/hooks/useTokenAddressBalance.d.ts +1 -1
- package/dist/esm/hooks/useTokenPrice.js +4 -2
- package/dist/esm/hooks/useTokenPrice.js.map +1 -1
- package/dist/esm/hooks/useTokens.d.ts +1 -1
- package/dist/esm/services/ExecuteRoute.js +142 -124
- package/dist/esm/services/ExecuteRoute.js.map +1 -1
- package/dist/esm/stores/form/useFieldController.d.ts +1 -1
- package/dist/esm/stores/routes/createRouteExecutionStore.js +6 -3
- package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
- package/dist/esm/stores/routes/useSetExecutableRoute.d.ts +1 -1
- package/dist/esm/types/widget.d.ts +3 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -4
- package/src/components/AmountInput/AmountInputEndAdornment.tsx +46 -46
- package/src/components/Messages/WarningMessages.tsx +7 -2
- package/src/components/Step/Step.tsx +37 -31
- package/src/components/TransactionDetails.tsx +10 -11
- package/src/config/version.ts +1 -1
- package/src/cross/adapters/AcrossAdapter.ts +193 -0
- package/src/cross/adapters/BaseSwapAdapter.ts +173 -0
- package/src/cross/adapters/DebridgeAdapter.ts +375 -0
- package/src/cross/adapters/LifiAdapter.ts +213 -0
- package/src/cross/adapters/MayanAdapter.ts +179 -0
- package/src/cross/adapters/NearIntentsAdapter.ts +539 -0
- package/src/cross/adapters/OptimexAdapter.ts +273 -0
- package/src/cross/adapters/OrbiterAdapter.ts +270 -0
- package/src/cross/adapters/RelayAdapter.ts +248 -0
- package/src/cross/adapters/SymbiosisAdapter.ts +144 -0
- package/src/cross/adapters/XYFinanceAdapter.ts +213 -0
- package/src/cross/adapters/index.ts +9 -0
- package/src/cross/constants/index.ts +223 -0
- package/src/cross/crossChainQuote.ts +181 -0
- package/src/cross/factory.ts +145 -0
- package/src/cross/registry.ts +65 -0
- package/src/hooks/useGasSufficiencyBridge.ts +1 -3
- package/src/hooks/useRouteExecution.ts +2 -1
- package/src/hooks/useRoutes.ts +64 -43
- package/src/hooks/useSettingMonitor.ts +1 -1
- package/src/hooks/useTokenPrice.ts +5 -3
- package/src/services/ExecuteRoute.ts +184 -171
- package/src/stores/routes/createRouteExecutionStore.ts +13 -4
- package/src/types/widget.ts +3 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { MAINNET_RELAY_API, convertViemChainToRelayChain, createClient, getClient, } from '@reservoir0x/relay-sdk';
|
|
2
|
+
import { formatUnits } from 'viem';
|
|
3
|
+
import { arbitrum, avalanche, base, berachain, blast, bsc, fantom, linea, mainnet, mantle, optimism, polygon, ronin, scroll, sonic, unichain, zksync, } from 'viem/chains';
|
|
4
|
+
import { CROSS_CHAIN_FEE_RECEIVER, CROSS_CHAIN_FEE_RECEIVER_SOLANA, MAINNET_NETWORKS, ZERO_ADDRESS, } from '../constants/index.js';
|
|
5
|
+
import { BaseSwapAdapter, NOT_SUPPORTED_CHAINS_PRICE_SERVICE, NonEvmChain, } from './BaseSwapAdapter.js';
|
|
6
|
+
const SolanaChainId = 792703809;
|
|
7
|
+
const solanaChain = {
|
|
8
|
+
id: SolanaChainId,
|
|
9
|
+
name: 'Solana',
|
|
10
|
+
displayName: 'Solana',
|
|
11
|
+
vmType: 'svm',
|
|
12
|
+
};
|
|
13
|
+
export class RelayAdapter extends BaseSwapAdapter {
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
createClient({
|
|
17
|
+
baseApiUrl: MAINNET_RELAY_API,
|
|
18
|
+
source: 'openocean',
|
|
19
|
+
chains: [
|
|
20
|
+
arbitrum,
|
|
21
|
+
avalanche,
|
|
22
|
+
base,
|
|
23
|
+
berachain,
|
|
24
|
+
blast,
|
|
25
|
+
bsc,
|
|
26
|
+
fantom,
|
|
27
|
+
linea,
|
|
28
|
+
mainnet,
|
|
29
|
+
mantle,
|
|
30
|
+
optimism,
|
|
31
|
+
polygon,
|
|
32
|
+
scroll,
|
|
33
|
+
sonic,
|
|
34
|
+
zksync,
|
|
35
|
+
ronin,
|
|
36
|
+
unichain,
|
|
37
|
+
]
|
|
38
|
+
.map(convertViemChainToRelayChain)
|
|
39
|
+
.concat(solanaChain),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
getName() {
|
|
43
|
+
return 'Relay';
|
|
44
|
+
}
|
|
45
|
+
getIcon() {
|
|
46
|
+
return 'https://storage.googleapis.com/ks-setting-1d682dca/84e906bb-eaeb-45d3-a64c-2aa9c84eb3ea1747759080942.png';
|
|
47
|
+
}
|
|
48
|
+
getSupportedChains() {
|
|
49
|
+
return [NonEvmChain.Solana, ...MAINNET_NETWORKS];
|
|
50
|
+
}
|
|
51
|
+
getSupportedTokens(_sourceChain, _destChain) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
async getQuote(params) {
|
|
55
|
+
const evmFromToken = params.fromToken;
|
|
56
|
+
const evmToToken = params.toToken;
|
|
57
|
+
const currency = params.fromChain === 'solana'
|
|
58
|
+
? params.fromToken.id
|
|
59
|
+
: evmFromToken.isNative
|
|
60
|
+
? ZERO_ADDRESS
|
|
61
|
+
: evmFromToken.address;
|
|
62
|
+
const toCurrency = params.toChain === 'solana'
|
|
63
|
+
? params.toToken.id
|
|
64
|
+
: evmToToken.isNative
|
|
65
|
+
? ZERO_ADDRESS
|
|
66
|
+
: evmToToken.address;
|
|
67
|
+
const resp = await getClient().actions.getQuote({
|
|
68
|
+
chainId: params.fromChain === 'solana' ? SolanaChainId : +params.fromChain,
|
|
69
|
+
toChainId: params.toChain === 'solana' ? SolanaChainId : +params.toChain,
|
|
70
|
+
currency,
|
|
71
|
+
toCurrency,
|
|
72
|
+
amount: params.amount,
|
|
73
|
+
tradeType: 'EXACT_INPUT',
|
|
74
|
+
wallet: params.walletClient,
|
|
75
|
+
recipient: params.recipient,
|
|
76
|
+
user: params.sender,
|
|
77
|
+
options: {
|
|
78
|
+
appFees: [
|
|
79
|
+
{
|
|
80
|
+
recipient: params.fromChain === 'solana' ? CROSS_CHAIN_FEE_RECEIVER_SOLANA : CROSS_CHAIN_FEE_RECEIVER,
|
|
81
|
+
fee: params.feeBps.toString(),
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
// includedSwapSources: ['open-ocean'],
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
const formattedOutputAmount = formatUnits(BigInt(resp.details?.currencyOut?.amount || '0'), params.toToken.decimals);
|
|
88
|
+
const formattedInputAmount = formatUnits(BigInt(params.amount), params.fromToken.decimals);
|
|
89
|
+
const inputUsd = NOT_SUPPORTED_CHAINS_PRICE_SERVICE.includes(params.fromChain)
|
|
90
|
+
? Number(resp.details?.currencyIn?.amountUsd || 0)
|
|
91
|
+
: params.tokenInUsd * +formattedInputAmount;
|
|
92
|
+
const outputUsd = NOT_SUPPORTED_CHAINS_PRICE_SERVICE.includes(params.toChain)
|
|
93
|
+
? Number(resp.details?.currencyOut?.amountUsd || 0)
|
|
94
|
+
: params.tokenOutUsd * +formattedOutputAmount;
|
|
95
|
+
if (params.walletClient) {
|
|
96
|
+
params.walletClient = {
|
|
97
|
+
account: {
|
|
98
|
+
address: params.sender,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const protocolFee = resp.fees?.relayer?.amountUsd || 0;
|
|
103
|
+
return {
|
|
104
|
+
quoteParams: params,
|
|
105
|
+
outputAmount: BigInt(resp.details?.currencyOut?.amount || '0'),
|
|
106
|
+
formattedOutputAmount,
|
|
107
|
+
inputUsd,
|
|
108
|
+
outputUsd,
|
|
109
|
+
priceImpact: !inputUsd || !outputUsd
|
|
110
|
+
? Number.NaN
|
|
111
|
+
: ((inputUsd - outputUsd) * 100) / inputUsd,
|
|
112
|
+
//rate: Number(resp.details?.rate || 0),
|
|
113
|
+
rate: +formattedOutputAmount / +formattedInputAmount,
|
|
114
|
+
gasFeeUsd: Number(resp.fees?.gas?.amountUsd || 0),
|
|
115
|
+
timeEstimate: resp.details?.timeEstimate || 0,
|
|
116
|
+
// Relay dont need to approve, we send token to contract directly
|
|
117
|
+
contractAddress: ZERO_ADDRESS,
|
|
118
|
+
rawQuote: resp,
|
|
119
|
+
protocolFee: protocolFee,
|
|
120
|
+
platformFeePercent: (params.feeBps * 100) / 10000,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
async executeSwap({ quote }, walletClient) {
|
|
124
|
+
return new Promise((resolve, reject) => {
|
|
125
|
+
getClient()
|
|
126
|
+
.actions.execute({
|
|
127
|
+
quote: quote.rawQuote,
|
|
128
|
+
wallet: walletClient,
|
|
129
|
+
onProgress: ({ currentStep }) => {
|
|
130
|
+
if (currentStep?.id === 'deposit' &&
|
|
131
|
+
currentStep.requestId &&
|
|
132
|
+
currentStep.kind === 'transaction') {
|
|
133
|
+
const txHash = currentStep.items?.[0]?.txHashes?.[0].txHash;
|
|
134
|
+
if (txHash) {
|
|
135
|
+
resolve({
|
|
136
|
+
sender: quote.quoteParams.sender,
|
|
137
|
+
sourceTxHash: txHash,
|
|
138
|
+
adapter: this.getName(),
|
|
139
|
+
id: currentStep.requestId,
|
|
140
|
+
sourceChain: quote.quoteParams.fromChain,
|
|
141
|
+
targetChain: quote.quoteParams.toChain,
|
|
142
|
+
inputAmount: quote.quoteParams.amount,
|
|
143
|
+
outputAmount: quote.outputAmount.toString(),
|
|
144
|
+
sourceToken: quote.quoteParams.fromToken,
|
|
145
|
+
targetToken: quote.quoteParams.toToken,
|
|
146
|
+
timestamp: new Date().getTime(),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
})
|
|
152
|
+
.catch((e) => {
|
|
153
|
+
reject(e); // Make sure errors from execute are also caught
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
async getTransactionStatus(p) {
|
|
158
|
+
const res = await fetch(`https://api.relay.link/intents/status/v2?requestId=${p.id}`).then((r) => r.json());
|
|
159
|
+
return {
|
|
160
|
+
txHash: res.txHashes?.[0] || '',
|
|
161
|
+
status: res.status === 'success'
|
|
162
|
+
? 'Success'
|
|
163
|
+
: res.status === 'refund'
|
|
164
|
+
? 'Refunded'
|
|
165
|
+
: res.status === 'failure'
|
|
166
|
+
? 'Failed'
|
|
167
|
+
: 'Processing',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=RelayAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelayAdapter.js","sourceRoot":"","sources":["../../../../src/cross/adapters/RelayAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Currency } from '../constants/index.js';
|
|
2
|
+
import { WalletClient } from 'viem';
|
|
3
|
+
import { Quote } from '../registry.js';
|
|
4
|
+
import { BaseSwapAdapter, Chain, EvmQuoteParams, NormalizedQuote, NormalizedTxResponse, SwapStatus } from './BaseSwapAdapter.js';
|
|
5
|
+
export declare class SymbiosisAdapter extends BaseSwapAdapter {
|
|
6
|
+
constructor();
|
|
7
|
+
getName(): string;
|
|
8
|
+
getIcon(): string;
|
|
9
|
+
getSupportedChains(): Chain[];
|
|
10
|
+
getSupportedTokens(_sourceChain: Chain, _destChain: Chain): Currency[];
|
|
11
|
+
getQuote(params: EvmQuoteParams): Promise<NormalizedQuote>;
|
|
12
|
+
executeSwap({ quote }: Quote, walletClient: WalletClient): Promise<NormalizedTxResponse>;
|
|
13
|
+
getTransactionStatus(p: NormalizedTxResponse): Promise<SwapStatus>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ChainId } from '@openocean.finance/widget-sdk';
|
|
2
|
+
import { formatUnits } from 'viem';
|
|
3
|
+
import { ZERO_ADDRESS } from '../constants/index.js';
|
|
4
|
+
import { BaseSwapAdapter, } from './BaseSwapAdapter.js';
|
|
5
|
+
const SYMBIOSIS_API = 'https://api.symbiosis.finance/crosschain/v1';
|
|
6
|
+
export class SymbiosisAdapter extends BaseSwapAdapter {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
}
|
|
10
|
+
getName() {
|
|
11
|
+
return 'Symbiosis';
|
|
12
|
+
}
|
|
13
|
+
getIcon() {
|
|
14
|
+
return 'https://app.symbiosis.finance/images/favicon-32x32.png';
|
|
15
|
+
}
|
|
16
|
+
getSupportedChains() {
|
|
17
|
+
return [
|
|
18
|
+
ChainId.MAINNET,
|
|
19
|
+
ChainId.BSCMAINNET,
|
|
20
|
+
ChainId.MATIC,
|
|
21
|
+
ChainId.AVAXMAINNET,
|
|
22
|
+
ChainId.ZKSYNC,
|
|
23
|
+
ChainId.ARBITRUM,
|
|
24
|
+
ChainId.OPTIMISM,
|
|
25
|
+
ChainId.LINEA,
|
|
26
|
+
ChainId.MANTLE,
|
|
27
|
+
ChainId.BASE,
|
|
28
|
+
ChainId.SCROLL,
|
|
29
|
+
ChainId.BLAST,
|
|
30
|
+
ChainId.SONIC,
|
|
31
|
+
ChainId.BERA,
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
getSupportedTokens(_sourceChain, _destChain) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
async getQuote(params) {
|
|
38
|
+
const body = {
|
|
39
|
+
tokenAmountIn: {
|
|
40
|
+
address: params.fromToken.isNative ? '' : params.fromToken.address,
|
|
41
|
+
amount: params.amount,
|
|
42
|
+
chainId: params.fromChain,
|
|
43
|
+
decimals: params.fromToken.decimals,
|
|
44
|
+
},
|
|
45
|
+
tokenOut: {
|
|
46
|
+
chainId: params.toChain,
|
|
47
|
+
address: params.toToken.isNative ? '' : params.toToken.address,
|
|
48
|
+
symbol: params.toToken.symbol,
|
|
49
|
+
decimals: params.toToken.decimals,
|
|
50
|
+
},
|
|
51
|
+
from: params.sender,
|
|
52
|
+
to: params.recipient,
|
|
53
|
+
slippage: params.slippage,
|
|
54
|
+
};
|
|
55
|
+
const res = await fetch(`${SYMBIOSIS_API}/swap`, {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers: {
|
|
58
|
+
'Content-Type': 'application/json',
|
|
59
|
+
},
|
|
60
|
+
body: JSON.stringify(body),
|
|
61
|
+
}).then(r => r.json());
|
|
62
|
+
if (!res.tx)
|
|
63
|
+
throw new Error('No route found');
|
|
64
|
+
const formattedOutputAmount = formatUnits(BigInt(res.tokenAmountOut.amount), params.toToken.decimals);
|
|
65
|
+
const formattedInputAmount = formatUnits(BigInt(params.amount), params.fromToken.decimals);
|
|
66
|
+
const tokenInUsd = params.tokenInUsd;
|
|
67
|
+
const tokenOutUsd = params.tokenOutUsd;
|
|
68
|
+
const inputUsd = tokenInUsd * +formattedInputAmount;
|
|
69
|
+
const outputUsd = tokenOutUsd * +formattedOutputAmount;
|
|
70
|
+
return {
|
|
71
|
+
quoteParams: params,
|
|
72
|
+
outputAmount: BigInt(res.tokenAmountOut.amount),
|
|
73
|
+
formattedOutputAmount,
|
|
74
|
+
inputUsd,
|
|
75
|
+
outputUsd,
|
|
76
|
+
priceImpact: !inputUsd || !outputUsd ? NaN : ((inputUsd - outputUsd) * 100) / inputUsd,
|
|
77
|
+
rate: +formattedOutputAmount / +formattedInputAmount,
|
|
78
|
+
gasFeeUsd: 0,
|
|
79
|
+
timeEstimate: res.estimatedTime,
|
|
80
|
+
contractAddress: res.approveTo || ZERO_ADDRESS,
|
|
81
|
+
rawQuote: res,
|
|
82
|
+
// TODO: add Fee
|
|
83
|
+
protocolFee: 0,
|
|
84
|
+
platformFeePercent: 0,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async executeSwap({ quote }, walletClient) {
|
|
88
|
+
const account = walletClient.account?.address;
|
|
89
|
+
if (!account)
|
|
90
|
+
throw new Error('WalletClient account is not defined');
|
|
91
|
+
const tx = await walletClient.sendTransaction({
|
|
92
|
+
chain: undefined,
|
|
93
|
+
account,
|
|
94
|
+
to: quote.rawQuote.tx.to,
|
|
95
|
+
value: BigInt(quote.rawQuote.tx.value),
|
|
96
|
+
data: quote.rawQuote.tx.data,
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
sender: quote.quoteParams.sender,
|
|
100
|
+
id: tx, // specific id for each provider
|
|
101
|
+
sourceTxHash: tx,
|
|
102
|
+
adapter: this.getName(),
|
|
103
|
+
sourceChain: quote.quoteParams.fromChain,
|
|
104
|
+
targetChain: quote.quoteParams.toChain,
|
|
105
|
+
inputAmount: quote.quoteParams.amount,
|
|
106
|
+
outputAmount: quote.outputAmount.toString(),
|
|
107
|
+
sourceToken: quote.quoteParams.fromToken,
|
|
108
|
+
targetToken: quote.quoteParams.toToken,
|
|
109
|
+
timestamp: new Date().getTime(),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async getTransactionStatus(p) {
|
|
113
|
+
const res = await fetch(`${SYMBIOSIS_API}/tx/${p.sourceChain}/${p.sourceTxHash}`).then(r => r.json());
|
|
114
|
+
return {
|
|
115
|
+
txHash: res?.tx?.hash || '',
|
|
116
|
+
status: res.status.code === 0 ? 'Success' : res.status.code === 3 ? 'Failed' : 'Processing',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=SymbiosisAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SymbiosisAdapter.js","sourceRoot":"","sources":["../../../../src/cross/adapters/SymbiosisAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Currency } from '../constants/index.js';
|
|
2
|
+
import { WalletClient } from 'viem';
|
|
3
|
+
import { Quote } from '../registry.js';
|
|
4
|
+
import { BaseSwapAdapter, Chain, EvmQuoteParams, NormalizedQuote, NormalizedTxResponse, SwapStatus } from './BaseSwapAdapter.js';
|
|
5
|
+
export declare class XYFinanceAdapter extends BaseSwapAdapter {
|
|
6
|
+
constructor();
|
|
7
|
+
getName(): string;
|
|
8
|
+
getIcon(): string;
|
|
9
|
+
getSupportedChains(): Chain[];
|
|
10
|
+
getSupportedTokens(_sourceChain: Chain, _destChain: Chain): Currency[];
|
|
11
|
+
getQuote(params: EvmQuoteParams): Promise<NormalizedQuote>;
|
|
12
|
+
executeSwap({ quote }: Quote, walletClient: WalletClient): Promise<NormalizedTxResponse>;
|
|
13
|
+
getTransactionStatus(p: NormalizedTxResponse): Promise<SwapStatus>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { ChainId } from '@openocean.finance/widget-sdk';
|
|
2
|
+
import { getPublicClient } from '@wagmi/core';
|
|
3
|
+
import { formatUnits } from 'viem';
|
|
4
|
+
import { useConfig } from 'wagmi';
|
|
5
|
+
import { CROSS_CHAIN_FEE_RECEIVER, ETHER_ADDRESS } from '../constants/index.js';
|
|
6
|
+
import { BaseSwapAdapter, NOT_SUPPORTED_CHAINS_PRICE_SERVICE, } from './BaseSwapAdapter.js';
|
|
7
|
+
const XY_FINANCE_API = 'https://aggregator-api.xy.finance/v1';
|
|
8
|
+
export class XYFinanceAdapter extends BaseSwapAdapter {
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
}
|
|
12
|
+
getName() {
|
|
13
|
+
return 'XYFinance';
|
|
14
|
+
}
|
|
15
|
+
getIcon() {
|
|
16
|
+
return 'https://xy.finance/img/favicon.ico';
|
|
17
|
+
}
|
|
18
|
+
getSupportedChains() {
|
|
19
|
+
return [
|
|
20
|
+
ChainId.MAINNET,
|
|
21
|
+
ChainId.BSCMAINNET,
|
|
22
|
+
ChainId.MATIC,
|
|
23
|
+
ChainId.FANTOM,
|
|
24
|
+
ChainId.AVAXMAINNET,
|
|
25
|
+
ChainId.ARBITRUM,
|
|
26
|
+
ChainId.OPTIMISM,
|
|
27
|
+
ChainId.ZKSYNC,
|
|
28
|
+
ChainId.LINEA,
|
|
29
|
+
ChainId.BASE,
|
|
30
|
+
ChainId.MANTLE,
|
|
31
|
+
ChainId.SCROLL,
|
|
32
|
+
ChainId.BLAST,
|
|
33
|
+
ChainId.BERA,
|
|
34
|
+
ChainId.SONIC,
|
|
35
|
+
ChainId.UNICHAIN,
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
getSupportedTokens(_sourceChain, _destChain) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
async getQuote(params) {
|
|
42
|
+
const p = {
|
|
43
|
+
srcChainId: params.fromChain,
|
|
44
|
+
srcQuoteTokenAddress: params.fromToken.isNative ? ETHER_ADDRESS : params.fromToken.address,
|
|
45
|
+
srcQuoteTokenAmount: params.amount,
|
|
46
|
+
dstChainId: params.toChain,
|
|
47
|
+
dstQuoteTokenAddress: params.toToken.isNative ? ETHER_ADDRESS : params.toToken.address,
|
|
48
|
+
slippage: (params.slippage * 100) / 10000,
|
|
49
|
+
srcSwapProviders: 'KyberSwap V1 DexAggregator',
|
|
50
|
+
// bridgeProviders: 'yBridge',
|
|
51
|
+
affiliate: CROSS_CHAIN_FEE_RECEIVER,
|
|
52
|
+
//represents the fee you wish to collect. It is an integer between 0 and 100,000. In this range, 100,000 corresponds to 10%, 10,000 represents 1%, and so on in a similar fashion.
|
|
53
|
+
commissionRate: (params.feeBps / 10000) * 1000000,
|
|
54
|
+
};
|
|
55
|
+
// Convert the parameters object to URL query string
|
|
56
|
+
const queryParams = new URLSearchParams();
|
|
57
|
+
for (const [key, value] of Object.entries(p)) {
|
|
58
|
+
queryParams.append(key, String(value));
|
|
59
|
+
}
|
|
60
|
+
const resp = await fetch(`${XY_FINANCE_API}/quote?${queryParams.toString()}`).then(res => res.json());
|
|
61
|
+
const r = resp?.routes?.sort((a, b) => {
|
|
62
|
+
return +(BigInt(b.dstQuoteTokenAmount) - BigInt(a.dstQuoteTokenAmount)).toString();
|
|
63
|
+
})?.[0];
|
|
64
|
+
if (!r) {
|
|
65
|
+
throw new Error('No route found');
|
|
66
|
+
}
|
|
67
|
+
const formattedOutputAmount = formatUnits(BigInt(r.dstQuoteTokenAmount), params.toToken.decimals);
|
|
68
|
+
const formattedInputAmount = formatUnits(BigInt(params.amount), params.fromToken.decimals);
|
|
69
|
+
const tokenInUsd = params.tokenInUsd;
|
|
70
|
+
const tokenOutUsd = params.tokenOutUsd;
|
|
71
|
+
const inputUsd = NOT_SUPPORTED_CHAINS_PRICE_SERVICE.includes(params.fromChain)
|
|
72
|
+
? Number(r.srcQuoteTokenUsdValue)
|
|
73
|
+
: tokenInUsd * +formattedInputAmount;
|
|
74
|
+
const outputUsd = NOT_SUPPORTED_CHAINS_PRICE_SERVICE.includes(params.toChain)
|
|
75
|
+
? Number(r.dstQuoteTokenUsdValue)
|
|
76
|
+
: tokenOutUsd * +formattedOutputAmount;
|
|
77
|
+
return {
|
|
78
|
+
quoteParams: params,
|
|
79
|
+
outputAmount: BigInt(r.dstQuoteTokenAmount),
|
|
80
|
+
formattedOutputAmount,
|
|
81
|
+
inputUsd,
|
|
82
|
+
outputUsd,
|
|
83
|
+
priceImpact: !inputUsd || !outputUsd ? NaN : ((inputUsd - outputUsd) * 100) / inputUsd,
|
|
84
|
+
rate: +formattedOutputAmount / +formattedInputAmount,
|
|
85
|
+
gasFeeUsd: 0,
|
|
86
|
+
timeEstimate: r.estimatedTransferTime,
|
|
87
|
+
contractAddress: r.contractAddress,
|
|
88
|
+
rawQuote: r,
|
|
89
|
+
protocolFee: 0,
|
|
90
|
+
platformFeePercent: (params.feeBps * 100) / 10000,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
async executeSwap({ quote }, walletClient) {
|
|
94
|
+
const account = walletClient.account?.address;
|
|
95
|
+
if (!account)
|
|
96
|
+
throw new Error('WalletClient account is not defined');
|
|
97
|
+
const fromToken = quote.quoteParams.fromToken;
|
|
98
|
+
const toToken = quote.quoteParams.toToken;
|
|
99
|
+
const buildSlippage = Math.floor(quote.quoteParams.slippage * 0.9) > 1
|
|
100
|
+
? Math.floor(quote.quoteParams.slippage * 0.9)
|
|
101
|
+
: quote.quoteParams.slippage;
|
|
102
|
+
const p = {
|
|
103
|
+
srcChainId: quote.quoteParams.fromChain,
|
|
104
|
+
srcQuoteTokenAddress: fromToken.isNative ? ETHER_ADDRESS : fromToken.address,
|
|
105
|
+
srcQuoteTokenAmount: quote.quoteParams.amount,
|
|
106
|
+
dstChainId: quote.quoteParams.toChain,
|
|
107
|
+
dstQuoteTokenAddress: toToken.isNative ? ETHER_ADDRESS : toToken.address,
|
|
108
|
+
// slippage: quote.quoteParams.slippage,
|
|
109
|
+
slippage: (buildSlippage * 100) / 10000,
|
|
110
|
+
receiver: quote.quoteParams.recipient,
|
|
111
|
+
bridgeProvider: quote.rawQuote.bridgeDescription.provider,
|
|
112
|
+
srcBridgeTokenAddress: quote.rawQuote.bridgeDescription.srcBridgeTokenAddress,
|
|
113
|
+
dstBridgeTokenAddress: quote.rawQuote.bridgeDescription.dstBridgeTokenAddress,
|
|
114
|
+
affiliate: CROSS_CHAIN_FEE_RECEIVER,
|
|
115
|
+
//represents the fee you wish to collect. It is an integer between 0 and 100,000. In this range, 100,000 corresponds to 10%, 10,000 represents 1%, and so on in a similar fashion.
|
|
116
|
+
commissionRate: (quote.quoteParams.feeBps / 10000) * 1000000,
|
|
117
|
+
...(quote.rawQuote.srcSwapDescription ? { srcSwapProvider: quote.rawQuote.srcSwapDescription.provider } : {}),
|
|
118
|
+
...(quote.rawQuote.dstSwapDescription
|
|
119
|
+
? {
|
|
120
|
+
dstSwapProvider: quote.rawQuote.dstSwapDescription?.provider,
|
|
121
|
+
}
|
|
122
|
+
: {}),
|
|
123
|
+
};
|
|
124
|
+
// Convert the parameters object to URL query string
|
|
125
|
+
const queryParams = new URLSearchParams();
|
|
126
|
+
for (const [key, value] of Object.entries(p)) {
|
|
127
|
+
queryParams.append(key, String(value));
|
|
128
|
+
}
|
|
129
|
+
const resp = await fetch(`${XY_FINANCE_API}/buildTx?${queryParams.toString()}`).then(res => res.json());
|
|
130
|
+
if (BigInt(resp.route.minReceiveAmount) < BigInt(quote.rawQuote.minReceiveAmount)) {
|
|
131
|
+
throw new Error('Rate has changed');
|
|
132
|
+
}
|
|
133
|
+
if (resp.tx) {
|
|
134
|
+
const tx = await walletClient.sendTransaction({
|
|
135
|
+
chain: undefined,
|
|
136
|
+
account,
|
|
137
|
+
to: resp.tx.to,
|
|
138
|
+
value: resp.tx.value,
|
|
139
|
+
data: resp.tx.data,
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
sender: quote.quoteParams.sender,
|
|
143
|
+
id: tx, // specific id for each provider
|
|
144
|
+
sourceTxHash: tx,
|
|
145
|
+
adapter: this.getName(),
|
|
146
|
+
sourceChain: quote.quoteParams.fromChain,
|
|
147
|
+
targetChain: quote.quoteParams.toChain,
|
|
148
|
+
inputAmount: quote.quoteParams.amount,
|
|
149
|
+
outputAmount: quote.outputAmount.toString(),
|
|
150
|
+
sourceToken: fromToken,
|
|
151
|
+
targetToken: toToken,
|
|
152
|
+
timestamp: new Date().getTime(),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
throw new Error('No transaction found');
|
|
156
|
+
}
|
|
157
|
+
async getTransactionStatus(p) {
|
|
158
|
+
const publicClient = getPublicClient(useConfig(), {
|
|
159
|
+
chainId: p.sourceChain,
|
|
160
|
+
});
|
|
161
|
+
const receipt = await publicClient?.getTransactionReceipt({
|
|
162
|
+
hash: p.id,
|
|
163
|
+
});
|
|
164
|
+
if (receipt.status === 'reverted') {
|
|
165
|
+
return {
|
|
166
|
+
txHash: '',
|
|
167
|
+
status: 'Failed',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
const res = await fetch(`${XY_FINANCE_API}/crossChainStatus?srcChainId=${p.sourceChain}&srcTxHash=${p.id}`).then(r => r.json());
|
|
171
|
+
return {
|
|
172
|
+
txHash: res.tx || '',
|
|
173
|
+
status: res.status === 'Done' ? 'Success' : res.status === 'Refunded' ? 'Refunded' : 'Processing',
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=XYFinanceAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XYFinanceAdapter.js","sourceRoot":"","sources":["../../../../src/cross/adapters/XYFinanceAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// export * from './BaseSwapAdapter.js'
|
|
2
|
+
// export * from './AcrossAdapter.js'
|
|
3
|
+
export * from './RelayAdapter.js';
|
|
4
|
+
// export * from './XYFinanceAdapter.js'
|
|
5
|
+
export * from './MayanAdapter.js';
|
|
6
|
+
// export * from './SymbiosisAdapter.js'
|
|
7
|
+
// export * from './DebridgeAdapter.js'
|
|
8
|
+
// export * from './LifiAdapter.js'
|
|
9
|
+
// export * from './KyberSwapAdapter.js'
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cross/adapters/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,qCAAqC;AACrC,cAAc,mBAAmB,CAAA;AACjC,wCAAwC;AACxC,cAAc,mBAAmB,CAAA;AACjC,wCAAwC;AACxC,uCAAuC;AACvC,mCAAmC;AACnC,wCAAwC"}
|