@kapa123456789/sdk 0.0.74 → 0.0.76

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 (40) hide show
  1. package/common/src/constants/index.cjs +1 -1
  2. package/common/src/constants/index.d.ts +0 -1
  3. package/common/src/constants/index.mjs +0 -1
  4. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  5. package/common/src/data-structures/Hinkal/Hinkal.d.ts +1 -0
  6. package/common/src/data-structures/Hinkal/Hinkal.mjs +4 -1
  7. package/common/src/data-structures/Hinkal/IHinkal.d.ts +1 -0
  8. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
  9. package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
  10. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.cjs +1 -1
  11. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.d.ts +2 -0
  12. package/common/src/data-structures/private-balances/HinkalPrivateBalanceController.mjs +5 -1
  13. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  14. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +37 -36
  15. package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
  16. package/common/src/functions/snarkjs/common.snarkjs.d.ts +9 -1
  17. package/common/src/functions/snarkjs/common.snarkjs.mjs +11 -7
  18. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.cjs +1 -1
  19. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.d.ts +2 -3
  20. package/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.mjs +49 -32
  21. package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
  22. package/common/src/functions/web3/events/getShieldedBalance.mjs +16 -2
  23. package/common/src/webworker/package.json +1 -1
  24. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  25. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  26. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  27. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  28. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  29. package/functions/integrations/swapApi.cjs +1 -1
  30. package/functions/integrations/swapApi.mjs +9 -4
  31. package/package.json +1 -1
  32. package/services/Hinkal.cjs +1 -1
  33. package/services/Hinkal.d.ts +1 -0
  34. package/services/Hinkal.mjs +3 -0
  35. package/types/IHinkal.d.ts +1 -0
  36. package/common/src/constants/token.limits.constants.cjs +0 -1
  37. package/common/src/constants/token.limits.constants.d.ts +0 -5
  38. package/common/src/constants/token.limits.constants.mjs +0 -3
  39. package/common/src/data-structures/SignatureStorage.d.ts +0 -11
  40. package/common/src/functions/utils/initUserKeysWithCachedSignature.d.ts +0 -3
@@ -1 +1 @@
1
- require(`./deploy-data/index.cjs`),require(`./vite.constants.cjs`),require(`./chains.constants.cjs`),require(`./protocol.constants.cjs`),require(`./fees.constants.cjs`),require(`./server.constants.cjs`),require(`./auth.constants.cjs`),require(`./tokens.constants.cjs`),require(`./contracts.constants.cjs`),require(`./coingecko.constants.cjs`),require(`./reorg-depths.constants.cjs`),require(`./permit2.constants.cjs`),require(`./addresses.constants.cjs`),require(`./token.limits.constants.cjs`),require(`./bridging.constants.cjs`),require(`./presale.constants.cjs`),require(`./lifi.constants.cjs`),require(`./activity.constants.cjs`),require(`./tasks.constants.cjs`),require(`./events.constants.cjs`),require(`./tx-confirmation.constants.cjs`),require(`./schedule.constants.cjs`);
1
+ require(`./deploy-data/index.cjs`),require(`./vite.constants.cjs`),require(`./chains.constants.cjs`),require(`./protocol.constants.cjs`),require(`./fees.constants.cjs`),require(`./server.constants.cjs`),require(`./auth.constants.cjs`),require(`./tokens.constants.cjs`),require(`./contracts.constants.cjs`),require(`./coingecko.constants.cjs`),require(`./reorg-depths.constants.cjs`),require(`./permit2.constants.cjs`),require(`./addresses.constants.cjs`),require(`./bridging.constants.cjs`),require(`./presale.constants.cjs`),require(`./lifi.constants.cjs`),require(`./activity.constants.cjs`),require(`./tasks.constants.cjs`),require(`./events.constants.cjs`),require(`./tx-confirmation.constants.cjs`),require(`./schedule.constants.cjs`);
@@ -13,7 +13,6 @@ export * from './mediaUrls.constants';
13
13
  export * from './permit2.constants';
14
14
  export * from './addresses.constants';
15
15
  export * from './conversion.constants';
16
- export * from './token.limits.constants';
17
16
  export * from './balance.constants';
18
17
  export * from './bridging.constants';
19
18
  export * from './wallet.constants';
@@ -11,7 +11,6 @@ import "./coingecko.constants.mjs";
11
11
  import "./reorg-depths.constants.mjs";
12
12
  import "./permit2.constants.mjs";
13
13
  import "./addresses.constants.mjs";
14
- import "./token.limits.constants.mjs";
15
14
  import "./bridging.constants.mjs";
16
15
  import "./presale.constants.mjs";
17
16
  import "./lifi.constants.mjs";
@@ -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=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()})}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;
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;
@@ -90,6 +90,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
90
90
  getGasPrice(chainId: number): Promise<bigint>;
91
91
  getAPI(): IAPI;
92
92
  snapshotsClearInterval(): void;
93
+ destroy(): Promise<void>;
93
94
  getRecipientInfo(): string;
94
95
  deposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], preEstimateGas?: boolean, returnTxData?: boolean): Promise<ethers.TransactionResponse | ethers.TransactionRequest | string | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
95
96
  depositSolana(amount: bigint, token: ERC20Token, returnTxData?: boolean): Promise<string>;
@@ -199,7 +199,7 @@ var ye = class {
199
199
  await this.ethereumProviderAdapter?.disconnectFromConnector(), await this.solanaProviderAdapter?.disconnectFromConnector(), await this.tronProviderAdapter?.disconnectFromConnector();
200
200
  }
201
201
  async resetProviderAdapters() {
202
- this.ethereumProviderAdapter = void 0, this.solanaProviderAdapter = void 0, this.tronProviderAdapter = void 0;
202
+ this.ethereumProviderAdapter?.release(), this.solanaProviderAdapter?.release(), this.tronProviderAdapter?.release(), this.ethereumProviderAdapter = void 0, this.solanaProviderAdapter = void 0, this.tronProviderAdapter = void 0;
203
203
  }
204
204
  async updateProviderAdapter(e, t) {
205
205
  try {
@@ -310,6 +310,9 @@ var ye = class {
310
310
  this.commitmentsSnapshotServiceByChain[e]?.intervalClear(), this.nullifierSnapshotServiceByChain[e]?.intervalClear();
311
311
  });
312
312
  }
313
+ async destroy() {
314
+ this.snapshotsClearInterval(), this.privateBalances.dispose(), await this.resetProviderAdapters();
315
+ }
313
316
  getRecipientInfo() {
314
317
  return H(this);
315
318
  }
@@ -50,6 +50,7 @@ export interface IHinkal<ConnectorType = unknown> {
50
50
  getGasPrice(chainId: number): Promise<bigint>;
51
51
  getAPI(): IAPI;
52
52
  snapshotsClearInterval(): void;
53
+ destroy(): Promise<void>;
53
54
  getRecipientInfo(): string;
54
55
  deposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], preEstimateGas?: boolean, returnTxData?: boolean): Promise<ethers.TransactionResponse | ethers.TransactionRequest | string | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
55
56
  depositForOther(erc20Tokens: ERC20Token[], amountChanges: bigint[], recepinetInfo: string, preEstimateGas?: boolean, returnTxData?: boolean, action?: AdminTransactionType): Promise<ethers.TransactionResponse | ethers.TransactionRequest | string | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
@@ -11,7 +11,7 @@ import { ethers as c } from "ethers";
11
11
  var l = async (l, u, d, f, p, m = {}) => {
12
12
  let h = d.erc20TokenAddress, g = f.map((e) => e + o(e, p)), _ = g.reduce((e, t) => e + t, 0n), v = [h], y = [0n], b = [!0], x = c.AbiCoder.defaultAbiCoder().encode(["uint256[]"], [g]), { hinkalWrapperAddress: S, hinkalWrapperABI: C, depositOnChainUtxosExternalActionAddress: w, depositOnChainUtxosExternalActionABI: T } = e[u].contractData;
13
13
  if (!S || !C || !w || !T) throw Error("contract data not set in networkRegistry");
14
- let E = [...await i(l, u, v, y)], D = [];
14
+ let E = [...await i(l, u, v, y, 2, void 0, !0)], D = [];
15
15
  for (let e = 0; e < E.length; e += 1) {
16
16
  let { outputUtxos: t } = a(l.userKeys, E[e], y[e]);
17
17
  D.push(t);
@@ -1 +1 @@
1
- const e=require(`../../functions/web3/etherFunctions.cjs`),t=require(`../../functions/utils/upToDateState.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../error-handling/logger.cjs`),i=require(`../../functions/utils/string.utils.cjs`),a=require(`./BalanceChangedHandler.cjs`),o=require(`../IndexedDB/private-balances-db.cjs`),s=require(`../IndexedDB/prices-db.cjs`),c=require(`./privateBalancesReducer.cjs`);var l=class{privateBalancesState={};privateBalancesListeners=new Set;hinkal;constructor(e){this.hinkal=e,a.balanceChangedHandler.subscribe(e=>{this.applyRefreshFromBalanceChangeEvent(e).catch(e=>{r.Logger.error(`Private balance refresh from balance change failed:`,e)})})}getSnapshot(){return this.privateBalancesState}onPrivateBalancesWithUSDChange(e){return this.privateBalancesListeners.add(e),()=>this.privateBalancesListeners.delete(e)}async applyRefreshFromBalanceChangeEvent(e){if(!e){await this.refreshInternal(n.PrivateBalanceUpdateType.FreshWithoutLoader);return}let{updateType:t,balanceChangeState:r,chainIdToUpdate:i,resetCacheBefore:a,updateTokensListBefore:o}=e;await this.refreshInternal(t,r,a,o,i)}dispatch(e){this.privateBalancesState=c.privateBalancesReducer(this.privateBalancesState,e);let t=this.privateBalancesState;this.privateBalancesListeners.forEach(e=>e(t))}async getAddressAndChain(e){try{return{ethAdd:e?.ethereumAddress??await this.hinkal.getEthereumAddress(),userKeys:e?.userKeys??this.hinkal.userKeys}}catch{return{ethAdd:void 0,userKeys:void 0}}}async hasCache(e,t){return await o.privateBalancesStorage.getBalancesByWallet(e,t)!==void 0}async getBalancesWithUsdValues(t,n){try{if(!n)return[];let r=t.map(e=>e.token.erc20TokenAddress);if(!r.length)return[];let i=await s.pricesStorage.getAndUpdatePrices(n,r),a=new Map(r.map((e,t)=>[e,i[t]]));return[...t.map(t=>{try{let n=t.token.erc20TokenAddress,r=a.get(n)??0,i=t.balance,o=Number(e.getAmountInToken(t.token,i))*r;return{...t,usdValue:o}}catch{return{...t,usdValue:0}}})]}catch{return r.Logger.log(`Error fetching private token balances`),[]}}handleCached=async(n,a)=>{try{await t.checkAddressNotUpdated(this.hinkal,n),this.dispatch({type:`SET_BALANCES`,chainId:a,balances:void 0});let r=await o.privateBalancesStorage.getBalancesByWallet(n,a),c=await s.pricesStorage.getPrices();if(await t.checkAddressNotUpdated(this.hinkal,n),!r||(this.dispatch({type:`SET_BALANCES`,chainId:a,balances:r}),!c))return;let l=r.map(t=>{let n=i.getTokenStateKey(t.token.erc20TokenAddress,a);return{...t,usdValue:c[n]?Number(e.getAmountInToken(t.token,t.balance))*c[n]:0}});this.dispatch({type:`SET_USD_BALANCES`,chainId:a,balances:l})}catch(e){r.Logger.error(`Error refreshing cached private balance:`,e)}};handleFresh=async(e,n,i,a,s,c)=>{let l=s;try{await t.checkAddressNotUpdated(this.hinkal,e);let r=await this.hasCache(e,n);await t.checkAddressNotUpdated(this.hinkal,e),l=s||!r,l&&this.dispatch({type:`SET_LOADING`,chainId:n,newValue:!0}),await t.checkAddressNotUpdated(this.hinkal,e),a&&await this.hinkal.resetMerkle([n]);let u=await this.hinkal.getTotalBalance(n,i,e,a,c);await t.checkAddressNotUpdated(this.hinkal,e);let d=u.filter(e=>e.balance>0n);this.dispatch({type:`SET_BALANCES`,chainId:n,balances:d}),await o.privateBalancesStorage.setBalances(e,n,d),await t.checkAddressNotUpdated(this.hinkal,e),l&&(this.dispatch({type:`SET_USD_LOADING`,chainId:n,newValue:!0}),this.dispatch({type:`SET_LOADING`,chainId:n,newValue:!1})),await t.checkAddressNotUpdated(this.hinkal,e);let f=await this.getBalancesWithUsdValues(d,n);await t.checkAddressNotUpdated(this.hinkal,e),f.length>0&&this.dispatch({type:`SET_USD_BALANCES`,chainId:n,balances:f})}catch(e){r.Logger.error(`Error refreshing private balance:`,e)}finally{l&&(this.dispatch({type:`SET_LOADING`,chainId:n,newValue:!1}),this.dispatch({type:`SET_USD_LOADING`,chainId:n,newValue:!1}))}};getSupportedChainsToUpdate(e){let t=this.hinkal.getSupportedChains();return e?t.includes(e)?[e]:[]:t}async refreshInternal(e=n.PrivateBalanceUpdateType.FreshWithoutLoader,t,r=!1,i=!1,a){let{ethAdd:o,userKeys:s}=await this.getAddressAndChain(t);!o||!s?.getShieldedPublicKey()||await Promise.all(this.getSupportedChainsToUpdate(a).map(async t=>{switch(e){case n.PrivateBalanceUpdateType.OnlyCache:await this.handleCached(o,t);break;case n.PrivateBalanceUpdateType.Fresh:await this.handleFresh(o,t,s,r,!0,i);break;case n.PrivateBalanceUpdateType.FreshWithoutLoader:await this.handleFresh(o,t,s,r,!1,i);break;default:break}}))}};exports.HinkalPrivateBalanceController=l;
1
+ const e=require(`../../functions/web3/etherFunctions.cjs`),t=require(`../../functions/utils/upToDateState.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../error-handling/logger.cjs`),i=require(`../../functions/utils/string.utils.cjs`),a=require(`./BalanceChangedHandler.cjs`),o=require(`../IndexedDB/private-balances-db.cjs`),s=require(`../IndexedDB/prices-db.cjs`),c=require(`./privateBalancesReducer.cjs`);var l=class{privateBalancesState={};privateBalancesListeners=new Set;hinkal;unsubscribeBalanceChange;constructor(e){this.hinkal=e,this.unsubscribeBalanceChange=a.balanceChangedHandler.subscribe(e=>{this.applyRefreshFromBalanceChangeEvent(e).catch(e=>{r.Logger.error(`Private balance refresh from balance change failed:`,e)})})}getSnapshot(){return this.privateBalancesState}onPrivateBalancesWithUSDChange(e){return this.privateBalancesListeners.add(e),()=>this.privateBalancesListeners.delete(e)}dispose(){this.unsubscribeBalanceChange(),this.privateBalancesListeners.clear()}async applyRefreshFromBalanceChangeEvent(e){if(!e){await this.refreshInternal(n.PrivateBalanceUpdateType.FreshWithoutLoader);return}let{updateType:t,balanceChangeState:r,chainIdToUpdate:i,resetCacheBefore:a,updateTokensListBefore:o}=e;await this.refreshInternal(t,r,a,o,i)}dispatch(e){this.privateBalancesState=c.privateBalancesReducer(this.privateBalancesState,e);let t=this.privateBalancesState;this.privateBalancesListeners.forEach(e=>e(t))}async getAddressAndChain(e){try{return{ethAdd:e?.ethereumAddress??await this.hinkal.getEthereumAddress(),userKeys:e?.userKeys??this.hinkal.userKeys}}catch{return{ethAdd:void 0,userKeys:void 0}}}async hasCache(e,t){return await o.privateBalancesStorage.getBalancesByWallet(e,t)!==void 0}async getBalancesWithUsdValues(t,n){try{if(!n)return[];let r=t.map(e=>e.token.erc20TokenAddress);if(!r.length)return[];let i=await s.pricesStorage.getAndUpdatePrices(n,r),a=new Map(r.map((e,t)=>[e,i[t]]));return[...t.map(t=>{try{let n=t.token.erc20TokenAddress,r=a.get(n)??0,i=t.balance,o=Number(e.getAmountInToken(t.token,i))*r;return{...t,usdValue:o}}catch{return{...t,usdValue:0}}})]}catch{return r.Logger.log(`Error fetching private token balances`),[]}}handleCached=async(n,a)=>{try{await t.checkAddressNotUpdated(this.hinkal,n),this.dispatch({type:`SET_BALANCES`,chainId:a,balances:void 0});let r=await o.privateBalancesStorage.getBalancesByWallet(n,a),c=await s.pricesStorage.getPrices();if(await t.checkAddressNotUpdated(this.hinkal,n),!r||(this.dispatch({type:`SET_BALANCES`,chainId:a,balances:r}),!c))return;let l=r.map(t=>{let n=i.getTokenStateKey(t.token.erc20TokenAddress,a);return{...t,usdValue:c[n]?Number(e.getAmountInToken(t.token,t.balance))*c[n]:0}});this.dispatch({type:`SET_USD_BALANCES`,chainId:a,balances:l})}catch(e){r.Logger.error(`Error refreshing cached private balance:`,e)}};handleFresh=async(e,n,i,a,s,c)=>{let l=s;try{await t.checkAddressNotUpdated(this.hinkal,e);let r=await this.hasCache(e,n);await t.checkAddressNotUpdated(this.hinkal,e),l=s||!r,l&&this.dispatch({type:`SET_LOADING`,chainId:n,newValue:!0}),await t.checkAddressNotUpdated(this.hinkal,e),a&&await this.hinkal.resetMerkle([n]);let u=await this.hinkal.getTotalBalance(n,i,e,a,c);await t.checkAddressNotUpdated(this.hinkal,e);let d=u.filter(e=>e.balance>0n);this.dispatch({type:`SET_BALANCES`,chainId:n,balances:d}),await o.privateBalancesStorage.setBalances(e,n,d),await t.checkAddressNotUpdated(this.hinkal,e),l&&(this.dispatch({type:`SET_USD_LOADING`,chainId:n,newValue:!0}),this.dispatch({type:`SET_LOADING`,chainId:n,newValue:!1})),await t.checkAddressNotUpdated(this.hinkal,e);let f=await this.getBalancesWithUsdValues(d,n);await t.checkAddressNotUpdated(this.hinkal,e),f.length>0&&this.dispatch({type:`SET_USD_BALANCES`,chainId:n,balances:f})}catch(e){r.Logger.error(`Error refreshing private balance:`,e)}finally{l&&(this.dispatch({type:`SET_LOADING`,chainId:n,newValue:!1}),this.dispatch({type:`SET_USD_LOADING`,chainId:n,newValue:!1}))}};getSupportedChainsToUpdate(e){let t=this.hinkal.getSupportedChains();return e?t.includes(e)?[e]:[]:t}async refreshInternal(e=n.PrivateBalanceUpdateType.FreshWithoutLoader,t,r=!1,i=!1,a){let{ethAdd:o,userKeys:s}=await this.getAddressAndChain(t);!o||!s?.getShieldedPublicKey()||await Promise.all(this.getSupportedChainsToUpdate(a).map(async t=>{switch(e){case n.PrivateBalanceUpdateType.OnlyCache:await this.handleCached(o,t);break;case n.PrivateBalanceUpdateType.Fresh:await this.handleFresh(o,t,s,r,!0,i);break;case n.PrivateBalanceUpdateType.FreshWithoutLoader:await this.handleFresh(o,t,s,r,!1,i);break;default:break}}))}};exports.HinkalPrivateBalanceController=l;
@@ -4,9 +4,11 @@ export declare class HinkalPrivateBalanceController {
4
4
  private privateBalancesState;
5
5
  private readonly privateBalancesListeners;
6
6
  private readonly hinkal;
7
+ private readonly unsubscribeBalanceChange;
7
8
  constructor(hinkal: IHinkal);
8
9
  getSnapshot(): PrivateBalancesState;
9
10
  onPrivateBalancesWithUSDChange(callback: (state: PrivateBalancesState) => void): () => void;
11
+ dispose(): void;
10
12
  private applyRefreshFromBalanceChangeEvent;
11
13
  private dispatch;
12
14
  private getAddressAndChain;
@@ -12,8 +12,9 @@ var l = class {
12
12
  privateBalancesState = {};
13
13
  privateBalancesListeners = /* @__PURE__ */ new Set();
14
14
  hinkal;
15
+ unsubscribeBalanceChange;
15
16
  constructor(e) {
16
- this.hinkal = e, a.subscribe((e) => {
17
+ this.hinkal = e, this.unsubscribeBalanceChange = a.subscribe((e) => {
17
18
  this.applyRefreshFromBalanceChangeEvent(e).catch((e) => {
18
19
  r.error("Private balance refresh from balance change failed:", e);
19
20
  });
@@ -25,6 +26,9 @@ var l = class {
25
26
  onPrivateBalancesWithUSDChange(e) {
26
27
  return this.privateBalancesListeners.add(e), () => this.privateBalancesListeners.delete(e);
27
28
  }
29
+ dispose() {
30
+ this.unsubscribeBalanceChange(), this.privateBalancesListeners.clear();
31
+ }
28
32
  async applyRefreshFromBalanceChangeEvent(e) {
29
33
  if (!e) {
30
34
  await this.refreshInternal(n.FreshWithoutLoader);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../utils/solanaMint.utils.cjs`),r=require(`../snarkjs/common.snarkjs.cjs`),i=require(`../../webworker/worker.registry.cjs`),a=require(`../../webworker/performTaskWithWorker.cjs`),o=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`);var s=async(s,c,l,u)=>{let d=e.isSolanaLike(s),f=u.map(e=>e.map(e=>e.amount.toString())),p=u.map(e=>e.map(e=>e.timeStamp)),m=u.map(e=>e.map(e=>r.getUtxoCircuitInRandomization(e))),h=u.map(e=>e.map(e=>e.getConstructableParams())),g=u.map(e=>e.map(e=>e.amount===0n?`0`:BigInt(e.getCommitment()).toString())),_=await a.performTaskWithWorker({type:i.WorkerVariant.ZKProof,payload:{type:o.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:h}}}),v=c.getShieldedPrivateKey(),y=c.getSpendingKeyPair().pubSpendingBJJPoint,b=d?l.map(e=>{let{compressedAddress:t}=n.formatMintAddress(e);return BigInt(t).toString()}):l.map(e=>BigInt(e).toString());u.forEach((e,n)=>{e.forEach((e,r)=>{let i=e.getStealthAddress(),a=e.spendingPublicKey??y,o=e.isNewStyle&&e.H0?t.UserKeys.getStealthAddressNewStyle(e.H0,v,a):t.UserKeys.getStealthAddress(BigInt(e.randomization),v);if(BigInt(i).toString()!==BigInt(o).toString())throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`)})});let x={nullifyingPrivateKey:v,spendingPublicKey:y,erc20TokenAddresses:b,inAmounts:f,inRandomizations:m,inH0Ax:u.map(e=>e.map(e=>r.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:u.map(e=>e.map(e=>r.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:u.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:p,inCommitments:g,inNullifiers:_};if(!(!l.length||!u[0]?.length))return{tokenAddresses:b,inAmounts:f,inTimeStamps:p,inRandomizations:m,inCommitments:g,inNullifiers:_,verifierName:`commitmentCalculator${l.length}x${u[0].length}`,commitmentInput:x}},c=(e,t)=>{if(!(!e||!t))return{tokenAddresses:e.tokenAddresses,inAmounts:e.inAmounts,inTimeStamps:e.inTimeStamps,inRandomizations:e.inRandomizations,inCommitments:e.inCommitments,inNullifiers:e.inNullifiers,proof:{a:t.zkCallData[0],b:t.zkCallData[1],c:t.zkCallData[2]}}};exports.buildCommitmentValidationData=s,exports.buildCommitmentValidationDataFromProof=c;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../utils/solanaMint.utils.cjs`),r=require(`../snarkjs/common.snarkjs.cjs`),i=require(`../../webworker/worker.registry.cjs`),a=require(`../../webworker/performTaskWithWorker.cjs`),o=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`);var s=async(s,c,l,u)=>{if(r.hasOnlyZeroAmounts(u))return;let d=e.isSolanaLike(s),f=u.map(e=>e.map(e=>e.amount.toString())),p=u.map(e=>e.map(e=>e.timeStamp)),m=u.map(e=>e.map(e=>r.getUtxoCircuitInRandomization(e))),h=u.map(e=>e.map(e=>e.getConstructableParams())),g=u.map(e=>e.map(e=>e.amount===0n?`0`:BigInt(e.getCommitment()).toString())),_=await a.performTaskWithWorker({type:i.WorkerVariant.ZKProof,payload:{type:o.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:h}}}),v=c.getShieldedPrivateKey(),y=c.getSpendingKeyPair().pubSpendingBJJPoint,b=d?l.map(e=>{let{compressedAddress:t}=n.formatMintAddress(e);return BigInt(t).toString()}):l.map(e=>BigInt(e).toString());u.forEach((e,n)=>{e.forEach((e,r)=>{let i=e.getStealthAddress(),a=e.spendingPublicKey??y,o=e.isNewStyle&&e.H0?t.UserKeys.getStealthAddressNewStyle(e.H0,v,a):t.UserKeys.getStealthAddress(BigInt(e.randomization),v);if(BigInt(i).toString()!==BigInt(o).toString())throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`)})});let x={nullifyingPrivateKey:v,spendingPublicKey:y,erc20TokenAddresses:b,inAmounts:f,inRandomizations:m,inH0Ax:u.map(e=>e.map(e=>r.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:u.map(e=>e.map(e=>r.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:u.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:p,inCommitments:g,inNullifiers:_};if(!(!l.length||!u[0]?.length))return{tokenAddresses:b,inAmounts:f,inTimeStamps:p,inRandomizations:m,inCommitments:g,inNullifiers:_,verifierName:`commitmentCalculator${l.length}x${u[0].length}`,commitmentInput:x}},c=(e,t)=>{if(!(!e||!t))return{tokenAddresses:e.tokenAddresses,inAmounts:e.inAmounts,inTimeStamps:e.inTimeStamps,inRandomizations:e.inRandomizations,inCommitments:e.inCommitments,inNullifiers:e.inNullifiers,proof:{a:t.zkCallData[0],b:t.zkCallData[1],c:t.zkCallData[2]}}};exports.buildCommitmentValidationData=s,exports.buildCommitmentValidationDataFromProof=c;
@@ -1,52 +1,53 @@
1
1
  import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
2
  import { UserKeys as t } from "../../data-structures/crypto-keys/keys.mjs";
3
3
  import { formatMintAddress as n } from "../utils/solanaMint.utils.mjs";
4
- import { getUtxoCircuitH0Coords as r, getUtxoCircuitInRandomization as i } from "../snarkjs/common.snarkjs.mjs";
5
- import { WorkerVariant as a } from "../../webworker/worker.registry.mjs";
6
- import { performTaskWithWorker as o } from "../../webworker/performTaskWithWorker.mjs";
7
- import { ZKProofWorkerActionType as s } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
4
+ import { getUtxoCircuitH0Coords as r, getUtxoCircuitInRandomization as i, hasOnlyZeroAmounts as a } from "../snarkjs/common.snarkjs.mjs";
5
+ import { WorkerVariant as o } from "../../webworker/worker.registry.mjs";
6
+ import { performTaskWithWorker as s } from "../../webworker/performTaskWithWorker.mjs";
7
+ import { ZKProofWorkerActionType as c } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
8
8
  //#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
9
- var c = async (c, l, u, d) => {
10
- let f = e(c), p = d.map((e) => e.map((e) => e.amount.toString())), m = d.map((e) => e.map((e) => e.timeStamp)), h = d.map((e) => e.map((e) => i(e))), g = d.map((e) => e.map((e) => e.getConstructableParams())), _ = d.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), v = await o({
11
- type: a.ZKProof,
9
+ var l = async (l, u, d, f) => {
10
+ if (a(f)) return;
11
+ let p = e(l), m = f.map((e) => e.map((e) => e.amount.toString())), h = f.map((e) => e.map((e) => e.timeStamp)), g = f.map((e) => e.map((e) => i(e))), _ = f.map((e) => e.map((e) => e.getConstructableParams())), v = f.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), y = await s({
12
+ type: o.ZKProof,
12
13
  payload: {
13
- type: s.BUILD_IN_NULLIFIERS,
14
- data: { inputUtxosSerialized: g }
14
+ type: c.BUILD_IN_NULLIFIERS,
15
+ data: { inputUtxosSerialized: _ }
15
16
  }
16
- }), y = l.getShieldedPrivateKey(), b = l.getSpendingKeyPair().pubSpendingBJJPoint, x = f ? u.map((e) => {
17
+ }), b = u.getShieldedPrivateKey(), x = u.getSpendingKeyPair().pubSpendingBJJPoint, S = p ? d.map((e) => {
17
18
  let { compressedAddress: t } = n(e);
18
19
  return BigInt(t).toString();
19
- }) : u.map((e) => BigInt(e).toString());
20
- d.forEach((e, n) => {
20
+ }) : d.map((e) => BigInt(e).toString());
21
+ f.forEach((e, n) => {
21
22
  e.forEach((e, r) => {
22
- let i = e.getStealthAddress(), a = e.spendingPublicKey ?? b, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, y, a) : t.getStealthAddress(BigInt(e.randomization), y);
23
+ let i = e.getStealthAddress(), a = e.spendingPublicKey ?? x, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, b, a) : t.getStealthAddress(BigInt(e.randomization), b);
23
24
  if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`);
24
25
  });
25
26
  });
26
- let S = {
27
- nullifyingPrivateKey: y,
28
- spendingPublicKey: b,
29
- erc20TokenAddresses: x,
30
- inAmounts: p,
31
- inRandomizations: h,
32
- inH0Ax: d.map((e) => e.map((e) => r(e)[0].toString())),
33
- inH0Ay: d.map((e) => e.map((e) => r(e)[1].toString())),
34
- isNewStyle: d.map((e) => e.map((e) => !!e.isNewStyle)),
35
- inTimeStamps: m,
36
- inCommitments: _,
37
- inNullifiers: v
27
+ let C = {
28
+ nullifyingPrivateKey: b,
29
+ spendingPublicKey: x,
30
+ erc20TokenAddresses: S,
31
+ inAmounts: m,
32
+ inRandomizations: g,
33
+ inH0Ax: f.map((e) => e.map((e) => r(e)[0].toString())),
34
+ inH0Ay: f.map((e) => e.map((e) => r(e)[1].toString())),
35
+ isNewStyle: f.map((e) => e.map((e) => !!e.isNewStyle)),
36
+ inTimeStamps: h,
37
+ inCommitments: v,
38
+ inNullifiers: y
38
39
  };
39
- if (!(!u.length || !d[0]?.length)) return {
40
- tokenAddresses: x,
41
- inAmounts: p,
42
- inTimeStamps: m,
43
- inRandomizations: h,
44
- inCommitments: _,
45
- inNullifiers: v,
46
- verifierName: `commitmentCalculator${u.length}x${d[0].length}`,
47
- commitmentInput: S
40
+ if (!(!d.length || !f[0]?.length)) return {
41
+ tokenAddresses: S,
42
+ inAmounts: m,
43
+ inTimeStamps: h,
44
+ inRandomizations: g,
45
+ inCommitments: v,
46
+ inNullifiers: y,
47
+ verifierName: `commitmentCalculator${d.length}x${f[0].length}`,
48
+ commitmentInput: C
48
49
  };
49
- }, l = (e, t) => {
50
+ }, u = (e, t) => {
50
51
  if (!(!e || !t)) return {
51
52
  tokenAddresses: e.tokenAddresses,
52
53
  inAmounts: e.inAmounts,
@@ -62,4 +63,4 @@ var c = async (c, l, u, d) => {
62
63
  };
63
64
  };
64
65
  //#endregion
65
- export { c as buildCommitmentValidationData, l as buildCommitmentValidationDataFromProof };
66
+ export { l as buildCommitmentValidationData, u as buildCommitmentValidationDataFromProof };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../types/circom-data.types.cjs`),r=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),i=require(`../utils/external-action.utils.cjs`),a=require(`./getOriginalSender.cjs`),o=require(`../utils/bit.operations.cjs`);let s=require(`ethers`);var c=e=>{if(e.H0?.[0]!==void 0&&e.H0[1]!==void 0)return[e.H0[0],e.H0[1]];if(e.randomization!==void 0)return t.UserKeys.getH0FromRandomization(e.randomization);throw Error(`UTXO missing H0 coordinates for proof input`)},l=e=>{if(e.isNewStyle)return`0`;if(e.randomization!==void 0)return e.randomization.toString();throw Error(`UTXO missing randomization for old-style proof input`)},u=e=>e.map(e=>e.map(e=>e.amount===0n?`0`:e.getCommitment())),d=(t,n,r=!1)=>{let i=[];for(let a=0;a<t.length;a+=1){let o=0n,s=0n;for(let e=0;e<t[a].length;e+=1)o+=t[a][e].amount;for(let e=0;e<n[a].length;e+=1)s+=n[a][e].amount;s-o<0?r?i.push(s-o):i.push(e.CIRCOM_P+(s-o)):i.push(s-o)}return i},f=e=>e.map(e=>e>=0n?0n:e),p=e=>{if(e.length===0)return[];let t=[[``]];for(let n=0;n<e.length;n+=1)n>0&&t.push([``]),e[n].forEach((e,i)=>{t[n][i]=`0x${Buffer.from(r.encryptUtxo(e)).toString(`hex`)}`});return t},m=e=>{let t={...e};return t.amountChanges=e.amountChanges.map(e=>e.toString()),t.calldataHash=e.calldataHash.toString(),t.rootHashAccessToken=e.rootHashAccessToken?.toString(),t.stealthAddressStructure.extraRandomization=e.stealthAddressStructure.extraRandomization.toString(),t.stealthAddressStructure.stealthAddress=e.stealthAddressStructure.stealthAddress.toString(),t.stealthAddressStructure.H0=e.stealthAddressStructure.H0.toString(),t.stealthAddressStructure.H1=e.stealthAddressStructure.H1.toString(),t.rootHashHinkal=e.rootHashHinkal?.toString(),t.externalActionId=e.externalActionId?.toString(),t.slippageValues=e.slippageValues.map(e=>e.toString()),t.hinkalLogicArgs.inHinkalAddress=e.hinkalLogicArgs.inHinkalAddress.toString(),t.hinkalLogicArgs.executeApprovalChanges=e.hinkalLogicArgs.executeApprovalChanges.map(e=>e.toString()),t.hinkalLogicArgs.useApprovalUtxoData=e.hinkalLogicArgs.useApprovalUtxoData.map(e=>({approvalChanges:e.approvalChanges.map(e=>e.toString()),externalApprovalAddresses:e.externalApprovalAddresses,conversionInHinkalAddress:e.conversionInHinkalAddress.map(e=>e.toString())})),t.feeStructure.flatFee=e.feeStructure.flatFee.toString(),t.feeStructure.variableRate=e.feeStructure.variableRate.toString(),t},h=(t,r,o,c,l,u,d,f,p,m,h,g)=>{let _=Object.values(d||n.defaultHookData),v=g??a.getOriginalSender(o??e.zeroAddress,r),y=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint16`,`address`,`address`,`uint256`,`bytes`],[t,r,o,typeof c==`bigint`?c:i.getExternalActionIdHash(c),l]),b=s.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(address, address, bytes, bytes)`,`bytes[][]`,`tuple(address, uint256, uint256)`,`int256[]`,`bool[]`,`tuple(uint8 v, bytes32 r, bytes32 s, uint256 accessKey, uint256 nonce, address ethereumAddress)`,`address`],[_,u,[m.feeToken,m.flatFee,m.variableRate],f,p,h,v]),x=BigInt(s.ethers.keccak256(y)),S=BigInt(s.ethers.keccak256(b)),C=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint256`,`uint256`],[x,S]);return BigInt(s.ethers.keccak256(C))%e.CIRCOM_P},g=(e,t,n,r,i)=>e.startsWith(`mainEVMCircuitMin0`)?3:2+t.length+n.length+1+r.flat().length+i.flat().length+1+1+1+1+1+1,_=(e,n,r)=>{let{H0:i}=t.UserKeys.getRandomizedStealthPair(e,n),a=t.UserKeys.getH1FromH0(i,n),s=BigInt(t.UserKeys.getStealthAddressNewStyle(i,n,r));return{extraRandomization:o.addHighestBitToNumber(i[0]),H0:i[1],H1:a[1],stealthAddress:s}},v=(e,t)=>t.length===0?`mainEVMCircuitMin0`:`mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;exports.buildOutCommitments=u,exports.calcAmountChanges=d,exports.calcEncryptedOutputs=p,exports.calcPublicSignalCount=g,exports.calcStealthAddressStructure=_,exports.createCallDataHash=h,exports.getSlippageValues=f,exports.getUtxoCircuitH0Coords=c,exports.getUtxoCircuitInRandomization=l,exports.getZkProofVerifierName=v,exports.serializeCircomData=m;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../types/circom-data.types.cjs`),r=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),i=require(`../utils/external-action.utils.cjs`),a=require(`./getOriginalSender.cjs`),o=require(`../utils/bit.operations.cjs`);let s=require(`ethers`);var c=e=>{if(e.H0?.[0]!==void 0&&e.H0[1]!==void 0)return[e.H0[0],e.H0[1]];if(e.randomization!==void 0)return t.UserKeys.getH0FromRandomization(e.randomization);throw Error(`UTXO missing H0 coordinates for proof input`)},l=e=>{if(e.isNewStyle)return`0`;if(e.randomization!==void 0)return e.randomization.toString();throw Error(`UTXO missing randomization for old-style proof input`)},u=Array.from({length:25},()=>`0`),d=e=>e.length>0&&e.every(e=>e.every(e=>BigInt(e.amount)===0n)),f=e=>({inCommitmentSiblings:e.map(e=>e.map(()=>[...u])),inCommitmentSiblingSides:e.map(e=>e.map(()=>[...u])),inNullifiers:e.map(e=>e.map(()=>`0`))}),p=e=>e.map(e=>e.map(e=>e.amount===0n?`0`:e.getCommitment())),m=(t,n,r=!1)=>{let i=[];for(let a=0;a<t.length;a+=1){let o=0n,s=0n;for(let e=0;e<t[a].length;e+=1)o+=t[a][e].amount;for(let e=0;e<n[a].length;e+=1)s+=n[a][e].amount;s-o<0?r?i.push(s-o):i.push(e.CIRCOM_P+(s-o)):i.push(s-o)}return i},h=e=>e.map(e=>e>=0n?0n:e),g=e=>{if(e.length===0)return[];let t=[[``]];for(let n=0;n<e.length;n+=1)n>0&&t.push([``]),e[n].forEach((e,i)=>{t[n][i]=`0x${Buffer.from(r.encryptUtxo(e)).toString(`hex`)}`});return t},_=e=>{let t={...e};return t.amountChanges=e.amountChanges.map(e=>e.toString()),t.calldataHash=e.calldataHash.toString(),t.rootHashAccessToken=e.rootHashAccessToken?.toString(),t.stealthAddressStructure.extraRandomization=e.stealthAddressStructure.extraRandomization.toString(),t.stealthAddressStructure.stealthAddress=e.stealthAddressStructure.stealthAddress.toString(),t.stealthAddressStructure.H0=e.stealthAddressStructure.H0.toString(),t.stealthAddressStructure.H1=e.stealthAddressStructure.H1.toString(),t.rootHashHinkal=e.rootHashHinkal?.toString(),t.externalActionId=e.externalActionId?.toString(),t.slippageValues=e.slippageValues.map(e=>e.toString()),t.hinkalLogicArgs.inHinkalAddress=e.hinkalLogicArgs.inHinkalAddress.toString(),t.hinkalLogicArgs.executeApprovalChanges=e.hinkalLogicArgs.executeApprovalChanges.map(e=>e.toString()),t.hinkalLogicArgs.useApprovalUtxoData=e.hinkalLogicArgs.useApprovalUtxoData.map(e=>({approvalChanges:e.approvalChanges.map(e=>e.toString()),externalApprovalAddresses:e.externalApprovalAddresses,conversionInHinkalAddress:e.conversionInHinkalAddress.map(e=>e.toString())})),t.feeStructure.flatFee=e.feeStructure.flatFee.toString(),t.feeStructure.variableRate=e.feeStructure.variableRate.toString(),t},v=(t,r,o,c,l,u,d,f,p,m,h,g)=>{let _=Object.values(d||n.defaultHookData),v=g??a.getOriginalSender(o??e.zeroAddress,r),y=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint16`,`address`,`address`,`uint256`,`bytes`],[t,r,o,typeof c==`bigint`?c:i.getExternalActionIdHash(c),l]),b=s.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(address, address, bytes, bytes)`,`bytes[][]`,`tuple(address, uint256, uint256)`,`int256[]`,`bool[]`,`tuple(uint8 v, bytes32 r, bytes32 s, uint256 accessKey, uint256 nonce, address ethereumAddress)`,`address`],[_,u,[m.feeToken,m.flatFee,m.variableRate],f,p,h,v]),x=BigInt(s.ethers.keccak256(y)),S=BigInt(s.ethers.keccak256(b)),C=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint256`,`uint256`],[x,S]);return BigInt(s.ethers.keccak256(C))%e.CIRCOM_P},y=(e,t,n,r,i)=>e.startsWith(`mainEVMCircuitMin0`)?3:2+t.length+n.length+1+r.flat().length+i.flat().length+1+1+1+1+1+1,b=(e,n,r)=>{let{H0:i}=t.UserKeys.getRandomizedStealthPair(e,n),a=t.UserKeys.getH1FromH0(i,n),s=BigInt(t.UserKeys.getStealthAddressNewStyle(i,n,r));return{extraRandomization:o.addHighestBitToNumber(i[0]),H0:i[1],H1:a[1],stealthAddress:s}},x=(e,t)=>t.length===0?`mainEVMCircuitMin0`:`mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;exports.buildOutCommitments=p,exports.buildZeroInputMerkleDataFromSerialized=f,exports.calcAmountChanges=m,exports.calcEncryptedOutputs=g,exports.calcPublicSignalCount=y,exports.calcStealthAddressStructure=b,exports.createCallDataHash=v,exports.getSlippageValues=h,exports.getUtxoCircuitH0Coords=c,exports.getUtxoCircuitInRandomization=l,exports.getZkProofVerifierName=x,exports.hasOnlyZeroAmounts=d,exports.serializeCircomData=_;
@@ -1,4 +1,4 @@
1
- import { Utxo } from '../../data-structures/utxo/Utxo';
1
+ import { IUtxoConstructor, Utxo } from '../../data-structures/utxo/Utxo';
2
2
  import { MerkleTree } from '../../data-structures/merkle-tree';
3
3
  import { CircomDataJsonType, CircomDataType, HookDataType, StealthAddressStructure } from '../../types/circom-data.types';
4
4
  import { ExternalActionId } from '../../types/external-action.types';
@@ -7,6 +7,14 @@ import { SignatureData } from '../../types/crypto.types';
7
7
  export declare const getUtxoCircuitH0Coords: (utxo: Utxo) => [bigint, bigint];
8
8
  export declare const getUtxoCircuitInRandomization: (utxo: Utxo) => string;
9
9
  export declare const buildInNullifiers: (inputUtxos: Utxo[][], onChainCreation: boolean[]) => string[][];
10
+ export declare const hasOnlyZeroAmounts: <T extends {
11
+ amount: bigint;
12
+ }>(inputUtxosByToken: T[][]) => boolean;
13
+ export declare const buildZeroInputMerkleDataFromSerialized: (inputUtxosSerialized: IUtxoConstructor[][]) => {
14
+ inCommitmentSiblings: string[][][];
15
+ inCommitmentSiblingSides: string[][][];
16
+ inNullifiers: string[][];
17
+ };
10
18
  export declare const buildOutCommitments: (outputUtxos: Utxo[][]) => string[][];
11
19
  export declare const calcAmountChanges: (inputUtxos: Utxo[][], outputUtxos: Utxo[][], forCircomData?: boolean) => bigint[];
12
20
  export declare const getSlippageValues: (amountChanges: bigint[]) => bigint[];
@@ -15,7 +15,11 @@ var l = (e) => {
15
15
  if (e.isNewStyle) return "0";
16
16
  if (e.randomization !== void 0) return e.randomization.toString();
17
17
  throw Error("UTXO missing randomization for old-style proof input");
18
- }, d = (e) => e.map((e) => e.map((e) => e.amount === 0n ? "0" : e.getCommitment())), f = (t, n, r = !1) => {
18
+ }, d = Array.from({ length: 25 }, () => "0"), f = (e) => e.length > 0 && e.every((e) => e.every((e) => BigInt(e.amount) === 0n)), p = (e) => ({
19
+ inCommitmentSiblings: e.map((e) => e.map(() => [...d])),
20
+ inCommitmentSiblingSides: e.map((e) => e.map(() => [...d])),
21
+ inNullifiers: e.map((e) => e.map(() => "0"))
22
+ }), m = (e) => e.map((e) => e.map((e) => e.amount === 0n ? "0" : e.getCommitment())), h = (t, n, r = !1) => {
19
23
  let i = [];
20
24
  for (let a = 0; a < t.length; a += 1) {
21
25
  let o = 0n, s = 0n;
@@ -24,21 +28,21 @@ var l = (e) => {
24
28
  s - o < 0 ? r ? i.push(s - o) : i.push(e + (s - o)) : i.push(s - o);
25
29
  }
26
30
  return i;
27
- }, p = (e) => e.map((e) => e >= 0n ? 0n : e), m = (e) => {
31
+ }, g = (e) => e.map((e) => e >= 0n ? 0n : e), _ = (e) => {
28
32
  if (e.length === 0) return [];
29
33
  let t = [[""]];
30
34
  for (let n = 0; n < e.length; n += 1) n > 0 && t.push([""]), e[n].forEach((e, r) => {
31
35
  t[n][r] = `0x${Buffer.from(i(e)).toString("hex")}`;
32
36
  });
33
37
  return t;
34
- }, h = (e) => {
38
+ }, v = (e) => {
35
39
  let t = { ...e };
36
40
  return t.amountChanges = e.amountChanges.map((e) => e.toString()), t.calldataHash = e.calldataHash.toString(), t.rootHashAccessToken = e.rootHashAccessToken?.toString(), t.stealthAddressStructure.extraRandomization = e.stealthAddressStructure.extraRandomization.toString(), t.stealthAddressStructure.stealthAddress = e.stealthAddressStructure.stealthAddress.toString(), t.stealthAddressStructure.H0 = e.stealthAddressStructure.H0.toString(), t.stealthAddressStructure.H1 = e.stealthAddressStructure.H1.toString(), t.rootHashHinkal = e.rootHashHinkal?.toString(), t.externalActionId = e.externalActionId?.toString(), t.slippageValues = e.slippageValues.map((e) => e.toString()), t.hinkalLogicArgs.inHinkalAddress = e.hinkalLogicArgs.inHinkalAddress.toString(), t.hinkalLogicArgs.executeApprovalChanges = e.hinkalLogicArgs.executeApprovalChanges.map((e) => e.toString()), t.hinkalLogicArgs.useApprovalUtxoData = e.hinkalLogicArgs.useApprovalUtxoData.map((e) => ({
37
41
  approvalChanges: e.approvalChanges.map((e) => e.toString()),
38
42
  externalApprovalAddresses: e.externalApprovalAddresses,
39
43
  conversionInHinkalAddress: e.conversionInHinkalAddress.map((e) => e.toString())
40
44
  })), t.feeStructure.flatFee = e.feeStructure.flatFee.toString(), t.feeStructure.variableRate = e.feeStructure.variableRate.toString(), t;
41
- }, g = (n, i, s, l, u, d, f, p, m, h, g, _) => {
45
+ }, y = (n, i, s, l, u, d, f, p, m, h, g, _) => {
42
46
  let v = Object.values(f || r), y = _ ?? o(s ?? t, i), b = c.AbiCoder.defaultAbiCoder().encode([
43
47
  "uint16",
44
48
  "address",
@@ -73,7 +77,7 @@ var l = (e) => {
73
77
  y
74
78
  ]), S = BigInt(c.keccak256(b)), C = BigInt(c.keccak256(x)), w = c.AbiCoder.defaultAbiCoder().encode(["uint256", "uint256"], [S, C]);
75
79
  return BigInt(c.keccak256(w)) % e;
76
- }, _ = (e, t, n, r, i) => e.startsWith("mainEVMCircuitMin0") ? 3 : 2 + t.length + n.length + 1 + r.flat().length + i.flat().length + 1 + 1 + 1 + 1 + 1 + 1, v = (e, t, r) => {
80
+ }, b = (e, t, n, r, i) => e.startsWith("mainEVMCircuitMin0") ? 3 : 2 + t.length + n.length + 1 + r.flat().length + i.flat().length + 1 + 1 + 1 + 1 + 1 + 1, x = (e, t, r) => {
77
81
  let { H0: i } = n.getRandomizedStealthPair(e, t), a = n.getH1FromH0(i, t), o = BigInt(n.getStealthAddressNewStyle(i, t, r));
78
82
  return {
79
83
  extraRandomization: s(i[0]),
@@ -81,6 +85,6 @@ var l = (e) => {
81
85
  H1: a[1],
82
86
  stealthAddress: o
83
87
  };
84
- }, y = (e, t) => t.length === 0 ? "mainEVMCircuitMin0" : `mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;
88
+ }, S = (e, t) => t.length === 0 ? "mainEVMCircuitMin0" : `mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;
85
89
  //#endregion
86
- export { d as buildOutCommitments, f as calcAmountChanges, m as calcEncryptedOutputs, _ as calcPublicSignalCount, v as calcStealthAddressStructure, g as createCallDataHash, p as getSlippageValues, l as getUtxoCircuitH0Coords, u as getUtxoCircuitInRandomization, y as getZkProofVerifierName, h as serializeCircomData };
90
+ export { m as buildOutCommitments, p as buildZeroInputMerkleDataFromSerialized, h as calcAmountChanges, _ as calcEncryptedOutputs, b as calcPublicSignalCount, x as calcStealthAddressStructure, y as createCallDataHash, g as getSlippageValues, l as getUtxoCircuitH0Coords, u as getUtxoCircuitInRandomization, S as getZkProofVerifierName, f as hasOnlyZeroAmounts, v as serializeCircomData };
@@ -1 +1 @@
1
- const e=require(`../../constants/vite.constants.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../utils/amounts.utils.cjs`),r=require(`../../webworker/worker.registry.cjs`),i=require(`../../webworker/performTaskWithWorker.cjs`),a=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`),o=require(`./fetchMerkleTreeSiblings.cjs`),s=require(`./fetchOnChainRootHashes.cjs`);var c=async(t,n)=>{let o=t.getRootHash();if(o===void 0)throw Error(`Root hash not available from hinkal merkle tree`);let s;return s=(e.isNode,await i.performTaskWithWorker({type:r.WorkerVariant.ZKProof,payload:{type:a.ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES,data:{inputUtxosSerialized:n,merkleTreeSerialized:t.toJSON()}}})),{inCommitmentSiblings:s.inCommitmentSiblings,inCommitmentSiblingSides:s.inCommitmentSiblingSides,rootHashHinkal:o}},l=async(e,t)=>{let r=await o.fetchMerkleTreeSiblings(e,t);return{inCommitmentSiblings:r.inCommitmentSiblings,inCommitmentSiblingSides:r.inCommitmentSiblingSides,rootHashHinkal:n.toBigInt(r.rootHashHinkal)}},u=async(e,t)=>{if(!t)return!1;try{let n=t.getRootHash();if(n===void 0)return!1;let{hinkalRootHash:r}=await s.fetchOnChainRootHashes(e);return n===r}catch{return!1}},d=async(e,n,r)=>await u(e,r)||t.isLocalNetwork(e)?c(r,n):l(e,n),f=async(t,n,o)=>{if(e.isNode){let{inCommitmentSiblings:e,inCommitmentSiblingSides:s,rootHashHinkal:c}=await d(t,o,n);return{inCommitmentSiblings:e,inCommitmentSiblingSides:s,rootHashHinkal:c,inNullifiers:await i.performTaskWithWorker({type:r.WorkerVariant.ZKProof,payload:{type:a.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:o}}})}}else{let[{inCommitmentSiblings:e,inCommitmentSiblingSides:s,rootHashHinkal:c},l]=await Promise.all([d(t,o,n),i.performTaskWithWorker({type:r.WorkerVariant.ZKProof,payload:{type:a.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:o}}})]);return{inCommitmentSiblings:e,inCommitmentSiblingSides:s,rootHashHinkal:c,inNullifiers:l}}};exports.getDataFromWorkers=f;
1
+ const e=require(`../../constants/vite.constants.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../utils/amounts.utils.cjs`),r=require(`./common.snarkjs.cjs`),i=require(`../../webworker/worker.registry.cjs`),a=require(`../../webworker/performTaskWithWorker.cjs`),o=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`),s=require(`./fetchMerkleTreeSiblings.cjs`),c=require(`./fetchOnChainRootHashes.cjs`);var l=async(t,n)=>{let r=t.getRootHash();if(r===void 0)throw Error(`Root hash not available from hinkal merkle tree`);let s;return s=(e.isNode,await a.performTaskWithWorker({type:i.WorkerVariant.ZKProof,payload:{type:o.ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES,data:{inputUtxosSerialized:n,merkleTreeSerialized:t.toJSON()}}})),{inCommitmentSiblings:s.inCommitmentSiblings,inCommitmentSiblingSides:s.inCommitmentSiblingSides,rootHashHinkal:r}},u=async(e,t)=>{let r=await s.fetchMerkleTreeSiblings(e,t);return{inCommitmentSiblings:r.inCommitmentSiblings,inCommitmentSiblingSides:r.inCommitmentSiblingSides,rootHashHinkal:n.toBigInt(r.rootHashHinkal)}},d=async(e,t)=>{if(!t)return!1;try{let n=t.getRootHash();if(n===void 0)return!1;let{hinkalRootHash:r}=await c.fetchOnChainRootHashes(e);return n===r}catch{return!1}},f=async(e,n,r)=>await d(e,r)||t.isLocalNetwork(e)?l(r,n):u(e,n),p=async(n,s,l)=>{if(r.hasOnlyZeroAmounts(l)){let e=r.buildZeroInputMerkleDataFromSerialized(l);if(t.isLocalNetwork(n)){let t=s.getRootHash();if(t===void 0)throw Error(`Root hash not available from hinkal merkle tree`);return{...e,rootHashHinkal:t}}let{hinkalRootHash:i}=await c.fetchOnChainRootHashes(n);return{...e,rootHashHinkal:i}}if(e.isNode){let{inCommitmentSiblings:e,inCommitmentSiblingSides:t,rootHashHinkal:r}=await f(n,l,s);return{inCommitmentSiblings:e,inCommitmentSiblingSides:t,rootHashHinkal:r,inNullifiers:await a.performTaskWithWorker({type:i.WorkerVariant.ZKProof,payload:{type:o.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:l}}})}}else{let[{inCommitmentSiblings:e,inCommitmentSiblingSides:t,rootHashHinkal:r},c]=await Promise.all([f(n,l,s),a.performTaskWithWorker({type:i.WorkerVariant.ZKProof,payload:{type:o.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:l}}})]);return{inCommitmentSiblings:e,inCommitmentSiblingSides:t,rootHashHinkal:r,inNullifiers:c}}};exports.getDataFromWorkers=p;
@@ -1,6 +1,5 @@
1
1
  import { MerkleTree } from '../../data-structures/merkle-tree';
2
2
  import { IUtxoConstructor } from '../../data-structures/utxo/Utxo';
3
- import { ZKProofWorkerBuildInNullifiersReturn } from '../../webworker/zkProofWorker/zkProofWorker.types';
4
3
  interface MerkleTreeSiblingsAndRootHashes {
5
4
  inCommitmentSiblings: string[][][];
6
5
  inCommitmentSiblingSides: string[][][];
@@ -8,9 +7,9 @@ interface MerkleTreeSiblingsAndRootHashes {
8
7
  }
9
8
  export declare const getMerkleTreeSiblingsAndRootHashes: (chainId: number, inputUtxosSerialized: IUtxoConstructor[][], merkleTree: MerkleTree<bigint>) => Promise<MerkleTreeSiblingsAndRootHashes>;
10
9
  export declare const getDataFromWorkers: (chainId: number, merkleTree: MerkleTree<bigint>, inputUtxosSerialized: IUtxoConstructor[][]) => Promise<{
10
+ rootHashHinkal: bigint;
11
11
  inCommitmentSiblings: string[][][];
12
12
  inCommitmentSiblingSides: string[][][];
13
- rootHashHinkal: bigint;
14
- inNullifiers: ZKProofWorkerBuildInNullifiersReturn;
13
+ inNullifiers: string[][];
15
14
  }>;
16
15
  export {};
@@ -1,77 +1,94 @@
1
1
  import { isNode as e } from "../../constants/vite.constants.mjs";
2
2
  import { isLocalNetwork as t } from "../../constants/chains.constants.mjs";
3
3
  import { toBigInt as n } from "../utils/amounts.utils.mjs";
4
- import { WorkerVariant as r } from "../../webworker/worker.registry.mjs";
5
- import { performTaskWithWorker as i } from "../../webworker/performTaskWithWorker.mjs";
6
- import { ZKProofWorkerActionType as a } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
7
- import { fetchMerkleTreeSiblings as o } from "./fetchMerkleTreeSiblings.mjs";
8
- import { fetchOnChainRootHashes as s } from "./fetchOnChainRootHashes.mjs";
4
+ import { buildZeroInputMerkleDataFromSerialized as r, hasOnlyZeroAmounts as i } from "./common.snarkjs.mjs";
5
+ import { WorkerVariant as a } from "../../webworker/worker.registry.mjs";
6
+ import { performTaskWithWorker as o } from "../../webworker/performTaskWithWorker.mjs";
7
+ import { ZKProofWorkerActionType as s } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
8
+ import { fetchMerkleTreeSiblings as c } from "./fetchMerkleTreeSiblings.mjs";
9
+ import { fetchOnChainRootHashes as l } from "./fetchOnChainRootHashes.mjs";
9
10
  //#region libs/shared/common/src/functions/snarkjs/getMerkleTreeSiblingsAndRootHashes.ts
10
- var c = async (e, t) => {
11
+ var u = async (e, t) => {
11
12
  let n = e.getRootHash();
12
13
  if (n === void 0) throw Error("Root hash not available from hinkal merkle tree");
13
- let o;
14
- return o = await i({
15
- type: r.ZKProof,
14
+ let r;
15
+ return r = await o({
16
+ type: a.ZKProof,
16
17
  payload: {
17
- type: a.CALC_COMMITMENTS_SIBLING_AND_SIDES,
18
+ type: s.CALC_COMMITMENTS_SIBLING_AND_SIDES,
18
19
  data: {
19
20
  inputUtxosSerialized: t,
20
21
  merkleTreeSerialized: e.toJSON()
21
22
  }
22
23
  }
23
24
  }), {
24
- inCommitmentSiblings: o.inCommitmentSiblings,
25
- inCommitmentSiblingSides: o.inCommitmentSiblingSides,
25
+ inCommitmentSiblings: r.inCommitmentSiblings,
26
+ inCommitmentSiblingSides: r.inCommitmentSiblingSides,
26
27
  rootHashHinkal: n
27
28
  };
28
- }, l = async (e, t) => {
29
- let r = await o(e, t);
29
+ }, d = async (e, t) => {
30
+ let r = await c(e, t);
30
31
  return {
31
32
  inCommitmentSiblings: r.inCommitmentSiblings,
32
33
  inCommitmentSiblingSides: r.inCommitmentSiblingSides,
33
34
  rootHashHinkal: n(r.rootHashHinkal)
34
35
  };
35
- }, u = async (e, t) => {
36
+ }, f = async (e, t) => {
36
37
  if (!t) return !1;
37
38
  try {
38
39
  let n = t.getRootHash();
39
40
  if (n === void 0) return !1;
40
- let { hinkalRootHash: r } = await s(e);
41
+ let { hinkalRootHash: r } = await l(e);
41
42
  return n === r;
42
43
  } catch {
43
44
  return !1;
44
45
  }
45
- }, d = async (e, n, r) => await u(e, r) || t(e) ? c(r, n) : l(e, n), f = async (t, n, o) => {
46
+ }, p = async (e, n, r) => await f(e, r) || t(e) ? u(r, n) : d(e, n), m = async (n, c, u) => {
47
+ if (i(u)) {
48
+ let e = r(u);
49
+ if (t(n)) {
50
+ let t = c.getRootHash();
51
+ if (t === void 0) throw Error("Root hash not available from hinkal merkle tree");
52
+ return {
53
+ ...e,
54
+ rootHashHinkal: t
55
+ };
56
+ }
57
+ let { hinkalRootHash: i } = await l(n);
58
+ return {
59
+ ...e,
60
+ rootHashHinkal: i
61
+ };
62
+ }
46
63
  if (e) {
47
- let { inCommitmentSiblings: e, inCommitmentSiblingSides: s, rootHashHinkal: c } = await d(t, o, n);
64
+ let { inCommitmentSiblings: e, inCommitmentSiblingSides: t, rootHashHinkal: r } = await p(n, u, c);
48
65
  return {
49
66
  inCommitmentSiblings: e,
50
- inCommitmentSiblingSides: s,
51
- rootHashHinkal: c,
52
- inNullifiers: await i({
53
- type: r.ZKProof,
67
+ inCommitmentSiblingSides: t,
68
+ rootHashHinkal: r,
69
+ inNullifiers: await o({
70
+ type: a.ZKProof,
54
71
  payload: {
55
- type: a.BUILD_IN_NULLIFIERS,
56
- data: { inputUtxosSerialized: o }
72
+ type: s.BUILD_IN_NULLIFIERS,
73
+ data: { inputUtxosSerialized: u }
57
74
  }
58
75
  })
59
76
  };
60
77
  } else {
61
- let [{ inCommitmentSiblings: e, inCommitmentSiblingSides: s, rootHashHinkal: c }, l] = await Promise.all([d(t, o, n), i({
62
- type: r.ZKProof,
78
+ let [{ inCommitmentSiblings: e, inCommitmentSiblingSides: t, rootHashHinkal: r }, i] = await Promise.all([p(n, u, c), o({
79
+ type: a.ZKProof,
63
80
  payload: {
64
- type: a.BUILD_IN_NULLIFIERS,
65
- data: { inputUtxosSerialized: o }
81
+ type: s.BUILD_IN_NULLIFIERS,
82
+ data: { inputUtxosSerialized: u }
66
83
  }
67
84
  })]);
68
85
  return {
69
86
  inCommitmentSiblings: e,
70
- inCommitmentSiblingSides: s,
71
- rootHashHinkal: c,
72
- inNullifiers: l
87
+ inCommitmentSiblingSides: t,
88
+ rootHashHinkal: r,
89
+ inNullifiers: i
73
90
  };
74
91
  }
75
92
  };
76
93
  //#endregion
77
- export { f as getDataFromWorkers };
94
+ export { m as getDataFromWorkers };
@@ -1 +1 @@
1
- const e=require(`../../../constants/vite.constants.cjs`),t=require(`../../../constants/chains.constants.cjs`),n=require(`../../utils/caseInsensitive.utils.cjs`),r=require(`../../../error-handling/error-codes.constants.cjs`),i=require(`../etherFunctions.cjs`),a=require(`../../../data-structures/utxo/Utxo.cjs`),o=require(`../../../error-handling/customErrors/ErrorWithAmount.cjs`);require(`../../../error-handling/customErrors/index.cjs`);const s=require(`../../utils/encodeTokenWithId.cjs`),c=require(`../../utils/solanaMint.utils.cjs`),l=require(`./getInputUtxoAndBalance.cjs`),u=require(`../../../data-structures/TokenDBs/PrivateTokensDB.cjs`),d=require(`../../utils/mutexes.utils.cjs`),f=require(`../../utils/erc20tokenFunctions.cjs`);var p=async(t,r,i,a,o,s=!1,c,p=!1,m=!1)=>d.getChainBalanceFetchingMutex(r).runExclusive(async()=>{let{inputUtxos:d}=m?await l.getInputUtxoAndBalanceOfStuckUtxos({hinkal:t,chainId:r,ethAddress:o,passedShieldedPrivateKey:i,resetCacheBefore:s,allowRemoteDecryption:c}):await l.getInputUtxoAndBalance({hinkal:t,sliceIfMore6:!1,chainId:r,passedShieldedPrivateKey:i,passedShieldedPublicKey:a,ethAddress:o,resetCacheBefore:s,allowRemoteDecryption:c});p&&e.isExtension&&await u.privateTokensDB.fetchAndUpdatePrivateTokens(d.map(e=>e.getTokenAddress(r)).filter(e=>e!==void 0),r,o);let h=(e.isExtension?await u.privateTokensDB.getPrivateTokens(r,o):await f.getErc20TokensForChainAPI(r)).map(e=>({token:e,balance:d.reduce((t,i)=>{let a=e.erc20TokenAddress;return n.caseInsensitiveEqual(a,i.getTokenAddress(r))?t+i.amount:t},0n),timestamp:d.filter(t=>n.caseInsensitiveEqual(t.getTokenAddress(r),e.erc20TokenAddress))[0]?.timeStamp,nfts:[]})),g=new Map;return h.forEach(e=>{g.set(e.token.erc20TokenAddress.toLowerCase(),e)}),g}),m=async(e,n,u,d,p=6,m=u.map(()=>0),h=!1,g=!1)=>{let{userKeys:_}=e,v=_.getSpendingKeyPair().pubSpendingBJJPoint,y=[],b=[];if(u.length===0)return[];let x=await l.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,ensuredTokensWithId:u.map((e,t)=>({erc20TokenAddress:u[t],tokenId:m[t]})),allowRemoteDecryption:e.generateProofRemotely,useBlockedUtxos:g,chainId:n}),S=0;for(let e=0;e<u.length;e+=1)if(h===!1){let t=x.get(s.encodeTokenWithId(n,{erc20TokenAddress:u[e],tokenId:m[e]}))??[];if(!t)throw Error(`Missing utxos for token`);S=Math.max(t.length,S),b.push(t)}else b.push([]);if(S===2)return b;for(let[e,s]of b.entries())if(s.length>p){let t=s.slice(0,p),a=t.reduce((e,t)=>e+t.amount,0n);if(d[e]<0n&&a<-d[e]){let t=await f.getErc20TokenFromAPI(n,u[e]);if(!t)throw Error(`Token not found`);let s=t.decimals===18?6:2,c=Number(i.getAmountWithPrecision(a,t,s));throw new o.ErrorWithAmount(c,`${r.DIRECTLY_SHOW_MESSAGE_ERROR_CODES.UTXO_LIMITATIONS}. Please try again with ${c} ${t.symbol}, including gas fees.`)}y.push(t)}else if(s.length<=p){let r=[...s],i=p-s.length;for(;i>0;){--i;let o=t.isSolanaLike(n),s=o?u[e]:void 0,l=o?c.formatMintAddress(u[e]).compressedAddress:u[e];r.push(new a.Utxo({amount:0n,erc20TokenAddress:l,mintAddress:s,nullifyingKey:_.getShieldedPrivateKey(),spendingPublicKey:v,isNewStyle:!0}))}y.push(r)}return y};exports.addPaddingToUtxos=m,exports.getShieldedBalance=p;
1
+ const e=require(`../../../constants/vite.constants.cjs`),t=require(`../../../constants/chains.constants.cjs`),n=require(`../../utils/caseInsensitive.utils.cjs`),r=require(`../../../error-handling/error-codes.constants.cjs`),i=require(`../etherFunctions.cjs`),a=require(`../../../data-structures/utxo/Utxo.cjs`),o=require(`../../../error-handling/customErrors/ErrorWithAmount.cjs`);require(`../../../error-handling/customErrors/index.cjs`);const s=require(`../../utils/encodeTokenWithId.cjs`),c=require(`../../utils/solanaMint.utils.cjs`),l=require(`./getInputUtxoAndBalance.cjs`),u=require(`../../../data-structures/TokenDBs/PrivateTokensDB.cjs`),d=require(`../../utils/mutexes.utils.cjs`),f=require(`../../utils/erc20tokenFunctions.cjs`);var p=async(t,r,i,a,o,s=!1,c,p=!1,m=!1)=>d.getChainBalanceFetchingMutex(r).runExclusive(async()=>{let{inputUtxos:d}=m?await l.getInputUtxoAndBalanceOfStuckUtxos({hinkal:t,chainId:r,ethAddress:o,passedShieldedPrivateKey:i,resetCacheBefore:s,allowRemoteDecryption:c}):await l.getInputUtxoAndBalance({hinkal:t,sliceIfMore6:!1,chainId:r,passedShieldedPrivateKey:i,passedShieldedPublicKey:a,ethAddress:o,resetCacheBefore:s,allowRemoteDecryption:c});p&&e.isExtension&&await u.privateTokensDB.fetchAndUpdatePrivateTokens(d.map(e=>e.getTokenAddress(r)).filter(e=>e!==void 0),r,o);let h=(e.isExtension?await u.privateTokensDB.getPrivateTokens(r,o):await f.getErc20TokensForChainAPI(r)).map(e=>({token:e,balance:d.reduce((t,i)=>{let a=e.erc20TokenAddress;return n.caseInsensitiveEqual(a,i.getTokenAddress(r))?t+i.amount:t},0n),timestamp:d.filter(t=>n.caseInsensitiveEqual(t.getTokenAddress(r),e.erc20TokenAddress))[0]?.timeStamp,nfts:[]})),g=new Map;return h.forEach(e=>{g.set(e.token.erc20TokenAddress.toLowerCase(),e)}),g}),m=async(e,n,u,d,p=6,m=u.map(()=>0),h=!1,g=!1)=>{let{userKeys:_}=e,v=_.getSpendingKeyPair().pubSpendingBJJPoint,y=[],b=[];if(u.length===0)return[];if(h){for(let e=0;e<u.length;e+=1){let r=t.isSolanaLike(n),i=r?u[e]:void 0,o=r?c.formatMintAddress(u[e]).compressedAddress:u[e];y.push(Array.from({length:p},()=>new a.Utxo({amount:0n,erc20TokenAddress:o,mintAddress:i,nullifyingKey:_.getShieldedPrivateKey(),spendingPublicKey:v,isNewStyle:!0})))}return y}let x=await l.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,ensuredTokensWithId:u.map((e,t)=>({erc20TokenAddress:u[t],tokenId:m[t]})),allowRemoteDecryption:e.generateProofRemotely,useBlockedUtxos:g,chainId:n}),S=0;for(let e=0;e<u.length;e+=1){let t=x.get(s.encodeTokenWithId(n,{erc20TokenAddress:u[e],tokenId:m[e]}))??[];if(!t)throw Error(`Missing utxos for token`);S=Math.max(t.length,S),b.push(t)}if(S===2)return b;for(let[e,s]of b.entries())if(s.length>p){let t=s.slice(0,p),a=t.reduce((e,t)=>e+t.amount,0n);if(d[e]<0n&&a<-d[e]){let t=await f.getErc20TokenFromAPI(n,u[e]);if(!t)throw Error(`Token not found`);let s=t.decimals===18?6:2,c=Number(i.getAmountWithPrecision(a,t,s));throw new o.ErrorWithAmount(c,`${r.DIRECTLY_SHOW_MESSAGE_ERROR_CODES.UTXO_LIMITATIONS}. Please try again with ${c} ${t.symbol}, including gas fees.`)}y.push(t)}else if(s.length<=p){let r=[...s],i=p-s.length;for(;i>0;){--i;let o=t.isSolanaLike(n),s=o?u[e]:void 0,l=o?c.formatMintAddress(u[e]).compressedAddress:u[e];r.push(new a.Utxo({amount:0n,erc20TokenAddress:l,mintAddress:s,nullifyingKey:_.getShieldedPrivateKey(),spendingPublicKey:v,isNewStyle:!0}))}y.push(r)}return y};exports.addPaddingToUtxos=m,exports.getShieldedBalance=p;
@@ -47,6 +47,20 @@ var g = async (t, r, i, a, o, s = !1, c, d = !1, m = !1) => p(r).runExclusive(as
47
47
  }), _ = async (e, n, l, u, f = 6, p = l.map(() => 0), h = !1, g = !1) => {
48
48
  let { userKeys: _ } = e, v = _.getSpendingKeyPair().pubSpendingBJJPoint, y = [], b = [];
49
49
  if (l.length === 0) return [];
50
+ if (h) {
51
+ for (let e = 0; e < l.length; e += 1) {
52
+ let r = t(n), i = r ? l[e] : void 0, o = r ? c(l[e]).compressedAddress : l[e];
53
+ y.push(Array.from({ length: f }, () => new a({
54
+ amount: 0n,
55
+ erc20TokenAddress: o,
56
+ mintAddress: i,
57
+ nullifyingKey: _.getShieldedPrivateKey(),
58
+ spendingPublicKey: v,
59
+ isNewStyle: !0
60
+ })));
61
+ }
62
+ return y;
63
+ }
50
64
  let x = await d({
51
65
  hinkal: e,
52
66
  sliceIfMore6: !1,
@@ -58,14 +72,14 @@ var g = async (t, r, i, a, o, s = !1, c, d = !1, m = !1) => p(r).runExclusive(as
58
72
  useBlockedUtxos: g,
59
73
  chainId: n
60
74
  }), S = 0;
61
- for (let e = 0; e < l.length; e += 1) if (h === !1) {
75
+ for (let e = 0; e < l.length; e += 1) {
62
76
  let t = x.get(s(n, {
63
77
  erc20TokenAddress: l[e],
64
78
  tokenId: p[e]
65
79
  })) ?? [];
66
80
  if (!t) throw Error("Missing utxos for token");
67
81
  S = Math.max(t.length, S), b.push(t);
68
- } else b.push([]);
82
+ }
69
83
  if (S === 2) return b;
70
84
  for (let [e, s] of b.entries()) if (s.length > f) {
71
85
  let t = s.slice(0, f), a = t.reduce((e, t) => e + t.amount, 0n);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapa123456789/sdk",
3
- "version": "0.0.74",
3
+ "version": "0.0.76",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -14,8 +14,8 @@
14
14
  var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
15
15
 
16
16
  const n = async () => ({
17
- [e.ZKProof]: await getWorkerURL(domain + '/0.0.74/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.0.74/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.0.74/' + 'utxoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.0.76/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.0.76/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.0.76/' + 'utxoWorkerLauncher.js'),
20
20
  });
21
21
  exports.getWorkerViteURL = n;
@@ -14,8 +14,8 @@
14
14
  var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
15
15
 
16
16
  const n = async () => ({
17
- [e.ZKProof]: await getWorkerURL(domain + '/0.0.74/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.0.74/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.0.74/' + 'utxoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.0.76/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.0.76/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.0.76/' + 'utxoWorkerLauncher.js'),
20
20
  });
21
21
  export { n as getWorkerViteURL };
@@ -1 +1 @@
1
- var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/zkProofWorkerLauncher-DzjU7PBO.js`).href:new URL(`../../../../assets/zkProofWorkerLauncher-DzjU7PBO.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
1
+ var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/zkProofWorkerLauncher-3izYT6GW.js`).href:new URL(`../../../../assets/zkProofWorkerLauncher-3izYT6GW.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
@@ -1,4 +1,4 @@
1
1
  //#region libs/shared/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url
2
- var e = "" + new URL("../../../../assets/zkProofWorkerLauncher-DzjU7PBO.js", import.meta.url).href;
2
+ var e = "" + new URL("../../../../assets/zkProofWorkerLauncher-3izYT6GW.js", import.meta.url).href;
3
3
  //#endregion
4
4
  export { e as default };
@@ -1 +1 @@
1
- const e=require(`./workerProxy-D22p2w2G.js`),t=require(`./logError-o9XP6THu.js`);let n=require(`buffer`),r=require(`process`);r=e.l(r);let i=require(`worker_threads`);require(`ethers`),Object.values({preHookContract:`0x0000000000000000000000000000000000000000`,hookContract:`0x0000000000000000000000000000000000000000`,preHookMetadata:`0x00`,postHookMetadata:`0x00`});var a=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=1){n.push([]);for(let i=0;i<e[r].length;i+=1)n[r][i]=t.getSiblingHashesForVerification(BigInt(e[r][i].getCommitment())).map(e=>e.toString())}let r=[];for(let n=0;n<e.length;n+=1){r.push([]);for(let i=0;i<e[n].length;i+=1)r[n][i]=t.getSiblingSides(BigInt(e[n][i].getCommitment())).map(e=>e.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:r}},o=function(e){return e[e.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]=`CALC_COMMITMENTS_SIBLING_AND_SIDES`,e[e.BUILD_IN_NULLIFIERS=1]=`BUILD_IN_NULLIFIERS`,e}({}),s=class extends Error{constructor(){super(`Merkle tree is incomplete`),this.name=`MerkleTreeIncompleteError`}},c=class e{tree;count;index;reverseTree;static createWithData(t,n,r,i,a,o,s){return new e(a,o,s,t,n,r,i)}static create(n,r,i=t.u){return new e(n,i,r)}createReverseTree(){let e=new Map;for(let t=this.getStartIndex();t<this.getStartIndex()+this.count;t+=1n){let n=this.tree.get(t);n!==void 0&&e.set(n,t)}return e}constructor(e,t,n,r,i,a,o){this.hashFunction=e,this.levels=t,this.defaultNodeValue=n,this.tree=r??new Map,this.count=o??0n,this.index=a??2n**(t-1n),i?this.reverseTree=i:this.reverseTree=this.createReverseTree()}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(e){let t=0n;for(;2n**t<e;)t+=1n;return t}bigIntMax(e,t){return e>t?e:t}forceInsert(e,t){if(t<this.getStartIndex())throw RangeError();this.tree.set(t,e),this.reverseTree.set(e,t);let n=this.index-this.getStartIndex(),r=this.logarithm2(n),i=t;for(let e=1n;e<=r;e+=1n){i/=2n;let e=this.hashFunction(this.tree.get(i*2n)||this.defaultNodeValue,this.tree.get(i*2n+1n)||this.defaultNodeValue);this.tree.set(i,e)}}insert(e,n){let r=!1;this.tree.has(n)&&(r=!0,t.t(`Editing commitment index: ${n} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(e,n)}remove(e){this.forceInsert(this.defaultNodeValue,e)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new s}getRootHash(){this.completenessCheck();for(let e=1n;e<2n**this.levels;e*=2n)if(this.tree.get(e))return this.tree.get(e);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getValue(e){return this.tree.get(e)}getSiblingIndex(e){return e===1n?1n:e%2n==1n?e-1n:e+1n}getSiblingHashesForVerification(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;)n.push(this.tree.get(this.getSiblingIndex(t))||this.defaultNodeValue),t/=2n;return n.slice(0,25)}getSiblingSides(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;){let e=t%2n==0n?0n:1n;n.push(e),t/=2n}return n.slice(0,25)}toJSON(){let{tree:e,reverseTree:t,count:n,index:r}=this;return{tree:Object.fromEntries(e),reverseTree:Object.fromEntries(t),count:n.toString(),index:r.toString()}}toJSONLite(){let{tree:e,count:t,index:n}=this;return{tree:Object.fromEntries(e),count:t.toString(),index:n.toString()}}clone(){return e.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}},l=e=>new Map(Object.entries(e).map(([e,t])=>[BigInt(e),BigInt(t)])),u=e=>{let n=l(e.tree),r=e.reverseTree?l(e.reverseTree):void 0;return c.createWithData(n,r,BigInt(e.index),BigInt(e.count),t.f,t.u,0n)},d=new e.t,f=e=>{let{inputUtxosSerialized:n,merkleTreeSerialized:r}=e.data,i=u(r),{inCommitmentSiblings:o,inCommitmentSiblingSides:s}=a(n.map(e=>e.map(e=>new t.o(e))),i);d.postMessageToMainThread({inCommitmentSiblings:o,inCommitmentSiblingSides:s})},p=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.o(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));d.postMessageToMainThread(r)},m=async e=>{try{await t.d(!0);let{type:n}=e.payload;switch(n){case o.CALC_COMMITMENTS_SIBLING_AND_SIDES:f(e.payload);return;case o.BUILD_IN_NULLIFIERS:p(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(`zk proof worker message failed`,e),d.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await m(e)});
1
+ const e=require(`./workerProxy-D22p2w2G.js`),t=require(`./logError-o9XP6THu.js`);let n=require(`buffer`),r=require(`process`);r=e.l(r);let i=require(`worker_threads`);require(`ethers`),Object.values({preHookContract:`0x0000000000000000000000000000000000000000`,hookContract:`0x0000000000000000000000000000000000000000`,preHookMetadata:`0x00`,postHookMetadata:`0x00`}),Array.from({length:25},()=>`0`);var a=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=1){n.push([]);for(let i=0;i<e[r].length;i+=1)n[r][i]=t.getSiblingHashesForVerification(BigInt(e[r][i].getCommitment())).map(e=>e.toString())}let r=[];for(let n=0;n<e.length;n+=1){r.push([]);for(let i=0;i<e[n].length;i+=1)r[n][i]=t.getSiblingSides(BigInt(e[n][i].getCommitment())).map(e=>e.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:r}},o=function(e){return e[e.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]=`CALC_COMMITMENTS_SIBLING_AND_SIDES`,e[e.BUILD_IN_NULLIFIERS=1]=`BUILD_IN_NULLIFIERS`,e}({}),s=class extends Error{constructor(){super(`Merkle tree is incomplete`),this.name=`MerkleTreeIncompleteError`}},c=class e{tree;count;index;reverseTree;static createWithData(t,n,r,i,a,o,s){return new e(a,o,s,t,n,r,i)}static create(n,r,i=t.u){return new e(n,i,r)}createReverseTree(){let e=new Map;for(let t=this.getStartIndex();t<this.getStartIndex()+this.count;t+=1n){let n=this.tree.get(t);n!==void 0&&e.set(n,t)}return e}constructor(e,t,n,r,i,a,o){this.hashFunction=e,this.levels=t,this.defaultNodeValue=n,this.tree=r??new Map,this.count=o??0n,this.index=a??2n**(t-1n),i?this.reverseTree=i:this.reverseTree=this.createReverseTree()}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(e){let t=0n;for(;2n**t<e;)t+=1n;return t}bigIntMax(e,t){return e>t?e:t}forceInsert(e,t){if(t<this.getStartIndex())throw RangeError();this.tree.set(t,e),this.reverseTree.set(e,t);let n=this.index-this.getStartIndex(),r=this.logarithm2(n),i=t;for(let e=1n;e<=r;e+=1n){i/=2n;let e=this.hashFunction(this.tree.get(i*2n)||this.defaultNodeValue,this.tree.get(i*2n+1n)||this.defaultNodeValue);this.tree.set(i,e)}}insert(e,n){let r=!1;this.tree.has(n)&&(r=!0,t.t(`Editing commitment index: ${n} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(e,n)}remove(e){this.forceInsert(this.defaultNodeValue,e)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new s}getRootHash(){this.completenessCheck();for(let e=1n;e<2n**this.levels;e*=2n)if(this.tree.get(e))return this.tree.get(e);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getValue(e){return this.tree.get(e)}getSiblingIndex(e){return e===1n?1n:e%2n==1n?e-1n:e+1n}getSiblingHashesForVerification(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;)n.push(this.tree.get(this.getSiblingIndex(t))||this.defaultNodeValue),t/=2n;return n.slice(0,25)}getSiblingSides(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;){let e=t%2n==0n?0n:1n;n.push(e),t/=2n}return n.slice(0,25)}toJSON(){let{tree:e,reverseTree:t,count:n,index:r}=this;return{tree:Object.fromEntries(e),reverseTree:Object.fromEntries(t),count:n.toString(),index:r.toString()}}toJSONLite(){let{tree:e,count:t,index:n}=this;return{tree:Object.fromEntries(e),count:t.toString(),index:n.toString()}}clone(){return e.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}},l=e=>new Map(Object.entries(e).map(([e,t])=>[BigInt(e),BigInt(t)])),u=e=>{let n=l(e.tree),r=e.reverseTree?l(e.reverseTree):void 0;return c.createWithData(n,r,BigInt(e.index),BigInt(e.count),t.f,t.u,0n)},d=new e.t,f=e=>{let{inputUtxosSerialized:n,merkleTreeSerialized:r}=e.data,i=u(r),{inCommitmentSiblings:o,inCommitmentSiblingSides:s}=a(n.map(e=>e.map(e=>new t.o(e))),i);d.postMessageToMainThread({inCommitmentSiblings:o,inCommitmentSiblingSides:s})},p=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.o(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));d.postMessageToMainThread(r)},m=async e=>{try{await t.d(!0);let{type:n}=e.payload;switch(n){case o.CALC_COMMITMENTS_SIBLING_AND_SIDES:f(e.payload);return;case o.BUILD_IN_NULLIFIERS:p(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(`zk proof worker message failed`,e),d.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await m(e)});
@@ -1 +1 @@
1
- const e=require(`../../common/src/functions/utils/erc20tokenFunctions.cjs`),t=require(`../../common/src/functions/utils/process.utils.cjs`),n=require(`../../common/src/functions/web3/uniswapAPI.cjs`),r=require(`../../common/src/functions/web3/odosAPI.cjs`),i=require(`../../common/src/functions/web3/oneInchAPI.cjs`),a=require(`../../common/src/functions/web3/okxAPI.cjs`);require(`../../common/src/functions/index.cjs`);var o=async(t,r,i,a,o)=>{let s=t.hinkalCommon,[c,l]=await e.resolveErc20Tokens(r,[a,o]);return n.getUniswapPrice(s,r,i,c,l)},s=async(n,a,s,c,l)=>{let[u,d]=await e.resolveErc20Tokens(a,[c,l]),[f,p,m]=await Promise.allSettled([t.withTimeout(o(n,a,s,c,l)),t.withTimeout(r.getOdosPrice(a,u,d,s)),t.withTimeout(i.getOneInchPrice(a,u,d,s))]);return{uniswap:f.status===`fulfilled`?f.value:null,odos:p.status===`fulfilled`?p.value:null,oneInch:m.status===`fulfilled`?m.value:null}},c=async(n,r,i,o)=>{let[s,c]=await e.resolveErc20Tokens(n,[i,o]);try{return{okx:await t.withTimeout(a.getOKXPrice(n,s,c,r))}}catch{return{okx:null}}};exports.getEvmSwapPrices=s,exports.getSolanaSwapPrices=c;
1
+ const e=require(`../../common/src/functions/utils/erc20tokenFunctions.cjs`),t=require(`../../common/src/functions/utils/process.utils.cjs`),n=require(`../../common/src/functions/web3/uniswapAPI.cjs`),r=require(`../../common/src/functions/web3/odosAPI.cjs`),i=require(`../../common/src/functions/web3/oneInchAPI.cjs`),a=require(`../../common/src/functions/web3/okxAPI.cjs`);require(`../../common/src/functions/index.cjs`);var o=async(t,r,i,a,o)=>{let s=t.hinkalCommon,[c,l]=await e.resolveErc20Tokens(r,[a,o]);return n.getUniswapPrice(s,r,i,c,l)},s=async(n,a,s,c,l)=>{console.log(`getEvmSwapPrices`,a,s,c,l);let[u,d]=await e.resolveErc20Tokens(a,[c,l]);console.log(`getEvmSwapPrices`,u,d);let[f,p,m]=await Promise.allSettled([t.withTimeout(o(n,a,s,c,l)),t.withTimeout(r.getOdosPrice(a,u,d,s)),t.withTimeout(i.getOneInchPrice(a,u,d,s))]);return console.log(`getEvmSwapPrices`,f,p,m),{uniswap:f.status===`fulfilled`?f.value:null,odos:p.status===`fulfilled`?p.value:null,oneInch:m.status===`fulfilled`?m.value:null}},c=async(n,r,i,o)=>{console.log(`getSolanaSwapPrices`,n,r,i,o);let[s,c]=await e.resolveErc20Tokens(n,[i,o]);console.log(`getSolanaSwapPrices`,s,c);try{return{okx:await t.withTimeout(a.getOKXPrice(n,s,c,r))}}catch(e){return console.log(`getSolanaSwapPrices error`,e),{okx:null}}};exports.getEvmSwapPrices=s,exports.getSolanaSwapPrices=c;
@@ -10,22 +10,27 @@ var o = async (t, r, i, a, o) => {
10
10
  let s = t.hinkalCommon, [c, l] = await e(r, [a, o]);
11
11
  return n(s, r, i, c, l);
12
12
  }, s = async (n, a, s, c, l) => {
13
- let [u, d] = await e(a, [c, l]), [f, p, m] = await Promise.allSettled([
13
+ console.log("getEvmSwapPrices", a, s, c, l);
14
+ let [u, d] = await e(a, [c, l]);
15
+ console.log("getEvmSwapPrices", u, d);
16
+ let [f, p, m] = await Promise.allSettled([
14
17
  t(o(n, a, s, c, l)),
15
18
  t(r(a, u, d, s)),
16
19
  t(i(a, u, d, s))
17
20
  ]);
18
- return {
21
+ return console.log("getEvmSwapPrices", f, p, m), {
19
22
  uniswap: f.status === "fulfilled" ? f.value : null,
20
23
  odos: p.status === "fulfilled" ? p.value : null,
21
24
  oneInch: m.status === "fulfilled" ? m.value : null
22
25
  };
23
26
  }, c = async (n, r, i, o) => {
27
+ console.log("getSolanaSwapPrices", n, r, i, o);
24
28
  let [s, c] = await e(n, [i, o]);
29
+ console.log("getSolanaSwapPrices", s, c);
25
30
  try {
26
31
  return { okx: await t(a(n, s, c, r)) };
27
- } catch {
28
- return { okx: null };
32
+ } catch (e) {
33
+ return console.log("getSolanaSwapPrices error", e), { okx: null };
29
34
  }
30
35
  };
31
36
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapa123456789/sdk",
3
- "version": "0.0.74",
3
+ "version": "0.0.76",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1 +1 @@
1
- const e=require(`../common/src/constants/chains.constants.cjs`),t=require(`../common/src/types/hinkal.types.cjs`);require(`../common/src/types/index.cjs`);const n=require(`../common/src/functions/utils/erc20tokenFunctions.cjs`);require(`../common/src/functions/index.cjs`);const r=require(`../common/src/data-structures/Hinkal/Hinkal.cjs`),i=require(`../internal/token.utils.cjs`);var a=class{hinkalCommon;mappedPrivateBalancesSource;mappedPrivateBalances={};constructor(e){this.hinkalCommon=new r.Hinkal(e)}getProviderAdapter(e){return this.hinkalCommon.getProviderAdapter(e)}initProviderAdapter(e,t){return this.hinkalCommon.initProviderAdapter(e,t)}initUserKeys(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeys(e)}initUserKeysWithSignature(e){return this.hinkalCommon.initUserKeysWithSignature(e)}initUserKeysFromSeedPhrases(e){return this.hinkalCommon.initUserKeysFromSeedPhrases(e)}storeAndGetInitialSignature(e,t=!1,n){return this.hinkalCommon.storeAndGetInitialSignature(e,t,n)}resetProviderAdapters(){return this.hinkalCommon.resetProviderAdapters()}disconnectFromConnector(){return this.hinkalCommon.disconnectFromConnector()}signMessage(e){return this.hinkalCommon.signMessage(e)}signTypedData(e,t,n){return this.hinkalCommon.signTypedData(e,t,n)}getSupportedChains(){return this.hinkalCommon.getSupportedChains()}isSelectedNetworkSupported(e){return this.hinkalCommon.isSelectedNetworkSupported(e)}switchNetwork(t){let n=e.networkRegistry[t];if(!n)throw Error(`Network with chainId ${t} not supported`);return this.hinkalCommon.switchNetwork(n)}resetMerkle(e){return this.hinkalCommon.resetMerkle(e)}resetMerkleTreesIfNecessary(e){return this.hinkalCommon.resetMerkleTreesIfNecessary(e)}getMappedPrivateBalances(e){return e===this.mappedPrivateBalancesSource?this.mappedPrivateBalances:(this.mappedPrivateBalancesSource=e,this.mappedPrivateBalances=i.mapPrivateBalances(e),this.mappedPrivateBalances)}get privateBalancesWithUSD(){return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD)}onPrivateBalancesWithUSDChange(e){return this.hinkalCommon.onPrivateBalancesWithUSDChange(t=>e(this.getMappedPrivateBalances(t)))}async getTotalBalance(e,t=!1,n=!1){return(await this.hinkalCommon.getTotalBalance(e,void 0,void 0,t,n)).map(i.mapTokenBalance)}async getStuckShieldedBalances(e,t=!1,n=!1){return(await this.hinkalCommon.getStuckShieldedBalances(e,void 0,void 0,t,n)).map(i.mapTokenBalance)}monitorConnectedAddress(e){return this.hinkalCommon.monitorConnectedAddress(e)}waitForTransaction(e,t,n){return this.hinkalCommon.waitForTransaction(e,t,n)}getSolanaPublicKey(){return this.hinkalCommon.getSolanaPublicKey()}getEthereumAddress(){return this.hinkalCommon.getEthereumAddress()}getEthereumAddressByChain(e){return this.hinkalCommon.getEthereumAddressByChain(e)}getRecipientInfo(){return this.hinkalCommon.getRecipientInfo()}getShieldedPublicKey(){return this.hinkalCommon.userKeys.getShieldedPublicKey()}async prooflessDeposit(e,t,r,i){return this.hinkalCommon.prooflessDeposit(await n.resolveErc20Tokens(e,t),r,i)}async prooflessDepositWithPublicFee(e,t,r,i,a){return this.hinkalCommon.prooflessDepositWithPublicFee(await n.resolveErc20Token(e,t),r,i,a)}async deposit(e,t,r,i,a){return this.hinkalCommon.deposit(await n.resolveErc20Tokens(e,t),r,i,a)}async depositSolana(e,t,r){return this.hinkalCommon.depositSolana(r,await n.resolveErc20Token(e,t))}async depositForOther(e,t,r,i,a,o){return this.hinkalCommon.depositForOther(await n.resolveErc20Tokens(e,t),r,i,a,o)}async depositSolanaForOther(e,t,r,i){return this.hinkalCommon.depositSolanaForOther(r,await n.resolveErc20Token(e,t),i)}async depositAndWithdraw(e,t,r,i,a,o,s){return this.hinkalCommon.depositAndWithdraw(await n.resolveErc20Token(e,t),r,i,a,o,void 0,void 0,void 0,s)}async depositAndBridge(e,t,r,i,a,o){return this.hinkalCommon.depositAndBridge(await n.resolveErc20Token(e,t),r,i,a,void 0,void 0,void 0,o)}async checkSendTransactionStatus(e){return this.hinkalCommon.checkSendTransactionStatus(e)}async nearDepositAndBridge(e,t,r,i,a,o,s){return this.hinkalCommon.nearDepositAndBridge(await n.resolveErc20Token(e,t),r,i,a,o,s)}async claimUtxo(e,t,r,i,a){return this.hinkalCommon.claimUtxo(await n.resolveErc20Token(e,t),r,i,a)}async transfer(e,t,r,i,a,o){return this.hinkalCommon.transfer(await n.resolveErc20Tokens(e,t),r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return this.hinkalCommon.withdraw(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async withdrawStuckUtxos(e,t,r){return this.hinkalCommon.withdrawStuckUtxos(await n.resolveErc20Token(e,t),r)}async swap(e,t,r,i,a,o,s){return this.hinkalCommon.swap(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async actionPrivateWallet(e,t,r,a,o,s,c,l,u){return this.hinkalCommon.actionPrivateWallet(e,await n.resolveErc20Tokens(e,t),r,a,o,await i.resolveCommonTokenChanges(e,s),c,l,u)}async proxySwap(e,t,r,i,a,o,s,c,l){return this.hinkalCommon.proxySwap(await n.resolveErc20Tokens(e,t),r,i,a,o,s,c,l)}async proxyToPrivate(e,t,r,i,a,o,s){return this.hinkalCommon.proxyToPrivate(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async proxySend(e,t,r,i,a,o,s){return this.hinkalCommon.proxySend(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}};exports.Hinkal=a;
1
+ const e=require(`../common/src/constants/chains.constants.cjs`),t=require(`../common/src/types/hinkal.types.cjs`);require(`../common/src/types/index.cjs`);const n=require(`../common/src/functions/utils/erc20tokenFunctions.cjs`);require(`../common/src/functions/index.cjs`);const r=require(`../common/src/data-structures/Hinkal/Hinkal.cjs`),i=require(`../internal/token.utils.cjs`);var a=class{hinkalCommon;mappedPrivateBalancesSource;mappedPrivateBalances={};constructor(e){this.hinkalCommon=new r.Hinkal(e)}getProviderAdapter(e){return this.hinkalCommon.getProviderAdapter(e)}initProviderAdapter(e,t){return this.hinkalCommon.initProviderAdapter(e,t)}initUserKeys(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeys(e)}initUserKeysWithSignature(e){return this.hinkalCommon.initUserKeysWithSignature(e)}initUserKeysFromSeedPhrases(e){return this.hinkalCommon.initUserKeysFromSeedPhrases(e)}storeAndGetInitialSignature(e,t=!1,n){return this.hinkalCommon.storeAndGetInitialSignature(e,t,n)}resetProviderAdapters(){return this.hinkalCommon.resetProviderAdapters()}disconnectFromConnector(){return this.hinkalCommon.disconnectFromConnector()}destroy(){return this.hinkalCommon.destroy()}signMessage(e){return this.hinkalCommon.signMessage(e)}signTypedData(e,t,n){return this.hinkalCommon.signTypedData(e,t,n)}getSupportedChains(){return this.hinkalCommon.getSupportedChains()}isSelectedNetworkSupported(e){return this.hinkalCommon.isSelectedNetworkSupported(e)}switchNetwork(t){let n=e.networkRegistry[t];if(!n)throw Error(`Network with chainId ${t} not supported`);return this.hinkalCommon.switchNetwork(n)}resetMerkle(e){return this.hinkalCommon.resetMerkle(e)}resetMerkleTreesIfNecessary(e){return this.hinkalCommon.resetMerkleTreesIfNecessary(e)}getMappedPrivateBalances(e){return e===this.mappedPrivateBalancesSource?this.mappedPrivateBalances:(this.mappedPrivateBalancesSource=e,this.mappedPrivateBalances=i.mapPrivateBalances(e),this.mappedPrivateBalances)}get privateBalancesWithUSD(){return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD)}onPrivateBalancesWithUSDChange(e){return this.hinkalCommon.onPrivateBalancesWithUSDChange(t=>e(this.getMappedPrivateBalances(t)))}async getTotalBalance(e,t=!1,n=!1){return(await this.hinkalCommon.getTotalBalance(e,void 0,void 0,t,n)).map(i.mapTokenBalance)}async getStuckShieldedBalances(e,t=!1,n=!1){return(await this.hinkalCommon.getStuckShieldedBalances(e,void 0,void 0,t,n)).map(i.mapTokenBalance)}monitorConnectedAddress(e){return this.hinkalCommon.monitorConnectedAddress(e)}waitForTransaction(e,t,n){return this.hinkalCommon.waitForTransaction(e,t,n)}getSolanaPublicKey(){return this.hinkalCommon.getSolanaPublicKey()}getEthereumAddress(){return this.hinkalCommon.getEthereumAddress()}getEthereumAddressByChain(e){return this.hinkalCommon.getEthereumAddressByChain(e)}getRecipientInfo(){return this.hinkalCommon.getRecipientInfo()}getShieldedPublicKey(){return this.hinkalCommon.userKeys.getShieldedPublicKey()}async prooflessDeposit(e,t,r,i){return this.hinkalCommon.prooflessDeposit(await n.resolveErc20Tokens(e,t),r,i)}async prooflessDepositWithPublicFee(e,t,r,i,a){return this.hinkalCommon.prooflessDepositWithPublicFee(await n.resolveErc20Token(e,t),r,i,a)}async deposit(e,t,r,i,a){return this.hinkalCommon.deposit(await n.resolveErc20Tokens(e,t),r,i,a)}async depositSolana(e,t,r){return this.hinkalCommon.depositSolana(r,await n.resolveErc20Token(e,t))}async depositForOther(e,t,r,i,a,o){return this.hinkalCommon.depositForOther(await n.resolveErc20Tokens(e,t),r,i,a,o)}async depositSolanaForOther(e,t,r,i){return this.hinkalCommon.depositSolanaForOther(r,await n.resolveErc20Token(e,t),i)}async depositAndWithdraw(e,t,r,i,a,o,s){return this.hinkalCommon.depositAndWithdraw(await n.resolveErc20Token(e,t),r,i,a,o,void 0,void 0,void 0,s)}async depositAndBridge(e,t,r,i,a,o){return this.hinkalCommon.depositAndBridge(await n.resolveErc20Token(e,t),r,i,a,void 0,void 0,void 0,o)}async checkSendTransactionStatus(e){return this.hinkalCommon.checkSendTransactionStatus(e)}async nearDepositAndBridge(e,t,r,i,a,o,s){return this.hinkalCommon.nearDepositAndBridge(await n.resolveErc20Token(e,t),r,i,a,o,s)}async claimUtxo(e,t,r,i,a){return this.hinkalCommon.claimUtxo(await n.resolveErc20Token(e,t),r,i,a)}async transfer(e,t,r,i,a,o){return this.hinkalCommon.transfer(await n.resolveErc20Tokens(e,t),r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return this.hinkalCommon.withdraw(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async withdrawStuckUtxos(e,t,r){return this.hinkalCommon.withdrawStuckUtxos(await n.resolveErc20Token(e,t),r)}async swap(e,t,r,i,a,o,s){return this.hinkalCommon.swap(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async actionPrivateWallet(e,t,r,a,o,s,c,l,u){return this.hinkalCommon.actionPrivateWallet(e,await n.resolveErc20Tokens(e,t),r,a,o,await i.resolveCommonTokenChanges(e,s),c,l,u)}async proxySwap(e,t,r,i,a,o,s,c,l){return this.hinkalCommon.proxySwap(await n.resolveErc20Tokens(e,t),r,i,a,o,s,c,l)}async proxyToPrivate(e,t,r,i,a,o,s){return this.hinkalCommon.proxyToPrivate(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async proxySend(e,t,r,i,a,o,s){return this.hinkalCommon.proxySend(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}};exports.Hinkal=a;
@@ -18,6 +18,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
18
18
  storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
19
19
  resetProviderAdapters(): Promise<void>;
20
20
  disconnectFromConnector(): Promise<void>;
21
+ destroy(): Promise<void>;
21
22
  signMessage(message: string): Promise<string>;
22
23
  signTypedData(domain: TypedDataDomain, types: Record<string, TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
23
24
  getSupportedChains(): number[];
@@ -37,6 +37,9 @@ var c = class {
37
37
  disconnectFromConnector() {
38
38
  return this.hinkalCommon.disconnectFromConnector();
39
39
  }
40
+ destroy() {
41
+ return this.hinkalCommon.destroy();
42
+ }
40
43
  signMessage(e) {
41
44
  return this.hinkalCommon.signMessage(e);
42
45
  }
@@ -16,6 +16,7 @@ export interface IHinkal<ConnectorType = unknown> {
16
16
  storeAndGetInitialSignature(authSignature: string, isSolanaLedger: boolean, txMessageForSolanaLedger?: string): Promise<string>;
17
17
  resetProviderAdapters(): Promise<void>;
18
18
  disconnectFromConnector(): Promise<void>;
19
+ destroy(): Promise<void>;
19
20
  signMessage(message: string): Promise<string>;
20
21
  signTypedData(domain: TypedDataDomain, types: Record<string, TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
21
22
  getSupportedChains(): number[];
@@ -1 +0,0 @@
1
- require(`./chains.constants.cjs`).chainIds.optimism;
@@ -1,5 +0,0 @@
1
- export declare const TOKEN_LIMITS: Record<number, Record<string, string>>;
2
- export declare const getTokensLimits: (chainId: number) => {
3
- erc20Addresses: string[];
4
- limits: bigint[];
5
- };
@@ -1,3 +0,0 @@
1
- import { chainIds as e } from "./chains.constants.mjs";
2
- e.optimism;
3
- //#endregion
@@ -1,11 +0,0 @@
1
- export declare class SignatureStorage {
2
- static storeSignature: (signature: string, visitorId: string, address: string) => Promise<void>;
3
- static storeMessage: (message: string, address: string, visitorId: string) => Promise<void>;
4
- static getSignature: (visitorId: string, address: string) => Promise<string | undefined>;
5
- static getMessage: (address: string, visitorId: string) => Promise<string | undefined>;
6
- private static deriveKey;
7
- private static encryptSignature;
8
- private static decryptSignature;
9
- private static getStorageKey;
10
- private static getMessageStorageKey;
11
- }
@@ -1,3 +0,0 @@
1
- import { IHinkal } from '../../data-structures/Hinkal/IHinkal';
2
- import { LoginMessageMode } from '../../types';
3
- export declare const initUserKeysWithCachedSignature: (hinkal: IHinkal, signInMode?: LoginMessageMode, visitorId?: string) => Promise<void>;