@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
|
@@ -2,8 +2,8 @@ import { hashEthereumAddress as e } from "../utils/addresses.mjs";
|
|
|
2
2
|
//#region libs/shared/common/src/functions/pre-transaction/constructAdminData.ts
|
|
3
3
|
var t = (t, n, r, i, a, o) => {
|
|
4
4
|
if (!t) return;
|
|
5
|
-
let s;
|
|
6
|
-
return o && (s = {
|
|
5
|
+
let s, c;
|
|
6
|
+
return o && (c = o[1]?.chainId, s = {
|
|
7
7
|
tokenIn: {
|
|
8
8
|
symbol: o[0]?.symbol,
|
|
9
9
|
address: o[0]?.erc20TokenAddress.toLowerCase()
|
|
@@ -19,7 +19,8 @@ var t = (t, n, r, i, a, o) => {
|
|
|
19
19
|
action: t,
|
|
20
20
|
erc20TokenAddresses: r,
|
|
21
21
|
erc20TokenAmount: i.map(String),
|
|
22
|
-
swapPair: s
|
|
22
|
+
swapPair: s,
|
|
23
|
+
destinationChainId: c || void 0
|
|
23
24
|
};
|
|
24
25
|
};
|
|
25
26
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./outputUtxoProcessing.cjs`),require(`./solana.cjs`),require(`./process-gas-estimates.cjs`),require(`./getVolatileTransferAmount.cjs`),require(`./constructAdminData.cjs`),require(`./calculateSolanaNullifierCount.cjs`),require(`./addressTableLookup.cjs`),require(`./convert-okx-instructions.cjs`),require(`./sendV0Transaction.cjs`),require(`./store-proof.cjs`),require(`./sendInitNullifiersTransaction.cjs`),require(`./store-instructions.cjs`),require(`./ensureAmountChanges.cjs`),require(`./getFeeStructure.cjs`),require(`./getExternalSwapAddress.cjs`),require(`./speculativeUtxo.cjs`),require(`./buildCommitmentValidationData.cjs`);
|
|
1
|
+
require(`./outputUtxoProcessing.cjs`),require(`./solana.cjs`),require(`./process-gas-estimates.cjs`),require(`./getVolatileTransferAmount.cjs`),require(`./constructAdminData.cjs`),require(`./calculateSolanaNullifierCount.cjs`),require(`./addressTableLookup.cjs`),require(`./convert-okx-instructions.cjs`),require(`./sendV0Transaction.cjs`),require(`./store-proof.cjs`),require(`./sendInitNullifiersTransaction.cjs`),require(`./store-instructions.cjs`),require(`./ensureAmountChanges.cjs`),require(`./getFeeStructure.cjs`),require(`./build-proofless-deposit-fee.cjs`),require(`./getExternalSwapAddress.cjs`),require(`./speculativeUtxo.cjs`),require(`./buildCommitmentValidationData.cjs`);
|
|
@@ -13,6 +13,7 @@ export * from './sendInitNullifiersTransaction';
|
|
|
13
13
|
export * from './store-instructions';
|
|
14
14
|
export * from './ensureAmountChanges';
|
|
15
15
|
export * from './getFeeStructure';
|
|
16
|
+
export * from './build-proofless-deposit-fee';
|
|
16
17
|
export * from './getExternalSwapAddress';
|
|
17
18
|
export * from './waitForDepositedUtxosInMerkleTree';
|
|
18
19
|
export * from './speculativeUtxo';
|
|
@@ -12,6 +12,7 @@ import "./sendInitNullifiersTransaction.mjs";
|
|
|
12
12
|
import "./store-instructions.mjs";
|
|
13
13
|
import "./ensureAmountChanges.mjs";
|
|
14
14
|
import "./getFeeStructure.mjs";
|
|
15
|
+
import "./build-proofless-deposit-fee.mjs";
|
|
15
16
|
import "./getExternalSwapAddress.mjs";
|
|
16
17
|
import "./speculativeUtxo.mjs";
|
|
17
18
|
import "./buildCommitmentValidationData.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../utils/serialize.utils.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/logger.cjs`),r=require(`../../data-structures/AccountActions/AccountActions.cjs`),i=require(`../../types/fee.types.cjs`),a=require(`../../API/solana-priority-fee.cjs`),o=require(`../utils/process.utils.cjs`),s=require(`../../error-handling/retrySolanaError.cjs`);let c=require(`@solana/web3.js`);require(`@solana/spl-token`);var l=5e3,u=6e4,d=async(e,t,n=`confirmed`)=>await o.pollForValue(()=>e.getTransaction(t,{commitment:n,maxSupportedTransactionVersion:0}),{timeoutMs:u,intervalMs:l})??null,f=async(r,i,a,o,s=!1)=>{try{let{blockhash:l}=await r.getLatestBlockhash(),u=new c.VersionedTransaction(new c.TransactionMessage({payerKey:i,recentBlockhash:l,instructions:[c.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}),...s?[c.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...a]}).compileToV0Message(o)),d=await r.simulateTransaction(u,{sigVerify:!1,replaceRecentBlockhash:!0});d.value.err&&n.Logger.error(`Solana compute-unit simulation failed:`,{error:e.safeJsonStringify(d.value.err),logs:d.value.logs});let{unitsConsumed:f}=d.value;if(!f)return t.MAX_COMPUTE_UNIT_LIMIT;let p=Math.ceil(f*(1+t.COMPUTE_UNIT_PADDING_PERCENTAGE));return Math.max(t.MIN_COMPUTE_UNIT_LIMIT,Math.min(p,t.MAX_COMPUTE_UNIT_LIMIT))}catch(e){return n.Logger.error(`Solana compute-unit estimation threw:`,e),t.MAX_COMPUTE_UNIT_LIMIT}},p=(e,t,n,r)=>{let i=new Set;return t&&i.add(t.toBase58()),n?.forEach(e=>i.add(e.toBase58())),e.forEach(e=>{i.add(e.programId.toBase58()),e.keys.forEach(e=>{i.add(e.pubkey.toBase58())})}),r&&r.forEach(e=>{i.add(e.key.toBase58()),e.state.addresses.forEach(e=>{i.add(e.toBase58())})}),[...i].map(e=>new c.PublicKey(e))},m=(t,r)=>{if(!t)throw Error(`Failed to fetch Solana transaction details for signature${r?` ${r}`:``}`);if(t.meta?.err){let i=e.safeJsonStringify(t.meta.err),a=t.meta.logMessages?.join(`
|
|
2
|
-
`);n.Logger.error(`Solana transaction failed on-chain`,{signature:r,error:i,logs:t.meta.logMessages});let o=r?` (signature: ${r})`:``;throw Error(a?`Solana transaction failed on-chain${o}: ${i}\n${a}`:`Solana transaction failed on-chain${o}: ${i}`)}},h=async(e,n,r,i,o,s=!1)=>{if(r.some(e=>e.programId.equals(c.ComputeBudgetProgram.programId)))return r.map(e=>e.programId.equals(c.ComputeBudgetProgram.programId)&&e.data[0]===2?c.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}):e);let l=r.filter(e=>!e.programId.equals(c.ComputeBudgetProgram.programId)),u=await f(e,n,l,i,s),d=c.ComputeBudgetProgram.setComputeUnitLimit({units:u}),m=await a.getSolanaPriorityFeeFromServer(p(l,n,[c.ComputeBudgetProgram.programId],i),o);return[d,...m>0?[c.ComputeBudgetProgram.setComputeUnitPrice({microLamports:m})]:[],...s?[c.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...l]},g=async({connection:e,chainId:t,subAccount:n,payerPublicKey:a,instructions:o,lookupTableAccounts:l})=>{let u=r.AccountActions.getPrivateKeyFromSubAccount(t,n);if(!u)throw Error(`Private key is not available`);for(let t=0;t<10;t+=1){let n=t===9;try{let t=await h(e,a,o,l,n?i.SolanaPriorityFeeMode.HIGH:i.SolanaPriorityFeeMode.RECOMMENDED),{blockhash:s,lastValidBlockHeight:f}=await e.getLatestBlockhash(),p=new c.VersionedTransaction(new c.TransactionMessage({payerKey:a,recentBlockhash:s,instructions:t}).compileToV0Message(l)),g=await r.AccountActions.sendAndSignSolanaTransactionFromPrivateKey(e,u,p,!0);return await e.confirmTransaction({signature:g,blockhash:s,lastValidBlockHeight:f},`confirmed`),m(await d(e,g),g),g}catch(e){if(s.shouldRetryForSolanaError(e)&&!n)continue;throw e}}throw Error(`Failed to send proxy v0 transaction due to expired blockheight after all retries`)};exports.estimateComputeUnitLimit=f,exports.fetchSolanaTransaction=d,exports.getAccountsFromInstructions=p,exports.handleSolanaTransactionError=m,exports.sendProxyV0Transaction=
|
|
2
|
+
`);n.Logger.error(`Solana transaction failed on-chain`,{signature:r,error:i,logs:t.meta.logMessages});let o=r?` (signature: ${r})`:``;throw Error(a?`Solana transaction failed on-chain${o}: ${i}\n${a}`:`Solana transaction failed on-chain${o}: ${i}`)}},h=async(e,n,r,i,o,s=!1)=>{if(r.some(e=>e.programId.equals(c.ComputeBudgetProgram.programId)))return r.map(e=>e.programId.equals(c.ComputeBudgetProgram.programId)&&e.data[0]===2?c.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}):e);let l=r.filter(e=>!e.programId.equals(c.ComputeBudgetProgram.programId)),u=await f(e,n,l,i,s),d=c.ComputeBudgetProgram.setComputeUnitLimit({units:u}),m=await a.getSolanaPriorityFeeFromServer(p(l,n,[c.ComputeBudgetProgram.programId],i),o);return[d,...m>0?[c.ComputeBudgetProgram.setComputeUnitPrice({microLamports:m})]:[],...s?[c.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...l]},g=async(e,t,n,r)=>{for(let i=0;i<10;i+=1){let a=i===9;try{let{blockhash:i,lastValidBlockHeight:a}=await e.getLatestBlockhash(),o=new c.VersionedTransaction(new c.TransactionMessage({payerKey:n,recentBlockhash:i,instructions:r}).compileToV0Message()),s=await t.signTransaction(o),l=await e.sendTransaction(s);return await e.confirmTransaction({signature:l,blockhash:i,lastValidBlockHeight:a},`confirmed`),l}catch(e){if(s.shouldRetryForSolanaError(e)&&!a)continue;throw e}}return``},_=async({connection:e,chainId:t,subAccount:n,payerPublicKey:a,instructions:o,lookupTableAccounts:l})=>{let u=r.AccountActions.getPrivateKeyFromSubAccount(t,n);if(!u)throw Error(`Private key is not available`);for(let t=0;t<10;t+=1){let n=t===9;try{let t=await h(e,a,o,l,n?i.SolanaPriorityFeeMode.HIGH:i.SolanaPriorityFeeMode.RECOMMENDED),{blockhash:s,lastValidBlockHeight:f}=await e.getLatestBlockhash(),p=new c.VersionedTransaction(new c.TransactionMessage({payerKey:a,recentBlockhash:s,instructions:t}).compileToV0Message(l)),g=await r.AccountActions.sendAndSignSolanaTransactionFromPrivateKey(e,u,p,!0);return await e.confirmTransaction({signature:g,blockhash:s,lastValidBlockHeight:f},`confirmed`),m(await d(e,g),g),g}catch(e){if(s.shouldRetryForSolanaError(e)&&!n)continue;throw e}}throw Error(`Failed to send proxy v0 transaction due to expired blockheight after all retries`)};exports.estimateComputeUnitLimit=f,exports.fetchSolanaTransaction=d,exports.getAccountsFromInstructions=p,exports.handleSolanaTransactionError=m,exports.sendInstructions=g,exports.sendProxyV0Transaction=_;
|
|
@@ -5,6 +5,7 @@ export declare const estimateComputeUnitLimit: (connection: Connection, payerKey
|
|
|
5
5
|
export declare const getAccountsFromInstructions: (instructions: TransactionInstruction[], payerKey?: PublicKey, additionalAccounts?: PublicKey[], lookupTableAccounts?: AddressLookupTableAccount[]) => PublicKey[];
|
|
6
6
|
export declare const handleSolanaTransactionError: (transactionResponse: VersionedTransactionResponse | null, signature?: string) => void;
|
|
7
7
|
export declare const sendV0Transaction: (connection: Connection, instructions: TransactionInstruction[], payer: Keypair, signers: Keypair[], lookupTableAccounts?: AddressLookupTableAccount[], requestHeapFrame?: boolean) => Promise<string>;
|
|
8
|
+
export declare const sendInstructions: (connection: Connection, wallet: any, publicKey: PublicKey, instructions: TransactionInstruction[]) => Promise<string>;
|
|
8
9
|
export declare const sendSignedV0Transaction: (connection: Connection, transaction: VersionedTransaction) => Promise<string>;
|
|
9
10
|
export declare const ensureAtaExists: (connection: Connection, payer: Keypair, mintPubkey: PublicKey | null, owner: PublicKey) => Promise<PublicKey | null>;
|
|
10
11
|
type SendProxyV0TransactionParams = {
|
|
@@ -72,7 +72,27 @@ var h = 5e3, g = 6e4, _ = async (e, t, n = "confirmed") => await l(() => e.getTr
|
|
|
72
72
|
...s ? [d.requestHeapFrame({ bytes: r })] : [],
|
|
73
73
|
...l
|
|
74
74
|
];
|
|
75
|
-
}, S = async (
|
|
75
|
+
}, S = async (e, t, n, r) => {
|
|
76
|
+
for (let i = 0; i < 10; i += 1) {
|
|
77
|
+
let a = i === 9;
|
|
78
|
+
try {
|
|
79
|
+
let { blockhash: i, lastValidBlockHeight: a } = await e.getLatestBlockhash(), o = new m(new p({
|
|
80
|
+
payerKey: n,
|
|
81
|
+
recentBlockhash: i,
|
|
82
|
+
instructions: r
|
|
83
|
+
}).compileToV0Message()), s = await t.signTransaction(o), c = await e.sendTransaction(s);
|
|
84
|
+
return await e.confirmTransaction({
|
|
85
|
+
signature: c,
|
|
86
|
+
blockhash: i,
|
|
87
|
+
lastValidBlockHeight: a
|
|
88
|
+
}, "confirmed"), c;
|
|
89
|
+
} catch (e) {
|
|
90
|
+
if (u(e) && !a) continue;
|
|
91
|
+
throw e;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return "";
|
|
95
|
+
}, C = async ({ connection: e, chainId: t, subAccount: n, payerPublicKey: r, instructions: i, lookupTableAccounts: a }) => {
|
|
76
96
|
let c = o.getPrivateKeyFromSubAccount(t, n);
|
|
77
97
|
if (!c) throw Error("Private key is not available");
|
|
78
98
|
for (let t = 0; t < 10; t += 1) {
|
|
@@ -96,4 +116,4 @@ var h = 5e3, g = 6e4, _ = async (e, t, n = "confirmed") => await l(() => e.getTr
|
|
|
96
116
|
throw Error("Failed to send proxy v0 transaction due to expired blockheight after all retries");
|
|
97
117
|
};
|
|
98
118
|
//#endregion
|
|
99
|
-
export { v as estimateComputeUnitLimit, _ as fetchSolanaTransaction, y as getAccountsFromInstructions, b as handleSolanaTransactionError, S as sendProxyV0Transaction };
|
|
119
|
+
export { v as estimateComputeUnitLimit, _ as fetchSolanaTransaction, y as getAccountsFromInstructions, b as handleSolanaTransactionError, S as sendInstructions, C as sendProxyV0Transaction };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/logger.cjs`),i=require(`../../types/ethereum-network.types.cjs`),a=require(`../utils/create-provider.cjs`),o=require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/logger.cjs`),i=require(`../../types/ethereum-network.types.cjs`),a=require(`../utils/create-provider.cjs`),o=require(`../web3/getContractMetadata.cjs`),s=require(`../../data-structures/AccountActions/AccountActions.cjs`),c=require(`../utils/getContractAddress.cjs`);let l=require(`ethers`);var u=e=>{if(typeof e.target==`string`)return e.target;if(e.address)return e.address;throw Error(`Contract address not found`)},d=`tuple(address endpoint, bool invokeWallet, uint128 value, bytes callData)`,f=`tuple(uint8 v, bytes32 r, bytes32 s, address signerAddress, ${d}[] ops, uint256 maxFee, uint256 deadline)`,p=1200,m=e=>{let[t]=l.ethers.AbiCoder.defaultAbiCoder().decode([d],e);return{endpoint:t.endpoint,invokeWallet:t.invokeWallet,value:BigInt(t.value),callData:t.callData}},h=({contract:e,func:t,args:n,callDataString:r,invokeWallet:i,value:a})=>{let o,s=r??`0x`;if(typeof e==`object`){if(o=u(e),r?.length&&r?.length>0)throw Error(`If function and args are providedm no calldata is needed`);t&&n&&!r&&(s=e.interface.encodeFunctionData(t,n))}else o=e;return l.ethers.AbiCoder.defaultAbiCoder().encode([d],[{endpoint:o,invokeWallet:!!i,value:a??0n,callData:s}])},g=async(n,r,i,a,o,c,u)=>{let d=e.getOnchainChainId(n),h=a.map(m),g=0n,_=i&&c?await(async()=>{if(u===void 0)throw Error(`maxFee required if making tx from emporium`);return g=BigInt(Math.floor(Date.now()/1e3)+p),s.AccountActions.signTypedDataFromPrivateKey(d,i,{name:`Emporium`,version:`1.0.0`,chainId:d,verifyingContract:r},{EmporiumSignature:[{name:`message`,type:`uint256`},{name:`ops`,type:`EmporiumOperation[]`},{name:`maxFee`,type:`uint256`},{name:`deadline`,type:`uint256`}],EmporiumOperation:[{name:`endpoint`,type:`address`},{name:`invokeWallet`,type:`bool`},{name:`value`,type:`uint128`},{name:`callData`,type:`bytes`}]},{message:o,ops:h,maxFee:u,deadline:g})})():void 0,{v,r:y,s:b}=_?l.ethers.Signature.from(_):{v:0,r:l.ethers.ZeroHash,s:l.ethers.ZeroHash};return l.ethers.AbiCoder.defaultAbiCoder().encode([f],[{v,r:y,s:b,signerAddress:c??t.zeroAddress,ops:h,maxFee:u??0n,deadline:g}])},_=(e,t,n,r)=>h(e?{contract:e,func:`transfer`,args:[t,n],invokeWallet:r}:{contract:t,value:n,invokeWallet:r}),v=(e,r,a,o,s)=>{let l=e.getContractWithFetcherByChainId(r,i.ContractType.HinkalContract);return a.map((a,u)=>_(n.caseInsensitiveEqual(a,t.zeroAddress)?void 0:e.getContractWithFetcherByChainId(r,i.ContractType.ERC20Contract,a),s??c.getContractAddress(l),o[u],!0))},y=(e,t,n,r)=>h({contract:e,func:`approve`,args:[t,n],invokeWallet:r}),b=(e,r,a,s,c,l,u)=>{let d=[];for(let s=0;s<r.length;s+=1){let c=r[s],u=n.caseInsensitiveEqual(c,t.zeroAddress)?void 0:o.getContractWithFetcherByChainId(e,i.ContractType.ERC20Contract,c);d.push(_(u,l,a[s],!1))}if(u)for(let r=0;r<s.length;r+=1){let a=s[r];if(!n.caseInsensitiveEqual(a,t.zeroAddress)){let t=o.getContractWithFetcherByChainId(e,i.ContractType.ERC20Contract,a);d.push(y(t,u,c[r],!0))}}return d},x=(e,r,i,a,o,s,c,l)=>{let u=[],d=[o],f=[s];l.nativeFee>0n&&!n.caseInsensitiveEqual(o,t.zeroAddress)&&(d.push(t.zeroAddress),f.push(l.nativeFee));let p=b(r,d,f,[o],[c],i,a);u.push(...p);let m=l.nativeFee;return n.caseInsensitiveEqual(o,t.zeroAddress)&&(m+=c),u.push(h({contract:a,callDataString:l.calldata,value:m>0n?m:void 0,invokeWallet:!0})),u},S=`0xef0100`,C=async(e,t)=>{try{let n=a.createJsonRpcProvider(e),r=await n.getCode(t);if(r===`0x`||!r)return{delegated:!1,implementation:void 0,nonce:void 0};if(r.toLowerCase().startsWith(S)&&r.length===48){let e=`0x${r.slice(8)}`,i=await n.getTransactionCount(t);return{delegated:!0,implementation:l.ethers.getAddress(e),nonce:i}}else throw Error(`checkEOAWithDelegation: It is a contract`)}catch(e){throw r.Logger.error(`checkEOAWithDelegation error`,{error:e}),e}},w=r=>{let{hinkalWalletAddress:i}=e.networkRegistry[r].contractData;if(!i||n.caseInsensitiveEqual(i,t.zeroAddress))throw Error(`Hinkal Wallet Address is not set`);return i},T=async(t,r)=>{if(t===e.chainIds.localhost||!r)return;let i=e.getOnchainChainId(t),{delegated:a,implementation:o}=await C(t,s.AccountActions.getSignerAddressFromPrivateKey(t,r)),c=w(t);if(!a||!n.caseInsensitiveEqual(o,c)){let e=await s.AccountActions.authorizeDelegation(i,r,c);return{v:e.signature.v.toString(),r:e.signature.r,s:e.signature.s,nonce:e.nonce.toString(),address:c,chainId:String(i)}}};exports.checkEOAWithDelegation=C,exports.createApproveEmporiumOp=y,exports.createLifiBridgeOps=x,exports.createTransaferEmporiumOpsBatch=v,exports.createTransferToEmporiumOp=_,exports.emporiumOp=h,exports.encodeEmporiumMetadata=g,exports.generateFundAndApproveOps=b,exports.getAuthorizationDataIfNeeded=T;
|
|
@@ -4,8 +4,8 @@ import { caseInsensitiveEqual as i } from "../utils/caseInsensitive.utils.mjs";
|
|
|
4
4
|
import { Logger as a } from "../../error-handling/logger.mjs";
|
|
5
5
|
import { ContractType as o } from "../../types/ethereum-network.types.mjs";
|
|
6
6
|
import { createJsonRpcProvider as s } from "../utils/create-provider.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { getContractWithFetcherByChainId as c } from "../web3/getContractMetadata.mjs";
|
|
8
|
+
import { AccountActions as l } from "../../data-structures/AccountActions/AccountActions.mjs";
|
|
9
9
|
import { getContractAddress as u } from "../utils/getContractAddress.mjs";
|
|
10
10
|
import { ethers as d } from "ethers";
|
|
11
11
|
//#region libs/shared/common/src/functions/private-wallet/emporium.helpers.ts
|
|
@@ -33,10 +33,10 @@ var f = (e) => {
|
|
|
33
33
|
value: a ?? 0n,
|
|
34
34
|
callData: s
|
|
35
35
|
}]);
|
|
36
|
-
}, v = async (e, n, i, a, o, s,
|
|
36
|
+
}, v = async (e, n, i, a, o, s, c) => {
|
|
37
37
|
let u = t(e), f = a.map(g), p = 0n, _ = i && s ? await (async () => {
|
|
38
|
-
if (
|
|
39
|
-
return p = BigInt(Math.floor(Date.now() / 1e3) + h),
|
|
38
|
+
if (c === void 0) throw Error("maxFee required if making tx from emporium");
|
|
39
|
+
return p = BigInt(Math.floor(Date.now() / 1e3) + h), l.signTypedDataFromPrivateKey(u, i, {
|
|
40
40
|
name: "Emporium",
|
|
41
41
|
version: "1.0.0",
|
|
42
42
|
chainId: u,
|
|
@@ -81,7 +81,7 @@ var f = (e) => {
|
|
|
81
81
|
}, {
|
|
82
82
|
message: o,
|
|
83
83
|
ops: f,
|
|
84
|
-
maxFee:
|
|
84
|
+
maxFee: c,
|
|
85
85
|
deadline: p
|
|
86
86
|
});
|
|
87
87
|
})() : void 0, { v, r: y, s: b } = _ ? d.Signature.from(_) : {
|
|
@@ -95,7 +95,7 @@ var f = (e) => {
|
|
|
95
95
|
s: b,
|
|
96
96
|
signerAddress: s ?? r,
|
|
97
97
|
ops: f,
|
|
98
|
-
maxFee:
|
|
98
|
+
maxFee: c ?? 0n,
|
|
99
99
|
deadline: p
|
|
100
100
|
}]);
|
|
101
101
|
}, y = (e, t, n, r) => _(e ? {
|
|
@@ -115,16 +115,16 @@ var f = (e) => {
|
|
|
115
115
|
func: "approve",
|
|
116
116
|
args: [t, n],
|
|
117
117
|
invokeWallet: r
|
|
118
|
-
}), S = (e, t, n, a, s,
|
|
118
|
+
}), S = (e, t, n, a, s, l, u) => {
|
|
119
119
|
let d = [];
|
|
120
120
|
for (let a = 0; a < t.length; a += 1) {
|
|
121
|
-
let s = t[a], u = i(s, r) ? void 0 :
|
|
122
|
-
d.push(y(u,
|
|
121
|
+
let s = t[a], u = i(s, r) ? void 0 : c(e, o.ERC20Contract, s);
|
|
122
|
+
d.push(y(u, l, n[a], !1));
|
|
123
123
|
}
|
|
124
124
|
if (u) for (let t = 0; t < a.length; t += 1) {
|
|
125
125
|
let n = a[t];
|
|
126
126
|
if (!i(n, r)) {
|
|
127
|
-
let r =
|
|
127
|
+
let r = c(e, o.ERC20Contract, n);
|
|
128
128
|
d.push(x(r, u, s[t], !0));
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -166,15 +166,15 @@ var f = (e) => {
|
|
|
166
166
|
return t;
|
|
167
167
|
}, D = async (n, r) => {
|
|
168
168
|
if (n === e.localhost || !r) return;
|
|
169
|
-
let a = t(n), { delegated: o, implementation: s } = await T(n,
|
|
170
|
-
if (!o || !i(s,
|
|
171
|
-
let e = await
|
|
169
|
+
let a = t(n), { delegated: o, implementation: s } = await T(n, l.getSignerAddressFromPrivateKey(n, r)), c = E(n);
|
|
170
|
+
if (!o || !i(s, c)) {
|
|
171
|
+
let e = await l.authorizeDelegation(a, r, c);
|
|
172
172
|
return {
|
|
173
173
|
v: e.signature.v.toString(),
|
|
174
174
|
r: e.signature.r,
|
|
175
175
|
s: e.signature.s,
|
|
176
176
|
nonce: e.nonce.toString(),
|
|
177
|
-
address:
|
|
177
|
+
address: c,
|
|
178
178
|
chainId: String(a)
|
|
179
179
|
};
|
|
180
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../../data-structures/utxo/Utxo.cjs`),o=require(`../utils/solanaMint.utils.cjs`),s=require(`./common.snarkjs.cjs`),c=require(`./signedMessageHash.cjs`),l=require(`../pre-transaction/getSolanaCalldataHash.cjs`);let u=require(`ethers`),d=require(`@solana/web3.js`);var f=e=>e?.inputUtxos.flat().filter(e=>BigInt(e.amount)>0n).map(e=>new a.Utxo({amount:BigInt(e.amount),erc20TokenAddress:e.erc20TokenAddress,stealthAddress:e.stealthAddress,H0:[BigInt(e.H0[0]),BigInt(e.H0[1])],timeStamp:e.timeStamp}).getCommitment()),p=e=>{if(Array.isArray(e))return`[${e.map(p).join(`,`)}]`;if(e&&typeof e==`object`){let t=e;return`{${Object.keys(t).filter(e=>t[e]!==void 0).sort().map(e=>`${JSON.stringify(e)}:${p(t[e])}`).join(`,`)}}`}return JSON.stringify(e)},m=(e,t)=>{if(p({chainId:String(e.chainId),hinkalAddress:e.hinkalAddress??``,erc20Addresses:e.erc20Addresses,amountChanges:e.amountChanges,externalAddress:e.externalAddress,...e.originalSender?{originalSender:e.originalSender}:{},relay:e.relay??``,feeStructure:e.feeStructure?{feeToken:e.feeStructure.feeToken,flatFee:e.feeStructure.flatFee.toString(),variableRate:e.feeStructure.variableRate.toString()}:null,externalActionId:e.externalActionId??``,externalActionMetadata:e.externalActionMetadata??``,onChainCreation:e.onChainCreation??null,recipientAddress:e.recipientAddress??null,recipientAmounts:e.recipientAmounts??null,selfOutputAmounts:e.selfOutputAmounts??null,inputCommitments:e.inputCommitments??null,useBlockedUtxos:e.useBlockedUtxos??!1,createBlockedUtxos:e.createBlockedUtxos??!1,...e.forceEmptyUtxos?{forceEmptyUtxos:!0}:{},messageSeed:e.messageSeed??``,skipLock:e.skipLock??!1,...e.speculative?{speculative:e.speculative}:{},slippageValues:e.slippageValues??null})!==p(t))throw Error(`Enclave prepare-tx response does not match the request sent - refusing to sign`)},h=(e,t,n,r,i,o,s,c)=>{let l=s.map(BigInt),u=new Set,d=e.map((e,s)=>t[s].map((t,c)=>{let d=BigInt(t);if(d===0n)return`0`;let f=new a.Utxo({amount:d,erc20TokenAddress:e,nullifyingKey:o,spendingPublicKey:l,H0:[BigInt(n[s][c]),BigInt(r[s][c])],timeStamp:i[s][c]});return u.add(f.getCommitment()),f.getNullifier()}));if(c&&(u.size!==c.length||!c.every(e=>u.has(e))))throw Error(`Enclave prepare-tx spent a different set of notes than the caller authorized - refusing to sign`);return d},g=(e,t)=>e===0n?`0`:new a.Utxo({amount:e,...t}).getCommitment(),_=(e,t,n,r,i,a,o,s,c,l)=>{if((c?.length??0)!==(l?.length??0))throw Error(`Enclave prepare-tx request has mismatched recipientAddress/recipientAmounts - refusing to sign`);let u=t?.length??1,d=s.map(BigInt);return e.map((e,t)=>{let s=Array.from({length:u},(s,c)=>g(BigInt(n[t][c]),{erc20TokenAddress:e,nullifyingKey:o,spendingPublicKey:d,H0:[BigInt(r[t][c]),BigInt(i[t][c])],timeStamp:a})),f=(c??[]).map((n,r)=>{let[i,o,s]=n.split(`,`);return g(BigInt(l[r][t]),{erc20TokenAddress:e,stealthAddress:i,H0:[BigInt(o),BigInt(s)],timeStamp:a})});return[...s,...f]})},v=(e,t,n,r,i)=>{r&&r.forEach((e,t)=>{if(n[0][t]!==e)throw Error(`Enclave prepare-tx self-output amounts do not match the requested selfOutputAmounts - refusing to sign`)});let a=r?.length??1;e.forEach((e,r)=>{let o=t[r].reduce((e,t)=>e+BigInt(t),0n),s=n[r].slice(0,a).reduce((e,t)=>e+BigInt(t),0n);if(o+BigInt(i[r])!==s)throw Error(`Enclave prepare-tx self-output amount does not match input total + requested amountChanges - refusing to sign`)})},y=e=>e.erc20Addresses.map((t,n)=>BigInt(e.amountChanges[n])+(e.recipientAmounts??[]).reduce((e,t)=>e+BigInt(t[n]),0n)),b=e=>e<0n?t.CIRCOM_P+e:e,x=(t,n,r)=>r.length===0?`mainEVMCircuitMin0`:`${e.isTronLike(t)?`mainTronCircuit`:`mainEVMCircuit`}${n.length}x${n[0].length}x${r[0].length}`,S=(t,n,r)=>e.isTronLike(t)?c.computeSignedMessageHashTron(n):c.computeSignedMessageHashEvm({...n,...r}),C=(e,i,a,o)=>{let c=r.poseidonFunction(BigInt(i.messageSeed)),l=e.relay||t.zeroAddress,u=l!==t.zeroAddress&&e.feeStructure?e.feeStructure:n.zeroFeeStructure,d=e.externalActionMetadata||`0x00`,f=e.erc20Addresses.map((t,n)=>e.onChainCreation?.[n]??!1),p=y(e),m=e.slippageValues?e.slippageValues.map(BigInt):s.getSlippageValues(p);return{calldataHash:s.createCallDataHash(s.calcPublicSignalCount(x(e.chainId,a,o),e.erc20Addresses,p,a,o),l,e.externalAddress,e.externalActionId??0n,c,d,i.encryptedOutputs,i.onChainEncryptedOutput,void 0,m,f,u,e.originalSender,void 0,e.chainId,e.createBlockedUtxos??!1),message:c,amountChangesModWrapped:p.map(b)}},w=(e,t,n,r,a,o)=>{if(!e?.some(Boolean))return;let[s,c]=i.UserKeys.getH1FromH0([BigInt(t),BigInt(n)],o);if(s!==BigInt(r)||c!==BigInt(a))throw Error(`Enclave prepare-tx tx-level stealth pair is not derived from the caller's own key - refusing to sign`)},T=(e,t,n,r,i,a,o,s)=>{if(S(e,{rootHashHinkal:BigInt(n.rootHashHinkal),erc20TokenAddresses:n.request.erc20Addresses,amountChanges:s,outTimeStamp:BigInt(n.outTimeStamp),inNullifiers:r,outCommitments:i,calldataHash:a,message:o,chainId:BigInt(e),verifyingContract:t},{outH1Ax:BigInt(n.outH1Ax),outH1Ay:BigInt(n.outH1Ay),H0Ax:BigInt(n.h0Ax),H0Ay:BigInt(n.h0Ay)})!==BigInt(n.signedMessageHash))throw Error(`Enclave prepare-tx signedMessageHash does not match one built from the caller's own data - refusing to sign`)},E=e=>e.map(e=>o.formatMintAddress(e).compressedAddress),D=e=>e.mintAddresses.map((t,n)=>BigInt(e.amountChanges[n])+(e.recipientAmounts?BigInt(e.recipientAmounts[n]):0n)),O=(e,t,n)=>{if(e.tokenNumber!==t.tokenNumber||e.nullifierAmount!==t.nullifierAmount||e.outputAmount!==t.outputAmount)throw Error(`Enclave ${n} dimensions do not match the caller's own data - refusing to sign`)},k=(e,t,n,i)=>{let a=r.poseidonFunction(BigInt(t.messageSeed));O(t.dimensions,{tokenNumber:e.mintAddresses.length,nullifierAmount:n[0]?.length??0,outputAmount:i[0]?.length??0},`prepare-solana-tx`);let o=e.mintAddresses.map((t,n)=>e.onChainCreation?.[n]??!1),s=o.some(Boolean),c=t.encryptedOutputs.flatMap((e,t)=>o[t]?e.map(()=>[]):e.map(e=>Array.from(u.ethers.getBytes(e)))),f=s?t.onChainEncryptedOutput:`0x`,p=(e.hinkalInstructions??[]).map(e=>({accountIndexes:Buffer.from(e.accountIndexes),data:Buffer.from(e.data),programIndex:e.programIndex})),m=(e.remainingAccounts??[]).map(e=>({pubkey:new d.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable}));return{calldataHash:l.getSolanaCalldataHash(t.dimensions,new d.PublicKey(e.recipient),new d.PublicKey(e.signer??e.relayAddress),c,f,BigInt(e.relayerFee??`0`),BigInt(e.variableRate??`0`),p,m),message:a}},A=(e,t,n,r,i,a,o,s,l)=>{if(c.computeSignedMessageHashSolana({rootHashHinkal:BigInt(e.rootHashHinkal),mintAccountPart1:t,mintAccountPart2:n,amountChanges:s,outTimeStamp:BigInt(e.outTimeStamp),inNullifiers:r,outCommitments:i,calldataHash:a,message:o,swapperAccountAdditionalSeed:l,outH1Ay:BigInt(e.outH1Ay),H0Ax:BigInt(e.h0Ax),H0Ay:BigInt(e.h0Ay)})!==BigInt(e.signedMessageHash))throw Error(`Enclave prepare-solana-tx signedMessageHash does not match one built from the caller's own data - refusing to sign`)},j=(e,t)=>{let n={chainId:String(e.chainId),mintAddresses:e.mintAddresses,amountChanges:e.amountChanges,relayAddress:e.relayAddress,recipient:e.recipient,signer:e.signer??e.relayAddress,functionName:e.functionName??`transact`,accounts:e.accounts,onChainCreation:e.onChainCreation??null,relayerFee:e.relayerFee??`0`,variableRate:e.variableRate??`0`,hinkalInstructions:e.hinkalInstructions??null,remainingAccounts:e.remainingAccounts??null,swapperAccountSalt:e.swapperAccountSalt??`0`,recipientAddress:e.recipientAddress??``,recipientAmounts:e.recipientAmounts??null,inputCommitments:e.inputCommitments??null,useBlockedUtxos:e.useBlockedUtxos??!1,messageSeed:e.messageSeed??``};if(e.recipientAmount&&(n.recipientAmount=e.recipientAmount),e.displayRecipient&&(n.displayRecipient=e.displayRecipient),e.speculative&&(n.speculative=e.speculative),p(n)!==p(t))throw Error(`Enclave prepare-solana-tx response does not match the request sent - refusing to sign`)},M=(e,t,n,i,a,o,c,l,u)=>{let d=h([n],u.inAmounts,u.inH0Ax,u.inH0Ay,u.inTimeStamps,c,l,void 0),f=_([n],void 0,u.outAmounts,u.outNoteH0Ax,u.outNoteH0Ay,u.outTimeStamp,c,l,void 0,void 0),p=[-u.inAmounts[0].reduce((e,t)=>e+BigInt(t),0n)];v([n],u.inAmounts,u.outAmounts,void 0,p.map(String));let m=p.map(b),g=r.poseidonFunction(BigInt(u.messageSeed)),y=s.getSlippageValues(p),C=s.createCallDataHash(s.calcPublicSignalCount(x(e,d,f),[n],m,d,f),i,a,0n,g,`0x00`,u.encryptedOutputs,u.onChainEncryptedOutput,void 0,y,[!1],o,void 0,void 0,e,!1);if(S(e,{rootHashHinkal:BigInt(u.rootHashHinkal),erc20TokenAddresses:[n],amountChanges:m,outTimeStamp:BigInt(u.outTimeStamp),inNullifiers:d,outCommitments:f,calldataHash:C,message:g,chainId:BigInt(e),verifyingContract:t},{outH1Ax:BigInt(u.outH1Ax),outH1Ay:BigInt(u.outH1Ay),H0Ax:BigInt(u.h0Ax),H0Ay:BigInt(u.h0Ay)})!==BigInt(u.signedMessageHash))throw Error(`Enclave prepare-stuck-withdraw job signedMessageHash does not match one built from the caller's own data - refusing to sign`)},N=(e,t,n,i,a,s,f)=>{let{compressedAddress:p,mintAccountPart1:m,mintAccountPart2:g}=o.formatMintAddress(e),y=h([p],f.inAmounts,f.inH0Ax,f.inH0Ay,f.inTimeStamps,a,s,void 0),x=_([p],void 0,f.outAmounts,f.outNoteH0Ax,f.outNoteH0Ay,f.outTimeStamp,a,s,void 0,void 0),S=[-f.inAmounts[0].reduce((e,t)=>e+BigInt(t),0n)];v([p],f.inAmounts,f.outAmounts,void 0,S.map(String));let C=S.map(b),w=r.poseidonFunction(BigInt(f.messageSeed)),T=f.encryptedOutputs.flatMap(e=>e.map(e=>Array.from(u.ethers.getBytes(e))));O(f.dimensions,{tokenNumber:1,nullifierAmount:y[0].length,outputAmount:x[0].length},`prepare-solana-stuck-withdraw`);let E=l.getSolanaCalldataHash(f.dimensions,new d.PublicKey(n),new d.PublicKey(t),T,`0x`,i.flatFee,i.variableRate,[],[]);if(c.computeSignedMessageHashSolana({rootHashHinkal:BigInt(f.rootHashHinkal),mintAccountPart1:[m],mintAccountPart2:[g],amountChanges:C,outTimeStamp:BigInt(f.outTimeStamp),inNullifiers:y,outCommitments:x,calldataHash:E,message:w,swapperAccountAdditionalSeed:r.poseidonFunction(0n),outH1Ay:BigInt(f.outH1Ay),H0Ax:BigInt(f.h0Ax),H0Ay:BigInt(f.h0Ay)})!==BigInt(f.signedMessageHash))throw Error(`Enclave prepare-solana-stuck-withdraw job signedMessageHash does not match one built from the caller's own data - refusing to sign`)},P=(e,t)=>{if(p({chainId:String(e.chainId),hinkalAddress:e.hinkalAddress??``,erc20Address:e.erc20Address,externalAddress:e.externalAddress,relay:e.relay,feeStructure:{feeToken:e.feeStructure.feeToken,flatFee:e.feeStructure.flatFee.toString(),variableRate:e.feeStructure.variableRate.toString()},hashedEthereumAddress:e.hashedEthereumAddress})!==p(t))throw Error(`Enclave prepare-stuck-withdraw response does not match the request sent - refusing to sign`)},F=(e,t)=>{if(p({chainId:String(e.chainId),mintAddress:e.mintAddress,recipient:e.recipient,relayAddress:e.relayAddress,signer:e.relayAddress,accounts:e.accounts,feeStructures:e.feeStructures,hashedEthereumAddress:e.hashedEthereumAddress})!==p(t))throw Error(`Enclave prepare-solana-stuck-withdraw response does not match the request sent - refusing to sign`)},I=(e,t)=>{m(e,t.request);let n=e.inputCommitments??f(e.speculative)??(e.forceEmptyUtxos?[]:void 0),r=h(e.erc20Addresses,t.inAmounts,t.inH0Ax,t.inH0Ay,t.inTimeStamps,e.nullifyingKey,e.spendingPublicKey,n),i=_(e.erc20Addresses,e.selfOutputAmounts,t.outAmounts,t.outNoteH0Ax,t.outNoteH0Ay,t.outTimeStamp,e.nullifyingKey,e.spendingPublicKey,e.recipientAddress,e.recipientAmounts);v(e.erc20Addresses,t.inAmounts,t.outAmounts,e.selfOutputAmounts,e.amountChanges),w(e.onChainCreation,t.h0Ax,t.h0Ay,t.outH1Ax,t.outH1Ay,e.nullifyingKey);let{calldataHash:a,message:o,amountChangesModWrapped:s}=C(e,t,r,i);T(e.chainId,e.hinkalAddress??``,t,r,i,a,o,s)},L=(e,t)=>{j(e,t.request);let n=E(e.mintAddresses),i=e.recipientAddress?[e.recipientAddress]:void 0,a=e.recipientAmounts?[e.recipientAmounts]:void 0,s=h(n,t.inAmounts,t.inH0Ax,t.inH0Ay,t.inTimeStamps,e.nullifyingKey,e.spendingPublicKey,e.inputCommitments??f(e.speculative)),c=_(n,void 0,t.outAmounts,t.outNoteH0Ax,t.outNoteH0Ay,t.outTimeStamp,e.nullifyingKey,e.spendingPublicKey,i,a);v(n,t.inAmounts,t.outAmounts,void 0,e.amountChanges);let{calldataHash:l,message:u}=k(e,t,s,c),d=D(e).map(b),p=e.mintAddresses.map(e=>o.formatMintAddress(e)),m=r.poseidonFunction(BigInt(e.swapperAccountSalt??`0`));A(t,p.map(e=>e.mintAccountPart1),p.map(e=>e.mintAccountPart2),s,c,l,u,d,m)},R=(e,t)=>{P(e,t.request),t.jobs.forEach(t=>M(e.chainId,e.hinkalAddress??``,e.erc20Address,e.relay,e.externalAddress,e.feeStructure,e.nullifyingKey,e.spendingPublicKey,t))},z=(e,t)=>{F(e,t.request),t.jobs.forEach(t=>{let n=t.inAmounts[0].filter(e=>BigInt(e)>0n).length,r=e.feeStructures[String(n)];if(!r)throw Error(`Enclave prepare-solana-stuck-withdraw response uses nullifierCount ${n} with no matching feeStructure - refusing to sign`);N(e.mintAddress,e.relayAddress,e.recipient,{feeToken:r.feeToken,flatFee:BigInt(r.flatFee),variableRate:BigInt(r.variableRate)},e.nullifyingKey,e.spendingPublicKey,t)})};exports.verifyPrepareSolanaStuckWithdrawResponse=z,exports.verifyPrepareSolanaTxResponse=L,exports.verifyPrepareStuckWithdrawResponse=R,exports.verifyPrepareTxResponse=I;
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../../data-structures/utxo/Utxo.cjs`),o=require(`../utils/solanaMint.utils.cjs`),s=require(`./common.snarkjs.cjs`),c=require(`./signedMessageHash.cjs`),l=require(`../pre-transaction/getSolanaCalldataHash.cjs`);let u=require(`ethers`),d=require(`@solana/web3.js`);var f=e=>e?.inputUtxos.flat().filter(e=>BigInt(e.amount)>0n).map(e=>new a.Utxo({amount:BigInt(e.amount),erc20TokenAddress:e.erc20TokenAddress,stealthAddress:e.stealthAddress,H0:[BigInt(e.H0[0]),BigInt(e.H0[1])],timeStamp:e.timeStamp}).getCommitment()),p=e=>{if(Array.isArray(e))return`[${e.map(p).join(`,`)}]`;if(e&&typeof e==`object`){let t=e;return`{${Object.keys(t).filter(e=>t[e]!==void 0).sort().map(e=>`${JSON.stringify(e)}:${p(t[e])}`).join(`,`)}}`}return JSON.stringify(e)},m=(e,t)=>{if(p({chainId:String(e.chainId),hinkalAddress:e.hinkalAddress??``,erc20Addresses:e.erc20Addresses,amountChanges:e.amountChanges,externalAddress:e.externalAddress,...e.originalSender?{originalSender:e.originalSender}:{},relay:e.relay??``,feeStructure:e.feeStructure?{feeToken:e.feeStructure.feeToken,flatFee:e.feeStructure.flatFee.toString(),variableRate:e.feeStructure.variableRate.toString()}:null,externalActionId:e.externalActionId??``,externalActionMetadata:e.externalActionMetadata??``,onChainCreation:e.onChainCreation??null,recipientAddress:e.recipientAddress??null,recipientAmounts:e.recipientAmounts??null,selfOutputAmounts:e.selfOutputAmounts??null,inputCommitments:e.inputCommitments??null,useBlockedUtxos:e.useBlockedUtxos??!1,createBlockedUtxos:e.createBlockedUtxos??!1,...e.forceEmptyUtxos?{forceEmptyUtxos:!0}:{},messageSeed:e.messageSeed??``,skipLock:e.skipLock??!1,...e.speculative?{speculative:e.speculative}:{},slippageValues:e.slippageValues??null,...e.receiveVaultAddress?{receiveVaultAddress:e.receiveVaultAddress}:{}})!==p(t))throw Error(`Enclave prepare-tx response does not match the request sent - refusing to sign`)},h=(e,t,n,r,i,o,s,c)=>{let l=s.map(BigInt),u=new Set,d=e.map((e,s)=>t[s].map((t,c)=>{let d=BigInt(t);if(d===0n)return`0`;let f=new a.Utxo({amount:d,erc20TokenAddress:e,nullifyingKey:o,spendingPublicKey:l,H0:[BigInt(n[s][c]),BigInt(r[s][c])],timeStamp:i[s][c]});return u.add(f.getCommitment()),f.getNullifier()}));if(c&&(u.size!==c.length||!c.every(e=>u.has(e))))throw Error(`Enclave prepare-tx spent a different set of notes than the caller authorized - refusing to sign`);return d},g=(e,t)=>e===0n?`0`:new a.Utxo({amount:e,...t}).getCommitment(),_=(e,t,n,r,i,a,o,s,c,l)=>{if((c?.length??0)!==(l?.length??0))throw Error(`Enclave prepare-tx request has mismatched recipientAddress/recipientAmounts - refusing to sign`);let u=t?.length??1,d=s.map(BigInt);return e.map((e,t)=>{let s=Array.from({length:u},(s,c)=>g(BigInt(n[t][c]),{erc20TokenAddress:e,nullifyingKey:o,spendingPublicKey:d,H0:[BigInt(r[t][c]),BigInt(i[t][c])],timeStamp:a})),f=(c??[]).map((n,r)=>{let[i,o,s]=n.split(`,`);return g(BigInt(l[r][t]),{erc20TokenAddress:e,stealthAddress:i,H0:[BigInt(o),BigInt(s)],timeStamp:a})});return[...s,...f]})},v=(e,t,n,r,i)=>{r&&r.forEach((e,t)=>{if(n[0][t]!==e)throw Error(`Enclave prepare-tx self-output amounts do not match the requested selfOutputAmounts - refusing to sign`)});let a=r?.length??1;e.forEach((e,r)=>{let o=t[r].reduce((e,t)=>e+BigInt(t),0n),s=n[r].slice(0,a).reduce((e,t)=>e+BigInt(t),0n);if(o+BigInt(i[r])!==s)throw Error(`Enclave prepare-tx self-output amount does not match input total + requested amountChanges - refusing to sign`)})},y=e=>e.erc20Addresses.map((t,n)=>BigInt(e.amountChanges[n])+(e.recipientAmounts??[]).reduce((e,t)=>e+BigInt(t[n]),0n)),b=e=>e<0n?t.CIRCOM_P+e:e,x=(t,n,r)=>r.length===0?`mainEVMCircuitMin0`:`${e.isTronLike(t)?`mainTronCircuit`:`mainEVMCircuit`}${n.length}x${n[0].length}x${r[0].length}`,S=(t,n,r)=>e.isTronLike(t)?c.computeSignedMessageHashTron(n):c.computeSignedMessageHashEvm({...n,...r}),C=(e,i,a,o)=>{let c=r.poseidonFunction(BigInt(i.messageSeed)),l=e.relay||t.zeroAddress,u=l!==t.zeroAddress&&e.feeStructure?e.feeStructure:n.zeroFeeStructure,d=e.externalActionMetadata||`0x00`,f=e.erc20Addresses.map((t,n)=>e.onChainCreation?.[n]??!1),p=y(e),m=e.slippageValues?e.slippageValues.map(BigInt):s.getSlippageValues(p);return{calldataHash:s.createCallDataHash(s.calcPublicSignalCount(x(e.chainId,a,o),e.erc20Addresses,p,a,o),l,e.externalAddress,e.externalActionId??0n,c,d,i.encryptedOutputs,i.onChainEncryptedOutput,void 0,m,f,u,e.originalSender,void 0,e.chainId,e.createBlockedUtxos??!1),message:c,amountChangesModWrapped:p.map(b)}},w=(e,t,n,r,a,o)=>{if(!e?.some(Boolean))return;let[s,c]=i.UserKeys.getH1FromH0([BigInt(t),BigInt(n)],o);if(s!==BigInt(r)||c!==BigInt(a))throw Error(`Enclave prepare-tx tx-level stealth pair is not derived from the caller's own key - refusing to sign`)},T=(e,t,n,r,i,a,o,s)=>{if(S(e,{rootHashHinkal:BigInt(n.rootHashHinkal),erc20TokenAddresses:n.request.erc20Addresses,amountChanges:s,outTimeStamp:BigInt(n.outTimeStamp),inNullifiers:r,outCommitments:i,calldataHash:a,message:o,chainId:BigInt(e),verifyingContract:t},{outH1Ax:BigInt(n.outH1Ax),outH1Ay:BigInt(n.outH1Ay),H0Ax:BigInt(n.h0Ax),H0Ay:BigInt(n.h0Ay)})!==BigInt(n.signedMessageHash))throw Error(`Enclave prepare-tx signedMessageHash does not match one built from the caller's own data - refusing to sign`)},E=e=>e.map(e=>o.formatMintAddress(e).compressedAddress),D=e=>e.mintAddresses.map((t,n)=>BigInt(e.amountChanges[n])+(e.recipientAmounts?BigInt(e.recipientAmounts[n]):0n)),O=(e,t,n)=>{if(e.tokenNumber!==t.tokenNumber||e.nullifierAmount!==t.nullifierAmount||e.outputAmount!==t.outputAmount)throw Error(`Enclave ${n} dimensions do not match the caller's own data - refusing to sign`)},k=(e,t,n,i)=>{let a=r.poseidonFunction(BigInt(t.messageSeed));O(t.dimensions,{tokenNumber:e.mintAddresses.length,nullifierAmount:n[0]?.length??0,outputAmount:i[0]?.length??0},`prepare-solana-tx`);let o=e.mintAddresses.map((t,n)=>e.onChainCreation?.[n]??!1),s=o.some(Boolean),c=t.encryptedOutputs.flatMap((e,t)=>o[t]?e.map(()=>[]):e.map(e=>Array.from(u.ethers.getBytes(e)))),f=s?t.onChainEncryptedOutput:`0x`,p=(e.hinkalInstructions??[]).map(e=>({accountIndexes:Buffer.from(e.accountIndexes),data:Buffer.from(e.data),programIndex:e.programIndex})),m=(e.remainingAccounts??[]).map(e=>({pubkey:new d.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable}));return{calldataHash:l.getSolanaCalldataHash(t.dimensions,new d.PublicKey(e.recipient),new d.PublicKey(e.signer??e.relayAddress),c,f,BigInt(e.relayerFee??`0`),BigInt(e.variableRate??`0`),p,m),message:a}},A=(e,t,n,r,i,a,o,s,l)=>{if(c.computeSignedMessageHashSolana({rootHashHinkal:BigInt(e.rootHashHinkal),mintAccountPart1:t,mintAccountPart2:n,amountChanges:s,outTimeStamp:BigInt(e.outTimeStamp),inNullifiers:r,outCommitments:i,calldataHash:a,message:o,swapperAccountAdditionalSeed:l,outH1Ay:BigInt(e.outH1Ay),H0Ax:BigInt(e.h0Ax),H0Ay:BigInt(e.h0Ay)})!==BigInt(e.signedMessageHash))throw Error(`Enclave prepare-solana-tx signedMessageHash does not match one built from the caller's own data - refusing to sign`)},j=(e,t)=>{let n={chainId:String(e.chainId),mintAddresses:e.mintAddresses,amountChanges:e.amountChanges,relayAddress:e.relayAddress,recipient:e.recipient,signer:e.signer??e.relayAddress,functionName:e.functionName??`transact`,accounts:e.accounts,onChainCreation:e.onChainCreation??null,relayerFee:e.relayerFee??`0`,variableRate:e.variableRate??`0`,hinkalInstructions:e.hinkalInstructions??null,remainingAccounts:e.remainingAccounts??null,swapperAccountSalt:e.swapperAccountSalt??`0`,recipientAddress:e.recipientAddress??``,recipientAmounts:e.recipientAmounts??null,inputCommitments:e.inputCommitments??null,useBlockedUtxos:e.useBlockedUtxos??!1,messageSeed:e.messageSeed??``};if(e.recipientAmount&&(n.recipientAmount=e.recipientAmount),e.displayRecipient&&(n.displayRecipient=e.displayRecipient),e.speculative&&(n.speculative=e.speculative),p(n)!==p(t))throw Error(`Enclave prepare-solana-tx response does not match the request sent - refusing to sign`)},M=(e,t,n,i,a,o,c,l,u)=>{let d=h([n],u.inAmounts,u.inH0Ax,u.inH0Ay,u.inTimeStamps,c,l,void 0),f=_([n],void 0,u.outAmounts,u.outNoteH0Ax,u.outNoteH0Ay,u.outTimeStamp,c,l,void 0,void 0),p=[-u.inAmounts[0].reduce((e,t)=>e+BigInt(t),0n)];v([n],u.inAmounts,u.outAmounts,void 0,p.map(String));let m=p.map(b),g=r.poseidonFunction(BigInt(u.messageSeed)),y=s.getSlippageValues(p),C=s.createCallDataHash(s.calcPublicSignalCount(x(e,d,f),[n],m,d,f),i,a,0n,g,`0x00`,u.encryptedOutputs,u.onChainEncryptedOutput,void 0,y,[!1],o,void 0,void 0,e,!1);if(S(e,{rootHashHinkal:BigInt(u.rootHashHinkal),erc20TokenAddresses:[n],amountChanges:m,outTimeStamp:BigInt(u.outTimeStamp),inNullifiers:d,outCommitments:f,calldataHash:C,message:g,chainId:BigInt(e),verifyingContract:t},{outH1Ax:BigInt(u.outH1Ax),outH1Ay:BigInt(u.outH1Ay),H0Ax:BigInt(u.h0Ax),H0Ay:BigInt(u.h0Ay)})!==BigInt(u.signedMessageHash))throw Error(`Enclave prepare-stuck-withdraw job signedMessageHash does not match one built from the caller's own data - refusing to sign`)},N=(e,t,n,i,a,s,f)=>{let{compressedAddress:p,mintAccountPart1:m,mintAccountPart2:g}=o.formatMintAddress(e),y=h([p],f.inAmounts,f.inH0Ax,f.inH0Ay,f.inTimeStamps,a,s,void 0),x=_([p],void 0,f.outAmounts,f.outNoteH0Ax,f.outNoteH0Ay,f.outTimeStamp,a,s,void 0,void 0),S=[-f.inAmounts[0].reduce((e,t)=>e+BigInt(t),0n)];v([p],f.inAmounts,f.outAmounts,void 0,S.map(String));let C=S.map(b),w=r.poseidonFunction(BigInt(f.messageSeed)),T=f.encryptedOutputs.flatMap(e=>e.map(e=>Array.from(u.ethers.getBytes(e))));O(f.dimensions,{tokenNumber:1,nullifierAmount:y[0].length,outputAmount:x[0].length},`prepare-solana-stuck-withdraw`);let E=l.getSolanaCalldataHash(f.dimensions,new d.PublicKey(n),new d.PublicKey(t),T,`0x`,i.flatFee,i.variableRate,[],[]);if(c.computeSignedMessageHashSolana({rootHashHinkal:BigInt(f.rootHashHinkal),mintAccountPart1:[m],mintAccountPart2:[g],amountChanges:C,outTimeStamp:BigInt(f.outTimeStamp),inNullifiers:y,outCommitments:x,calldataHash:E,message:w,swapperAccountAdditionalSeed:r.poseidonFunction(0n),outH1Ay:BigInt(f.outH1Ay),H0Ax:BigInt(f.h0Ax),H0Ay:BigInt(f.h0Ay)})!==BigInt(f.signedMessageHash))throw Error(`Enclave prepare-solana-stuck-withdraw job signedMessageHash does not match one built from the caller's own data - refusing to sign`)},P=(e,t)=>{if(p({chainId:String(e.chainId),hinkalAddress:e.hinkalAddress??``,erc20Address:e.erc20Address,externalAddress:e.externalAddress,relay:e.relay,feeStructure:{feeToken:e.feeStructure.feeToken,flatFee:e.feeStructure.flatFee.toString(),variableRate:e.feeStructure.variableRate.toString()},hashedEthereumAddress:e.hashedEthereumAddress})!==p(t))throw Error(`Enclave prepare-stuck-withdraw response does not match the request sent - refusing to sign`)},F=(e,t)=>{if(p({chainId:String(e.chainId),mintAddress:e.mintAddress,recipient:e.recipient,relayAddress:e.relayAddress,signer:e.relayAddress,accounts:e.accounts,feeStructures:e.feeStructures,hashedEthereumAddress:e.hashedEthereumAddress})!==p(t))throw Error(`Enclave prepare-solana-stuck-withdraw response does not match the request sent - refusing to sign`)},I=(e,t)=>{m(e,t.request);let n=e.inputCommitments??f(e.speculative)??(e.forceEmptyUtxos?[]:void 0),r=h(e.erc20Addresses,t.inAmounts,t.inH0Ax,t.inH0Ay,t.inTimeStamps,e.nullifyingKey,e.spendingPublicKey,n),i=_(e.erc20Addresses,e.selfOutputAmounts,t.outAmounts,t.outNoteH0Ax,t.outNoteH0Ay,t.outTimeStamp,e.nullifyingKey,e.spendingPublicKey,e.recipientAddress,e.recipientAmounts);v(e.erc20Addresses,t.inAmounts,t.outAmounts,e.selfOutputAmounts,e.amountChanges),w(e.onChainCreation,t.h0Ax,t.h0Ay,t.outH1Ax,t.outH1Ay,e.nullifyingKey);let{calldataHash:a,message:o,amountChangesModWrapped:s}=C(e,t,r,i);T(e.chainId,e.hinkalAddress??``,t,r,i,a,o,s)},L=(e,t)=>{j(e,t.request);let n=E(e.mintAddresses),i=e.recipientAddress?[e.recipientAddress]:void 0,a=e.recipientAmounts?[e.recipientAmounts]:void 0,s=h(n,t.inAmounts,t.inH0Ax,t.inH0Ay,t.inTimeStamps,e.nullifyingKey,e.spendingPublicKey,e.inputCommitments??f(e.speculative)),c=_(n,void 0,t.outAmounts,t.outNoteH0Ax,t.outNoteH0Ay,t.outTimeStamp,e.nullifyingKey,e.spendingPublicKey,i,a);v(n,t.inAmounts,t.outAmounts,void 0,e.amountChanges);let{calldataHash:l,message:u}=k(e,t,s,c),d=D(e).map(b),p=e.mintAddresses.map(e=>o.formatMintAddress(e)),m=r.poseidonFunction(BigInt(e.swapperAccountSalt??`0`));A(t,p.map(e=>e.mintAccountPart1),p.map(e=>e.mintAccountPart2),s,c,l,u,d,m)},R=(e,t)=>{P(e,t.request),t.jobs.forEach(t=>M(e.chainId,e.hinkalAddress??``,e.erc20Address,e.relay,e.externalAddress,e.feeStructure,e.nullifyingKey,e.spendingPublicKey,t))},z=(e,t)=>{F(e,t.request),t.jobs.forEach(t=>{let n=t.inAmounts[0].filter(e=>BigInt(e)>0n).length,r=e.feeStructures[String(n)];if(!r)throw Error(`Enclave prepare-solana-stuck-withdraw response uses nullifierCount ${n} with no matching feeStructure - refusing to sign`);N(e.mintAddress,e.relayAddress,e.recipient,{feeToken:r.feeToken,flatFee:BigInt(r.flatFee),variableRate:BigInt(r.variableRate)},e.nullifyingKey,e.spendingPublicKey,t)})};exports.verifyPrepareSolanaStuckWithdrawResponse=z,exports.verifyPrepareSolanaTxResponse=L,exports.verifyPrepareStuckWithdrawResponse=R,exports.verifyPrepareTxResponse=I;
|
|
@@ -51,7 +51,8 @@ var _ = (e) => e?.inputUtxos.flat().filter((e) => BigInt(e.amount) > 0n).map((e)
|
|
|
51
51
|
messageSeed: e.messageSeed ?? "",
|
|
52
52
|
skipLock: e.skipLock ?? !1,
|
|
53
53
|
...e.speculative ? { speculative: e.speculative } : {},
|
|
54
|
-
slippageValues: e.slippageValues ?? null
|
|
54
|
+
slippageValues: e.slippageValues ?? null,
|
|
55
|
+
...e.receiveVaultAddress ? { receiveVaultAddress: e.receiveVaultAddress } : {}
|
|
55
56
|
}) !== v(t)) throw Error("Enclave prepare-tx response does not match the request sent - refusing to sign");
|
|
56
57
|
}, b = (e, t, n, r, i, a, s, c) => {
|
|
57
58
|
let l = s.map(BigInt), u = /* @__PURE__ */ new Set(), d = e.map((e, s) => t[s].map((t, c) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../utils/create-provider.cjs`),r=require(`../web3/getContractMetadata.cjs`),i=require(`../pre-transaction/solana.cjs`),a=require(`../utils/solana-program.utils.cjs`),o=require(`../web3/fetchSolanaMerkleTreeRootHash.cjs`);let s=require(`@solana/web3.js`);var c=async e=>{let n=r.getContractWithFetcherByChainId(e,t.ContractType.HinkalContract);return{hinkalRootHash:await n.getRootHash(),hinkalRootHashIndex:BigInt(await n.m_index())-1n}},l=async t=>{let{contractData:r,rpcUrl:c}=e.networkRegistry[t],{hinkalIdl:l,hinkalAddress:u,originalDeployer:d}=r;if(!l||!u||!d)throw Error(`Missing Solana configuration for chain ${t}`);return{hinkalRootHash:await o.fetchSolanaMerkleTreeRootHash(a.createReadOnlySolanaProgram(n.createCustomSolanaConnection(c),l),i.getMerkleAccountPublicKey(new s.PublicKey(u),new s.PublicKey(d))),hinkalRootHashIndex:0n}},u=async t=>e.isSolanaLike(t)?l(t):c(t);exports.fetchOnChainRootHashes=u;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { isSolanaLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import { ContractType as n } from "../../types/ethereum-network.types.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { createCustomSolanaConnection as r } from "../utils/create-provider.mjs";
|
|
4
|
+
import { getContractWithFetcherByChainId as i } from "../web3/getContractMetadata.mjs";
|
|
5
|
+
import { getMerkleAccountPublicKey as a } from "../pre-transaction/solana.mjs";
|
|
6
6
|
import { createReadOnlySolanaProgram as o } from "../utils/solana-program.utils.mjs";
|
|
7
7
|
import { fetchSolanaMerkleTreeRootHash as s } from "../web3/fetchSolanaMerkleTreeRootHash.mjs";
|
|
8
8
|
import { PublicKey as c } from "@solana/web3.js";
|
|
9
9
|
//#region libs/shared/common/src/functions/snarkjs/fetchOnChainRootHashes.ts
|
|
10
10
|
var l = async (e) => {
|
|
11
|
-
let t =
|
|
11
|
+
let t = i(e, n.HinkalContract);
|
|
12
12
|
return {
|
|
13
13
|
hinkalRootHash: await t.getRootHash(),
|
|
14
14
|
hinkalRootHashIndex: BigInt(await t.m_index()) - 1n
|
|
15
15
|
};
|
|
16
16
|
}, u = async (e) => {
|
|
17
|
-
let { contractData: n, rpcUrl:
|
|
17
|
+
let { contractData: n, rpcUrl: i } = t[e], { hinkalIdl: l, hinkalAddress: u, originalDeployer: d } = n;
|
|
18
18
|
if (!l || !u || !d) throw Error(`Missing Solana configuration for chain ${e}`);
|
|
19
19
|
return {
|
|
20
|
-
hinkalRootHash: await s(o(i
|
|
20
|
+
hinkalRootHash: await s(o(r(i), l), a(new c(u), new c(d))),
|
|
21
21
|
hinkalRootHashIndex: 0n
|
|
22
22
|
};
|
|
23
23
|
}, d = async (t) => e(t) ? u(t) : l(t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);let e=require(`ethers`);var t=t=>JSON.parse(new e.ethers.Interface(t).formatJson()),n=e=>Object.fromEntries(Object.entries(e).map(([e,n])=>[e,t(n)]));exports.toJsonAbi=t,exports.withJsonAbis=n;
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);let e=require(`ethers`);var t=t=>JSON.parse(new e.ethers.Interface(t).formatJson()).map(e=>e.type===`function`&&!e.stateMutability?{...e,stateMutability:`nonpayable`}:e),n=e=>Object.fromEntries(Object.entries(e).map(([e,n])=>[e,t(n)]));exports.toJsonAbi=t,exports.withJsonAbis=n;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { ethers as e } from "ethers";
|
|
2
2
|
//#region libs/shared/common/src/functions/utils/abi.utils.ts
|
|
3
|
-
var t = (t) => JSON.parse(new e.Interface(t).formatJson())
|
|
3
|
+
var t = (t) => JSON.parse(new e.Interface(t).formatJson()).map((e) => e.type === "function" && !e.stateMutability ? {
|
|
4
|
+
...e,
|
|
5
|
+
stateMutability: "nonpayable"
|
|
6
|
+
} : e), n = (e) => Object.fromEntries(Object.entries(e).map(([e, n]) => [e, t(n)]));
|
|
4
7
|
//#endregion
|
|
5
8
|
export { t as toJsonAbi, n as withJsonAbis };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`./caseInsensitive.utils.cjs`),r=require(`./tron.utils.cjs`);let i=require(`ethers`),a=require(`@solana/web3.js`);require(`tronweb`);var o=[`http://`,`https://`,`/payment/`,`.app/`,`.com/`,`.netlify.`],s=e=>{if(o.some(t=>e.includes(t)))return!1;let[t,n,r,i,a,s]=e.split(`,`),c=!t||!s||!n||!r||!i||!a,l=t?.substring(0,2)!==`0x`||s?.substring(0,2)!==`0x`,u=s?.length!==66||t?.length>66||t?.length<64,d=e?.includes(`"`);return!(c||l||u||d)},c=e=>{let[t,n,r,i,a]=e.split(`,`);return{H0x:BigInt(n),H0y:BigInt(r),H1x:BigInt(i),H1y:BigInt(a),stealthAddress:BigInt(t)}},l=e=>{let[,,,,,t]=e.split(`,`);if(!t)throw Error(`recipientInfo is missing an encryption key`);return t},u=e=>i.ethers.keccak256(i.ethers.toUtf8Bytes(e.toLowerCase())),d=(t,n)=>u(e.isSolanaLike(t)?n:r.addressToHexFormat(n)),f=e=>i.ethers.keccak256(i.ethers.toUtf8Bytes(e)),p=e=>{try{return new a.PublicKey(e).toBase58()===e}catch{return!1}},m=(r,i)=>(r=r.trim(),r?i===void 0?n.caseInsensitiveEqual(r,t.zeroAddress)||n.caseInsensitiveEqual(r,`11111111111111111111111111111111`):e.isSolanaLike(i)?n.caseInsensitiveEqual(r,t.solanaNativeAddress):n.caseInsensitiveEqual(r,t.zeroAddress):!1);exports.constructStealthAddressStructure=c,exports.getEncryptionKeyFromRecipientInfo=l,exports.hashEthereumAddress=u,exports.hashOwnerAddressForChain=d,exports.hashString=f,exports.isNativePlaceholderAddress=m,exports.isValidPrivateAddress=s,exports.isValidSolanaPublicKey=p;
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`./caseInsensitive.utils.cjs`),r=require(`./tron.utils.cjs`);let i=require(`ethers`),a=require(`@solana/web3.js`);require(`tronweb`);var o=[`http://`,`https://`,`/payment/`,`.app/`,`.com/`,`.netlify.`],s=e=>{if(o.some(t=>e.includes(t)))return!1;let[t,n,r,i,a,s]=e.split(`,`),c=!t||!s||!n||!r||!i||!a,l=t?.substring(0,2)!==`0x`||s?.substring(0,2)!==`0x`,u=s?.length!==66||t?.length>66||t?.length<64,d=e?.includes(`"`);return!(c||l||u||d)},c=e=>{let[t,n,r,i,a]=e.split(`,`);return{H0x:BigInt(n),H0y:BigInt(r),H1x:BigInt(i),H1y:BigInt(a),stealthAddress:BigInt(t)}},l=e=>{let[,,,,,t]=e.split(`,`);if(!t)throw Error(`recipientInfo is missing an encryption key`);return t},u=e=>i.ethers.keccak256(i.ethers.toUtf8Bytes(e.toLowerCase())),d=(t,n)=>u(e.isSolanaLike(t)?n:r.addressToHexFormat(n)),f=e=>i.ethers.keccak256(i.ethers.toUtf8Bytes(e)),p=e=>{try{return new a.PublicKey(e).toBase58()===e}catch{return!1}},m=(r,i)=>(r=r.trim(),r?i===void 0?n.caseInsensitiveEqual(r,t.zeroAddress)||n.caseInsensitiveEqual(r,`11111111111111111111111111111111`):e.isSolanaLike(i)?n.caseInsensitiveEqual(r,t.solanaNativeAddress):n.caseInsensitiveEqual(r,t.zeroAddress):!1),h=(t,n)=>e.isSolanaLike(t)?n:(e.isTronLike(t)?r.addressToHexFormat(n):n).toLowerCase(),g=(e,t,n)=>!!t&&!!n&&h(e,t)===h(e,n);exports.addressEqual=g,exports.constructStealthAddressStructure=c,exports.getEncryptionKeyFromRecipientInfo=l,exports.hashEthereumAddress=u,exports.hashOwnerAddressForChain=d,exports.hashString=f,exports.isNativePlaceholderAddress=m,exports.isValidPrivateAddress=s,exports.isValidSolanaPublicKey=p,exports.normalizeAddress=h;
|
|
@@ -10,3 +10,7 @@ export declare const isNativePlaceholderAddress: (address: string, chainId?: num
|
|
|
10
10
|
export declare const formatAddress: (address?: string) => string;
|
|
11
11
|
export declare const isValidTronAddress: (address: string) => boolean;
|
|
12
12
|
export declare const isRecipientAddressInvalid: (address: string, isSolana: boolean, isTron: boolean) => boolean;
|
|
13
|
+
/** Solana addresses are base58, where case carries meaning; hex chains compare case-insensitively,
|
|
14
|
+
* and Tron addresses reach us in both base58 and hex form, so they normalize to hex first. */
|
|
15
|
+
export declare const normalizeAddress: (chainId: number, address: string) => string;
|
|
16
|
+
export declare const addressEqual: (chainId: number, a?: string | null, b?: string | null) => boolean;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
|
|
2
|
-
import { solanaNativeAddress as
|
|
3
|
-
import { caseInsensitiveEqual as
|
|
4
|
-
import { addressToHexFormat as
|
|
5
|
-
import { ethers as
|
|
6
|
-
import { PublicKey as
|
|
1
|
+
import { isSolanaLike as e, isTronLike as t } from "../../constants/chains.constants.mjs";
|
|
2
|
+
import { solanaNativeAddress as n, zeroAddress as r } from "../../constants/protocol.constants.mjs";
|
|
3
|
+
import { caseInsensitiveEqual as i } from "./caseInsensitive.utils.mjs";
|
|
4
|
+
import { addressToHexFormat as a } from "./tron.utils.mjs";
|
|
5
|
+
import { ethers as o } from "ethers";
|
|
6
|
+
import { PublicKey as s } from "@solana/web3.js";
|
|
7
7
|
import "tronweb";
|
|
8
8
|
//#region libs/shared/common/src/functions/utils/addresses.ts
|
|
9
|
-
var
|
|
9
|
+
var c = [
|
|
10
10
|
"http://",
|
|
11
11
|
"https://",
|
|
12
12
|
"/payment/",
|
|
13
13
|
".app/",
|
|
14
14
|
".com/",
|
|
15
15
|
".netlify."
|
|
16
|
-
],
|
|
17
|
-
if (
|
|
18
|
-
let [t, n, r, i, a, o] = e.split(","),
|
|
19
|
-
return !(
|
|
20
|
-
},
|
|
16
|
+
], l = (e) => {
|
|
17
|
+
if (c.some((t) => e.includes(t))) return !1;
|
|
18
|
+
let [t, n, r, i, a, o] = e.split(","), s = !t || !o || !n || !r || !i || !a, l = t?.substring(0, 2) !== "0x" || o?.substring(0, 2) !== "0x", u = o?.length !== 66 || t?.length > 66 || t?.length < 64, d = e?.includes("\"");
|
|
19
|
+
return !(s || l || u || d);
|
|
20
|
+
}, u = (e) => {
|
|
21
21
|
let [t, n, r, i, a] = e.split(",");
|
|
22
22
|
return {
|
|
23
23
|
H0x: BigInt(n),
|
|
@@ -26,16 +26,16 @@ var s = [
|
|
|
26
26
|
H1y: BigInt(a),
|
|
27
27
|
stealthAddress: BigInt(t)
|
|
28
28
|
};
|
|
29
|
-
},
|
|
29
|
+
}, d = (e) => {
|
|
30
30
|
let [, , , , , t] = e.split(",");
|
|
31
31
|
if (!t) throw Error("recipientInfo is missing an encryption key");
|
|
32
32
|
return t;
|
|
33
|
-
},
|
|
33
|
+
}, f = (e) => o.keccak256(o.toUtf8Bytes(e.toLowerCase())), p = (t, n) => f(e(t) ? n : a(n)), m = (e) => o.keccak256(o.toUtf8Bytes(e)), h = (e) => {
|
|
34
34
|
try {
|
|
35
|
-
return new
|
|
35
|
+
return new s(e).toBase58() === e;
|
|
36
36
|
} catch {
|
|
37
37
|
return !1;
|
|
38
38
|
}
|
|
39
|
-
},
|
|
39
|
+
}, g = (t, a) => (t = t.trim(), t ? a === void 0 ? i(t, r) || i(t, "11111111111111111111111111111111") : e(a) ? i(t, n) : i(t, r) : !1), _ = (n, r) => e(n) ? r : (t(n) ? a(r) : r).toLowerCase(), v = (e, t, n) => !!t && !!n && _(e, t) === _(e, n);
|
|
40
40
|
//#endregion
|
|
41
|
-
export {
|
|
41
|
+
export { v as addressEqual, u as constructStealthAddressStructure, d as getEncryptionKeyFromRecipientInfo, f as hashEthereumAddress, p as hashOwnerAddressForChain, m as hashString, g as isNativePlaceholderAddress, l as isValidPrivateAddress, h as isValidSolanaPublicKey, _ as normalizeAddress };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../../types/admin.types.cjs`);var{Transfer:t,Swap:n,Other:r}=e.AdminActivity,{PublicToPublic:i,PublicToPrivate:a,PrivateToPrivate:o,PrivateToPublic:s}=e.AdminPrivacyFlow,{SameChain:c,CrossChain:l}=e.AdminRoute,{Wallet:u,Pay:d,Prime:f}=e.AdminProduct,p={[e.AdminTransactionType.Shield]:{product:u,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PublicToPublicSend]:{product:u,activity:t,privacyFlow:i,route:c},[e.AdminTransactionType.PublicToPrivateSend]:{product:u,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PublicToPublicBridgeSend]:{product:u,activity:t,privacyFlow:i,route:l},[e.AdminTransactionType.PublicSwap]:{product:u,activity:n,privacyFlow:i,route:c},[e.AdminTransactionType.PublicBridgeSwap]:{product:u,activity:n,privacyFlow:i,route:l},[e.AdminTransactionType.Unshield]:{product:u,activity:t,privacyFlow:s,route:c},[e.AdminTransactionType.PrivateSwap]:{product:u,activity:n,privacyFlow:o,route:c},[e.AdminTransactionType.PrivateToPrivateSend]:{product:u,activity:t,privacyFlow:o,route:c},[e.AdminTransactionType.PrivateToPublicSend]:{product:u,activity:t,privacyFlow:s,route:c},[e.AdminTransactionType.AutoShield]:{product:u,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PaymentLink]:{product:d,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PublicDappTransaction]:{product:u,activity:r,privacyFlow:i,route:c},[e.AdminTransactionType.PayShield]:{product:d,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PayPublicToPublicSend]:{product:d,activity:t,privacyFlow:i,route:c},[e.AdminTransactionType.PayPublicToPrivateSend]:{product:d,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PayPublicToPublicBridgeSend]:{product:d,activity:t,privacyFlow:i,route:l},[e.AdminTransactionType.PayPublicSwap]:{product:d,activity:n,privacyFlow:i,route:c},[e.AdminTransactionType.PayPublicBridgeSwap]:{product:d,activity:n,privacyFlow:i,route:l},[e.AdminTransactionType.PayUnshield]:{product:d,activity:t,privacyFlow:s,route:c},[e.AdminTransactionType.PayPrivateToPrivateSend]:{product:d,activity:t,privacyFlow:o,route:c},[e.AdminTransactionType.PayPrivateToPublicSend]:{product:d,activity:t,privacyFlow:s,route:c},[e.AdminTransactionType.PayPrivateToPrivateBridgeSend]:{product:d,activity:t,privacyFlow:o,route:l},[e.AdminTransactionType.PayPrivateSwap]:{product:d,activity:n,privacyFlow:o,route:c},[e.AdminTransactionType.PayPrivateBridgeSwap]:{product:d,activity:n,privacyFlow:o,route:l},[e.AdminTransactionType.PrimeShield]:{product:f,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PrimePublicToPrivateSend]:{product:f,activity:t,privacyFlow:a,route:c},[e.AdminTransactionType.PrimePublicToPublicSend]:{product:f,activity:t,privacyFlow:i,route:c},[e.AdminTransactionType.PrimePublicToPublicBridgeSend]:{product:f,activity:t,privacyFlow:i,route:l},[e.AdminTransactionType.PrimeUnshield]:{product:f,activity:t,privacyFlow:s,route:c},[e.AdminTransactionType.PrimePrivateToPrivateSend]:{product:f,activity:t,privacyFlow:o,route:c},[e.AdminTransactionType.PrimePrivateToPublicSend]:{product:f,activity:t,privacyFlow:s,route:c},[e.AdminTransactionType.PrimePrivateToPrivateBridgeSend]:{product:f,activity:t,privacyFlow:o,route:l}},m=e=>p[e],h=(e,t,r)=>{if(!(!e||m(e)?.activity!==n))return r?[t[0],r]:t};exports.resolveAdminDimensions=m,exports.resolveSwapPairTokens=h;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AdminDimensions, AdminTransactionType } from '../../types/admin.types';
|
|
2
|
+
import { ERC20Token } from '../../types/token.types';
|
|
3
|
+
export declare const resolveAdminDimensions: (action: AdminTransactionType) => AdminDimensions | undefined;
|
|
4
|
+
export declare const resolveSwapPairTokens: (action: AdminTransactionType | undefined, tokens: ERC20Token[], bridgedToken?: ERC20Token) => ERC20Token[] | undefined;
|