@1delta/bridge-configs 0.1.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/LICENSE +674 -0
- package/dist/configs/across/config.d.ts +4 -0
- package/dist/configs/across/config.d.ts.map +1 -0
- package/dist/configs/across/config.js +317 -0
- package/dist/configs/axelar/abis/AxelarGasService.d.ts +103 -0
- package/dist/configs/axelar/abis/AxelarGasService.d.ts.map +1 -0
- package/dist/configs/axelar/abis/AxelarGasService.js +1073 -0
- package/dist/configs/axelar/abis/AxelarGateway.d.ts +51 -0
- package/dist/configs/axelar/abis/AxelarGateway.d.ts.map +1 -0
- package/dist/configs/axelar/abis/AxelarGateway.js +753 -0
- package/dist/configs/axelar/abis/SquidMulticall.d.ts +47 -0
- package/dist/configs/axelar/abis/SquidMulticall.d.ts.map +1 -0
- package/dist/configs/axelar/abis/SquidMulticall.js +104 -0
- package/dist/configs/axelar/abis/SquidRouter.d.ts +82 -0
- package/dist/configs/axelar/abis/SquidRouter.d.ts.map +1 -0
- package/dist/configs/axelar/abis/SquidRouter.js +837 -0
- package/dist/configs/axelar/calldata/buildTx.d.ts +3 -0
- package/dist/configs/axelar/calldata/buildTx.d.ts.map +1 -0
- package/dist/configs/axelar/calldata/buildTx.js +29 -0
- package/dist/configs/axelar/calldata/index.d.ts +3 -0
- package/dist/configs/axelar/calldata/index.d.ts.map +1 -0
- package/dist/configs/axelar/calldata/index.js +2 -0
- package/dist/configs/axelar/calldata/squid/createSquidMulticallPayload.d.ts +16 -0
- package/dist/configs/axelar/calldata/squid/createSquidMulticallPayload.d.ts.map +1 -0
- package/dist/configs/axelar/calldata/squid/createSquidMulticallPayload.js +76 -0
- package/dist/configs/axelar/calldata/squid/types.d.ts +15 -0
- package/dist/configs/axelar/calldata/squid/types.d.ts.map +1 -0
- package/dist/configs/axelar/calldata/squid/types.js +7 -0
- package/dist/configs/axelar/calldata/types.d.ts +18 -0
- package/dist/configs/axelar/calldata/types.d.ts.map +1 -0
- package/dist/configs/axelar/calldata/types.js +1 -0
- package/dist/configs/axelar/config.d.ts +4 -0
- package/dist/configs/axelar/config.d.ts.map +1 -0
- package/dist/configs/axelar/config.js +99 -0
- package/dist/configs/axelar/data/axelarConfig/index.d.ts +3 -0
- package/dist/configs/axelar/data/axelarConfig/index.d.ts.map +1 -0
- package/dist/configs/axelar/data/axelarConfig/index.js +33 -0
- package/dist/configs/axelar/data/axelarConfig/types.d.ts +181 -0
- package/dist/configs/axelar/data/axelarConfig/types.d.ts.map +1 -0
- package/dist/configs/axelar/data/axelarConfig/types.js +1 -0
- package/dist/configs/axelar/data/squidChains/index.d.ts +6 -0
- package/dist/configs/axelar/data/squidChains/index.d.ts.map +1 -0
- package/dist/configs/axelar/data/squidChains/index.js +61 -0
- package/dist/configs/axelar/data/squidChains/types.d.ts +23 -0
- package/dist/configs/axelar/data/squidChains/types.d.ts.map +1 -0
- package/dist/configs/axelar/data/squidChains/types.js +1 -0
- package/dist/configs/axelar/errors.d.ts +15 -0
- package/dist/configs/axelar/errors.d.ts.map +1 -0
- package/dist/configs/axelar/errors.js +8 -0
- package/dist/configs/axelar/gasEstimation/index.d.ts +7 -0
- package/dist/configs/axelar/gasEstimation/index.d.ts.map +1 -0
- package/dist/configs/axelar/gasEstimation/index.js +38 -0
- package/dist/configs/axelar/gasEstimation/types.d.ts +23 -0
- package/dist/configs/axelar/gasEstimation/types.d.ts.map +1 -0
- package/dist/configs/axelar/gasEstimation/types.js +1 -0
- package/dist/configs/axelar/route/fetchAxelarRoute.d.ts +3 -0
- package/dist/configs/axelar/route/fetchAxelarRoute.d.ts.map +1 -0
- package/dist/configs/axelar/route/fetchAxelarRoute.js +50 -0
- package/dist/configs/axelar/route/index.d.ts +3 -0
- package/dist/configs/axelar/route/index.d.ts.map +1 -0
- package/dist/configs/axelar/route/index.js +2 -0
- package/dist/configs/axelar/route/tokenIdentifier.d.ts +5 -0
- package/dist/configs/axelar/route/tokenIdentifier.d.ts.map +1 -0
- package/dist/configs/axelar/route/tokenIdentifier.js +32 -0
- package/dist/configs/axelar/route/types.d.ts +5 -0
- package/dist/configs/axelar/route/types.d.ts.map +1 -0
- package/dist/configs/axelar/route/types.js +1 -0
- package/dist/configs/butter/config.d.ts +9 -0
- package/dist/configs/butter/config.d.ts.map +1 -0
- package/dist/configs/butter/config.js +207 -0
- package/dist/configs/cowswap/config.d.ts +4 -0
- package/dist/configs/cowswap/config.d.ts.map +1 -0
- package/dist/configs/cowswap/config.js +106 -0
- package/dist/configs/cowswap/errors.d.ts +19 -0
- package/dist/configs/cowswap/errors.d.ts.map +1 -0
- package/dist/configs/cowswap/errors.js +12 -0
- package/dist/configs/cowswap/swap/quote.d.ts +5 -0
- package/dist/configs/cowswap/swap/quote.d.ts.map +1 -0
- package/dist/configs/cowswap/swap/quote.js +28 -0
- package/dist/configs/cowswap/swap/route.d.ts +5 -0
- package/dist/configs/cowswap/swap/route.d.ts.map +1 -0
- package/dist/configs/cowswap/swap/route.js +61 -0
- package/dist/configs/cowswap/track/index.d.ts +6 -0
- package/dist/configs/cowswap/track/index.d.ts.map +1 -0
- package/dist/configs/cowswap/track/index.js +27 -0
- package/dist/configs/cowswap/utils/getCowSwapSlippage.d.ts +4 -0
- package/dist/configs/cowswap/utils/getCowSwapSlippage.d.ts.map +1 -0
- package/dist/configs/cowswap/utils/getCowSwapSlippage.js +16 -0
- package/dist/configs/cowswap/utils/toSupportedChainId.d.ts +3 -0
- package/dist/configs/cowswap/utils/toSupportedChainId.d.ts.map +1 -0
- package/dist/configs/cowswap/utils/toSupportedChainId.js +11 -0
- package/dist/configs/crosscurve/config.d.ts +4 -0
- package/dist/configs/crosscurve/config.d.ts.map +1 -0
- package/dist/configs/crosscurve/config.js +185 -0
- package/dist/configs/gas-zip/chains/fetch.d.ts +10 -0
- package/dist/configs/gas-zip/chains/fetch.d.ts.map +1 -0
- package/dist/configs/gas-zip/chains/fetch.js +29 -0
- package/dist/configs/gas-zip/chains/types.d.ts +25 -0
- package/dist/configs/gas-zip/chains/types.d.ts.map +1 -0
- package/dist/configs/gas-zip/chains/types.js +1 -0
- package/dist/configs/gas-zip/config.d.ts +4 -0
- package/dist/configs/gas-zip/config.d.ts.map +1 -0
- package/dist/configs/gas-zip/config.js +121 -0
- package/dist/configs/index.d.ts +2 -0
- package/dist/configs/index.d.ts.map +1 -0
- package/dist/configs/index.js +41 -0
- package/dist/configs/layerswap/LayerswapNetworks.json +3656 -0
- package/dist/configs/layerswap/config.d.ts +4 -0
- package/dist/configs/layerswap/config.d.ts.map +1 -0
- package/dist/configs/layerswap/config.js +285 -0
- package/dist/configs/lifi/config.d.ts +4 -0
- package/dist/configs/lifi/config.d.ts.map +1 -0
- package/dist/configs/lifi/config.js +104 -0
- package/dist/configs/mayan/calldata/index.d.ts +14 -0
- package/dist/configs/mayan/calldata/index.d.ts.map +1 -0
- package/dist/configs/mayan/calldata/index.js +41 -0
- package/dist/configs/mayan/config.d.ts +4 -0
- package/dist/configs/mayan/config.d.ts.map +1 -0
- package/dist/configs/mayan/config.js +222 -0
- package/dist/configs/odos/config.d.ts +8 -0
- package/dist/configs/odos/config.d.ts.map +1 -0
- package/dist/configs/odos/config.js +127 -0
- package/dist/configs/orbiter/abis/ERC20.d.ts +172 -0
- package/dist/configs/orbiter/abis/ERC20.d.ts.map +1 -0
- package/dist/configs/orbiter/abis/ERC20.js +224 -0
- package/dist/configs/orbiter/abis/OrbiterRouterEVMV3.d.ts +85 -0
- package/dist/configs/orbiter/abis/OrbiterRouterEVMV3.d.ts.map +1 -0
- package/dist/configs/orbiter/abis/OrbiterRouterEVMV3.js +83 -0
- package/dist/configs/orbiter/calldata/index.d.ts +32 -0
- package/dist/configs/orbiter/calldata/index.d.ts.map +1 -0
- package/dist/configs/orbiter/calldata/index.js +59 -0
- package/dist/configs/orbiter/config.d.ts +4 -0
- package/dist/configs/orbiter/config.d.ts.map +1 -0
- package/dist/configs/orbiter/config.js +178 -0
- package/dist/configs/router/config.d.ts +4 -0
- package/dist/configs/router/config.d.ts.map +1 -0
- package/dist/configs/router/config.js +125 -0
- package/dist/configs/squid-v1/config.d.ts +4 -0
- package/dist/configs/squid-v1/config.d.ts.map +1 -0
- package/dist/configs/squid-v1/config.js +133 -0
- package/dist/configs/squid-v2/config.d.ts +4 -0
- package/dist/configs/squid-v2/config.d.ts.map +1 -0
- package/dist/configs/squid-v2/config.js +146 -0
- package/dist/configs/squid-v2/constants.d.ts +2 -0
- package/dist/configs/squid-v2/constants.d.ts.map +1 -0
- package/dist/configs/squid-v2/constants.js +1 -0
- package/dist/configs/stargate/abis/StargatePool.d.ts +41 -0
- package/dist/configs/stargate/abis/StargatePool.d.ts.map +1 -0
- package/dist/configs/stargate/abis/StargatePool.js +318 -0
- package/dist/configs/stargate/abis/TokenMessaging.d.ts +16 -0
- package/dist/configs/stargate/abis/TokenMessaging.d.ts.map +1 -0
- package/dist/configs/stargate/abis/TokenMessaging.js +21 -0
- package/dist/configs/stargate/calldata/constants.d.ts +249 -0
- package/dist/configs/stargate/calldata/constants.d.ts.map +1 -0
- package/dist/configs/stargate/calldata/constants.js +273 -0
- package/dist/configs/stargate/calldata/index.d.ts +6 -0
- package/dist/configs/stargate/calldata/index.d.ts.map +1 -0
- package/dist/configs/stargate/calldata/index.js +127 -0
- package/dist/configs/stargate/calldata/types.d.ts +51 -0
- package/dist/configs/stargate/calldata/types.d.ts.map +1 -0
- package/dist/configs/stargate/calldata/types.js +10 -0
- package/dist/configs/stargate/common/config.d.ts +88 -0
- package/dist/configs/stargate/common/config.d.ts.map +1 -0
- package/dist/configs/stargate/common/config.js +93 -0
- package/dist/configs/stargate/common/constants.d.ts +5 -0
- package/dist/configs/stargate/common/constants.d.ts.map +1 -0
- package/dist/configs/stargate/common/constants.js +7 -0
- package/dist/configs/stargate/common/index.d.ts +3 -0
- package/dist/configs/stargate/common/index.d.ts.map +1 -0
- package/dist/configs/stargate/common/index.js +2 -0
- package/dist/configs/stargate/configs/bus/config.d.ts +4 -0
- package/dist/configs/stargate/configs/bus/config.d.ts.map +1 -0
- package/dist/configs/stargate/configs/bus/config.js +41 -0
- package/dist/configs/stargate/configs/taxi/config.d.ts +4 -0
- package/dist/configs/stargate/configs/taxi/config.d.ts.map +1 -0
- package/dist/configs/stargate/configs/taxi/config.js +58 -0
- package/dist/configs/stargate/types/index.d.ts +12 -0
- package/dist/configs/stargate/types/index.d.ts.map +1 -0
- package/dist/configs/stargate/types/index.js +15 -0
- package/dist/configs/symbiosis/config.d.ts +4 -0
- package/dist/configs/symbiosis/config.d.ts.map +1 -0
- package/dist/configs/symbiosis/config.js +119 -0
- package/dist/configs/utils/index.d.ts +2 -0
- package/dist/configs/utils/index.d.ts.map +1 -0
- package/dist/configs/utils/index.js +3 -0
- package/dist/configs/xy/config.d.ts +4 -0
- package/dist/configs/xy/config.d.ts.map +1 -0
- package/dist/configs/xy/config.js +176 -0
- package/dist/configs/zenlink/calldata/aggregationRouterV2ABI.d.ts +49 -0
- package/dist/configs/zenlink/calldata/aggregationRouterV2ABI.d.ts.map +1 -0
- package/dist/configs/zenlink/calldata/aggregationRouterV2ABI.js +63 -0
- package/dist/configs/zenlink/calldata/index.d.ts +18 -0
- package/dist/configs/zenlink/calldata/index.d.ts.map +1 -0
- package/dist/configs/zenlink/calldata/index.js +35 -0
- package/dist/configs/zenlink/config.d.ts +4 -0
- package/dist/configs/zenlink/config.d.ts.map +1 -0
- package/dist/configs/zenlink/config.js +109 -0
- package/dist/configs/zenlink/errors.d.ts +15 -0
- package/dist/configs/zenlink/errors.d.ts.map +1 -0
- package/dist/configs/zenlink/errors.js +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +52 -0
- package/dist/walletClient.d.ts +4433 -0
- package/dist/walletClient.d.ts.map +1 -0
- package/dist/walletClient.js +7 -0
- package/package.json +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/configs/layerswap/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAEjB,MAAM,qBAAqB,CAAA;AA+C5B,eAAO,MAAM,eAAe,EAAE,gBAqR7B,CAAA;AACD,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { CrossChainBusinessException, } from '@1delta/bridge-core';
|
|
2
|
+
import { SupportedChainId } from '@1delta/lib-utils';
|
|
3
|
+
import { formatUnits } from 'viem';
|
|
4
|
+
import { Bridge } from '../../types';
|
|
5
|
+
import { bridgeIcon } from '../utils';
|
|
6
|
+
import LayerswapNetworks from './LayerswapNetworks.json';
|
|
7
|
+
const LAYERSWAP_API_HOST = 'https://api.layerswap.io/api/v2';
|
|
8
|
+
/** This Api key is for tracking only, not critical if public */
|
|
9
|
+
const LAYERSWAP_API_KEY = 'Sj8Y78lM7l8djQPLddouApubaYormq24SKjsHZ7ZP8KbBoXsnqLDMpddmz/a5twzPUZR1TQ1OynHEJ+ABz55wA';
|
|
10
|
+
const NATIVE_COIN_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|
|
11
|
+
const LAYERSWAP_CHAIN_IDS = {
|
|
12
|
+
[SupportedChainId.FUEL]: '9889', // Fuel chain ID
|
|
13
|
+
};
|
|
14
|
+
const ERROR_CODES = {
|
|
15
|
+
ERROR: { code: 'ERROR', message: 'Unknown error occurred' },
|
|
16
|
+
NOT_SUPPORT: { code: 'NOT_SUPPORT', message: 'Operation not supported' },
|
|
17
|
+
NOT_FOUND: { code: 'NOT_FOUND', message: 'transaction not found' },
|
|
18
|
+
};
|
|
19
|
+
const NAME = Bridge.LAYERSWAP;
|
|
20
|
+
const findChainByChainId = (chainId) => {
|
|
21
|
+
return LayerswapNetworks.data.find((c) => c.chain_id === chainId.toString() ||
|
|
22
|
+
c.chain_id ===
|
|
23
|
+
LAYERSWAP_CHAIN_IDS[chainId]);
|
|
24
|
+
};
|
|
25
|
+
const findTokenInChain = (chain, tokenAddress) => {
|
|
26
|
+
return chain?.tokens.find((t) => t.contract?.toLowerCase() === tokenAddress?.toLowerCase() ||
|
|
27
|
+
(t.contract == null && tokenAddress === NATIVE_COIN_ADDRESS));
|
|
28
|
+
};
|
|
29
|
+
var Status;
|
|
30
|
+
(function (Status) {
|
|
31
|
+
Status["SUCCESS"] = "completed";
|
|
32
|
+
})(Status || (Status = {}));
|
|
33
|
+
export const layerswapConfig = {
|
|
34
|
+
name: NAME,
|
|
35
|
+
icon: {
|
|
36
|
+
light: bridgeIcon(NAME),
|
|
37
|
+
dark: bridgeIcon(NAME),
|
|
38
|
+
},
|
|
39
|
+
apiInterface: {
|
|
40
|
+
quote: {
|
|
41
|
+
url: `${LAYERSWAP_API_HOST}/quote`,
|
|
42
|
+
method: 'get',
|
|
43
|
+
headers: {
|
|
44
|
+
'X-LS-APIKEY': LAYERSWAP_API_KEY,
|
|
45
|
+
accept: 'application/json',
|
|
46
|
+
},
|
|
47
|
+
requestMapping: {
|
|
48
|
+
source_network: {
|
|
49
|
+
format: (params) => {
|
|
50
|
+
const chain = findChainByChainId(params.fromChainId);
|
|
51
|
+
return chain?.name || '';
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
source_token: {
|
|
55
|
+
format: (params) => {
|
|
56
|
+
const chain = findChainByChainId(params.fromChainId);
|
|
57
|
+
const token = chain && findTokenInChain(chain, params.fromTokenAddress);
|
|
58
|
+
return token?.symbol || '';
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
destination_network: {
|
|
62
|
+
format: (params) => {
|
|
63
|
+
const chain = findChainByChainId(params.toChainId);
|
|
64
|
+
return chain?.name || '';
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
destination_token: {
|
|
68
|
+
format: (params) => {
|
|
69
|
+
const chain = findChainByChainId(params.toChainId);
|
|
70
|
+
const token = chain && findTokenInChain(chain, params.toTokenAddress);
|
|
71
|
+
return token?.symbol || '';
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
amount: {
|
|
75
|
+
format: (params) => formatUnits(params.fromAmount, params.fromTokenDecimals),
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
requestAfter: async (res) => {
|
|
79
|
+
if (!res?.data?.quote) {
|
|
80
|
+
throw new CrossChainBusinessException(ERROR_CODES.ERROR);
|
|
81
|
+
}
|
|
82
|
+
return res.data;
|
|
83
|
+
},
|
|
84
|
+
responseMapping: {
|
|
85
|
+
name: NAME,
|
|
86
|
+
toAmount: {
|
|
87
|
+
format: (route, { crossChainParamsData }) => {
|
|
88
|
+
return Math.floor(Number(route.quote.receive_amount) *
|
|
89
|
+
10 ** Number(crossChainParamsData.toTokenDecimals));
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
fee: {},
|
|
93
|
+
estimatedDuration: {
|
|
94
|
+
format: (route) => {
|
|
95
|
+
const [hours, minutes, seconds] = route.quote.avg_completion_time.split(':');
|
|
96
|
+
const [secondsPart, _] = seconds.split('.');
|
|
97
|
+
return (parseInt(hours) * 3600 +
|
|
98
|
+
parseInt(minutes) * 60 +
|
|
99
|
+
parseInt(secondsPart));
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
route: {
|
|
105
|
+
url: `${LAYERSWAP_API_HOST}/swaps`,
|
|
106
|
+
method: 'post',
|
|
107
|
+
headers: {
|
|
108
|
+
'X-LS-APIKEY': LAYERSWAP_API_KEY,
|
|
109
|
+
accept: 'application/json',
|
|
110
|
+
},
|
|
111
|
+
requestMapping: {
|
|
112
|
+
destination_address: 'toAddress',
|
|
113
|
+
source_address: 'fromAddress',
|
|
114
|
+
source_network: {
|
|
115
|
+
format: (params) => {
|
|
116
|
+
const chain = findChainByChainId(params.fromChainId);
|
|
117
|
+
return chain?.name || '';
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
source_token: {
|
|
121
|
+
format: (params) => {
|
|
122
|
+
const chain = findChainByChainId(params.fromChainId);
|
|
123
|
+
const token = chain && findTokenInChain(chain, params.fromTokenAddress);
|
|
124
|
+
return token?.symbol || '';
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
destination_network: {
|
|
128
|
+
format: (params) => {
|
|
129
|
+
const chain = findChainByChainId(params.toChainId);
|
|
130
|
+
return chain?.name || '';
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
destination_token: {
|
|
134
|
+
format: (params) => {
|
|
135
|
+
const chain = findChainByChainId(params.toChainId);
|
|
136
|
+
const token = chain && findTokenInChain(chain, params.toTokenAddress);
|
|
137
|
+
return token?.symbol || '';
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
amount: {
|
|
141
|
+
format: (params) => formatUnits(params.fromAmount, params.fromTokenDecimals),
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
requestAfter: async (res, headers, crossChainParamsData) => {
|
|
145
|
+
if (!res.data.deposit_actions[0]) {
|
|
146
|
+
throw new CrossChainBusinessException(ERROR_CODES.ERROR);
|
|
147
|
+
}
|
|
148
|
+
return res.data;
|
|
149
|
+
},
|
|
150
|
+
responseMapping: {
|
|
151
|
+
name: NAME,
|
|
152
|
+
depositContract: 'deposit_actions[0].to_address',
|
|
153
|
+
toAmount: {
|
|
154
|
+
format: (route, { crossChainParamsData }) => {
|
|
155
|
+
return Math.floor(Number(route.quote.receive_amount) *
|
|
156
|
+
10 ** Number(crossChainParamsData.toTokenDecimals));
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
fee: {},
|
|
160
|
+
estimatedDuration: {
|
|
161
|
+
format: (route, params) => {
|
|
162
|
+
const [hours, minutes, seconds] = route.quote.avg_completion_time.split(':');
|
|
163
|
+
const [secondsPart, _] = seconds.split('.');
|
|
164
|
+
return (parseInt(hours) * 3600 +
|
|
165
|
+
parseInt(minutes) * 60 +
|
|
166
|
+
parseInt(secondsPart));
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
interfaceParamData: {
|
|
170
|
+
format: (route, { crossChainParamsData }) => {
|
|
171
|
+
return route;
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
transactionData: {
|
|
175
|
+
data: 'deposit_actions[0].call_data',
|
|
176
|
+
value: 'deposit_actions[0].amount_in_base_units',
|
|
177
|
+
to: 'deposit_actions[0].to_address',
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
status: {
|
|
182
|
+
url: `${LAYERSWAP_API_HOST}/internal/swaps`,
|
|
183
|
+
method: 'get',
|
|
184
|
+
headers: {
|
|
185
|
+
'X-LS-APIKEY': LAYERSWAP_API_KEY,
|
|
186
|
+
accept: 'application/json',
|
|
187
|
+
},
|
|
188
|
+
after: (err, res) => {
|
|
189
|
+
if (!err) {
|
|
190
|
+
return res;
|
|
191
|
+
}
|
|
192
|
+
throw err;
|
|
193
|
+
},
|
|
194
|
+
requestAfter: (res, headers, crossChainParamsData) => {
|
|
195
|
+
const swap = res.data.find((s) => s.swap.transactions.length > 0 &&
|
|
196
|
+
s.swap.transactions.find((t) => t.type == 'input' &&
|
|
197
|
+
t.transaction_hash == crossChainParamsData.fromHash));
|
|
198
|
+
if (!swap)
|
|
199
|
+
throw new CrossChainBusinessException(ERROR_CODES.NOT_FOUND);
|
|
200
|
+
return swap;
|
|
201
|
+
},
|
|
202
|
+
requestMapping: {
|
|
203
|
+
addresses: {
|
|
204
|
+
format: (params) => {
|
|
205
|
+
return params.fromAddress;
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
responseMapping: {
|
|
210
|
+
toHash: {
|
|
211
|
+
format: (result) => {
|
|
212
|
+
const output_transaction = result.swap.transactions.find((t) => t.type == 'output' && t.transaction_hash);
|
|
213
|
+
return output_transaction?.transaction_hash;
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
statusInfo: {
|
|
217
|
+
format: (result) => {
|
|
218
|
+
const data = {
|
|
219
|
+
status: 'PENDING',
|
|
220
|
+
bridgeResponseResult: result.swap.status,
|
|
221
|
+
};
|
|
222
|
+
if (result.swap.status == Status.SUCCESS) {
|
|
223
|
+
data.status = 'DONE';
|
|
224
|
+
}
|
|
225
|
+
return data;
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
buildTransactionData: {
|
|
231
|
+
url: `${LAYERSWAP_API_HOST}/swaps`,
|
|
232
|
+
method: 'post',
|
|
233
|
+
headers: {
|
|
234
|
+
'X-LS-APIKEY': LAYERSWAP_API_KEY,
|
|
235
|
+
accept: 'application/json',
|
|
236
|
+
},
|
|
237
|
+
requestMapping: {
|
|
238
|
+
destination_address: 'toAddress',
|
|
239
|
+
source_address: 'fromAddress',
|
|
240
|
+
source_network: {
|
|
241
|
+
format: (params) => {
|
|
242
|
+
const chain = findChainByChainId(params.fromChainId);
|
|
243
|
+
return chain?.name || '';
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
source_token: {
|
|
247
|
+
format: (params) => {
|
|
248
|
+
const chain = findChainByChainId(params.fromChainId);
|
|
249
|
+
const token = chain && findTokenInChain(chain, params.fromTokenAddress);
|
|
250
|
+
return token?.symbol || '';
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
destination_network: {
|
|
254
|
+
format: (params) => {
|
|
255
|
+
const chain = findChainByChainId(params.toChainId);
|
|
256
|
+
return chain?.name || '';
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
destination_token: {
|
|
260
|
+
format: (params) => {
|
|
261
|
+
const chain = findChainByChainId(params.toChainId);
|
|
262
|
+
const token = chain && findTokenInChain(chain, params.toTokenAddress);
|
|
263
|
+
return token?.symbol || '';
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
amount: {
|
|
267
|
+
format: (params) => formatUnits(params.fromAmount, params.fromTokenDecimals),
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
requestAfter: async (res, headers, crossChainParamsData) => {
|
|
271
|
+
if (!res.data.deposit_actions[0]) {
|
|
272
|
+
throw new CrossChainBusinessException(ERROR_CODES.ERROR);
|
|
273
|
+
}
|
|
274
|
+
return res.data.deposit_actions[0];
|
|
275
|
+
},
|
|
276
|
+
responseMapping: {
|
|
277
|
+
data: 'call_data',
|
|
278
|
+
value: 'amount_in_base_units',
|
|
279
|
+
to: 'to_address',
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
errorCodes: ERROR_CODES,
|
|
284
|
+
};
|
|
285
|
+
export default layerswapConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/configs/lifi/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAEjB,MAAM,qBAAqB,CAAA;AA0B5B,eAAO,MAAM,UAAU,EAAE,gBA6ExB,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { CrossChainBusinessException, } from '@1delta/bridge-core';
|
|
2
|
+
import { Bridge } from '../../types';
|
|
3
|
+
import { bridgeIcon } from '../utils';
|
|
4
|
+
const serverHost = 'https://li.quest/v1';
|
|
5
|
+
const NAME = Bridge.LIFI;
|
|
6
|
+
const INTEGRATOR_NAME = '1Delta';
|
|
7
|
+
const errorCodes = {
|
|
8
|
+
ERROR: { code: 'ERROR', message: 'unknown error' },
|
|
9
|
+
NOT_SUPPORT: { code: 'NOT_SUPPORT', message: 'NOT SUPPORT' },
|
|
10
|
+
DEPOSIT_NOT_FOUND: {
|
|
11
|
+
code: 'DEPOSIT_NOT_FOUND',
|
|
12
|
+
message: 'deposit not found',
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
var Status;
|
|
16
|
+
(function (Status) {
|
|
17
|
+
Status["DONE"] = "DONE";
|
|
18
|
+
Status["PROCESSING"] = "PENDING";
|
|
19
|
+
Status["NOT_FOUND"] = "NOT_FOUND";
|
|
20
|
+
Status["FAILED"] = "FAILED";
|
|
21
|
+
})(Status || (Status = {}));
|
|
22
|
+
export const lifiConfig = {
|
|
23
|
+
name: NAME,
|
|
24
|
+
icon: {
|
|
25
|
+
light: bridgeIcon(NAME),
|
|
26
|
+
dark: bridgeIcon(NAME),
|
|
27
|
+
},
|
|
28
|
+
apiInterface: {
|
|
29
|
+
route: {
|
|
30
|
+
url: `${serverHost}/quote`,
|
|
31
|
+
method: 'get',
|
|
32
|
+
headers: {},
|
|
33
|
+
requestMapping: {
|
|
34
|
+
fromChain: 'fromChainId',
|
|
35
|
+
toChain: 'toChainId',
|
|
36
|
+
fromToken: 'fromTokenAddress',
|
|
37
|
+
toToken: 'toTokenAddress',
|
|
38
|
+
fromAmount: 'fromAmount',
|
|
39
|
+
fromAddress: 'fromAddress',
|
|
40
|
+
toAddress: 'toAddress',
|
|
41
|
+
slippage: 'slippage',
|
|
42
|
+
integrator: INTEGRATOR_NAME,
|
|
43
|
+
order: 'order',
|
|
44
|
+
},
|
|
45
|
+
requestAfter: (data) => {
|
|
46
|
+
if (!data)
|
|
47
|
+
throw new CrossChainBusinessException(errorCodes.NOT_SUPPORT);
|
|
48
|
+
return data;
|
|
49
|
+
},
|
|
50
|
+
responseMapping: {
|
|
51
|
+
name: NAME,
|
|
52
|
+
depositContract: 'transactionRequest.to',
|
|
53
|
+
toAmount: 'estimate.toAmount',
|
|
54
|
+
fee: {
|
|
55
|
+
destinationGasFee: 'estimate.gasCosts.amount',
|
|
56
|
+
},
|
|
57
|
+
estimatedDuration: 'estimate.executionDuration',
|
|
58
|
+
transactionData: {
|
|
59
|
+
data: 'transactionRequest.data',
|
|
60
|
+
value: 'transactionRequest.value',
|
|
61
|
+
to: 'transactionRequest.to',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
status: {
|
|
66
|
+
url: `${serverHost}/status`,
|
|
67
|
+
method: 'get',
|
|
68
|
+
requestMapping: {
|
|
69
|
+
fromChain: 'fromChainId',
|
|
70
|
+
txHash: 'fromHash',
|
|
71
|
+
},
|
|
72
|
+
requestAfter: (res, _, crossChainParamsData) => {
|
|
73
|
+
return res;
|
|
74
|
+
},
|
|
75
|
+
responseMapping: {
|
|
76
|
+
toHash: 'receiving.txHash',
|
|
77
|
+
statusInfo: {
|
|
78
|
+
format: (res) => {
|
|
79
|
+
const data = {
|
|
80
|
+
status: 'PENDING',
|
|
81
|
+
bridgeResponseResult: res.substatusMessage,
|
|
82
|
+
};
|
|
83
|
+
if (res.status === Status.DONE) {
|
|
84
|
+
data.status = 'DONE';
|
|
85
|
+
}
|
|
86
|
+
else if (res.status === Status.PROCESSING) {
|
|
87
|
+
data.status = 'PENDING';
|
|
88
|
+
}
|
|
89
|
+
else if (res.status === Status.NOT_FOUND) {
|
|
90
|
+
data.status = 'NOT_FOUND';
|
|
91
|
+
}
|
|
92
|
+
else if (res.status === Status.FAILED) {
|
|
93
|
+
data.status = 'FAILED';
|
|
94
|
+
data.message = `failed: ${res.msg}`;
|
|
95
|
+
}
|
|
96
|
+
return data;
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
errorCodes,
|
|
103
|
+
};
|
|
104
|
+
export default lifiConfig;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Erc20Permit, Quote, ReferrerAddresses } from '@mayanfinance/swap-sdk';
|
|
2
|
+
export declare namespace MayanBridge {
|
|
3
|
+
function createEVMTransaction(quote: Quote, swapperAddress: string, signerChainId: string, destinationAddress: string, referrerAddresses?: ReferrerAddresses | null | undefined, permit?: Erc20Permit | null | undefined): {
|
|
4
|
+
data: string;
|
|
5
|
+
value: string;
|
|
6
|
+
to: string;
|
|
7
|
+
};
|
|
8
|
+
function createEVMIntent(quote: Quote, swapperAddress: string, signerChainId: string, destinationAddress: string, referrerAddresses?: ReferrerAddresses | null | undefined, permit?: Erc20Permit | null | undefined): {
|
|
9
|
+
orderId: string;
|
|
10
|
+
typedData: any;
|
|
11
|
+
broadcastIntent: (signature: string, permit: Erc20Permit) => Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/configs/mayan/calldata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAIX,KAAK,EACL,iBAAiB,EAElB,MAAM,wBAAwB,CAAA;AAE/B,yBAAiB,WAAW,CAAC;IAC3B,SAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACxD,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACtC;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;KACX,CAyBA;IAED,SAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACxD,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACtC;QACD,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,GAAG,CAAA;QACd,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC3E,CA+BA;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getQuoteSuitableReferrerAddress, getSwapFromEvmTxPayload, getSwiftFromEvmGasLessParams, submitSwiftEvmSwap, } from '@mayanfinance/swap-sdk';
|
|
2
|
+
export var MayanBridge;
|
|
3
|
+
(function (MayanBridge) {
|
|
4
|
+
function createEVMTransaction(quote, swapperAddress, signerChainId, destinationAddress, referrerAddresses, permit) {
|
|
5
|
+
const transactionRequest = getSwapFromEvmTxPayload(quote, swapperAddress, destinationAddress, referrerAddresses, swapperAddress, signerChainId, null, permit);
|
|
6
|
+
if (!transactionRequest.data ||
|
|
7
|
+
!transactionRequest.value ||
|
|
8
|
+
!transactionRequest.to) {
|
|
9
|
+
throw new Error('MayanBridge: transactionRequest is undefined or null');
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
data: transactionRequest.data,
|
|
13
|
+
value: transactionRequest.value.toString(),
|
|
14
|
+
to: transactionRequest.to.toString(),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
MayanBridge.createEVMTransaction = createEVMTransaction;
|
|
18
|
+
function createEVMIntent(quote, swapperAddress, signerChainId, destinationAddress, referrerAddresses, permit) {
|
|
19
|
+
const referrerAddress = getQuoteSuitableReferrerAddress(quote, referrerAddresses);
|
|
20
|
+
const gasLessParams = getSwiftFromEvmGasLessParams(quote, swapperAddress, destinationAddress, referrerAddress, signerChainId, permit ?? null);
|
|
21
|
+
const typedData = {
|
|
22
|
+
primaryType: 'CreateOrder',
|
|
23
|
+
domain: gasLessParams.orderTypedData.domain,
|
|
24
|
+
types: gasLessParams.orderTypedData.types,
|
|
25
|
+
message: gasLessParams.orderTypedData.value,
|
|
26
|
+
};
|
|
27
|
+
const broadcastIntent = async (signature, permit) => {
|
|
28
|
+
gasLessParams.permitParams = permit;
|
|
29
|
+
await submitSwiftEvmSwap(gasLessParams, signature);
|
|
30
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
orderId: gasLessParams.orderHash,
|
|
33
|
+
typedData,
|
|
34
|
+
broadcastIntent,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
MayanBridge.createEVMIntent = createEVMIntent;
|
|
38
|
+
})(MayanBridge || (MayanBridge = {}));
|
|
39
|
+
// api call body for swift
|
|
40
|
+
// {"permitParams":{ "value": "1000000", "deadline":1735302078, "v":28n, "r":"0xe37a73dd09eaa2a70ed2b453c7a47c1f96b308e4a4d9bf2bd06e52264f0c0124", "s":"0x76498fdbfe73fb099db86af615ebc3510a3a1967e8e7501d27a0af00b45b4f79"}
|
|
41
|
+
// ,"orderParams":{"trader":"0x000000000000000000000000334d52e24d452fa20489f07bd943b7cf943cb881","tokenOut":"0x0000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff85","minAmountOut":"947915","gasDrop":"0","cancelFee":"814","refundFee":"9247","deadline":"1735224713","destAddr":"0x000000000000000000000000334d52e24d452fa20489f07bd943b7cf943cb881","destChainId":24,"referrerAddr":"0x0000000000000000000000000000000000000000000000000000000000000000","referrerBps":0,"auctionMode":2,"random":"0xf5d892322e80ad158b6d6b0ceff4e8e385f68f94bacc6d42f86b4581c965ee54","sourceChainId":23,"amountIn":"1000000","tokenIn":"0xaf88d065e77c8cc2239327c5edb3a432268e5831","submissionFee":"36986"},"orderHash":"0x45de718e6082ac28a2b928d6de0dec68abda36bf1c0f16d16de150aa99a1b138","orderTypedData":{"domain":{"name":"Mayan Swift","chainId":42161,"verifyingContract":"0xC38e4e6A15593f908255214653d3D947CA1c2338"},"types":{"CreateOrder":[{"name":"OrderId","type":"bytes32"},{"name":"InputAmount","type":"uint256"},{"name":"SubmissionFee","type":"uint256"}]},"value":{"OrderId":"0x45de718e6082ac28a2b928d6de0dec68abda36bf1c0f16d16de150aa99a1b138","InputAmount":"963014","SubmissionFee":"36986"}},"signature":"0x6d8d6ad9ada0223bb68c97c8103824210ade76544a173d76045241c2560ec2df725a46acdec9ee43a74d8b68c33b67e6dbc916c73840f416955e4f19006d2ec81c"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/configs/mayan/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAGjB,MAAM,qBAAqB,CAAA;AAwC5B,eAAO,MAAM,WAAW,EAAE,gBA2NzB,CAAA;AAED,eAAe,WAAW,CAAA"}
|