@hinkal/common 0.3.13 → 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 +0 -2
- package/common/src/API/API.mjs +92 -94
- 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 -1
- package/common/src/API/evm-token-assets.mjs +2 -13
- 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 +1 -0
- package/common/src/API/index.mjs +1 -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 -1
- package/common/src/API/receiveVaultCalls.d.ts +4 -2
- package/common/src/API/receiveVaultCalls.mjs +8 -4
- 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/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-arcTestnet.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +3 -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 +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-polygon.json.cjs +1 -1
- package/common/src/constants/deploy-data/deploy-data-polygon.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 +2 -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 +1 -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 +1 -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 +1 -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 +1 -1
- 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 +0 -2
- 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 +8 -6
- package/common/src/constants/server.constants.mjs +8 -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 +4 -4
- package/common/src/data-structures/Hinkal/Hinkal.mjs +37 -37
- package/common/src/data-structures/Hinkal/IHinkal.d.ts +4 -4
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +5 -5
- 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/hinkalDepositAndBridge.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +55 -54
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +60 -57
- 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.utils.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +7 -15
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +2 -2
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +24 -28
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +47 -40
- package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +22 -42
- 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 +15 -15
- 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 +47 -45
- 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/hinkalWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +35 -26
- package/common/src/data-structures/Hinkal/index.d.ts +1 -0
- package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
- package/common/src/data-structures/Hinkal/resetMerkleTrees.mjs +13 -13
- package/common/src/error-handling/error-codes.constants.cjs +1 -1
- package/common/src/error-handling/error-codes.constants.d.ts +2 -0
- package/common/src/error-handling/error-codes.constants.mjs +2 -0
- package/common/src/error-handling/get-error.message.cjs +1 -1
- package/common/src/error-handling/get-error.message.mjs +10 -1
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +6 -2
- package/common/src/functions/pre-transaction/addressTableLookup.d.ts +1 -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/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/fetchOnChainRootHashes.cjs +1 -1
- package/common/src/functions/snarkjs/fetchOnChainRootHashes.mjs +6 -6
- 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/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/getUtxosFromReceiptSolana.d.ts +9 -4
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.d.ts +4 -0
- package/common/src/functions/utils/index.mjs +5 -1
- 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 -1
- package/common/src/functions/utils/receive-vault-account.utils.d.ts +2 -1
- package/common/src/functions/utils/receive-vault-account.utils.mjs +16 -15
- package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -1
- package/common/src/functions/utils/receive-vault-scan.utils.mjs +37 -42
- 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 -2
- package/common/src/functions/utils/receive-vault.utils.d.ts +13 -11
- package/common/src/functions/utils/receive-vault.utils.mjs +97 -82
- package/common/src/functions/utils/token-check.utils.d.ts +1 -0
- package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -1
- package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +5 -0
- package/common/src/functions/utils/wallet-token-discovery.utils.mjs +25 -31
- 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.d.ts +1 -0
- package/common/src/types/external-action.types.cjs +1 -1
- package/common/src/types/external-action.types.d.ts +2 -1
- package/common/src/types/external-action.types.mjs +1 -1
- package/common/src/types/receive-vault.types.cjs +1 -1
- package/common/src/types/receive-vault.types.d.ts +15 -20
- package/common/src/types/receive-vault.types.mjs +4 -2
- package/common/src/webworker/{logError-BeXPKuv9.js → logError-C-ej_TX9.js} +1 -1
- package/common/src/webworker/package.json +1 -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 +1 -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 +6 -2
- package/services/Hinkal.mjs +74 -51
- package/types/IHinkal.d.ts +6 -1
- 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-DF35H7vU.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../crypto/poseidon.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../AccountActions/AccountActions.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),_=require(`../../functions/private-wallet/emporium.helpers.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`./hinkalTransact.cjs`),b=require(`../../constants/addresses.constants.cjs`),x=require(`../../functions/utils/admin-dimensions.cjs`),S=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`);require(`../../functions/utils/index.cjs`);const C=require(`./hinkalDepositOnChainUtxos.cjs`);var w=async(o,u,m,h,v,S,C,w)=>{if(h.length===0)throw Error(`No recipients to bridge`);let T=m.erc20TokenAddress,{contractData:E}=e.networkRegistry[u],{emporiumAddress:D}=E;if(!D)throw Error(`No Emporium Address`);let O=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][u];if(!O)throw Error(`LIFI not configured for chain ${u}`);let k=await o.getRandomRelay(u);if(!k)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let A=await o.getEthereumAddressByChain(u),j=o.generateProofRemotely,M=j?5:1,N=[];for(let i=0;i<h.length;i+=M){let b=h.slice(i,i+M),E=await Promise.all(b.map(async({utxo:h,nativeUtxo:b,bridgeAmount:E,quote:M,temporarySubAccount:N,recipientAddress:P,destinationChainId:F,destinationTokenAddress:I},L)=>{let R=v[i+L];await l.API.addTemporaryWalletNonce(u,S,N.index);let z=n.caseInsensitiveEqual(T,t.zeroAddress),B=M.nativeFee>0n&&!z,V=[T],H=[-h.amount],U=[!1],W=[[h]];B&&b&&(V.push(t.zeroAddress),H.push(-b.amount),U.push(!1),W.push([b]));let G=_.createLifiBridgeOps(o,u,N.ethAddress,O,T,h.amount,E,M),K=I?await d.getErc20TokenFromAPI(F??u,I):void 0,q=x.resolveSwapPairTokens(C,[m],K),J=f.constructAdminData(C,u,V,[-h.amount],A,q),[Y,X]=await Promise.all([(async()=>{let n=a.randomBigInt(31),i=j?await _.encodeEmporiumMetadata(u,D,N.privateKey,G,r.poseidonFunction(n),p.AccountActions.getSignerAddressFromPrivateKey(e.getOnchainChainId(u),N.privateKey),R.flatFee):void 0;return y.hinkalTransact(o,{chainId:u,erc20Addresses:V,amountChanges:H,externalAddress:D,externalActionId:s.ExternalActionId.Emporium,externalActionMetadata:i,onChainCreation:U,feeStructure:R,relay:k??t.zeroAddress,messageSeed:n,inputUtxos:W,useBlockedUtxos:!0,speculative:w&&{pendingLeaves:w,inputUtxos:W.map(e=>e.map(g.toSpeculativeUtxo))},subAccountPrivateKey:N.privateKey,emporiumOps:G,submit:{mode:c.SubmitMode.ProofOnly}})})(),_.getAuthorizationDataIfNeeded(u,N.privateKey)]),{zkCallData:Z,circomData:Q,dimData:$,commitmentValidationData:ee,tronProofSignature:te}=Y;return{zkCallData:Z,dimData:$,circomData:Q,commitmentValidationData:ee,authorizationData:X,recipientAddress:P,adminData:J,tronProofSignature:te,destinationChainId:F,destinationTokenAddress:I,destinationTokenAmount:M.expectedAmount.toString()}}));N.push(...E)}return N},T=e=>e.map(e=>e.quote.nativeFee),E=async(e,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructures:s,mainTokenAmounts:c}=i,{needsNativeDeposit:l,txCompletionTime:u,ref:f,action:p,hashedDashboardAccountId:m,preEstimateGas:h}=i,g=[n],_=[c];if(l){let e=await d.getErc20TokenFromAPI(a,t.zeroAddress);if(!e)throw Error(`No native token`);g.push(e),_.push(T(r))}let y=await C.prepareDepositOnChainUtxos(e,a,g,_),{depositedUtxos:b,pendingLeaves:x}=y,[S,E=[]]=b,D=r.map((e,t)=>({...e,utxo:S[t],nativeUtxo:l?E[t]:void 0})),[O,k]=await Promise.all([C.submitDepositOnChainUtxos(e,y,h),w(e,a,n,D,s,o,p,x)]);return{depositTxHash:O,scheduleId:await v.transactCallRelayerBatch(a,k,o,u,f,m,O)}},D=async(e,r,i,a,c,l,d,f,p=!0)=>{if(i.length===0)throw Error(`No recipients to bridge`);let g=r.erc20TokenAddress,v=u.validateAndGetChainId([r]),y=await e.getEthereumAddressByChain(v),x=b.SWAP_ROUTER_ADDRESSES[s.ExternalActionId.Lifi][v];if(!x)throw Error(`LIFI router not configured`);let C=n.caseInsensitiveEqual(g,t.zeroAddress),w;if(c)w=c;else{let n=i[0],r=C?n.bridgeAmount+n.quote.nativeFee:n.bridgeAmount,a=_.createLifiBridgeOps(e,v,n.temporarySubAccount.ethAddress,x,g,r,n.bridgeAmount,n.quote).map(e=>S.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,v));w=await m.getFeeStructure(v,g,[g],s.ExternalActionId.Emporium,a,t.PAY_SEND_VARIABLE_RATE)}let T=i.reduce((e,t)=>e+t.quote.nativeFee,0n),D=i.map(e=>C?e.bridgeAmount+e.quote.nativeFee:e.bridgeAmount),O=await Promise.all(D.map(e=>h.calculateModifiedFeeStructure(v,r,e,w)));return E(e,r,i,{chainId:v,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructures:O,mainTokenAmounts:D.map((e,t)=>e+O[t].flatFee),needsNativeDeposit:T>0n&&!C,txCompletionTime:a,ref:l,action:d,hashedDashboardAccountId:f?o.hashString(f):void 0,preEstimateGas:p})};exports.hinkalDepositAndBridge=D;
|
|
@@ -19,100 +19,101 @@ import { createLifiBridgeOps as b, encodeEmporiumMetadata as x, getAuthorization
|
|
|
19
19
|
import { transactCallRelayerBatch as C } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
20
20
|
import { hinkalTransact as w } from "./hinkalTransact.mjs";
|
|
21
21
|
import { SWAP_ROUTER_ADDRESSES as T } from "../../constants/addresses.constants.mjs";
|
|
22
|
-
import {
|
|
22
|
+
import { resolveSwapPairTokens as E } from "../../functions/utils/admin-dimensions.mjs";
|
|
23
|
+
import { convertEmporiumOpToCallInfo as D } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
|
|
23
24
|
import "../../functions/utils/index.mjs";
|
|
24
|
-
import { prepareDepositOnChainUtxos as
|
|
25
|
+
import { prepareDepositOnChainUtxos as O, submitDepositOnChainUtxos as k } from "./hinkalDepositOnChainUtxos.mjs";
|
|
25
26
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndBridge.ts
|
|
26
|
-
var
|
|
27
|
+
var A = async (n, c, l, p, _, v, C, D) => {
|
|
27
28
|
if (p.length === 0) throw Error("No recipients to bridge");
|
|
28
|
-
let
|
|
29
|
-
if (!
|
|
30
|
-
let
|
|
31
|
-
if (!
|
|
32
|
-
let
|
|
33
|
-
if (!
|
|
34
|
-
let
|
|
35
|
-
for (let t = 0; t < p.length; t +=
|
|
36
|
-
let o = p.slice(t, t +
|
|
37
|
-
let
|
|
38
|
-
await f.addTemporaryWalletNonce(c,
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
let
|
|
42
|
-
let t = s(31), i =
|
|
29
|
+
let O = l.erc20TokenAddress, { contractData: k } = t[c], { emporiumAddress: A } = k;
|
|
30
|
+
if (!A) throw Error("No Emporium Address");
|
|
31
|
+
let j = T[u.Lifi][c];
|
|
32
|
+
if (!j) throw Error(`LIFI not configured for chain ${c}`);
|
|
33
|
+
let M = await n.getRandomRelay(c);
|
|
34
|
+
if (!M) throw Error(o.RELAYER_NOT_AVAILABLE);
|
|
35
|
+
let N = await n.getEthereumAddressByChain(c), P = n.generateProofRemotely, F = P ? 5 : 1, I = [];
|
|
36
|
+
for (let t = 0; t < p.length; t += F) {
|
|
37
|
+
let o = p.slice(t, t + F), T = await Promise.all(o.map(async ({ utxo: o, nativeUtxo: p, bridgeAmount: T, quote: k, temporarySubAccount: F, recipientAddress: I, destinationChainId: L, destinationTokenAddress: R }, z) => {
|
|
38
|
+
let B = _[t + z];
|
|
39
|
+
await f.addTemporaryWalletNonce(c, v, F.index);
|
|
40
|
+
let V = i(O, r), H = k.nativeFee > 0n && !V, U = [O], W = [-o.amount], G = [!1], K = [[o]];
|
|
41
|
+
H && p && (U.push(r), W.push(-p.amount), G.push(!1), K.push([p]));
|
|
42
|
+
let q = b(n, c, F.ethAddress, j, O, o.amount, T, k), J = R ? await m(L ?? c, R) : void 0, Y = E(C, [l], J), X = h(C, c, U, [-o.amount], N, Y), [Z, Q] = await Promise.all([(async () => {
|
|
43
|
+
let t = s(31), i = P ? await x(c, A, F.privateKey, q, a(t), g.getSignerAddressFromPrivateKey(e(c), F.privateKey), B.flatFee) : void 0;
|
|
43
44
|
return w(n, {
|
|
44
45
|
chainId: c,
|
|
45
|
-
erc20Addresses:
|
|
46
|
-
amountChanges:
|
|
47
|
-
externalAddress:
|
|
46
|
+
erc20Addresses: U,
|
|
47
|
+
amountChanges: W,
|
|
48
|
+
externalAddress: A,
|
|
48
49
|
externalActionId: u.Emporium,
|
|
49
50
|
externalActionMetadata: i,
|
|
50
|
-
onChainCreation:
|
|
51
|
-
feeStructure:
|
|
52
|
-
relay:
|
|
51
|
+
onChainCreation: G,
|
|
52
|
+
feeStructure: B,
|
|
53
|
+
relay: M ?? r,
|
|
53
54
|
messageSeed: t,
|
|
54
|
-
inputUtxos:
|
|
55
|
+
inputUtxos: K,
|
|
55
56
|
useBlockedUtxos: !0,
|
|
56
|
-
speculative:
|
|
57
|
-
pendingLeaves:
|
|
58
|
-
inputUtxos:
|
|
57
|
+
speculative: D && {
|
|
58
|
+
pendingLeaves: D,
|
|
59
|
+
inputUtxos: K.map((e) => e.map(y))
|
|
59
60
|
},
|
|
60
|
-
subAccountPrivateKey:
|
|
61
|
-
emporiumOps:
|
|
61
|
+
subAccountPrivateKey: F.privateKey,
|
|
62
|
+
emporiumOps: q,
|
|
62
63
|
submit: { mode: d.ProofOnly }
|
|
63
64
|
});
|
|
64
|
-
})(), S(c,
|
|
65
|
+
})(), S(c, F.privateKey)]), { zkCallData: $, circomData: ee, dimData: te, commitmentValidationData: ne, tronProofSignature: re } = Z;
|
|
65
66
|
return {
|
|
66
|
-
zkCallData:
|
|
67
|
-
dimData:
|
|
68
|
-
circomData:
|
|
69
|
-
commitmentValidationData:
|
|
70
|
-
authorizationData:
|
|
71
|
-
recipientAddress:
|
|
72
|
-
adminData:
|
|
73
|
-
tronProofSignature:
|
|
74
|
-
destinationChainId:
|
|
75
|
-
destinationTokenAddress:
|
|
76
|
-
destinationTokenAmount:
|
|
67
|
+
zkCallData: $,
|
|
68
|
+
dimData: te,
|
|
69
|
+
circomData: ee,
|
|
70
|
+
commitmentValidationData: ne,
|
|
71
|
+
authorizationData: Q,
|
|
72
|
+
recipientAddress: I,
|
|
73
|
+
adminData: X,
|
|
74
|
+
tronProofSignature: re,
|
|
75
|
+
destinationChainId: L,
|
|
76
|
+
destinationTokenAddress: R,
|
|
77
|
+
destinationTokenAmount: k.expectedAmount.toString()
|
|
77
78
|
};
|
|
78
79
|
}));
|
|
79
|
-
|
|
80
|
+
I.push(...T);
|
|
80
81
|
}
|
|
81
|
-
return
|
|
82
|
-
},
|
|
82
|
+
return I;
|
|
83
|
+
}, j = (e) => e.map((e) => e.quote.nativeFee), M = async (e, t, n, i) => {
|
|
83
84
|
let { chainId: a, hashedEthereumAddress: o, feeStructures: s, mainTokenAmounts: c } = i, { needsNativeDeposit: l, txCompletionTime: u, ref: d, action: f, hashedDashboardAccountId: p, preEstimateGas: h } = i, g = [t], _ = [c];
|
|
84
85
|
if (l) {
|
|
85
86
|
let e = await m(a, r);
|
|
86
87
|
if (!e) throw Error("No native token");
|
|
87
|
-
g.push(e), _.push(
|
|
88
|
+
g.push(e), _.push(j(n));
|
|
88
89
|
}
|
|
89
|
-
let v = await
|
|
90
|
+
let v = await O(e, a, g, _), { depositedUtxos: y, pendingLeaves: b } = v, [x, S = []] = y, w = n.map((e, t) => ({
|
|
90
91
|
...e,
|
|
91
92
|
utxo: x[t],
|
|
92
93
|
nativeUtxo: l ? S[t] : void 0
|
|
93
|
-
})), [T, E] = await Promise.all([
|
|
94
|
+
})), [T, E] = await Promise.all([k(e, v, h), A(e, a, t, w, s, o, f, b)]);
|
|
94
95
|
return {
|
|
95
96
|
depositTxHash: T,
|
|
96
97
|
scheduleId: await C(a, E, o, u, d, p, T)
|
|
97
98
|
};
|
|
98
|
-
},
|
|
99
|
+
}, N = async (e, t, a, o, s, d, f, m, h = !0) => {
|
|
99
100
|
if (a.length === 0) throw Error("No recipients to bridge");
|
|
100
101
|
let g = t.erc20TokenAddress, y = p([t]), x = await e.getEthereumAddressByChain(y), S = T[u.Lifi][y];
|
|
101
102
|
if (!S) throw Error("LIFI router not configured");
|
|
102
103
|
let C = i(g, r), w;
|
|
103
104
|
if (s) w = s;
|
|
104
105
|
else {
|
|
105
|
-
let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) =>
|
|
106
|
+
let t = a[0], r = C ? t.bridgeAmount + t.quote.nativeFee : t.bridgeAmount, i = b(e, y, t.temporarySubAccount.ethAddress, S, g, r, t.bridgeAmount, t.quote).map((e) => D(e, t.temporarySubAccount.ethAddress, y));
|
|
106
107
|
w = await _(y, g, [g], u.Emporium, i, n);
|
|
107
108
|
}
|
|
108
|
-
let
|
|
109
|
-
return
|
|
109
|
+
let E = a.reduce((e, t) => e + t.quote.nativeFee, 0n), O = a.map((e) => C ? e.bridgeAmount + e.quote.nativeFee : e.bridgeAmount), k = await Promise.all(O.map((e) => v(y, t, e, w)));
|
|
110
|
+
return M(e, t, a, {
|
|
110
111
|
chainId: y,
|
|
111
112
|
ethereumAddress: x,
|
|
112
113
|
hashedEthereumAddress: c(x),
|
|
113
114
|
feeStructures: k,
|
|
114
115
|
mainTokenAmounts: O.map((e, t) => e + k[t].flatFee),
|
|
115
|
-
needsNativeDeposit:
|
|
116
|
+
needsNativeDeposit: E > 0n && !C,
|
|
116
117
|
txCompletionTime: o,
|
|
117
118
|
ref: d,
|
|
118
119
|
action: f,
|
|
@@ -121,4 +122,4 @@ var k = async (n, c, l, p, m, _, v, C) => {
|
|
|
121
122
|
});
|
|
122
123
|
};
|
|
123
124
|
//#endregion
|
|
124
|
-
export {
|
|
125
|
+
export { N as hinkalDepositAndBridge };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../utxo/Utxo.cjs`),a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/transact.types.cjs`),l=require(`../crypto-keys/encryptDecryptUtxo.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/pre-transaction/speculativeUtxo.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`./hinkalTransact.cjs`),y=require(`../../functions/utils/admin-dimensions.cjs`);require(`../../functions/index.cjs`);const b=require(`./hinkalDepositOnChainUtxos.cjs`);let x=require(`ethers`);var S=async(e,o,s,l,u,p,m,g)=>{if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let _=s.erc20TokenAddress,[b,x]=await Promise.all([e.getRandomRelay(o),e.getEthereumAddressByChain(o)]);if(!b)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let S=e.generateProofRemotely?5:1,C=[],w=a.addressToHexFormat(x);for(let r=0;r<l.length;r+=S){let x=l.slice(r,r+S),T=await Promise.all(x.map(async({recipientAddress:l,utxo:x},S)=>{let C=r+S,T=a.addressToHexFormat(l),E=n.caseInsensitiveEqual(x.erc20TokenAddress,_)?x:i.Utxo.createFrom(x,{erc20TokenAddress:_}),D=m?.tokenAddress?await d.getErc20TokenFromAPI(m.chainId??o,m.tokenAddress):void 0,O=y.resolveSwapPairTokens(p,[s],D),k=f.constructAdminData(p,o,[_],[-x.amount],w,O),{zkCallData:A,circomData:j,dimData:M,commitmentValidationData:N,tronProofSignature:P}=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[_],amountChanges:[-x.amount],externalAddress:T,feeStructure:u,relay:b??t.zeroAddress,inputUtxos:[[E]],useBlockedUtxos:!0,speculative:g&&{pendingLeaves:g,inputUtxos:[[h.toSpeculativeUtxo(E)]]},submit:{mode:c.SubmitMode.ProofOnly},skipLock:!0});return{zkCallData:A,dimData:M,circomData:j,commitmentValidationData:N,adminData:k,recipientAddress:l,tronProofSignature:P,destinationChainId:m?.chainId,destinationTokenAddress:m?.tokenAddress,destinationTokenAmount:m?.tokenAmounts?.[C]}}));C.push(...T)}return C},C=async(e,t,n,r,i)=>{let{chainId:a,hashedEthereumAddress:o,feeStructure:s,action:c,destination:l}=i,{txCompletionTime:u,ref:d,hashedDashboardAccountId:f,preEstimateGas:p}=i,h=m.calculateGrossUtxoAmounts(n,s),g=await b.prepareDepositOnChainUtxos(e,a,[t],[h]),{depositedUtxos:v,pendingLeaves:y}=g,x=v[0].map((e,t)=>({recipientAddress:r[t],utxo:e})),[C,w]=await Promise.all([b.submitDepositOnChainUtxos(e,g,p),S(e,a,t,x,s,c,l,y)]);return{depositTxHash:C,scheduleId:await _.transactCallRelayerBatch(a,w,o,u,d,f,C)}},w=async(e,t,n,r,i)=>{let{chainId:o,ethereumAddress:s,hashedEthereumAddress:u,feeStructure:d,action:f,destination:p}=i,{txCompletionTime:h,ref:y,hashedDashboardAccountId:b,preEstimateGas:C}=i,w=m.calculateGrossUtxoAmounts(n,d),T=w.reduce((e,t)=>e+t,0n),E=await v.hinkalTransact(e,{chainId:o,erc20Addresses:[t.erc20TokenAddress],amountChanges:[T],externalAddress:s,selfOutputAmounts:w,createBlockedUtxos:!0,forceEmptyUtxos:!0,submit:{mode:c.SubmitMode.ProofOnly}}),D=E.circomData.encryptedOutputs?.[0];if(!D||D.length!==w.length)throw Error(`Deposit proof is missing encryptedOutputs for the deposited UTXOs`);let O=D.map((t,n)=>({recipientAddress:r[n],utxo:l.decryptUtxo(x.ethers.getBytes(t),e.userKeys)})),k=E.circomData.outCommitments.flat().map(e=>BigInt(e)).filter(e=>e!==0n).map(e=>e.toString()),[A,j]=await Promise.all([(async()=>{a.swapTronBCoordinate(E.zkCallData);let n=await g.transactCallDirectTron(e,o,T,t,E.zkCallData,E.circomData,E.dimData,void 0,void 0,C,E.tronProofSignature);if(!n)throw Error(`Deposit transaction hash not found`);return n})(),S(e,o,t,O,d,f,p,k)]);return{depositTxHash:A,scheduleId:await _.transactCallRelayerBatch(o,j,u,h,y,b,A)}},T=async(t,n,r,i,c,l,d,f,m,h=!0,g)=>{let _=u.validateAndGetChainId([n]),v=n.erc20TokenAddress,y=a.addressToHexFormat(await t.getEthereumAddressByChain(_)),b={chainId:_,ethereumAddress:y,hashedEthereumAddress:o.hashEthereumAddress(y),feeStructure:l??await p.getFeeStructure(_,v,[v],s.ExternalActionId.Transact,[],25n),txCompletionTime:c,ref:d,action:f,hashedDashboardAccountId:m?o.hashString(m):void 0,preEstimateGas:h,destination:g};if(!e.isTronLike(_))return C(t,n,r,i,b);if(r.length>4)throw Error(`Tron supports at most 4 recipients per deposit - no circuit emits more outputs`);return w(t,n,r,i,b)};exports.hinkalDepositAndWithdraw=T;
|
|
@@ -9,105 +9,108 @@ import { ExternalActionId as l } from "../../types/external-action.types.mjs";
|
|
|
9
9
|
import { SubmitMode as u } from "../../types/transact.types.mjs";
|
|
10
10
|
import { decryptUtxo as d } from "../crypto-keys/encryptDecryptUtxo.mjs";
|
|
11
11
|
import { validateAndGetChainId as f } from "../../functions/utils/token-check.utils.mjs";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
12
|
+
import { getErc20TokenFromAPI as p } from "../../functions/utils/erc20tokenFunctions.mjs";
|
|
13
|
+
import { constructAdminData as m } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
14
|
+
import { getFeeStructure as h } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
15
|
+
import { calculateGrossUtxoAmounts as g } from "../../functions/utils/fees.utils.mjs";
|
|
16
|
+
import { toSpeculativeUtxo as _ } from "../../functions/pre-transaction/speculativeUtxo.mjs";
|
|
17
|
+
import { transactCallDirectTron as v } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
|
|
18
|
+
import { transactCallRelayerBatch as y } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
19
|
+
import { hinkalTransact as b } from "./hinkalTransact.mjs";
|
|
20
|
+
import { resolveSwapPairTokens as x } from "../../functions/utils/admin-dimensions.mjs";
|
|
18
21
|
import "../../functions/index.mjs";
|
|
19
|
-
import { prepareDepositOnChainUtxos as
|
|
20
|
-
import { ethers as
|
|
22
|
+
import { prepareDepositOnChainUtxos as S, submitDepositOnChainUtxos as C } from "./hinkalDepositOnChainUtxos.mjs";
|
|
23
|
+
import { ethers as w } from "ethers";
|
|
21
24
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.ts
|
|
22
|
-
var
|
|
25
|
+
var T = async (e, o, s, c, l, d, f, h) => {
|
|
23
26
|
if (c.length === 0) throw Error("userDepositedUtxos must not be empty");
|
|
24
|
-
let g = s.erc20TokenAddress, [
|
|
25
|
-
if (!
|
|
26
|
-
let
|
|
27
|
-
for (let r = 0; r < c.length; r +=
|
|
28
|
-
let
|
|
29
|
-
let
|
|
27
|
+
let g = s.erc20TokenAddress, [v, y] = await Promise.all([e.getRandomRelay(o), e.getEthereumAddressByChain(o)]);
|
|
28
|
+
if (!v) throw Error(r.RELAYER_NOT_AVAILABLE);
|
|
29
|
+
let S = e.generateProofRemotely ? 5 : 1, C = [], w = a(y);
|
|
30
|
+
for (let r = 0; r < c.length; r += S) {
|
|
31
|
+
let y = c.slice(r, r + S), T = await Promise.all(y.map(async ({ recipientAddress: c, utxo: y }, S) => {
|
|
32
|
+
let C = r + S, T = a(c), E = n(y.erc20TokenAddress, g) ? y : i.createFrom(y, { erc20TokenAddress: g }), D = f?.tokenAddress ? await p(f.chainId ?? o, f.tokenAddress) : void 0, O = x(d, [s], D), k = m(d, o, [g], [-y.amount], w, O), { zkCallData: A, circomData: j, dimData: M, commitmentValidationData: N, tronProofSignature: P } = await b(e, {
|
|
30
33
|
chainId: o,
|
|
31
34
|
erc20Addresses: [g],
|
|
32
|
-
amountChanges: [-
|
|
33
|
-
externalAddress:
|
|
35
|
+
amountChanges: [-y.amount],
|
|
36
|
+
externalAddress: T,
|
|
34
37
|
feeStructure: l,
|
|
35
|
-
relay:
|
|
36
|
-
inputUtxos: [[
|
|
38
|
+
relay: v ?? t,
|
|
39
|
+
inputUtxos: [[E]],
|
|
37
40
|
useBlockedUtxos: !0,
|
|
38
|
-
speculative:
|
|
39
|
-
pendingLeaves:
|
|
40
|
-
inputUtxos: [[
|
|
41
|
+
speculative: h && {
|
|
42
|
+
pendingLeaves: h,
|
|
43
|
+
inputUtxos: [[_(E)]]
|
|
41
44
|
},
|
|
42
45
|
submit: { mode: u.ProofOnly },
|
|
43
46
|
skipLock: !0
|
|
44
47
|
});
|
|
45
48
|
return {
|
|
46
|
-
zkCallData:
|
|
47
|
-
dimData:
|
|
48
|
-
circomData:
|
|
49
|
-
commitmentValidationData:
|
|
50
|
-
adminData:
|
|
51
|
-
recipientAddress:
|
|
52
|
-
tronProofSignature:
|
|
49
|
+
zkCallData: A,
|
|
50
|
+
dimData: M,
|
|
51
|
+
circomData: j,
|
|
52
|
+
commitmentValidationData: N,
|
|
53
|
+
adminData: k,
|
|
54
|
+
recipientAddress: c,
|
|
55
|
+
tronProofSignature: P,
|
|
53
56
|
destinationChainId: f?.chainId,
|
|
54
57
|
destinationTokenAddress: f?.tokenAddress,
|
|
55
|
-
destinationTokenAmount: f?.tokenAmounts?.[
|
|
58
|
+
destinationTokenAmount: f?.tokenAmounts?.[C]
|
|
56
59
|
};
|
|
57
60
|
}));
|
|
58
|
-
|
|
61
|
+
C.push(...T);
|
|
59
62
|
}
|
|
60
|
-
return
|
|
61
|
-
},
|
|
62
|
-
let { chainId: a, hashedEthereumAddress: o, feeStructure: s, action: c, destination: l } = i, { txCompletionTime: u, ref: d, hashedDashboardAccountId: f, preEstimateGas: p } = i, m = n
|
|
63
|
+
return C;
|
|
64
|
+
}, E = async (e, t, n, r, i) => {
|
|
65
|
+
let { chainId: a, hashedEthereumAddress: o, feeStructure: s, action: c, destination: l } = i, { txCompletionTime: u, ref: d, hashedDashboardAccountId: f, preEstimateGas: p } = i, m = g(n, s), h = await S(e, a, [t], [m]), { depositedUtxos: _, pendingLeaves: v } = h, b = _[0].map((e, t) => ({
|
|
63
66
|
recipientAddress: r[t],
|
|
64
67
|
utxo: e
|
|
65
|
-
})), [
|
|
68
|
+
})), [x, w] = await Promise.all([C(e, h, p), T(e, a, t, b, s, c, l, v)]);
|
|
66
69
|
return {
|
|
67
|
-
depositTxHash:
|
|
68
|
-
scheduleId: await
|
|
70
|
+
depositTxHash: x,
|
|
71
|
+
scheduleId: await y(a, w, o, u, d, f, x)
|
|
69
72
|
};
|
|
70
|
-
},
|
|
71
|
-
let { chainId: a, ethereumAddress: s, hashedEthereumAddress: c, feeStructure: l, action: f, destination: p } = i, { txCompletionTime: m, ref: h, hashedDashboardAccountId:
|
|
73
|
+
}, D = async (e, t, n, r, i) => {
|
|
74
|
+
let { chainId: a, ethereumAddress: s, hashedEthereumAddress: c, feeStructure: l, action: f, destination: p } = i, { txCompletionTime: m, ref: h, hashedDashboardAccountId: _, preEstimateGas: x } = i, S = g(n, l), C = S.reduce((e, t) => e + t, 0n), E = await b(e, {
|
|
72
75
|
chainId: a,
|
|
73
76
|
erc20Addresses: [t.erc20TokenAddress],
|
|
74
|
-
amountChanges: [
|
|
77
|
+
amountChanges: [C],
|
|
75
78
|
externalAddress: s,
|
|
76
|
-
selfOutputAmounts:
|
|
79
|
+
selfOutputAmounts: S,
|
|
77
80
|
createBlockedUtxos: !0,
|
|
78
81
|
forceEmptyUtxos: !0,
|
|
79
82
|
submit: { mode: u.ProofOnly }
|
|
80
|
-
}),
|
|
81
|
-
if (!
|
|
82
|
-
let
|
|
83
|
+
}), D = E.circomData.encryptedOutputs?.[0];
|
|
84
|
+
if (!D || D.length !== S.length) throw Error("Deposit proof is missing encryptedOutputs for the deposited UTXOs");
|
|
85
|
+
let O = D.map((t, n) => ({
|
|
83
86
|
recipientAddress: r[n],
|
|
84
|
-
utxo: d(
|
|
85
|
-
})),
|
|
86
|
-
o(
|
|
87
|
-
let n = await
|
|
87
|
+
utxo: d(w.getBytes(t), e.userKeys)
|
|
88
|
+
})), k = E.circomData.outCommitments.flat().map((e) => BigInt(e)).filter((e) => e !== 0n).map((e) => e.toString()), [A, j] = await Promise.all([(async () => {
|
|
89
|
+
o(E.zkCallData);
|
|
90
|
+
let n = await v(e, a, C, t, E.zkCallData, E.circomData, E.dimData, void 0, void 0, x, E.tronProofSignature);
|
|
88
91
|
if (!n) throw Error("Deposit transaction hash not found");
|
|
89
92
|
return n;
|
|
90
|
-
})(),
|
|
93
|
+
})(), T(e, a, t, O, l, f, p, k)]);
|
|
91
94
|
return {
|
|
92
|
-
depositTxHash:
|
|
93
|
-
scheduleId: await
|
|
95
|
+
depositTxHash: A,
|
|
96
|
+
scheduleId: await y(a, j, c, m, h, _, A)
|
|
94
97
|
};
|
|
95
|
-
},
|
|
98
|
+
}, O = async (t, n, r, i, o, u, d, p, m, g = !0, _) => {
|
|
96
99
|
let v = f([n]), y = n.erc20TokenAddress, b = a(await t.getEthereumAddressByChain(v)), x = {
|
|
97
100
|
chainId: v,
|
|
98
101
|
ethereumAddress: b,
|
|
99
102
|
hashedEthereumAddress: s(b),
|
|
100
|
-
feeStructure: u ?? await
|
|
103
|
+
feeStructure: u ?? await h(v, y, [y], l.Transact, [], 25n),
|
|
101
104
|
txCompletionTime: o,
|
|
102
105
|
ref: d,
|
|
103
106
|
action: p,
|
|
104
|
-
hashedDashboardAccountId:
|
|
107
|
+
hashedDashboardAccountId: m ? c(m) : void 0,
|
|
105
108
|
preEstimateGas: g,
|
|
106
109
|
destination: _
|
|
107
110
|
};
|
|
108
|
-
if (!e(v)) return
|
|
111
|
+
if (!e(v)) return E(t, n, r, i, x);
|
|
109
112
|
if (r.length > 4) throw Error("Tron supports at most 4 recipients per deposit - no circuit emits more outputs");
|
|
110
|
-
return
|
|
113
|
+
return D(t, n, r, i, x);
|
|
111
114
|
};
|
|
112
115
|
//#endregion
|
|
113
|
-
export {
|
|
116
|
+
export { O as hinkalDepositAndWithdraw };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/transact.types.cjs`);require(`../../error-handling/index.cjs`);const c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../AccountActions/AccountActions.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const d=require(`../../functions/private-wallet/emporium.helpers.cjs`),f=require(`./hinkalTransact.cjs`),p=require(`../../functions/utils/admin-dimensions.cjs`),m=require(`../../functions/utils/involves-permit2-op.cjs`),h=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),_=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),v=require(`./handleAutoDepositBack.cjs`);var y=async(y,b,x,S,C,w,T,E,D,O,k,A=!1,j,M,N,P)=>{if(N&&!a.isValidPrivateAddress(N.recipientInfo))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(T.length>0&&!E)throw Error(`Subaccount is required for private wallet transactions`);let F=x.map(e=>e.erc20TokenAddress),I=await y.getEthereumAddress(),L=E?l.AccountActions.getAddressFromSubAccount(b,E):void 0,{contractData:R}=e.networkRegistry[b],{emporiumAddress:z}=R;if(!z)throw Error(`No Emporium Address Provided`);let B=O??await u.getFeeStructure(b,D,F,o.ExternalActionId.Emporium,w.map(e=>h.convertEmporiumOpToCallInfo(e,L??``,b)));for(L?await _.mergeWithFeeStructureEmporium(y,b,L,w,F,S,B,T.find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,B.feeToken))?.amount??0n):await g.mergeWithFeeStructure(b,F,S,B);C.length<F.length;)C.push(!1);let V=k??await y.getRandomRelay(b,!0);if(!V)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=E?l.AccountActions.getPrivateKeyFromSubAccount(b,E):void 0,U=e.getOnchainChainId(b),W=H?l.AccountActions.getSignerAddressFromPrivateKey(U,H):void 0,G=i.randomBigInt(31),K=y.generateProofRemotely?await d.encodeEmporiumMetadata(b,z,H,w,n.poseidonFunction(G),W,B.flatFee):void 0,q=await d.getAuthorizationDataIfNeeded(b,H),J=m.uniswapWorkaround(w),Y=p.resolveSwapPairTokens(M,T.map(({token:e})=>e),P),X=c.constructAdminData(M,b,T.map(e=>e.token.erc20TokenAddress),T.map(e=>e.amount),I,Y),Z,Q=await f.hinkalTransact(y,{chainId:b,erc20Addresses:F,amountChanges:S,externalAddress:z,externalActionId:o.ExternalActionId.Emporium,externalActionMetadata:K,onChainCreation:C,feeStructure:B,relay:V,messageSeed:G,recipientAddress:N?[N.recipientInfo]:void 0,recipientAmounts:N?[F.map(e=>t.caseInsensitiveEqual(e,N.token.erc20TokenAddress)?N.amount:0n)]:void 0,subAccountPrivateKey:H,emporiumOps:w,onTxSubmitLocally:e=>{Z=e},submit:{mode:s.SubmitMode.Relayer,adminData:X,authorizationData:q,withUniswapWorkAround:J}});return A&&E&&v.handleAutoDepositBack(y,b,L,E,B.feeToken,j,T,Z),Q};exports.hinkalPrivateWallet=y;
|
|
@@ -3,4 +3,4 @@ import { FeeStructure } from '../../types/hinkal.types';
|
|
|
3
3
|
import { ERC20Token, PrivateRecipientInfo, TokenChanges } from '../../types/token.types';
|
|
4
4
|
import { SubAccount } from '../../types/proxy.types';
|
|
5
5
|
import { AdminTransactionType } from '../../types/admin.types';
|
|
6
|
-
export declare const hinkalPrivateWallet: (hinkal: IHinkal, chainId: number, erc20Tokens: ERC20Token[], deltaChanges: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo) => Promise<string>;
|
|
6
|
+
export declare const hinkalPrivateWallet: (hinkal: IHinkal, chainId: number, erc20Tokens: ERC20Token[], deltaChanges: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure, relayOverride?: string, autoDepositBack?: boolean, maxGasInDollar?: string, action?: AdminTransactionType, privateRecipientInfo?: PrivateRecipientInfo, bridgedToken?: ERC20Token) => Promise<string>;
|
|
@@ -5,56 +5,56 @@ import { transactionErrorCodes as i } from "../../error-handling/error-codes.con
|
|
|
5
5
|
import { randomBigInt as a } from "../../functions/web3/etherFunctions.mjs";
|
|
6
6
|
import { isValidPrivateAddress as o } from "../../functions/utils/addresses.mjs";
|
|
7
7
|
import { ExternalActionId as s } from "../../types/external-action.types.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import { SubmitMode as l } from "../../types/transact.types.mjs";
|
|
8
|
+
import { SubmitMode as c } from "../../types/transact.types.mjs";
|
|
10
9
|
import "../../error-handling/index.mjs";
|
|
11
|
-
import { constructAdminData as
|
|
12
|
-
import { AccountActions as
|
|
13
|
-
import { getFeeStructure as
|
|
10
|
+
import { constructAdminData as l } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
11
|
+
import { AccountActions as u } from "../AccountActions/AccountActions.mjs";
|
|
12
|
+
import { getFeeStructure as d } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
14
13
|
import "../../functions/pre-transaction/index.mjs";
|
|
15
|
-
import { encodeEmporiumMetadata as
|
|
16
|
-
import { hinkalTransact as
|
|
14
|
+
import { encodeEmporiumMetadata as f, getAuthorizationDataIfNeeded as p } from "../../functions/private-wallet/emporium.helpers.mjs";
|
|
15
|
+
import { hinkalTransact as m } from "./hinkalTransact.mjs";
|
|
16
|
+
import { resolveSwapPairTokens as h } from "../../functions/utils/admin-dimensions.mjs";
|
|
17
17
|
import { uniswapWorkaround as g } from "../../functions/utils/involves-permit2-op.mjs";
|
|
18
18
|
import { convertEmporiumOpToCallInfo as _ } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
|
|
19
19
|
import { mergeWithFeeStructure as v } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
|
|
20
20
|
import { mergeWithFeeStructureEmporium as y } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
|
|
21
21
|
import { handleAutoDepositBack as b } from "./handleAutoDepositBack.mjs";
|
|
22
22
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalPrivateWallet.ts
|
|
23
|
-
var x = async (x, S, C, w, T, E, D, O, k, A, j, M = !1, N, P, F) => {
|
|
23
|
+
var x = async (x, S, C, w, T, E, D, O, k, A, j, M = !1, N, P, F, I) => {
|
|
24
24
|
if (F && !o(F.recipientInfo)) throw Error(i.RECIPIENT_FORMAT_INCORRECT);
|
|
25
25
|
if (D.length > 0 && !O) throw Error("Subaccount is required for private wallet transactions");
|
|
26
|
-
let
|
|
27
|
-
if (!
|
|
28
|
-
let
|
|
29
|
-
for (
|
|
30
|
-
let
|
|
31
|
-
if (!
|
|
32
|
-
let
|
|
26
|
+
let L = C.map((e) => e.erc20TokenAddress), R = await x.getEthereumAddress(), z = O ? u.getAddressFromSubAccount(S, O) : void 0, { contractData: B } = t[S], { emporiumAddress: V } = B;
|
|
27
|
+
if (!V) throw Error("No Emporium Address Provided");
|
|
28
|
+
let H = A ?? await d(S, k, L, s.Emporium, E.map((e) => _(e, z ?? "", S)));
|
|
29
|
+
for (z ? await y(x, S, z, E, L, w, H, D.find((e) => n(e.token.erc20TokenAddress, H.feeToken))?.amount ?? 0n) : await v(S, L, w, H); T.length < L.length;) T.push(!1);
|
|
30
|
+
let U = j ?? await x.getRandomRelay(S, !0);
|
|
31
|
+
if (!U) throw Error(i.RELAYER_NOT_AVAILABLE);
|
|
32
|
+
let W = O ? u.getPrivateKeyFromSubAccount(S, O) : void 0, G = e(S), K = W ? u.getSignerAddressFromPrivateKey(G, W) : void 0, q = a(31), J = x.generateProofRemotely ? await f(S, V, W, E, r(q), K, H.flatFee) : void 0, Y = await p(S, W), X = g(E), Z = h(P, D.map(({ token: e }) => e), I), Q = l(P, S, D.map((e) => e.token.erc20TokenAddress), D.map((e) => e.amount), R, Z), $, ee = await m(x, {
|
|
33
33
|
chainId: S,
|
|
34
|
-
erc20Addresses:
|
|
34
|
+
erc20Addresses: L,
|
|
35
35
|
amountChanges: w,
|
|
36
|
-
externalAddress:
|
|
36
|
+
externalAddress: V,
|
|
37
37
|
externalActionId: s.Emporium,
|
|
38
|
-
externalActionMetadata:
|
|
38
|
+
externalActionMetadata: J,
|
|
39
39
|
onChainCreation: T,
|
|
40
|
-
feeStructure:
|
|
41
|
-
relay:
|
|
42
|
-
messageSeed:
|
|
40
|
+
feeStructure: H,
|
|
41
|
+
relay: U,
|
|
42
|
+
messageSeed: q,
|
|
43
43
|
recipientAddress: F ? [F.recipientInfo] : void 0,
|
|
44
|
-
recipientAmounts: F ? [
|
|
45
|
-
subAccountPrivateKey:
|
|
44
|
+
recipientAmounts: F ? [L.map((e) => n(e, F.token.erc20TokenAddress) ? F.amount : 0n)] : void 0,
|
|
45
|
+
subAccountPrivateKey: W,
|
|
46
46
|
emporiumOps: E,
|
|
47
47
|
onTxSubmitLocally: (e) => {
|
|
48
|
-
|
|
48
|
+
$ = e;
|
|
49
49
|
},
|
|
50
50
|
submit: {
|
|
51
|
-
mode:
|
|
52
|
-
adminData:
|
|
53
|
-
authorizationData:
|
|
54
|
-
withUniswapWorkAround:
|
|
51
|
+
mode: c.Relayer,
|
|
52
|
+
adminData: Q,
|
|
53
|
+
authorizationData: Y,
|
|
54
|
+
withUniswapWorkAround: X
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
-
return M && O && b(x, S,
|
|
57
|
+
return M && O && b(x, S, z, O, H.feeToken, N, D, $), ee;
|
|
58
58
|
};
|
|
59
59
|
//#endregion
|
|
60
60
|
export { x as hinkalPrivateWallet };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../crypto-keys/keys.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../crypto-keys/encryptDecryptUtxo.cjs`)
|
|
1
|
+
const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../crypto-keys/keys.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../crypto-keys/encryptDecryptUtxo.cjs`);require(`../../externalABIs/index.cjs`);const a=require(`../../functions/utils/token-check.utils.cjs`),o=require(`../../functions/utils/tx-confirmation.utils.cjs`);var s=(e,t)=>{if(e.length!==t.length)throw Error(`stealthAddressStructures and recipientEncryptionKeys must have equal length`);return e.map((e,n)=>{let r=t[n];if(!r)throw Error(`Missing encryptionKey for proofless deposit output ${n}: required so the enclave can attribute this UTXO to its owner`);return`0x${Buffer.from(i.encryptEncryptionKeyAndStealthAddress(r,e.stealthAddress)).toString(`hex`)}`})},c=(e,t)=>{let r=n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey;return Array.from({length:t},()=>r)},l=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let o=!1;for(let s=0;s<r;s+=1)if(a.isSameERC20Token(n[s].token,e[i])){n[s].balance+=t[i],o=!0;break}o||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},u=async(n,i,a,s)=>{for(let c=0;c<s.length;c+=1)t.caseInsensitiveEqual(s[c].token.erc20TokenAddress,e.zeroAddress)||await o.waitForEthereumTransactionConfirmation(i,(await n.getContractWithSigner(i,r.ContractType.ERC20Contract,s[c].token.erc20TokenAddress).approve(a,s[c].balance)).hash)},d=e=>{let t=new Set;e.forEach(({H0x:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})};exports.aggregateAmountsForApproval=l,exports.approveTokens=u,exports.assertNoDuplicateStealthAddressStructures=d,exports.buildProoflessEncryptedOutputs=s,exports.getOwnRecipientEncryptionKeys=c;
|
|
@@ -3,8 +3,8 @@ import { caseInsensitiveEqual as t } from "../../functions/utils/caseInsensitive
|
|
|
3
3
|
import { UserKeys as n } from "../crypto-keys/keys.mjs";
|
|
4
4
|
import { ContractType as r } from "../../types/ethereum-network.types.mjs";
|
|
5
5
|
import { encryptEncryptionKeyAndStealthAddress as i } from "../crypto-keys/encryptDecryptUtxo.mjs";
|
|
6
|
-
import { isSameERC20Token as a } from "../../functions/utils/token-check.utils.mjs";
|
|
7
6
|
import "../../externalABIs/index.mjs";
|
|
7
|
+
import { isSameERC20Token as a } from "../../functions/utils/token-check.utils.mjs";
|
|
8
8
|
import { waitForEthereumTransactionConfirmation as o } from "../../functions/utils/tx-confirmation.utils.mjs";
|
|
9
9
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.ts
|
|
10
10
|
var s = (e, t) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/external-action.types.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../constants/addresses.constants.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),c=require(`../../functions/private-wallet/emporium.swap.helpers.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!1,y,b,x,S)=>{if(!g)throw Error(`Fee token is required in hinkalProxySwap`);let C=n.validateAndGetChainId(u),w=r.AccountActions.getAddressFromSubAccount(C,h);if(!w)throw Error(`Public account address is not available`);let T=u.map(e=>e.erc20TokenAddress),E=await l.getRandomRelay(C,!0);if(!E)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let D=await c.createSwapToEmporiumOps(l,C,f,o.SWAP_ROUTER_ADDRESSES[f][C],p,T[0],d[0],d[1],T[1],m,w,E,!0),O=_??await i.getFeeStructure(C,g,T,t.ExternalActionId.Emporium,D.map(e=>s.convertEmporiumOpToCallInfo(e,w,C)),35n),k=u.map((e,t)=>({token:e,amount:d[t]})),A=x&&S!==void 0?await a.calculateModifiedFeeStructure(C,x,S,O):O;return l.actionPrivateWallet(C,[],[],[],D,k,h,g,A,E,v,y,b,void 0)};exports.hinkalProxySwap=l;
|
|
1
|
+
require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../types/external-action.types.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../AccountActions/AccountActions.cjs`),i=require(`../../functions/pre-transaction/getFeeStructure.cjs`),a=require(`../../functions/utils/fees.utils.cjs`),o=require(`../../constants/addresses.constants.cjs`),s=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),c=require(`../../functions/private-wallet/emporium.swap.helpers.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!1,y,b,x,S)=>{if(!g)throw Error(`Fee token is required in hinkalProxySwap`);let C=n.validateAndGetChainId(u),w=r.AccountActions.getAddressFromSubAccount(C,h);if(!w)throw Error(`Public account address is not available`);let T=u.map(e=>e.erc20TokenAddress),E=await l.getRandomRelay(C,!0);if(!E)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let D=await c.createSwapToEmporiumOps(l,C,f,o.SWAP_ROUTER_ADDRESSES[f][C],p,T[0],d[0],d[1],T[1],m,w,E,!0),O=_??await i.getFeeStructure(C,g,T,t.ExternalActionId.Emporium,D.map(e=>s.convertEmporiumOpToCallInfo(e,w,C)),35n),k=u.map((e,t)=>({token:e,amount:d[t]})),A=x&&S!==void 0?await a.calculateModifiedFeeStructure(C,x,S,O):O;return l.actionPrivateWallet(C,[],[],[],D,k,h,g,A,E,v,y,b,void 0,x)};exports.hinkalProxySwap=l;
|
|
@@ -19,7 +19,7 @@ var l = async (l, u, d, f, p, m, h, g, _, v = !1, y, b, x, S) => {
|
|
|
19
19
|
token: e,
|
|
20
20
|
amount: d[t]
|
|
21
21
|
})), A = x && S !== void 0 ? await a(C, x, S, O) : O;
|
|
22
|
-
return l.actionPrivateWallet(C, [], [], [], D, k, h, g, A, E, v, y, b, void 0);
|
|
22
|
+
return l.actionPrivateWallet(C, [], [], [], D, k, h, g, A, E, v, y, b, void 0, x);
|
|
23
23
|
};
|
|
24
24
|
//#endregion
|
|
25
25
|
export { l as hinkalProxySwap };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../functions/utils/
|
|
1
|
+
const e=require(`../../functions/utils/receive-vault-account.utils.cjs`),t=require(`../../functions/utils/receive-vault-scan.utils.cjs`);var n=async n=>{let{records:r,blocks:i}=await e.getReceiveVaultAccountSnapshot(n.userKeys);return{entries:[...r].sort((e,t)=>t.index-e.index),blockedFunds:await t.getReceiveVaultBlockedFunds(r,i)}};exports.hinkalGetReceiveVaultAccount=n;
|
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { getReceiveVaultBlockedFunds as n } from "../../functions/utils/receive-vault-scan.utils.mjs";
|
|
1
|
+
import { getReceiveVaultAccountSnapshot as e } from "../../functions/utils/receive-vault-account.utils.mjs";
|
|
2
|
+
import { getReceiveVaultBlockedFunds as t } from "../../functions/utils/receive-vault-scan.utils.mjs";
|
|
4
3
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.ts
|
|
5
|
-
var
|
|
6
|
-
let { records:
|
|
4
|
+
var n = async (n) => {
|
|
5
|
+
let { records: r, blocks: i } = await e(n.userKeys);
|
|
7
6
|
return {
|
|
8
|
-
entries:
|
|
9
|
-
|
|
10
|
-
return n ? {
|
|
11
|
-
record: t,
|
|
12
|
-
token: n,
|
|
13
|
-
expiresAt: /* @__PURE__ */ new Date(Number(t.expiry) * 1e3)
|
|
14
|
-
} : void 0;
|
|
15
|
-
}))).filter((e) => !!e).sort((e, t) => t.expiresAt.getTime() - e.expiresAt.getTime()),
|
|
16
|
-
blockedFunds: await n(i, a)
|
|
7
|
+
entries: [...r].sort((e, t) => t.index - e.index),
|
|
8
|
+
blockedFunds: await t(r, i)
|
|
17
9
|
};
|
|
18
10
|
};
|
|
19
11
|
//#endregion
|
|
20
|
-
export {
|
|
12
|
+
export { n as hinkalGetReceiveVaultAccount };
|