@kimafinance/kima-transaction-widget 1.0.0 → 1.0.2
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/README.md +6 -6
- package/dist/assets/icons/Celo.d.ts +7 -0
- package/dist/assets/icons/Check.d.ts +2 -1
- package/dist/assets/icons/Copy.d.ts +8 -0
- package/dist/assets/icons/Fuse.d.ts +7 -0
- package/dist/assets/icons/GoodDollar.d.ts +7 -0
- package/dist/assets/icons/index.d.ts +4 -0
- package/dist/assets/loading/6-dots-scale.d.ts +3 -0
- package/dist/assets/loading/index.d.ts +1 -0
- package/dist/components/KimaTransactionWidget.d.ts +7 -3
- package/dist/components/TransferWidget.d.ts +6 -2
- package/dist/components/modals/HashPopup.d.ts +7 -0
- package/dist/components/modals/HelpPopup.d.ts +3 -0
- package/dist/components/modals/WalletConnectModal.d.ts +3 -0
- package/dist/components/modals/index.d.ts +3 -0
- package/dist/components/reusable/AddressInputWizard.d.ts +3 -0
- package/dist/components/reusable/ConfirmDetails.d.ts +3 -1
- package/dist/components/reusable/CopyButton.d.ts +6 -0
- package/dist/components/reusable/Dropdown.d.ts +2 -3
- package/dist/components/reusable/HelpPopup.d.ts +3 -0
- package/dist/components/reusable/NetworkDropdown.d.ts +5 -0
- package/dist/components/reusable/NetworkSelect.d.ts +2 -2
- package/dist/components/reusable/Progressbar.d.ts +2 -1
- package/dist/components/reusable/SecondaryButton.d.ts +2 -1
- package/dist/components/reusable/StepBox.d.ts +10 -0
- package/dist/components/reusable/Tooltip.d.ts +4 -1
- package/dist/components/reusable/index.d.ts +3 -1
- package/dist/hooks/useCurrencyOptions.d.ts +3 -0
- package/dist/hooks/useNetworkOptions.d.ts +3 -0
- package/dist/index.css +1041 -809
- package/dist/index.js +1600 -1116
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +1280 -832
- package/dist/index.modern.js.map +1 -1
- package/dist/interface.d.ts +18 -8
- package/dist/store/optionSlice.d.ts +14 -1
- package/dist/store/selectors.d.ts +6 -0
- package/dist/utils/config.d.ts +2 -4
- package/dist/utils/constants.d.ts +45 -17
- package/dist/utils/testId.d.ts +1 -0
- package/package.json +19 -4
package/dist/index.modern.js
CHANGED
|
@@ -1,280 +1,16 @@
|
|
|
1
|
-
import React, { useState, useCallback, useMemo, useContext,
|
|
1
|
+
import React, { useState, useCallback, useMemo, useContext, useEffect, useRef } from 'react';
|
|
2
2
|
import { createSlice, configureStore } from '@reduxjs/toolkit';
|
|
3
|
+
import { clusterApiUrl, TransactionInstruction, SystemProgram, SYSVAR_RENT_PUBKEY, PublicKey, Transaction } from '@solana/web3.js';
|
|
3
4
|
import { useSelector, useDispatch, Provider } from 'react-redux';
|
|
4
5
|
import { useWallet, useConnection, ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
|
|
5
6
|
import { PhantomWalletAdapter, SolflareWalletAdapter, SolletWalletAdapter, SolletExtensionWalletAdapter, CloverWalletAdapter, Coin98WalletAdapter, SlopeWalletAdapter, SolongWalletAdapter, TorusWalletAdapter } from '@solana/wallet-adapter-wallets';
|
|
6
7
|
import detectEthereumProvider from '@metamask/detect-provider';
|
|
7
8
|
import { ethers, BigNumber } from 'ethers';
|
|
8
|
-
import { clusterApiUrl, TransactionInstruction, SystemProgram, SYSVAR_RENT_PUBKEY, PublicKey, Transaction } from '@solana/web3.js';
|
|
9
9
|
import AnimatedNumber from 'animated-number-react';
|
|
10
10
|
import { WalletReadyState } from '@solana/wallet-adapter-base';
|
|
11
11
|
import { Contract } from '@ethersproject/contracts';
|
|
12
12
|
import { parseUnits } from '@ethersproject/units';
|
|
13
13
|
import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, AccountLayout } from '@solana/spl-token';
|
|
14
|
-
import Web3 from 'web3';
|
|
15
|
-
|
|
16
|
-
var SupportNetworks;
|
|
17
|
-
(function (SupportNetworks) {
|
|
18
|
-
SupportNetworks["Ethereum"] = "Ethereum";
|
|
19
|
-
SupportNetworks["Polygon"] = "Polygon";
|
|
20
|
-
SupportNetworks["Avalanche"] = "Avalanche";
|
|
21
|
-
SupportNetworks["Solana"] = "Solana";
|
|
22
|
-
})(SupportNetworks || (SupportNetworks = {}));
|
|
23
|
-
var FontSizeOptions;
|
|
24
|
-
(function (FontSizeOptions) {
|
|
25
|
-
FontSizeOptions["large"] = "large";
|
|
26
|
-
FontSizeOptions["medium"] = "medium";
|
|
27
|
-
FontSizeOptions["small"] = "small";
|
|
28
|
-
})(FontSizeOptions || (FontSizeOptions = {}));
|
|
29
|
-
var ModeOptions;
|
|
30
|
-
(function (ModeOptions) {
|
|
31
|
-
ModeOptions["payment"] = "payment";
|
|
32
|
-
ModeOptions["bridge"] = "bridge";
|
|
33
|
-
})(ModeOptions || (ModeOptions = {}));
|
|
34
|
-
var CurrencyOptions;
|
|
35
|
-
(function (CurrencyOptions) {
|
|
36
|
-
CurrencyOptions["USDK"] = "USDK";
|
|
37
|
-
})(CurrencyOptions || (CurrencyOptions = {}));
|
|
38
|
-
var ThemeOptions;
|
|
39
|
-
(function (ThemeOptions) {
|
|
40
|
-
ThemeOptions["light"] = "light";
|
|
41
|
-
ThemeOptions["dark"] = "dark";
|
|
42
|
-
})(ThemeOptions || (ThemeOptions = {}));
|
|
43
|
-
|
|
44
|
-
const initialState = {
|
|
45
|
-
theme: ThemeOptions.light,
|
|
46
|
-
mode: ModeOptions.bridge,
|
|
47
|
-
originNetwork: 'Solana',
|
|
48
|
-
targetNetwork: 'Ethereum',
|
|
49
|
-
targetAddress: '',
|
|
50
|
-
connectModal: false,
|
|
51
|
-
solanaProvider: undefined,
|
|
52
|
-
submitted: false,
|
|
53
|
-
amount: 0,
|
|
54
|
-
isApproving: false,
|
|
55
|
-
isSubmitting: false,
|
|
56
|
-
isConfirming: false,
|
|
57
|
-
feeDeduct: false,
|
|
58
|
-
splAllowance: 0,
|
|
59
|
-
errorHandler: () => void 0,
|
|
60
|
-
closeHandler: () => void 0,
|
|
61
|
-
successHandler: () => void 0,
|
|
62
|
-
serviceFee: 0
|
|
63
|
-
};
|
|
64
|
-
const optionSlice = createSlice({
|
|
65
|
-
name: 'option',
|
|
66
|
-
initialState,
|
|
67
|
-
reducers: {
|
|
68
|
-
setTheme: (state, action) => {
|
|
69
|
-
state.theme = action.payload;
|
|
70
|
-
},
|
|
71
|
-
setOriginNetwork: (state, action) => {
|
|
72
|
-
state.originNetwork = action.payload;
|
|
73
|
-
},
|
|
74
|
-
setTargetNetwork: (state, action) => {
|
|
75
|
-
state.targetNetwork = action.payload;
|
|
76
|
-
},
|
|
77
|
-
setTargetAddress: (state, action) => {
|
|
78
|
-
state.targetAddress = action.payload;
|
|
79
|
-
},
|
|
80
|
-
setConnectModal: (state, action) => {
|
|
81
|
-
state.connectModal = action.payload;
|
|
82
|
-
},
|
|
83
|
-
setSolanaProvider: (state, action) => {
|
|
84
|
-
state.solanaProvider = action.payload;
|
|
85
|
-
},
|
|
86
|
-
setSubmitted: (state, action) => {
|
|
87
|
-
state.submitted = action.payload;
|
|
88
|
-
},
|
|
89
|
-
setTransactionOption: (state, action) => {
|
|
90
|
-
state.transactionOption = action.payload;
|
|
91
|
-
},
|
|
92
|
-
setAmount: (state, action) => {
|
|
93
|
-
state.amount = action.payload;
|
|
94
|
-
},
|
|
95
|
-
setApproving: (state, action) => {
|
|
96
|
-
state.isApproving = action.payload;
|
|
97
|
-
},
|
|
98
|
-
setSubmitting: (state, action) => {
|
|
99
|
-
state.isSubmitting = action.payload;
|
|
100
|
-
},
|
|
101
|
-
setSplAllowance: (state, action) => {
|
|
102
|
-
state.splAllowance = action.payload;
|
|
103
|
-
},
|
|
104
|
-
setErrorHandler: (state, action) => {
|
|
105
|
-
state.errorHandler = action.payload;
|
|
106
|
-
},
|
|
107
|
-
setCloseHandler: (state, action) => {
|
|
108
|
-
state.closeHandler = action.payload;
|
|
109
|
-
},
|
|
110
|
-
setSuccessHandler: (state, action) => {
|
|
111
|
-
state.successHandler = action.payload;
|
|
112
|
-
},
|
|
113
|
-
setServiceFee: (state, action) => {
|
|
114
|
-
state.serviceFee = action.payload;
|
|
115
|
-
},
|
|
116
|
-
setMode: (state, action) => {
|
|
117
|
-
state.mode = action.payload;
|
|
118
|
-
},
|
|
119
|
-
setConfirming: (state, action) => {
|
|
120
|
-
state.isConfirming = action.payload;
|
|
121
|
-
},
|
|
122
|
-
setFeeDeduct: (state, action) => {
|
|
123
|
-
state.feeDeduct = action.payload;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
const {
|
|
128
|
-
setTheme,
|
|
129
|
-
setOriginNetwork,
|
|
130
|
-
setTargetNetwork,
|
|
131
|
-
setTargetAddress,
|
|
132
|
-
setConnectModal,
|
|
133
|
-
setSolanaProvider,
|
|
134
|
-
setSubmitted,
|
|
135
|
-
setTransactionOption,
|
|
136
|
-
setAmount,
|
|
137
|
-
setApproving,
|
|
138
|
-
setSubmitting,
|
|
139
|
-
setConfirming,
|
|
140
|
-
setSplAllowance,
|
|
141
|
-
setErrorHandler,
|
|
142
|
-
setCloseHandler,
|
|
143
|
-
setSuccessHandler,
|
|
144
|
-
setServiceFee,
|
|
145
|
-
setMode,
|
|
146
|
-
setFeeDeduct
|
|
147
|
-
} = optionSlice.actions;
|
|
148
|
-
var optionReducer = optionSlice.reducer;
|
|
149
|
-
|
|
150
|
-
const store = configureStore({
|
|
151
|
-
reducer: {
|
|
152
|
-
option: optionReducer
|
|
153
|
-
},
|
|
154
|
-
middleware: getDefaultMiddleware => getDefaultMiddleware({
|
|
155
|
-
serializableCheck: false
|
|
156
|
-
})
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
const selectTheme = state => state.option.theme;
|
|
160
|
-
const selectOriginNetwork = state => state.option.originNetwork;
|
|
161
|
-
const selectTargetNetwork = state => state.option.targetNetwork;
|
|
162
|
-
const selectTargetAddress = state => state.option.targetAddress;
|
|
163
|
-
const selectConnectModal = state => state.option.connectModal;
|
|
164
|
-
const selectSolanaProvider = state => state.option.solanaProvider;
|
|
165
|
-
const selectSubmitted = state => state.option.submitted;
|
|
166
|
-
const selectTransactionOption = state => state.option.transactionOption;
|
|
167
|
-
const selectAmount = state => state.option.amount;
|
|
168
|
-
const selectApproving = state => state.option.isApproving;
|
|
169
|
-
const selectSubmitting = state => state.option.isSubmitting;
|
|
170
|
-
const selectSplAllowance = state => state.option.splAllowance;
|
|
171
|
-
const selectErrorHandler = state => state.option.errorHandler;
|
|
172
|
-
const selectCloseHandler = state => state.option.closeHandler;
|
|
173
|
-
const selectSuccessHandler = state => state.option.successHandler;
|
|
174
|
-
const selectServiceFee = state => state.option.serviceFee;
|
|
175
|
-
const selectMode = state => state.option.mode;
|
|
176
|
-
const selectConfirming = state => state.option.isConfirming;
|
|
177
|
-
const selectFeeDeduct = state => state.option.feeDeduct;
|
|
178
|
-
|
|
179
|
-
const EthereumProviderContext = React.createContext({
|
|
180
|
-
connect: () => {},
|
|
181
|
-
disconnect: () => {},
|
|
182
|
-
provider: undefined,
|
|
183
|
-
chainId: undefined,
|
|
184
|
-
signer: undefined,
|
|
185
|
-
signerAddress: undefined,
|
|
186
|
-
providerError: null
|
|
187
|
-
});
|
|
188
|
-
const EthereumProvider = ({
|
|
189
|
-
children
|
|
190
|
-
}) => {
|
|
191
|
-
const errorHandler = useSelector(selectErrorHandler);
|
|
192
|
-
const [providerError, setProviderError] = useState(null);
|
|
193
|
-
const [provider, setProvider] = useState(undefined);
|
|
194
|
-
const [chainId, setChainId] = useState(undefined);
|
|
195
|
-
const [signer, setSigner] = useState(undefined);
|
|
196
|
-
const [signerAddress, setSignerAddress] = useState(undefined);
|
|
197
|
-
const connect = useCallback(() => {
|
|
198
|
-
setProviderError(null);
|
|
199
|
-
detectEthereumProvider().then(detectedProvider => {
|
|
200
|
-
if (detectedProvider) {
|
|
201
|
-
const provider = new ethers.providers.Web3Provider(
|
|
202
|
-
detectedProvider, 'any');
|
|
203
|
-
provider.send('eth_requestAccounts', []).then(() => {
|
|
204
|
-
setProviderError(null);
|
|
205
|
-
setProvider(provider);
|
|
206
|
-
provider.getNetwork().then(network => {
|
|
207
|
-
setChainId(network.chainId);
|
|
208
|
-
}).catch(e => {
|
|
209
|
-
errorHandler(e);
|
|
210
|
-
setProviderError('An error occurred while getting the network');
|
|
211
|
-
});
|
|
212
|
-
const signer = provider.getSigner();
|
|
213
|
-
setSigner(signer);
|
|
214
|
-
signer.getAddress().then(address => {
|
|
215
|
-
setSignerAddress(address);
|
|
216
|
-
}).catch(e => {
|
|
217
|
-
errorHandler(e);
|
|
218
|
-
setProviderError('An error occurred while getting the signer address');
|
|
219
|
-
});
|
|
220
|
-
if (detectedProvider && detectedProvider.on) {
|
|
221
|
-
detectedProvider.on('chainChanged', chainId => {
|
|
222
|
-
try {
|
|
223
|
-
setChainId(BigNumber.from(chainId).toNumber());
|
|
224
|
-
} catch (e) {
|
|
225
|
-
errorHandler(e);
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
detectedProvider.on('accountsChanged', accounts => {
|
|
229
|
-
try {
|
|
230
|
-
const signer = provider.getSigner();
|
|
231
|
-
setSigner(signer);
|
|
232
|
-
signer.getAddress().then(address => {
|
|
233
|
-
setSignerAddress(address);
|
|
234
|
-
}).catch(e => {
|
|
235
|
-
errorHandler(e);
|
|
236
|
-
setProviderError('An error occurred while getting the signer address');
|
|
237
|
-
});
|
|
238
|
-
} catch (e) {
|
|
239
|
-
errorHandler(e);
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}).catch(e => {
|
|
244
|
-
errorHandler(e);
|
|
245
|
-
setProviderError('An error occurred while requesting eth accounts');
|
|
246
|
-
});
|
|
247
|
-
} else {
|
|
248
|
-
setProviderError('Please install MetaMask');
|
|
249
|
-
}
|
|
250
|
-
}).catch(e => {
|
|
251
|
-
errorHandler(e);
|
|
252
|
-
setProviderError('Please install MetaMask');
|
|
253
|
-
});
|
|
254
|
-
}, []);
|
|
255
|
-
const disconnect = useCallback(() => {
|
|
256
|
-
setProviderError(null);
|
|
257
|
-
setProvider(undefined);
|
|
258
|
-
setChainId(undefined);
|
|
259
|
-
setSigner(undefined);
|
|
260
|
-
setSignerAddress(undefined);
|
|
261
|
-
}, []);
|
|
262
|
-
const contextValue = useMemo(() => ({
|
|
263
|
-
connect,
|
|
264
|
-
disconnect,
|
|
265
|
-
provider,
|
|
266
|
-
chainId,
|
|
267
|
-
signer,
|
|
268
|
-
signerAddress,
|
|
269
|
-
providerError
|
|
270
|
-
}), [connect, disconnect, provider, chainId, signer, signerAddress, providerError]);
|
|
271
|
-
return React.createElement(EthereumProviderContext.Provider, {
|
|
272
|
-
value: contextValue
|
|
273
|
-
}, children);
|
|
274
|
-
};
|
|
275
|
-
const useEthereumProvider = () => {
|
|
276
|
-
return useContext(EthereumProviderContext);
|
|
277
|
-
};
|
|
278
14
|
|
|
279
15
|
const Cross = ({
|
|
280
16
|
width: _width = 32,
|
|
@@ -358,6 +94,7 @@ const Cross$1 = ({
|
|
|
358
94
|
const Check = ({
|
|
359
95
|
width: _width = 15,
|
|
360
96
|
height: _height = 11,
|
|
97
|
+
fill: _fill = '#33EA66',
|
|
361
98
|
...rest
|
|
362
99
|
}) => {
|
|
363
100
|
return React.createElement("svg", Object.assign({
|
|
@@ -367,7 +104,7 @@ const Check = ({
|
|
|
367
104
|
xmlns: 'http://www.w3.org/2000/svg'
|
|
368
105
|
}, rest), React.createElement("path", {
|
|
369
106
|
d: 'M13.7319 0.295798C13.639 0.20207 13.5284 0.127675 13.4065 0.0769067C13.2846 0.026138 13.1539 0 13.0219 0C12.8899 0 12.7592 0.026138 12.6373 0.0769067C12.5155 0.127675 12.4049 0.20207 12.3119 0.295798L4.86192 7.7558L1.73192 4.6158C1.6354 4.52256 1.52146 4.44925 1.3966 4.40004C1.27175 4.35084 1.13843 4.32671 1.00424 4.32903C0.870064 4.33135 0.737655 4.36008 0.614576 4.41357C0.491498 4.46706 0.380161 4.54428 0.286922 4.6408C0.193684 4.73732 0.12037 4.85126 0.0711659 4.97612C0.0219619 5.10097 -0.00216855 5.2343 0.000152918 5.36848C0.00247438 5.50266 0.0312022 5.63507 0.0846957 5.75814C0.138189 5.88122 0.215401 5.99256 0.311922 6.0858L4.15192 9.9258C4.24489 10.0195 4.35549 10.0939 4.47735 10.1447C4.59921 10.1955 4.72991 10.2216 4.86192 10.2216C4.99393 10.2216 5.12464 10.1955 5.2465 10.1447C5.36836 10.0939 5.47896 10.0195 5.57192 9.9258L13.7319 1.7658C13.8334 1.67216 13.9144 1.5585 13.9698 1.432C14.0252 1.30551 14.0539 1.1689 14.0539 1.0308C14.0539 0.892697 14.0252 0.756091 13.9698 0.629592C13.9144 0.503092 13.8334 0.389441 13.7319 0.295798Z',
|
|
370
|
-
fill:
|
|
107
|
+
fill: _fill
|
|
371
108
|
}));
|
|
372
109
|
};
|
|
373
110
|
|
|
@@ -581,7 +318,7 @@ const Avalanche = ({
|
|
|
581
318
|
})));
|
|
582
319
|
};
|
|
583
320
|
|
|
584
|
-
const
|
|
321
|
+
const USDT = ({
|
|
585
322
|
width: _width = 37,
|
|
586
323
|
height: _height = 37,
|
|
587
324
|
...rest
|
|
@@ -594,24 +331,24 @@ const USDC = ({
|
|
|
594
331
|
}, rest), React.createElement("rect", {
|
|
595
332
|
width: '37',
|
|
596
333
|
height: '37',
|
|
597
|
-
fill: 'url(#
|
|
334
|
+
fill: 'url(#pattern5)'
|
|
598
335
|
}), React.createElement("defs", null, React.createElement("pattern", {
|
|
599
|
-
id: '
|
|
336
|
+
id: 'pattern5',
|
|
600
337
|
patternContentUnits: 'objectBoundingBox',
|
|
601
338
|
width: '1',
|
|
602
339
|
height: '1'
|
|
603
340
|
}, React.createElement("use", {
|
|
604
|
-
href: '#
|
|
605
|
-
transform: 'scale(0.
|
|
606
|
-
})), React.createElement("image", {
|
|
607
|
-
id: '
|
|
608
|
-
width: '
|
|
609
|
-
height: '
|
|
610
|
-
href: 'data:image/png;base64,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'
|
|
341
|
+
href: '#image0_214_312',
|
|
342
|
+
transform: 'scale(0.00390625)'
|
|
343
|
+
})), React.createElement("image", {
|
|
344
|
+
id: 'image0_214_312',
|
|
345
|
+
width: '256',
|
|
346
|
+
height: '256',
|
|
347
|
+
href: 'data:image/png;base64,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'
|
|
611
348
|
})));
|
|
612
349
|
};
|
|
613
350
|
|
|
614
|
-
const
|
|
351
|
+
const Fuse = ({
|
|
615
352
|
width: _width = 37,
|
|
616
353
|
height: _height = 37,
|
|
617
354
|
...rest
|
|
@@ -619,48 +356,194 @@ const USDT = ({
|
|
|
619
356
|
return React.createElement("svg", Object.assign({
|
|
620
357
|
width: _width,
|
|
621
358
|
height: _height,
|
|
622
|
-
viewBox: '0 0
|
|
359
|
+
viewBox: '0 0 200 200',
|
|
623
360
|
xmlns: 'http://www.w3.org/2000/svg'
|
|
624
361
|
}, rest), React.createElement("rect", {
|
|
625
|
-
width: '
|
|
626
|
-
height: '
|
|
627
|
-
fill: 'url(#
|
|
362
|
+
width: '200',
|
|
363
|
+
height: '200',
|
|
364
|
+
fill: 'url(#pattern6)'
|
|
628
365
|
}), React.createElement("defs", null, React.createElement("pattern", {
|
|
629
|
-
id: '
|
|
366
|
+
id: 'pattern6',
|
|
630
367
|
patternContentUnits: 'objectBoundingBox',
|
|
631
368
|
width: '1',
|
|
632
369
|
height: '1'
|
|
633
370
|
}, React.createElement("use", {
|
|
634
|
-
href: '#
|
|
635
|
-
transform: 'scale(0.
|
|
371
|
+
href: '#image0_1_3',
|
|
372
|
+
transform: 'scale(0.005)'
|
|
636
373
|
})), React.createElement("image", {
|
|
637
|
-
id: '
|
|
638
|
-
width: '
|
|
639
|
-
height: '
|
|
640
|
-
href: 'data:image/png;base64,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'
|
|
374
|
+
id: 'image0_1_3',
|
|
375
|
+
width: '200',
|
|
376
|
+
height: '200',
|
|
377
|
+
href: 'data:image/png;base64,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'
|
|
378
|
+
})));
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
const Celo = ({
|
|
382
|
+
width: _width = 37,
|
|
383
|
+
height: _height = 37,
|
|
384
|
+
...rest
|
|
385
|
+
}) => {
|
|
386
|
+
return React.createElement("svg", Object.assign({
|
|
387
|
+
width: _width,
|
|
388
|
+
height: _height,
|
|
389
|
+
viewBox: '0 0 233 232',
|
|
390
|
+
xmlns: 'http://www.w3.org/2000/svg'
|
|
391
|
+
}, rest), React.createElement("rect", {
|
|
392
|
+
width: '233',
|
|
393
|
+
height: '232',
|
|
394
|
+
fill: 'url(#pattern7)'
|
|
395
|
+
}), React.createElement("defs", null, React.createElement("pattern", {
|
|
396
|
+
id: 'pattern7',
|
|
397
|
+
patternContentUnits: 'objectBoundingBox',
|
|
398
|
+
width: '1',
|
|
399
|
+
height: '1'
|
|
400
|
+
}, React.createElement("use", {
|
|
401
|
+
href: '#image0_1_7',
|
|
402
|
+
transform: 'scale(0.00429185 0.00431034)'
|
|
403
|
+
})), React.createElement("image", {
|
|
404
|
+
id: 'image0_1_7',
|
|
405
|
+
width: '233',
|
|
406
|
+
height: '232',
|
|
407
|
+
href: 'data:image/png;base64,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'
|
|
408
|
+
})));
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
const GoodDollar = ({
|
|
412
|
+
width: _width = 37,
|
|
413
|
+
height: _height = 37,
|
|
414
|
+
...rest
|
|
415
|
+
}) => {
|
|
416
|
+
return React.createElement("svg", Object.assign({
|
|
417
|
+
width: _width,
|
|
418
|
+
height: _height,
|
|
419
|
+
viewBox: '0 0 64 64',
|
|
420
|
+
xmlns: 'http://www.w3.org/2000/svg'
|
|
421
|
+
}, rest), React.createElement("rect", {
|
|
422
|
+
width: '64',
|
|
423
|
+
height: '64',
|
|
424
|
+
fill: 'url(#pattern8)'
|
|
425
|
+
}), React.createElement("defs", null, React.createElement("pattern", {
|
|
426
|
+
id: 'pattern8',
|
|
427
|
+
patternContentUnits: 'objectBoundingBox',
|
|
428
|
+
width: '1',
|
|
429
|
+
height: '1'
|
|
430
|
+
}, React.createElement("use", {
|
|
431
|
+
href: '#image0_2_2',
|
|
432
|
+
transform: 'scale(0.015625)'
|
|
433
|
+
})), React.createElement("image", {
|
|
434
|
+
id: 'image0_2_2',
|
|
435
|
+
width: '64',
|
|
436
|
+
height: '64',
|
|
437
|
+
href: 'data:image/png;base64,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'
|
|
438
|
+
})));
|
|
439
|
+
};
|
|
440
|
+
|
|
441
|
+
const Copy = ({
|
|
442
|
+
width: _width = 20,
|
|
443
|
+
height: _height = 20,
|
|
444
|
+
fill: _fill = '#979797',
|
|
445
|
+
...rest
|
|
446
|
+
}) => {
|
|
447
|
+
return React.createElement("svg", Object.assign({
|
|
448
|
+
width: _width,
|
|
449
|
+
height: _height,
|
|
450
|
+
viewBox: '0 0 330 330',
|
|
451
|
+
xmlSpace: 'preserve',
|
|
452
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
453
|
+
fill: _fill
|
|
454
|
+
}, rest), React.createElement("g", null, React.createElement("path", {
|
|
455
|
+
d: 'M35,270h45v45c0,8.284,6.716,15,15,15h200c8.284,0,15-6.716,15-15V75c0-8.284-6.716-15-15-15h-45V15\r\n c0-8.284-6.716-15-15-15H35c-8.284,0-15,6.716-15,15v240C20,263.284,26.716,270,35,270z M280,300H110V90h170V300z M50,30h170v30H95\r\n c-8.284,0-15,6.716-15,15v165H50V30z'
|
|
456
|
+
}), React.createElement("path", {
|
|
457
|
+
d: 'M155,120c-8.284,0-15,6.716-15,15s6.716,15,15,15h80c8.284,0,15-6.716,15-15s-6.716-15-15-15H155z'
|
|
458
|
+
}), React.createElement("path", {
|
|
459
|
+
d: 'M235,180h-80c-8.284,0-15,6.716-15,15s6.716,15,15,15h80c8.284,0,15-6.716,15-15S243.284,180,235,180z'
|
|
460
|
+
}), React.createElement("path", {
|
|
461
|
+
d: 'M235,240h-80c-8.284,0-15,6.716-15,15c0,8.284,6.716,15,15,15h80c8.284,0,15-6.716,15-15C250,246.716,243.284,240,235,240z\r\n '
|
|
641
462
|
})));
|
|
642
463
|
};
|
|
643
464
|
|
|
644
|
-
const ETHEREUM_POOL_ADDRESS = '0x369b28f227C0188478cb05F8467bdd52002EcC4E';
|
|
645
|
-
const POLYGON_POOL_ADDRESS = '0x369b28f227C0188478cb05F8467bdd52002EcC4E';
|
|
646
|
-
const AVAX_POOL_ADDRESS = '0x369b28f227C0188478cb05F8467bdd52002EcC4E';
|
|
647
|
-
const SOLANA_POOL_ADDRESS = 'DRmLANN1qXBELs69gW5upY4qH4iWc23MTcRPjDuzZYuH';
|
|
648
465
|
const SOLANA_USDK_ADDRESS = 'GkbnUDkymDTF4U6Z5wM5kKJn3GmGndMn2rN5typmyUHY';
|
|
649
466
|
const ETHEREUM_USDK_ADDRESS = '0x8BAd07F2445D6390DD94Eca08882b7d515EAbe6C';
|
|
650
467
|
const POLYGON_USDK_ADDRESS = '0x5bd4865a6dEd507dA08ed1aBE3cd971a7e0405D7';
|
|
651
468
|
const AVAX_USDK_ADDRESS = '0x7C043d4D2b505740742dF6Fdb79C5caEe08728a5';
|
|
652
|
-
|
|
469
|
+
const FUSE_GDOLLAR_ADDRESS = '0x79BeecC4b165Ccf547662cB4f7C0e83b3796E5b3';
|
|
470
|
+
const CELO_GDOLLAR_ADDRESS = '0xAB89A70d1Af04ED8badf915Ba1f5b28E9F322624';
|
|
471
|
+
|
|
472
|
+
var ChainName;
|
|
473
|
+
(function (ChainName) {
|
|
474
|
+
ChainName["ETHEREUM"] = "ETH";
|
|
475
|
+
ChainName["POLYGON"] = "POL";
|
|
476
|
+
ChainName["AVALANCHE"] = "AVX";
|
|
477
|
+
ChainName["SOLANA"] = "SOL";
|
|
478
|
+
ChainName["FUSE"] = "FUS";
|
|
479
|
+
ChainName["CELO"] = "CEL";
|
|
480
|
+
})(ChainName || (ChainName = {}));
|
|
481
|
+
var SupportedChainId;
|
|
482
|
+
(function (SupportedChainId) {
|
|
483
|
+
SupportedChainId[SupportedChainId["ETHEREUM"] = 5] = "ETHEREUM";
|
|
484
|
+
SupportedChainId[SupportedChainId["POLYGON"] = 80001] = "POLYGON";
|
|
485
|
+
SupportedChainId[SupportedChainId["AVALANCHE"] = 43113] = "AVALANCHE";
|
|
486
|
+
SupportedChainId[SupportedChainId["FUSE"] = 122] = "FUSE";
|
|
487
|
+
SupportedChainId[SupportedChainId["CELO"] = 42220] = "CELO";
|
|
488
|
+
})(SupportedChainId || (SupportedChainId = {}));
|
|
489
|
+
const CHAIN_NAMES_TO_IDS = {
|
|
490
|
+
[ChainName.ETHEREUM]: SupportedChainId.ETHEREUM,
|
|
491
|
+
[ChainName.POLYGON]: SupportedChainId.POLYGON,
|
|
492
|
+
[ChainName.AVALANCHE]: SupportedChainId.AVALANCHE,
|
|
493
|
+
[ChainName.FUSE]: SupportedChainId.FUSE,
|
|
494
|
+
[ChainName.CELO]: SupportedChainId.CELO
|
|
495
|
+
};
|
|
496
|
+
const CHAIN_NAMES_TO_STRING = {
|
|
497
|
+
[ChainName.ETHEREUM]: 'Ethereum',
|
|
498
|
+
[ChainName.POLYGON]: 'Polygon',
|
|
499
|
+
[ChainName.AVALANCHE]: 'Avalanche',
|
|
500
|
+
[ChainName.FUSE]: 'Fuse',
|
|
501
|
+
[ChainName.CELO]: 'Celo'
|
|
502
|
+
};
|
|
503
|
+
const CHAIN_NAMES_TO_EXPLORER = {
|
|
504
|
+
[ChainName.ETHEREUM]: 'goerli.etherscan.io',
|
|
505
|
+
[ChainName.POLYGON]: 'mumbai.polygonscan.com',
|
|
506
|
+
[ChainName.AVALANCHE]: 'testnet.snowtrace.io',
|
|
507
|
+
[ChainName.FUSE]: 'explorer.fuse.io',
|
|
508
|
+
[ChainName.CELO]: 'explorer.celo.org'
|
|
509
|
+
};
|
|
510
|
+
const CHAIN_NAMES_TO_GECKO_ID = {
|
|
511
|
+
[ChainName.ETHEREUM]: 'ethereum',
|
|
512
|
+
[ChainName.POLYGON]: 'matic-network',
|
|
513
|
+
[ChainName.AVALANCHE]: 'avalanche-2',
|
|
514
|
+
[ChainName.FUSE]: 'fuse-network-token',
|
|
515
|
+
[ChainName.CELO]: 'celo'
|
|
516
|
+
};
|
|
517
|
+
const CHAIN_IDS_TO_NAMES = {
|
|
518
|
+
[SupportedChainId.ETHEREUM]: ChainName.ETHEREUM,
|
|
519
|
+
[SupportedChainId.POLYGON]: ChainName.POLYGON,
|
|
520
|
+
[SupportedChainId.AVALANCHE]: ChainName.AVALANCHE,
|
|
521
|
+
[SupportedChainId.FUSE]: ChainName.FUSE,
|
|
522
|
+
[SupportedChainId.CELO]: ChainName.CELO
|
|
523
|
+
};
|
|
653
524
|
const networkOptions = [{
|
|
654
|
-
id:
|
|
525
|
+
id: ChainName.ETHEREUM,
|
|
526
|
+
label: 'Ethereum',
|
|
655
527
|
icon: Ethereum
|
|
656
528
|
}, {
|
|
657
|
-
id:
|
|
529
|
+
id: ChainName.POLYGON,
|
|
530
|
+
label: 'Polygon',
|
|
658
531
|
icon: Ethereum$1
|
|
659
532
|
}, {
|
|
660
|
-
id:
|
|
533
|
+
id: ChainName.AVALANCHE,
|
|
534
|
+
label: 'Avalanche',
|
|
661
535
|
icon: Avalanche
|
|
662
536
|
}, {
|
|
663
|
-
id: '
|
|
537
|
+
id: 'FUS',
|
|
538
|
+
label: 'Fuse',
|
|
539
|
+
icon: Fuse
|
|
540
|
+
}, {
|
|
541
|
+
id: 'CEL',
|
|
542
|
+
label: 'Celo',
|
|
543
|
+
icon: Celo
|
|
544
|
+
}, {
|
|
545
|
+
id: 'SOL',
|
|
546
|
+
label: 'Solana',
|
|
664
547
|
icon: Solana
|
|
665
548
|
}];
|
|
666
549
|
const getNetworkOption = id => {
|
|
@@ -670,58 +553,367 @@ const getNetworkOption = id => {
|
|
|
670
553
|
};
|
|
671
554
|
const CLUSTER = 'devnet';
|
|
672
555
|
const SOLANA_HOST = clusterApiUrl(CLUSTER);
|
|
673
|
-
const
|
|
674
|
-
const CHAIN_STRING_ETHEREUM = 'Ethereum';
|
|
675
|
-
const CHAIN_STRING_POLYGON = 'Polygon';
|
|
676
|
-
const CHAIN_STRING_AVALANCHE = 'Avalanche';
|
|
677
|
-
const getEvmChainId = chainId => chainId === 'Ethereum' ? GOERLI_ETH_NETWORK_CHAIN_ID : chainId === 'Polygon' ? POLYGON_NETWORK_CHAIN_ID : chainId === 'Avalanche' ? AVAX_NETWORK_CHAIN_ID : undefined;
|
|
678
|
-
const getEvmChainString = chainId => chainId === GOERLI_ETH_NETWORK_CHAIN_ID ? 'Ethereum' : chainId === POLYGON_NETWORK_CHAIN_ID ? 'Polygon' : chainId === AVAX_NETWORK_CHAIN_ID ? 'Avalanche' : 'Unknown';
|
|
679
|
-
const getPoolAddress = chainId => chainId === 'Ethereum' ? ETHEREUM_POOL_ADDRESS : chainId === 'Polygon' ? POLYGON_POOL_ADDRESS : chainId === 'Avalanche' ? AVAX_POOL_ADDRESS : chainId === 'Solana' ? SOLANA_POOL_ADDRESS : undefined;
|
|
680
|
-
const isEVMChain = chainId => chainId === 'Ethereum' || chainId === 'Polygon' || chainId === 'Avalanche';
|
|
681
|
-
const GOERLI_ETH_NETWORK_CHAIN_ID = 5;
|
|
682
|
-
const POLYGON_NETWORK_CHAIN_ID = 80001;
|
|
683
|
-
const AVAX_NETWORK_CHAIN_ID = 43113;
|
|
556
|
+
const isEVMChain = chainId => chainId === ChainName.ETHEREUM || chainId === ChainName.POLYGON || chainId === ChainName.AVALANCHE || chainId === ChainName.FUSE || chainId === ChainName.CELO;
|
|
684
557
|
const COIN_LIST = {
|
|
685
558
|
USDK: {
|
|
686
559
|
symbol: 'USDK',
|
|
560
|
+
label: 'USDK',
|
|
687
561
|
icon: USDT,
|
|
688
|
-
decimals: 6,
|
|
689
562
|
address: {
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
}
|
|
563
|
+
SOL: SOLANA_USDK_ADDRESS,
|
|
564
|
+
ETH: ETHEREUM_USDK_ADDRESS,
|
|
565
|
+
POL: POLYGON_USDK_ADDRESS,
|
|
566
|
+
AVX: AVAX_USDK_ADDRESS
|
|
567
|
+
},
|
|
568
|
+
decimals: 18
|
|
695
569
|
},
|
|
696
|
-
|
|
697
|
-
symbol: '
|
|
698
|
-
|
|
699
|
-
|
|
570
|
+
GDOLLAR: {
|
|
571
|
+
symbol: 'G$',
|
|
572
|
+
label: 'GDOLLAR',
|
|
573
|
+
icon: GoodDollar,
|
|
700
574
|
address: {
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
Polygon: POLYGON_USDK_ADDRESS,
|
|
704
|
-
Avalanche: AVAX_USDK_ADDRESS
|
|
575
|
+
FUS: FUSE_GDOLLAR_ADDRESS,
|
|
576
|
+
CEL: CELO_GDOLLAR_ADDRESS
|
|
705
577
|
}
|
|
706
578
|
}
|
|
707
579
|
};
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
580
|
+
var TransactionStatus;
|
|
581
|
+
(function (TransactionStatus) {
|
|
582
|
+
TransactionStatus["AVAILABLE"] = "Available";
|
|
583
|
+
TransactionStatus["CONFIRMED"] = "Confirmed";
|
|
584
|
+
TransactionStatus["PAID"] = "Paid";
|
|
585
|
+
TransactionStatus["COMPLETED"] = "Completed";
|
|
586
|
+
TransactionStatus["FAILED"] = "FailedToPay";
|
|
587
|
+
TransactionStatus["UNAVAILABLE"] = "UnAvailable";
|
|
588
|
+
TransactionStatus["KEYSIGNED"] = "KeySigned";
|
|
589
|
+
})(TransactionStatus || (TransactionStatus = {}));
|
|
590
|
+
|
|
591
|
+
var FontSizeOptions;
|
|
592
|
+
(function (FontSizeOptions) {
|
|
593
|
+
FontSizeOptions["large"] = "large";
|
|
594
|
+
FontSizeOptions["medium"] = "medium";
|
|
595
|
+
FontSizeOptions["small"] = "small";
|
|
596
|
+
})(FontSizeOptions || (FontSizeOptions = {}));
|
|
597
|
+
var ModeOptions;
|
|
598
|
+
(function (ModeOptions) {
|
|
599
|
+
ModeOptions["payment"] = "payment";
|
|
600
|
+
ModeOptions["bridge"] = "bridge";
|
|
601
|
+
ModeOptions["status"] = "status";
|
|
602
|
+
})(ModeOptions || (ModeOptions = {}));
|
|
603
|
+
var CurrencyOptions;
|
|
604
|
+
(function (CurrencyOptions) {
|
|
605
|
+
CurrencyOptions["USDK"] = "USDK";
|
|
606
|
+
CurrencyOptions["G$"] = "GDOLLAR";
|
|
607
|
+
})(CurrencyOptions || (CurrencyOptions = {}));
|
|
608
|
+
var ThemeOptions;
|
|
609
|
+
(function (ThemeOptions) {
|
|
610
|
+
ThemeOptions["light"] = "light";
|
|
611
|
+
ThemeOptions["dark"] = "dark";
|
|
612
|
+
})(ThemeOptions || (ThemeOptions = {}));
|
|
613
|
+
|
|
614
|
+
const initialState = {
|
|
615
|
+
theme: ThemeOptions.light,
|
|
616
|
+
mode: ModeOptions.bridge,
|
|
617
|
+
originNetwork: 'ETH',
|
|
618
|
+
targetNetwork: 'POL',
|
|
619
|
+
targetAddress: '',
|
|
620
|
+
connectModal: false,
|
|
621
|
+
helpPopup: false,
|
|
622
|
+
hashPopup: false,
|
|
623
|
+
solanaProvider: undefined,
|
|
624
|
+
submitted: false,
|
|
625
|
+
amount: 0,
|
|
626
|
+
isApproving: false,
|
|
627
|
+
isSubmitting: false,
|
|
628
|
+
isConfirming: false,
|
|
629
|
+
feeDeduct: false,
|
|
630
|
+
splAllowance: 0,
|
|
631
|
+
errorHandler: () => void 0,
|
|
632
|
+
closeHandler: () => void 0,
|
|
633
|
+
successHandler: () => void 0,
|
|
634
|
+
serviceFee: -1,
|
|
635
|
+
backendUrl: '',
|
|
636
|
+
nodeProviderQuery: '',
|
|
637
|
+
txId: -1,
|
|
638
|
+
currencyOptions: COIN_LIST['USDK']
|
|
639
|
+
};
|
|
640
|
+
const optionSlice = createSlice({
|
|
641
|
+
name: 'option',
|
|
642
|
+
initialState,
|
|
643
|
+
reducers: {
|
|
644
|
+
init: state => {
|
|
645
|
+
state.submitted = initialState.submitted;
|
|
646
|
+
state.isConfirming = false;
|
|
647
|
+
state.txId = -1;
|
|
648
|
+
state.serviceFee = -1;
|
|
649
|
+
state.amount = 0;
|
|
650
|
+
state.targetAddress = '';
|
|
651
|
+
},
|
|
652
|
+
setTheme: (state, action) => {
|
|
653
|
+
state.theme = action.payload;
|
|
654
|
+
},
|
|
655
|
+
setOriginNetwork: (state, action) => {
|
|
656
|
+
state.originNetwork = action.payload;
|
|
657
|
+
},
|
|
658
|
+
setTargetNetwork: (state, action) => {
|
|
659
|
+
state.targetNetwork = action.payload;
|
|
660
|
+
},
|
|
661
|
+
setTargetAddress: (state, action) => {
|
|
662
|
+
state.targetAddress = action.payload;
|
|
663
|
+
},
|
|
664
|
+
setConnectModal: (state, action) => {
|
|
665
|
+
state.connectModal = action.payload;
|
|
666
|
+
},
|
|
667
|
+
setHelpPopup: (state, action) => {
|
|
668
|
+
state.helpPopup = action.payload;
|
|
669
|
+
},
|
|
670
|
+
setHashPopup: (state, action) => {
|
|
671
|
+
state.hashPopup = action.payload;
|
|
672
|
+
},
|
|
673
|
+
setSolanaProvider: (state, action) => {
|
|
674
|
+
state.solanaProvider = action.payload;
|
|
675
|
+
},
|
|
676
|
+
setSubmitted: (state, action) => {
|
|
677
|
+
state.submitted = action.payload;
|
|
678
|
+
},
|
|
679
|
+
setTransactionOption: (state, action) => {
|
|
680
|
+
state.transactionOption = action.payload;
|
|
681
|
+
},
|
|
682
|
+
setAmount: (state, action) => {
|
|
683
|
+
state.amount = action.payload;
|
|
684
|
+
},
|
|
685
|
+
setApproving: (state, action) => {
|
|
686
|
+
state.isApproving = action.payload;
|
|
687
|
+
},
|
|
688
|
+
setSubmitting: (state, action) => {
|
|
689
|
+
state.isSubmitting = action.payload;
|
|
690
|
+
},
|
|
691
|
+
setSplAllowance: (state, action) => {
|
|
692
|
+
state.splAllowance = action.payload;
|
|
693
|
+
},
|
|
694
|
+
setErrorHandler: (state, action) => {
|
|
695
|
+
state.errorHandler = action.payload;
|
|
696
|
+
},
|
|
697
|
+
setCloseHandler: (state, action) => {
|
|
698
|
+
state.closeHandler = action.payload;
|
|
699
|
+
},
|
|
700
|
+
setSuccessHandler: (state, action) => {
|
|
701
|
+
state.successHandler = action.payload;
|
|
702
|
+
},
|
|
703
|
+
setServiceFee: (state, action) => {
|
|
704
|
+
state.serviceFee = action.payload;
|
|
705
|
+
},
|
|
706
|
+
setMode: (state, action) => {
|
|
707
|
+
state.mode = action.payload;
|
|
708
|
+
},
|
|
709
|
+
setConfirming: (state, action) => {
|
|
710
|
+
state.isConfirming = action.payload;
|
|
711
|
+
},
|
|
712
|
+
setFeeDeduct: (state, action) => {
|
|
713
|
+
state.feeDeduct = action.payload;
|
|
714
|
+
},
|
|
715
|
+
setBackendUrl: (state, action) => {
|
|
716
|
+
state.backendUrl = action.payload;
|
|
717
|
+
},
|
|
718
|
+
setNodeProviderQuery: (state, action) => {
|
|
719
|
+
state.nodeProviderQuery = action.payload;
|
|
720
|
+
},
|
|
721
|
+
setTxId: (state, action) => {
|
|
722
|
+
state.txId = action.payload;
|
|
723
|
+
},
|
|
724
|
+
setCurrencyOptions: (state, action) => {
|
|
725
|
+
state.currencyOptions = action.payload;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
});
|
|
729
|
+
const {
|
|
730
|
+
init,
|
|
731
|
+
setTheme,
|
|
732
|
+
setOriginNetwork,
|
|
733
|
+
setTargetNetwork,
|
|
734
|
+
setTargetAddress,
|
|
735
|
+
setConnectModal,
|
|
736
|
+
setHelpPopup,
|
|
737
|
+
setHashPopup,
|
|
738
|
+
setSolanaProvider,
|
|
739
|
+
setSubmitted,
|
|
740
|
+
setTransactionOption,
|
|
741
|
+
setAmount,
|
|
742
|
+
setApproving,
|
|
743
|
+
setSubmitting,
|
|
744
|
+
setConfirming,
|
|
745
|
+
setSplAllowance,
|
|
746
|
+
setErrorHandler,
|
|
747
|
+
setCloseHandler,
|
|
748
|
+
setSuccessHandler,
|
|
749
|
+
setServiceFee,
|
|
750
|
+
setMode,
|
|
751
|
+
setFeeDeduct,
|
|
752
|
+
setBackendUrl,
|
|
753
|
+
setNodeProviderQuery,
|
|
754
|
+
setTxId,
|
|
755
|
+
setCurrencyOptions
|
|
756
|
+
} = optionSlice.actions;
|
|
757
|
+
var optionReducer = optionSlice.reducer;
|
|
758
|
+
|
|
759
|
+
const store = configureStore({
|
|
760
|
+
reducer: {
|
|
761
|
+
option: optionReducer
|
|
762
|
+
},
|
|
763
|
+
middleware: getDefaultMiddleware => getDefaultMiddleware({
|
|
764
|
+
serializableCheck: false
|
|
765
|
+
})
|
|
766
|
+
});
|
|
767
|
+
|
|
768
|
+
const selectTheme = state => state.option.theme;
|
|
769
|
+
const selectOriginNetwork = state => state.option.originNetwork;
|
|
770
|
+
const selectTargetNetwork = state => state.option.targetNetwork;
|
|
771
|
+
const selectTargetAddress = state => state.option.targetAddress;
|
|
772
|
+
const selectConnectModal = state => state.option.connectModal;
|
|
773
|
+
const selectHelpPopup = state => state.option.helpPopup;
|
|
774
|
+
const selectHashPopup = state => state.option.hashPopup;
|
|
775
|
+
const selectSolanaProvider = state => state.option.solanaProvider;
|
|
776
|
+
const selectSubmitted = state => state.option.submitted;
|
|
777
|
+
const selectTransactionOption = state => state.option.transactionOption;
|
|
778
|
+
const selectAmount = state => state.option.amount;
|
|
779
|
+
const selectApproving = state => state.option.isApproving;
|
|
780
|
+
const selectSubmitting = state => state.option.isSubmitting;
|
|
781
|
+
const selectSplAllowance = state => state.option.splAllowance;
|
|
782
|
+
const selectErrorHandler = state => state.option.errorHandler;
|
|
783
|
+
const selectCloseHandler = state => state.option.closeHandler;
|
|
784
|
+
const selectSuccessHandler = state => state.option.successHandler;
|
|
785
|
+
const selectServiceFee = state => state.option.serviceFee;
|
|
786
|
+
const selectMode = state => state.option.mode;
|
|
787
|
+
const selectConfirming = state => state.option.isConfirming;
|
|
788
|
+
const selectFeeDeduct = state => state.option.feeDeduct;
|
|
789
|
+
const selectBackendUrl = state => state.option.backendUrl;
|
|
790
|
+
const selectNodeProviderQuery = state => state.option.nodeProviderQuery;
|
|
791
|
+
const selectTxId = state => state.option.txId;
|
|
792
|
+
const selectCurrencyOptions = state => state.option.currencyOptions;
|
|
793
|
+
|
|
794
|
+
const EthereumProviderContext = React.createContext({
|
|
795
|
+
connect: () => {},
|
|
796
|
+
disconnect: () => {},
|
|
797
|
+
provider: undefined,
|
|
798
|
+
chainId: undefined,
|
|
799
|
+
signer: undefined,
|
|
800
|
+
signerAddress: undefined,
|
|
801
|
+
providerError: null
|
|
802
|
+
});
|
|
803
|
+
const EthereumProvider = ({
|
|
804
|
+
children
|
|
805
|
+
}) => {
|
|
806
|
+
const errorHandler = useSelector(selectErrorHandler);
|
|
807
|
+
const [providerError, setProviderError] = useState(null);
|
|
808
|
+
const [provider, setProvider] = useState(undefined);
|
|
809
|
+
const [chainId, setChainId] = useState(undefined);
|
|
810
|
+
const [signer, setSigner] = useState(undefined);
|
|
811
|
+
const [signerAddress, setSignerAddress] = useState(undefined);
|
|
812
|
+
const connect = useCallback(() => {
|
|
813
|
+
setProviderError(null);
|
|
814
|
+
detectEthereumProvider().then(detectedProvider => {
|
|
815
|
+
if (detectedProvider) {
|
|
816
|
+
const provider = new ethers.providers.Web3Provider(detectedProvider, 'any');
|
|
817
|
+
provider.send('eth_requestAccounts', []).then(() => {
|
|
818
|
+
setProviderError(null);
|
|
819
|
+
setProvider(provider);
|
|
820
|
+
provider.getNetwork().then(network => {
|
|
821
|
+
setChainId(network.chainId);
|
|
822
|
+
}).catch(e => {
|
|
823
|
+
errorHandler(e);
|
|
824
|
+
setProviderError('An error occurred while getting the network');
|
|
825
|
+
});
|
|
826
|
+
const signer = provider.getSigner();
|
|
827
|
+
setSigner(signer);
|
|
828
|
+
signer.getAddress().then(address => {
|
|
829
|
+
setSignerAddress(address);
|
|
830
|
+
}).catch(e => {
|
|
831
|
+
errorHandler(e);
|
|
832
|
+
setProviderError('An error occurred while getting the signer address');
|
|
833
|
+
});
|
|
834
|
+
if (detectedProvider && detectedProvider.on) {
|
|
835
|
+
detectedProvider.on('chainChanged', chainId => {
|
|
836
|
+
try {
|
|
837
|
+
setChainId(BigNumber.from(chainId).toNumber());
|
|
838
|
+
} catch (e) {
|
|
839
|
+
errorHandler(e);
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
detectedProvider.on('accountsChanged', accounts => {
|
|
843
|
+
try {
|
|
844
|
+
const signer = provider.getSigner();
|
|
845
|
+
setSigner(signer);
|
|
846
|
+
signer.getAddress().then(address => {
|
|
847
|
+
setSignerAddress(address);
|
|
848
|
+
}).catch(e => {
|
|
849
|
+
errorHandler(e);
|
|
850
|
+
setProviderError('An error occurred while getting the signer address');
|
|
851
|
+
});
|
|
852
|
+
} catch (e) {
|
|
853
|
+
errorHandler(e);
|
|
854
|
+
}
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
}).catch(e => {
|
|
858
|
+
errorHandler(e);
|
|
859
|
+
setProviderError('An error occurred while requesting eth accounts');
|
|
860
|
+
});
|
|
861
|
+
} else {
|
|
862
|
+
setProviderError('Please install MetaMask');
|
|
863
|
+
}
|
|
864
|
+
}).catch(e => {
|
|
865
|
+
errorHandler(e);
|
|
866
|
+
setProviderError('Please install MetaMask');
|
|
867
|
+
});
|
|
868
|
+
}, []);
|
|
869
|
+
const disconnect = useCallback(() => {
|
|
870
|
+
setProviderError(null);
|
|
871
|
+
setProvider(undefined);
|
|
872
|
+
setChainId(undefined);
|
|
873
|
+
setSigner(undefined);
|
|
874
|
+
setSignerAddress(undefined);
|
|
875
|
+
}, []);
|
|
876
|
+
const contextValue = useMemo(() => ({
|
|
877
|
+
connect,
|
|
878
|
+
disconnect,
|
|
879
|
+
provider,
|
|
880
|
+
chainId,
|
|
881
|
+
signer,
|
|
882
|
+
signerAddress,
|
|
883
|
+
providerError
|
|
884
|
+
}), [connect, disconnect, provider, chainId, signer, signerAddress, providerError]);
|
|
885
|
+
return React.createElement(EthereumProviderContext.Provider, {
|
|
886
|
+
value: contextValue
|
|
887
|
+
}, children);
|
|
888
|
+
};
|
|
889
|
+
const useEthereumProvider = () => {
|
|
890
|
+
return useContext(EthereumProviderContext);
|
|
891
|
+
};
|
|
892
|
+
|
|
893
|
+
const Loading180Ring = ({
|
|
894
|
+
width,
|
|
895
|
+
height,
|
|
896
|
+
fill: _fill = 'white'
|
|
897
|
+
}) => {
|
|
898
|
+
return React.createElement("svg", {
|
|
899
|
+
width: width,
|
|
900
|
+
height: height,
|
|
901
|
+
fill: _fill,
|
|
902
|
+
viewBox: '0 0 24 24',
|
|
903
|
+
xmlns: 'http://www.w3.org/2000/svg'
|
|
904
|
+
}, React.createElement("path", {
|
|
905
|
+
d: 'M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z'
|
|
906
|
+
}, React.createElement("animateTransform", {
|
|
907
|
+
attributeName: 'transform',
|
|
908
|
+
type: 'rotate',
|
|
909
|
+
dur: '0.75s',
|
|
910
|
+
values: '0 12 12;360 12 12',
|
|
911
|
+
repeatCount: 'indefinite'
|
|
912
|
+
})));
|
|
913
|
+
};
|
|
722
914
|
|
|
723
915
|
const stepInfo = [{
|
|
724
|
-
title: '
|
|
916
|
+
title: 'Initialize'
|
|
725
917
|
}, {
|
|
726
918
|
title: 'Source Transfer'
|
|
727
919
|
}, {
|
|
@@ -729,13 +921,15 @@ const stepInfo = [{
|
|
|
729
921
|
}, {
|
|
730
922
|
title: 'Target Transfer'
|
|
731
923
|
}, {
|
|
732
|
-
title: '
|
|
924
|
+
title: 'Finalize'
|
|
733
925
|
}];
|
|
734
926
|
const Progressbar = ({
|
|
735
927
|
step,
|
|
736
928
|
errorStep,
|
|
737
|
-
setFocus
|
|
929
|
+
setFocus,
|
|
930
|
+
loadingStep
|
|
738
931
|
}) => {
|
|
932
|
+
const theme = useSelector(selectTheme);
|
|
739
933
|
return React.createElement("div", {
|
|
740
934
|
className: 'kima-progressbar'
|
|
741
935
|
}, React.createElement("div", {
|
|
@@ -747,13 +941,15 @@ const Progressbar = ({
|
|
|
747
941
|
className: 'step-indicators'
|
|
748
942
|
}, stepInfo.map((item, index) => React.createElement("div", {
|
|
749
943
|
key: item.title,
|
|
750
|
-
className:
|
|
944
|
+
className: `step ${step >= index ? 'active' : ''}`,
|
|
751
945
|
onClick: () => {
|
|
752
|
-
if (index
|
|
946
|
+
if (index < 4) setFocus(index);
|
|
753
947
|
}
|
|
754
948
|
}, React.createElement("div", {
|
|
755
949
|
className: 'step-info'
|
|
756
|
-
},
|
|
950
|
+
}, index === loadingStep ? React.createElement(Loading180Ring, {
|
|
951
|
+
fill: theme === ThemeOptions.dark ? 'white' : '#5aa0db'
|
|
952
|
+
}) : step >= index ? index === errorStep ? React.createElement(Warning, null) : React.createElement(Check, null) : null, React.createElement("span", null, item.title))))));
|
|
757
953
|
};
|
|
758
954
|
|
|
759
955
|
const ExternalLink = ({
|
|
@@ -782,39 +978,17 @@ const NetworkLabel = ({
|
|
|
782
978
|
className: 'label'
|
|
783
979
|
}, React.createElement("div", {
|
|
784
980
|
className: 'icon-wrapper'
|
|
785
|
-
}, SourceInfo && React.createElement(SourceInfo.icon, null)), SourceInfo === null || SourceInfo === void 0 ? void 0 : SourceInfo.
|
|
981
|
+
}, SourceInfo && React.createElement(SourceInfo.icon, null)), SourceInfo === null || SourceInfo === void 0 ? void 0 : SourceInfo.label), React.createElement(ArrowRight, {
|
|
786
982
|
fill: theme === 'light' ? 'black' : 'white'
|
|
787
983
|
}), React.createElement("div", {
|
|
788
984
|
className: 'label'
|
|
789
985
|
}, React.createElement("div", {
|
|
790
986
|
className: 'icon-wrapper'
|
|
791
|
-
}, TargetInfo && React.createElement(TargetInfo.icon, null)), TargetInfo === null || TargetInfo === void 0 ? void 0 : TargetInfo.
|
|
987
|
+
}, TargetInfo && React.createElement(TargetInfo.icon, null)), TargetInfo === null || TargetInfo === void 0 ? void 0 : TargetInfo.label), hasError && React.createElement("div", {
|
|
792
988
|
className: 'warning-container'
|
|
793
989
|
}, React.createElement(Warning, null), React.createElement("span", null, "1 issue")));
|
|
794
990
|
};
|
|
795
991
|
|
|
796
|
-
const Loading180Ring = ({
|
|
797
|
-
width,
|
|
798
|
-
height,
|
|
799
|
-
fill: _fill = 'white'
|
|
800
|
-
}) => {
|
|
801
|
-
return React.createElement("svg", {
|
|
802
|
-
width: width,
|
|
803
|
-
height: height,
|
|
804
|
-
fill: _fill,
|
|
805
|
-
viewBox: '0 0 24 24',
|
|
806
|
-
xmlns: 'http://www.w3.org/2000/svg'
|
|
807
|
-
}, React.createElement("path", {
|
|
808
|
-
d: 'M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z'
|
|
809
|
-
}, React.createElement("animateTransform", {
|
|
810
|
-
attributeName: 'transform',
|
|
811
|
-
type: 'rotate',
|
|
812
|
-
dur: '0.75s',
|
|
813
|
-
values: '0 12 12;360 12 12',
|
|
814
|
-
repeatCount: 'indefinite'
|
|
815
|
-
})));
|
|
816
|
-
};
|
|
817
|
-
|
|
818
992
|
const PrimaryButton = ({
|
|
819
993
|
className,
|
|
820
994
|
clickHandler,
|
|
@@ -831,39 +1005,186 @@ const PrimaryButton = ({
|
|
|
831
1005
|
fill: 'white'
|
|
832
1006
|
})), children);
|
|
833
1007
|
|
|
834
|
-
const SecondaryButton = ({
|
|
835
|
-
className,
|
|
836
|
-
clickHandler,
|
|
837
|
-
children,
|
|
838
|
-
theme
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
1008
|
+
const SecondaryButton = ({
|
|
1009
|
+
className,
|
|
1010
|
+
clickHandler,
|
|
1011
|
+
children,
|
|
1012
|
+
theme,
|
|
1013
|
+
style
|
|
1014
|
+
}) => React.createElement("button", Object.assign({
|
|
1015
|
+
className: `secondary-button ${className} ${theme}`,
|
|
1016
|
+
onClick: clickHandler
|
|
1017
|
+
}, style), children);
|
|
1018
|
+
|
|
1019
|
+
const fetchWrapper = {
|
|
1020
|
+
get,
|
|
1021
|
+
post
|
|
1022
|
+
};
|
|
1023
|
+
function get(url) {
|
|
1024
|
+
const requestOptions = {
|
|
1025
|
+
method: 'GET'
|
|
1026
|
+
};
|
|
1027
|
+
requestOptions.headers = {
|
|
1028
|
+
'Content-Type': 'application/json'
|
|
1029
|
+
};
|
|
1030
|
+
return fetch(url, requestOptions).then(handleResponse);
|
|
1031
|
+
}
|
|
1032
|
+
function post(url, body) {
|
|
1033
|
+
const requestOptions = {
|
|
1034
|
+
method: 'POST',
|
|
1035
|
+
credentials: 'include',
|
|
1036
|
+
headers: {
|
|
1037
|
+
'Content-Type': 'application/json'
|
|
1038
|
+
},
|
|
1039
|
+
body: body
|
|
1040
|
+
};
|
|
1041
|
+
return fetch(url, requestOptions).then(handleResponse);
|
|
1042
|
+
}
|
|
1043
|
+
function handleResponse(response) {
|
|
1044
|
+
return response.text().then(text => {
|
|
1045
|
+
let data = text;
|
|
1046
|
+
try {
|
|
1047
|
+
data = JSON.parse(text);
|
|
1048
|
+
} catch (error) {
|
|
1049
|
+
data = text;
|
|
1050
|
+
}
|
|
1051
|
+
if (!response.ok) {
|
|
1052
|
+
const error = data || response.statusText;
|
|
1053
|
+
return Promise.reject({
|
|
1054
|
+
status: response.status,
|
|
1055
|
+
error
|
|
1056
|
+
});
|
|
1057
|
+
}
|
|
1058
|
+
return data;
|
|
1059
|
+
});
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
function useNetworkOptions() {
|
|
1063
|
+
const [options, setOptions] = useState(networkOptions);
|
|
1064
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
1065
|
+
useEffect(() => {
|
|
1066
|
+
if (!nodeProviderQuery) return;
|
|
1067
|
+
(async function () {
|
|
1068
|
+
const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getChains`);
|
|
1069
|
+
setOptions(networkOptions.filter(network => networks.Chains.findIndex(id => id === network.id) >= 0));
|
|
1070
|
+
})();
|
|
1071
|
+
}, [nodeProviderQuery]);
|
|
1072
|
+
return useMemo(() => ({
|
|
1073
|
+
options
|
|
1074
|
+
}), [options]);
|
|
1075
|
+
}
|
|
843
1076
|
|
|
844
1077
|
const Network = ({
|
|
845
|
-
|
|
1078
|
+
isOriginChain: _isOriginChain = true
|
|
846
1079
|
}) => {
|
|
847
1080
|
const theme = useSelector(selectTheme);
|
|
1081
|
+
const mode = useSelector(selectMode);
|
|
848
1082
|
const originNetwork = useSelector(selectOriginNetwork);
|
|
849
1083
|
const targetNetwork = useSelector(selectTargetNetwork);
|
|
1084
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
850
1085
|
const dispatch = useDispatch();
|
|
851
|
-
const
|
|
1086
|
+
const sliderRef = useRef();
|
|
1087
|
+
const [availableNetworks, setAvailableNetworks] = useState([]);
|
|
1088
|
+
const {
|
|
1089
|
+
options: networkOptions
|
|
1090
|
+
} = useNetworkOptions();
|
|
1091
|
+
const selectedNetwork = useMemo(() => {
|
|
1092
|
+
const index = networkOptions.findIndex(option => option.id === (_isOriginChain ? originNetwork : targetNetwork));
|
|
1093
|
+
if (index >= 0) return networkOptions[index];
|
|
1094
|
+
return networkOptions[0];
|
|
1095
|
+
}, [originNetwork, targetNetwork, networkOptions]);
|
|
1096
|
+
const networks = useMemo(() => {
|
|
1097
|
+
if (_isOriginChain && mode === ModeOptions.bridge) {
|
|
1098
|
+
return networkOptions;
|
|
1099
|
+
}
|
|
1100
|
+
return networkOptions.filter(network => availableNetworks.findIndex(id => id === network.id) >= 0);
|
|
1101
|
+
}, [networkOptions, _isOriginChain, availableNetworks]);
|
|
1102
|
+
useEffect(() => {
|
|
1103
|
+
if (!nodeProviderQuery || mode !== ModeOptions.bridge) return;
|
|
1104
|
+
(async function () {
|
|
1105
|
+
const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${originNetwork}`);
|
|
1106
|
+
setAvailableNetworks(networks.Chains);
|
|
1107
|
+
if (_isOriginChain) {
|
|
1108
|
+
dispatch(setTargetNetwork(networks.Chains[0]));
|
|
1109
|
+
}
|
|
1110
|
+
})();
|
|
1111
|
+
}, [nodeProviderQuery, originNetwork, mode, _isOriginChain]);
|
|
1112
|
+
useEffect(() => {
|
|
1113
|
+
if (!nodeProviderQuery || mode !== ModeOptions.payment) return;
|
|
1114
|
+
(async function () {
|
|
1115
|
+
const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${targetNetwork}`);
|
|
1116
|
+
setAvailableNetworks(networks.Chains);
|
|
1117
|
+
})();
|
|
1118
|
+
}, [nodeProviderQuery, mode]);
|
|
1119
|
+
useEffect(() => {
|
|
1120
|
+
var _sliderRef$current, _sliderRef$current5, _sliderRef$current6, _sliderRef$current7;
|
|
1121
|
+
let isDown = false;
|
|
1122
|
+
let startX;
|
|
1123
|
+
let scrollLeft;
|
|
1124
|
+
(_sliderRef$current = sliderRef.current) === null || _sliderRef$current === void 0 ? void 0 : _sliderRef$current.addEventListener('mousedown', e => {
|
|
1125
|
+
var _sliderRef$current2, _sliderRef$current3, _sliderRef$current4;
|
|
1126
|
+
isDown = true;
|
|
1127
|
+
(_sliderRef$current2 = sliderRef.current) === null || _sliderRef$current2 === void 0 ? void 0 : _sliderRef$current2.classList.add('active');
|
|
1128
|
+
startX = e.pageX - ((_sliderRef$current3 = sliderRef.current) === null || _sliderRef$current3 === void 0 ? void 0 : _sliderRef$current3.offsetLeft);
|
|
1129
|
+
scrollLeft = (_sliderRef$current4 = sliderRef.current) === null || _sliderRef$current4 === void 0 ? void 0 : _sliderRef$current4.scrollLeft;
|
|
1130
|
+
});
|
|
1131
|
+
(_sliderRef$current5 = sliderRef.current) === null || _sliderRef$current5 === void 0 ? void 0 : _sliderRef$current5.addEventListener('mouseleave', () => {
|
|
1132
|
+
isDown = false;
|
|
1133
|
+
sliderRef.current.classList.remove('active');
|
|
1134
|
+
});
|
|
1135
|
+
(_sliderRef$current6 = sliderRef.current) === null || _sliderRef$current6 === void 0 ? void 0 : _sliderRef$current6.addEventListener('mouseup', () => {
|
|
1136
|
+
isDown = false;
|
|
1137
|
+
sliderRef.current.classList.remove('active');
|
|
1138
|
+
});
|
|
1139
|
+
(_sliderRef$current7 = sliderRef.current) === null || _sliderRef$current7 === void 0 ? void 0 : _sliderRef$current7.addEventListener('mousemove', e => {
|
|
1140
|
+
if (!isDown) return;
|
|
1141
|
+
e.preventDefault();
|
|
1142
|
+
const x = e.pageX - sliderRef.current.offsetLeft;
|
|
1143
|
+
const walk = (x - startX) * 1;
|
|
1144
|
+
sliderRef.current.scrollLeft = scrollLeft - walk;
|
|
1145
|
+
});
|
|
1146
|
+
});
|
|
1147
|
+
const slideLeft = () => {
|
|
1148
|
+
let temp = 0;
|
|
1149
|
+
const timerId = setInterval(() => {
|
|
1150
|
+
sliderRef.current.scrollLeft -= 10;
|
|
1151
|
+
if (temp++ === 20) clearInterval(timerId);
|
|
1152
|
+
}, 10);
|
|
1153
|
+
};
|
|
1154
|
+
const slideRight = () => {
|
|
1155
|
+
let temp = 0;
|
|
1156
|
+
const timerId = setInterval(() => {
|
|
1157
|
+
sliderRef.current.scrollLeft += 10;
|
|
1158
|
+
if (temp++ === 20) clearInterval(timerId);
|
|
1159
|
+
}, 10);
|
|
1160
|
+
};
|
|
852
1161
|
return React.createElement("div", {
|
|
853
1162
|
className: `network-select`
|
|
854
|
-
}, React.createElement("p", null,
|
|
1163
|
+
}, React.createElement("p", null, _isOriginChain ? 'Which network are you funding from?' : 'Which network are you funding to?'), React.createElement("div", {
|
|
1164
|
+
className: 'scroll-button'
|
|
1165
|
+
}, React.createElement(Arrow, {
|
|
1166
|
+
fill: theme === 'light' ? 'black' : 'white',
|
|
1167
|
+
onClick: slideLeft
|
|
1168
|
+
}), React.createElement(Arrow, {
|
|
1169
|
+
fill: theme === 'light' ? 'black' : 'white',
|
|
1170
|
+
onClick: slideRight
|
|
1171
|
+
})), React.createElement("div", {
|
|
1172
|
+
className: 'slide-area hide-scrollbar',
|
|
1173
|
+
ref: sliderRef
|
|
1174
|
+
}, React.createElement("div", {
|
|
855
1175
|
className: 'network-container'
|
|
856
|
-
},
|
|
857
|
-
className: `card-item ${theme} ${network.id ===
|
|
1176
|
+
}, networks.map(network => React.createElement("div", {
|
|
1177
|
+
className: `card-item ${theme} ${network.id === selectedNetwork.id ? 'active' : ''}`,
|
|
858
1178
|
key: network.id,
|
|
859
1179
|
onClick: () => {
|
|
860
|
-
if (
|
|
861
|
-
dispatch(setTargetNetwork(network.id));
|
|
862
|
-
} else {
|
|
1180
|
+
if (_isOriginChain) {
|
|
863
1181
|
dispatch(setOriginNetwork(network.id));
|
|
1182
|
+
} else {
|
|
1183
|
+
dispatch(setTargetNetwork(network.id));
|
|
1184
|
+
dispatch(setServiceFee(-1));
|
|
864
1185
|
}
|
|
865
1186
|
}
|
|
866
|
-
}, React.createElement(network.icon, null), React.createElement("span", null, network.
|
|
1187
|
+
}, React.createElement(network.icon, null), React.createElement("span", null, network.label))))));
|
|
867
1188
|
};
|
|
868
1189
|
|
|
869
1190
|
const WalletSelect = () => {
|
|
@@ -962,25 +1283,33 @@ const WalletSelect = () => {
|
|
|
962
1283
|
|
|
963
1284
|
const Dropdown = ({
|
|
964
1285
|
open,
|
|
965
|
-
|
|
966
|
-
toggleWizard
|
|
1286
|
+
showHashes: _showHashes = false
|
|
967
1287
|
}) => {
|
|
968
1288
|
const theme = useSelector(selectTheme);
|
|
1289
|
+
const dispatch = useDispatch();
|
|
969
1290
|
return React.createElement("div", {
|
|
970
1291
|
className: `dropdown-menu ${theme} ${open ? 'open' : 'closed'}`
|
|
971
1292
|
}, React.createElement("div", {
|
|
972
1293
|
className: 'menu-item'
|
|
973
|
-
}, React.createElement(
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
1294
|
+
}, React.createElement("div", {
|
|
1295
|
+
onClick: () => {
|
|
1296
|
+
dispatch(setHelpPopup(true));
|
|
1297
|
+
}
|
|
1298
|
+
}, "Open Help")), _showHashes && React.createElement("div", {
|
|
1299
|
+
className: 'menu-item'
|
|
1300
|
+
}, React.createElement("div", {
|
|
1301
|
+
onClick: () => {
|
|
1302
|
+
dispatch(setHashPopup(true));
|
|
1303
|
+
}
|
|
1304
|
+
}, "Show Hashes")), React.createElement("div", {
|
|
979
1305
|
className: 'menu-item'
|
|
980
|
-
},
|
|
1306
|
+
}, React.createElement(ExternalLink, {
|
|
1307
|
+
to: 'https://t.me/diversifi'
|
|
1308
|
+
}, "Chat with someone")));
|
|
981
1309
|
};
|
|
982
1310
|
|
|
983
1311
|
const version = "logger/5.7.0";
|
|
1312
|
+
//# sourceMappingURL=_version.js.map
|
|
984
1313
|
|
|
985
1314
|
let _permanentCensorErrors = false;
|
|
986
1315
|
let _censorErrors = false;
|
|
@@ -1330,8 +1659,10 @@ class Logger {
|
|
|
1330
1659
|
}
|
|
1331
1660
|
Logger.errors = ErrorCode;
|
|
1332
1661
|
Logger.levels = LogLevel;
|
|
1662
|
+
//# sourceMappingURL=index.js.map
|
|
1333
1663
|
|
|
1334
1664
|
const version$1 = "bytes/5.7.0";
|
|
1665
|
+
//# sourceMappingURL=_version.js.map
|
|
1335
1666
|
|
|
1336
1667
|
const logger = new Logger(version$1);
|
|
1337
1668
|
///////////////////////////////
|
|
@@ -1442,6 +1773,7 @@ function hexStripZeros(value) {
|
|
|
1442
1773
|
}
|
|
1443
1774
|
return "0x" + value.substring(offset);
|
|
1444
1775
|
}
|
|
1776
|
+
//# sourceMappingURL=index.js.map
|
|
1445
1777
|
|
|
1446
1778
|
const createWalletStatus = (isReady, statusMessage = '', forceNetworkSwitch, walletAddress) => ({
|
|
1447
1779
|
isReady,
|
|
@@ -1462,7 +1794,7 @@ function useIsWalletReady(enableNetworkAutoswitch = false) {
|
|
|
1462
1794
|
const sourceChain = useSelector(selectOriginNetwork);
|
|
1463
1795
|
const hasEthInfo = !!provider && !!signerAddress;
|
|
1464
1796
|
const errorHandler = useSelector(selectErrorHandler);
|
|
1465
|
-
const correctEvmNetwork =
|
|
1797
|
+
const correctEvmNetwork = CHAIN_NAMES_TO_IDS[sourceChain];
|
|
1466
1798
|
const hasCorrectEvmNetwork = evmChainId === correctEvmNetwork;
|
|
1467
1799
|
const forceNetworkSwitch = useCallback(() => {
|
|
1468
1800
|
if (provider && correctEvmNetwork) {
|
|
@@ -1479,7 +1811,7 @@ function useIsWalletReady(enableNetworkAutoswitch = false) {
|
|
|
1479
1811
|
}
|
|
1480
1812
|
}, [provider, correctEvmNetwork, sourceChain]);
|
|
1481
1813
|
return useMemo(() => {
|
|
1482
|
-
if (sourceChain ===
|
|
1814
|
+
if (sourceChain === ChainName.SOLANA && solPK) {
|
|
1483
1815
|
return createWalletStatus(true, undefined, forceNetworkSwitch, solPK.toBase58());
|
|
1484
1816
|
}
|
|
1485
1817
|
if (isEVMChain(sourceChain) && hasEthInfo && signerAddress) {
|
|
@@ -1501,6 +1833,8 @@ const getShortenedAddress = address => {
|
|
|
1501
1833
|
return `${address === null || address === void 0 ? void 0 : address.substring(0, is0x(address) ? 6 : 3)}...${address === null || address === void 0 ? void 0 : address.substr(address.length - (is0x(address) ? 4 : 3))}`;
|
|
1502
1834
|
};
|
|
1503
1835
|
|
|
1836
|
+
const connectWalletBtn = 'connect-wallet-btn';
|
|
1837
|
+
|
|
1504
1838
|
const WalletButton = ({
|
|
1505
1839
|
errorBelow: _errorBelow = false
|
|
1506
1840
|
}) => {
|
|
@@ -1519,33 +1853,38 @@ const WalletButton = ({
|
|
|
1519
1853
|
statusMessage,
|
|
1520
1854
|
walletAddress
|
|
1521
1855
|
} = useIsWalletReady(true);
|
|
1856
|
+
useEffect(() => {
|
|
1857
|
+
if (!connect) return;
|
|
1858
|
+
connect();
|
|
1859
|
+
}, [connect]);
|
|
1522
1860
|
const handleClick = () => {
|
|
1523
1861
|
if (isReady) {
|
|
1524
|
-
if (selectedNetwork ===
|
|
1862
|
+
if (selectedNetwork === ChainName.SOLANA) {
|
|
1525
1863
|
disconnectSolana();
|
|
1526
1864
|
} else {
|
|
1527
1865
|
disconnectEVM();
|
|
1528
1866
|
}
|
|
1529
1867
|
return;
|
|
1530
1868
|
}
|
|
1531
|
-
if (selectedNetwork ===
|
|
1869
|
+
if (selectedNetwork === ChainName.SOLANA) {
|
|
1532
1870
|
dispatch(setConnectModal(true));
|
|
1533
1871
|
return;
|
|
1534
1872
|
}
|
|
1535
1873
|
connect();
|
|
1536
1874
|
};
|
|
1537
1875
|
return React.createElement("div", {
|
|
1538
|
-
className: `wallet-button ${theme} ${_errorBelow ? 'error-below' : ''}
|
|
1876
|
+
className: `wallet-button ${theme} ${_errorBelow ? 'error-below' : ''}`,
|
|
1877
|
+
"data-testid": connectWalletBtn
|
|
1539
1878
|
}, React.createElement(PrimaryButton, {
|
|
1540
1879
|
clickHandler: handleClick
|
|
1541
|
-
}, isReady ? `Disconnect ${getShortenedAddress(walletAddress || '')}` : '
|
|
1880
|
+
}, isReady ? `Disconnect ${getShortenedAddress(walletAddress || '')}` : 'Wallet'), !isReady && React.createElement("p", {
|
|
1542
1881
|
className: 'provider-error'
|
|
1543
1882
|
}, statusMessage));
|
|
1544
1883
|
};
|
|
1545
1884
|
|
|
1546
1885
|
const CoinDropdown = () => {
|
|
1547
1886
|
const [collapsed, setCollapsed] = useState(true);
|
|
1548
|
-
const selectedCoin =
|
|
1887
|
+
const selectedCoin = useSelector(selectCurrencyOptions);
|
|
1549
1888
|
const theme = useSelector(selectTheme);
|
|
1550
1889
|
return React.createElement("div", {
|
|
1551
1890
|
className: `coin-dropdown ${theme} ${collapsed ? 'collapsed' : ''}`,
|
|
@@ -1555,6 +1894,69 @@ const CoinDropdown = () => {
|
|
|
1555
1894
|
}, React.createElement(selectedCoin.icon, null), selectedCoin.symbol));
|
|
1556
1895
|
};
|
|
1557
1896
|
|
|
1897
|
+
const NetworkDropdown = ({
|
|
1898
|
+
isOriginChain: _isOriginChain = true
|
|
1899
|
+
}) => {
|
|
1900
|
+
const [collapsed, setCollapsed] = useState(true);
|
|
1901
|
+
const [availableNetworks, setAvailableNetworks] = useState([]);
|
|
1902
|
+
const mode = useSelector(selectMode);
|
|
1903
|
+
const originNetwork = useSelector(selectOriginNetwork);
|
|
1904
|
+
const targetNetwork = useSelector(selectTargetNetwork);
|
|
1905
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
1906
|
+
const {
|
|
1907
|
+
options: networkOptions
|
|
1908
|
+
} = useNetworkOptions();
|
|
1909
|
+
const selectedNetwork = useMemo(() => {
|
|
1910
|
+
const index = networkOptions.findIndex(option => option.id === (_isOriginChain ? originNetwork : targetNetwork));
|
|
1911
|
+
if (index >= 0) return networkOptions[index];
|
|
1912
|
+
return networkOptions[0];
|
|
1913
|
+
}, [originNetwork, targetNetwork, networkOptions]);
|
|
1914
|
+
const networks = useMemo(() => {
|
|
1915
|
+
if (_isOriginChain && mode === ModeOptions.bridge) {
|
|
1916
|
+
return networkOptions;
|
|
1917
|
+
}
|
|
1918
|
+
return networkOptions.filter(network => availableNetworks.findIndex(id => id === network.id) >= 0);
|
|
1919
|
+
}, [networkOptions, _isOriginChain, availableNetworks]);
|
|
1920
|
+
const theme = useSelector(selectTheme);
|
|
1921
|
+
const dispatch = useDispatch();
|
|
1922
|
+
useEffect(() => {
|
|
1923
|
+
if (!nodeProviderQuery || mode !== ModeOptions.bridge) return;
|
|
1924
|
+
(async function () {
|
|
1925
|
+
const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${originNetwork}`);
|
|
1926
|
+
setAvailableNetworks(networks.Chains);
|
|
1927
|
+
if (_isOriginChain) {
|
|
1928
|
+
dispatch(setTargetNetwork(networks.Chains[0]));
|
|
1929
|
+
}
|
|
1930
|
+
})();
|
|
1931
|
+
}, [nodeProviderQuery, originNetwork, mode, _isOriginChain]);
|
|
1932
|
+
useEffect(() => {
|
|
1933
|
+
if (!nodeProviderQuery || mode !== ModeOptions.payment) return;
|
|
1934
|
+
(async function () {
|
|
1935
|
+
const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${targetNetwork}`);
|
|
1936
|
+
setAvailableNetworks(networks.Chains);
|
|
1937
|
+
})();
|
|
1938
|
+
}, [nodeProviderQuery, mode]);
|
|
1939
|
+
return React.createElement("div", {
|
|
1940
|
+
className: `network-dropdown ${theme} ${collapsed ? 'collapsed' : ''}`,
|
|
1941
|
+
onClick: () => setCollapsed(prev => !prev)
|
|
1942
|
+
}, React.createElement("div", {
|
|
1943
|
+
className: 'network-wrapper'
|
|
1944
|
+
}, React.createElement(selectedNetwork.icon, null), selectedNetwork.label), React.createElement("div", {
|
|
1945
|
+
className: `network-menu custom-scrollbar ${theme} ${collapsed ? 'collapsed' : ''}`
|
|
1946
|
+
}, networks.map(network => React.createElement("div", {
|
|
1947
|
+
className: 'network-menu-item',
|
|
1948
|
+
key: network.label,
|
|
1949
|
+
onClick: async () => {
|
|
1950
|
+
if (_isOriginChain) {
|
|
1951
|
+
dispatch(setOriginNetwork(network.id));
|
|
1952
|
+
} else {
|
|
1953
|
+
dispatch(setTargetNetwork(network.id));
|
|
1954
|
+
dispatch(setServiceFee(-1));
|
|
1955
|
+
}
|
|
1956
|
+
}
|
|
1957
|
+
}, React.createElement(network.icon, null), React.createElement("p", null, network.label)))));
|
|
1958
|
+
};
|
|
1959
|
+
|
|
1558
1960
|
const formatterInt = new Intl.NumberFormat('en-US', {
|
|
1559
1961
|
maximumFractionDigits: 0
|
|
1560
1962
|
});
|
|
@@ -1562,7 +1964,9 @@ const formatterFloat = new Intl.NumberFormat('en-US', {
|
|
|
1562
1964
|
maximumFractionDigits: 3
|
|
1563
1965
|
});
|
|
1564
1966
|
|
|
1565
|
-
const ConfirmDetails = (
|
|
1967
|
+
const ConfirmDetails = ({
|
|
1968
|
+
isApproved
|
|
1969
|
+
}) => {
|
|
1566
1970
|
const feeDeduct = useSelector(selectFeeDeduct);
|
|
1567
1971
|
const mode = useSelector(selectMode);
|
|
1568
1972
|
const theme = useSelector(selectTheme);
|
|
@@ -1576,230 +1980,312 @@ const ConfirmDetails = () => {
|
|
|
1576
1980
|
walletAddress
|
|
1577
1981
|
} = useIsWalletReady();
|
|
1578
1982
|
const originNetworkOption = useMemo(() => networkOptions.filter(network => network.id === originNetwork)[0], [networkOptions, originNetwork]);
|
|
1579
|
-
const
|
|
1983
|
+
const targetNetworkOption = useMemo(() => networkOptions.filter(network => network.id === (mode === ModeOptions.payment ? transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain : targetNetwork))[0], [networkOptions, originNetwork]);
|
|
1984
|
+
const selectedCoin = useSelector(selectCurrencyOptions);
|
|
1580
1985
|
return React.createElement("div", {
|
|
1581
1986
|
className: `confirm-details ${theme}`
|
|
1582
|
-
}, React.createElement("p", null, "
|
|
1987
|
+
}, React.createElement("p", null, "Step ", isApproved ? '2' : '1', "/2\u00A0\u00A0\u00A0", isApproved ? 'Submit trasaction' : 'Approval'), React.createElement("div", {
|
|
1583
1988
|
className: 'detail-item'
|
|
1584
1989
|
}, React.createElement("span", {
|
|
1585
1990
|
className: 'label'
|
|
1586
|
-
}, "
|
|
1991
|
+
}, "Source wallet:"), React.createElement("p", null, getShortenedAddress(walletAddress || '')), React.createElement("span", {
|
|
1587
1992
|
className: 'kima-card-network-label'
|
|
1588
|
-
}, React.createElement(originNetworkOption.icon, null),
|
|
1993
|
+
}, React.createElement(originNetworkOption.icon, null), originNetworkOption.label)), React.createElement("div", {
|
|
1589
1994
|
className: 'detail-item'
|
|
1590
1995
|
}, React.createElement("span", {
|
|
1591
1996
|
className: 'label'
|
|
1592
|
-
}, "Amount:"), React.createElement("p", null, formatterFloat.format(feeDeduct ? amount : amount + serviceFee
|
|
1997
|
+
}, "Amount:"), React.createElement("p", null, formatterFloat.format(feeDeduct ? amount : amount + serviceFee), ' ', selectedCoin.symbol)), React.createElement("div", {
|
|
1593
1998
|
className: 'detail-item'
|
|
1594
1999
|
}, React.createElement("span", {
|
|
1595
2000
|
className: 'label'
|
|
1596
|
-
}, "Target:"), React.createElement("p", null, getShortenedAddress((mode === ModeOptions.payment ? transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetAddress : targetAddress) || '')), React.createElement("span", {
|
|
2001
|
+
}, "Target wallet:"), React.createElement("p", null, getShortenedAddress((mode === ModeOptions.payment ? transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetAddress : targetAddress) || '')), React.createElement("span", {
|
|
1597
2002
|
className: 'kima-card-network-label'
|
|
1598
|
-
}, React.createElement(
|
|
2003
|
+
}, React.createElement(targetNetworkOption.icon, null), targetNetworkOption.label)));
|
|
1599
2004
|
};
|
|
1600
2005
|
|
|
1601
|
-
const
|
|
2006
|
+
const AddressInput = () => {
|
|
1602
2007
|
const dispatch = useDispatch();
|
|
2008
|
+
const targetAddress = useSelector(selectTargetAddress);
|
|
2009
|
+
return React.createElement("input", {
|
|
2010
|
+
className: 'kima-address-input',
|
|
2011
|
+
type: 'text',
|
|
2012
|
+
value: targetAddress,
|
|
2013
|
+
onChange: e => dispatch(setTargetAddress(e.target.value))
|
|
2014
|
+
});
|
|
2015
|
+
};
|
|
2016
|
+
|
|
2017
|
+
const CopyButton = ({
|
|
2018
|
+
text
|
|
2019
|
+
}) => {
|
|
2020
|
+
const [copyClicked, setCopyClicked] = useState(false);
|
|
2021
|
+
useEffect(() => {
|
|
2022
|
+
if (!copyClicked) return;
|
|
2023
|
+
setTimeout(() => {
|
|
2024
|
+
setCopyClicked(false);
|
|
2025
|
+
}, 2000);
|
|
2026
|
+
}, [copyClicked]);
|
|
2027
|
+
return React.createElement("span", {
|
|
2028
|
+
className: 'copy-btn',
|
|
2029
|
+
onClick: () => {
|
|
2030
|
+
setCopyClicked(true);
|
|
2031
|
+
navigator.clipboard.writeText(text);
|
|
2032
|
+
}
|
|
2033
|
+
}, copyClicked ? React.createElement(Check, {
|
|
2034
|
+
fill: '#979797'
|
|
2035
|
+
}) : React.createElement(Copy, null));
|
|
2036
|
+
};
|
|
2037
|
+
|
|
2038
|
+
const stepInfo$1 = [{
|
|
2039
|
+
title: 'Initialize'
|
|
2040
|
+
}, {
|
|
2041
|
+
title: 'Source Transfer'
|
|
2042
|
+
}, {
|
|
2043
|
+
title: 'Validation'
|
|
2044
|
+
}, {
|
|
2045
|
+
title: 'Target Transfer'
|
|
2046
|
+
}, {
|
|
2047
|
+
title: 'Finalize'
|
|
2048
|
+
}];
|
|
2049
|
+
const StepBox = ({
|
|
2050
|
+
step,
|
|
2051
|
+
errorStep,
|
|
2052
|
+
loadingStep,
|
|
2053
|
+
data
|
|
2054
|
+
}) => {
|
|
1603
2055
|
const theme = useSelector(selectTheme);
|
|
1604
|
-
const connectModal = useSelector(selectConnectModal);
|
|
1605
|
-
const selectedProvider = useSelector(selectSolanaProvider);
|
|
1606
|
-
const {
|
|
1607
|
-
select
|
|
1608
|
-
} = useWallet();
|
|
1609
|
-
const handleConnect = () => {
|
|
1610
|
-
select(selectedProvider);
|
|
1611
|
-
dispatch(setConnectModal(false));
|
|
1612
|
-
};
|
|
1613
2056
|
return React.createElement("div", {
|
|
1614
|
-
className:
|
|
2057
|
+
className: 'kima-stepbox'
|
|
2058
|
+
}, React.createElement("div", {
|
|
2059
|
+
className: 'content-wrapper'
|
|
2060
|
+
}, stepInfo$1.map((item, index) => React.createElement("div", {
|
|
2061
|
+
key: item.title,
|
|
2062
|
+
className: 'step-item'
|
|
2063
|
+
}, React.createElement("div", {
|
|
2064
|
+
className: 'info-item'
|
|
2065
|
+
}, index === loadingStep ? React.createElement(Loading180Ring, {
|
|
2066
|
+
fill: theme === ThemeOptions.dark ? 'white' : '#5aa0db'
|
|
2067
|
+
}) : step >= index ? index === errorStep ? React.createElement(Warning, null) : React.createElement(Check, null) : null, React.createElement("p", null, item.title)), index === 0 ? React.createElement("div", {
|
|
2068
|
+
className: 'info-item'
|
|
2069
|
+
}, React.createElement("p", null, "Kima TX ID:", ' ', React.createElement(ExternalLink, {
|
|
2070
|
+
to: 'https://explorer.kima.finance/transactions/718ABEE14755C1ACA617607F9353A55013EF855B0EA6E92EFD31A2F50A362524'
|
|
2071
|
+
}, "718A...2524"), React.createElement(CopyButton, {
|
|
2072
|
+
text: '718ABEE14755C1ACA617607F9353A55013EF855B0EA6E92EFD31A2F50A362524'
|
|
2073
|
+
}))) : null, index === 1 && data !== null && data !== void 0 && data.tssPullHash ? React.createElement("div", {
|
|
2074
|
+
className: 'info-item'
|
|
2075
|
+
}, React.createElement("p", null, CHAIN_NAMES_TO_STRING[(data === null || data === void 0 ? void 0 : data.sourceChain) || ChainName.ETHEREUM], ' ', "TX ID:", React.createElement(ExternalLink, {
|
|
2076
|
+
to: `https://${CHAIN_NAMES_TO_EXPLORER[(data === null || data === void 0 ? void 0 : data.sourceChain) || ChainName.ETHEREUM]}/tx/${data === null || data === void 0 ? void 0 : data.tssPullHash}`
|
|
2077
|
+
}, getShortenedAddress((data === null || data === void 0 ? void 0 : data.tssPullHash) || '')), React.createElement(CopyButton, {
|
|
2078
|
+
text: (data === null || data === void 0 ? void 0 : data.tssPullHash) || ''
|
|
2079
|
+
}))) : null, index === 3 && data !== null && data !== void 0 && data.tssReleaseHash ? React.createElement("div", {
|
|
2080
|
+
className: 'info-item'
|
|
2081
|
+
}, React.createElement("p", null, CHAIN_NAMES_TO_STRING[(data === null || data === void 0 ? void 0 : data.targetChain) || ChainName.ETHEREUM], ' ', "TX ID:", React.createElement(ExternalLink, {
|
|
2082
|
+
to: `https://${CHAIN_NAMES_TO_EXPLORER[(data === null || data === void 0 ? void 0 : data.targetChain) || ChainName.ETHEREUM]}/tx/${data === null || data === void 0 ? void 0 : data.tssReleaseHash}`
|
|
2083
|
+
}, getShortenedAddress((data === null || data === void 0 ? void 0 : data.tssReleaseHash) || '')), React.createElement(CopyButton, {
|
|
2084
|
+
text: (data === null || data === void 0 ? void 0 : data.tssReleaseHash) || ''
|
|
2085
|
+
}))) : null))));
|
|
2086
|
+
};
|
|
2087
|
+
|
|
2088
|
+
const HelpPopup = () => {
|
|
2089
|
+
const dispatch = useDispatch();
|
|
2090
|
+
const theme = useSelector(selectTheme);
|
|
2091
|
+
const helpPopup = useSelector(selectHelpPopup);
|
|
2092
|
+
return React.createElement("div", {
|
|
2093
|
+
className: `kima-modal help-popup ${theme} ${helpPopup ? 'open' : ''}`
|
|
2094
|
+
}, React.createElement("div", {
|
|
2095
|
+
className: 'modal-overlay',
|
|
2096
|
+
onClick: () => {
|
|
2097
|
+
dispatch(setHelpPopup(false));
|
|
2098
|
+
}
|
|
2099
|
+
}), React.createElement("div", {
|
|
2100
|
+
className: 'modal-content-container'
|
|
1615
2101
|
}, React.createElement("div", {
|
|
1616
2102
|
className: 'kima-card-header'
|
|
1617
2103
|
}, React.createElement("div", {
|
|
1618
2104
|
className: 'topbar'
|
|
1619
2105
|
}, React.createElement("div", {
|
|
1620
2106
|
className: 'title'
|
|
1621
|
-
}, React.createElement("h3", null, "
|
|
2107
|
+
}, React.createElement("h3", null, "Help")), React.createElement("div", {
|
|
1622
2108
|
className: 'control-buttons'
|
|
1623
2109
|
}, React.createElement("button", {
|
|
1624
2110
|
className: 'icon-button',
|
|
1625
|
-
onClick: () => dispatch(
|
|
2111
|
+
onClick: () => dispatch(setHelpPopup(false))
|
|
1626
2112
|
}, React.createElement(Cross, {
|
|
1627
2113
|
fill: theme === 'light' ? 'black' : 'white'
|
|
1628
2114
|
}))))), React.createElement("div", {
|
|
1629
2115
|
className: 'modal-content'
|
|
1630
|
-
}, React.createElement(
|
|
1631
|
-
className: 'kima-card-footer',
|
|
1632
|
-
style: {
|
|
1633
|
-
justifyContent: 'flex-end',
|
|
1634
|
-
marginTop: '2em'
|
|
1635
|
-
}
|
|
1636
|
-
}, React.createElement(SecondaryButton, {
|
|
1637
|
-
clickHandler: () => dispatch(setConnectModal(false)),
|
|
1638
|
-
theme: theme
|
|
1639
|
-
}, "Cancel"), React.createElement(PrimaryButton, {
|
|
1640
|
-
clickHandler: handleConnect
|
|
1641
|
-
}, "Connect")));
|
|
1642
|
-
};
|
|
1643
|
-
|
|
1644
|
-
const AddressInput = () => {
|
|
1645
|
-
const dispatch = useDispatch();
|
|
1646
|
-
const targetAddress = useSelector(selectTargetAddress);
|
|
1647
|
-
return React.createElement("input", {
|
|
1648
|
-
className: 'kima-address-input',
|
|
1649
|
-
type: 'text',
|
|
1650
|
-
value: targetAddress,
|
|
1651
|
-
onChange: e => dispatch(setTargetAddress(e.target.value))
|
|
1652
|
-
});
|
|
2116
|
+
}, React.createElement("p", null, "The SDK enables dApp developers to process Kima transactions on behalf of their clients. It will include visual and API components that communicate with the Kima RPC nodes. The developers can pick and choose the right level of integration, based on their usage scenario."))));
|
|
1653
2117
|
};
|
|
1654
2118
|
|
|
1655
|
-
const
|
|
1656
|
-
|
|
1657
|
-
checked,
|
|
1658
|
-
setCheck
|
|
2119
|
+
const HashPopup = ({
|
|
2120
|
+
data
|
|
1659
2121
|
}) => {
|
|
2122
|
+
const dispatch = useDispatch();
|
|
1660
2123
|
const theme = useSelector(selectTheme);
|
|
2124
|
+
const hashPopup = useSelector(selectHashPopup);
|
|
1661
2125
|
return React.createElement("div", {
|
|
1662
|
-
className:
|
|
2126
|
+
className: `kima-modal hash-popup ${theme} ${hashPopup ? 'open' : ''}`
|
|
1663
2127
|
}, React.createElement("div", {
|
|
1664
|
-
className:
|
|
1665
|
-
onClick: () =>
|
|
1666
|
-
|
|
1667
|
-
}
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
2128
|
+
className: 'modal-overlay',
|
|
2129
|
+
onClick: () => {
|
|
2130
|
+
dispatch(setHashPopup(false));
|
|
2131
|
+
}
|
|
2132
|
+
}), React.createElement("div", {
|
|
2133
|
+
className: 'modal-content-container'
|
|
2134
|
+
}, React.createElement("div", {
|
|
2135
|
+
className: 'kima-card-header'
|
|
2136
|
+
}, React.createElement("div", {
|
|
2137
|
+
className: 'topbar'
|
|
2138
|
+
}, React.createElement("div", {
|
|
2139
|
+
className: 'title'
|
|
2140
|
+
}, React.createElement("h3", null, "Transaction Hashes")), React.createElement("div", {
|
|
2141
|
+
className: 'control-buttons'
|
|
2142
|
+
}, React.createElement("button", {
|
|
2143
|
+
className: 'icon-button',
|
|
2144
|
+
onClick: () => dispatch(setHashPopup(false))
|
|
2145
|
+
}, React.createElement(Cross, {
|
|
2146
|
+
fill: theme === 'light' ? 'black' : 'white'
|
|
2147
|
+
}))))), React.createElement("div", {
|
|
2148
|
+
className: 'modal-content'
|
|
2149
|
+
}, React.createElement("div", {
|
|
2150
|
+
className: 'hash-container'
|
|
2151
|
+
}, React.createElement("div", {
|
|
2152
|
+
className: 'hash-item'
|
|
2153
|
+
}, React.createElement("span", null, "Kima tx:"), React.createElement(ExternalLink, {
|
|
2154
|
+
to: 'https://explorer.kima.finance/transactions/718ABEE14755C1ACA617607F9353A55013EF855B0EA6E92EFD31A2F50A362524'
|
|
2155
|
+
}, "718A...2524")), React.createElement("div", {
|
|
2156
|
+
className: 'hash-item'
|
|
2157
|
+
}, React.createElement("span", null, "Source tx:"), React.createElement(ExternalLink, {
|
|
2158
|
+
to: `https://${CHAIN_NAMES_TO_EXPLORER[(data === null || data === void 0 ? void 0 : data.sourceChain) || ChainName.ETHEREUM]}/tx/${data === null || data === void 0 ? void 0 : data.tssPullHash}`
|
|
2159
|
+
}, getShortenedAddress((data === null || data === void 0 ? void 0 : data.tssPullHash) || ''))), React.createElement("div", {
|
|
2160
|
+
className: 'hash-item'
|
|
2161
|
+
}, React.createElement("span", null, "Target tx:"), React.createElement(ExternalLink, {
|
|
2162
|
+
to: `https://${CHAIN_NAMES_TO_EXPLORER[(data === null || data === void 0 ? void 0 : data.targetChain) || ChainName.ETHEREUM]}/tx/${data === null || data === void 0 ? void 0 : data.tssReleaseHash}`
|
|
2163
|
+
}, getShortenedAddress((data === null || data === void 0 ? void 0 : data.tssReleaseHash) || '')))))));
|
|
1679
2164
|
};
|
|
1680
2165
|
|
|
1681
|
-
const
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
const
|
|
2166
|
+
const WalletConnectModal = () => {
|
|
2167
|
+
const dispatch = useDispatch();
|
|
2168
|
+
const theme = useSelector(selectTheme);
|
|
2169
|
+
const connectModal = useSelector(selectConnectModal);
|
|
2170
|
+
const selectedProvider = useSelector(selectSolanaProvider);
|
|
2171
|
+
const {
|
|
2172
|
+
select
|
|
2173
|
+
} = useWallet();
|
|
2174
|
+
const handleConnect = () => {
|
|
2175
|
+
select(selectedProvider);
|
|
2176
|
+
dispatch(setConnectModal(false));
|
|
2177
|
+
};
|
|
1687
2178
|
return React.createElement("div", {
|
|
1688
|
-
className:
|
|
2179
|
+
className: `kima-modal wallet-connect ${theme} ${connectModal ? 'open' : ''}`
|
|
1689
2180
|
}, React.createElement("div", {
|
|
1690
|
-
className:
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
opacity: `${focus < 0 ? 0 : 1}`
|
|
1694
|
-
}
|
|
2181
|
+
className: 'modal-overlay'
|
|
2182
|
+
}), React.createElement("div", {
|
|
2183
|
+
className: 'modal-content-container'
|
|
1695
2184
|
}, React.createElement("div", {
|
|
1696
|
-
className: '
|
|
1697
|
-
},
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
2185
|
+
className: 'kima-card-header'
|
|
2186
|
+
}, React.createElement("div", {
|
|
2187
|
+
className: 'topbar'
|
|
2188
|
+
}, React.createElement("div", {
|
|
2189
|
+
className: 'title'
|
|
2190
|
+
}, React.createElement("h3", null, "Connect Wallet")), React.createElement("div", {
|
|
2191
|
+
className: 'control-buttons'
|
|
2192
|
+
}, React.createElement("button", {
|
|
2193
|
+
className: 'icon-button',
|
|
2194
|
+
onClick: () => dispatch(setConnectModal(false))
|
|
2195
|
+
}, React.createElement(Cross, {
|
|
2196
|
+
fill: theme === 'light' ? 'black' : 'white'
|
|
2197
|
+
}))))), React.createElement("div", {
|
|
2198
|
+
className: 'modal-content'
|
|
2199
|
+
}, React.createElement(WalletSelect, null)), React.createElement("div", {
|
|
2200
|
+
className: 'kima-card-footer',
|
|
1702
2201
|
style: {
|
|
1703
|
-
|
|
2202
|
+
justifyContent: 'flex-end',
|
|
2203
|
+
marginTop: '2em'
|
|
1704
2204
|
}
|
|
1705
|
-
}
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
2205
|
+
}, React.createElement(SecondaryButton, {
|
|
2206
|
+
clickHandler: () => dispatch(setConnectModal(false)),
|
|
2207
|
+
theme: theme
|
|
2208
|
+
}, "Cancel"), React.createElement(PrimaryButton, {
|
|
2209
|
+
clickHandler: handleConnect
|
|
2210
|
+
}, "Connect"))));
|
|
1711
2211
|
};
|
|
1712
|
-
function get(url) {
|
|
1713
|
-
const requestOptions = {
|
|
1714
|
-
method: 'GET'
|
|
1715
|
-
};
|
|
1716
|
-
requestOptions.headers = {
|
|
1717
|
-
'Content-Type': 'application/json'
|
|
1718
|
-
};
|
|
1719
|
-
return fetch(url, requestOptions).then(handleResponse);
|
|
1720
|
-
}
|
|
1721
|
-
function post(url, body) {
|
|
1722
|
-
const requestOptions = {
|
|
1723
|
-
method: 'POST',
|
|
1724
|
-
credentials: 'include',
|
|
1725
|
-
headers: {
|
|
1726
|
-
'Content-Type': 'application/json'
|
|
1727
|
-
},
|
|
1728
|
-
|
|
1729
|
-
body: body
|
|
1730
|
-
};
|
|
1731
|
-
return fetch(url, requestOptions).then(handleResponse);
|
|
1732
|
-
}
|
|
1733
|
-
function handleResponse(response) {
|
|
1734
|
-
return response.text().then(text => {
|
|
1735
|
-
let data = text;
|
|
1736
|
-
try {
|
|
1737
|
-
data = JSON.parse(text);
|
|
1738
|
-
} catch (error) {
|
|
1739
|
-
data = text;
|
|
1740
|
-
}
|
|
1741
|
-
if (!response.ok) {
|
|
1742
|
-
const error = data || response.statusText;
|
|
1743
|
-
return Promise.reject({
|
|
1744
|
-
status: response.status,
|
|
1745
|
-
error
|
|
1746
|
-
});
|
|
1747
|
-
}
|
|
1748
|
-
return data;
|
|
1749
|
-
});
|
|
1750
|
-
}
|
|
1751
2212
|
|
|
1752
2213
|
const TransactionWidget = ({
|
|
1753
2214
|
theme: _theme = ThemeOptions.light,
|
|
1754
2215
|
fontSize: _fontSize = FontSizeOptions.medium
|
|
1755
2216
|
}) => {
|
|
1756
|
-
const dispatch = useDispatch();
|
|
1757
2217
|
const [step, setStep] = useState(0);
|
|
1758
2218
|
const [focus, setFocus] = useState(-1);
|
|
1759
2219
|
const [errorStep, setErrorStep] = useState(-1);
|
|
2220
|
+
const [loadingStep, setLoadingStep] = useState(-1);
|
|
1760
2221
|
const [minimized, setMinimized] = useState(false);
|
|
1761
2222
|
const [percent, setPercent] = useState(0);
|
|
1762
|
-
const [
|
|
1763
|
-
const
|
|
1764
|
-
const
|
|
2223
|
+
const [data, setData] = useState();
|
|
2224
|
+
const dispatch = useDispatch();
|
|
2225
|
+
const mode = useSelector(selectMode);
|
|
2226
|
+
const txId = useSelector(selectTxId);
|
|
2227
|
+
const closeHandler = useSelector(selectCloseHandler);
|
|
2228
|
+
const successHandler = useSelector(selectSuccessHandler);
|
|
2229
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
1765
2230
|
useEffect(() => {
|
|
2231
|
+
if (!nodeProviderQuery || txId < 0) return;
|
|
1766
2232
|
const timerId = setInterval(async () => {
|
|
1767
|
-
const result = await fetchWrapper.get(
|
|
2233
|
+
const result = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/transaction_data/${txId}`);
|
|
1768
2234
|
const data = result === null || result === void 0 ? void 0 : result.transactionData;
|
|
1769
|
-
if (!
|
|
1770
|
-
|
|
1771
|
-
const status = data[0].status;
|
|
2235
|
+
if (!data) return;
|
|
2236
|
+
const status = data.status;
|
|
1772
2237
|
console.log(status);
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
2238
|
+
setData({
|
|
2239
|
+
sourceChain: data.originChain,
|
|
2240
|
+
targetChain: data.targetChain,
|
|
2241
|
+
tssPullHash: data.tssPullHash,
|
|
2242
|
+
tssReleaseHash: data.tssReleaseHash,
|
|
2243
|
+
amount: +data.amount,
|
|
2244
|
+
symbol: data.symbol
|
|
2245
|
+
});
|
|
1776
2246
|
setErrorStep(-1);
|
|
1777
|
-
if (status ===
|
|
1778
|
-
setStep(0);
|
|
1779
|
-
setPercent(0);
|
|
1780
|
-
} else if (status === PAY_CONFIRMED) {
|
|
2247
|
+
if (status === TransactionStatus.AVAILABLE) {
|
|
1781
2248
|
setStep(1);
|
|
2249
|
+
setPercent(0);
|
|
2250
|
+
setLoadingStep(1);
|
|
2251
|
+
} else if (status === TransactionStatus.CONFIRMED) {
|
|
2252
|
+
setStep(2);
|
|
1782
2253
|
setPercent(25);
|
|
1783
|
-
|
|
2254
|
+
setLoadingStep(2);
|
|
2255
|
+
} else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {
|
|
1784
2256
|
setStep(1);
|
|
1785
|
-
setErrorStep(1);
|
|
1786
2257
|
setPercent(25);
|
|
1787
|
-
|
|
1788
|
-
|
|
2258
|
+
setErrorStep(1);
|
|
2259
|
+
setLoadingStep(-1);
|
|
2260
|
+
} else if (status === TransactionStatus.KEYSIGNED) {
|
|
2261
|
+
setStep(3);
|
|
1789
2262
|
setPercent(50);
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
2263
|
+
setLoadingStep(3);
|
|
2264
|
+
} else if (status === TransactionStatus.PAID) {
|
|
2265
|
+
setStep(3);
|
|
2266
|
+
setPercent(75);
|
|
2267
|
+
setLoadingStep(3);
|
|
2268
|
+
} else if (status === TransactionStatus.FAILED) {
|
|
1794
2269
|
setStep(3);
|
|
1795
|
-
setErrorStep(3);
|
|
1796
2270
|
setPercent(75);
|
|
2271
|
+
setErrorStep(3);
|
|
2272
|
+
setLoadingStep(-1);
|
|
2273
|
+
} else if (status === TransactionStatus.COMPLETED) {
|
|
2274
|
+
setStep(4);
|
|
2275
|
+
setPercent(100);
|
|
2276
|
+
clearInterval(timerId);
|
|
2277
|
+
setLoadingStep(-1);
|
|
2278
|
+
setTimeout(() => {
|
|
2279
|
+
successHandler({
|
|
2280
|
+
txId
|
|
2281
|
+
});
|
|
2282
|
+
}, 3000);
|
|
1797
2283
|
}
|
|
1798
2284
|
}, 1000);
|
|
1799
2285
|
return () => {
|
|
1800
2286
|
clearInterval(timerId);
|
|
1801
2287
|
};
|
|
1802
|
-
}, []);
|
|
2288
|
+
}, [nodeProviderQuery, txId]);
|
|
1803
2289
|
return React.createElement(Provider, {
|
|
1804
2290
|
store: store
|
|
1805
2291
|
}, React.createElement("div", {
|
|
@@ -1810,7 +2296,7 @@ const TransactionWidget = ({
|
|
|
1810
2296
|
className: 'topbar'
|
|
1811
2297
|
}, React.createElement("div", {
|
|
1812
2298
|
className: 'title'
|
|
1813
|
-
}, React.createElement("h3", null, "Transferring ",
|
|
2299
|
+
}, React.createElement("h3", null, "Transferring ", formatterFloat.format((data === null || data === void 0 ? void 0 : data.amount) || 0), ' ', COIN_LIST[(data === null || data === void 0 ? void 0 : data.symbol) || 'USDK'].symbol), React.createElement(AnimatedNumber, {
|
|
1814
2300
|
component: 'p',
|
|
1815
2301
|
value: percent,
|
|
1816
2302
|
duration: 1000,
|
|
@@ -1824,21 +2310,22 @@ const TransactionWidget = ({
|
|
|
1824
2310
|
}
|
|
1825
2311
|
}, React.createElement(Minimize, {
|
|
1826
2312
|
fill: _theme === 'light' ? 'black' : 'white'
|
|
1827
|
-
})), React.createElement("button", {
|
|
2313
|
+
})), loadingStep < 0 ? React.createElement("button", {
|
|
1828
2314
|
className: 'icon-button',
|
|
1829
2315
|
onClick: () => {
|
|
1830
|
-
dispatch(
|
|
2316
|
+
if (mode === ModeOptions.bridge) dispatch(init());
|
|
2317
|
+
closeHandler();
|
|
1831
2318
|
}
|
|
1832
2319
|
}, React.createElement(Cross, {
|
|
1833
2320
|
fill: _theme === 'light' ? 'black' : 'white'
|
|
1834
|
-
}))) : React.createElement("div", {
|
|
2321
|
+
})) : null) : React.createElement("div", {
|
|
1835
2322
|
className: 'control-buttons'
|
|
1836
2323
|
}, React.createElement("div", {
|
|
1837
2324
|
className: 'maximize',
|
|
1838
2325
|
onClick: () => setMinimized(false)
|
|
1839
|
-
}, "View"))), sourceChain && targetChain && React.createElement(NetworkLabel, {
|
|
1840
|
-
sourceChain: sourceChain,
|
|
1841
|
-
targetChain: targetChain,
|
|
2326
|
+
}, "View"))), (data === null || data === void 0 ? void 0 : data.sourceChain) && (data === null || data === void 0 ? void 0 : data.targetChain) && React.createElement(NetworkLabel, {
|
|
2327
|
+
sourceChain: data === null || data === void 0 ? void 0 : data.sourceChain,
|
|
2328
|
+
targetChain: data === null || data === void 0 ? void 0 : data.targetChain,
|
|
1842
2329
|
hasError: errorStep >= 0
|
|
1843
2330
|
})), React.createElement("div", {
|
|
1844
2331
|
className: 'kima-card-content'
|
|
@@ -1846,46 +2333,36 @@ const TransactionWidget = ({
|
|
|
1846
2333
|
step: step,
|
|
1847
2334
|
focus: focus,
|
|
1848
2335
|
errorStep: errorStep,
|
|
1849
|
-
setFocus: setFocus
|
|
1850
|
-
|
|
2336
|
+
setFocus: setFocus,
|
|
2337
|
+
loadingStep: loadingStep
|
|
2338
|
+
}), React.createElement(StepBox, {
|
|
1851
2339
|
step: step,
|
|
1852
|
-
|
|
1853
|
-
|
|
2340
|
+
errorStep: errorStep,
|
|
2341
|
+
loadingStep: loadingStep,
|
|
2342
|
+
data: data
|
|
1854
2343
|
})), React.createElement("div", {
|
|
1855
2344
|
className: 'kima-card-footer'
|
|
1856
2345
|
}, React.createElement(Cross$1, {
|
|
1857
2346
|
fill: _theme === 'light' ? 'black' : '#C5C5C5'
|
|
1858
|
-
}), React.createElement("p", null, "Click on a step to see detailed information."), React.createElement(
|
|
1859
|
-
|
|
1860
|
-
}
|
|
2347
|
+
}), React.createElement("p", null, "Click on a step to see detailed information.")), React.createElement(HelpPopup, null), React.createElement(HashPopup, {
|
|
2348
|
+
data: data
|
|
2349
|
+
})));
|
|
1861
2350
|
};
|
|
1862
2351
|
|
|
1863
2352
|
const SingleForm = () => {
|
|
1864
|
-
const originNetwork = useSelector(selectOriginNetwork);
|
|
1865
|
-
const targetNetwork = useSelector(selectTargetNetwork);
|
|
1866
2353
|
const dispatch = useDispatch();
|
|
1867
2354
|
const mode = useSelector(selectMode);
|
|
1868
2355
|
const theme = useSelector(selectTheme);
|
|
1869
2356
|
const amount = useSelector(selectAmount);
|
|
1870
|
-
const feeDeduct = useSelector(selectFeeDeduct);
|
|
1871
|
-
const serviceFee = useSelector(selectServiceFee);
|
|
1872
2357
|
const transactionOption = useSelector(selectTransactionOption);
|
|
1873
|
-
const
|
|
1874
|
-
const targetNetworks = useMemo(() => networkOptions.filter(network => network.id !== originNetwork), [originNetwork]);
|
|
2358
|
+
const selectedCoin = useSelector(selectCurrencyOptions);
|
|
1875
2359
|
return React.createElement("div", {
|
|
1876
2360
|
className: 'single-form'
|
|
1877
2361
|
}, React.createElement("div", {
|
|
1878
2362
|
className: 'form-item'
|
|
1879
2363
|
}, React.createElement("span", {
|
|
1880
2364
|
className: 'label'
|
|
1881
|
-
},
|
|
1882
|
-
className: `network-item ${theme} ${originNetwork === network.id ? 'active' : ''}`,
|
|
1883
|
-
onClick: () => {
|
|
1884
|
-
dispatch(setOriginNetwork(network.id));
|
|
1885
|
-
dispatch(setTargetNetwork(''));
|
|
1886
|
-
},
|
|
1887
|
-
key: network.id
|
|
1888
|
-
}, React.createElement(network.icon, null), React.createElement("p", null, network.id)))), React.createElement("div", {
|
|
2365
|
+
}, "Source Network"), React.createElement(NetworkDropdown, null)), React.createElement("div", {
|
|
1889
2366
|
className: 'form-item'
|
|
1890
2367
|
}, React.createElement("span", {
|
|
1891
2368
|
className: 'label'
|
|
@@ -1893,40 +2370,40 @@ const SingleForm = () => {
|
|
|
1893
2370
|
className: 'form-item'
|
|
1894
2371
|
}, React.createElement("span", {
|
|
1895
2372
|
className: 'label'
|
|
1896
|
-
}, "Target Network:"),
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
dispatch(setServiceFee(0));
|
|
1901
|
-
},
|
|
1902
|
-
key: network.id
|
|
1903
|
-
}, React.createElement(network.icon, null), React.createElement("p", null, network.id)))), mode === ModeOptions.bridge && React.createElement("div", {
|
|
1904
|
-
className: 'form-item'
|
|
2373
|
+
}, "Target Network:"), React.createElement(NetworkDropdown, {
|
|
2374
|
+
isOriginChain: false
|
|
2375
|
+
})), mode === ModeOptions.bridge && React.createElement("div", {
|
|
2376
|
+
className: `form-item ${theme}`
|
|
1905
2377
|
}, React.createElement("span", {
|
|
1906
2378
|
className: 'label'
|
|
1907
|
-
}, "Target Address:"), React.createElement(AddressInput, null)), React.createElement("div", {
|
|
2379
|
+
}, "Target Address:"), React.createElement(AddressInput, null)), mode === ModeOptions.bridge ? React.createElement("div", {
|
|
1908
2380
|
className: `form-item ${theme}`
|
|
1909
2381
|
}, React.createElement("span", {
|
|
1910
2382
|
className: 'label'
|
|
1911
2383
|
}, "Amount:"), React.createElement("input", {
|
|
1912
2384
|
type: 'number',
|
|
1913
|
-
value:
|
|
1914
|
-
onChange: e =>
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
}
|
|
2385
|
+
value: amount || '',
|
|
2386
|
+
onChange: e => {
|
|
2387
|
+
const _amount = +e.target.value;
|
|
2388
|
+
dispatch(setAmount(parseFloat(_amount.toFixed(2))));
|
|
2389
|
+
}
|
|
2390
|
+
}), React.createElement(CoinDropdown, null)) : React.createElement("div", {
|
|
2391
|
+
className: `form-item ${theme}`
|
|
2392
|
+
}, React.createElement("span", {
|
|
2393
|
+
className: 'label'
|
|
2394
|
+
}, "Amount:"), React.createElement("div", {
|
|
2395
|
+
className: `amount-label ${theme}`
|
|
2396
|
+
}, React.createElement("span", null, (transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.amount) || ''), React.createElement("div", {
|
|
2397
|
+
className: 'coin-wrapper'
|
|
2398
|
+
}, React.createElement(selectedCoin.icon, null), selectedCoin.symbol))));
|
|
1921
2399
|
};
|
|
1922
2400
|
|
|
1923
2401
|
const CoinSelect = () => {
|
|
1924
2402
|
const dispatch = useDispatch();
|
|
1925
2403
|
const theme = useSelector(selectTheme);
|
|
1926
2404
|
const mode = useSelector(selectMode);
|
|
1927
|
-
const transactionOption = useSelector(selectTransactionOption);
|
|
1928
2405
|
const amount = useSelector(selectAmount);
|
|
1929
|
-
const selectedCoin =
|
|
2406
|
+
const selectedCoin = useSelector(selectCurrencyOptions);
|
|
1930
2407
|
return React.createElement("div", {
|
|
1931
2408
|
className: `coin-select`
|
|
1932
2409
|
}, React.createElement("p", null, "Select Amount of Token for Funding"), React.createElement("div", {
|
|
@@ -1935,9 +2412,12 @@ const CoinSelect = () => {
|
|
|
1935
2412
|
className: 'input-wrapper'
|
|
1936
2413
|
}, React.createElement("input", {
|
|
1937
2414
|
type: 'number',
|
|
1938
|
-
value:
|
|
2415
|
+
value: amount || '',
|
|
1939
2416
|
readOnly: mode === ModeOptions.payment,
|
|
1940
|
-
onChange: e =>
|
|
2417
|
+
onChange: e => {
|
|
2418
|
+
const _amount = +e.target.value;
|
|
2419
|
+
dispatch(setAmount(parseFloat(_amount.toFixed(2))));
|
|
2420
|
+
}
|
|
1941
2421
|
}), React.createElement("div", {
|
|
1942
2422
|
className: 'coin-label'
|
|
1943
2423
|
}, React.createElement(selectedCoin.icon, null), React.createElement("span", null, selectedCoin.symbol)))));
|
|
@@ -2259,8 +2739,7 @@ async function getOrCreateAssociatedTokenAccount(connection, payer, mint, owner,
|
|
|
2259
2739
|
const signed = await signTransaction(transaction);
|
|
2260
2740
|
const signature = await connection.sendRawTransaction(signed.serialize());
|
|
2261
2741
|
await connection.confirmTransaction(signature);
|
|
2262
|
-
} catch (error) {
|
|
2263
|
-
}
|
|
2742
|
+
} catch (error) {}
|
|
2264
2743
|
account = await getAccountInfo(connection, associatedToken, commitment, programId);
|
|
2265
2744
|
} else {
|
|
2266
2745
|
throw error;
|
|
@@ -5739,15 +6218,17 @@ function useAllowance() {
|
|
|
5739
6218
|
const selectedNetwork = useSelector(selectOriginNetwork);
|
|
5740
6219
|
const errorHandler = useSelector(selectErrorHandler);
|
|
5741
6220
|
const sourceChain = useMemo(() => {
|
|
5742
|
-
if (selectedNetwork ===
|
|
5743
|
-
if (
|
|
5744
|
-
return
|
|
6221
|
+
if (selectedNetwork === ChainName.SOLANA) return selectedNetwork;
|
|
6222
|
+
if (CHAIN_NAMES_TO_IDS[selectedNetwork] !== evmChainId) {
|
|
6223
|
+
return CHAIN_IDS_TO_NAMES[evmChainId];
|
|
5745
6224
|
}
|
|
5746
6225
|
return selectedNetwork;
|
|
5747
6226
|
}, [selectedNetwork, evmChainId]);
|
|
5748
6227
|
const amount = useSelector(selectAmount);
|
|
6228
|
+
const serviceFee = useSelector(selectServiceFee);
|
|
5749
6229
|
const isApproving = useSelector(selectApproving);
|
|
5750
6230
|
const splAllowance = useSelector(selectSplAllowance);
|
|
6231
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
5751
6232
|
const {
|
|
5752
6233
|
connection
|
|
5753
6234
|
} = useConnection();
|
|
@@ -5755,13 +6236,28 @@ function useAllowance() {
|
|
|
5755
6236
|
publicKey,
|
|
5756
6237
|
signTransaction
|
|
5757
6238
|
} = useWallet();
|
|
5758
|
-
const
|
|
5759
|
-
const
|
|
6239
|
+
const selectedCoin = useSelector(selectCurrencyOptions);
|
|
6240
|
+
const tokenAddress = useMemo(() => {
|
|
6241
|
+
return selectedCoin.address[sourceChain];
|
|
6242
|
+
}, [selectedCoin, sourceChain]);
|
|
6243
|
+
const [targetAddress, setTargetAddress] = useState();
|
|
5760
6244
|
const isApproved = useMemo(() => {
|
|
5761
|
-
if (!isEVMChain(sourceChain)) return splAllowance >= amount;
|
|
5762
|
-
if (allowance && amount && allowance.gte(parseUnits(amount.toString(), decimals))) return true;
|
|
6245
|
+
if (!isEVMChain(sourceChain)) return splAllowance >= amount + serviceFee;
|
|
6246
|
+
if (allowance && amount && allowance.gte(parseUnits((amount + serviceFee).toString(), decimals))) return true;
|
|
5763
6247
|
return false;
|
|
5764
|
-
}, [decimals, sourceChain, allowance, amount, splAllowance]);
|
|
6248
|
+
}, [decimals, sourceChain, allowance, amount, splAllowance, serviceFee]);
|
|
6249
|
+
const updatePoolAddress = async () => {
|
|
6250
|
+
var _result$tssPubkey;
|
|
6251
|
+
const result = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/tss_pubkey`);
|
|
6252
|
+
if ((result === null || result === void 0 ? void 0 : (_result$tssPubkey = result.tssPubkey) === null || _result$tssPubkey === void 0 ? void 0 : _result$tssPubkey.length) < 1) {
|
|
6253
|
+
return;
|
|
6254
|
+
}
|
|
6255
|
+
setTargetAddress(result.tssPubkey[0].ecdsa);
|
|
6256
|
+
};
|
|
6257
|
+
useEffect(() => {
|
|
6258
|
+
if (!nodeProviderQuery) return;
|
|
6259
|
+
updatePoolAddress();
|
|
6260
|
+
}, [nodeProviderQuery]);
|
|
5765
6261
|
useEffect(() => {
|
|
5766
6262
|
(async () => {
|
|
5767
6263
|
try {
|
|
@@ -5778,11 +6274,11 @@ function useAllowance() {
|
|
|
5778
6274
|
}, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain]);
|
|
5779
6275
|
const approve = useCallback(async () => {
|
|
5780
6276
|
if (isEVMChain(sourceChain)) {
|
|
5781
|
-
if (!decimals || !tokenAddress || !signer || !
|
|
6277
|
+
if (!decimals || !tokenAddress || !signer || !targetAddress) return;
|
|
5782
6278
|
try {
|
|
5783
6279
|
const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer);
|
|
5784
6280
|
dispatch(setApproving(true));
|
|
5785
|
-
const approve = await erc20Contract.approve(targetAddress, parseUnits(amount.toString(), decimals));
|
|
6281
|
+
const approve = await erc20Contract.approve(targetAddress, parseUnits((amount + serviceFee).toString(), decimals));
|
|
5786
6282
|
await approve.wait();
|
|
5787
6283
|
dispatch(setApproving(false));
|
|
5788
6284
|
} catch (error) {
|
|
@@ -5798,170 +6294,46 @@ function useAllowance() {
|
|
|
5798
6294
|
const toPublicKey = new PublicKey(targetAddress);
|
|
5799
6295
|
const fromTokenAccount = await getOrCreateAssociatedTokenAccount(connection, publicKey, mint, publicKey, signTransaction);
|
|
5800
6296
|
const toTokenAccount = await getOrCreateAssociatedTokenAccount(connection, publicKey, mint, toPublicKey, signTransaction);
|
|
5801
|
-
const transaction = new Transaction().add(createApproveTransferInstruction(fromTokenAccount.address,
|
|
5802
|
-
toTokenAccount.address,
|
|
5803
|
-
publicKey, amount * Math.pow(10, COIN_LIST['USDK'].decimals),
|
|
5804
|
-
[], TOKEN_PROGRAM_ID));
|
|
6297
|
+
const transaction = new Transaction().add(createApproveTransferInstruction(fromTokenAccount.address, toTokenAccount.address, publicKey, (amount + serviceFee) * Math.pow(10, COIN_LIST['USDK'].decimals), [], TOKEN_PROGRAM_ID));
|
|
5805
6298
|
const blockHash = await connection.getLatestBlockhash();
|
|
5806
6299
|
transaction.feePayer = publicKey;
|
|
5807
6300
|
transaction.recentBlockhash = await blockHash.blockhash;
|
|
5808
6301
|
const signed = await signTransaction(transaction);
|
|
5809
6302
|
await connection.sendRawTransaction(signed.serialize());
|
|
5810
|
-
dispatch(setSplAllowance(amount));
|
|
6303
|
+
dispatch(setSplAllowance(amount + serviceFee));
|
|
5811
6304
|
dispatch(setApproving(false));
|
|
5812
6305
|
} catch (e) {
|
|
5813
6306
|
errorHandler(e);
|
|
5814
6307
|
dispatch(setApproving(false));
|
|
5815
6308
|
}
|
|
5816
|
-
}, [decimals, tokenAddress, signer, amount, targetAddress, signTransaction]);
|
|
6309
|
+
}, [decimals, tokenAddress, signer, amount, targetAddress, signTransaction, serviceFee]);
|
|
5817
6310
|
return useMemo(() => ({
|
|
5818
6311
|
isApproved,
|
|
5819
6312
|
approve
|
|
5820
6313
|
}), [isApproved, approve]);
|
|
5821
6314
|
}
|
|
5822
6315
|
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
-
type: "uint8"
|
|
5833
|
-
}
|
|
5834
|
-
],
|
|
5835
|
-
stateMutability: "view",
|
|
5836
|
-
type: "function"
|
|
5837
|
-
},
|
|
5838
|
-
{
|
|
5839
|
-
inputs: [
|
|
5840
|
-
],
|
|
5841
|
-
name: "description",
|
|
5842
|
-
outputs: [
|
|
5843
|
-
{
|
|
5844
|
-
internalType: "string",
|
|
5845
|
-
name: "",
|
|
5846
|
-
type: "string"
|
|
5847
|
-
}
|
|
5848
|
-
],
|
|
5849
|
-
stateMutability: "view",
|
|
5850
|
-
type: "function"
|
|
5851
|
-
},
|
|
5852
|
-
{
|
|
5853
|
-
inputs: [
|
|
5854
|
-
{
|
|
5855
|
-
internalType: "uint80",
|
|
5856
|
-
name: "_roundId",
|
|
5857
|
-
type: "uint80"
|
|
5858
|
-
}
|
|
5859
|
-
],
|
|
5860
|
-
name: "getRoundData",
|
|
5861
|
-
outputs: [
|
|
5862
|
-
{
|
|
5863
|
-
internalType: "uint80",
|
|
5864
|
-
name: "roundId",
|
|
5865
|
-
type: "uint80"
|
|
5866
|
-
},
|
|
5867
|
-
{
|
|
5868
|
-
internalType: "int256",
|
|
5869
|
-
name: "answer",
|
|
5870
|
-
type: "int256"
|
|
5871
|
-
},
|
|
5872
|
-
{
|
|
5873
|
-
internalType: "uint256",
|
|
5874
|
-
name: "startedAt",
|
|
5875
|
-
type: "uint256"
|
|
5876
|
-
},
|
|
5877
|
-
{
|
|
5878
|
-
internalType: "uint256",
|
|
5879
|
-
name: "updatedAt",
|
|
5880
|
-
type: "uint256"
|
|
5881
|
-
},
|
|
5882
|
-
{
|
|
5883
|
-
internalType: "uint80",
|
|
5884
|
-
name: "answeredInRound",
|
|
5885
|
-
type: "uint80"
|
|
5886
|
-
}
|
|
5887
|
-
],
|
|
5888
|
-
stateMutability: "view",
|
|
5889
|
-
type: "function"
|
|
5890
|
-
},
|
|
5891
|
-
{
|
|
5892
|
-
inputs: [
|
|
5893
|
-
],
|
|
5894
|
-
name: "latestRoundData",
|
|
5895
|
-
outputs: [
|
|
5896
|
-
{
|
|
5897
|
-
internalType: "uint80",
|
|
5898
|
-
name: "roundId",
|
|
5899
|
-
type: "uint80"
|
|
5900
|
-
},
|
|
5901
|
-
{
|
|
5902
|
-
internalType: "int256",
|
|
5903
|
-
name: "answer",
|
|
5904
|
-
type: "int256"
|
|
5905
|
-
},
|
|
5906
|
-
{
|
|
5907
|
-
internalType: "uint256",
|
|
5908
|
-
name: "startedAt",
|
|
5909
|
-
type: "uint256"
|
|
5910
|
-
},
|
|
5911
|
-
{
|
|
5912
|
-
internalType: "uint256",
|
|
5913
|
-
name: "updatedAt",
|
|
5914
|
-
type: "uint256"
|
|
5915
|
-
},
|
|
5916
|
-
{
|
|
5917
|
-
internalType: "uint80",
|
|
5918
|
-
name: "answeredInRound",
|
|
5919
|
-
type: "uint80"
|
|
5920
|
-
}
|
|
5921
|
-
],
|
|
5922
|
-
stateMutability: "view",
|
|
5923
|
-
type: "function"
|
|
5924
|
-
},
|
|
5925
|
-
{
|
|
5926
|
-
inputs: [
|
|
5927
|
-
],
|
|
5928
|
-
name: "version",
|
|
5929
|
-
outputs: [
|
|
5930
|
-
{
|
|
5931
|
-
internalType: "uint256",
|
|
5932
|
-
name: "",
|
|
5933
|
-
type: "uint256"
|
|
5934
|
-
}
|
|
5935
|
-
],
|
|
5936
|
-
stateMutability: "view",
|
|
5937
|
-
type: "function"
|
|
5938
|
-
}
|
|
5939
|
-
];
|
|
5940
|
-
var aggregatorV3ABI = {
|
|
5941
|
-
abi: abi$1
|
|
5942
|
-
};
|
|
5943
|
-
|
|
5944
|
-
async function getPrice(chainId) {
|
|
5945
|
-
const ETH_Node1 = ETHEREUM_NODE_PROVIDER;
|
|
5946
|
-
let addr = SOL_USD_PROXY;
|
|
5947
|
-
if (chainId === CHAIN_STRING_ETHEREUM) addr = ETH_USD_PROXY;
|
|
5948
|
-
if (chainId === CHAIN_STRING_POLYGON) addr = MATIC_USD_PROXY;
|
|
5949
|
-
if (chainId === CHAIN_STRING_AVALANCHE) addr = AVAX_USD_PROXY;
|
|
5950
|
-
const web3 = new Web3(ETH_Node1);
|
|
5951
|
-
const contractAbi = aggregatorV3ABI.abi;
|
|
5952
|
-
const priceFeed = new web3.eth.Contract(contractAbi, addr);
|
|
5953
|
-
const data = await priceFeed.methods.latestRoundData().call();
|
|
5954
|
-
return +data.answer / 1e8;
|
|
6316
|
+
async function getPrice(sourceChain, targetChain) {
|
|
6317
|
+
try {
|
|
6318
|
+
const res = await fetch(`https://api.coingecko.com/api/v3/simple/price?ids=${CHAIN_NAMES_TO_GECKO_ID[sourceChain]},${CHAIN_NAMES_TO_GECKO_ID[targetChain]}&vs_currencies=usd`);
|
|
6319
|
+
const price = await res.json();
|
|
6320
|
+
return Object.keys(price).length ? [price[CHAIN_NAMES_TO_GECKO_ID[sourceChain]].usd, price[CHAIN_NAMES_TO_GECKO_ID[targetChain]].usd] : [0, 0];
|
|
6321
|
+
} catch (e) {
|
|
6322
|
+
console.log(e);
|
|
6323
|
+
}
|
|
6324
|
+
return [0, 0];
|
|
5955
6325
|
}
|
|
5956
|
-
function getFeeInUSD(
|
|
6326
|
+
async function getFeeInUSD(sourceChain, targetChain, gasFee) {
|
|
5957
6327
|
const max_gas = 50000;
|
|
5958
|
-
|
|
5959
|
-
|
|
5960
|
-
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
if (
|
|
5964
|
-
|
|
6328
|
+
const [sourceTokenPrice, targetTokenPrice] = await getPrice(sourceChain, targetChain);
|
|
6329
|
+
let sourceFee, targetFee;
|
|
6330
|
+
if (sourceChain === ChainName.SOLANA) {
|
|
6331
|
+
sourceFee = +gasFee[sourceChain] * +sourceTokenPrice;
|
|
6332
|
+
} else sourceFee = gasFee[sourceChain] ? +gasFee[sourceChain] * max_gas * +sourceTokenPrice / 1e9 : 0;
|
|
6333
|
+
if (targetChain === ChainName.SOLANA) {
|
|
6334
|
+
targetFee = +gasFee[targetChain] * +targetTokenPrice;
|
|
6335
|
+
} else targetFee = gasFee[targetChain] ? +gasFee[targetChain] * max_gas * +targetTokenPrice / 1e9 : 0;
|
|
6336
|
+
return [sourceFee, targetFee];
|
|
5965
6337
|
}
|
|
5966
6338
|
function useServiceFee() {
|
|
5967
6339
|
const {
|
|
@@ -5970,48 +6342,34 @@ function useServiceFee() {
|
|
|
5970
6342
|
} = useIsWalletReady();
|
|
5971
6343
|
const [serviceFee, setServiceFee] = useState(0);
|
|
5972
6344
|
const mode = useSelector(selectMode);
|
|
5973
|
-
const
|
|
6345
|
+
const amount_ = useSelector(selectAmount);
|
|
6346
|
+
const isConfirming = useSelector(selectConfirming);
|
|
6347
|
+
const sourceChain = useSelector(selectOriginNetwork);
|
|
5974
6348
|
const targetNetwork = useSelector(selectTargetNetwork);
|
|
6349
|
+
const targetAddress_ = useSelector(selectTargetAddress);
|
|
5975
6350
|
const transactionOption = useSelector(selectTransactionOption);
|
|
5976
|
-
const
|
|
5977
|
-
const
|
|
5978
|
-
const
|
|
6351
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
6352
|
+
const targetChain = useMemo(() => mode === ModeOptions.payment ? (transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || '' : targetNetwork, [transactionOption, mode, targetNetwork]);
|
|
6353
|
+
const targetAddress = useMemo(() => mode === ModeOptions.payment ? (transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetAddress) || '' : targetAddress_, [transactionOption, mode, targetAddress_]);
|
|
6354
|
+
const amount = useMemo(() => mode === ModeOptions.payment ? transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.amount : amount_, [transactionOption, mode, amount_]);
|
|
5979
6355
|
const getServiceFee = async () => {
|
|
5980
|
-
if (!sourceChain || !targetChain || !isReady || !walletAddress) return;
|
|
5981
|
-
let
|
|
5982
|
-
sol: 0,
|
|
5983
|
-
eth: 0,
|
|
5984
|
-
matic: 0,
|
|
5985
|
-
avax: 0
|
|
5986
|
-
};
|
|
5987
|
-
let gasFee = {
|
|
5988
|
-
solana: 0,
|
|
5989
|
-
ethereum: 0,
|
|
5990
|
-
polygon: 0,
|
|
5991
|
-
avax: 0
|
|
5992
|
-
};
|
|
6356
|
+
if (!sourceChain || !targetChain || !isReady || !walletAddress || !targetAddress || !nodeProviderQuery || !amount) return;
|
|
6357
|
+
let gasFee = {};
|
|
5993
6358
|
try {
|
|
5994
|
-
const gasFeeData = await fetchWrapper.get(
|
|
6359
|
+
const gasFeeData = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/gas_fee`);
|
|
5995
6360
|
gasFeeData.gasFee.forEach(data => {
|
|
5996
|
-
|
|
5997
|
-
if (data.chainId === CHAIN_STRING_ETHEREUM) gasFee.ethereum = data.fee;
|
|
5998
|
-
if (data.chainId === CHAIN_STRING_POLYGON) gasFee.polygon = data.fee;
|
|
5999
|
-
if (data.chainId === 'Avax') gasFee.avax = data.fee;
|
|
6361
|
+
gasFee[data.chainId] = data.fee;
|
|
6000
6362
|
});
|
|
6001
|
-
|
|
6002
|
-
|
|
6003
|
-
tokenPrice.matic = await getPrice(CHAIN_STRING_POLYGON);
|
|
6004
|
-
tokenPrice.avax = await getPrice('Avax');
|
|
6005
|
-
const estimation = await fetchWrapper.get(`https://${DIVERSIFI_NODE_PROVIDER1_QUERY}/Diversifi-Technologies/diversifi/diversifi/estimate_transfer/${sourceChain}/${walletAddress}/${targetChain}/${0x123}/${100}`);
|
|
6006
|
-
const originFee = getFeeInUSD(sourceChain, gasFee, tokenPrice);
|
|
6007
|
-
const targetFee = getFeeInUSD(targetChain, gasFee, tokenPrice);
|
|
6363
|
+
const estimation = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/estimate_transfer/${sourceChain}/${walletAddress}/${targetChain}/${targetAddress}/${amount}`);
|
|
6364
|
+
const [originFee, targetFee] = await getFeeInUSD(sourceChain, targetChain, gasFee);
|
|
6008
6365
|
const fee = parseFloat(estimation.estimateTransfer.TakerPenalty) + parseFloat(estimation.estimateTransfer.MakerPenalty) - parseFloat(estimation.estimateTransfer.TakerBounty) - parseFloat(estimation.estimateTransfer.MakerBounty) + parseFloat(estimation.estimateTransfer.NetworkFee) + originFee + targetFee;
|
|
6009
|
-
setServiceFee(fee);
|
|
6366
|
+
setServiceFee(parseFloat(fee.toFixed(2)));
|
|
6010
6367
|
} catch (e) {
|
|
6011
6368
|
console.log(e);
|
|
6012
6369
|
}
|
|
6013
6370
|
};
|
|
6014
6371
|
useEffect(() => {
|
|
6372
|
+
if (isConfirming) return;
|
|
6015
6373
|
getServiceFee();
|
|
6016
6374
|
const timerId = setInterval(() => {
|
|
6017
6375
|
getServiceFee();
|
|
@@ -6019,15 +6377,43 @@ function useServiceFee() {
|
|
|
6019
6377
|
return () => {
|
|
6020
6378
|
clearInterval(timerId);
|
|
6021
6379
|
};
|
|
6022
|
-
}, [sourceChain, targetChain, isReady, walletAddress]);
|
|
6380
|
+
}, [sourceChain, targetChain, isReady, walletAddress, isConfirming, targetAddress, nodeProviderQuery, amount]);
|
|
6023
6381
|
return useMemo(() => ({
|
|
6024
6382
|
serviceFee
|
|
6025
6383
|
}), [serviceFee]);
|
|
6026
6384
|
}
|
|
6027
6385
|
|
|
6386
|
+
const AddressInputWizard = () => {
|
|
6387
|
+
const theme = useSelector(selectTheme);
|
|
6388
|
+
return React.createElement("div", {
|
|
6389
|
+
className: `coin-select`
|
|
6390
|
+
}, React.createElement("p", null, "Select Target Address for Funding"), React.createElement("div", {
|
|
6391
|
+
className: `address-input ${theme}`
|
|
6392
|
+
}, React.createElement("span", null, "Target Address:"), React.createElement(AddressInput, null)));
|
|
6393
|
+
};
|
|
6394
|
+
|
|
6395
|
+
function useCurrencyOptions() {
|
|
6396
|
+
const [options, setOptions] = useState(COIN_LIST['USDK']);
|
|
6397
|
+
const nodeProviderQuery = useSelector(selectNodeProviderQuery);
|
|
6398
|
+
const originNetwork = useSelector(selectOriginNetwork);
|
|
6399
|
+
const targetNetwork = useSelector(selectTargetNetwork);
|
|
6400
|
+
useEffect(() => {
|
|
6401
|
+
if (!nodeProviderQuery || !originNetwork || !targetNetwork) return;
|
|
6402
|
+
(async function () {
|
|
6403
|
+
var _coins$Currencies;
|
|
6404
|
+
const coins = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getCurrencies/${originNetwork}/${targetNetwork}`);
|
|
6405
|
+
setOptions(COIN_LIST[(_coins$Currencies = coins.Currencies) !== null && _coins$Currencies !== void 0 && _coins$Currencies.length ? coins.Currencies[0] : 'USDK']);
|
|
6406
|
+
})();
|
|
6407
|
+
}, [nodeProviderQuery, originNetwork, targetNetwork]);
|
|
6408
|
+
return useMemo(() => ({
|
|
6409
|
+
options
|
|
6410
|
+
}), [options]);
|
|
6411
|
+
}
|
|
6412
|
+
|
|
6028
6413
|
const TransferWidget = ({
|
|
6029
6414
|
theme: _theme = ThemeOptions.light,
|
|
6030
|
-
fontSize: _fontSize = FontSizeOptions.medium
|
|
6415
|
+
fontSize: _fontSize = FontSizeOptions.medium,
|
|
6416
|
+
titleOption
|
|
6031
6417
|
}) => {
|
|
6032
6418
|
const dispatch = useDispatch();
|
|
6033
6419
|
const [menuOpen, setMenuOpen] = useState(false);
|
|
@@ -6049,13 +6435,18 @@ const TransferWidget = ({
|
|
|
6049
6435
|
const amount = useSelector(selectAmount);
|
|
6050
6436
|
const sourceChain = useSelector(selectOriginNetwork);
|
|
6051
6437
|
const targetAddress = useSelector(selectTargetAddress);
|
|
6438
|
+
const targetNetwork = useSelector(selectTargetNetwork);
|
|
6052
6439
|
const isApproving = useSelector(selectApproving);
|
|
6053
|
-
const isConfirming = useSelector(selectConfirming);
|
|
6054
6440
|
const errorHandler = useSelector(selectErrorHandler);
|
|
6055
6441
|
const closeHandler = useSelector(selectCloseHandler);
|
|
6056
|
-
const successHandler = useSelector(selectSuccessHandler);
|
|
6057
6442
|
const isSubmitting = useSelector(selectSubmitting);
|
|
6058
|
-
const
|
|
6443
|
+
const {
|
|
6444
|
+
options: selectedCoin
|
|
6445
|
+
} = useCurrencyOptions();
|
|
6446
|
+
const backendUrl = useSelector(selectBackendUrl);
|
|
6447
|
+
useEffect(() => {
|
|
6448
|
+
dispatch(setCurrencyOptions(selectedCoin));
|
|
6449
|
+
}, [selectedCoin]);
|
|
6059
6450
|
useEffect(() => {
|
|
6060
6451
|
if (!isReady) {
|
|
6061
6452
|
if (formStep > 0) setFormStep(0);
|
|
@@ -6063,9 +6454,8 @@ const TransferWidget = ({
|
|
|
6063
6454
|
}
|
|
6064
6455
|
}, [isReady, wizardStep, formStep]);
|
|
6065
6456
|
useEffect(() => {
|
|
6066
|
-
if (isConfirming) return;
|
|
6067
6457
|
dispatch(setServiceFee(fee));
|
|
6068
|
-
}, [fee
|
|
6458
|
+
}, [fee]);
|
|
6069
6459
|
const handleSubmit = async () => {
|
|
6070
6460
|
if (!isApproved) {
|
|
6071
6461
|
approve();
|
|
@@ -6075,17 +6465,35 @@ const TransferWidget = ({
|
|
|
6075
6465
|
dispatch(setSubmitting(true));
|
|
6076
6466
|
const params = JSON.stringify({
|
|
6077
6467
|
originAddress: walletAddress,
|
|
6078
|
-
originChain: sourceChain
|
|
6079
|
-
targetAddress:
|
|
6080
|
-
targetChain:
|
|
6468
|
+
originChain: sourceChain,
|
|
6469
|
+
targetAddress: targetAddress,
|
|
6470
|
+
targetChain: targetNetwork,
|
|
6471
|
+
symbol: selectedCoin.label,
|
|
6081
6472
|
amount: amount,
|
|
6082
|
-
fee:
|
|
6473
|
+
fee: fee
|
|
6083
6474
|
});
|
|
6084
6475
|
console.log(params);
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6476
|
+
await fetchWrapper.post(`${backendUrl}/auth`, params);
|
|
6477
|
+
const result = await fetchWrapper.post(`${backendUrl}/submit`, params);
|
|
6478
|
+
console.log(result);
|
|
6479
|
+
if ((result === null || result === void 0 ? void 0 : result.code) !== 0) {
|
|
6480
|
+
errorHandler(result);
|
|
6481
|
+
dispatch(setSubmitting(false));
|
|
6482
|
+
return;
|
|
6483
|
+
}
|
|
6484
|
+
let txId = -1;
|
|
6485
|
+
for (const event of result.events) {
|
|
6486
|
+
if (event.type === 'transaction_requested') {
|
|
6487
|
+
for (const attr of event.attributes) {
|
|
6488
|
+
if (attr.key === 'txId') {
|
|
6489
|
+
txId = attr.value;
|
|
6490
|
+
}
|
|
6491
|
+
}
|
|
6492
|
+
}
|
|
6493
|
+
}
|
|
6494
|
+
console.log(txId);
|
|
6495
|
+
dispatch(setTxId(txId));
|
|
6496
|
+
dispatch(setSubmitted(true));
|
|
6089
6497
|
dispatch(setSubmitting(false));
|
|
6090
6498
|
} catch (e) {
|
|
6091
6499
|
errorHandler(e);
|
|
@@ -6093,39 +6501,51 @@ const TransferWidget = ({
|
|
|
6093
6501
|
}
|
|
6094
6502
|
};
|
|
6095
6503
|
const onNext = () => {
|
|
6096
|
-
if (isWizard && wizardStep <
|
|
6504
|
+
if (isWizard && wizardStep < 5) {
|
|
6097
6505
|
if (wizardStep === 1 && !isReady) return;
|
|
6098
6506
|
if (wizardStep === 3) {
|
|
6099
|
-
if (
|
|
6100
|
-
setWizardStep(
|
|
6101
|
-
dispatch(setConfirming(true));
|
|
6507
|
+
if (targetAddress) {
|
|
6508
|
+
setWizardStep(4);
|
|
6102
6509
|
}
|
|
6103
6510
|
return;
|
|
6104
6511
|
}
|
|
6105
|
-
if (
|
|
6512
|
+
if (wizardStep === 4) {
|
|
6513
|
+
if (fee >= 0 && amount > 0) {
|
|
6514
|
+
setWizardStep(5);
|
|
6515
|
+
}
|
|
6516
|
+
return;
|
|
6517
|
+
}
|
|
6518
|
+
if (mode === ModeOptions.payment && wizardStep === 1 && fee >= 0) {
|
|
6519
|
+
dispatch(setConfirming(true));
|
|
6520
|
+
setWizardStep(5);
|
|
6521
|
+
} else setWizardStep(step => step + 1);
|
|
6106
6522
|
}
|
|
6107
6523
|
if (!isWizard && !formStep) {
|
|
6108
6524
|
if (isReady) {
|
|
6109
|
-
if (fee
|
|
6525
|
+
if (fee >= 0 && mode === ModeOptions.payment || fee >= 0 && targetAddress && amount > 0) {
|
|
6110
6526
|
dispatch(setConfirming(true));
|
|
6111
6527
|
setFormStep(1);
|
|
6112
6528
|
}
|
|
6113
6529
|
return;
|
|
6114
6530
|
}
|
|
6115
6531
|
}
|
|
6116
|
-
if (isWizard && wizardStep ===
|
|
6532
|
+
if (isWizard && wizardStep === 5 || !isWizard && formStep > 0) {
|
|
6117
6533
|
handleSubmit();
|
|
6118
6534
|
}
|
|
6119
6535
|
};
|
|
6120
6536
|
const onBack = () => {
|
|
6537
|
+
if (isApproving || isSubmitting) return;
|
|
6121
6538
|
if (isWizard && wizardStep > 0) {
|
|
6122
|
-
if (mode === ModeOptions.payment && wizardStep ===
|
|
6539
|
+
if (mode === ModeOptions.payment && wizardStep === 5) setWizardStep(1);else setWizardStep(step => step - 1);
|
|
6123
6540
|
dispatch(setConfirming(false));
|
|
6124
6541
|
}
|
|
6125
6542
|
if (!isWizard && formStep > 0) {
|
|
6126
6543
|
setFormStep(0);
|
|
6127
6544
|
dispatch(setConfirming(false));
|
|
6128
6545
|
}
|
|
6546
|
+
if (isWizard && wizardStep === 0 || !isWizard && formStep === 0) {
|
|
6547
|
+
closeHandler();
|
|
6548
|
+
}
|
|
6129
6549
|
};
|
|
6130
6550
|
useEffect(() => {
|
|
6131
6551
|
dispatch(setTheme(_theme));
|
|
@@ -6138,9 +6558,14 @@ const TransferWidget = ({
|
|
|
6138
6558
|
className: 'topbar'
|
|
6139
6559
|
}, React.createElement("div", {
|
|
6140
6560
|
className: 'title'
|
|
6141
|
-
}, React.createElement("h3", null, isWizard && wizardStep === 3 || !isWizard && formStep > 0 ? '
|
|
6561
|
+
}, React.createElement("h3", null, isWizard && wizardStep === 3 || !isWizard && formStep > 0 ? (titleOption === null || titleOption === void 0 ? void 0 : titleOption.confirmTitle) ?? 'Transfer Details' : (titleOption === null || titleOption === void 0 ? void 0 : titleOption.initialTitle) ?? 'New Transfer')), React.createElement("div", {
|
|
6142
6562
|
className: 'control-buttons'
|
|
6143
|
-
}, React.createElement("
|
|
6563
|
+
}, React.createElement("div", {
|
|
6564
|
+
className: 'menu-button',
|
|
6565
|
+
onClick: () => setMenuOpen(prev => !prev)
|
|
6566
|
+
}, "I need help", React.createElement(Dropdown, {
|
|
6567
|
+
open: menuOpen
|
|
6568
|
+
})), React.createElement("button", {
|
|
6144
6569
|
className: 'icon-button',
|
|
6145
6570
|
onClick: () => {
|
|
6146
6571
|
closeHandler();
|
|
@@ -6155,32 +6580,44 @@ const TransferWidget = ({
|
|
|
6155
6580
|
}, React.createElement("p", null, "Connect your wallet"), React.createElement(WalletButton, {
|
|
6156
6581
|
errorBelow: true
|
|
6157
6582
|
})) : wizardStep === 2 ? React.createElement(Network, {
|
|
6158
|
-
|
|
6159
|
-
}) : wizardStep === 3 ? React.createElement(
|
|
6583
|
+
isOriginChain: false
|
|
6584
|
+
}) : wizardStep === 3 ? React.createElement(AddressInputWizard, null) : wizardStep === 4 ? React.createElement(CoinSelect, null) : React.createElement(ConfirmDetails, {
|
|
6585
|
+
isApproved: isApproved
|
|
6586
|
+
}) : formStep === 0 ? React.createElement(SingleForm, null) : React.createElement(ConfirmDetails, {
|
|
6587
|
+
isApproved: isApproved
|
|
6588
|
+
})), React.createElement("div", {
|
|
6160
6589
|
className: 'kima-card-footer'
|
|
6161
6590
|
}, React.createElement(Cross$1, {
|
|
6162
6591
|
fill: _theme === 'light' ? 'black' : '#C5C5C5'
|
|
6163
|
-
}), React.createElement(
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
|
|
6168
|
-
|
|
6169
|
-
|
|
6170
|
-
|
|
6592
|
+
}), React.createElement(SecondaryButton, {
|
|
6593
|
+
clickHandler: () => {
|
|
6594
|
+
setWizard(prev => !prev);
|
|
6595
|
+
},
|
|
6596
|
+
theme: _theme,
|
|
6597
|
+
style: {
|
|
6598
|
+
style: {
|
|
6599
|
+
width: '12em',
|
|
6600
|
+
marginLeft: 'auto'
|
|
6601
|
+
}
|
|
6602
|
+
}
|
|
6603
|
+
}, "Switch to ", isWizard ? 'Form' : 'Wizard'), React.createElement(SecondaryButton, {
|
|
6171
6604
|
clickHandler: onBack,
|
|
6172
6605
|
theme: _theme
|
|
6173
6606
|
}, isWizard && wizardStep > 0 || !isWizard && formStep > 0 ? 'Back' : 'Cancel'), React.createElement(PrimaryButton, {
|
|
6174
6607
|
clickHandler: onNext,
|
|
6175
6608
|
isLoading: isApproving || isSubmitting
|
|
6176
|
-
}, isWizard && wizardStep ===
|
|
6609
|
+
}, isWizard && wizardStep === 5 || !isWizard && formStep === 1 ? isApproved ? isSubmitting ? 'Submitting...' : 'Submit' : isApproving ? 'Approving...' : 'Approve' : 'Next')), React.createElement(WalletConnectModal, null), React.createElement(HelpPopup, null));
|
|
6177
6610
|
};
|
|
6178
6611
|
|
|
6179
6612
|
const KimaTransactionWidget = ({
|
|
6613
|
+
mode,
|
|
6614
|
+
txId,
|
|
6180
6615
|
theme: _theme = ThemeOptions.light,
|
|
6181
6616
|
fontSize: _fontSize = FontSizeOptions.medium,
|
|
6182
|
-
|
|
6617
|
+
titleOption,
|
|
6183
6618
|
transactionOption,
|
|
6619
|
+
kimaBackendUrl,
|
|
6620
|
+
kimaNodeProviderQuery,
|
|
6184
6621
|
errorHandler: _errorHandler = () => void 0,
|
|
6185
6622
|
closeHandler: _closeHandler = () => void 0,
|
|
6186
6623
|
successHandler: _successHandler = () => void 0
|
|
@@ -6193,10 +6630,20 @@ const KimaTransactionWidget = ({
|
|
|
6193
6630
|
dispatch(setErrorHandler(_errorHandler));
|
|
6194
6631
|
dispatch(setCloseHandler(_closeHandler));
|
|
6195
6632
|
dispatch(setSuccessHandler(_successHandler));
|
|
6633
|
+
dispatch(setBackendUrl(kimaBackendUrl));
|
|
6634
|
+
dispatch(setNodeProviderQuery(kimaNodeProviderQuery));
|
|
6196
6635
|
dispatch(setMode(mode));
|
|
6197
6636
|
if (mode === ModeOptions.payment) {
|
|
6198
|
-
dispatch(
|
|
6637
|
+
dispatch(setTargetNetwork((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || ChainName.ETHEREUM));
|
|
6638
|
+
(async function () {
|
|
6639
|
+
const networks = await fetchWrapper.get(`${kimaNodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${(transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || ChainName.ETHEREUM}`);
|
|
6640
|
+
dispatch(setOriginNetwork(networks.Chains[0]));
|
|
6641
|
+
})();
|
|
6642
|
+
dispatch(setTargetAddress((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetAddress) || ''));
|
|
6199
6643
|
dispatch(setAmount((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.amount) || 0));
|
|
6644
|
+
} else if (mode === ModeOptions.status) {
|
|
6645
|
+
dispatch(setTxId(txId || 1));
|
|
6646
|
+
dispatch(setSubmitted(true));
|
|
6200
6647
|
}
|
|
6201
6648
|
}, [_theme, transactionOption, _errorHandler, _closeHandler, mode]);
|
|
6202
6649
|
return submitted ? React.createElement(TransactionWidget, {
|
|
@@ -6204,7 +6651,8 @@ const KimaTransactionWidget = ({
|
|
|
6204
6651
|
fontSize: _fontSize
|
|
6205
6652
|
}) : React.createElement(TransferWidget, {
|
|
6206
6653
|
theme: _theme,
|
|
6207
|
-
fontSize: _fontSize
|
|
6654
|
+
fontSize: _fontSize,
|
|
6655
|
+
titleOption: titleOption
|
|
6208
6656
|
});
|
|
6209
6657
|
};
|
|
6210
6658
|
|
|
@@ -6222,5 +6670,5 @@ const KimaProvider = ({
|
|
|
6222
6670
|
}, children))));
|
|
6223
6671
|
};
|
|
6224
6672
|
|
|
6225
|
-
export { CurrencyOptions, FontSizeOptions, KimaProvider, KimaTransactionWidget, ModeOptions, SupportNetworks, ThemeOptions };
|
|
6673
|
+
export { CurrencyOptions, FontSizeOptions, KimaProvider, KimaTransactionWidget, ModeOptions, ChainName as SupportNetworks, ThemeOptions };
|
|
6226
6674
|
//# sourceMappingURL=index.modern.js.map
|