@kimafinance/kima-transaction-widget 1.0.9 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -546,7 +546,7 @@ var Copy = function Copy(_ref) {
546
546
  };
547
547
 
548
548
  var SOLANA_USDK_ADDRESS = 'GkbnUDkymDTF4U6Z5wM5kKJn3GmGndMn2rN5typmyUHY';
549
- var ETHEREUM_USDK_ADDRESS = '0x8BAd07F2445D6390DD94Eca08882b7d515EAbe6C';
549
+ var ETHEREUM_USDK_ADDRESS = '0x7C043d4D2b505740742dF6Fdb79C5caEe08728a5';
550
550
  var POLYGON_USDK_ADDRESS = '0x5bd4865a6dEd507dA08ed1aBE3cd971a7e0405D7';
551
551
  var AVAX_USDK_ADDRESS = '0x7C043d4D2b505740742dF6Fdb79C5caEe08728a5';
552
552
  var FUSE_GDOLLAR_ADDRESS = '0x79BeecC4b165Ccf547662cB4f7C0e83b3796E5b3';
@@ -563,7 +563,7 @@ var _CHAIN_NAMES_TO_IDS, _CHAIN_NAMES_TO_STRIN, _CHAIN_NAMES_TO_EXPLO, _CHAIN_NA
563
563
  })(exports.SupportNetworks || (exports.SupportNetworks = {}));
564
564
  var SupportedChainId;
565
565
  (function (SupportedChainId) {
566
- SupportedChainId[SupportedChainId["ETHEREUM"] = 5] = "ETHEREUM";
566
+ SupportedChainId[SupportedChainId["ETHEREUM"] = 11155111] = "ETHEREUM";
567
567
  SupportedChainId[SupportedChainId["POLYGON"] = 80001] = "POLYGON";
568
568
  SupportedChainId[SupportedChainId["AVALANCHE"] = 43113] = "AVALANCHE";
569
569
  SupportedChainId[SupportedChainId["FUSE"] = 122] = "FUSE";
@@ -571,7 +571,7 @@ var SupportedChainId;
571
571
  })(SupportedChainId || (SupportedChainId = {}));
572
572
  var CHAIN_NAMES_TO_IDS = (_CHAIN_NAMES_TO_IDS = {}, _CHAIN_NAMES_TO_IDS[exports.SupportNetworks.ETHEREUM] = SupportedChainId.ETHEREUM, _CHAIN_NAMES_TO_IDS[exports.SupportNetworks.POLYGON] = SupportedChainId.POLYGON, _CHAIN_NAMES_TO_IDS[exports.SupportNetworks.AVALANCHE] = SupportedChainId.AVALANCHE, _CHAIN_NAMES_TO_IDS[exports.SupportNetworks.FUSE] = SupportedChainId.FUSE, _CHAIN_NAMES_TO_IDS[exports.SupportNetworks.CELO] = SupportedChainId.CELO, _CHAIN_NAMES_TO_IDS);
573
573
  var CHAIN_NAMES_TO_STRING = (_CHAIN_NAMES_TO_STRIN = {}, _CHAIN_NAMES_TO_STRIN[exports.SupportNetworks.ETHEREUM] = 'Ethereum', _CHAIN_NAMES_TO_STRIN[exports.SupportNetworks.POLYGON] = 'Polygon', _CHAIN_NAMES_TO_STRIN[exports.SupportNetworks.AVALANCHE] = 'Avalanche', _CHAIN_NAMES_TO_STRIN[exports.SupportNetworks.FUSE] = 'Fuse', _CHAIN_NAMES_TO_STRIN[exports.SupportNetworks.CELO] = 'Celo', _CHAIN_NAMES_TO_STRIN[exports.SupportNetworks.SOLANA] = 'Solana', _CHAIN_NAMES_TO_STRIN);
574
- var CHAIN_NAMES_TO_EXPLORER = (_CHAIN_NAMES_TO_EXPLO = {}, _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.ETHEREUM] = 'goerli.etherscan.io', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.POLYGON] = 'mumbai.polygonscan.com', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.AVALANCHE] = 'testnet.snowtrace.io', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.FUSE] = 'explorer.fuse.io', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.CELO] = 'explorer.celo.org', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.SOLANA] = 'solscan.io', _CHAIN_NAMES_TO_EXPLO);
574
+ var CHAIN_NAMES_TO_EXPLORER = (_CHAIN_NAMES_TO_EXPLO = {}, _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.ETHEREUM] = 'sepolia.etherscan.io', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.POLYGON] = 'mumbai.polygonscan.com', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.AVALANCHE] = 'testnet.snowtrace.io', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.FUSE] = 'explorer.fuse.io', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.CELO] = 'explorer.celo.org', _CHAIN_NAMES_TO_EXPLO[exports.SupportNetworks.SOLANA] = 'solscan.io', _CHAIN_NAMES_TO_EXPLO);
575
575
  var CHAIN_NAMES_TO_GECKO_ID = (_CHAIN_NAMES_TO_GECKO = {}, _CHAIN_NAMES_TO_GECKO[exports.SupportNetworks.ETHEREUM] = 'ethereum', _CHAIN_NAMES_TO_GECKO[exports.SupportNetworks.POLYGON] = 'matic-network', _CHAIN_NAMES_TO_GECKO[exports.SupportNetworks.AVALANCHE] = 'avalanche-2', _CHAIN_NAMES_TO_GECKO[exports.SupportNetworks.FUSE] = 'fuse-network-token', _CHAIN_NAMES_TO_GECKO[exports.SupportNetworks.CELO] = 'celo', _CHAIN_NAMES_TO_GECKO[exports.SupportNetworks.SOLANA] = 'solana', _CHAIN_NAMES_TO_GECKO);
576
576
  var CHAIN_IDS_TO_NAMES = (_CHAIN_IDS_TO_NAMES = {}, _CHAIN_IDS_TO_NAMES[SupportedChainId.ETHEREUM] = exports.SupportNetworks.ETHEREUM, _CHAIN_IDS_TO_NAMES[SupportedChainId.POLYGON] = exports.SupportNetworks.POLYGON, _CHAIN_IDS_TO_NAMES[SupportedChainId.AVALANCHE] = exports.SupportNetworks.AVALANCHE, _CHAIN_IDS_TO_NAMES[SupportedChainId.FUSE] = exports.SupportNetworks.FUSE, _CHAIN_IDS_TO_NAMES[SupportedChainId.CELO] = exports.SupportNetworks.CELO, _CHAIN_IDS_TO_NAMES);
577
577
  var networkOptions = [{
@@ -1011,6 +1011,25 @@ var useEthereumProvider = function useEthereumProvider() {
1011
1011
  return React.useContext(EthereumProviderContext);
1012
1012
  };
1013
1013
 
1014
+ // A type of promise-like that resolves synchronously and supports only one observer
1015
+
1016
+ const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
1017
+
1018
+ const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
1019
+
1020
+ // Asynchronously call a function and send errors to recovery continuation
1021
+ function _catch(body, recover) {
1022
+ try {
1023
+ var result = body();
1024
+ } catch(e) {
1025
+ return recover(e);
1026
+ }
1027
+ if (result && result.then) {
1028
+ return result.then(void 0, recover);
1029
+ }
1030
+ return result;
1031
+ }
1032
+
1014
1033
  var Loading180Ring = function Loading180Ring(_ref) {
1015
1034
  var width = _ref.width,
1016
1035
  height = _ref.height,
@@ -1191,17 +1210,24 @@ function useNetworkOptions() {
1191
1210
  var nodeProviderQuery = reactRedux.useSelector(selectNodeProviderQuery);
1192
1211
  React.useEffect(function () {
1193
1212
  if (!nodeProviderQuery) return;
1194
- try {
1195
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/getChains")).then(function (networks) {
1196
- setOptions(networkOptions.filter(function (network) {
1197
- return networks.Chains.findIndex(function (id) {
1198
- return id === network.id;
1199
- }) >= 0;
1200
- }));
1201
- });
1202
- } catch (e) {
1203
- Promise.reject(e);
1204
- }
1213
+ (function () {
1214
+ try {
1215
+ var _temp2 = _catch(function () {
1216
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/getChains")).then(function (networks) {
1217
+ setOptions(networkOptions.filter(function (network) {
1218
+ return networks.Chains.findIndex(function (id) {
1219
+ return id === network.id;
1220
+ }) >= 0;
1221
+ }));
1222
+ });
1223
+ }, function (e) {
1224
+ console.log('rpc disconnected', e);
1225
+ });
1226
+ return _temp2 && _temp2.then ? _temp2.then(function () {}) : void 0;
1227
+ } catch (e) {
1228
+ Promise.reject(e);
1229
+ }
1230
+ })();
1205
1231
  }, [nodeProviderQuery]);
1206
1232
  return React.useMemo(function () {
1207
1233
  return {
@@ -1244,26 +1270,40 @@ var Network = function Network(_ref) {
1244
1270
  }, [networkOptions, isOriginChain, availableNetworks]);
1245
1271
  React.useEffect(function () {
1246
1272
  if (!nodeProviderQuery || mode !== exports.ModeOptions.bridge) return;
1247
- try {
1248
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + originNetwork)).then(function (networks) {
1249
- setAvailableNetworks(networks.Chains);
1250
- if (isOriginChain) {
1251
- dispatch(setTargetNetwork(networks.Chains[0]));
1252
- }
1253
- });
1254
- } catch (e) {
1255
- Promise.reject(e);
1256
- }
1273
+ (function () {
1274
+ try {
1275
+ var _temp2 = _catch(function () {
1276
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + originNetwork)).then(function (networks) {
1277
+ setAvailableNetworks(networks.Chains);
1278
+ if (isOriginChain) {
1279
+ dispatch(setTargetNetwork(networks.Chains[0]));
1280
+ }
1281
+ });
1282
+ }, function (e) {
1283
+ console.log('rpc disconnected', e);
1284
+ });
1285
+ return _temp2 && _temp2.then ? _temp2.then(function () {}) : void 0;
1286
+ } catch (e) {
1287
+ Promise.reject(e);
1288
+ }
1289
+ })();
1257
1290
  }, [nodeProviderQuery, originNetwork, mode, isOriginChain]);
1258
1291
  React.useEffect(function () {
1259
1292
  if (!nodeProviderQuery || mode !== exports.ModeOptions.payment) return;
1260
- try {
1261
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + targetNetwork)).then(function (networks) {
1262
- setAvailableNetworks(networks.Chains);
1263
- });
1264
- } catch (e) {
1265
- Promise.reject(e);
1266
- }
1293
+ (function () {
1294
+ try {
1295
+ var _temp4 = _catch(function () {
1296
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + targetNetwork)).then(function (networks) {
1297
+ setAvailableNetworks(networks.Chains);
1298
+ });
1299
+ }, function (e) {
1300
+ console.log('rpc disconnected', e);
1301
+ });
1302
+ return _temp4 && _temp4.then ? _temp4.then(function () {}) : void 0;
1303
+ } catch (e) {
1304
+ Promise.reject(e);
1305
+ }
1306
+ })();
1267
1307
  }, [nodeProviderQuery, mode]);
1268
1308
  React.useEffect(function () {
1269
1309
  var _sliderRef$current, _sliderRef$current5, _sliderRef$current6, _sliderRef$current7;
@@ -2073,26 +2113,40 @@ var NetworkDropdown = function NetworkDropdown(_ref) {
2073
2113
  var dispatch = reactRedux.useDispatch();
2074
2114
  React.useEffect(function () {
2075
2115
  if (!nodeProviderQuery || mode !== exports.ModeOptions.bridge) return;
2076
- try {
2077
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + originNetwork)).then(function (networks) {
2078
- setAvailableNetworks(networks.Chains);
2079
- if (isOriginChain) {
2080
- dispatch(setTargetNetwork(networks.Chains[0]));
2081
- }
2082
- });
2083
- } catch (e) {
2084
- Promise.reject(e);
2085
- }
2116
+ (function () {
2117
+ try {
2118
+ var _temp2 = _catch(function () {
2119
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + originNetwork)).then(function (networks) {
2120
+ setAvailableNetworks(networks.Chains);
2121
+ if (isOriginChain) {
2122
+ dispatch(setTargetNetwork(networks.Chains[0]));
2123
+ }
2124
+ });
2125
+ }, function (e) {
2126
+ console.log('rpc disconnected', e);
2127
+ });
2128
+ return _temp2 && _temp2.then ? _temp2.then(function () {}) : void 0;
2129
+ } catch (e) {
2130
+ Promise.reject(e);
2131
+ }
2132
+ })();
2086
2133
  }, [nodeProviderQuery, originNetwork, mode, isOriginChain]);
2087
2134
  React.useEffect(function () {
2088
2135
  if (!nodeProviderQuery || mode !== exports.ModeOptions.payment) return;
2089
- try {
2090
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + targetNetwork)).then(function (networks) {
2091
- setAvailableNetworks(networks.Chains);
2092
- });
2093
- } catch (e) {
2094
- Promise.reject(e);
2095
- }
2136
+ (function () {
2137
+ try {
2138
+ var _temp4 = _catch(function () {
2139
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + targetNetwork)).then(function (networks) {
2140
+ setAvailableNetworks(networks.Chains);
2141
+ });
2142
+ }, function (e) {
2143
+ console.log('rpc disconnected', e);
2144
+ });
2145
+ return _temp4 && _temp4.then ? _temp4.then(function () {}) : void 0;
2146
+ } catch (e) {
2147
+ Promise.reject(e);
2148
+ }
2149
+ })();
2096
2150
  }, [nodeProviderQuery, mode]);
2097
2151
  return React__default.createElement("div", {
2098
2152
  className: "network-dropdown " + theme + " " + (collapsed ? 'collapsed' : ''),
@@ -2430,59 +2484,63 @@ var TransactionWidget = function TransactionWidget(_ref) {
2430
2484
  if (!nodeProviderQuery || txId < 0) return;
2431
2485
  var timerId = setInterval(function () {
2432
2486
  try {
2433
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/transaction_data/" + txId)).then(function (result) {
2434
- var data = result === null || result === void 0 ? void 0 : result.transactionData;
2435
- if (!data) return;
2436
- var status = data.status;
2437
- console.log(status);
2438
- setData({
2439
- sourceChain: data.originChain,
2440
- targetChain: data.targetChain,
2441
- tssPullHash: data.tssPullHash,
2442
- tssReleaseHash: data.tssReleaseHash,
2443
- amount: +data.amount,
2444
- symbol: data.symbol,
2445
- kimaTxHash: data.kimaTxHash
2487
+ return Promise.resolve(_catch(function () {
2488
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/transaction_data/" + txId)).then(function (result) {
2489
+ var data = result === null || result === void 0 ? void 0 : result.transactionData;
2490
+ if (!data) return;
2491
+ var status = data.status;
2492
+ console.log(status);
2493
+ setData({
2494
+ sourceChain: data.originChain,
2495
+ targetChain: data.targetChain,
2496
+ tssPullHash: data.tssPullHash,
2497
+ tssReleaseHash: data.tssReleaseHash,
2498
+ amount: +data.amount,
2499
+ symbol: data.symbol,
2500
+ kimaTxHash: data.kimaTxHash
2501
+ });
2502
+ setErrorStep(-1);
2503
+ if (status === TransactionStatus.AVAILABLE) {
2504
+ setStep(1);
2505
+ setPercent(25);
2506
+ setLoadingStep(1);
2507
+ } else if (status === TransactionStatus.CONFIRMED) {
2508
+ setStep(2);
2509
+ setPercent(50);
2510
+ setLoadingStep(2);
2511
+ } else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {
2512
+ setStep(1);
2513
+ setPercent(25);
2514
+ setErrorStep(1);
2515
+ setLoadingStep(-1);
2516
+ } else if (status === TransactionStatus.KEYSIGNED) {
2517
+ setStep(3);
2518
+ setPercent(75);
2519
+ setLoadingStep(3);
2520
+ } else if (status === TransactionStatus.PAID) {
2521
+ setStep(3);
2522
+ setPercent(90);
2523
+ setLoadingStep(3);
2524
+ } else if (status === TransactionStatus.FAILED) {
2525
+ setStep(3);
2526
+ setPercent(90);
2527
+ setErrorStep(3);
2528
+ setLoadingStep(-1);
2529
+ } else if (status === TransactionStatus.COMPLETED) {
2530
+ setStep(4);
2531
+ setPercent(100);
2532
+ clearInterval(timerId);
2533
+ setLoadingStep(-1);
2534
+ setTimeout(function () {
2535
+ successHandler({
2536
+ txId: txId
2537
+ });
2538
+ }, 3000);
2539
+ }
2446
2540
  });
2447
- setErrorStep(-1);
2448
- if (status === TransactionStatus.AVAILABLE) {
2449
- setStep(1);
2450
- setPercent(25);
2451
- setLoadingStep(1);
2452
- } else if (status === TransactionStatus.CONFIRMED) {
2453
- setStep(2);
2454
- setPercent(50);
2455
- setLoadingStep(2);
2456
- } else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {
2457
- setStep(1);
2458
- setPercent(25);
2459
- setErrorStep(1);
2460
- setLoadingStep(-1);
2461
- } else if (status === TransactionStatus.KEYSIGNED) {
2462
- setStep(3);
2463
- setPercent(75);
2464
- setLoadingStep(3);
2465
- } else if (status === TransactionStatus.PAID) {
2466
- setStep(3);
2467
- setPercent(90);
2468
- setLoadingStep(3);
2469
- } else if (status === TransactionStatus.FAILED) {
2470
- setStep(3);
2471
- setPercent(90);
2472
- setErrorStep(3);
2473
- setLoadingStep(-1);
2474
- } else if (status === TransactionStatus.COMPLETED) {
2475
- setStep(4);
2476
- setPercent(100);
2477
- clearInterval(timerId);
2478
- setLoadingStep(-1);
2479
- setTimeout(function () {
2480
- successHandler({
2481
- txId: txId
2482
- });
2483
- }, 3000);
2484
- }
2485
- });
2541
+ }, function (e) {
2542
+ console.log('rpc disconnected', e);
2543
+ }));
2486
2544
  } catch (e) {
2487
2545
  return Promise.reject(e);
2488
2546
  }
@@ -2558,25 +2616,6 @@ var TransactionWidget = function TransactionWidget(_ref) {
2558
2616
  })));
2559
2617
  };
2560
2618
 
2561
- // A type of promise-like that resolves synchronously and supports only one observer
2562
-
2563
- const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
2564
-
2565
- const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
2566
-
2567
- // Asynchronously call a function and send errors to recovery continuation
2568
- function _catch(body, recover) {
2569
- try {
2570
- var result = body();
2571
- } catch(e) {
2572
- return recover(e);
2573
- }
2574
- if (result && result.then) {
2575
- return result.then(void 0, recover);
2576
- }
2577
- return result;
2578
- }
2579
-
2580
2619
  var SingleForm = function SingleForm() {
2581
2620
  var dispatch = reactRedux.useDispatch();
2582
2621
  var mode = reactRedux.useSelector(selectMode);
@@ -6550,19 +6589,29 @@ function useAllowance() {
6550
6589
  targetAddress = _useState3[0],
6551
6590
  setTargetAddress = _useState3[1];
6552
6591
  var isApproved = React.useMemo(function () {
6553
- if (!isEVMChain(sourceChain)) return splAllowance >= amount + serviceFee;
6592
+ if (!isEVMChain(sourceChain)) {
6593
+ return allowance >= amount + serviceFee;
6594
+ }
6554
6595
  if (allowance && amount && allowance.gte(units.parseUnits((amount + serviceFee).toString(), decimals))) return true;
6555
6596
  return false;
6556
6597
  }, [decimals, sourceChain, allowance, amount, splAllowance, serviceFee]);
6557
6598
  var updatePoolAddress = function updatePoolAddress() {
6558
6599
  try {
6559
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/tss_pubkey")).then(function (result) {
6560
- var _result$tssPubkey;
6561
- if ((result === null || result === void 0 ? void 0 : (_result$tssPubkey = result.tssPubkey) === null || _result$tssPubkey === void 0 ? void 0 : _result$tssPubkey.length) < 1) {
6600
+ return Promise.resolve(_catch(function () {
6601
+ if (sourceChain === exports.SupportNetworks.SOLANA) {
6602
+ setTargetAddress('8ymXJ6RH9k8qSf1xsvxSWgzPB9RYgUuHPDgonkFzUEhT');
6562
6603
  return;
6563
6604
  }
6564
- setTargetAddress(sourceChain === exports.SupportNetworks.SOLANA ? result.tssPubkey[0].ebdsa : result.tssPubkey[0].ecdsa);
6565
- });
6605
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/tss_pubkey")).then(function (result) {
6606
+ var _result$tssPubkey;
6607
+ if ((result === null || result === void 0 ? void 0 : (_result$tssPubkey = result.tssPubkey) === null || _result$tssPubkey === void 0 ? void 0 : _result$tssPubkey.length) < 1) {
6608
+ return;
6609
+ }
6610
+ setTargetAddress(sourceChain === exports.SupportNetworks.SOLANA ? result.tssPubkey[0].ebdsa : result.tssPubkey[0].ecdsa);
6611
+ });
6612
+ }, function (e) {
6613
+ console.log('rpc disconnected', e);
6614
+ }));
6566
6615
  } catch (e) {
6567
6616
  return Promise.reject(e);
6568
6617
  }
@@ -6574,15 +6623,35 @@ function useAllowance() {
6574
6623
  React.useEffect(function () {
6575
6624
  (function () {
6576
6625
  try {
6626
+ var _exit2 = false;
6577
6627
  return _catch(function () {
6578
- if (!isEVMChain(sourceChain) || !tokenAddress || !targetAddress || !signer || !signerAddress) return;
6579
- var erc20Contract = new contracts.Contract(tokenAddress, ERC20ABI.abi, signer);
6580
- return Promise.resolve(erc20Contract.decimals()).then(function (decimals) {
6581
- return Promise.resolve(erc20Contract.allowance(signerAddress, targetAddress)).then(function (userAllowance) {
6582
- setDecimals(+decimals);
6583
- setAllowance(userAllowance);
6628
+ function _temp2(_result2) {
6629
+ if (_exit2) return _result2;
6630
+ if (!tokenAddress || !targetAddress || !signer || !signerAddress) return;
6631
+ var erc20Contract = new contracts.Contract(tokenAddress, ERC20ABI.abi, signer);
6632
+ return Promise.resolve(erc20Contract.decimals()).then(function (decimals) {
6633
+ return Promise.resolve(erc20Contract.allowance(signerAddress, targetAddress)).then(function (userAllowance) {
6634
+ setDecimals(+decimals);
6635
+ setAllowance(userAllowance);
6636
+ });
6584
6637
  });
6585
- });
6638
+ }
6639
+ var _temp = function () {
6640
+ if (!isEVMChain(sourceChain) && publicKey && tokenAddress && connection) {
6641
+ var mint = new web3_js.PublicKey(tokenAddress);
6642
+ return Promise.resolve(getOrCreateAssociatedTokenAccount(connection, publicKey, mint, publicKey, signTransaction)).then(function (fromTokenAccount) {
6643
+ return Promise.resolve(connection.getParsedAccountInfo(fromTokenAccount.address)).then(function (accountInfo) {
6644
+ var _accountInfo$value, _parsedAccountInfo$pa, _parsedAccountInfo$pa2, _parsedAccountInfo$pa3, _parsedAccountInfo$pa4, _parsedAccountInfo$pa5;
6645
+ console.log('solana token account: ', accountInfo);
6646
+ setDecimals(COIN_LIST['USDK'].decimals);
6647
+ var parsedAccountInfo = accountInfo === null || accountInfo === void 0 ? void 0 : (_accountInfo$value = accountInfo.value) === null || _accountInfo$value === void 0 ? void 0 : _accountInfo$value.data;
6648
+ setAllowance(((_parsedAccountInfo$pa = parsedAccountInfo.parsed) === null || _parsedAccountInfo$pa === void 0 ? void 0 : (_parsedAccountInfo$pa2 = _parsedAccountInfo$pa.info) === null || _parsedAccountInfo$pa2 === void 0 ? void 0 : _parsedAccountInfo$pa2.delegate) === targetAddress ? (_parsedAccountInfo$pa3 = parsedAccountInfo.parsed) === null || _parsedAccountInfo$pa3 === void 0 ? void 0 : (_parsedAccountInfo$pa4 = _parsedAccountInfo$pa3.info) === null || _parsedAccountInfo$pa4 === void 0 ? void 0 : (_parsedAccountInfo$pa5 = _parsedAccountInfo$pa4.delegatedAmount) === null || _parsedAccountInfo$pa5 === void 0 ? void 0 : _parsedAccountInfo$pa5.uiAmount : 0);
6649
+ _exit2 = true;
6650
+ });
6651
+ });
6652
+ }
6653
+ }();
6654
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
6586
6655
  }, function (error) {
6587
6656
  errorHandler(error);
6588
6657
  });
@@ -6590,13 +6659,13 @@ function useAllowance() {
6590
6659
  Promise.reject(e);
6591
6660
  }
6592
6661
  })();
6593
- }, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain]);
6662
+ }, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain, publicKey]);
6594
6663
  var approve = React.useCallback(function () {
6595
6664
  try {
6596
- var _temp6 = function _temp6(_result2) {
6597
- if (_exit2) return _result2;
6665
+ var _temp8 = function _temp8(_result4) {
6666
+ if (_exit4) return _result4;
6598
6667
  if (!signTransaction) return;
6599
- var _temp3 = _catch(function () {
6668
+ var _temp5 = _catch(function () {
6600
6669
  dispatch(setApproving(true));
6601
6670
  var mint = new web3_js.PublicKey(tokenAddress);
6602
6671
  var toPublicKey = new web3_js.PublicKey(targetAddress);
@@ -6619,19 +6688,19 @@ function useAllowance() {
6619
6688
  errorHandler(e);
6620
6689
  dispatch(setApproving(false));
6621
6690
  });
6622
- if (_temp3 && _temp3.then) return _temp3.then(function () {});
6691
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
6623
6692
  };
6624
- var _exit2 = false;
6625
- var _temp7 = function () {
6693
+ var _exit4 = false;
6694
+ var _temp9 = function () {
6626
6695
  if (isEVMChain(sourceChain)) {
6627
- var _temp8 = function _temp8() {
6628
- _exit2 = true;
6696
+ var _temp10 = function _temp10() {
6697
+ _exit4 = true;
6629
6698
  };
6630
6699
  if (!decimals || !tokenAddress || !signer || !targetAddress) {
6631
- _exit2 = true;
6700
+ _exit4 = true;
6632
6701
  return;
6633
6702
  }
6634
- var _temp9 = _catch(function () {
6703
+ var _temp11 = _catch(function () {
6635
6704
  var erc20Contract = new contracts.Contract(tokenAddress, ERC20ABI.abi, signer);
6636
6705
  dispatch(setApproving(true));
6637
6706
  return Promise.resolve(erc20Contract.approve(targetAddress, units.parseUnits((amount + serviceFee).toString(), decimals))).then(function (approve) {
@@ -6643,10 +6712,10 @@ function useAllowance() {
6643
6712
  errorHandler(error);
6644
6713
  dispatch(setApproving(false));
6645
6714
  });
6646
- return _temp9 && _temp9.then ? _temp9.then(_temp8) : _temp8(_temp9);
6715
+ return _temp11 && _temp11.then ? _temp11.then(_temp10) : _temp10(_temp11);
6647
6716
  }
6648
6717
  }();
6649
- return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp6) : _temp6(_temp7));
6718
+ return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(_temp8) : _temp8(_temp9));
6650
6719
  } catch (e) {
6651
6720
  return Promise.reject(e);
6652
6721
  }
@@ -6672,7 +6741,7 @@ var getFeeInUSD = function getFeeInUSD(sourceChain, targetChain, gasFee) {
6672
6741
  if (targetChain === exports.SupportNetworks.SOLANA) {
6673
6742
  targetFee = +gasFee[targetChain] * +targetTokenPrice;
6674
6743
  } else targetFee = gasFee[targetChain] ? +gasFee[targetChain] * max_gas * +targetTokenPrice / 1e9 : 0;
6675
- return [sourceFee, targetFee];
6744
+ return [isNaN(sourceFee) ? 0 : sourceFee, isNaN(targetFee) ? 0 : targetFee];
6676
6745
  });
6677
6746
  } catch (e) {
6678
6747
  return Promise.reject(e);
@@ -6744,7 +6813,7 @@ function useServiceFee() {
6744
6813
  });
6745
6814
  });
6746
6815
  }, function (e) {
6747
- console.log(e);
6816
+ console.log('rpc disconnected', e);
6748
6817
  });
6749
6818
  return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(function () {}) : void 0);
6750
6819
  } catch (e) {
@@ -6756,7 +6825,7 @@ function useServiceFee() {
6756
6825
  getServiceFee();
6757
6826
  var timerId = setInterval(function () {
6758
6827
  getServiceFee();
6759
- }, 5 * 1000);
6828
+ }, 20 * 1000);
6760
6829
  return function () {
6761
6830
  clearInterval(timerId);
6762
6831
  };
@@ -6786,14 +6855,21 @@ function useCurrencyOptions() {
6786
6855
  var targetNetwork = reactRedux.useSelector(selectTargetNetwork);
6787
6856
  React.useEffect(function () {
6788
6857
  if (!nodeProviderQuery || !originNetwork || !targetNetwork) return;
6789
- try {
6790
- return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/getCurrencies/" + originNetwork + "/" + targetNetwork)).then(function (coins) {
6791
- var _coins$Currencies;
6792
- setOptions(COIN_LIST[(_coins$Currencies = coins.Currencies) !== null && _coins$Currencies !== void 0 && _coins$Currencies.length ? coins.Currencies[0] : 'USDK']);
6793
- });
6794
- } catch (e) {
6795
- Promise.reject(e);
6796
- }
6858
+ (function () {
6859
+ try {
6860
+ var _temp2 = _catch(function () {
6861
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/getCurrencies/" + originNetwork + "/" + targetNetwork)).then(function (coins) {
6862
+ var _coins$Currencies;
6863
+ setOptions(COIN_LIST[(_coins$Currencies = coins.Currencies) !== null && _coins$Currencies !== void 0 && _coins$Currencies.length ? coins.Currencies[0] : 'USDK']);
6864
+ });
6865
+ }, function (e) {
6866
+ console.log('rpc disconnected', e);
6867
+ });
6868
+ return _temp2 && _temp2.then ? _temp2.then(function () {}) : void 0;
6869
+ } catch (e) {
6870
+ Promise.reject(e);
6871
+ }
6872
+ })();
6797
6873
  }, [nodeProviderQuery, originNetwork, targetNetwork]);
6798
6874
  return React.useMemo(function () {
6799
6875
  return {
@@ -6839,6 +6915,22 @@ var TransferWidget = function TransferWidget(_ref) {
6839
6915
  var _useCurrencyOptions = useCurrencyOptions(),
6840
6916
  selectedCoin = _useCurrencyOptions.options;
6841
6917
  var backendUrl = reactRedux.useSelector(selectBackendUrl);
6918
+ var nodeProviderQuery = reactRedux.useSelector(selectNodeProviderQuery);
6919
+ React.useEffect(function () {
6920
+ if (!nodeProviderQuery) return;
6921
+ try {
6922
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/pool_balance")).then(function (res) {
6923
+ console.table(res.poolBalance.map(function (item) {
6924
+ return {
6925
+ chain: CHAIN_NAMES_TO_STRING[item.chainName],
6926
+ balance: +item.balance
6927
+ };
6928
+ }));
6929
+ });
6930
+ } catch (e) {
6931
+ Promise.reject(e);
6932
+ }
6933
+ }, [nodeProviderQuery]);
6842
6934
  React.useEffect(function () {
6843
6935
  dispatch(setCurrencyOptions(selectedCoin));
6844
6936
  }, [selectedCoin]);
@@ -6851,53 +6943,84 @@ var TransferWidget = function TransferWidget(_ref) {
6851
6943
  React.useEffect(function () {
6852
6944
  dispatch(setServiceFee(fee));
6853
6945
  }, [fee]);
6946
+ var checkPoolBalance = function checkPoolBalance() {
6947
+ try {
6948
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/pool_balance")).then(function (res) {
6949
+ var poolBalance = res.poolBalance;
6950
+ for (var i = 0; i < poolBalance.length; i++) {
6951
+ if (poolBalance[i].chainName === targetNetwork) {
6952
+ if (+poolBalance[i].balance >= amount + fee) {
6953
+ return true;
6954
+ }
6955
+ var symbol = targetNetwork === exports.SupportNetworks.FUSE || targetNetwork === exports.SupportNetworks.CELO ? 'G$' : 'USDK';
6956
+ console.log("Tried to transfer " + amount + " " + symbol + ", but " + CHAIN_NAMES_TO_STRING[targetNetwork] + " pool has only " + +poolBalance[i].balance + " " + symbol);
6957
+ return false;
6958
+ }
6959
+ }
6960
+ console.log(CHAIN_NAMES_TO_STRING[targetNetwork] + " pool error");
6961
+ return false;
6962
+ });
6963
+ } catch (e) {
6964
+ return Promise.reject(e);
6965
+ }
6966
+ };
6854
6967
  var handleSubmit = function handleSubmit() {
6855
6968
  try {
6969
+ var _exit3 = false;
6856
6970
  if (!isApproved) {
6857
6971
  approve();
6858
6972
  return Promise.resolve();
6859
6973
  }
6860
6974
  return Promise.resolve(_catch(function () {
6975
+ var _exit2 = false;
6861
6976
  dispatch(setSubmitting(true));
6862
- var params = JSON.stringify({
6863
- originAddress: walletAddress,
6864
- originChain: sourceChain,
6865
- targetAddress: targetAddress,
6866
- targetChain: targetNetwork,
6867
- symbol: selectedCoin.label,
6868
- amount: amount,
6869
- fee: fee
6870
- });
6871
- console.log(params);
6872
- return Promise.resolve(fetchWrapper.post(backendUrl + "/auth", params)).then(function () {
6873
- return Promise.resolve(fetchWrapper.post(backendUrl + "/submit", params)).then(function (result) {
6874
- console.log(result);
6875
- if ((result === null || result === void 0 ? void 0 : result.code) !== 0) {
6876
- errorHandler(result);
6877
- dispatch(setSubmitting(false));
6878
- return;
6879
- }
6880
- var txId = -1;
6881
- for (var _iterator = _createForOfIteratorHelperLoose(result.events), _step; !(_step = _iterator()).done;) {
6882
- var event = _step.value;
6883
- if (event.type === 'transaction_requested') {
6884
- for (var _iterator2 = _createForOfIteratorHelperLoose(event.attributes), _step2; !(_step2 = _iterator2()).done;) {
6885
- var attr = _step2.value;
6886
- if (attr.key === 'txId') {
6887
- txId = attr.value;
6977
+ return Promise.resolve(checkPoolBalance()).then(function (_checkPoolBalance) {
6978
+ if (!_checkPoolBalance) {
6979
+ dispatch(setSubmitting(false));
6980
+ _exit3 = true;
6981
+ return;
6982
+ }
6983
+ var params = JSON.stringify({
6984
+ originAddress: walletAddress,
6985
+ originChain: sourceChain,
6986
+ targetAddress: targetAddress,
6987
+ targetChain: targetNetwork,
6988
+ symbol: selectedCoin.label,
6989
+ amount: amount,
6990
+ fee: fee
6991
+ });
6992
+ console.log(params);
6993
+ return Promise.resolve(fetchWrapper.post(backendUrl + "/auth", params)).then(function () {
6994
+ return Promise.resolve(fetchWrapper.post(backendUrl + "/submit", params)).then(function (result) {
6995
+ console.log(result);
6996
+ if ((result === null || result === void 0 ? void 0 : result.code) !== 0) {
6997
+ errorHandler(result);
6998
+ dispatch(setSubmitting(false));
6999
+ return;
7000
+ }
7001
+ var txId = -1;
7002
+ for (var _iterator = _createForOfIteratorHelperLoose(result.events), _step; !(_step = _iterator()).done;) {
7003
+ var event = _step.value;
7004
+ if (event.type === 'transaction_requested') {
7005
+ for (var _iterator2 = _createForOfIteratorHelperLoose(event.attributes), _step2; !(_step2 = _iterator2()).done;) {
7006
+ var attr = _step2.value;
7007
+ if (attr.key === 'txId') {
7008
+ txId = attr.value;
7009
+ }
6888
7010
  }
6889
7011
  }
6890
7012
  }
6891
- }
6892
- console.log(txId);
6893
- dispatch(setTxId(txId));
6894
- dispatch(setSubmitted(true));
6895
- dispatch(setSubmitting(false));
7013
+ console.log(txId);
7014
+ dispatch(setTxId(txId));
7015
+ dispatch(setSubmitted(true));
7016
+ dispatch(setSubmitting(false));
7017
+ });
6896
7018
  });
6897
7019
  });
6898
7020
  }, function (e) {
6899
7021
  errorHandler(e);
6900
7022
  dispatch(setSubmitting(false));
7023
+ console.log('rpc disconnected', e);
6901
7024
  }));
6902
7025
  } catch (e) {
6903
7026
  return Promise.reject(e);
@@ -7053,13 +7176,20 @@ var KimaTransactionWidget = function KimaTransactionWidget(_ref) {
7053
7176
  dispatch(setMode(mode));
7054
7177
  if (mode === exports.ModeOptions.payment) {
7055
7178
  dispatch(setTargetNetwork((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || exports.SupportNetworks.ETHEREUM));
7056
- try {
7057
- return Promise.resolve(fetchWrapper.get(kimaNodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + ((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || exports.SupportNetworks.ETHEREUM))).then(function (networks) {
7058
- dispatch(setOriginNetwork(networks.Chains[0]));
7059
- });
7060
- } catch (e) {
7061
- Promise.reject(e);
7062
- }
7179
+ (function () {
7180
+ try {
7181
+ var _temp2 = _catch(function () {
7182
+ return Promise.resolve(fetchWrapper.get(kimaNodeProviderQuery + "/kima-finance/kima/kima/get_available_chains/" + ((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || exports.SupportNetworks.ETHEREUM))).then(function (networks) {
7183
+ dispatch(setOriginNetwork(networks.Chains[0]));
7184
+ });
7185
+ }, function (e) {
7186
+ console.log('rpc disconnected', e);
7187
+ });
7188
+ return _temp2 && _temp2.then ? _temp2.then(function () {}) : void 0;
7189
+ } catch (e) {
7190
+ Promise.reject(e);
7191
+ }
7192
+ })();
7063
7193
  dispatch(setTargetAddress((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetAddress) || ''));
7064
7194
  dispatch(setAmount((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.amount) || 0));
7065
7195
  } else if (mode === exports.ModeOptions.status) {