@hinkal/common 0.3.9 → 0.3.10
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 +2 -8
- package/common/src/API/API.cjs +1 -1
- package/common/src/API/API.d.ts +4 -5
- package/common/src/API/API.mjs +79 -80
- package/common/src/API/dashboardTransactionCalls.cjs +1 -1
- package/common/src/API/dashboardTransactionCalls.d.ts +4 -1
- package/common/src/API/dashboardTransactionCalls.mjs +2 -2
- package/common/src/API/enclaveRecipientInfoCalls.d.ts +0 -2
- package/common/src/API/enclaveSignatureCalls.cjs +1 -1
- package/common/src/API/enclaveSignatureCalls.d.ts +2 -1
- package/common/src/API/enclaveSignatureCalls.mjs +5 -8
- package/common/src/API/enclaveUtxoCalls.cjs +1 -1
- package/common/src/API/enclaveUtxoCalls.d.ts +12 -8
- package/common/src/API/enclaveUtxoCalls.mjs +17 -20
- package/common/src/API/privateSendRecipientInfoCalls.cjs +1 -1
- package/common/src/API/privateSendRecipientInfoCalls.d.ts +3 -6
- package/common/src/API/privateSendRecipientInfoCalls.mjs +12 -6
- package/common/src/API/scheduled-transactions-calls.cjs +1 -1
- package/common/src/API/scheduled-transactions-calls.d.ts +1 -5
- package/common/src/API/scheduled-transactions-calls.mjs +2 -6
- package/common/src/constants/bridging.constants.cjs +1 -1
- package/common/src/constants/bridging.constants.d.ts +1 -0
- package/common/src/constants/bridging.constants.mjs +1 -1
- package/common/src/constants/chains.constants.cjs +1 -1
- package/common/src/constants/chains.constants.d.ts +18 -17
- package/common/src/constants/chains.constants.mjs +108 -89
- package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
- package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -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 +2 -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 +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-polygon.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
- package/common/src/constants/events.constants.cjs +1 -1
- package/common/src/constants/events.constants.mjs +1 -16
- package/common/src/constants/protocol.constants.d.ts +1 -3
- package/common/src/constants/server.constants.cjs +1 -1
- package/common/src/constants/server.constants.d.ts +1 -4
- package/common/src/constants/server.constants.mjs +1 -4
- package/common/src/constants/tx-confirmation.constants.cjs +1 -1
- package/common/src/constants/tx-confirmation.constants.d.ts +1 -0
- package/common/src/constants/tx-confirmation.constants.mjs +2 -2
- package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/common/src/data-structures/Hinkal/Hinkal.d.ts +6 -9
- package/common/src/data-structures/Hinkal/Hinkal.mjs +129 -160
- package/common/src/data-structures/Hinkal/IHinkal.d.ts +5 -9
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +23 -23
- package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +10 -10
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +18 -18
- package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +3 -2
- package/common/src/data-structures/Hinkal/hinkalProxySend.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalProxySend.d.ts +6 -0
- package/common/src/data-structures/Hinkal/hinkalProxySend.mjs +16 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +44 -47
- package/common/src/data-structures/Hinkal/hinkalSolanaTransact.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransact.mjs +2 -2
- package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransact.mjs +1 -1
- 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/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +101 -94
- package/common/src/data-structures/Hinkal/index.d.ts +0 -1
- package/common/src/data-structures/IndexedDB/activity-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/activity-db.mjs +34 -34
- package/common/src/data-structures/IndexedDB/index.cjs +1 -1
- package/common/src/data-structures/IndexedDB/index.d.ts +1 -0
- package/common/src/data-structures/IndexedDB/index.mjs +1 -0
- package/common/src/data-structures/IndexedDB/scheduled-transactions-db.cjs +1 -0
- package/common/src/data-structures/IndexedDB/scheduled-transactions-db.d.ts +11 -0
- package/common/src/data-structures/IndexedDB/scheduled-transactions-db.mjs +34 -0
- package/common/src/data-structures/IndexedDB/signatures-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/signatures-db.mjs +11 -11
- package/common/src/data-structures/TokenDBs/PrivateTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/PrivateTokensDB.mjs +18 -19
- package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
- package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.mjs +11 -11
- package/common/src/data-structures/event-service/helpers/ClientEventHelper.cjs +1 -1
- package/common/src/data-structures/event-service/helpers/ClientEventHelper.mjs +6 -6
- package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.cjs +1 -1
- package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.d.ts +1 -0
- package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.mjs +79 -75
- package/common/src/data-structures/provider-adapter/IProviderAdapter.d.ts +1 -4
- 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 +10 -4
- package/common/src/functions/auto-deposit-back-helpers/get-gas-token-records.cjs +1 -1
- package/common/src/functions/auto-deposit-back-helpers/get-gas-token-records.mjs +7 -6
- package/common/src/functions/auto-deposit-back-helpers/select-gas-token.cjs +1 -1
- package/common/src/functions/auto-deposit-back-helpers/select-gas-token.mjs +8 -8
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +1 -2
- package/common/src/functions/pre-transaction/getVolatileTransferAmount.cjs +1 -1
- package/common/src/functions/pre-transaction/getVolatileTransferAmount.mjs +12 -12
- package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
- package/common/src/functions/private-wallet/emporium.helpers.mjs +13 -13
- package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
- package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +13 -13
- package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +4 -4
- package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +5 -5
- package/common/src/functions/snarkjs/constructTxEnclave.cjs +1 -1
- package/common/src/functions/snarkjs/constructTxEnclave.d.ts +1 -1
- package/common/src/functions/snarkjs/constructTxEnclave.mjs +61 -133
- package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -0
- package/common/src/functions/snarkjs/constructTxEnclaveVerify.d.ts +5 -0
- package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +295 -0
- package/common/src/functions/utils/addresses.cjs +1 -1
- package/common/src/functions/utils/addresses.d.ts +1 -0
- package/common/src/functions/utils/addresses.mjs +13 -12
- package/common/src/functions/utils/bridge-arrival.utils.cjs +1 -1
- package/common/src/functions/utils/bridge-arrival.utils.mjs +12 -11
- package/common/src/functions/utils/create-provider.cjs +1 -1
- package/common/src/functions/utils/create-provider.mjs +4 -1
- package/common/src/functions/utils/enclave-recipient-info-storage.cjs +1 -1
- package/common/src/functions/utils/enclave-recipient-info-storage.d.ts +4 -1
- package/common/src/functions/utils/enclave-recipient-info-storage.mjs +1 -0
- package/common/src/functions/utils/enclave-signature-storage.cjs +1 -1
- package/common/src/functions/utils/enclave-signature-storage.d.ts +1 -1
- package/common/src/functions/utils/enclave-signature-storage.mjs +3 -3
- package/common/src/functions/utils/enclave-utxo-storage.cjs +1 -1
- package/common/src/functions/utils/enclave-utxo-storage.d.ts +3 -3
- package/common/src/functions/utils/enclave-utxo-storage.mjs +8 -5
- package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
- package/common/src/functions/utils/encryptInputForEnclave.d.ts +8 -0
- package/common/src/functions/utils/encryptInputForEnclave.mjs +43 -23
- package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
- package/common/src/functions/utils/erc20tokenFunctions.mjs +2 -15
- package/common/src/functions/utils/fees.utils.cjs +1 -1
- package/common/src/functions/utils/fees.utils.mjs +6 -6
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.d.ts +1 -0
- package/common/src/functions/utils/index.mjs +3 -3
- package/common/src/functions/utils/ipfs.d.ts +2 -3
- package/common/src/functions/utils/lifi.utils.d.ts +2 -0
- package/common/src/functions/utils/nearIntents.utils.cjs +1 -1
- package/common/src/functions/utils/nearIntents.utils.mjs +6 -6
- package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
- package/common/src/functions/utils/publicBalance.utils.mjs +9 -10
- package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -0
- package/common/src/functions/utils/temporary-wallet-recovery.utils.d.ts +7 -0
- package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +10 -0
- package/common/src/functions/utils/tron.utils.cjs +1 -1
- package/common/src/functions/utils/tron.utils.mjs +16 -29
- package/common/src/functions/utils/tx-confirmation.utils.cjs +1 -1
- package/common/src/functions/utils/tx-confirmation.utils.d.ts +1 -0
- package/common/src/functions/utils/tx-confirmation.utils.mjs +16 -13
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +5 -5
- package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxosEnclave.d.ts +1 -1
- package/common/src/functions/web3/events/getInputUtxosEnclave.mjs +19 -11
- package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
- package/common/src/functions/web3/events/getShieldedBalance.d.ts +4 -4
- package/common/src/functions/web3/events/getShieldedBalance.mjs +113 -102
- package/common/src/functions/web3/functionCalls/transactCallDirectTron.cjs +1 -1
- package/common/src/functions/web3/functionCalls/transactCallDirectTron.mjs +16 -16
- package/common/src/providers/SolanaProviderAdapter.cjs +1 -1
- package/common/src/providers/SolanaProviderAdapter.d.ts +1 -4
- package/common/src/providers/SolanaProviderAdapter.mjs +3 -6
- package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
- package/common/src/providers/WagmiProviderAdapter.mjs +5 -5
- package/common/src/types/cache.types.cjs +1 -1
- package/common/src/types/cache.types.d.ts +2 -1
- package/common/src/types/cache.types.mjs +1 -1
- package/common/src/types/enclaveApi.types.d.ts +2 -3
- package/common/src/types/ethereum-network.types.d.ts +1 -0
- package/common/src/types/events.types.d.ts +1 -0
- package/common/src/types/near-intents.types.d.ts +1 -0
- package/common/src/types/remote-proof.types.d.ts +5 -0
- package/common/src/types/remote-tx-build.types.d.ts +37 -4
- package/common/src/types/scheduled-transactions.types.d.ts +18 -0
- package/common/src/types/solana.types.d.ts +0 -3
- package/common/src/webworker/{logError-RKYfeI6h.js → logError-CIIt1CO3.js} +1 -1
- package/common/src/webworker/package.json +1 -2
- 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-BHzCZ9HT.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/package.json +1 -2
- package/services/Hinkal.cjs +1 -1
- package/services/Hinkal.d.ts +6 -2
- package/services/Hinkal.mjs +9 -4
- package/types/IHinkal.d.ts +6 -2
- package/common/src/API/evm-token-assets.cjs +0 -1
- package/common/src/API/evm-token-assets.mjs +0 -20
- package/common/src/API/getAnyRecipientInfo.d.ts +0 -1
- package/common/src/API/solana-nft-assets.cjs +0 -1
- package/common/src/API/solana-nft-assets.mjs +0 -11
- package/common/src/data-structures/Hinkal/hinkalSolanaSponsoredProxySend.d.ts +0 -5
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +0 -1
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +0 -109
- package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +0 -1
- package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +0 -94
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +0 -1
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +0 -134
- package/common/src/data-structures/TokenDBs/PublicTokensDB.cjs +0 -1
- package/common/src/data-structures/TokenDBs/PublicTokensDB.mjs +0 -32
- package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +0 -1
- package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +0 -37
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +0 -1
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +0 -51
- package/common/src/data-structures/TokenDBs/index.cjs +0 -1
- package/common/src/data-structures/TokenDBs/index.mjs +0 -6
- package/common/src/functions/utils/ipfs.cjs +0 -1
- package/common/src/functions/utils/ipfs.mjs +0 -1
- package/common/src/functions/utils/reloadPage.cjs +0 -1
- package/common/src/functions/utils/reloadPage.mjs +0 -4
- package/common/src/webworker/workerProxy-COB7g4Qc.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../utxo/Utxo.cjs`),i=require(`../../types/transact.types.cjs`),a=require(`../../functions/web3/events/getShieldedBalance.cjs`),o=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),s=require(`../../functions/snarkjs/common.snarkjs.cjs`),c=require(`../../functions/snarkjs/constructTxEnclave.cjs`),l=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/submitProof.cjs`);var f=2,p=6,m=(e,t)=>{let n=Math.max(...t.map(e=>e.length))<=f?f:p;return t.map(t=>{let i=t[0];if(!i)throw Error(`hinkalTransact: inputUtxos must contain at least one note per token`);let a=[...t];for(;a.length<n;)a.push(new r.Utxo({amount:0n,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}));return a})},h=(e,t,n)=>{if(t.length!==1||t[0].length!==1)throw Error(`selfOutputAmounts only supports a single token with a single self-output`);let i=t[0][0],a=n.reduce((e,t)=>e+t,0n);if(a!==i.amount)throw Error(`selfOutputAmounts sum to ${a}, expected ${i.amount}`);return[n.map(t=>new r.Utxo({amount:t,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),timeStamp:i.timeStamp,spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}))]},g=async(e,r,i)=>{let{chainId:s,erc20Addresses:c,amountChanges:d,externalAddress:f,externalActionId:p,externalActionMetadata:g,feeStructure:_,relay:v,onChainCreation:y,recipientAddress:b,recipientAmounts:x,useBlockedUtxos:S,inputUtxos:C,forceEmptyUtxos:w,originalSender:T,subAccountPrivateKey:E,emporiumOps:D,createBlockedUtxos:O,selfOutputAmounts:k,speculative:A,slippageValues:j}=r,M=C?m(i,C):[...await a.addPaddingToUtxos(e,s,c,d,void 0,w,S)],N=o.buildOutputUtxos(i,M,d,b,x),P=k?h(i,N,k):N,F=e.merkleTreeHinkalByChain[s],I=A?l.speculativeMerkleTree(F,M,A.pendingLeaves):F,{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}=await u.constructZkProof(I,M,P,i,p??0n,f,D??g??`0x00`,_??n.zeroFeeStructure,v??t.zeroAddress,s,y,void 0,T,E,void 0,O,I!==F,j);return{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}},_=async(t,n,r)=>{let{chainId:i,erc20Addresses:a,externalAddress:o,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputUtxos:S,originalSender:C,speculative:w,slippageValues:T}=n,{jobId:E,signedMessageHash:D}=await c.prepareTxEnclaveCall(t,{chainId:i,hinkalAddress:e.networkRegistry[i].contractData.hinkalAddress,erc20Addresses:a,externalAddress:o,originalSender:C,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputCommitments:w?void 0:c.collectInputCommitments(S),speculative:w,slippageValues:T},r),{R8:O,S:k}=r.signEddsa(BigInt(D));return{jobId:E,eddsaSignature:{R8:O,S:k}}},v=async(e,t,n)=>{let r=await d.submitProof(e,t,n);return t.submit.mode!==i.SubmitMode.ProofOnly&&t.onTxSubmitLocally?.(n.circomData),r},y=async(e,t)=>{if(t.userKeys&&!t.inputUtxos)throw Error(`hinkalTransact: userKeys requires explicit inputUtxos`);let n=t.userKeys??e.userKeys,{chainId:r,submit:a}=t;if(e.generateProofRemotely){let{jobId:o,eddsaSignature:l}=await _(e,t,n);if(a.mode===i.SubmitMode.Relayer)return c.finalizeTxEnclaveCallRelay(o,l,r,{adminData:a.adminData,authorizationData:a.authorizationData,withUniswapWorkAround:a.withUniswapWorkAround});let{zkCallData:u,circomData:d,dimData:f,commitmentValidationData:p,tronProofSignature:m}=await c.finalizeTxEnclaveCall(o,l);return v(e,t,{zkCallData:u,circomData:s.deserializeCircomData(d),dimData:f,commitmentValidationData:p,tronProofSignature:m})}return v(e,t,await g(e,t,n))};exports.hinkalTransact=y;
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../utxo/Utxo.cjs`),i=require(`../../types/transact.types.cjs`),a=require(`../../functions/web3/events/getShieldedBalance.cjs`),o=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),s=require(`../../functions/snarkjs/common.snarkjs.cjs`),c=require(`../../functions/snarkjs/constructTxEnclave.cjs`),l=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/submitProof.cjs`);var f=2,p=6,m=(e,t)=>{let n=Math.max(...t.map(e=>e.length))<=f?f:p;return t.map(t=>{let i=t[0];if(!i)throw Error(`hinkalTransact: inputUtxos must contain at least one note per token`);let a=[...t];for(;a.length<n;)a.push(new r.Utxo({amount:0n,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}));return a})},h=(e,t,n)=>{if(t.length!==1||t[0].length!==1)throw Error(`selfOutputAmounts only supports a single token with a single self-output`);let i=t[0][0],a=n.reduce((e,t)=>e+t,0n);if(a!==i.amount)throw Error(`selfOutputAmounts sum to ${a}, expected ${i.amount}`);return[n.map(t=>new r.Utxo({amount:t,erc20TokenAddress:i.erc20TokenAddress,mintAddress:i.mintAddress,nullifyingKey:e.getShieldedPrivateKey(),timeStamp:i.timeStamp,spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}))]},g=async(e,r,i)=>{let{chainId:s,erc20Addresses:c,amountChanges:d,externalAddress:f,externalActionId:p,externalActionMetadata:g,feeStructure:_,relay:v,onChainCreation:y,recipientAddress:b,recipientAmounts:x,useBlockedUtxos:S,inputUtxos:C,forceEmptyUtxos:w,originalSender:T,subAccountPrivateKey:E,emporiumOps:D,createBlockedUtxos:O,selfOutputAmounts:k,speculative:A,slippageValues:j}=r,M=C?m(i,C):[...await a.addPaddingToUtxos(e,s,c,d,void 0,w,S,y)],N=o.buildOutputUtxos(i,M,d,b,x),P=k?h(i,N,k):N,F=e.merkleTreeHinkalByChain[s],I=A?l.speculativeMerkleTree(F,M,A.pendingLeaves):F,{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}=await u.constructZkProof(I,M,P,i,p??0n,f,D??g??`0x00`,_??n.zeroFeeStructure,v??t.zeroAddress,s,y,void 0,T,E,void 0,O,I!==F,j);return{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B}},_=async(t,n,r)=>{let{chainId:i,erc20Addresses:a,externalAddress:o,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputUtxos:S,originalSender:C,speculative:w,slippageValues:T}=n,{jobId:E,signedMessageHash:D}=await c.prepareTxEnclaveCall(t,{chainId:i,hinkalAddress:e.networkRegistry[i].contractData.hinkalAddress,erc20Addresses:a,externalAddress:o,originalSender:C,amountChanges:s,relay:l,feeStructure:u,externalActionId:d,externalActionMetadata:f,onChainCreation:p,recipientAddress:m,recipientAmounts:h,useBlockedUtxos:g,createBlockedUtxos:_,skipLock:v,selfOutputAmounts:y,forceEmptyUtxos:b,messageSeed:x,inputCommitments:w?void 0:c.collectInputCommitments(S),speculative:w,slippageValues:T},r),{R8:O,S:k}=r.signEddsa(BigInt(D));return{jobId:E,eddsaSignature:{R8:O,S:k}}},v=async(e,t,n)=>{let r=await d.submitProof(e,t,n);return t.submit.mode!==i.SubmitMode.ProofOnly&&t.onTxSubmitLocally?.(n.circomData),r},y=async(e,t)=>{if(t.userKeys&&!t.inputUtxos)throw Error(`hinkalTransact: userKeys requires explicit inputUtxos`);let n=t.userKeys??e.userKeys,{chainId:r,submit:a}=t;if(e.generateProofRemotely){let{jobId:o,eddsaSignature:l}=await _(e,t,n);if(a.mode===i.SubmitMode.Relayer)return c.finalizeTxEnclaveCallRelay(o,l,r,{adminData:a.adminData,authorizationData:a.authorizationData,withUniswapWorkAround:a.withUniswapWorkAround});let{zkCallData:u,circomData:d,dimData:f,commitmentValidationData:p,tronProofSignature:m}=await c.finalizeTxEnclaveCall(o,l);return v(e,t,{zkCallData:u,circomData:s.deserializeCircomData(d),dimData:f,commitmentValidationData:p,tronProofSignature:m})}return v(e,t,await g(e,t,n))};exports.hinkalTransact=y;
|
|
@@ -39,7 +39,7 @@ var h = 2, g = 6, _ = (e, t) => {
|
|
|
39
39
|
spendingPublicKey: e.getSpendingKeyPair().pubSpendingBJJPoint
|
|
40
40
|
}))];
|
|
41
41
|
}, y = async (e, r, i) => {
|
|
42
|
-
let { chainId: s, erc20Addresses: c, amountChanges: l, externalAddress: u, externalActionId: d, externalActionMetadata: m, feeStructure: h, relay: g, onChainCreation: y, recipientAddress: b, recipientAmounts: x, useBlockedUtxos: S, inputUtxos: C, forceEmptyUtxos: w, originalSender: T, subAccountPrivateKey: E, emporiumOps: D, createBlockedUtxos: O, selfOutputAmounts: k, speculative: A, slippageValues: j } = r, M = C ? _(i, C) : [...await a(e, s, c, l, void 0, w, S)], N = o(i, M, l, b, x), P = k ? v(i, N, k) : N, F = e.merkleTreeHinkalByChain[s], I = A ? f(F, M, A.pendingLeaves) : F, { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await p(I, M, P, i, d ?? 0n, u, D ?? m ?? "0x00", h ?? n, g ?? t, s, y, void 0, T, E, void 0, O, I !== F, j);
|
|
42
|
+
let { chainId: s, erc20Addresses: c, amountChanges: l, externalAddress: u, externalActionId: d, externalActionMetadata: m, feeStructure: h, relay: g, onChainCreation: y, recipientAddress: b, recipientAmounts: x, useBlockedUtxos: S, inputUtxos: C, forceEmptyUtxos: w, originalSender: T, subAccountPrivateKey: E, emporiumOps: D, createBlockedUtxos: O, selfOutputAmounts: k, speculative: A, slippageValues: j } = r, M = C ? _(i, C) : [...await a(e, s, c, l, void 0, w, S, y)], N = o(i, M, l, b, x), P = k ? v(i, N, k) : N, F = e.merkleTreeHinkalByChain[s], I = A ? f(F, M, A.pendingLeaves) : F, { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await p(I, M, P, i, d ?? 0n, u, D ?? m ?? "0x00", h ?? n, g ?? t, s, y, void 0, T, E, void 0, O, I !== F, j);
|
|
43
43
|
return {
|
|
44
44
|
zkCallData: L,
|
|
45
45
|
circomData: R,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/
|
|
1
|
+
const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/tron.utils.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/transact.types.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`./hinkalTransact.cjs`),d=require(`../../functions/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var p=async(p,m,h,g,_,v,y)=>{let b=o.validateAndGetChainId(m);if(!r.isValidPrivateAddress(g))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let x=n.addressToHexFormat(await p.getEthereumAddressByChain(b)),S=m.map(e=>e.erc20TokenAddress),C=await s.modifyVolatileTokenAmountChanges(b,m,h),w=v??await l.getFeeStructure(b,_,S,i.ExternalActionId.Transact,[],5n);w.variableRate||=e.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let T=m[0];if(!T)throw Error(`Transfer Action: No Token Found`);let E=-C[0],D=await d.calculateModifiedFeeStructure(b,T,E,w);await f.mergeWithFeeStructure(b,S,C,D);let O=await p.getRandomRelay(b,!0);if(!O)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=c.constructAdminData(y,b,S,C,x);return u.hinkalTransact(p,{chainId:b,erc20Addresses:S,amountChanges:C,externalAddress:O,feeStructure:D,relay:O,recipientAddress:[g],recipientAmounts:[S.map((e,t)=>t===0?E:0n)],submit:{mode:a.SubmitMode.Relayer,adminData:k}})};exports.hinkalTransfer=p;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HINKAL_PRIVATE_SEND_VARIABLE_RATE as e } from "../../constants/protocol.constants.mjs";
|
|
2
2
|
import { transactionErrorCodes as t } from "../../error-handling/error-codes.constants.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { addressToHexFormat as n } from "../../functions/utils/tron.utils.mjs";
|
|
4
|
+
import { isValidPrivateAddress as r } from "../../functions/utils/addresses.mjs";
|
|
5
5
|
import { ExternalActionId as i } from "../../types/external-action.types.mjs";
|
|
6
6
|
import { SubmitMode as a } from "../../types/transact.types.mjs";
|
|
7
7
|
import { validateAndGetChainId as o } from "../../functions/utils/token-check.utils.mjs";
|
|
@@ -15,8 +15,8 @@ import { mergeWithFeeStructure as f } from "../../functions/pre-transaction/merg
|
|
|
15
15
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalTransfer.ts
|
|
16
16
|
var p = async (p, m, h, g, _, v, y) => {
|
|
17
17
|
let b = o(m);
|
|
18
|
-
if (!
|
|
19
|
-
let x =
|
|
18
|
+
if (!r(g)) throw Error(t.RECIPIENT_FORMAT_INCORRECT);
|
|
19
|
+
let x = n(await p.getEthereumAddressByChain(b)), S = m.map((e) => e.erc20TokenAddress), C = await s(b, m, h), w = v ?? await l(b, _, S, i.Transact, [], 5n);
|
|
20
20
|
w.variableRate ||= e;
|
|
21
21
|
let T = m[0];
|
|
22
22
|
if (!T) throw Error("Transfer Action: No Token Found");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../functions/utils/amounts.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/encodeTokenWithId.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/addresses.cjs`),c=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/transact.types.cjs`),d=require(`../../types/solana-transact.types.cjs`),f=require(`../../functions/utils/token-check.utils.cjs`),p=require(`../../functions/snarkjs/constructTxEnclave.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`./hinkalTransact.cjs`),g=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),_=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),v=require(`./hinkalSolanaTransact.cjs`);var y=6,b=async(t,n,i,c)=>{let u=i.erc20TokenAddress,d=await t.getEthereumAddressByChain(n),[f,h]=await Promise.all([m.getFeeStructure(n,u,[u],l.ExternalActionId.Transact),t.getRandomRelay(n,!0)]);if(!h)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=await p.prepareStuckWithdrawEnclaveCall(t,{chainId:n,hinkalAddress:e.networkRegistry[n].contractData.hinkalAddress,erc20Address:u,externalAddress:o.addressToHexFormat(c),relay:h,feeStructure:f,hashedEthereumAddress:s.hashEthereumAddress(d)}),_=[];for(let e=0;e<g.length;e+=1)try{let{jobId:r,signedMessageHash:i}=g[e],{R8:a,S:o}=t.userKeys.signEddsa(BigInt(i));_.push(await p.finalizeTxEnclaveCallRelay(r,{R8:a,S:o},n))}catch(e){if(!_.length)throw e;return a.Logger.error(`Stuck withdrawal partially submitted (${_.length}/${g.length})`,e),_}return _},x=async(e,t,n)=>{let r=await Promise.all(Array.from({length:y},async(r,i)=>{let a=i+1,o=await m.getFeeStructure(e,t,[t],l.ExternalActionId.Transact,void 0,void 0,{mintTo:t,recipient:n,nullifierCount:a});return[String(a),o]}));return Object.fromEntries(r)},S=async(e,t,n,i)=>{let a=n.erc20TokenAddress,[o,c,l]=await Promise.all([e.getEthereumAddressByChain(t),e.getRandomRelay(t,!0),x(t,a,i)]);if(!c)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let u=await p.prepareSolanaStuckWithdrawEnclaveCall(e,{chainId:t,mintAddress:a,recipient:i,relayAddress:c,accounts:{recipient:i,mint:a===`11111111111111111111111111111111`?void 0:a},feeStructures:l,hashedEthereumAddress:s.hashEthereumAddress(o)}),d=[];for(let n=0;n<u.length;n+=1){let{jobId:r,signedMessageHash:i}=u[n],{R8:a,S:o}=e.userKeys.signEddsa(BigInt(i));d.push(await p.finalizeSolanaTxEnclaveCallRelay(r,{R8:a,S:o},t))}return d},C=async(e,t,n,i,a)=>{let s=[n.erc20TokenAddress],c=n.erc20TokenAddress,[d,f]=await Promise.all([m.getFeeStructure(t,c,s,l.ExternalActionId.Transact),e.getRandomRelay(t,!0)]);if(!f)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let p=o.addressToHexFormat(a),v=i-d.flatFee;if(v<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${d.flatFee}`);let y=[-v];return await _.mergeWithFeeStructure(t,s,y,d),{tx:await h.hinkalTransact(e,{chainId:t,erc20Addresses:s,amountChanges:y,externalAddress:p,feeStructure:d,relay:f,useBlockedUtxos:!0,onTxSubmitLocally:n=>{g.updateHinkal(t,e,n.inputNullifiers?.flat(),n.outCommitments?.flat(),n.encryptedOutputs?.flat())},submit:{mode:u.SubmitMode.Relayer}}),amountToRecipient:v}},w=async(t,n,i,a,o,s)=>{let c=[i.erc20TokenAddress],{originalDeployer:u}=e.networkRegistry[n].contractData;if(!u)throw Error(`missing data`);let f=i.erc20TokenAddress,[p,h]=await Promise.all([m.getFeeStructure(n,f,c,l.ExternalActionId.Transact,void 0,void 0,{mintTo:c[0],recipient:o,nullifierCount:s}),t.getRandomRelay(n,!0)]);if(!h)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let _=a-p.flatFee;if(_<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${p.flatFee}`);let y=[-_];return y[0]-=p.flatFee,{tx:await v.hinkalSolanaTransact(t,{chainId:n,mintAddresses:c,amountChanges:y,relayAddress:h,recipient:o,signer:h,functionName:`transact`,accounts:{recipient:o,mint:c[0]===`11111111111111111111111111111111`?void 0:c[0]},relayerFee:p.flatFee,variableRate:p.variableRate,useBlockedUtxos:!0,onTxSubmitLocally:({inputNullifiers:e,outCommitments:r,encryptedOutputs:i})=>{g.updateHinkal(n,t,e,r,i)},submit:{mode:d.SolanaSubmitMode.Relayer}}),amountToRecipient:_}},T=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?w(t,n,r,i,a,o):C(t,n,r,i,a),E=async(e,n,r)=>{try{return((await e.getStuckShieldedBalances([n])).get(n)??[]).find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,r.erc20TokenAddress))?.balance??0n}catch(e){return a.Logger.error(`Failed to read stuck balance after an empty stuck withdrawal`,e),0n}},D=async(t,o,s)=>{let l=f.validateAndGetChainId([o]);if(t.generateProofRemotely){let n=e.isSolanaLike(l)?await S(t,l,o,s):await b(t,l,o,s);if(!n.length)throw await E(t,l,o)>0n?Error(r.DIRECTLY_SHOW_MESSAGE_ERROR_CODES.INSUFFICIENT_FUNDS_FOR_RECOVERY_FEES):Error(r.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);return n}let u=[],d=i.normalizeTokenAddress(l,o.erc20TokenAddress);await t.resetMerkleTreesIfNecessary([l]);let p=((await c.getInputUtxoAndBalancePerToken({hinkal:t,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:l}))?.get(d)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));if(!p.length)throw Error(r.transactionErrorCodes.NO_STUCK_BALANCE_TO_WITHDRAW);for(let e=0;e<p.length;e+=y){let r=p.slice(e,e+y),i=n.countTotalAmountInUtxos(r);try{let{tx:e}=await T(t,l,o,i,s,r.length);u.push(e)}catch(e){if(!u.length)throw e;return a.Logger.error(`Stuck withdrawal partially submitted (${u.length}/${Math.ceil(p.length/y)})`,e),u}}return u};exports.hinkalWithdrawStuckUtxos=D;
|
|
@@ -1,49 +1,50 @@
|
|
|
1
1
|
import { isSolanaLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import "../../constants/protocol.constants.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
3
|
+
import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
4
|
+
import { countTotalAmountInUtxos as r } from "../../functions/utils/amounts.utils.mjs";
|
|
5
|
+
import { DIRECTLY_SHOW_MESSAGE_ERROR_CODES as i, transactionErrorCodes as a } from "../../error-handling/error-codes.constants.mjs";
|
|
6
|
+
import { normalizeTokenAddress as o } from "../../functions/utils/encodeTokenWithId.mjs";
|
|
7
|
+
import { Logger as s } from "../../error-handling/logger.mjs";
|
|
8
|
+
import { addressToHexFormat as c } from "../../functions/utils/tron.utils.mjs";
|
|
9
|
+
import { hashEthereumAddress as l } from "../../functions/utils/addresses.mjs";
|
|
10
|
+
import { getInputUtxoAndBalancePerToken as u } from "../../functions/web3/events/getInputUtxoAndBalance.mjs";
|
|
11
|
+
import { ExternalActionId as d } from "../../types/external-action.types.mjs";
|
|
12
|
+
import { SubmitMode as f } from "../../types/transact.types.mjs";
|
|
13
|
+
import { SolanaSubmitMode as p } from "../../types/solana-transact.types.mjs";
|
|
14
|
+
import { validateAndGetChainId as m } from "../../functions/utils/token-check.utils.mjs";
|
|
15
|
+
import { finalizeSolanaTxEnclaveCallRelay as h, finalizeTxEnclaveCallRelay as g, prepareSolanaStuckWithdrawEnclaveCall as _, prepareStuckWithdrawEnclaveCall as v } from "../../functions/snarkjs/constructTxEnclave.mjs";
|
|
16
|
+
import { getFeeStructure as y } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
17
|
+
import { hinkalTransact as b } from "./hinkalTransact.mjs";
|
|
18
|
+
import { updateHinkal as x } from "../../functions/auto-deposit-back-helpers/update-hinkal.mjs";
|
|
19
|
+
import { mergeWithFeeStructure as S } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
|
|
20
|
+
import { hinkalSolanaTransact as C } from "./hinkalSolanaTransact.mjs";
|
|
20
21
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.ts
|
|
21
|
-
var
|
|
22
|
-
let
|
|
23
|
-
if (!p) throw Error(
|
|
24
|
-
let
|
|
22
|
+
var w = 6, T = async (e, n, r, i) => {
|
|
23
|
+
let o = r.erc20TokenAddress, u = await e.getEthereumAddressByChain(n), [f, p] = await Promise.all([y(n, o, [o], d.Transact), e.getRandomRelay(n, !0)]);
|
|
24
|
+
if (!p) throw Error(a.RELAYER_NOT_AVAILABLE);
|
|
25
|
+
let m = await v(e, {
|
|
25
26
|
chainId: n,
|
|
26
27
|
hinkalAddress: t[n].contractData.hinkalAddress,
|
|
27
|
-
erc20Address:
|
|
28
|
-
externalAddress:
|
|
28
|
+
erc20Address: o,
|
|
29
|
+
externalAddress: c(i),
|
|
29
30
|
relay: p,
|
|
30
31
|
feeStructure: f,
|
|
31
|
-
hashedEthereumAddress:
|
|
32
|
-
}),
|
|
33
|
-
for (let t = 0; t <
|
|
34
|
-
let { jobId: r, signedMessageHash: i } =
|
|
35
|
-
|
|
32
|
+
hashedEthereumAddress: l(u)
|
|
33
|
+
}), h = [];
|
|
34
|
+
for (let t = 0; t < m.length; t += 1) try {
|
|
35
|
+
let { jobId: r, signedMessageHash: i } = m[t], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
|
|
36
|
+
h.push(await g(r, {
|
|
36
37
|
R8: a,
|
|
37
38
|
S: o
|
|
38
39
|
}, n));
|
|
39
40
|
} catch (e) {
|
|
40
|
-
if (!
|
|
41
|
-
return
|
|
41
|
+
if (!h.length) throw e;
|
|
42
|
+
return s.error(`Stuck withdrawal partially submitted (${h.length}/${m.length})`, e), h;
|
|
42
43
|
}
|
|
43
|
-
return
|
|
44
|
-
},
|
|
45
|
-
let r = await Promise.all(Array.from({ length:
|
|
46
|
-
let a = i + 1, o = await
|
|
44
|
+
return h;
|
|
45
|
+
}, E = async (e, t, n) => {
|
|
46
|
+
let r = await Promise.all(Array.from({ length: w }, async (r, i) => {
|
|
47
|
+
let a = i + 1, o = await y(e, t, [t], d.Transact, void 0, void 0, {
|
|
47
48
|
mintTo: t,
|
|
48
49
|
recipient: n,
|
|
49
50
|
nullifierCount: a
|
|
@@ -51,71 +52,71 @@ var S = 6, C = async (e, n, i, s) => {
|
|
|
51
52
|
return [String(a), o];
|
|
52
53
|
}));
|
|
53
54
|
return Object.fromEntries(r);
|
|
54
|
-
},
|
|
55
|
-
let
|
|
55
|
+
}, D = async (e, t, n, r) => {
|
|
56
|
+
let i = n.erc20TokenAddress, [o, s, c] = await Promise.all([
|
|
56
57
|
e.getEthereumAddressByChain(t),
|
|
57
58
|
e.getRandomRelay(t, !0),
|
|
58
|
-
|
|
59
|
+
E(t, i, r)
|
|
59
60
|
]);
|
|
60
|
-
if (!
|
|
61
|
-
let u = await
|
|
61
|
+
if (!s) throw Error(a.RELAYER_NOT_AVAILABLE);
|
|
62
|
+
let u = await _(e, {
|
|
62
63
|
chainId: t,
|
|
63
|
-
mintAddress:
|
|
64
|
-
recipient:
|
|
65
|
-
relayAddress:
|
|
64
|
+
mintAddress: i,
|
|
65
|
+
recipient: r,
|
|
66
|
+
relayAddress: s,
|
|
66
67
|
accounts: {
|
|
67
|
-
recipient:
|
|
68
|
-
mint:
|
|
68
|
+
recipient: r,
|
|
69
|
+
mint: i === "11111111111111111111111111111111" ? void 0 : i
|
|
69
70
|
},
|
|
70
|
-
feeStructures:
|
|
71
|
-
hashedEthereumAddress:
|
|
71
|
+
feeStructures: c,
|
|
72
|
+
hashedEthereumAddress: l(o)
|
|
72
73
|
}), d = [];
|
|
73
74
|
for (let n = 0; n < u.length; n += 1) {
|
|
74
75
|
let { jobId: r, signedMessageHash: i } = u[n], { R8: a, S: o } = e.userKeys.signEddsa(BigInt(i));
|
|
75
|
-
d.push(await
|
|
76
|
+
d.push(await h(r, {
|
|
76
77
|
R8: a,
|
|
77
78
|
S: o
|
|
78
79
|
}, t));
|
|
79
80
|
}
|
|
80
81
|
return d;
|
|
81
|
-
},
|
|
82
|
-
let
|
|
83
|
-
if (!
|
|
84
|
-
let p =
|
|
85
|
-
if (m <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${
|
|
82
|
+
}, O = async (e, t, n, r, i) => {
|
|
83
|
+
let o = [n.erc20TokenAddress], s = n.erc20TokenAddress, [l, u] = await Promise.all([y(t, s, o, d.Transact), e.getRandomRelay(t, !0)]);
|
|
84
|
+
if (!u) throw Error(a.RELAYER_NOT_AVAILABLE);
|
|
85
|
+
let p = c(i), m = r - l.flatFee;
|
|
86
|
+
if (m <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${r}, Fee: ${l.flatFee}`);
|
|
86
87
|
let h = [-m];
|
|
87
|
-
return await
|
|
88
|
-
tx: await
|
|
88
|
+
return await S(t, o, h, l), {
|
|
89
|
+
tx: await b(e, {
|
|
89
90
|
chainId: t,
|
|
90
|
-
erc20Addresses:
|
|
91
|
+
erc20Addresses: o,
|
|
91
92
|
amountChanges: h,
|
|
92
93
|
externalAddress: p,
|
|
93
|
-
feeStructure:
|
|
94
|
-
relay:
|
|
94
|
+
feeStructure: l,
|
|
95
|
+
relay: u,
|
|
95
96
|
useBlockedUtxos: !0,
|
|
96
97
|
onTxSubmitLocally: (n) => {
|
|
97
|
-
|
|
98
|
+
x(t, e, n.inputNullifiers?.flat(), n.outCommitments?.flat(), n.encryptedOutputs?.flat());
|
|
98
99
|
},
|
|
99
|
-
submit: { mode:
|
|
100
|
+
submit: { mode: f.Relayer }
|
|
100
101
|
}),
|
|
101
102
|
amountToRecipient: m
|
|
102
103
|
};
|
|
103
|
-
},
|
|
104
|
-
let
|
|
105
|
-
if (!
|
|
106
|
-
let
|
|
107
|
-
mintTo:
|
|
104
|
+
}, k = async (e, n, r, i, o, s) => {
|
|
105
|
+
let c = [r.erc20TokenAddress], { originalDeployer: l } = t[n].contractData;
|
|
106
|
+
if (!l) throw Error("missing data");
|
|
107
|
+
let u = r.erc20TokenAddress, [f, m] = await Promise.all([y(n, u, c, d.Transact, void 0, void 0, {
|
|
108
|
+
mintTo: c[0],
|
|
108
109
|
recipient: o,
|
|
109
110
|
nullifierCount: s
|
|
110
111
|
}), e.getRandomRelay(n, !0)]);
|
|
111
|
-
if (!m) throw Error(
|
|
112
|
-
let h =
|
|
113
|
-
if (h <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${
|
|
112
|
+
if (!m) throw Error(a.RELAYER_NOT_AVAILABLE);
|
|
113
|
+
let h = i - f.flatFee;
|
|
114
|
+
if (h <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${i}, Fee: ${f.flatFee}`);
|
|
114
115
|
let g = [-h];
|
|
115
|
-
return g[0] -=
|
|
116
|
-
tx: await
|
|
116
|
+
return g[0] -= f.flatFee, {
|
|
117
|
+
tx: await C(e, {
|
|
117
118
|
chainId: n,
|
|
118
|
-
mintAddresses:
|
|
119
|
+
mintAddresses: c,
|
|
119
120
|
amountChanges: g,
|
|
120
121
|
relayAddress: m,
|
|
121
122
|
recipient: o,
|
|
@@ -123,45 +124,51 @@ var S = 6, C = async (e, n, i, s) => {
|
|
|
123
124
|
functionName: "transact",
|
|
124
125
|
accounts: {
|
|
125
126
|
recipient: o,
|
|
126
|
-
mint:
|
|
127
|
+
mint: c[0] === "11111111111111111111111111111111" ? void 0 : c[0]
|
|
127
128
|
},
|
|
128
|
-
relayerFee:
|
|
129
|
-
variableRate:
|
|
129
|
+
relayerFee: f.flatFee,
|
|
130
|
+
variableRate: f.variableRate,
|
|
130
131
|
useBlockedUtxos: !0,
|
|
131
132
|
onTxSubmitLocally: ({ inputNullifiers: t, outCommitments: r, encryptedOutputs: i }) => {
|
|
132
|
-
|
|
133
|
+
x(n, e, t, r, i);
|
|
133
134
|
},
|
|
134
|
-
submit: { mode:
|
|
135
|
+
submit: { mode: p.Relayer }
|
|
135
136
|
}),
|
|
136
137
|
amountToRecipient: h
|
|
137
138
|
};
|
|
138
|
-
},
|
|
139
|
-
|
|
139
|
+
}, A = async (t, n, r, i, a, o) => e(n) ? k(t, n, r, i, a, o) : O(t, n, r, i, a), j = async (e, t, r) => {
|
|
140
|
+
try {
|
|
141
|
+
return ((await e.getStuckShieldedBalances([t])).get(t) ?? []).find((e) => n(e.token.erc20TokenAddress, r.erc20TokenAddress))?.balance ?? 0n;
|
|
142
|
+
} catch (e) {
|
|
143
|
+
return s.error("Failed to read stuck balance after an empty stuck withdrawal", e), 0n;
|
|
144
|
+
}
|
|
145
|
+
}, M = async (t, n, c) => {
|
|
146
|
+
let l = m([n]);
|
|
140
147
|
if (t.generateProofRemotely) {
|
|
141
|
-
let
|
|
142
|
-
if (!
|
|
143
|
-
return
|
|
148
|
+
let r = e(l) ? await D(t, l, n, c) : await T(t, l, n, c);
|
|
149
|
+
if (!r.length) throw await j(t, l, n) > 0n ? Error(i.INSUFFICIENT_FUNDS_FOR_RECOVERY_FEES) : Error(a.NO_STUCK_BALANCE_TO_WITHDRAW);
|
|
150
|
+
return r;
|
|
144
151
|
}
|
|
145
|
-
let
|
|
146
|
-
await t.resetMerkleTreesIfNecessary([
|
|
147
|
-
let p = ((await
|
|
152
|
+
let d = [], f = o(l, n.erc20TokenAddress);
|
|
153
|
+
await t.resetMerkleTreesIfNecessary([l]);
|
|
154
|
+
let p = ((await u({
|
|
148
155
|
hinkal: t,
|
|
149
156
|
sliceIfMore6: !1,
|
|
150
157
|
useBlockedUtxos: !0,
|
|
151
|
-
chainId:
|
|
152
|
-
}))?.get(
|
|
153
|
-
if (!p.length) throw Error(
|
|
154
|
-
for (let e = 0; e < p.length; e +=
|
|
155
|
-
let
|
|
158
|
+
chainId: l
|
|
159
|
+
}))?.get(f) ?? []).filter((e) => e.amount > 0n).sort((e, t) => Number(t.amount - e.amount));
|
|
160
|
+
if (!p.length) throw Error(a.NO_STUCK_BALANCE_TO_WITHDRAW);
|
|
161
|
+
for (let e = 0; e < p.length; e += w) {
|
|
162
|
+
let i = p.slice(e, e + w), a = r(i);
|
|
156
163
|
try {
|
|
157
|
-
let { tx: e } = await
|
|
158
|
-
|
|
164
|
+
let { tx: e } = await A(t, l, n, a, c, i.length);
|
|
165
|
+
d.push(e);
|
|
159
166
|
} catch (e) {
|
|
160
|
-
if (!
|
|
161
|
-
return
|
|
167
|
+
if (!d.length) throw e;
|
|
168
|
+
return s.error(`Stuck withdrawal partially submitted (${d.length}/${Math.ceil(p.length / w)})`, e), d;
|
|
162
169
|
}
|
|
163
170
|
}
|
|
164
|
-
return
|
|
171
|
+
return d;
|
|
165
172
|
};
|
|
166
173
|
//#endregion
|
|
167
|
-
export {
|
|
174
|
+
export { M as hinkalWithdrawStuckUtxos };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../../types/activities.types.cjs`),r=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`),require(`../../error-handling/index.cjs`);const i=require(`../../constants/tx-confirmation.constants.cjs`),a=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);const o=require(`../../functions/utils/aggregateTokenAmounts.cjs`);let s=require(`idb-keyval`);var c=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,s.get)(r.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(e){let{from:t,to:i,gasInDollar:a,extraNativeTokenFee:c,chainId:l,status:u,txHash:d,activityType:f,tokensReceive:p,tokensSpend:m,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b}=e,x=this.generateTxId(),S=m?.length?o.aggregateTokensBySymbol(m):[],C=p?.length?o.aggregateTokensBySymbol(p):[],w={id:x,from:t,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:c?.toString(),chainId:l,txHash:d,activityType:f,status:u??n.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:C,tokensSpend:S,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b};return await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(e={})=>(e[x]=w,e)),x}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,t){let n=await this.getTxRequest(e);if(!n)throw Error(`Activity not found`);let i={...n,txHash:t};await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,t,n){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:t,txHash:n,timestamp:new Date};return await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,n,r){try{await this.updateTxStatusAndHash(e,n,r)}catch(e){t.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,s.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){t.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(r,o,s,c){try{let t=await this.getTxRequest(o);if(!t)throw Error(`Transaction not found`);let{chainId:l}=t;if(!r.success){c?.(r.error),await this.updateActivity(o,n.ActivityStatus.FAILED,`erroredTx`in r?r.erroredTx:void 0);return}if(`txHash`in r){let{txHash:t}=r;try{await a.waitForTransactionConfirmation(l,t,{evmTimeoutMs:i.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(r){let i=r instanceof Error?r:Error(e.transactionErrorCodes.UNKNOWN);c?.(i),await this.updateActivity(o,n.ActivityStatus.FAILED,t);return}s?.(),await this.updateActivity(o,n.ActivityStatus.SUCCESSFUL,t)}}catch(e){t.Logger.error(`error in updating pending transactions`,e)}}},l=new c;exports.ActivityStorage=c,exports.activityStorage=l;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { transactionErrorCodes as e } from "../../error-handling/error-codes.constants.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Logger as t } from "../../error-handling/logger.mjs";
|
|
3
|
+
import { ActivityStatus as n } from "../../types/activities.types.mjs";
|
|
4
|
+
import { StorageKeys as r } from "../../types/cache.types.mjs";
|
|
4
5
|
import "../../types/index.mjs";
|
|
5
|
-
import { Logger as r } from "../../error-handling/logger.mjs";
|
|
6
6
|
import "../../error-handling/index.mjs";
|
|
7
7
|
import { RELAYER_TX_CONFIRMATION_TIMEOUT as i } from "../../constants/tx-confirmation.constants.mjs";
|
|
8
8
|
import { waitForTransactionConfirmation as a } from "../../functions/utils/tx-confirmation.utils.mjs";
|
|
@@ -15,19 +15,19 @@ var l = class {
|
|
|
15
15
|
return `tx_${(/* @__PURE__ */ new Date()).getTime()}_${Math.random().toString(36).substring(2, 15)}`;
|
|
16
16
|
}
|
|
17
17
|
async getTransactionRecord() {
|
|
18
|
-
return await s(
|
|
18
|
+
return await s(r.TX_ACTIVITY) || {};
|
|
19
19
|
}
|
|
20
20
|
async saveTxRequest(e) {
|
|
21
|
-
let { from:
|
|
21
|
+
let { from: t, to: i, gasInDollar: a, extraNativeTokenFee: s, chainId: l, status: u, txHash: d, activityType: f, tokensReceive: p, tokensSpend: m, tokensApprove: h, activityIcon: g, dappUrl: _, dappName: v, integrationProvider: y, knownPartialSignature: b } = e, x = this.generateTxId(), S = m?.length ? o(m) : [], C = p?.length ? o(p) : [], w = {
|
|
22
22
|
id: x,
|
|
23
|
-
from:
|
|
23
|
+
from: t,
|
|
24
24
|
to: i,
|
|
25
25
|
gasInDollar: a?.toString(),
|
|
26
26
|
extraNativeTokenFee: s?.toString(),
|
|
27
27
|
chainId: l,
|
|
28
28
|
txHash: d,
|
|
29
29
|
activityType: f,
|
|
30
|
-
status: u ??
|
|
30
|
+
status: u ?? n.PENDING,
|
|
31
31
|
timestamp: /* @__PURE__ */ new Date(),
|
|
32
32
|
tokensReceive: C,
|
|
33
33
|
tokensSpend: S,
|
|
@@ -38,7 +38,7 @@ var l = class {
|
|
|
38
38
|
integrationProvider: y,
|
|
39
39
|
knownPartialSignature: b
|
|
40
40
|
};
|
|
41
|
-
return await c(
|
|
41
|
+
return await c(r.TX_ACTIVITY, (e = {}) => (e[x] = w, e)), x;
|
|
42
42
|
}
|
|
43
43
|
async getTxRequest(e) {
|
|
44
44
|
return (await this.getTransactionRecord())[e] || null;
|
|
@@ -48,61 +48,61 @@ var l = class {
|
|
|
48
48
|
return Object.values(t).filter((t) => t.chainId === e).sort((e, t) => new Date(t.timestamp).getTime() - new Date(e.timestamp).getTime());
|
|
49
49
|
}
|
|
50
50
|
async updateTxHash(e, t) {
|
|
51
|
-
let
|
|
52
|
-
if (!
|
|
51
|
+
let n = await this.getTxRequest(e);
|
|
52
|
+
if (!n) throw Error("Activity not found");
|
|
53
53
|
let i = {
|
|
54
|
-
...
|
|
54
|
+
...n,
|
|
55
55
|
txHash: t
|
|
56
56
|
};
|
|
57
|
-
await c(
|
|
57
|
+
await c(r.TX_ACTIVITY, (t = {}) => (t[e] = i, t));
|
|
58
58
|
}
|
|
59
|
-
async updateTxStatusAndHash(e, t,
|
|
59
|
+
async updateTxStatusAndHash(e, t, n) {
|
|
60
60
|
let i = await this.getTxRequest(e);
|
|
61
61
|
if (!i) throw Error("Transaction not found");
|
|
62
62
|
let a = {
|
|
63
63
|
...i,
|
|
64
64
|
status: t,
|
|
65
|
-
txHash:
|
|
65
|
+
txHash: n,
|
|
66
66
|
timestamp: /* @__PURE__ */ new Date()
|
|
67
67
|
};
|
|
68
|
-
return await c(
|
|
68
|
+
return await c(r.TX_ACTIVITY, (t = {}) => (t[e] = a, t)), a;
|
|
69
69
|
}
|
|
70
|
-
async updateActivity(e,
|
|
70
|
+
async updateActivity(e, n, r) {
|
|
71
71
|
try {
|
|
72
|
-
await this.updateTxStatusAndHash(e,
|
|
72
|
+
await this.updateTxStatusAndHash(e, n, r);
|
|
73
73
|
} catch (e) {
|
|
74
|
-
|
|
74
|
+
t.error("error in updating tx request", e);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
async removePendingTransactions(e) {
|
|
78
78
|
try {
|
|
79
|
-
await c(
|
|
79
|
+
await c(r.TX_ACTIVITY, (t = {}) => (delete t[e], t));
|
|
80
80
|
} catch (e) {
|
|
81
|
-
|
|
81
|
+
t.error("error in deleting tx requests", e);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
async updatePendingTransactions(
|
|
84
|
+
async updatePendingTransactions(r, o, s, c) {
|
|
85
85
|
try {
|
|
86
|
-
let
|
|
87
|
-
if (!
|
|
88
|
-
let { chainId: l } =
|
|
89
|
-
if (!
|
|
90
|
-
c?.(
|
|
86
|
+
let t = await this.getTxRequest(o);
|
|
87
|
+
if (!t) throw Error("Transaction not found");
|
|
88
|
+
let { chainId: l } = t;
|
|
89
|
+
if (!r.success) {
|
|
90
|
+
c?.(r.error), await this.updateActivity(o, n.FAILED, "erroredTx" in r ? r.erroredTx : void 0);
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
|
-
if ("txHash" in
|
|
94
|
-
let { txHash:
|
|
93
|
+
if ("txHash" in r) {
|
|
94
|
+
let { txHash: t } = r;
|
|
95
95
|
try {
|
|
96
|
-
await a(l,
|
|
97
|
-
} catch (
|
|
98
|
-
let i =
|
|
99
|
-
c?.(i), await this.updateActivity(o,
|
|
96
|
+
await a(l, t, { evmTimeoutMs: i });
|
|
97
|
+
} catch (r) {
|
|
98
|
+
let i = r instanceof Error ? r : Error(e.UNKNOWN);
|
|
99
|
+
c?.(i), await this.updateActivity(o, n.FAILED, t);
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
|
-
s?.(), await this.updateActivity(o,
|
|
102
|
+
s?.(), await this.updateActivity(o, n.SUCCESSFUL, t);
|
|
103
103
|
}
|
|
104
104
|
} catch (e) {
|
|
105
|
-
|
|
105
|
+
t.error("error in updating pending transactions", e);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}, u = new l();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./key-val-store.cjs`),require(`./activity-db.cjs`),require(`./balances-db.cjs`),require(`./private-balances-db.cjs`),require(`./prices-db.cjs`),require(`./contact-db.cjs`),require(`./signatures-db.cjs`),require(`./pay-activity-db.cjs`);
|
|
1
|
+
require(`./key-val-store.cjs`),require(`./activity-db.cjs`),require(`./balances-db.cjs`),require(`./private-balances-db.cjs`),require(`./prices-db.cjs`),require(`./contact-db.cjs`),require(`./signatures-db.cjs`),require(`./pay-activity-db.cjs`),require(`./scheduled-transactions-db.cjs`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../../functions/utils/tron.utils.cjs`);const e=require(`../../types/cache.types.cjs`),t=require(`./key-val-store.cjs`);new class{scheduledTransactionsRecordLabel=e.StorageKeys.SCHEDULED_TRANSACTIONS;async getAll(){return t.keyValStore.get(this.scheduledTransactionsRecordLabel)}async getByAddress(e){let t=await this.getAll();return t?t[e]??[]:[]}async saveScheduledTransaction(e,n){await t.keyValStore.update(this.scheduledTransactionsRecordLabel,(t={})=>({...t,[e]:[...t[e]??[],n]}))}async updateLegs(e,n,r){await t.keyValStore.update(this.scheduledTransactionsRecordLabel,(t={})=>({...t,[e]:(t[e]??[]).map(e=>e.scheduleId===n?{...e,legs:e.legs.map((e,t)=>r[t]?{...e,status:r[t].status,scheduledTime:r[t].scheduledTime,txHash:r[t].txHash}:e)}:e)}))}};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ScheduledTransactionCacheEntry, ScheduledTransactionItemStatus } from '../../types/scheduled-transactions.types';
|
|
2
|
+
export declare const getScheduledTransactionCacheAddressKey: (address: string, isSignedIn: boolean, isSolana: boolean) => string;
|
|
3
|
+
declare class ScheduledTransactionsStorage {
|
|
4
|
+
private readonly scheduledTransactionsRecordLabel;
|
|
5
|
+
private getAll;
|
|
6
|
+
getByAddress(addressKey: string): Promise<ScheduledTransactionCacheEntry[]>;
|
|
7
|
+
saveScheduledTransaction(addressKey: string, entry: ScheduledTransactionCacheEntry): Promise<void>;
|
|
8
|
+
updateLegs(addressKey: string, scheduleId: string, polledLegs: ScheduledTransactionItemStatus[]): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const scheduledTransactionsStorage: ScheduledTransactionsStorage;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import "../../functions/utils/tron.utils.mjs";
|
|
2
|
+
import { StorageKeys as e } from "../../types/cache.types.mjs";
|
|
3
|
+
import { keyValStore as t } from "./key-val-store.mjs";
|
|
4
|
+
new class {
|
|
5
|
+
scheduledTransactionsRecordLabel = e.SCHEDULED_TRANSACTIONS;
|
|
6
|
+
async getAll() {
|
|
7
|
+
return t.get(this.scheduledTransactionsRecordLabel);
|
|
8
|
+
}
|
|
9
|
+
async getByAddress(e) {
|
|
10
|
+
let t = await this.getAll();
|
|
11
|
+
return t ? t[e] ?? [] : [];
|
|
12
|
+
}
|
|
13
|
+
async saveScheduledTransaction(e, n) {
|
|
14
|
+
await t.update(this.scheduledTransactionsRecordLabel, (t = {}) => ({
|
|
15
|
+
...t,
|
|
16
|
+
[e]: [...t[e] ?? [], n]
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
async updateLegs(e, n, r) {
|
|
20
|
+
await t.update(this.scheduledTransactionsRecordLabel, (t = {}) => ({
|
|
21
|
+
...t,
|
|
22
|
+
[e]: (t[e] ?? []).map((e) => e.scheduleId === n ? {
|
|
23
|
+
...e,
|
|
24
|
+
legs: e.legs.map((e, t) => r[t] ? {
|
|
25
|
+
...e,
|
|
26
|
+
status: r[t].status,
|
|
27
|
+
scheduledTime: r[t].scheduledTime,
|
|
28
|
+
txHash: r[t].txHash
|
|
29
|
+
} : e)
|
|
30
|
+
} : e)
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
}();
|
|
34
|
+
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../error-handling/logger.cjs`),t=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`),require(`../../error-handling/index.cjs`);let n=require(`idb-keyval`);new class{generateMessageId(){return`msg_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async saveSignedMessage(r,i,a,o,s,c){try{let e=this.generateMessageId(),l=await(0,n.get)(t.StorageKeys.SIGNED_MESSAGES)||{},u={chainId:r,messageText:i,messageType:a,subAccountAddress:o,signature:s,appMetaData:c};l[e]={timestamp:new Date().toISOString(),...u},await(0,n.set)(t.StorageKeys.SIGNED_MESSAGES,l)}catch(t){e.Logger.error(`Failed to save signed message:`,t,{chainId:r,messageType:a})}}async getAllSignedMessages(){try{let e=await(0,n.get)(t.StorageKeys.SIGNED_MESSAGES)||{};return Object.values(e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}catch(t){return e.Logger.error(`Failed to retrieve signed messages:`,t),[]}}};
|