@kapa123456789/sdk 0.0.82 → 0.0.83

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.
Files changed (29) hide show
  1. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  2. package/common/src/data-structures/Hinkal/Hinkal.mjs +4 -41
  3. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  4. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +46 -73
  5. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  6. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +16 -37
  7. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  8. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +18 -47
  9. package/common/src/functions/pre-transaction/getFeeStructure.cjs +1 -1
  10. package/common/src/functions/pre-transaction/getFeeStructure.mjs +10 -21
  11. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  12. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +71 -89
  13. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -1
  14. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +8 -17
  15. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  16. package/common/src/functions/snarkjs/generateZkProof.mjs +8 -26
  17. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  18. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +43 -61
  19. package/common/src/functions/web3/functionCalls/transactCallDirectTron.cjs +1 -1
  20. package/common/src/functions/web3/functionCalls/transactCallDirectTron.mjs +65 -73
  21. package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  22. package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +14 -22
  23. package/common/src/webworker/package.json +3 -2
  24. package/functions/integrations/swapApi.cjs +1 -1
  25. package/functions/integrations/swapApi.mjs +4 -9
  26. package/package.json +3 -2
  27. package/scripts/strip-blake-hash-native.cjs +35 -0
  28. package/services/Hinkal.cjs +1 -1
  29. package/services/Hinkal.mjs +3 -42
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../functions/utils/serialize.utils.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../constants/protocol.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../types/ethereum-network.types.cjs`),o=require(`../../crypto/poseidon.cjs`),s=require(`../../error-handling/error-codes.constants.cjs`),c=require(`../crypto-keys/keys.cjs`),l=require(`../../API/scheduled-transactions-calls.cjs`),u=require(`../../API/API.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../TokenDBs/PrivateTokensDB.cjs`),p=require(`../../functions/utils/erc20tokenFunctions.cjs`),m=require(`../../functions/web3/events/getShieldedBalance.cjs`),h=require(`../../functions/pre-transaction/solana.cjs`),g=require(`../../functions/web3/getContractMetadata.cjs`),_=require(`../../functions/utils/reloadPage.cjs`),v=require(`../../functions/utils/cacheDevice.utils.cjs`),y=require(`../../providers/SolanaProviderAdapter.cjs`),ee=require(`../../functions/utils/enclave-signature-storage.cjs`),b=require(`../../functions/utils/mnemonics.cjs`),x=require(`../../functions/web3/fetchSolanaMerkleTreeRootHash.cjs`),S=require(`../../functions/private-wallet/emporium.helpers.cjs`),C=require(`./hinkalDeposit.cjs`);require(`../../functions/index.cjs`);const w=require(`./hinkalDepositAndWithdraw.cjs`),T=require(`./hinkalSolanaDeposit.cjs`),E=require(`./hinkalSwap.cjs`),D=require(`./hinkalWithdraw.cjs`),O=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const k=require(`./resetMerkleTrees.cjs`);require(`../../API/index.cjs`);const A=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),j=require(`./hinkalPrivateWallet.cjs`),M=require(`./hinkalGetRecipientInfo.cjs`),N=require(`./hinkalSignSubAccount.cjs`),P=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const F=require(`./hinkalProoflessDeposit.cjs`),te=require(`./hinkalProxySwap.cjs`),I=require(`./hinkalMultiSend.cjs`),L=require(`./hinkalTransfer.cjs`),R=require(`./hinkalProxyToPrivate.cjs`),z=require(`../../providers/TronProviderAdapter.cjs`),B=require(`./hinkalSolanaDepositAndWithdraw.cjs`),V=require(`./hinkalSolanaWithdraw.cjs`),H=require(`./hinkalSolanaTransfer.cjs`),U=require(`./hinkalSolanaSwap.cjs`),W=require(`./hinkalSolanaProxySend.cjs`),G=require(`./hinkalSolanaProxySwap.cjs`),K=require(`./hinkalSolanaProxyShield.cjs`),q=require(`./hinkalDepositAndBridge.cjs`),J=require(`./hinkalNearDepositAndBridge.cjs`),Y=require(`./hinkalClaimUtxo.cjs`),X=require(`./hinkalSolanaProoflessDeposit.cjs`),Z=require(`./hinkalSolanaClaimUtxo.cjs`),Q=require(`./hinkalWithdrawStuckUtxos.cjs`),ne=require(`../private-balances/HinkalPrivateBalanceController.cjs`);require(`../private-balances/index.cjs`);let $=require(`@solana/web3.js`);var re=class{ethereumProviderAdapter;solanaProviderAdapter;tronProviderAdapter;userKeys;signingMessage=`Login to Hinkal Protocol`;privateTransferSigningMessage=`Login to Hinkal's Private Transfer App`;merkleTreeHinkalByChain={};nullifiersByChain={};encryptedOutputsByChain={};commitmentsSnapshotServiceByChain={};nullifierSnapshotServiceByChain={};utxoUtils;lastCallState=new Map;cacheDevice;generateProofRemotely;disableMerkleTreeUpdates;privateBalances=new ne.HinkalPrivateBalanceController(this);constructor(e){this.userKeys=new c.UserKeys(void 0),e?.tronChainOverride&&n.setHinkalTronChainId(e.tronChainOverride),n.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=O.MerkleTree.create(o.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new A.MultiThreadedUtxoUtils,this.cacheDevice=v.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}enforceRateLimit(t,n,r=1e3){let i=Date.now(),a=e.CustomJSONStringify(n),o=this.lastCallState.get(t);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${t} was already called with the same arguments`);this.lastCallState.set(t,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?n.chainIds.ethMainnet:this.solanaProviderAdapter?n.currentSolanaChainId:n.chainIds.tronMainnet;let r;if(r=n.isSolanaLike(t)?this.solanaProviderAdapter:n.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!r)throw Error(`ProviderAdapter is not initialized`);return r}async initProviderAdapter(e,t){let r=n.chainIds.ethMainnet;t instanceof y.SolanaProviderAdapter?r=n.currentSolanaChainId:t instanceof z.TronProviderAdapter&&(r=n.currentTronChainId),await this.updateProviderAdapter(r,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=i.LoginMessageMode.PROTOCOL){switch(e){case i.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case i.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=i.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:r.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:r.DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT,feePayer:this.getSolanaPublicKey()}),t=await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);if(!t)throw Error(`Failed to sign transaction without broadcast`);return{signature:t.signature,txMessageForSolanaLedger:t.transactionMessageB64}}async initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new c.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new c.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=b.generateHashFromSeedPhrases(e);this.userKeys=new c.UserKeys(t)}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await ee.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await k.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof z.TronProviderAdapter))throw Error(`Tron provider adapter is not a TronProviderAdapter`);let t=e.getTronWeb();if(!t)throw Error(`TronWeb not available`);return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?n.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>!n.isSolanaLike(e)&&!n.isTronLike(e)):this.solanaProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>n.isSolanaLike(e)):this.tronProviderAdapter?[n.currentTronChainId]:[]}async waitForTransaction(e,t,n=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,t,n)}getContract(e,t,n=void 0){return this.getProviderAdapter(e).getContract(e,t,n)}getContractWithFetcherByChainId(e,t,n=void 0){return g.getContractWithFetcherByChainId(e,t,n)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,t,n){return await this.getProviderAdapter().signTypedData(e,t,n)}async signWithSubAccount(e,t,n,r){return N.hinkalSignSubAccount(e,t,n,r)}getContractWithSigner(e,t,n=``){return this.getProviderAdapter(e).getContractWithSigner(e,t,n)}getContractWithFetcher(e,t,n=``){return this.getProviderAdapter(e).getContractWithFetcher(e,t,n)}isSelectedNetworkSupported(e){return!!n.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),r=t.getChainId(),i=r!==void 0&&n.isSameOnchainNetwork(e.chainId,r);if(!(e.chainId===r||i))try{await t.switchNetwork(e)}catch{throw Error(s.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector(),await this.tronProviderAdapter?.disconnectFromConnector()}async resetProviderAdapters(){this.ethereumProviderAdapter?.release(),this.solanaProviderAdapter?.release(),this.tronProviderAdapter?.release(),this.ethereumProviderAdapter=void 0,this.solanaProviderAdapter=void 0,this.tronProviderAdapter=void 0}async updateProviderAdapter(e,t){try{n.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):n.isTronLike(e)?(this.tronProviderAdapter&&this.tronProviderAdapter.release(),this.tronProviderAdapter=t):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=t)}catch(e){throw console.error(e),Error(`updateProviderAdapter failed, please try again.`)}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.tronProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged(),await this.tronProviderAdapter?.onAccountChanged();let e=i.EventType.AccountChanged;typeof document<`u`?document?.dispatchEvent(new Event(e)):process?.emit(`message`,e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),_.reloadPage())}async monitorConnectedAddress(e){await u.API.monitor(await this.getEthereumAddressByChain(e))}async getBalances(e,t,n,r,i=!1,a,o=!1){return m.getShieldedBalance(this,e,t,n,r,i,this.generateProofRemotely,a,o)}async getTotalBalance(e,n,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=n??this.userKeys,l=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),u=t.isExtension?await f.privateTokensDB.getPrivateTokens(e,s):await p.getErc20TokensForChainAPI(e),d=[];return u.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=l.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};d.push(r)}),d}async getStuckShieldedBalances(e,t,n,r=!1,i=!1){return(await this.getTotalBalance(e,t,n,r,i,!0)).filter(e=>e.balance>0n)}get privateBalancesWithUSD(){return this.privateBalances.getSnapshot()}onPrivateBalancesWithUSDChange(e){return this.privateBalances.onPrivateBalancesWithUSDChange(e)}async getHinkalTreeRootHash(e){if(n.isSolanaLike(e)){let{hinkalIdl:t,hinkalAddress:r,originalDeployer:i}=n.networkRegistry[e].contractData;if(!t||!r||!i)throw Error(`Missing Solana configuration for chain ${e}`);let a=new $.PublicKey(i),o=h.getMerkleAccountPublicKey(new $.PublicKey(r),a);return x.fetchSolanaMerkleTreeRootHash(this.getSolanaProgram(t),o)}return this.getContractWithFetcherByChainId(e,a.ContractType.HinkalContract).getRootHash()}async resetMerkleTreesIfNecessary(e){let t=(await Promise.all((e??this.getSupportedChains()).map(async e=>{let t=await this.getHinkalTreeRootHash(e);return{chainId:e,needsReset:BigInt(t)!==this.merkleTreeHinkalByChain[e].getRootHash()}}))).filter(e=>e.needsReset).map(e=>e.chainId);t.length>0&&(console.log(`resetting merkle tree in resetMerkleTreesIfNecessary for chains:`,t),await this.resetMerkle(t))}async getEthereumAddress(){let e=this.ethereumProviderAdapter??this.solanaProviderAdapter??this.tronProviderAdapter;if(!e)throw Error(`No provider adapter initialized`);return e.getAddress()}getEthereumAddressByChain(e){return this.getProviderAdapter(e).getAddress()}async getRandomRelay(e,t=!1){return(await u.API.getIdleRelay(e,t)).relay}getGasPrice(e){let t=this.getProviderAdapter(e);if(!t)throw Error(`Illegal State of providerAdapter in Hinkal: no providerAdapter initialized`);return t.getGasPrice(e)}getAPI(){return u.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}async destroy(){this.snapshotsClearInterval(),this.privateBalances.dispose(),await this.resetProviderAdapters()}getRecipientInfo(){return M.getRecipientInfo(this)}async deposit(e,t,n=!0,r=!1){console.log(`[Hinkal.deposit] start`,{amountChanges:t.map(String)});try{let i=await C.hinkalDeposit(this,e,t,n,r);return console.log(`[Hinkal.deposit] success`),i}catch(e){throw console.log(`[Hinkal.deposit] error`,e),e}}async depositSolana(e,t,n=!1){return T.hinkalSolanaDeposit(this,e,t,n)}async depositForOther(e,t,n,r=!0,i=!1,a){return this.enforceRateLimit(this.depositForOther.name,[e,t,n]),C.hinkalDepositForOther(this,e,t,n,r,i,a)}async depositSolanaForOther(e,t,n,r=!1,i){return this.enforceRateLimit(this.depositSolanaForOther.name,[e,t,n]),T.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,r,i,a,o,s,c,l=!0){return n.isSolanaLike(d.validateAndGetChainId([e]))?B.hinkalSolanaDepositAndWithdraw(this,e,t,r,i,a,o,s,c):w.hinkalDepositAndWithdraw(this,e,t,r,i,a,o,s,c,l)}async claimUtxo(e,t,r,i){return n.isSolanaLike(d.validateAndGetChainId([e]))?Z.hinkalSolanaClaimUtxo(this,e,t,r,i):Y.hinkalClaimUtxo(this,e,t,r,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return q.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async checkSendTransactionStatus(e){return l.getScheduledTransactionById(e)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),J.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,r,i,a=!1){return n.isSolanaLike(d.validateAndGetChainId(e))?X.hinkalSolanaProoflessDeposit(this,e,t,r,i,a):F.hinkalProoflessDeposit(this,e,t,r,i,a)}async prooflessDepositWithPublicFee(e,t,r,i,a){let o=d.validateAndGetChainId([e]);return n.isSolanaLike(o)?T.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,r,i,a):F.hinkalProoflessDepositWithPublicFee(this,o,e,t,r,i,a)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaProgram`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaPublicKey`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaPublicKey()}async transfer(e,t,r,i,a,o){console.log(`[Hinkal.transfer] start`,{recipientAddress:r,amountChanges:t.map(String)}),this.enforceRateLimit(this.transfer.name,[e,t,r]);let s=d.validateAndGetChainId(e);try{if(n.isSolanaLike(s)){console.log(`[Hinkal.transfer] hinkalSolanaTransfer`);let n=await H.hinkalSolanaTransfer(this,e,t,r,i,a,o);return console.log(`[Hinkal.transfer] success (solana)`,{result:n}),n}let c=await L.hinkalTransfer(this,e,t,r,i,a,o);return console.log(`[Hinkal.transfer] success`,{result:c}),c}catch(e){throw console.log(`[Hinkal.transfer] error`,e),e}}async withdraw(e,t,r,i,a,o,s){console.log(`[Hinkal.withdraw] start`,{recipientAddress:r,isRelayerOff:i,deltaAmounts:t.map(String)});let c=d.validateAndGetChainId(e);try{if(n.isSolanaLike(c)){console.log(`[Hinkal.withdraw] hinkalSolanaWithdraw`);let n=await V.hinkalSolanaWithdraw(this,e,t,r,a,o,s);return console.log(`[Hinkal.withdraw] success (solana)`,{result:n}),n}let l=await D.hinkalWithdraw(this,e,t,r,i,a,o,s);return console.log(`[Hinkal.withdraw] success`,{result:l}),l}catch(e){throw console.log(`[Hinkal.withdraw] error`,e),e}}async withdrawStuckUtxos(e,t){return Q.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,r,i,a,o,s){return n.isSolanaLike(d.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):E.hinkalSwap(this,e,t,r,i,a,o,s)}async swapSolana(e,t,n,r,i,a){let o=JSON.parse(n),s=BigInt(o.swapperAccountSalt),{instructionLists:c,addressLookupTableAccount:l}=o.data;return U.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,r,i,a,o){if(!a)throw Error(`subAccount is required`);return n.isSolanaLike(d.validateAndGetChainId(e))?K.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):P.hinkalActionReceive(this,e,t,r,i,a,o)}async actionPrivateWallet(e,t,n,r,i,a,o,s,c,l,u=!1,d,f,p){return this.enforceRateLimit(this.actionPrivateWallet.name,[e,t,n,r,i,a,o,s,c,p]),j.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,r,i,a,o,s,c,l=!1,u,f){return n.isSolanaLike(d.validateAndGetChainId(e))?G.hinkalSolanaProxySwap(this,e,t,i,o,r,s,c,f):te.hinkalProxySwap(this,e,t,r,i,a,o,s,c,l,u,f)}async proxyToPrivate(e,t,r,i,a,o,s){return n.isSolanaLike(d.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],r,i]),K.hinkalSolanaProxyShield(this,e[0],t[0],r,i,s)):R.hinkalProxyToPrivate(this,e,t,i,a,o,r,s)}async proxySend(e,t,r,i,a,o,s){let c=d.validateAndGetChainId(e);if(n.isSolanaLike(c))return W.hinkalSolanaProxySend(this,e[0],t[0],r,i,s);let l=S.createTransaferEmporiumOpsBatch(this,c,e.map(e=>e.erc20TokenAddress),t,i),u=e.map((e,n)=>({token:e,amount:-1n*t[n]}));return await this.actionPrivateWallet(c,[],[],[],l,u,r,a,o,void 0,void 0,void 0,s,void 0)}async multiSendPrivateRecipients(e,t,n){return this.enforceRateLimit(this.multiSendPrivateRecipients.name,[e,t,n]),I.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=re;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../functions/utils/serialize.utils.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../constants/protocol.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../types/ethereum-network.types.cjs`),o=require(`../../crypto/poseidon.cjs`),s=require(`../../error-handling/error-codes.constants.cjs`),c=require(`../crypto-keys/keys.cjs`),l=require(`../../API/scheduled-transactions-calls.cjs`),u=require(`../../API/API.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../TokenDBs/PrivateTokensDB.cjs`),p=require(`../../functions/utils/erc20tokenFunctions.cjs`),m=require(`../../functions/web3/events/getShieldedBalance.cjs`),h=require(`../../functions/pre-transaction/solana.cjs`),g=require(`../../functions/web3/getContractMetadata.cjs`),_=require(`../../functions/utils/reloadPage.cjs`),v=require(`../../functions/utils/cacheDevice.utils.cjs`),y=require(`../../providers/SolanaProviderAdapter.cjs`),ee=require(`../../functions/utils/enclave-signature-storage.cjs`),b=require(`../../functions/utils/mnemonics.cjs`),x=require(`../../functions/web3/fetchSolanaMerkleTreeRootHash.cjs`),S=require(`../../functions/private-wallet/emporium.helpers.cjs`),C=require(`./hinkalDeposit.cjs`);require(`../../functions/index.cjs`);const w=require(`./hinkalDepositAndWithdraw.cjs`),T=require(`./hinkalSolanaDeposit.cjs`),E=require(`./hinkalSwap.cjs`),D=require(`./hinkalWithdraw.cjs`),O=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const k=require(`./resetMerkleTrees.cjs`);require(`../../API/index.cjs`);const A=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),j=require(`./hinkalPrivateWallet.cjs`),M=require(`./hinkalGetRecipientInfo.cjs`),N=require(`./hinkalSignSubAccount.cjs`),P=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const F=require(`./hinkalProoflessDeposit.cjs`),te=require(`./hinkalProxySwap.cjs`),I=require(`./hinkalMultiSend.cjs`),L=require(`./hinkalTransfer.cjs`),R=require(`./hinkalProxyToPrivate.cjs`),z=require(`../../providers/TronProviderAdapter.cjs`),B=require(`./hinkalSolanaDepositAndWithdraw.cjs`),V=require(`./hinkalSolanaWithdraw.cjs`),H=require(`./hinkalSolanaTransfer.cjs`),U=require(`./hinkalSolanaSwap.cjs`),W=require(`./hinkalSolanaProxySend.cjs`),G=require(`./hinkalSolanaProxySwap.cjs`),K=require(`./hinkalSolanaProxyShield.cjs`),q=require(`./hinkalDepositAndBridge.cjs`),J=require(`./hinkalNearDepositAndBridge.cjs`),Y=require(`./hinkalClaimUtxo.cjs`),X=require(`./hinkalSolanaProoflessDeposit.cjs`),Z=require(`./hinkalSolanaClaimUtxo.cjs`),Q=require(`./hinkalWithdrawStuckUtxos.cjs`),ne=require(`../private-balances/HinkalPrivateBalanceController.cjs`);require(`../private-balances/index.cjs`);let $=require(`@solana/web3.js`);var re=class{ethereumProviderAdapter;solanaProviderAdapter;tronProviderAdapter;userKeys;signingMessage=`Login to Hinkal Protocol`;privateTransferSigningMessage=`Login to Hinkal's Private Transfer App`;merkleTreeHinkalByChain={};nullifiersByChain={};encryptedOutputsByChain={};commitmentsSnapshotServiceByChain={};nullifierSnapshotServiceByChain={};utxoUtils;lastCallState=new Map;cacheDevice;generateProofRemotely;disableMerkleTreeUpdates;privateBalances=new ne.HinkalPrivateBalanceController(this);constructor(e){this.userKeys=new c.UserKeys(void 0),e?.tronChainOverride&&n.setHinkalTronChainId(e.tronChainOverride),n.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=O.MerkleTree.create(o.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new A.MultiThreadedUtxoUtils,this.cacheDevice=v.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}enforceRateLimit(t,n,r=1e3){let i=Date.now(),a=e.CustomJSONStringify(n),o=this.lastCallState.get(t);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${t} was already called with the same arguments`);this.lastCallState.set(t,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?n.chainIds.ethMainnet:this.solanaProviderAdapter?n.currentSolanaChainId:n.chainIds.tronMainnet;let r;if(r=n.isSolanaLike(t)?this.solanaProviderAdapter:n.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!r)throw Error(`ProviderAdapter is not initialized`);return r}async initProviderAdapter(e,t){let r=n.chainIds.ethMainnet;t instanceof y.SolanaProviderAdapter?r=n.currentSolanaChainId:t instanceof z.TronProviderAdapter&&(r=n.currentTronChainId),await this.updateProviderAdapter(r,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=i.LoginMessageMode.PROTOCOL){switch(e){case i.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case i.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=i.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:r.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:r.DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT,feePayer:this.getSolanaPublicKey()}),t=await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);if(!t)throw Error(`Failed to sign transaction without broadcast`);return{signature:t.signature,txMessageForSolanaLedger:t.transactionMessageB64}}async initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new c.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new c.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=b.generateHashFromSeedPhrases(e);this.userKeys=new c.UserKeys(t)}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await ee.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await k.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof z.TronProviderAdapter))throw Error(`Tron provider adapter is not a TronProviderAdapter`);let t=e.getTronWeb();if(!t)throw Error(`TronWeb not available`);return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?n.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>!n.isSolanaLike(e)&&!n.isTronLike(e)):this.solanaProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>n.isSolanaLike(e)):this.tronProviderAdapter?[n.currentTronChainId]:[]}async waitForTransaction(e,t,n=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,t,n)}getContract(e,t,n=void 0){return this.getProviderAdapter(e).getContract(e,t,n)}getContractWithFetcherByChainId(e,t,n=void 0){return g.getContractWithFetcherByChainId(e,t,n)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,t,n){return await this.getProviderAdapter().signTypedData(e,t,n)}async signWithSubAccount(e,t,n,r){return N.hinkalSignSubAccount(e,t,n,r)}getContractWithSigner(e,t,n=``){return this.getProviderAdapter(e).getContractWithSigner(e,t,n)}getContractWithFetcher(e,t,n=``){return this.getProviderAdapter(e).getContractWithFetcher(e,t,n)}isSelectedNetworkSupported(e){return!!n.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),r=t.getChainId(),i=r!==void 0&&n.isSameOnchainNetwork(e.chainId,r);if(!(e.chainId===r||i))try{await t.switchNetwork(e)}catch{throw Error(s.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector(),await this.tronProviderAdapter?.disconnectFromConnector()}async resetProviderAdapters(){this.ethereumProviderAdapter?.release(),this.solanaProviderAdapter?.release(),this.tronProviderAdapter?.release(),this.ethereumProviderAdapter=void 0,this.solanaProviderAdapter=void 0,this.tronProviderAdapter=void 0}async updateProviderAdapter(e,t){try{n.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):n.isTronLike(e)?(this.tronProviderAdapter&&this.tronProviderAdapter.release(),this.tronProviderAdapter=t):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=t)}catch(e){throw console.error(e),Error(`updateProviderAdapter failed, please try again.`)}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.tronProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged(),await this.tronProviderAdapter?.onAccountChanged();let e=i.EventType.AccountChanged;typeof document<`u`?document?.dispatchEvent(new Event(e)):process?.emit(`message`,e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),_.reloadPage())}async monitorConnectedAddress(e){await u.API.monitor(await this.getEthereumAddressByChain(e))}async getBalances(e,t,n,r,i=!1,a,o=!1){return m.getShieldedBalance(this,e,t,n,r,i,this.generateProofRemotely,a,o)}async getTotalBalance(e,n,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=n??this.userKeys,l=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),u=t.isExtension?await f.privateTokensDB.getPrivateTokens(e,s):await p.getErc20TokensForChainAPI(e),d=[];return u.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=l.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};d.push(r)}),d}async getStuckShieldedBalances(e,t,n,r=!1,i=!1){return(await this.getTotalBalance(e,t,n,r,i,!0)).filter(e=>e.balance>0n)}get privateBalancesWithUSD(){return this.privateBalances.getSnapshot()}onPrivateBalancesWithUSDChange(e){return this.privateBalances.onPrivateBalancesWithUSDChange(e)}async getHinkalTreeRootHash(e){if(n.isSolanaLike(e)){let{hinkalIdl:t,hinkalAddress:r,originalDeployer:i}=n.networkRegistry[e].contractData;if(!t||!r||!i)throw Error(`Missing Solana configuration for chain ${e}`);let a=new $.PublicKey(i),o=h.getMerkleAccountPublicKey(new $.PublicKey(r),a);return x.fetchSolanaMerkleTreeRootHash(this.getSolanaProgram(t),o)}return this.getContractWithFetcherByChainId(e,a.ContractType.HinkalContract).getRootHash()}async resetMerkleTreesIfNecessary(e){let t=(await Promise.all((e??this.getSupportedChains()).map(async e=>{let t=await this.getHinkalTreeRootHash(e);return{chainId:e,needsReset:BigInt(t)!==this.merkleTreeHinkalByChain[e].getRootHash()}}))).filter(e=>e.needsReset).map(e=>e.chainId);t.length>0&&(console.log(`resetting merkle tree in resetMerkleTreesIfNecessary for chains:`,t),await this.resetMerkle(t))}async getEthereumAddress(){let e=this.ethereumProviderAdapter??this.solanaProviderAdapter??this.tronProviderAdapter;if(!e)throw Error(`No provider adapter initialized`);return e.getAddress()}getEthereumAddressByChain(e){return this.getProviderAdapter(e).getAddress()}async getRandomRelay(e,t=!1){return(await u.API.getIdleRelay(e,t)).relay}getGasPrice(e){let t=this.getProviderAdapter(e);if(!t)throw Error(`Illegal State of providerAdapter in Hinkal: no providerAdapter initialized`);return t.getGasPrice(e)}getAPI(){return u.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}async destroy(){this.snapshotsClearInterval(),this.privateBalances.dispose(),await this.resetProviderAdapters()}getRecipientInfo(){return M.getRecipientInfo(this)}async deposit(e,t,n=!0,r=!1){return C.hinkalDeposit(this,e,t,n,r)}async depositSolana(e,t,n=!1){return T.hinkalSolanaDeposit(this,e,t,n)}async depositForOther(e,t,n,r=!0,i=!1,a){return this.enforceRateLimit(this.depositForOther.name,[e,t,n]),C.hinkalDepositForOther(this,e,t,n,r,i,a)}async depositSolanaForOther(e,t,n,r=!1,i){return this.enforceRateLimit(this.depositSolanaForOther.name,[e,t,n]),T.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,r,i,a,o,s,c,l=!0){return n.isSolanaLike(d.validateAndGetChainId([e]))?B.hinkalSolanaDepositAndWithdraw(this,e,t,r,i,a,o,s,c):w.hinkalDepositAndWithdraw(this,e,t,r,i,a,o,s,c,l)}async claimUtxo(e,t,r,i){return n.isSolanaLike(d.validateAndGetChainId([e]))?Z.hinkalSolanaClaimUtxo(this,e,t,r,i):Y.hinkalClaimUtxo(this,e,t,r,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return q.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async checkSendTransactionStatus(e){return l.getScheduledTransactionById(e)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),J.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,r,i,a=!1){return n.isSolanaLike(d.validateAndGetChainId(e))?X.hinkalSolanaProoflessDeposit(this,e,t,r,i,a):F.hinkalProoflessDeposit(this,e,t,r,i,a)}async prooflessDepositWithPublicFee(e,t,r,i,a){let o=d.validateAndGetChainId([e]);return n.isSolanaLike(o)?T.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,r,i,a):F.hinkalProoflessDepositWithPublicFee(this,o,e,t,r,i,a)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaProgram`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaPublicKey`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaPublicKey()}async transfer(e,t,r,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,r]),n.isSolanaLike(d.validateAndGetChainId(e))?H.hinkalSolanaTransfer(this,e,t,r,i,a,o):L.hinkalTransfer(this,e,t,r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return n.isSolanaLike(d.validateAndGetChainId(e))?V.hinkalSolanaWithdraw(this,e,t,r,a,o,s):D.hinkalWithdraw(this,e,t,r,i,a,o,s)}async withdrawStuckUtxos(e,t){return Q.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,r,i,a,o,s){return n.isSolanaLike(d.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):E.hinkalSwap(this,e,t,r,i,a,o,s)}async swapSolana(e,t,n,r,i,a){let o=JSON.parse(n),s=BigInt(o.swapperAccountSalt),{instructionLists:c,addressLookupTableAccount:l}=o.data;return U.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,r,i,a,o){if(!a)throw Error(`subAccount is required`);return n.isSolanaLike(d.validateAndGetChainId(e))?K.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):P.hinkalActionReceive(this,e,t,r,i,a,o)}async actionPrivateWallet(e,t,n,r,i,a,o,s,c,l,u=!1,d,f,p){return this.enforceRateLimit(this.actionPrivateWallet.name,[e,t,n,r,i,a,o,s,c,p]),j.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,r,i,a,o,s,c,l=!1,u,f){return n.isSolanaLike(d.validateAndGetChainId(e))?G.hinkalSolanaProxySwap(this,e,t,i,o,r,s,c,f):te.hinkalProxySwap(this,e,t,r,i,a,o,s,c,l,u,f)}async proxyToPrivate(e,t,r,i,a,o,s){return n.isSolanaLike(d.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],r,i]),K.hinkalSolanaProxyShield(this,e[0],t[0],r,i,s)):R.hinkalProxyToPrivate(this,e,t,i,a,o,r,s)}async proxySend(e,t,r,i,a,o,s){let c=d.validateAndGetChainId(e);if(n.isSolanaLike(c))return W.hinkalSolanaProxySend(this,e[0],t[0],r,i,s);let l=S.createTransaferEmporiumOpsBatch(this,c,e.map(e=>e.erc20TokenAddress),t,i),u=e.map((e,n)=>({token:e,amount:-1n*t[n]}));return await this.actionPrivateWallet(c,[],[],[],l,u,r,a,o,void 0,void 0,void 0,s,void 0)}async multiSendPrivateRecipients(e,t,n){return this.enforceRateLimit(this.multiSendPrivateRecipients.name,[e,t,n]),I.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=re;
@@ -317,13 +317,7 @@ var ye = class {
317
317
  return H(this);
318
318
  }
319
319
  async deposit(e, t, n = !0, r = !1) {
320
- console.log("[Hinkal.deposit] start", { amountChanges: t.map(String) });
321
- try {
322
- let i = await j(this, e, t, n, r);
323
- return console.log("[Hinkal.deposit] success"), i;
324
- } catch (e) {
325
- throw console.log("[Hinkal.deposit] error", e), e;
326
- }
320
+ return j(this, e, t, n, r);
327
321
  }
328
322
  async depositSolana(e, t, n = !1) {
329
323
  return P(this, e, t, n);
@@ -380,45 +374,14 @@ var ye = class {
380
374
  return this.solanaProviderAdapter.getSolanaPublicKey();
381
375
  }
382
376
  async transfer(e, t, n, r, i, a) {
383
- console.log("[Hinkal.transfer] start", {
384
- recipientAddress: n,
385
- amountChanges: t.map(String)
386
- }), this.enforceRateLimit(this.transfer.name, [
377
+ return this.enforceRateLimit(this.transfer.name, [
387
378
  e,
388
379
  t,
389
380
  n
390
- ]);
391
- let o = v(e);
392
- try {
393
- if (c(o)) {
394
- console.log("[Hinkal.transfer] hinkalSolanaTransfer");
395
- let o = await ce(this, e, t, n, r, i, a);
396
- return console.log("[Hinkal.transfer] success (solana)", { result: o }), o;
397
- }
398
- let s = await Y(this, e, t, n, r, i, a);
399
- return console.log("[Hinkal.transfer] success", { result: s }), s;
400
- } catch (e) {
401
- throw console.log("[Hinkal.transfer] error", e), e;
402
- }
381
+ ]), c(v(e)) ? ce(this, e, t, n, r, i, a) : Y(this, e, t, n, r, i, a);
403
382
  }
404
383
  async withdraw(e, t, n, r, i, a, o) {
405
- console.log("[Hinkal.withdraw] start", {
406
- recipientAddress: n,
407
- isRelayerOff: r,
408
- deltaAmounts: t.map(String)
409
- });
410
- let s = v(e);
411
- try {
412
- if (c(s)) {
413
- console.log("[Hinkal.withdraw] hinkalSolanaWithdraw");
414
- let r = await se(this, e, t, n, i, a, o);
415
- return console.log("[Hinkal.withdraw] success (solana)", { result: r }), r;
416
- }
417
- let l = await R(this, e, t, n, r, i, a, o);
418
- return console.log("[Hinkal.withdraw] success", { result: l }), l;
419
- } catch (e) {
420
- throw console.log("[Hinkal.withdraw] error", e), e;
421
- }
384
+ return c(v(e)) ? se(this, e, t, n, i, a, o) : R(this, e, t, n, r, i, a, o);
422
385
  }
423
386
  async withdrawStuckUtxos(e, t) {
424
387
  return _e(this, e, t);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/tron.utils.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/utils/tronSimulation.utils.cjs`),p=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),m=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../API/admin-calls.cjs`);var _=async(e,t)=>({externalActionData:{externalActionId:0n,externalAddress:s.addressToHexFormat(await e.getEthereumAddressByChain(t)),externalActionMetadata:`0x00`},contractTransaction:void 0,contractToApprove:void 0}),v=async(e,t,n,r)=>{let a=[...await l.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},y=async(n,r,i,a,o,c,l,u=!0,d=!1)=>{console.log(`[hinkalTronDeposit] start`,{chainId:r});try{let p=n.getTronWeb(),{hinkalAddress:h,hinkalABI:g}=e.networkRegistry[r].contractData;if(!g)throw Error(`Hinkal ABI not found`);let _=s.evmHexToTronBase58Address(h),v=await n.getEthereumAddressByChain(r),{totalTrxValue:y,tokensNeedingApproval:b}=s.splitTronTokensByNative(i,a);console.log(`[hinkalTronDeposit] reorderZkCallData`);let{a:x,b:S,c:C}=s.parseZkCalldata(o),w=await s.reorderZkCallData(!0,o,l,c,!1);if(!w)throw Error(`Tron proof signature not found`);let T=[w.v,w.r,w.s],E=[l.tokenNumber,l.nullifierAmount,l.outputAmount],D=s.circomDataToArray(c),O=y>0n?Number(y):0;if(d){console.log(`[hinkalTronDeposit] returnTxData triggerSmartContract`);let e=s.createTronCallData(g,`transact`,[T,x,S,C,E,D]),{transaction:n}=await p.transactionBuilder.triggerSmartContract(_,``,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:O,input:e},[],v);return n}console.log(`[hinkalTronDeposit] approveTronTokens`),await s.approveTronTokens(p,v,_,b),b.size>0&&(console.log(`[hinkalTronDeposit] waitForTronErc20Approvals`),await m.waitForTronErc20Approvals(p,v,_,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t})))),u&&(console.log(`[hinkalTronDeposit] simulateTronTransaction + assertTronSufficientBalance`),await f.simulateTronTransaction(r,_,`transact`,g,[T,x,S,C,E,D],v,y>0n?y:void 0),await s.assertTronSufficientBalance(p,r,_,v,s.createTronCallData(g,`transact`,[T,x,S,C,E,D]),y)),console.log(`[hinkalTronDeposit] contract.transact.send`);let k=await p.contract(g,_).transact(T,x,S,C,E,D).send({feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:O}),A=typeof k==`string`?k:k?.txid??k?.transaction?.txID;if(!A)throw Error(`Tron deposit failed (missing txid)`);return console.log(`[hinkalTronDeposit] success`,{txid:A}),A}catch(e){throw console.log(`[hinkalTronDeposit] error`,e),e}},b=async(r,i,a,o=!0,s=!1)=>{console.log(`[hinkalDeposit] start`,{amountChanges:a.map(String)});try{let l=c.validateAndGetChainId(i),u=e.isTronLike(l),d=i.map(e=>e.erc20TokenAddress);console.log(`[hinkalDeposit] chainId`,{chainId:l,isTron:u}),console.log(`[hinkalDeposit] getTransactionParameters + getInputAndOutputUtxos`);let[{externalActionData:f,contractTransaction:m,contractToApprove:g},{inputUtxosArray:b,outputUtxosArray:x}]=await Promise.all([_(r,l),v(r,l,d,a)]);console.log(`[hinkalDeposit] constructZkProof`);let{zkCallData:S,circomData:C,dimData:w}=await p.constructZkProof(r.merkleTreeHinkalByChain[l],b,x,r.userKeys,f.externalActionId,f.externalAddress,f.externalActionMetadata,r.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,l);if(u){console.log(`[hinkalDeposit] hinkalTronDeposit`);let e=await y(r,l,i,a,S,C,w,o,s);return console.log(`[hinkalDeposit] success (tron)`,{tronResult:e}),e}console.log(`[hinkalDeposit] transactCallDirect`);let T=await h.transactCallDirect(r,l,a,i,S,C,w,g,m,o,s);return console.log(`[hinkalDeposit] success`,{tx:T}),T}catch(e){throw console.log(`[hinkalDeposit] error`,e),e}},x=async(i,s,l,u,f=!0,m=!1,v)=>{let b=c.validateAndGetChainId(s),x=e.isTronLike(b),S=s.map(e=>e.erc20TokenAddress),[C,w,T,,E]=u.split(`,`);if(!o.isValidPrivateAddress(u))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let D=S.map(e=>[new a.Utxo({amount:0n,erc20TokenAddress:e,nullifyingKey:i.userKeys.getShieldedPrivateKey(),spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),new a.Utxo({amount:0n,erc20TokenAddress:e,nullifyingKey:i.userKeys.getShieldedPrivateKey(),spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})]),O=S.map((e,t)=>[new a.Utxo({amount:l[t],erc20TokenAddress:e,H0:[BigInt(w),BigInt(T)],stealthAddress:C,encryptionKey:E,isNewStyle:!0})]),{externalActionData:k,contractTransaction:A,contractToApprove:j}=await _(i,b),{zkCallData:M,circomData:N,dimData:P}=await p.constructZkProof(i.merkleTreeHinkalByChain[b],D,O,i.userKeys,k.externalActionId,k.externalAddress,k.externalActionMetadata,i.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,b);if(x)return await y(i,b,s,l,M,N,P,f,m);let F=await h.transactCallDirect(i,b,l,s,M,N,P,j,A,f,m);return g.emitTxPublicData(d.constructAdminData(v,b,S,l,await i.getEthereumAddress())),F};exports.hinkalDeposit=b,exports.hinkalDepositForOther=x;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/tron.utils.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/utils/tronSimulation.utils.cjs`),p=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),m=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../API/admin-calls.cjs`);var _=async(e,t)=>({externalActionData:{externalActionId:0n,externalAddress:s.addressToHexFormat(await e.getEthereumAddressByChain(t)),externalActionMetadata:`0x00`},contractTransaction:void 0,contractToApprove:void 0}),v=async(e,t,n,r)=>{let a=[...await l.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},y=async(n,r,i,a,o,c,l,u=!0,d=!1)=>{let p=n.getTronWeb(),{hinkalAddress:h,hinkalABI:g}=e.networkRegistry[r].contractData;if(!g)throw Error(`Hinkal ABI not found`);let _=s.evmHexToTronBase58Address(h),v=await n.getEthereumAddressByChain(r),{totalTrxValue:y,tokensNeedingApproval:b}=s.splitTronTokensByNative(i,a),{a:x,b:S,c:C}=s.parseZkCalldata(o),w=await s.reorderZkCallData(!0,o,l,c,!1);if(!w)throw Error(`Tron proof signature not found`);let T=[w.v,w.r,w.s],E=[l.tokenNumber,l.nullifierAmount,l.outputAmount],D=s.circomDataToArray(c),O=y>0n?Number(y):0;if(d){let e=s.createTronCallData(g,`transact`,[T,x,S,C,E,D]),{transaction:n}=await p.transactionBuilder.triggerSmartContract(_,``,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:O,input:e},[],v);return n}await s.approveTronTokens(p,v,_,b),b.size>0&&await m.waitForTronErc20Approvals(p,v,_,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t}))),u&&(await f.simulateTronTransaction(r,_,`transact`,g,[T,x,S,C,E,D],v,y>0n?y:void 0),await s.assertTronSufficientBalance(p,r,_,v,s.createTronCallData(g,`transact`,[T,x,S,C,E,D]),y));let k=await p.contract(g,_).transact(T,x,S,C,E,D).send({feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:O}),A=typeof k==`string`?k:k?.txid??k?.transaction?.txID;if(!A)throw Error(`Tron deposit failed (missing txid)`);return A},b=async(r,i,a,o=!0,s=!1)=>{let l=c.validateAndGetChainId(i),u=e.isTronLike(l),d=i.map(e=>e.erc20TokenAddress),[{externalActionData:f,contractTransaction:m,contractToApprove:g},{inputUtxosArray:b,outputUtxosArray:x}]=await Promise.all([_(r,l),v(r,l,d,a)]),{zkCallData:S,circomData:C,dimData:w}=await p.constructZkProof(r.merkleTreeHinkalByChain[l],b,x,r.userKeys,f.externalActionId,f.externalAddress,f.externalActionMetadata,r.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,l);return u?await y(r,l,i,a,S,C,w,o,s):await h.transactCallDirect(r,l,a,i,S,C,w,g,m,o,s)},x=async(i,s,l,u,f=!0,m=!1,v)=>{let b=c.validateAndGetChainId(s),x=e.isTronLike(b),S=s.map(e=>e.erc20TokenAddress),[C,w,T,,E]=u.split(`,`);if(!o.isValidPrivateAddress(u))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let D=S.map(e=>[new a.Utxo({amount:0n,erc20TokenAddress:e,nullifyingKey:i.userKeys.getShieldedPrivateKey(),spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),new a.Utxo({amount:0n,erc20TokenAddress:e,nullifyingKey:i.userKeys.getShieldedPrivateKey(),spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})]),O=S.map((e,t)=>[new a.Utxo({amount:l[t],erc20TokenAddress:e,H0:[BigInt(w),BigInt(T)],stealthAddress:C,encryptionKey:E,isNewStyle:!0})]),{externalActionData:k,contractTransaction:A,contractToApprove:j}=await _(i,b),{zkCallData:M,circomData:N,dimData:P}=await p.constructZkProof(i.merkleTreeHinkalByChain[b],D,O,i.userKeys,k.externalActionId,k.externalAddress,k.externalActionMetadata,i.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,b);if(x)return await y(i,b,s,l,M,N,P,f,m);let F=await h.transactCallDirect(i,b,l,s,M,N,P,j,A,f,m);return g.emitTxPublicData(d.constructAdminData(v,b,S,l,await i.getEthereumAddress())),F};exports.hinkalDeposit=b,exports.hinkalDepositForOther=x;
@@ -35,88 +35,61 @@ var D = async (e, t) => ({
35
35
  outputUtxosArray: a
36
36
  };
37
37
  }, k = async (e, r, i, a, o, s, c, l = !0, v = !1) => {
38
- console.log("[hinkalTronDeposit] start", { chainId: r });
39
- try {
40
- let y = e.getTronWeb(), { hinkalAddress: b, hinkalABI: x } = t[r].contractData;
41
- if (!x) throw Error("Hinkal ABI not found");
42
- let C = m(b), T = await e.getEthereumAddressByChain(r), { totalTrxValue: E, tokensNeedingApproval: D } = _(i, a);
43
- console.log("[hinkalTronDeposit] reorderZkCallData");
44
- let { a: O, b: k, c: A } = h(o), j = await g(!0, o, c, s, !1);
45
- if (!j) throw Error("Tron proof signature not found");
46
- let M = [
47
- j.v,
48
- j.r,
49
- j.s
50
- ], N = [
51
- c.tokenNumber,
52
- c.nullifierAmount,
53
- c.outputAmount
54
- ], P = f(s), F = E > 0n ? Number(E) : 0;
55
- if (v) {
56
- console.log("[hinkalTronDeposit] returnTxData triggerSmartContract");
57
- let e = p(x, "transact", [
58
- M,
59
- O,
60
- k,
61
- A,
62
- N,
63
- P
64
- ]), { transaction: t } = await y.transactionBuilder.triggerSmartContract(C, "", {
65
- feeLimit: n,
66
- callValue: F,
67
- input: e
68
- }, [], T);
69
- return t;
70
- }
71
- console.log("[hinkalTronDeposit] approveTronTokens"), await u(y, T, C, D), D.size > 0 && (console.log("[hinkalTronDeposit] waitForTronErc20Approvals"), await w(y, T, C, Array.from(D.entries()).map(([e, t]) => ({
72
- tokenAddress: e,
73
- requiredAmount: t
74
- })))), l && (console.log("[hinkalTronDeposit] simulateTronTransaction + assertTronSufficientBalance"), await S(r, C, "transact", x, [
38
+ let y = e.getTronWeb(), { hinkalAddress: b, hinkalABI: x } = t[r].contractData;
39
+ if (!x) throw Error("Hinkal ABI not found");
40
+ let C = m(b), T = await e.getEthereumAddressByChain(r), { totalTrxValue: E, tokensNeedingApproval: D } = _(i, a), { a: O, b: k, c: A } = h(o), j = await g(!0, o, c, s, !1);
41
+ if (!j) throw Error("Tron proof signature not found");
42
+ let M = [
43
+ j.v,
44
+ j.r,
45
+ j.s
46
+ ], N = [
47
+ c.tokenNumber,
48
+ c.nullifierAmount,
49
+ c.outputAmount
50
+ ], P = f(s), F = E > 0n ? Number(E) : 0;
51
+ if (v) {
52
+ let e = p(x, "transact", [
75
53
  M,
76
54
  O,
77
55
  k,
78
56
  A,
79
57
  N,
80
58
  P
81
- ], T, E > 0n ? E : void 0), await d(y, r, C, T, p(x, "transact", [
82
- M,
83
- O,
84
- k,
85
- A,
86
- N,
87
- P
88
- ]), E)), console.log("[hinkalTronDeposit] contract.transact.send");
89
- let I = await y.contract(x, C).transact(M, O, k, A, N, P).send({
59
+ ]), { transaction: t } = await y.transactionBuilder.triggerSmartContract(C, "", {
90
60
  feeLimit: n,
91
- callValue: F
92
- }), L = typeof I == "string" ? I : I?.txid ?? I?.transaction?.txID;
93
- if (!L) throw Error("Tron deposit failed (missing txid)");
94
- return console.log("[hinkalTronDeposit] success", { txid: L }), L;
95
- } catch (e) {
96
- throw console.log("[hinkalTronDeposit] error", e), e;
61
+ callValue: F,
62
+ input: e
63
+ }, [], T);
64
+ return t;
97
65
  }
66
+ await u(y, T, C, D), D.size > 0 && await w(y, T, C, Array.from(D.entries()).map(([e, t]) => ({
67
+ tokenAddress: e,
68
+ requiredAmount: t
69
+ }))), l && (await S(r, C, "transact", x, [
70
+ M,
71
+ O,
72
+ k,
73
+ A,
74
+ N,
75
+ P
76
+ ], T, E > 0n ? E : void 0), await d(y, r, C, T, p(x, "transact", [
77
+ M,
78
+ O,
79
+ k,
80
+ A,
81
+ N,
82
+ P
83
+ ]), E));
84
+ let I = await y.contract(x, C).transact(M, O, k, A, N, P).send({
85
+ feeLimit: n,
86
+ callValue: F
87
+ }), L = typeof I == "string" ? I : I?.txid ?? I?.transaction?.txID;
88
+ if (!L) throw Error("Tron deposit failed (missing txid)");
89
+ return L;
98
90
  }, A = async (t, n, a, o = !0, s = !1) => {
99
- console.log("[hinkalDeposit] start", { amountChanges: a.map(String) });
100
- try {
101
- let c = v(n), l = e(c), u = n.map((e) => e.erc20TokenAddress);
102
- console.log("[hinkalDeposit] chainId", {
103
- chainId: c,
104
- isTron: l
105
- }), console.log("[hinkalDeposit] getTransactionParameters + getInputAndOutputUtxos");
106
- let [{ externalActionData: d, contractTransaction: f, contractToApprove: p }, { inputUtxosArray: m, outputUtxosArray: h }] = await Promise.all([D(t, c), O(t, c, u, a)]);
107
- console.log("[hinkalDeposit] constructZkProof");
108
- let { zkCallData: g, circomData: _, dimData: y } = await C(t.merkleTreeHinkalByChain[c], m, h, t.userKeys, d.externalActionId, d.externalAddress, d.externalActionMetadata, t.generateProofRemotely, i, r, c);
109
- if (l) {
110
- console.log("[hinkalDeposit] hinkalTronDeposit");
111
- let e = await k(t, c, n, a, g, _, y, o, s);
112
- return console.log("[hinkalDeposit] success (tron)", { tronResult: e }), e;
113
- }
114
- console.log("[hinkalDeposit] transactCallDirect");
115
- let b = await T(t, c, a, n, g, _, y, p, f, o, s);
116
- return console.log("[hinkalDeposit] success", { tx: b }), b;
117
- } catch (e) {
118
- throw console.log("[hinkalDeposit] error", e), e;
119
- }
91
+ let c = v(n), l = e(c), u = n.map((e) => e.erc20TokenAddress), [{ externalActionData: d, contractTransaction: f, contractToApprove: p }, { inputUtxosArray: m, outputUtxosArray: h }] = await Promise.all([D(t, c), O(t, c, u, a)]), { zkCallData: g, circomData: _, dimData: y } = await C(t.merkleTreeHinkalByChain[c], m, h, t.userKeys, d.externalActionId, d.externalAddress, d.externalActionMetadata, t.generateProofRemotely, i, r, c);
92
+ return l ? await k(t, c, n, a, g, _, y, o, s) : await T(t, c, a, n, g, _, y, p, f, o, s);
120
93
  }, j = async (t, n, o, l, u = !0, d = !1, f) => {
121
94
  let p = v(n), m = e(p), h = n.map((e) => e.erc20TokenAddress), [g, _, y, , b] = l.split(",");
122
95
  if (!c(l)) throw Error(a.RECIPIENT_FORMAT_INCORRECT);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/time.utils.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var _=async(e,t,n,i,a,o)=>{let s=[...await c.addPaddingToUtxos(e,t,n,i)],u=[],d=r.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,s[t],i[t],d,!0,a,t===0?o:0n);u.push(n)}return{inputUtxosArray:s,outputUtxosArray:u}},v=async(r,c,l,v,y,b,x)=>{console.log(`[hinkalTransfer] start`,{amountChangesBase:l.map(String),recipientAddress:v});try{let S=s.validateAndGetChainId(c),C=e.isTronLike(S);if(!a.isValidPrivateAddress(v))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);console.log(`[hinkalTransfer] getEthereumAddressByChain`);let w=o.addressToHexFormat(await r.getEthereumAddressByChain(S)),T=c.map(e=>e.erc20TokenAddress);console.log(`[hinkalTransfer] modifyVolatileTokenAmountChanges`);let E=await u.modifyVolatileTokenAmountChanges(S,c,l);console.log(`[hinkalTransfer] getFeeStructure`);let D=b??await f.getFeeStructure(S,y,T,i.ExternalActionId.Transact,[],5n);D.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let O=c[0];if(!O)throw Error(`Transfer Action: No Token Found`);let k=-E[0];console.log(`[hinkalTransfer] calculateModifiedFeeStructure + mergeWithFeeStructure`);let A=await p.calculateModifiedFeeStructure(S,O,k,D);await g.mergeWithFeeStructure(S,T,E,A),console.log(`[hinkalTransfer] getRandomRelay + getInputAndOutputUtxos`);let[j,{inputUtxosArray:M,outputUtxosArray:N}]=await Promise.all([r.getRandomRelay(S,!0),_(r,S,T,E,v,k)]);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let P={externalActionId:0n,externalAddress:j,externalActionMetadata:`0x00`};console.log(`[hinkalTransfer] constructZkProof`);let{zkCallData:F,circomData:I,dimData:L,commitmentValidationData:R}=await m.constructZkProof(r.merkleTreeHinkalByChain[S],M,N,r.userKeys,P.externalActionId,P.externalAddress,P.externalActionMetadata,r.generateProofRemotely,A,j,S);console.log(`[hinkalTransfer] reorderZkCallData`);let z=await o.reorderZkCallData(C,F,L,I),B=d.constructAdminData(x,S,T,E,w);console.log(`[hinkalTransfer] transactCallRelayer`);let V=await h.transactCallRelayer(S,F,L,I,R,void 0,void 0,B,z);return console.log(`[hinkalTransfer] success`,{txHash:V}),V}catch(e){throw console.log(`[hinkalTransfer] error`,e),e}};exports.hinkalTransfer=v;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/time.utils.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../functions/utils/addresses.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var _=async(e,t,n,i,a,o)=>{let s=[...await c.addPaddingToUtxos(e,t,n,i)],u=[],d=r.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,s[t],i[t],d,!0,a,t===0?o:0n);u.push(n)}return{inputUtxosArray:s,outputUtxosArray:u}},v=async(r,c,l,v,y,b,x)=>{let S=s.validateAndGetChainId(c),C=e.isTronLike(S);if(!a.isValidPrivateAddress(v))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let w=o.addressToHexFormat(await r.getEthereumAddressByChain(S)),T=c.map(e=>e.erc20TokenAddress),E=await u.modifyVolatileTokenAmountChanges(S,c,l),D=b??await f.getFeeStructure(S,y,T,i.ExternalActionId.Transact,[],5n);D.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let O=c[0];if(!O)throw Error(`Transfer Action: No Token Found`);let k=-E[0],A=await p.calculateModifiedFeeStructure(S,O,k,D);await g.mergeWithFeeStructure(S,T,E,A);let[j,{inputUtxosArray:M,outputUtxosArray:N}]=await Promise.all([r.getRandomRelay(S,!0),_(r,S,T,E,v,k)]);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let P={externalActionId:0n,externalAddress:j,externalActionMetadata:`0x00`},{zkCallData:F,circomData:I,dimData:L,commitmentValidationData:R}=await m.constructZkProof(r.merkleTreeHinkalByChain[S],M,N,r.userKeys,P.externalActionId,P.externalAddress,P.externalActionMetadata,r.generateProofRemotely,A,j,S),z=await o.reorderZkCallData(C,F,L,I);return await h.transactCallRelayer(S,F,L,I,R,void 0,void 0,d.constructAdminData(x,S,T,E,w),z)};exports.hinkalTransfer=v;
@@ -28,43 +28,22 @@ var v = async (e, t, n, i, a, o) => {
28
28
  outputUtxosArray: c
29
29
  };
30
30
  }, y = async (r, l, u, y, b, x, S) => {
31
- console.log("[hinkalTransfer] start", {
32
- amountChangesBase: u.map(String),
33
- recipientAddress: y
34
- });
35
- try {
36
- let C = c(l), w = e(C);
37
- if (!a(y)) throw Error(n.RECIPIENT_FORMAT_INCORRECT);
38
- console.log("[hinkalTransfer] getEthereumAddressByChain");
39
- let T = o(await r.getEthereumAddressByChain(C)), E = l.map((e) => e.erc20TokenAddress);
40
- console.log("[hinkalTransfer] modifyVolatileTokenAmountChanges");
41
- let D = await d(C, l, u);
42
- console.log("[hinkalTransfer] getFeeStructure");
43
- let O = x ?? await p(C, b, E, i.Transact, [], 5n);
44
- O.variableRate ||= t;
45
- let k = l[0];
46
- if (!k) throw Error("Transfer Action: No Token Found");
47
- let A = -D[0];
48
- console.log("[hinkalTransfer] calculateModifiedFeeStructure + mergeWithFeeStructure");
49
- let j = await m(C, k, A, O);
50
- await _(C, E, D, j), console.log("[hinkalTransfer] getRandomRelay + getInputAndOutputUtxos");
51
- let [M, { inputUtxosArray: N, outputUtxosArray: P }] = await Promise.all([r.getRandomRelay(C, !0), v(r, C, E, D, y, A)]);
52
- if (!M) throw Error(n.RELAYER_NOT_AVAILABLE);
53
- let F = {
54
- externalActionId: 0n,
55
- externalAddress: M,
56
- externalActionMetadata: "0x00"
57
- };
58
- console.log("[hinkalTransfer] constructZkProof");
59
- let { zkCallData: I, circomData: L, dimData: R, commitmentValidationData: z } = await h(r.merkleTreeHinkalByChain[C], N, P, r.userKeys, F.externalActionId, F.externalAddress, F.externalActionMetadata, r.generateProofRemotely, j, M, C);
60
- console.log("[hinkalTransfer] reorderZkCallData");
61
- let B = await s(w, I, R, L), V = f(S, C, E, D, T);
62
- console.log("[hinkalTransfer] transactCallRelayer");
63
- let H = await g(C, I, R, L, z, void 0, void 0, V, B);
64
- return console.log("[hinkalTransfer] success", { txHash: H }), H;
65
- } catch (e) {
66
- throw console.log("[hinkalTransfer] error", e), e;
67
- }
31
+ let C = c(l), w = e(C);
32
+ if (!a(y)) throw Error(n.RECIPIENT_FORMAT_INCORRECT);
33
+ let T = o(await r.getEthereumAddressByChain(C)), E = l.map((e) => e.erc20TokenAddress), D = await d(C, l, u), O = x ?? await p(C, b, E, i.Transact, [], 5n);
34
+ O.variableRate ||= t;
35
+ let k = l[0];
36
+ if (!k) throw Error("Transfer Action: No Token Found");
37
+ let A = -D[0], j = await m(C, k, A, O);
38
+ await _(C, E, D, j);
39
+ let [M, { inputUtxosArray: N, outputUtxosArray: P }] = await Promise.all([r.getRandomRelay(C, !0), v(r, C, E, D, y, A)]);
40
+ if (!M) throw Error(n.RELAYER_NOT_AVAILABLE);
41
+ let F = {
42
+ externalActionId: 0n,
43
+ externalAddress: M,
44
+ externalActionMetadata: "0x00"
45
+ }, { zkCallData: I, circomData: L, dimData: R, commitmentValidationData: z } = await h(r.merkleTreeHinkalByChain[C], N, P, r.userKeys, F.externalActionId, F.externalAddress, F.externalActionMetadata, r.generateProofRemotely, j, M, C), B = await s(w, I, R, L);
46
+ return await g(C, I, R, L, z, void 0, void 0, f(S, C, E, D, T), B);
68
47
  };
69
48
  //#endregion
70
49
  export { y as hinkalTransfer };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var y=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},b=async(i,c,l,b,x,S,C,w)=>{console.log(`[hinkalWithdraw] start`,{deltaAmountsBase:l.map(String),recipientAddress:b,isRelayerOff:x});try{let T=s.validateAndGetChainId(c),E=e.isTronLike(T);console.log(`[hinkalWithdraw] getEthereumAddressByChain`);let D=o.addressToHexFormat(await i.getEthereumAddressByChain(T)),O=c.map(e=>e.erc20TokenAddress);console.log(`[hinkalWithdraw] modifyVolatileTokenAmountChanges`);let k=await u.modifyVolatileTokenAmountChanges(T,c,l),A=c[0];if(!A)throw Error(`Deposit Action: No Token Found`);let j;if(!x){console.log(`[hinkalWithdraw] getFeeStructure + mergeWithFeeStructure`);let e=C??await f.getFeeStructure(T,S,O,a.ExternalActionId.Transact);j=await p.calculateModifiedFeeStructure(T,A,-k[0],e),await v.mergeWithFeeStructure(T,O,k,j)}let M={externalActionId:0n,externalAddress:o.addressToHexFormat(b),externalActionMetadata:`0x00`};console.log(`[hinkalWithdraw] getRandomRelay + getInputAndOutputUtxos`);let[N,{inputUtxosArray:P,outputUtxosArray:F}]=await Promise.all([i.getRandomRelay(T,!0),y(i,T,O,k)]);if(!x&&!N)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);console.log(`[hinkalWithdraw] constructZkProof`);let{zkCallData:I,circomData:L,dimData:R,commitmentValidationData:z}=await m.constructZkProof(i.merkleTreeHinkalByChain[T],P,F,i.userKeys,M.externalActionId,M.externalAddress,M.externalActionMetadata,i.generateProofRemotely,j??n.zeroFeeStructure,x?t.zeroAddress:N,T,void 0,void 0,x?D:void 0);console.log(`[hinkalWithdraw] reorderZkCallData`);let B=E&&x?void 0:await o.reorderZkCallData(E,I,R,L);if(x){if(!A)throw Error(`Withdraw Action: No Token Found`);if(E){console.log(`[hinkalWithdraw] transactCallDirectTron`);let e=await _.transactCallDirectTron(i,T,k[0],A,I,L,R);return console.log(`[hinkalWithdraw] success (tron direct)`,{txid:e}),e}console.log(`[hinkalWithdraw] transactCallDirect`);let e=await h.transactCallDirect(i,T,k[0],A,I,L,R);return console.log(`[hinkalWithdraw] success (direct)`,{tx:e}),e}let V=d.constructAdminData(w,T,O,k,D);console.log(`[hinkalWithdraw] transactCallRelayer`);let H=await g.transactCallRelayer(T,I,R,L,z,void 0,void 0,V,B);return console.log(`[hinkalWithdraw] success (relayer)`,{txHash:H}),H}catch(e){throw console.log(`[hinkalWithdraw] error`,e),e}};exports.hinkalWithdraw=b;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var y=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},b=async(i,c,l,b,x,S,C,w)=>{let T=s.validateAndGetChainId(c),E=e.isTronLike(T),D=o.addressToHexFormat(await i.getEthereumAddressByChain(T)),O=c.map(e=>e.erc20TokenAddress),k=await u.modifyVolatileTokenAmountChanges(T,c,l),A=c[0];if(!A)throw Error(`Deposit Action: No Token Found`);let j;if(!x){let e=C??await f.getFeeStructure(T,S,O,a.ExternalActionId.Transact);j=await p.calculateModifiedFeeStructure(T,A,-k[0],e),await v.mergeWithFeeStructure(T,O,k,j)}let M={externalActionId:0n,externalAddress:o.addressToHexFormat(b),externalActionMetadata:`0x00`},[N,{inputUtxosArray:P,outputUtxosArray:F}]=await Promise.all([i.getRandomRelay(T,!0),y(i,T,O,k)]);if(!x&&!N)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{zkCallData:I,circomData:L,dimData:R,commitmentValidationData:z}=await m.constructZkProof(i.merkleTreeHinkalByChain[T],P,F,i.userKeys,M.externalActionId,M.externalAddress,M.externalActionMetadata,i.generateProofRemotely,j??n.zeroFeeStructure,x?t.zeroAddress:N,T,void 0,void 0,x?D:void 0),B=E&&x?void 0:await o.reorderZkCallData(E,I,R,L);if(x){if(!A)throw Error(`Withdraw Action: No Token Found`);return E?await _.transactCallDirectTron(i,T,k[0],A,I,L,R):await h.transactCallDirect(i,T,k[0],A,I,L,R)}return await g.transactCallRelayer(T,I,R,L,z,void 0,void 0,d.constructAdminData(w,T,O,k,D),B)};exports.hinkalWithdraw=b;
@@ -30,54 +30,25 @@ var b = async (e, t, n, r) => {
30
30
  outputUtxosArray: o
31
31
  };
32
32
  }, x = async (i, l, u, x, S, C, w, T) => {
33
- console.log("[hinkalWithdraw] start", {
34
- deltaAmountsBase: u.map(String),
35
- recipientAddress: x,
36
- isRelayerOff: S
37
- });
38
- try {
39
- let E = c(l), D = e(E);
40
- console.log("[hinkalWithdraw] getEthereumAddressByChain");
41
- let O = o(await i.getEthereumAddressByChain(E)), k = l.map((e) => e.erc20TokenAddress);
42
- console.log("[hinkalWithdraw] modifyVolatileTokenAmountChanges");
43
- let A = await d(E, l, u), j = l[0];
44
- if (!j) throw Error("Deposit Action: No Token Found");
45
- let M;
46
- if (!S) {
47
- console.log("[hinkalWithdraw] getFeeStructure + mergeWithFeeStructure");
48
- let e = w ?? await p(E, C, k, a.Transact);
49
- M = await m(E, j, -A[0], e), await y(E, k, A, M);
50
- }
51
- let N = {
52
- externalActionId: 0n,
53
- externalAddress: o(x),
54
- externalActionMetadata: "0x00"
55
- };
56
- console.log("[hinkalWithdraw] getRandomRelay + getInputAndOutputUtxos");
57
- let [P, { inputUtxosArray: F, outputUtxosArray: I }] = await Promise.all([i.getRandomRelay(E, !0), b(i, E, k, A)]);
58
- if (!S && !P) throw Error(r.RELAYER_NOT_AVAILABLE);
59
- console.log("[hinkalWithdraw] constructZkProof");
60
- let { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await h(i.merkleTreeHinkalByChain[E], F, I, i.userKeys, N.externalActionId, N.externalAddress, N.externalActionMetadata, i.generateProofRemotely, M ?? n, S ? t : P, E, void 0, void 0, S ? O : void 0);
61
- console.log("[hinkalWithdraw] reorderZkCallData");
62
- let V = D && S ? void 0 : await s(D, L, z, R);
63
- if (S) {
64
- if (!j) throw Error("Withdraw Action: No Token Found");
65
- if (D) {
66
- console.log("[hinkalWithdraw] transactCallDirectTron");
67
- let e = await v(i, E, A[0], j, L, R, z);
68
- return console.log("[hinkalWithdraw] success (tron direct)", { txid: e }), e;
69
- }
70
- console.log("[hinkalWithdraw] transactCallDirect");
71
- let e = await g(i, E, A[0], j, L, R, z);
72
- return console.log("[hinkalWithdraw] success (direct)", { tx: e }), e;
73
- }
74
- let H = f(T, E, k, A, O);
75
- console.log("[hinkalWithdraw] transactCallRelayer");
76
- let U = await _(E, L, z, R, B, void 0, void 0, H, V);
77
- return console.log("[hinkalWithdraw] success (relayer)", { txHash: U }), U;
78
- } catch (e) {
79
- throw console.log("[hinkalWithdraw] error", e), e;
33
+ let E = c(l), D = e(E), O = o(await i.getEthereumAddressByChain(E)), k = l.map((e) => e.erc20TokenAddress), A = await d(E, l, u), j = l[0];
34
+ if (!j) throw Error("Deposit Action: No Token Found");
35
+ let M;
36
+ if (!S) {
37
+ let e = w ?? await p(E, C, k, a.Transact);
38
+ M = await m(E, j, -A[0], e), await y(E, k, A, M);
80
39
  }
40
+ let N = {
41
+ externalActionId: 0n,
42
+ externalAddress: o(x),
43
+ externalActionMetadata: "0x00"
44
+ }, [P, { inputUtxosArray: F, outputUtxosArray: I }] = await Promise.all([i.getRandomRelay(E, !0), b(i, E, k, A)]);
45
+ if (!S && !P) throw Error(r.RELAYER_NOT_AVAILABLE);
46
+ let { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await h(i.merkleTreeHinkalByChain[E], F, I, i.userKeys, N.externalActionId, N.externalAddress, N.externalActionMetadata, i.generateProofRemotely, M ?? n, S ? t : P, E, void 0, void 0, S ? O : void 0), V = D && S ? void 0 : await s(D, L, z, R);
47
+ if (S) {
48
+ if (!j) throw Error("Withdraw Action: No Token Found");
49
+ return D ? await v(i, E, A[0], j, L, R, z) : await g(i, E, A[0], j, L, R, z);
50
+ }
51
+ return await _(E, L, z, R, B, void 0, void 0, f(T, E, k, A, O), V);
81
52
  };
82
53
  //#endregion
83
54
  export { x as hinkalWithdraw };
@@ -1 +1 @@
1
- const e=require(`../../constants/fees.constants.cjs`),t=require(`../utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/logger.cjs`),r=require(`../utils/erc20tokenFunctions.cjs`),i=require(`./process-gas-estimates.cjs`);var a=async(a,o,s,c,l=[],u=0n,d)=>{console.log(`[getFeeStructure] start`,{chainId:a,feeTokenAddress:o,externalActionId:c});try{let f=await r.getErc20TokenFromAPI(a,o??e.defaultFeeToken);if(!f)throw Error(`failed to find feeToken`);let p=s.some(e=>t.caseInsensitiveEqual(e,o))?s.length+1:s.length;console.log(`[getFeeStructure] processGasEstimates`);let{priceOfTransactionInToken:m}=await i.processGasEstimates(a,f,c,p,void 0,l,d);if(m===void 0)throw Error(`failed to process gas estimates`);let h={feeToken:f.erc20TokenAddress,flatFee:m,variableRate:u};return n.Logger.log(h),console.log(`[getFeeStructure] success`,{feeStructure:h}),h}catch(e){throw console.log(`[getFeeStructure] error`,e),e}};exports.getFeeStructure=a;
1
+ const e=require(`../../constants/fees.constants.cjs`),t=require(`../utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/logger.cjs`),r=require(`../utils/erc20tokenFunctions.cjs`),i=require(`./process-gas-estimates.cjs`);var a=async(a,o,s,c,l=[],u=0n,d)=>{let f=await r.getErc20TokenFromAPI(a,o??e.defaultFeeToken);if(!f)throw Error(`failed to find feeToken`);let{priceOfTransactionInToken:p}=await i.processGasEstimates(a,f,c,s.some(e=>t.caseInsensitiveEqual(e,o))?s.length+1:s.length,void 0,l,d);if(p===void 0)throw Error(`failed to process gas estimates`);let m={feeToken:f.erc20TokenAddress,flatFee:p,variableRate:u};return n.Logger.log(m),m};exports.getFeeStructure=a;
@@ -5,27 +5,16 @@ import { getErc20TokenFromAPI as r } from "../utils/erc20tokenFunctions.mjs";
5
5
  import { processGasEstimates as i } from "./process-gas-estimates.mjs";
6
6
  //#region libs/shared/common/src/functions/pre-transaction/getFeeStructure.ts
7
7
  var a = async (a, o, s, c, l = [], u = 0n, d) => {
8
- console.log("[getFeeStructure] start", {
9
- chainId: a,
10
- feeTokenAddress: o,
11
- externalActionId: c
12
- });
13
- try {
14
- let f = await r(a, o ?? e);
15
- if (!f) throw Error("failed to find feeToken");
16
- let p = s.some((e) => t(e, o)) ? s.length + 1 : s.length;
17
- console.log("[getFeeStructure] processGasEstimates");
18
- let { priceOfTransactionInToken: m } = await i(a, f, c, p, void 0, l, d);
19
- if (m === void 0) throw Error("failed to process gas estimates");
20
- let h = {
21
- feeToken: f.erc20TokenAddress,
22
- flatFee: m,
23
- variableRate: u
24
- };
25
- return n.log(h), console.log("[getFeeStructure] success", { feeStructure: h }), h;
26
- } catch (e) {
27
- throw console.log("[getFeeStructure] error", e), e;
28
- }
8
+ let f = await r(a, o ?? e);
9
+ if (!f) throw Error("failed to find feeToken");
10
+ let { priceOfTransactionInToken: p } = await i(a, f, c, s.some((e) => t(e, o)) ? s.length + 1 : s.length, void 0, l, d);
11
+ if (p === void 0) throw Error("failed to process gas estimates");
12
+ let m = {
13
+ feeToken: f.erc20TokenAddress,
14
+ flatFee: p,
15
+ variableRate: u
16
+ };
17
+ return n.log(m), m;
29
18
  };
30
19
  //#endregion
31
20
  export { a as getFeeStructure };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),u=require(`./signedMessageHash.cjs`),d=require(`./generateCircomData.cjs`),f=require(`../../data-structures/AccountActions/AccountActions.cjs`),ee=require(`./generateMainAndCommitmentZkProof.cjs`),p=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),m=require(`../private-wallet/emporium.helpers.cjs`);var h=async(h,g,_,v,y,b,x,S,C,w=t.zeroAddress,T=e.chainIds.localhost,E=g.map(()=>!1),D=void 0,O,k)=>{console.log(`[constructZkProof] start`,{chainId:T,externalActionId:String(y)});try{let A=l.getZkProofVerifierName(g,_);console.log(`[constructZkProof] calcAmountChanges + encryptedOutputs`);let j=l.calcAmountChanges(g,_),M=g.map(e=>e[0].erc20TokenAddress),N=l.calcEncryptedOutputs(_),P=t.defaultSignatureData,F=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:te}=v.getSpendingKeyPair(),I=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),F),F,v.getSpendingKeyPair().pubSpendingBJJPoint),ne=g.map(e=>e.map(e=>e.getConstructableParams()));console.log(`[constructZkProof] getDataFromWorkers`);let{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:L,inNullifiers:R}=await p.getDataFromWorkers(T,h,ne),z=l.buildOutCommitments(_),B=r.randomBigInt(31),V=n.poseidonFunction(B),H=BigInt(_.length>0?_[0][0].timeStamp:a.getCurrentTimeInSeconds()),U={rootHashHinkal:L,spendingPublicKey:te,nullifyingPrivateKey:F,erc20TokenAddresses:M,amountChanges:j,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:R,inCommitmentSiblings:re,inCommitmentSiblingSides:ie,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:H,outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:z,calldataHash:0n,messageSeed:B,H0Ax:c.takeOffHighestBit(I.extraRandomization),H0Ay:I.H0},W=l.calcPublicSignalCount(A,U.erc20TokenAddresses,U.amountChanges,U.inNullifiers,U.outCommitments),G=l.calcAmountChanges(g,_,!0),K=l.getSlippageValues(G);s.Logger.log({publicSignalCount:W});let q=Array.isArray(x)?x:[x],J=e.getOnchainChainId(T),ae=k?f.AccountActions.getSignerAddressFromPrivateKey(J,k):void 0;console.log(`[constructZkProof] encodeEmporiumMetadata`);let Y=y===o.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(T,b??t.zeroAddress,k,q,V,ae):await m.encodeEmporiumMetadata(T,t.zeroAddress,void 0,y===0n?[]:q,V,t.zeroAddress);U.calldataHash=l.createCallDataHash(W,w,b,y,Y,N,D,K,E,C,P,O);let X=u.computeSignedMessageHashEvm({rootHashHinkal:L,erc20TokenAddresses:M,amountChanges:j,outTimeStamp:H,inNullifiers:R,outCommitments:z,calldataHash:U.calldataHash,message:V,outH1Ay:I.H1,H0Ax:U.H0Ax,H0Ay:I.H0}),{R8:Z,S:oe}=v.signEddsa(X);U.eddsaSignature=[Z[0],Z[1],oe],U.signedMessageHash=X;let Q=A.startsWith(`mainEVMCircuitMin0`),se={outTimeStamp:H,calldataHash:U.calldataHash,messageSeed:B};console.log(`[constructZkProof] generateMainAndCommitmentZkProof`);let{zkCallData:ce,commitmentValidationData:le}=await ee.generateMainAndCommitmentZkProof(T,v,M,g,A,Q?se:U,S);console.log(`[constructZkProof] generateCircomData`);let $=d.generateCircomData(z,R,L,G,M,_,N,W,y,b,Y,w,U.calldataHash,I,E,D,Q?Number(H):void 0,K,C,P,O),ue={tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0};return console.log(`[constructZkProof] success`),{zkCallData:ce,circomData:$,dimData:ue,encryptedOutputs:N,commitmentValidationData:le}}catch(e){throw console.log(`[constructZkProof] error`,e),e}};exports.constructZkProof=h;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),ee=require(`./signedMessageHash.cjs`),u=require(`./generateCircomData.cjs`),te=require(`../../data-structures/AccountActions/AccountActions.cjs`),d=require(`./generateMainAndCommitmentZkProof.cjs`),f=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),p=require(`../private-wallet/emporium.helpers.cjs`);var m=async(m,h,g,_,v,y,b,x,S,C=t.zeroAddress,w=e.chainIds.localhost,T=h.map(()=>!1),E=void 0,D,O)=>{let k=l.getZkProofVerifierName(h,g),A=l.calcAmountChanges(h,g),j=h.map(e=>e[0].erc20TokenAddress),M=l.calcEncryptedOutputs(g),N=t.defaultSignatureData,P=_.getShieldedPrivateKey(),{pubSpendingBJJPoint:F}=_.getSpendingKeyPair(),I=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),P),P,_.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:ne,inCommitmentSiblingSides:re,rootHashHinkal:L,inNullifiers:R}=await f.getDataFromWorkers(w,m,h.map(e=>e.map(e=>e.getConstructableParams()))),z=l.buildOutCommitments(g),B=r.randomBigInt(31),V=n.poseidonFunction(B),H=BigInt(g.length>0?g[0][0].timeStamp:a.getCurrentTimeInSeconds()),U={rootHashHinkal:L,spendingPublicKey:F,nullifyingPrivateKey:P,erc20TokenAddresses:j,amountChanges:A,inAmounts:h.map(e=>e.map(e=>e.amount.toString())),inRandomizations:h.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:h.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:h.map(e=>e.map(e=>e.timeStamp)),inNullifiers:R,inCommitmentSiblings:ne,inCommitmentSiblingSides:re,outAmounts:g.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:H,outPublicKeys:g.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:z,calldataHash:0n,messageSeed:B,H0Ax:c.takeOffHighestBit(I.extraRandomization),H0Ay:I.H0},W=l.calcPublicSignalCount(k,U.erc20TokenAddresses,U.amountChanges,U.inNullifiers,U.outCommitments),G=l.calcAmountChanges(h,g,!0),K=l.getSlippageValues(G);s.Logger.log({publicSignalCount:W});let q=Array.isArray(b)?b:[b],J=e.getOnchainChainId(w),Y=O?te.AccountActions.getSignerAddressFromPrivateKey(J,O):void 0,X=v===o.ExternalActionId.Emporium?await p.encodeEmporiumMetadata(w,y??t.zeroAddress,O,q,V,Y):await p.encodeEmporiumMetadata(w,t.zeroAddress,void 0,v===0n?[]:q,V,t.zeroAddress);U.calldataHash=l.createCallDataHash(W,C,y,v,X,M,E,K,T,S,N,D);let Z=ee.computeSignedMessageHashEvm({rootHashHinkal:L,erc20TokenAddresses:j,amountChanges:A,outTimeStamp:H,inNullifiers:R,outCommitments:z,calldataHash:U.calldataHash,message:V,outH1Ay:I.H1,H0Ax:U.H0Ax,H0Ay:I.H0}),{R8:Q,S:ie}=_.signEddsa(Z);U.eddsaSignature=[Q[0],Q[1],ie],U.signedMessageHash=Z;let $=k.startsWith(`mainEVMCircuitMin0`),ae={outTimeStamp:H,calldataHash:U.calldataHash,messageSeed:B},{zkCallData:oe,commitmentValidationData:se}=await d.generateMainAndCommitmentZkProof(w,_,j,h,k,$?ae:U,x);return{zkCallData:oe,circomData:u.generateCircomData(z,R,L,G,j,g,M,W,v,y,X,C,U.calldataHash,I,T,E,$?Number(H):void 0,K,S,N,D),dimData:{tokenNumber:h.length,nullifierAmount:h.length>0?h[0].length:0,outputAmount:g.length>0?g[0].length:0},encryptedOutputs:M,commitmentValidationData:se}};exports.constructZkProof=m;