@hinkal/common 0.3.12 → 0.3.14
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 +67 -4
- package/common/src/API/API.cjs +1 -1
- package/common/src/API/API.d.ts +3 -2
- package/common/src/API/API.mjs +92 -91
- package/common/src/API/admin-calls.cjs +1 -1
- package/common/src/API/admin-calls.d.ts +2 -1
- package/common/src/API/admin-calls.mjs +1 -0
- package/common/src/API/evm-token-assets.cjs +1 -0
- package/common/src/API/evm-token-assets.mjs +3 -0
- package/common/src/API/get-token-price-chart-data.cjs +1 -1
- package/common/src/API/get-token-price-chart-data.mjs +2 -2
- package/common/src/API/getTokenPrice.cjs +1 -1
- package/common/src/API/getTokenPrice.mjs +2 -2
- package/common/src/API/index.cjs +1 -1
- package/common/src/API/index.d.ts +2 -0
- package/common/src/API/index.mjs +2 -0
- package/common/src/API/privacy-score-calls.cjs +1 -1
- package/common/src/API/privacy-score-calls.mjs +2 -2
- package/common/src/API/receiveVaultCalls.cjs +1 -0
- package/common/src/API/receiveVaultCalls.d.ts +12 -0
- package/common/src/API/receiveVaultCalls.mjs +36 -0
- package/common/src/constants/chains.constants.cjs +1 -1
- package/common/src/constants/chains.constants.d.ts +2 -0
- package/common/src/constants/chains.constants.mjs +106 -93
- package/common/src/constants/coingecko.constants.cjs +1 -1
- package/common/src/constants/coingecko.constants.d.ts +2 -0
- package/common/src/constants/coingecko.constants.mjs +1 -1
- package/common/src/constants/contracts.constants.cjs +1 -1
- package/common/src/constants/contracts.constants.mjs +5 -1
- package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +3 -1
- package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +4 -2
- package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-base.json.mjs +3 -1
- package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +3 -1
- package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +3 -1
- package/common/src/constants/deploy-data/deploy-data-localhost.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-localhost.json.mjs +2 -1
- package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
- package/common/src/constants/deploy-data/deploy-data-optimismTest.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-optimismTest.json.mjs +2 -1
- package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +3 -1
- package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.mjs +2 -1
- package/common/src/constants/deploy-data/deploy-data-solanaDevnet.json.cjs +1 -0
- package/common/src/constants/deploy-data/deploy-data-solanaDevnet.json.mjs +6 -0
- package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +3 -1
- package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +2 -1
- package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +2 -1
- package/common/src/constants/deploy-data/index.cjs +1 -1
- package/common/src/constants/deploy-data/index.d.ts +2 -1
- package/common/src/constants/deploy-data/index.mjs +7 -6
- package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
- package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +2 -1
- package/common/src/constants/deploy-data/shared-deploy-data-solana.json.cjs +1 -1
- package/common/src/constants/deploy-data/shared-deploy-data-solana.json.mjs +1 -1
- package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
- package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +3 -2
- package/common/src/constants/events.constants.d.ts +1 -0
- package/common/src/constants/index.cjs +1 -1
- package/common/src/constants/index.mjs +1 -1
- package/common/src/constants/protocol.constants.cjs +2 -2
- package/common/src/constants/protocol.constants.d.ts +4 -0
- package/common/src/constants/protocol.constants.mjs +2 -2
- package/common/src/constants/save-depths.cjs +1 -1
- package/common/src/constants/save-depths.d.ts +1 -0
- package/common/src/constants/save-depths.mjs +1 -0
- package/common/src/constants/server.constants.cjs +1 -1
- package/common/src/constants/server.constants.d.ts +13 -6
- package/common/src/constants/server.constants.mjs +13 -6
- package/common/src/constants/tokens.constants.cjs +1 -1
- package/common/src/constants/tokens.constants.mjs +1 -1
- package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/common/src/data-structures/Hinkal/Hinkal.d.ts +8 -4
- package/common/src/data-structures/Hinkal/Hinkal.mjs +85 -73
- package/common/src/data-structures/Hinkal/IHinkal.d.ts +8 -4
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +14 -14
- package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +4 -4
- package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +24 -24
- package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +72 -71
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +64 -61
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.d.ts +1 -1
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +29 -29
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.d.ts +1 -1
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +22 -22
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +8 -8
- package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +6 -6
- package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +4 -4
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.d.ts +3 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +12 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +3 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +29 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.d.ts +5 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +66 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +6 -0
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.mjs +8 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.d.ts +2 -2
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +54 -62
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +72 -70
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.mjs +9 -9
- package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +20 -20
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.d.ts +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +49 -47
- package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.d.ts +5 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaReceiveVault.mjs +60 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransact.mjs +7 -6
- package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
- package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +35 -26
- package/common/src/data-structures/Hinkal/index.d.ts +5 -0
- package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
- package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +13 -13
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.d.ts +0 -3
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.d.ts +0 -1
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +0 -2
- package/common/src/data-structures/crypto-keys/index.cjs +1 -1
- package/common/src/data-structures/crypto-keys/index.mjs +1 -1
- package/common/src/error-handling/error-codes.constants.cjs +1 -1
- package/common/src/error-handling/error-codes.constants.d.ts +6 -0
- package/common/src/error-handling/error-codes.constants.mjs +7 -2
- package/common/src/error-handling/get-error.message.cjs +1 -1
- package/common/src/error-handling/get-error.message.mjs +59 -49
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +8 -3
- package/common/src/functions/pre-transaction/addressTableLookup.d.ts +1 -0
- package/common/src/functions/pre-transaction/build-proofless-deposit-fee.cjs +1 -0
- package/common/src/functions/pre-transaction/build-proofless-deposit-fee.d.ts +4 -0
- package/common/src/functions/pre-transaction/build-proofless-deposit-fee.mjs +3 -0
- package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.cjs +1 -1
- package/common/src/functions/pre-transaction/calculateSolanaNullifierCount.mjs +7 -7
- package/common/src/functions/pre-transaction/constructAdminData.cjs +1 -1
- package/common/src/functions/pre-transaction/constructAdminData.mjs +4 -3
- package/common/src/functions/pre-transaction/index.cjs +1 -1
- package/common/src/functions/pre-transaction/index.d.ts +1 -0
- package/common/src/functions/pre-transaction/index.mjs +1 -0
- package/common/src/functions/pre-transaction/sendV0Transaction.cjs +1 -1
- package/common/src/functions/pre-transaction/sendV0Transaction.d.ts +1 -0
- package/common/src/functions/pre-transaction/sendV0Transaction.mjs +22 -2
- package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
- package/common/src/functions/private-wallet/emporium.helpers.mjs +15 -15
- package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -1
- package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +2 -1
- package/common/src/functions/snarkjs/fetchOnChainRootHashes.cjs +1 -1
- package/common/src/functions/snarkjs/fetchOnChainRootHashes.mjs +6 -6
- package/common/src/functions/utils/abi.utils.cjs +1 -1
- package/common/src/functions/utils/abi.utils.mjs +4 -1
- package/common/src/functions/utils/addresses.cjs +1 -1
- package/common/src/functions/utils/addresses.d.ts +4 -0
- package/common/src/functions/utils/addresses.mjs +17 -17
- package/common/src/functions/utils/admin-dimensions.cjs +1 -0
- package/common/src/functions/utils/admin-dimensions.d.ts +4 -0
- package/common/src/functions/utils/admin-dimensions.mjs +206 -0
- package/common/src/functions/utils/create-provider.cjs +1 -1
- package/common/src/functions/utils/create-provider.mjs +5 -1
- package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
- package/common/src/functions/utils/encryptInputForEnclave.d.ts +2 -1
- package/common/src/functions/utils/encryptInputForEnclave.mjs +1 -1
- package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
- package/common/src/functions/utils/erc20tokenFunctions.mjs +11 -11
- package/common/src/functions/utils/fees.utils.cjs +1 -1
- package/common/src/functions/utils/fees.utils.d.ts +2 -0
- package/common/src/functions/utils/fees.utils.mjs +31 -33
- package/common/src/functions/utils/gas-token.utils.cjs +1 -0
- package/common/src/functions/utils/gas-token.utils.d.ts +3 -0
- package/common/src/functions/utils/gas-token.utils.mjs +7 -0
- package/common/src/functions/utils/getSignerFromContract.cjs +1 -1
- package/common/src/functions/utils/getSignerFromContract.d.ts +1 -1
- package/common/src/functions/utils/getSignerFromContract.mjs +2 -2
- package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceiptSolana.d.ts +9 -4
- package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +1 -1
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.d.ts +5 -0
- package/common/src/functions/utils/index.mjs +7 -2
- package/common/src/functions/utils/isSigner.cjs +1 -0
- package/common/src/functions/utils/isSigner.d.ts +2 -0
- package/common/src/functions/utils/isSigner.mjs +7 -0
- package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
- package/common/src/functions/utils/publicBalance.utils.mjs +7 -7
- package/common/src/functions/utils/receive-vault-account.utils.cjs +1 -0
- package/common/src/functions/utils/receive-vault-account.utils.d.ts +9 -0
- package/common/src/functions/utils/receive-vault-account.utils.mjs +24 -0
- package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -0
- package/common/src/functions/utils/receive-vault-scan.utils.d.ts +2 -0
- package/common/src/functions/utils/receive-vault-scan.utils.mjs +55 -0
- package/common/src/functions/utils/receive-vault-solana.utils.cjs +1 -0
- package/common/src/functions/utils/receive-vault-solana.utils.d.ts +8 -0
- package/common/src/functions/utils/receive-vault-solana.utils.mjs +45 -0
- package/common/src/functions/utils/receive-vault.utils.cjs +2 -0
- package/common/src/functions/utils/receive-vault.utils.d.ts +31 -0
- package/common/src/functions/utils/receive-vault.utils.mjs +166 -0
- package/common/src/functions/utils/string.utils.cjs +1 -1
- package/common/src/functions/utils/string.utils.mjs +12 -4
- package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -1
- package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +1 -1
- package/common/src/functions/utils/token-check.utils.d.ts +1 -0
- package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
- package/common/src/functions/utils/transfer-claimable.utils.mjs +1 -1
- package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -0
- package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +9 -0
- package/common/src/functions/utils/wallet-token-discovery.utils.mjs +30 -0
- package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
- package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +11 -11
- package/common/src/functions/web3/getContractMetadata.cjs +1 -1
- package/common/src/functions/web3/getContractMetadata.mjs +6 -6
- package/common/src/functions/web3/index.cjs +1 -1
- package/common/src/functions/web3/index.mjs +1 -1
- package/common/src/types/admin.types.cjs +1 -1
- package/common/src/types/admin.types.d.ts +64 -9
- package/common/src/types/admin.types.mjs +10 -2
- package/common/src/types/connector.types.d.ts +1 -0
- package/common/src/types/ethereum-network.types.cjs +1 -1
- package/common/src/types/ethereum-network.types.d.ts +5 -1
- package/common/src/types/ethereum-network.types.mjs +1 -1
- package/common/src/types/external-action.types.cjs +1 -1
- package/common/src/types/external-action.types.d.ts +3 -1
- package/common/src/types/external-action.types.mjs +1 -1
- package/common/src/types/index.cjs +1 -1
- package/common/src/types/index.d.ts +1 -0
- package/common/src/types/index.mjs +1 -0
- package/common/src/types/receive-vault.types.cjs +1 -0
- package/common/src/types/receive-vault.types.d.ts +63 -0
- package/common/src/types/receive-vault.types.mjs +8 -0
- package/common/src/types/remote-tx-build.types.d.ts +5 -0
- package/common/src/webworker/{logError-cvFNxc-0.js → logError-C-ej_TX9.js} +1 -1
- package/common/src/webworker/package.json +10 -1
- package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/utxoWorkerNode.cjs +1 -1
- package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/common/src/webworker/workerProxy-CE-rYA3W.js +1 -0
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
- package/index.cjs +1 -1
- package/index.mjs +3 -2
- package/internal/monitorConnectedAddress.cjs +1 -1
- package/internal/monitorConnectedAddress.d.ts +1 -1
- package/internal/monitorConnectedAddress.mjs +1 -3
- package/package.json +10 -1
- package/providers/prepareEthersHinkal.cjs +1 -1
- package/providers/prepareEthersHinkal.mjs +1 -1
- package/providers/prepareSolanaHinkal.cjs +1 -1
- package/providers/prepareSolanaHinkal.mjs +1 -1
- package/providers/prepareTronHinkal.cjs +1 -1
- package/providers/prepareTronHinkal.mjs +1 -1
- package/providers/prepareWagmiHinkal.cjs +1 -1
- package/providers/prepareWagmiHinkal.mjs +1 -1
- package/services/Hinkal.cjs +1 -1
- package/services/Hinkal.d.ts +7 -3
- package/services/Hinkal.mjs +74 -51
- package/types/IHinkal.d.ts +7 -2
- package/types/index.cjs +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.mjs +2 -0
- package/types/receive-vault.types.cjs +1 -0
- package/types/receive-vault.types.d.ts +14 -0
- package/types/receive-vault.types.mjs +2 -0
- package/common/src/API/getOdosPriceForToken.cjs +0 -1
- package/common/src/API/getOdosPriceForToken.d.ts +0 -1
- package/common/src/API/getOdosPriceForToken.mjs +0 -14
- package/common/src/webworker/workerProxy-BHzCZ9HT.js +0 -1
|
@@ -20,6 +20,7 @@ import { PublicKey } from '@solana/web3.js';
|
|
|
20
20
|
import { PrivateBridgeRecipient, PrivateBridgeResult, PublicBridgeRecipient } from '../../types/bridging-tx.types';
|
|
21
21
|
import { NearBridgeParams, NearBridgeResult } from '../../types/near-intents.types';
|
|
22
22
|
import { PrivateBalancesState } from '../../types/balances.types';
|
|
23
|
+
import { ReceiveVaultAccount, ReceiveVaultNetwork, ReceiveVaultRecord } from '../../types/receive-vault.types';
|
|
23
24
|
import { Utxo } from '../utxo/Utxo';
|
|
24
25
|
import { ScheduledTransactionByIdResponse } from '../../API/scheduled-transactions-calls';
|
|
25
26
|
import { DepositAndSendExtendedResult } from '../../types/scheduled-transactions.types';
|
|
@@ -61,14 +62,17 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
61
62
|
bridgePrivateToPrivate(sourceToken: ERC20Token, destToken: ERC20Token, amount: string, recipient: PrivateBridgeRecipient, slippage?: number, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType): Promise<PrivateBridgeResult>;
|
|
62
63
|
checkSendTransactionStatus(scheduleId: string): Promise<ScheduledTransactionByIdResponse>;
|
|
63
64
|
nearDepositAndBridge(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], params: NearBridgeParams, txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string): Promise<NearBridgeResult>;
|
|
64
|
-
prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[], recipientEncryptionKeys?: string[], createBlockedUtxos?: boolean, feeStructure?: ProoflessFeeStructure, orderId?: string, action?: AdminTransactionType, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
|
|
65
|
+
prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[], recipientEncryptionKeys?: string[], createBlockedUtxos?: boolean, feeStructure?: ProoflessFeeStructure, orderId?: string, action?: AdminTransactionType, skipDuplicateCheck?: boolean, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
|
|
65
66
|
getSolanaProgram(idl: Idl): Program;
|
|
66
67
|
getSolanaPublicKey(): PublicKey;
|
|
67
68
|
depositSolana(amount: bigint, token: ERC20Token): Promise<string>;
|
|
68
|
-
depositSolanaForOther(amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, action?: AdminTransactionType): Promise<string>;
|
|
69
|
+
depositSolanaForOther(amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, variableRate?: bigint, action?: AdminTransactionType): Promise<string>;
|
|
69
70
|
transfer(erc20Tokens: ERC20Token[], amountChanges: bigint[], recipientAddress: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType): Promise<string>;
|
|
70
71
|
withdraw(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], recipientAddress: string, isRelayerOff: boolean, feeToken?: string, feeStructureOverride?: FeeStructure, variableRateOverride?: bigint, action?: AdminTransactionType): Promise<ethers.TransactionResponse | string>;
|
|
71
72
|
withdrawStuckUtxos(erc20Token: ERC20Token, recipientAddress: string): Promise<string[]>;
|
|
73
|
+
createReceiveAddress(network: ReceiveVaultNetwork, forceFresh?: boolean): Promise<ReceiveVaultRecord>;
|
|
74
|
+
getReceiveVaultAccount(): Promise<ReceiveVaultAccount>;
|
|
75
|
+
recoverReceiveVault(record: ReceiveVaultRecord, token: string, chainId: number, to: string, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
|
|
72
76
|
swap(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure, slippagePercentage?: number, action?: AdminTransactionType): Promise<string>;
|
|
73
77
|
getProviderAdapter(chainId?: number): IProviderAdapter;
|
|
74
78
|
getTronWeb(): TronWeb;
|
|
@@ -81,7 +85,7 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
81
85
|
initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
|
|
82
86
|
initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<void>;
|
|
83
87
|
storeAndGetInitialSignature(authSignature: string): Promise<string>;
|
|
84
|
-
initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<
|
|
88
|
+
initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<number>;
|
|
85
89
|
disconnectFromConnector(): Promise<void>;
|
|
86
90
|
resetProviderAdapters(): Promise<void>;
|
|
87
91
|
setListeners(providerAdapter: IProviderAdapter): Promise<void>;
|
|
@@ -96,7 +100,7 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
96
100
|
signMessage(message: string): Promise<string>;
|
|
97
101
|
signTypedData(domain: ethers.TypedDataDomain, types: Record<string, ethers.TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
|
|
98
102
|
signWithSubAccount(chainId: number, messageToSign: string | undefined, typedData: TypedData | undefined, subAccount: SubAccount): Promise<string>;
|
|
99
|
-
actionPrivateWallet(chainId: number, erc20Tokens: ERC20Token[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo): Promise<string>;
|
|
103
|
+
actionPrivateWallet(chainId: number, erc20Tokens: ERC20Token[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo, bridgedToken?: ERC20Token): Promise<string>;
|
|
100
104
|
actionReceive(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], feeTokens?: string, feeStructureOverride?: FeeStructure, subAccount?: SubAccount, action?: AdminTransactionType): Promise<string>;
|
|
101
105
|
proxySwap(erc20Tokens: ERC20Token[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, autoDepositBack?: boolean, maxGasInDollar?: string, bridgedToken?: ERC20Token, bridgedTokenAmount?: bigint, action?: AdminTransactionType): Promise<string>;
|
|
102
106
|
proxyToPrivate(erc20Tokens: ERC20Token[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure, action?: AdminTransactionType): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transactions.types.cjs`),l=require(`../../types/admin.types.cjs`),u=require(`../../types/activities.types.cjs`),d=require(`../../types/transaction.types.cjs`),f=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const ee=require(`../../API/API.cjs`),
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transactions.types.cjs`),l=require(`../../types/admin.types.cjs`),u=require(`../../types/activities.types.cjs`),d=require(`../../types/transaction.types.cjs`),f=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const ee=require(`../../functions/utils/create-provider.cjs`),p=require(`../../API/API.cjs`),m=require(`../../functions/utils/erc20tokenFunctions.cjs`),h=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const g=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),_=require(`../../functions/pre-transaction/getFeeStructure.cjs`),v=require(`../../functions/utils/fees.utils.cjs`),y=require(`../../functions/private-wallet/emporium.helpers.cjs`),b=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),x=require(`../../functions/utils/postToOffscreen.cjs`),S=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),w=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),T=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const E=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var D=3*1e3,O=13*1e3,k=async(k,A,j,M,N,P,F,I)=>{if(!j||F.length===0)return;let L;try{let a=ee.createJsonRpcProvider(A);await i.waitLittle(A===e.chainIds.ethMainnet?O:D);let o=await S.getTokensToDepositBack(F,N,j,a);if(!o.length){x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let d=(await m.getErc20TokensBySymbolsFromAPI(await v.getGasTokenSymbols(A),A)).filter(e=>e!==void 0),{prices:h}=await p.API.getTokenPrices(A,d.map(e=>e.erc20TokenAddress)),R=new Map(h.map((e,t)=>[d[t].erc20TokenAddress.toLowerCase(),e])),z=o.map(({token:e})=>e),B=o.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=y.createTransaferEmporiumOpsBatch(k,A,V,await g.modifyVolatileTokenAmountChanges(A,z,B,j)),U=await _.getFeeStructure(A,N,V,s.ExternalActionId.Emporium,H.map(e=>b.convertEmporiumOpToCallInfo(e,j,A))),{flatFee:W}=U??{},G=await m.getErc20TokenFromAPI(A,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await w.selectGasToken(N,q,A,z,H,await C.getGasTokenRecords(d,A,k,j,a,R),U,V,j);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[A].contractData,$={activityType:u.ActivityTypes.AUTO_SHIELD,chainId:A,from:j,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};if(L=await E.activityStorage.saveTxRequest($),x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Loading}),I)T.updateHinkal(A,k,I.inputNullifiers?.flat(),I.outCommitments?.flat(),I.encryptedOutputs?.flat());else if(!k.generateProofRemotely)throw Error(`Circomdata should be passed if tx is done locally`);let te={id:0,success:!0,txHash:await k.actionReceive(z,B,Y,X,M,l.AdminTransactionType.AutoShield)};await E.activityStorage.updatePendingTransactions(te,L),x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof a.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await E.activityStorage.updatePendingTransactions(n,L),x.postToOffscreen(f.MessagesFromOffscreen.AutoShieldTxStatus,{status:c.TransactionStatus.Failed,error:h.getErrorMessageFromTransactionRequest(e,d.TransactionRequestType.ReceiveFromShieldedAccount)}),o.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=k;
|
|
@@ -12,17 +12,17 @@ import { ActivityTypes as d } from "../../types/activities.types.mjs";
|
|
|
12
12
|
import { TransactionRequestType as f } from "../../types/transaction.types.mjs";
|
|
13
13
|
import { MessagesFromOffscreen as p } from "../../types/offscreen.types.mjs";
|
|
14
14
|
import "../../types/index.mjs";
|
|
15
|
-
import {
|
|
15
|
+
import { createJsonRpcProvider as m } from "../../functions/utils/create-provider.mjs";
|
|
16
|
+
import { API as te } from "../../API/API.mjs";
|
|
16
17
|
import { getErc20TokenFromAPI as h, getErc20TokensBySymbolsFromAPI as g } from "../../functions/utils/erc20tokenFunctions.mjs";
|
|
17
18
|
import { getErrorMessageFromTransactionRequest as _ } from "../../error-handling/get-error.message.mjs";
|
|
18
19
|
import "../../error-handling/index.mjs";
|
|
19
|
-
import { modifyVolatileTokenAmountChanges as
|
|
20
|
-
import { createJsonRpcProvider as v } from "../../functions/utils/create-provider.mjs";
|
|
20
|
+
import { modifyVolatileTokenAmountChanges as v } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
|
|
21
21
|
import { getFeeStructure as y } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
22
|
+
import { getGasTokenSymbols as b } from "../../functions/utils/fees.utils.mjs";
|
|
23
|
+
import { createTransaferEmporiumOpsBatch as x } from "../../functions/private-wallet/emporium.helpers.mjs";
|
|
24
|
+
import { convertEmporiumOpToCallInfo as S } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
|
|
25
|
+
import { postToOffscreen as C } from "../../functions/utils/postToOffscreen.mjs";
|
|
26
26
|
import { getTokensToDepositBack as w } from "../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.mjs";
|
|
27
27
|
import { getGasTokenRecords as T } from "../../functions/auto-deposit-back-helpers/get-gas-token-records.mjs";
|
|
28
28
|
import { selectGasToken as E } from "../../functions/auto-deposit-back-helpers/select-gas-token.mjs";
|
|
@@ -35,20 +35,20 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
|
|
|
35
35
|
if (!M || I.length === 0) return;
|
|
36
36
|
let R;
|
|
37
37
|
try {
|
|
38
|
-
let o =
|
|
38
|
+
let o = m(j);
|
|
39
39
|
await ee(j === e.ethMainnet ? ne : k);
|
|
40
40
|
let s = await w(I, P, M, o);
|
|
41
41
|
if (!s.length) {
|
|
42
|
-
|
|
42
|
+
C(p.AutoShieldTxStatus, { message: i.AUTO_SHIELD_SKIPPED });
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
let f = (await g(await
|
|
45
|
+
let f = (await g(await b(j), j)).filter((e) => e !== void 0), { prices: _ } = await te.getTokenPrices(j, f.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [f[t].erc20TokenAddress.toLowerCase(), e])), B = s.map(({ token: e }) => e), V = s.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = x(A, j, H, await v(j, B, V, M)), W = await y(j, P, H, c.Emporium, U.map((e) => S(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
|
|
46
46
|
if (!K) return;
|
|
47
47
|
let q = a(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await E(P, J, j, B, U, await T(f, j, A, M, o, z), W, H, M);
|
|
48
48
|
if (!Y) return;
|
|
49
49
|
let { feeToken: X, feeStructure: Z } = Y ?? {};
|
|
50
50
|
if (F && Number(F) < J) {
|
|
51
|
-
|
|
51
|
+
C(p.AutoShieldTxStatus, { message: r.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT });
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
let Q = B.findIndex((e) => n(e.erc20TokenAddress, X));
|
|
@@ -64,14 +64,14 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
|
|
|
64
64
|
token: e
|
|
65
65
|
}))
|
|
66
66
|
};
|
|
67
|
-
if (R = await O.saveTxRequest($),
|
|
67
|
+
if (R = await O.saveTxRequest($), C(p.AutoShieldTxStatus, { status: l.Loading }), L) D(j, A, L.inputNullifiers?.flat(), L.outCommitments?.flat(), L.encryptedOutputs?.flat());
|
|
68
68
|
else if (!A.generateProofRemotely) throw Error("Circomdata should be passed if tx is done locally");
|
|
69
69
|
let ie = {
|
|
70
70
|
id: 0,
|
|
71
71
|
success: !0,
|
|
72
72
|
txHash: await A.actionReceive(B, V, X, Z, N, u.AutoShield)
|
|
73
73
|
};
|
|
74
|
-
await O.updatePendingTransactions(ie, R),
|
|
74
|
+
await O.updatePendingTransactions(ie, R), C(p.AutoShieldTxStatus, {
|
|
75
75
|
status: l.Confirmed,
|
|
76
76
|
activityRequest: $
|
|
77
77
|
});
|
|
@@ -84,7 +84,7 @@ var k = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
|
|
|
84
84
|
success: !1,
|
|
85
85
|
...t ? { erroredTx: t } : {}
|
|
86
86
|
};
|
|
87
|
-
R && await O.updatePendingTransactions(n, R),
|
|
87
|
+
R && await O.updatePendingTransactions(n, R), C(p.AutoShieldTxStatus, {
|
|
88
88
|
status: l.Failed,
|
|
89
89
|
error: _(e, f.ReceiveFromShieldedAccount)
|
|
90
90
|
}), s.error("Error in auto deposit back:", e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../constants/protocol.constants.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/
|
|
1
|
+
require(`../../constants/protocol.constants.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../functions/private-wallet/emporium.helpers.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);var c=async(c,l,u,d,f,p,m)=>{if(!p)throw Error(`hinkalActionReceive: subAccount should be provided`);if(!d)throw Error(`Fee token is required in hinkalActionReceive`);let h=t.validateAndGetChainId(l),g=r.AccountActions.getAddressFromSubAccount(h,p);if(!g)throw Error(`Public account address is not available`);let _=l.map(e=>e.erc20TokenAddress),v=await n.modifyVolatileTokenAmountChanges(h,l,u,g),y=o.createTransaferEmporiumOpsBatch(c,h,_,v),b=await a.calculateModifiedFeeStructureForTokens(h,l,v,f??await i.getFeeStructure(h,d,_,e.ExternalActionId.Emporium,y.map(e=>s.convertEmporiumOpToCallInfo(e,g,h)),25n)),x=l.map((e,t)=>({token:e,amount:-1n*v[t]}));return c.actionPrivateWallet(h,l,v,v.map(()=>!1),y,x,p,d,b,void 0,void 0,void 0,m,void 0)};exports.hinkalActionReceive=c;
|
|
@@ -4,16 +4,16 @@ import { validateAndGetChainId as t } from "../../functions/utils/token-check.ut
|
|
|
4
4
|
import { modifyVolatileTokenAmountChanges as n } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
|
|
5
5
|
import { AccountActions as r } from "../AccountActions/AccountActions.mjs";
|
|
6
6
|
import { getFeeStructure as i } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { calculateModifiedFeeStructureForTokens as a } from "../../functions/utils/fees.utils.mjs";
|
|
8
|
+
import { createTransaferEmporiumOpsBatch as o } from "../../functions/private-wallet/emporium.helpers.mjs";
|
|
9
|
+
import { convertEmporiumOpToCallInfo as s } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
|
|
10
10
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalActionReceive.ts
|
|
11
11
|
var c = async (c, l, u, d, f, p, m) => {
|
|
12
12
|
if (!p) throw Error("hinkalActionReceive: subAccount should be provided");
|
|
13
13
|
if (!d) throw Error("Fee token is required in hinkalActionReceive");
|
|
14
14
|
let h = t(l), g = r.getAddressFromSubAccount(h, p);
|
|
15
15
|
if (!g) throw Error("Public account address is not available");
|
|
16
|
-
let _ = l.map((e) => e.erc20TokenAddress), v = await n(h, l, u, g), y =
|
|
16
|
+
let _ = l.map((e) => e.erc20TokenAddress), v = await n(h, l, u, g), y = o(c, h, _, v), b = await a(h, l, v, f ?? await i(h, d, _, e.Emporium, y.map((e) => s(e, g, h)), 25n)), x = l.map((e, t) => ({
|
|
17
17
|
token: e,
|
|
18
18
|
amount: -1n * v[t]
|
|
19
19
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/token.types.cjs`),c=require(`../../API/API.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/token.types.cjs`),c=require(`../../API/API.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/utils/fees.utils.cjs`),p=require(`../../functions/private-wallet/emporium.helpers.cjs`),m=require(`../../constants/addresses.constants.cjs`),h=require(`../../constants/bridging.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/enclave-utxo-storage.cjs`),v=require(`../../functions/utils/bridge-arrival.utils.cjs`),y=require(`../../functions/utils/temp-wallet.utils.cjs`),b=require(`../../API/callNearIntentsAPI.cjs`),x=require(`../../functions/utils/nearIntents.utils.cjs`),S=require(`../../functions/web3/lifiAPI.cjs`),C=require(`../../functions/utils/bridge-claimable-utxo.utils.cjs`);var w=async(e,r,d,f,h,g,_,v)=>{let{chainId:b}=r,x=d.chainId,C=r.erc20TokenAddress,w=m.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][b];if(!w)throw Error(`LIFI not configured for chain ${b}`);let T=i.randomBigInt(6),{sourceSubAccount:E,destinationSubAccount:D}=y.deriveBridgeTempWallets(e,b,x,T),O=u.AccountActions.getAddressFromSubAccount(b,E),k=u.AccountActions.getAddressFromSubAccount(x,D);if(!O||!k)throw Error(`Missing temp wallet address for LIFI bridge`);let{lifiDataValue:A,outSwapAmountValue:j,extraNativeTokenFee:M}=await S.getLifiPrice(r,d,f,h,O,k),N={calldata:A,expectedAmount:j,nativeFee:M},P=i.getAmountInWei(r,f),F=Array.from(new Set([b,x])),I=a.hashEthereumAddress(await e.getEthereumAddress());await Promise.all(F.map(e=>c.API.addTemporaryWalletNonce(e,I,Number(T),s.TemporaryWalletRecoveryDestination.Confidential)));let L=n.caseInsensitiveEqual(C,t.zeroAddress),R=N.nativeFee>0n&&!L,z=L?P+N.nativeFee:P,B=[r],V=[-z];if(R){let e=await l.getErc20TokenFromAPI(b,t.zeroAddress);if(!e)throw Error(`Native token not found for bridge fee`);B.push(e),V.push(-N.nativeFee)}let H=p.createLifiBridgeOps(e,b,O,w,C,z,P,N),U=B.map((e,t)=>({token:e,amount:V[t]}));return{tempSubAccount:D,sourceTxHash:await e.actionPrivateWallet(b,B,V,V.map(()=>!1),H,U,E,g??C,_,void 0,!1,void 0,v,void 0,d),expectedAmount:N.expectedAmount}},T=async(e,t,n,r,o,l,d,f)=>{let p=n.chainId,m=i.randomBigInt(6),g=y.buildTempSubAccountForChain(e,p,m),_=u.AccountActions.getAddressFromSubAccount(p,g);if(!_)throw Error(`Missing temp wallet address for NEAR bridge`);let v=a.hashEthereumAddress(await e.getEthereumAddress());await c.API.addTemporaryWalletNonce(p,v,Number(m),s.TemporaryWalletRecoveryDestination.Confidential);let[S,C]=await Promise.all([x.resolveNearAssetId(t.chainId,t.erc20TokenAddress),x.resolveNearAssetId(p,n.erc20TokenAddress)]),w=i.getAmountInWei(t,r),T=new Date(Date.now()+h.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),{quote:E}=await b.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:Math.round(o*1e4)||100,originAsset:S,depositType:`ORIGIN_CHAIN`,destinationAsset:C,amount:w.toString(),recipient:_,recipientType:`DESTINATION_CHAIN`,refundTo:e.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:T});if(!E.depositAddress)throw Error(`NEAR Intents quote returned no deposit address`);let D=await e.withdraw([t],[-w],E.depositAddress,!1,l??t.erc20TokenAddress,d,void 0,f);return{tempSubAccount:g,sourceTxHash:typeof D==`string`?D:D.hash,expectedAmount:BigInt(E.amountOut)}},E=async(n,i,a,s,c)=>{let l=i.chainId,m=i.erc20TokenAddress,h=u.AccountActions.getAddressFromSubAccount(l,a);if(!h)throw Error(`Missing temp wallet address for bridge shield`);let{recipientInfo:v,claimable:y}=C.resolveBridgeRecipient(n,c);if(y&&await _.storeClaimableKeyInEnclave(await n.getEthereumAddressByChain(l),y.ethAddress,y.keys.getShieldedPrivateKey(),l,y.signature,n.userKeys.getSignature()),e.isSolanaLike(l))return C.hinkalSolanaShieldBridged(n,i,a,s,v,t.HINKAL_SHIELD_VARIABLE_RATE);let b=p.createTransaferEmporiumOpsBatch(n,l,[m],[s]),x=await f.calculateModifiedFeeStructure(l,i,s,await d.getFeeStructure(l,m,[m],o.ExternalActionId.Emporium,b.map(e=>g.convertEmporiumOpToCallInfo(e,h,l)),t.HINKAL_PRIVATE_SEND_VARIABLE_RATE)),S=s-f.calculateTotalFee(s,x);if(S<=0n)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);return{destTxHash:await n.proxyToPrivate([i],[S],a,v,x.feeToken,x),shieldedAmount:S}},D=async(t,n,r,i,a,o=h.DEFAULT_BRIDGING_SLIPPAGE_DECIMAL,s,c,l)=>{let{tempSubAccount:d,sourceTxHash:f,expectedAmount:p}=e.isNearIntentsBridgeSource(n.chainId)?await T(t,n,r,i,o,s,c,l):await w(t,n,r,i,o,s,c,l),m=u.AccountActions.getAddressFromSubAccount(r.chainId,d);if(!m)throw Error(`Missing temp wallet address for bridge`);let{destTxHash:g,shieldedAmount:_}=await E(t,r,d,await v.waitForBridgeArrival(r.chainId,m,r.erc20TokenAddress,p,o),a);return{sourceTxHash:f,destTxHash:g,destinationTokenAmount:_.toString()}};exports.hinkalBridgePrivateToPrivate=D;
|
|
@@ -10,11 +10,11 @@ import { API as f } from "../../API/API.mjs";
|
|
|
10
10
|
import { getErc20TokenFromAPI as p } from "../../functions/utils/erc20tokenFunctions.mjs";
|
|
11
11
|
import { AccountActions as m } from "../AccountActions/AccountActions.mjs";
|
|
12
12
|
import { getFeeStructure as h } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
13
|
+
import { calculateModifiedFeeStructure as g, calculateTotalFee as _ } from "../../functions/utils/fees.utils.mjs";
|
|
14
|
+
import { createLifiBridgeOps as v, createTransaferEmporiumOpsBatch as y } from "../../functions/private-wallet/emporium.helpers.mjs";
|
|
15
|
+
import { SWAP_ROUTER_ADDRESSES as b } from "../../constants/addresses.constants.mjs";
|
|
16
|
+
import { DEFAULT_BRIDGING_SLIPPAGE_DECIMAL as x, NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS as S } from "../../constants/bridging.constants.mjs";
|
|
17
|
+
import { convertEmporiumOpToCallInfo as C } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
|
|
18
18
|
import { storeClaimableKeyInEnclave as w } from "../../functions/utils/enclave-utxo-storage.mjs";
|
|
19
19
|
import { waitForBridgeArrival as T } from "../../functions/utils/bridge-arrival.utils.mjs";
|
|
20
20
|
import { buildTempSubAccountForChain as E, deriveBridgeTempWallets as D } from "../../functions/utils/temp-wallet.utils.mjs";
|
|
@@ -23,30 +23,30 @@ import { resolveNearAssetId as k } from "../../functions/utils/nearIntents.utils
|
|
|
23
23
|
import { getLifiPrice as A } from "../../functions/web3/lifiAPI.mjs";
|
|
24
24
|
import { hinkalSolanaShieldBridged as j, resolveBridgeRecipient as M } from "../../functions/utils/bridge-claimable-utxo.utils.mjs";
|
|
25
25
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.ts
|
|
26
|
-
var N = async (e, t, n, r, o, h,
|
|
27
|
-
let { chainId:
|
|
28
|
-
if (!C) throw Error(`LIFI not configured for chain ${
|
|
29
|
-
let w = c(6), { sourceSubAccount: T, destinationSubAccount: E } = D(e,
|
|
26
|
+
var N = async (e, t, n, r, o, h, g, _) => {
|
|
27
|
+
let { chainId: y } = t, x = n.chainId, S = t.erc20TokenAddress, C = b[u.Lifi][y];
|
|
28
|
+
if (!C) throw Error(`LIFI not configured for chain ${y}`);
|
|
29
|
+
let w = c(6), { sourceSubAccount: T, destinationSubAccount: E } = D(e, y, x, w), O = m.getAddressFromSubAccount(y, T), k = m.getAddressFromSubAccount(x, E);
|
|
30
30
|
if (!O || !k) throw Error("Missing temp wallet address for LIFI bridge");
|
|
31
31
|
let { lifiDataValue: j, outSwapAmountValue: M, extraNativeTokenFee: N } = await A(t, n, r, o, O, k), P = {
|
|
32
32
|
calldata: j,
|
|
33
33
|
expectedAmount: M,
|
|
34
34
|
nativeFee: N
|
|
35
|
-
}, F = s(t, r), I = Array.from(new Set([
|
|
35
|
+
}, F = s(t, r), I = Array.from(new Set([y, x])), L = l(await e.getEthereumAddress());
|
|
36
36
|
await Promise.all(I.map((e) => f.addTemporaryWalletNonce(e, L, Number(w), d.Confidential)));
|
|
37
37
|
let R = a(S, i), z = P.nativeFee > 0n && !R, B = R ? F + P.nativeFee : F, V = [t], H = [-B];
|
|
38
38
|
if (z) {
|
|
39
|
-
let e = await p(
|
|
39
|
+
let e = await p(y, i);
|
|
40
40
|
if (!e) throw Error("Native token not found for bridge fee");
|
|
41
41
|
V.push(e), H.push(-P.nativeFee);
|
|
42
42
|
}
|
|
43
|
-
let U =
|
|
43
|
+
let U = v(e, y, O, C, S, B, F, P), W = V.map((e, t) => ({
|
|
44
44
|
token: e,
|
|
45
45
|
amount: H[t]
|
|
46
46
|
}));
|
|
47
47
|
return {
|
|
48
48
|
tempSubAccount: E,
|
|
49
|
-
sourceTxHash: await e.actionPrivateWallet(
|
|
49
|
+
sourceTxHash: await e.actionPrivateWallet(y, V, H, H.map(() => !1), U, W, T, h ?? S, g, void 0, !1, void 0, _, void 0, n),
|
|
50
50
|
expectedAmount: P.expectedAmount
|
|
51
51
|
};
|
|
52
52
|
}, P = async (e, t, n, r, i, a, o, u) => {
|
|
@@ -54,14 +54,14 @@ var N = async (e, t, n, r, o, h, _, y) => {
|
|
|
54
54
|
if (!_) throw Error("Missing temp wallet address for NEAR bridge");
|
|
55
55
|
let v = l(await e.getEthereumAddress());
|
|
56
56
|
await f.addTemporaryWalletNonce(p, v, Number(h), d.Confidential);
|
|
57
|
-
let [y,
|
|
57
|
+
let [y, b] = await Promise.all([k(t.chainId, t.erc20TokenAddress), k(p, n.erc20TokenAddress)]), x = s(t, r), C = new Date(Date.now() + S).toISOString(), { quote: w } = await O({
|
|
58
58
|
dry: !1,
|
|
59
59
|
swapType: "EXACT_INPUT",
|
|
60
60
|
slippageTolerance: Math.round(i * 1e4) || 100,
|
|
61
61
|
originAsset: y,
|
|
62
62
|
depositType: "ORIGIN_CHAIN",
|
|
63
|
-
destinationAsset:
|
|
64
|
-
amount:
|
|
63
|
+
destinationAsset: b,
|
|
64
|
+
amount: x.toString(),
|
|
65
65
|
recipient: _,
|
|
66
66
|
recipientType: "DESTINATION_CHAIN",
|
|
67
67
|
refundTo: e.userKeys.getNearIntentsAccountId(),
|
|
@@ -69,7 +69,7 @@ var N = async (e, t, n, r, o, h, _, y) => {
|
|
|
69
69
|
deadline: C
|
|
70
70
|
});
|
|
71
71
|
if (!w.depositAddress) throw Error("NEAR Intents quote returned no deposit address");
|
|
72
|
-
let T = await e.withdraw([t], [-
|
|
72
|
+
let T = await e.withdraw([t], [-x], w.depositAddress, !1, a ?? t.erc20TokenAddress, o, void 0, u);
|
|
73
73
|
return {
|
|
74
74
|
tempSubAccount: g,
|
|
75
75
|
sourceTxHash: typeof T == "string" ? T : T.hash,
|
|
@@ -78,15 +78,15 @@ var N = async (e, t, n, r, o, h, _, y) => {
|
|
|
78
78
|
}, F = async (e, i, a, s, c) => {
|
|
79
79
|
let l = i.chainId, d = i.erc20TokenAddress, f = m.getAddressFromSubAccount(l, a);
|
|
80
80
|
if (!f) throw Error("Missing temp wallet address for bridge shield");
|
|
81
|
-
let { recipientInfo: p, claimable:
|
|
82
|
-
if (
|
|
83
|
-
let
|
|
84
|
-
if (
|
|
81
|
+
let { recipientInfo: p, claimable: v } = M(e, c);
|
|
82
|
+
if (v && await w(await e.getEthereumAddressByChain(l), v.ethAddress, v.keys.getShieldedPrivateKey(), l, v.signature, e.userKeys.getSignature()), t(l)) return j(e, i, a, s, p, r);
|
|
83
|
+
let b = y(e, l, [d], [s]), x = await g(l, i, s, await h(l, d, [d], u.Emporium, b.map((e) => C(e, f, l)), n)), S = s - _(s, x);
|
|
84
|
+
if (S <= 0n) throw Error(o.INSUFFICIENT_FUNDS_TO_TRANSACT);
|
|
85
85
|
return {
|
|
86
|
-
destTxHash: await e.proxyToPrivate([i], [
|
|
87
|
-
shieldedAmount:
|
|
86
|
+
destTxHash: await e.proxyToPrivate([i], [S], a, p, x.feeToken, x),
|
|
87
|
+
shieldedAmount: S
|
|
88
88
|
};
|
|
89
|
-
}, I = async (t, n, r, i, a, o =
|
|
89
|
+
}, I = async (t, n, r, i, a, o = x, s, c, l) => {
|
|
90
90
|
let { tempSubAccount: u, sourceTxHash: d, expectedAmount: f } = e(n.chainId) ? await P(t, n, r, i, o, s, c, l) : await N(t, n, r, i, o, s, c, l), p = m.getAddressFromSubAccount(r.chainId, u);
|
|
91
91
|
if (!p) throw Error("Missing temp wallet address for bridge");
|
|
92
92
|
let { destTxHash: h, shieldedAmount: g } = await F(t, r, u, await T(r.chainId, p, r.erc20TokenAddress, f, o), a);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/admin-dimensions.cjs`),S=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const C=require(`./hinkalDepositOnChainUtxos.cjs`);var w=async(o,u,m,h,v,S,C,w)=>{if(h.length===0)throw Error(`No recipients to bridge`);let T=m.erc20TokenAddress,{contractData:E}=e.networkRegistry[u],{emporiumAddress:D}=E;if(!D)throw Error(`No Emporium Address`);let O=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!O)throw Error(`LIFI not configured for chain ${u}`);let k=await o.getRandomRelay(u);if(!k)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let A=await o.getEthereumAddressByChain(u),j=o.generateProofRemotely,M=j?5:1,N=[];for(let i=0;i<h.length;i+=M){let b=h.slice(i,i+M),E=await Promise.all(b.map(async({utxo:h,nativeUtxo:b,bridgeAmount:E,quote:M,temporarySubAccount:N,recipientAddress:P,destinationChainId:F,destinationTokenAddress:I},L)=>{let R=v[i+L];await l.API.addTemporaryWalletNonce(u,S,N.index);let z=n.caseInsensitiveEqual(T,t.zeroAddress),B=M.nativeFee>0n&&!z,V=[T],H=[-h.amount],U=[!1],W=[[h]];B&&b&&(V.push(t.zeroAddress),H.push(-b.amount),U.push(!1),W.push([b]));let G=_.createLifiBridgeOps(o,u,N.ethAddress,O,T,h.amount,E,M),K=I?await d.getErc20TokenFromAPI(F??u,I):void 0,q=x.resolveSwapPairTokens(C,[m],K),J=f.constructAdminData(C,u,V,[-h.amount],A,q),[Y,X]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=j?await _.encodeEmporiumMetadata(u,D,N.privateKey,G,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),N.privateKey),R.flatFee):void 0;return y.hinkalTransact(o,{chainId:u,erc20Addresses:V,amountChanges:H,externalAddress:D,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:U,feeStructure:R,relay:k??t.zeroAddress,messageSeed:n,inputUtxos:W,useBlockedUtxos:!0,speculative:w&&{pendingLeaves:w,inputUtxos:W.map(e=>e.map(g.toSpeculativeUtxo))},subAccountPrivateKey:N.privateKey,emporiumOps:G,submit:{mode:c.SubmitMode.ProofOnly}})})(),_.getAuthorizationDataIfNeeded(u,N.privateKey)]),{zkCallData:Z,circomData:Q,dimData:$,commitmentValidationData:ee,tronProofSignature:te}=Y;return{zkCallData:Z,dimData:$,circomData:Q,commitmentValidationData:ee,authorizationData:X,recipientAddress:P,adminData:J,tronProofSignature:te,destinationChainId:F,destinationTokenAddress:I,destinationTokenAmount:M.expectedAmount.toString()}}));N.push(...E)}return N},T=e=>e.map(e=>e.quote.nativeFee),E=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],_=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),_.push(T(r))}let y=await C.prepareDepositOnChainUtxos(e,a,g,_),{depositedUtxos:b,pendingLeaves:x}=y,[S,E=[]]=b,D=r.map((e,t)=>({...e,utxo:S[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([C.submitDepositOnChainUtxos(e,y,h),w(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await v.transactCallRelayerBatch(a,k,o,u,f,m,O)}},D=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let g=r.erc20TokenAddress,v=u.validateAndGetChainId([r]),y=await e.getEthereumAddressByChain(v),x=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][v];if(!x)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(g,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=_.createLifiBridgeOps(e,v,n.temporarySubAccount.ethAddress,x,g,r,n.bridgeAmount,n.quote).map(e=>S.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,v));w=await m.getFeeStructure(v,g,[g],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let T=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>h.calculateModifiedFeeStructure(v,r,e,w)));return E(e,r,i,{chainId:v,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:T>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=D;
|
|
@@ -13,106 +13,107 @@ import { getErc20TokenFromAPI as m } from "../../functions/utils/erc20tokenFunct
|
|
|
13
13
|
import { constructAdminData as h } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
14
14
|
import { AccountActions as g } from "../AccountActions/AccountActions.mjs";
|
|
15
15
|
import { getFeeStructure as _ } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
16
|
+
import { calculateModifiedFeeStructure as v } from "../../functions/utils/fees.utils.mjs";
|
|
17
|
+
import { toSpeculativeUtxo as y } from "../../functions/pre-transaction/speculativeUtxo.mjs";
|
|
18
|
+
import { createLifiBridgeOps as b, encodeEmporiumMetadata as x, getAuthorizationDataIfNeeded as S } from "../../functions/private-wallet/emporium.helpers.mjs";
|
|
19
|
+
import { transactCallRelayerBatch as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
20
|
+
import { hinkalTransact as w } from "./hinkalTransact.mjs";
|
|
21
|
+
import { SWAP_ROUTER_ADDRESSES as T } from "../../constants/addresses.constants.mjs";
|
|
22
|
+
import { resolveSwapPairTokens as E } from "../../functions/utils/admin-dimensions.mjs";
|
|
23
|
+
import { convertEmporiumOpToCallInfo as D } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
|
|
23
24
|
import "../../functions/utils/index.mjs";
|
|
24
|
-
import { prepareDepositOnChainUtxos as
|
|
25
|
+
import { prepareDepositOnChainUtxos as O, submitDepositOnChainUtxos as k } from "./hinkalDepositOnChainUtxos.mjs";
|
|
25
26
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndBridge.ts
|
|
26
|
-
var
|
|
27
|
+
var A = async (n, c, l, p, _, v, C, D) => {
|
|
27
28
|
if (p.length === 0) throw Error("No recipients to bridge");
|
|
28
|
-
let
|
|
29
|
-
if (!
|
|
30
|
-
let
|
|
31
|
-
if (!
|
|
32
|
-
let
|
|
33
|
-
if (!
|
|
34
|
-
let
|
|
35
|
-
for (let t = 0; t < p.length; t +=
|
|
36
|
-
let o = p.slice(t, t +
|
|
37
|
-
let
|
|
38
|
-
await f.addTemporaryWalletNonce(c,
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
let
|
|
42
|
-
let t = s(31), i =
|
|
43
|
-
return
|
|
29
|
+
let O = l.erc20TokenAddress, { contractData: k } = t[c], { emporiumAddress: A } = k;
|
|
30
|
+
if (!A) throw Error("No Emporium Address");
|
|
31
|
+
let j = T[u.Lifi][c];
|
|
32
|
+
if (!j) throw Error(`LIFI not configured for chain ${c}`);
|
|
33
|
+
let M = await n.getRandomRelay(c);
|
|
34
|
+
if (!M) throw Error(o.RELAYER_NOT_AVAILABLE);
|
|
35
|
+
let N = await n.getEthereumAddressByChain(c), P = n.generateProofRemotely, F = P ? 5 : 1, I = [];
|
|
36
|
+
for (let t = 0; t < p.length; t += F) {
|
|
37
|
+
let o = p.slice(t, t + F), T = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: p, bridgeAmount: T, quote: k, temporarySubAccount: F, recipientAddress: I, destinationChainId: L, destinationTokenAddress: R }, z) => {
|
|
38
|
+
let B = _[t + z];
|
|
39
|
+
await f.addTemporaryWalletNonce(c, v, F.index);
|
|
40
|
+
let V = i(O, r), H = k.nativeFee > 0n && !V, U = [O], W = [-o.amount], G = [!1], K = [[o]];
|
|
41
|
+
H && p && (U.push(r), W.push(-p.amount), G.push(!1), K.push([p]));
|
|
42
|
+
let q = b(n, c, F.ethAddress, j, O, o.amount, T, k), J = R ? await m(L ?? c, R) : void 0, Y = E(C, [l], J), X = h(C, c, U, [-o.amount], N, Y), [Z, Q] = await Promise.all([(async () => {
|
|
43
|
+
let t = s(31), i = P ? await x(c, A, F.privateKey, q, a(t), g.getSignerAddressFromPrivateKey(e(c), F.privateKey), B.flatFee) : void 0;
|
|
44
|
+
return w(n, {
|
|
44
45
|
chainId: c,
|
|
45
|
-
erc20Addresses:
|
|
46
|
-
amountChanges:
|
|
47
|
-
externalAddress:
|
|
46
|
+
erc20Addresses: U,
|
|
47
|
+
amountChanges: W,
|
|
48
|
+
externalAddress: A,
|
|
48
49
|
externalActionId: u.Emporium,
|
|
49
50
|
externalActionMetadata: i,
|
|
50
|
-
onChainCreation:
|
|
51
|
-
feeStructure:
|
|
52
|
-
relay:
|
|
51
|
+
onChainCreation: G,
|
|
52
|
+
feeStructure: B,
|
|
53
|
+
relay: M ?? r,
|
|
53
54
|
messageSeed: t,
|
|
54
|
-
inputUtxos:
|
|
55
|
+
inputUtxos: K,
|
|
55
56
|
useBlockedUtxos: !0,
|
|
56
|
-
speculative:
|
|
57
|
-
pendingLeaves:
|
|
58
|
-
inputUtxos:
|
|
57
|
+
speculative: D && {
|
|
58
|
+
pendingLeaves: D,
|
|
59
|
+
inputUtxos: K.map((e) => e.map(y))
|
|
59
60
|
},
|
|
60
|
-
subAccountPrivateKey:
|
|
61
|
-
emporiumOps:
|
|
61
|
+
subAccountPrivateKey: F.privateKey,
|
|
62
|
+
emporiumOps: q,
|
|
62
63
|
submit: { mode: d.ProofOnly }
|
|
63
64
|
});
|
|
64
|
-
})(),
|
|
65
|
+
})(), S(c, F.privateKey)]), { zkCallData: $, circomData: ee, dimData: te, commitmentValidationData: ne, tronProofSignature: re } = Z;
|
|
65
66
|
return {
|
|
66
|
-
zkCallData:
|
|
67
|
-
dimData:
|
|
68
|
-
circomData:
|
|
69
|
-
commitmentValidationData:
|
|
70
|
-
authorizationData:
|
|
71
|
-
recipientAddress:
|
|
72
|
-
adminData:
|
|
73
|
-
tronProofSignature:
|
|
74
|
-
destinationChainId:
|
|
75
|
-
destinationTokenAddress:
|
|
76
|
-
destinationTokenAmount:
|
|
67
|
+
zkCallData: $,
|
|
68
|
+
dimData: te,
|
|
69
|
+
circomData: ee,
|
|
70
|
+
commitmentValidationData: ne,
|
|
71
|
+
authorizationData: Q,
|
|
72
|
+
recipientAddress: I,
|
|
73
|
+
adminData: X,
|
|
74
|
+
tronProofSignature: re,
|
|
75
|
+
destinationChainId: L,
|
|
76
|
+
destinationTokenAddress: R,
|
|
77
|
+
destinationTokenAmount: k.expectedAmount.toString()
|
|
77
78
|
};
|
|
78
79
|
}));
|
|
79
|
-
|
|
80
|
+
I.push(...T);
|
|
80
81
|
}
|
|
81
|
-
return
|
|
82
|
-
},
|
|
82
|
+
return I;
|
|
83
|
+
}, j = (e) => e.map((e) => e.quote.nativeFee), M = async (e, t, n, i) => {
|
|
83
84
|
let { chainId: a, hashedEthereumAddress: o, feeStructures: s, mainTokenAmounts: c } = i, { needsNativeDeposit: l, txCompletionTime: u, ref: d, action: f, hashedDashboardAccountId: p, preEstimateGas: h } = i, g = [t], _ = [c];
|
|
84
85
|
if (l) {
|
|
85
86
|
let e = await m(a, r);
|
|
86
87
|
if (!e) throw Error("No native token");
|
|
87
|
-
g.push(e), _.push(
|
|
88
|
+
g.push(e), _.push(j(n));
|
|
88
89
|
}
|
|
89
|
-
let v = await
|
|
90
|
+
let v = await O(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, S = []] = y, w = n.map((e, t) => ({
|
|
90
91
|
...e,
|
|
91
92
|
utxo: x[t],
|
|
92
|
-
nativeUtxo: l ?
|
|
93
|
-
})), [T, E] = await Promise.all([
|
|
93
|
+
nativeUtxo: l ? S[t] : void 0
|
|
94
|
+
})), [T, E] = await Promise.all([k(e, v, h), A(e, a, t, w, s, o, f, b)]);
|
|
94
95
|
return {
|
|
95
96
|
depositTxHash: T,
|
|
96
|
-
scheduleId: await
|
|
97
|
+
scheduleId: await C(a, E, o, u, d, p, T)
|
|
97
98
|
};
|
|
98
|
-
},
|
|
99
|
+
}, N = async (e, t, a, o, s, d, f, m, h = !0) => {
|
|
99
100
|
if (a.length === 0) throw Error("No recipients to bridge");
|
|
100
|
-
let g = t.erc20TokenAddress,
|
|
101
|
-
if (!
|
|
102
|
-
let
|
|
103
|
-
if (s)
|
|
101
|
+
let g = t.erc20TokenAddress, y = p([t]), x = await e.getEthereumAddressByChain(y), S = T[u.Lifi][y];
|
|
102
|
+
if (!S) throw Error("LIFI router not configured");
|
|
103
|
+
let C = i(g, r), w;
|
|
104
|
+
if (s) w = s;
|
|
104
105
|
else {
|
|
105
|
-
let t = a[0], r =
|
|
106
|
-
|
|
106
|
+
let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) => D(e, t.temporarySubAccount.ethAddress, y));
|
|
107
|
+
w = await _(y, g, [g], u.Emporium, i, n);
|
|
107
108
|
}
|
|
108
|
-
let
|
|
109
|
-
return
|
|
110
|
-
chainId:
|
|
111
|
-
ethereumAddress:
|
|
112
|
-
hashedEthereumAddress: c(
|
|
109
|
+
let E = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => C ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => v(y, t, e, w)));
|
|
110
|
+
return M(e, t, a, {
|
|
111
|
+
chainId: y,
|
|
112
|
+
ethereumAddress: x,
|
|
113
|
+
hashedEthereumAddress: c(x),
|
|
113
114
|
feeStructures: k,
|
|
114
115
|
mainTokenAmounts: O.map((e, t) => e + k[t].flatFee),
|
|
115
|
-
needsNativeDeposit:
|
|
116
|
+
needsNativeDeposit: E > 0n && !C,
|
|
116
117
|
txCompletionTime: o,
|
|
117
118
|
ref: d,
|
|
118
119
|
action: f,
|
|
@@ -121,4 +122,4 @@ var k = async (n, c, l, p, m, _, S, T) => {
|
|
|
121
122
|
});
|
|
122
123
|
};
|
|
123
124
|
//#endregion
|
|
124
|
-
export {
|
|
125
|
+
export { N as hinkalDepositAndBridge };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`./hinkalTransact.cjs`),y=require(`../../functions/utils/admin-dimensions.cjs`);require(`../../functions/index.cjs`);const b=require(`./hinkalDepositOnChainUtxos.cjs`);let x=require(`ethers`);var S=async(e,o,s,l,u,p,m,g)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[b,x]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!b)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let S=e.generateProofRemotely?5:1,C=[],w=a.addressToHexFormat(x);for(let r=0;r<l.length;r+=S){let x=l.slice(r,r+S),T=await Promise.all(x.map(async({recipientAddress:l,utxo:x},S)=>{let C=r+S,T=a.addressToHexFormat(l),E=n.caseInsensitiveEqual(x.erc20TokenAddress,_)?x:i.Utxo.createFrom(x,{erc20TokenAddress:_}),D=m?.tokenAddress?await d.getErc20TokenFromAPI(m.chainId??o,m.tokenAddress):void 0,O=y.resolveSwapPairTokens(p,[s],D),k=f.constructAdminData(p,o,[_],[-x.amount],w,O),{zkCallData:A,circomData:j,dimData:M,commitmentValidationData:N,tronProofSignature:P}=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-x.amount],externalAddress:T,feeStructure:u,relay:b??t.zeroAddress,inputUtxos:[[E]],useBlockedUtxos:!0,speculative:g&&{pendingLeaves:g,inputUtxos:[[h.toSpeculativeUtxo(E)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:A,dimData:M,circomData:j,commitmentValidationData:N,adminData:k,recipientAddress:l,tronProofSignature:P,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[C]}}));C.push(...T)}return C},C=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,h=m.calculateGrossUtxoAmounts(n,s),g=await b.prepareDepositOnChainUtxos(e,a,[t],[h]),{depositedUtxos:v,pendingLeaves:y}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[C,w]=await Promise.all([b.submitDepositOnChainUtxos(e,g,p),S(e,a,t,x,s,c,l,y)]);return{depositTxHash:C,scheduleId:await _.transactCallRelayerBatch(a,w,o,u,d,f,C)}},w=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:u,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:h,ref:y,hashedDashboardAccountId:b,preEstimateGas:C}=i,w=m.calculateGrossUtxoAmounts(n,d),T=w.reduce((e,t)=>e+t,0n),E=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[T],externalAddress:s,selfOutputAmounts:w,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),D=E.circomData.encryptedOutputs?.[0];if(!D||D.length!==w.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let O=D.map((t,n)=>({recipientAddress:r[n],utxo:l.decryptUtxo(x.ethers.getBytes(t),e.userKeys)})),k=E.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[A,j]=await Promise.all([(async()=>{a.swapTronBCoordinate(E.zkCallData);let n=await g.transactCallDirectTron(e,o,T,t,E.zkCallData,E.circomData,E.dimData,void 0,void 0,C,E.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),S(e,o,t,O,d,f,p,k)]);return{depositTxHash:A,scheduleId:await _.transactCallRelayerBatch(o,j,u,h,y,b,A)}},T=async(t,n,r,i,c,l,d,f,m,h=!0,g)=>{let _=u.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),b={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:l??await p.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:f,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return C(t,n,r,i,b);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return w(t,n,r,i,b)};exports.hinkalDepositAndWithdraw=T;
|