@kimafinance/kima-transaction-widget 1.1.0 → 1.1.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/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 = [{
@@ -680,7 +680,6 @@ var initialState = {
680
680
  isSubmitting: false,
681
681
  isConfirming: false,
682
682
  feeDeduct: false,
683
- splAllowance: 0,
684
683
  errorHandler: function errorHandler() {
685
684
  return void 0;
686
685
  },
@@ -748,9 +747,6 @@ var optionSlice = toolkit.createSlice({
748
747
  setSubmitting: function setSubmitting(state, action) {
749
748
  state.isSubmitting = action.payload;
750
749
  },
751
- setSplAllowance: function setSplAllowance(state, action) {
752
- state.splAllowance = action.payload;
753
- },
754
750
  setErrorHandler: function setErrorHandler(state, action) {
755
751
  state.errorHandler = action.payload;
756
752
  },
@@ -802,7 +798,6 @@ var _optionSlice$actions = optionSlice.actions,
802
798
  setApproving = _optionSlice$actions.setApproving,
803
799
  setSubmitting = _optionSlice$actions.setSubmitting,
804
800
  setConfirming = _optionSlice$actions.setConfirming,
805
- setSplAllowance = _optionSlice$actions.setSplAllowance,
806
801
  setErrorHandler = _optionSlice$actions.setErrorHandler,
807
802
  setCloseHandler = _optionSlice$actions.setCloseHandler,
808
803
  setSuccessHandler = _optionSlice$actions.setSuccessHandler,
@@ -864,9 +859,6 @@ var selectApproving = function selectApproving(state) {
864
859
  var selectSubmitting = function selectSubmitting(state) {
865
860
  return state.option.isSubmitting;
866
861
  };
867
- var selectSplAllowance = function selectSplAllowance(state) {
868
- return state.option.splAllowance;
869
- };
870
862
  var selectErrorHandler = function selectErrorHandler(state) {
871
863
  return state.option.errorHandler;
872
864
  };
@@ -6552,7 +6544,7 @@ var TokenAmount = /*#__PURE__*/function (_BN) {
6552
6544
 
6553
6545
  function useAllowance() {
6554
6546
  var dispatch = reactRedux.useDispatch();
6555
- var _useState = React.useState(null),
6547
+ var _useState = React.useState(0),
6556
6548
  allowance = _useState[0],
6557
6549
  setAllowance = _useState[1];
6558
6550
  var _useState2 = React.useState(null),
@@ -6573,8 +6565,6 @@ function useAllowance() {
6573
6565
  }, [selectedNetwork, evmChainId]);
6574
6566
  var amount = reactRedux.useSelector(selectAmount);
6575
6567
  var serviceFee = reactRedux.useSelector(selectServiceFee);
6576
- var isApproving = reactRedux.useSelector(selectApproving);
6577
- var splAllowance = reactRedux.useSelector(selectSplAllowance);
6578
6568
  var nodeProviderQuery = reactRedux.useSelector(selectNodeProviderQuery);
6579
6569
  var _useConnection = walletAdapterReact.useConnection(),
6580
6570
  connection = _useConnection.connection;
@@ -6589,12 +6579,8 @@ function useAllowance() {
6589
6579
  targetAddress = _useState3[0],
6590
6580
  setTargetAddress = _useState3[1];
6591
6581
  var isApproved = React.useMemo(function () {
6592
- if (!isEVMChain(sourceChain)) {
6593
- return allowance >= amount + serviceFee;
6594
- }
6595
- if (allowance && amount && allowance.gte(units.parseUnits((amount + serviceFee).toString(), decimals))) return true;
6596
- return false;
6597
- }, [decimals, sourceChain, allowance, amount, splAllowance, serviceFee]);
6582
+ return allowance >= amount + serviceFee;
6583
+ }, [allowance, amount, serviceFee]);
6598
6584
  var updatePoolAddress = function updatePoolAddress() {
6599
6585
  try {
6600
6586
  return Promise.resolve(_catch(function () {
@@ -6632,19 +6618,17 @@ function useAllowance() {
6632
6618
  return Promise.resolve(erc20Contract.decimals()).then(function (decimals) {
6633
6619
  return Promise.resolve(erc20Contract.allowance(signerAddress, targetAddress)).then(function (userAllowance) {
6634
6620
  setDecimals(+decimals);
6635
- setAllowance(userAllowance);
6621
+ setAllowance(+units.formatUnits(userAllowance, decimals));
6636
6622
  });
6637
6623
  });
6638
6624
  }
6639
6625
  var _temp = function () {
6640
6626
  if (!isEVMChain(sourceChain) && publicKey && tokenAddress && connection) {
6641
6627
  var mint = new web3_js.PublicKey(tokenAddress);
6642
- console.log(mint, publicKey, tokenAddress);
6643
6628
  return Promise.resolve(getOrCreateAssociatedTokenAccount(connection, publicKey, mint, publicKey, signTransaction)).then(function (fromTokenAccount) {
6644
- console.log(fromTokenAccount);
6645
6629
  return Promise.resolve(connection.getParsedAccountInfo(fromTokenAccount.address)).then(function (accountInfo) {
6646
6630
  var _accountInfo$value, _parsedAccountInfo$pa, _parsedAccountInfo$pa2, _parsedAccountInfo$pa3, _parsedAccountInfo$pa4, _parsedAccountInfo$pa5;
6647
- console.log(accountInfo);
6631
+ console.log('solana token account: ', accountInfo);
6648
6632
  setDecimals(COIN_LIST['USDK'].decimals);
6649
6633
  var parsedAccountInfo = accountInfo === null || accountInfo === void 0 ? void 0 : (_accountInfo$value = accountInfo.value) === null || _accountInfo$value === void 0 ? void 0 : _accountInfo$value.data;
6650
6634
  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);
@@ -6661,7 +6645,7 @@ function useAllowance() {
6661
6645
  Promise.reject(e);
6662
6646
  }
6663
6647
  })();
6664
- }, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain, publicKey]);
6648
+ }, [signerAddress, tokenAddress, targetAddress, sourceChain, publicKey]);
6665
6649
  var approve = React.useCallback(function () {
6666
6650
  try {
6667
6651
  var _temp8 = function _temp8(_result4) {
@@ -6679,7 +6663,7 @@ function useAllowance() {
6679
6663
  transaction.recentBlockhash = _blockHash$blockhash;
6680
6664
  return Promise.resolve(signTransaction(transaction)).then(function (signed) {
6681
6665
  return Promise.resolve(connection.sendRawTransaction(signed.serialize())).then(function () {
6682
- dispatch(setSplAllowance(amount + serviceFee));
6666
+ setAllowance(amount + serviceFee);
6683
6667
  dispatch(setApproving(false));
6684
6668
  });
6685
6669
  });
@@ -6708,6 +6692,7 @@ function useAllowance() {
6708
6692
  return Promise.resolve(erc20Contract.approve(targetAddress, units.parseUnits((amount + serviceFee).toString(), decimals))).then(function (approve) {
6709
6693
  return Promise.resolve(approve.wait()).then(function () {
6710
6694
  dispatch(setApproving(false));
6695
+ setAllowance(amount + serviceFee);
6711
6696
  });
6712
6697
  });
6713
6698
  }, function (error) {
@@ -6917,6 +6902,22 @@ var TransferWidget = function TransferWidget(_ref) {
6917
6902
  var _useCurrencyOptions = useCurrencyOptions(),
6918
6903
  selectedCoin = _useCurrencyOptions.options;
6919
6904
  var backendUrl = reactRedux.useSelector(selectBackendUrl);
6905
+ var nodeProviderQuery = reactRedux.useSelector(selectNodeProviderQuery);
6906
+ React.useEffect(function () {
6907
+ if (!nodeProviderQuery) return;
6908
+ try {
6909
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/pool_balance")).then(function (res) {
6910
+ console.table(res.poolBalance.map(function (item) {
6911
+ return {
6912
+ chain: CHAIN_NAMES_TO_STRING[item.chainName],
6913
+ balance: +item.balance
6914
+ };
6915
+ }));
6916
+ });
6917
+ } catch (e) {
6918
+ Promise.reject(e);
6919
+ }
6920
+ }, [nodeProviderQuery]);
6920
6921
  React.useEffect(function () {
6921
6922
  dispatch(setCurrencyOptions(selectedCoin));
6922
6923
  }, [selectedCoin]);
@@ -6929,48 +6930,78 @@ var TransferWidget = function TransferWidget(_ref) {
6929
6930
  React.useEffect(function () {
6930
6931
  dispatch(setServiceFee(fee));
6931
6932
  }, [fee]);
6933
+ var checkPoolBalance = function checkPoolBalance() {
6934
+ try {
6935
+ return Promise.resolve(fetchWrapper.get(nodeProviderQuery + "/kima-finance/kima/kima/pool_balance")).then(function (res) {
6936
+ var poolBalance = res.poolBalance;
6937
+ for (var i = 0; i < poolBalance.length; i++) {
6938
+ if (poolBalance[i].chainName === targetNetwork) {
6939
+ if (+poolBalance[i].balance >= amount + fee) {
6940
+ return true;
6941
+ }
6942
+ var symbol = targetNetwork === exports.SupportNetworks.FUSE || targetNetwork === exports.SupportNetworks.CELO ? 'G$' : 'USDK';
6943
+ console.log("Tried to transfer " + amount + " " + symbol + ", but " + CHAIN_NAMES_TO_STRING[targetNetwork] + " pool has only " + +poolBalance[i].balance + " " + symbol);
6944
+ return false;
6945
+ }
6946
+ }
6947
+ console.log(CHAIN_NAMES_TO_STRING[targetNetwork] + " pool error");
6948
+ return false;
6949
+ });
6950
+ } catch (e) {
6951
+ return Promise.reject(e);
6952
+ }
6953
+ };
6932
6954
  var handleSubmit = function handleSubmit() {
6933
6955
  try {
6956
+ var _exit3 = false;
6934
6957
  if (!isApproved) {
6935
6958
  approve();
6936
6959
  return Promise.resolve();
6937
6960
  }
6938
6961
  return Promise.resolve(_catch(function () {
6962
+ var _exit2 = false;
6939
6963
  dispatch(setSubmitting(true));
6940
- var params = JSON.stringify({
6941
- originAddress: walletAddress,
6942
- originChain: sourceChain,
6943
- targetAddress: targetAddress,
6944
- targetChain: targetNetwork,
6945
- symbol: selectedCoin.label,
6946
- amount: amount,
6947
- fee: fee
6948
- });
6949
- console.log(params);
6950
- return Promise.resolve(fetchWrapper.post(backendUrl + "/auth", params)).then(function () {
6951
- return Promise.resolve(fetchWrapper.post(backendUrl + "/submit", params)).then(function (result) {
6952
- console.log(result);
6953
- if ((result === null || result === void 0 ? void 0 : result.code) !== 0) {
6954
- errorHandler(result);
6955
- dispatch(setSubmitting(false));
6956
- return;
6957
- }
6958
- var txId = -1;
6959
- for (var _iterator = _createForOfIteratorHelperLoose(result.events), _step; !(_step = _iterator()).done;) {
6960
- var event = _step.value;
6961
- if (event.type === 'transaction_requested') {
6962
- for (var _iterator2 = _createForOfIteratorHelperLoose(event.attributes), _step2; !(_step2 = _iterator2()).done;) {
6963
- var attr = _step2.value;
6964
- if (attr.key === 'txId') {
6965
- txId = attr.value;
6964
+ return Promise.resolve(checkPoolBalance()).then(function (_checkPoolBalance) {
6965
+ if (!_checkPoolBalance) {
6966
+ dispatch(setSubmitting(false));
6967
+ _exit3 = true;
6968
+ return;
6969
+ }
6970
+ var params = JSON.stringify({
6971
+ originAddress: walletAddress,
6972
+ originChain: sourceChain,
6973
+ targetAddress: targetAddress,
6974
+ targetChain: targetNetwork,
6975
+ symbol: selectedCoin.label,
6976
+ amount: amount,
6977
+ fee: fee
6978
+ });
6979
+ console.log(params);
6980
+ return Promise.resolve(fetchWrapper.post(backendUrl + "/auth", params)).then(function () {
6981
+ return Promise.resolve(fetchWrapper.post(backendUrl + "/submit", params)).then(function (result) {
6982
+ console.log(result);
6983
+ if ((result === null || result === void 0 ? void 0 : result.code) !== 0) {
6984
+ errorHandler(result);
6985
+ dispatch(setSubmitting(false));
6986
+ return;
6987
+ }
6988
+ var txId = -1;
6989
+ for (var _iterator = _createForOfIteratorHelperLoose(result.events), _step; !(_step = _iterator()).done;) {
6990
+ var event = _step.value;
6991
+ if (event.type === 'transaction_requested') {
6992
+ for (var _iterator2 = _createForOfIteratorHelperLoose(event.attributes), _step2; !(_step2 = _iterator2()).done;) {
6993
+ var attr = _step2.value;
6994
+ if (attr.key === 'txId') {
6995
+ txId = attr.value;
6996
+ }
6966
6997
  }
6967
6998
  }
6968
6999
  }
6969
- }
6970
- console.log(txId);
6971
- dispatch(setTxId(txId));
6972
- dispatch(setSubmitted(true));
6973
- dispatch(setSubmitting(false));
7000
+ console.log(txId);
7001
+ dispatch(setTxId(txId));
7002
+ dispatch(setSubmitted(true));
7003
+ dispatch(setSubmitting(false));
7004
+ });
6974
7005
  });
6975
7006
  });
6976
7007
  }, function (e) {