@hinkal/common 0.2.34 → 0.2.36

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 (90) hide show
  1. package/API/callNearIntentsAPI.cjs +1 -0
  2. package/API/callNearIntentsAPI.d.ts +3 -0
  3. package/API/callNearIntentsAPI.mjs +8 -0
  4. package/API/enclaveSignatureCalls.cjs +1 -1
  5. package/API/enclaveSignatureCalls.d.ts +1 -1
  6. package/API/enclaveSignatureCalls.mjs +1 -1
  7. package/API/index.cjs +1 -1
  8. package/API/index.d.ts +1 -0
  9. package/API/index.mjs +1 -0
  10. package/constants/bridging.constants.cjs +1 -1
  11. package/constants/bridging.constants.d.ts +14 -0
  12. package/constants/bridging.constants.mjs +24 -5
  13. package/constants/chains.constants.cjs +1 -1
  14. package/constants/chains.constants.d.ts +1 -0
  15. package/constants/chains.constants.mjs +13 -13
  16. package/constants/index.cjs +1 -1
  17. package/constants/index.mjs +1 -0
  18. package/constants/protocol.constants.cjs +1 -1
  19. package/constants/protocol.constants.d.ts +2 -0
  20. package/constants/protocol.constants.mjs +2 -2
  21. package/constants/server.constants.cjs +1 -1
  22. package/constants/server.constants.d.ts +2 -0
  23. package/constants/server.constants.mjs +2 -0
  24. package/constants/token-data/index.cjs +1 -1
  25. package/constants/token-data/index.d.ts +1 -0
  26. package/constants/token-data/index.mjs +1 -0
  27. package/constants/token-data/popularNonRebasingTokens.cjs +1 -0
  28. package/constants/token-data/popularNonRebasingTokens.d.ts +2 -0
  29. package/constants/token-data/popularNonRebasingTokens.mjs +11 -0
  30. package/constants/vite.constants.cjs +1 -1
  31. package/constants/vite.constants.mjs +5 -23
  32. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  33. package/data-structures/Hinkal/Hinkal.d.ts +7 -1
  34. package/data-structures/Hinkal/Hinkal.mjs +123 -101
  35. package/data-structures/Hinkal/IHinkal.d.ts +7 -1
  36. package/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -0
  37. package/data-structures/Hinkal/hinkalNearDepositAndBridge.d.ts +6 -0
  38. package/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +43 -0
  39. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  40. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
  41. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +31 -30
  42. package/data-structures/Hinkal/index.cjs +1 -1
  43. package/data-structures/Hinkal/index.d.ts +1 -0
  44. package/data-structures/Hinkal/index.mjs +1 -0
  45. package/data-structures/crypto-keys/keys.cjs +1 -1
  46. package/data-structures/crypto-keys/keys.d.ts +18 -0
  47. package/data-structures/crypto-keys/keys.mjs +10 -0
  48. package/data-structures/index.cjs +1 -1
  49. package/data-structures/index.mjs +1 -0
  50. package/error-handling/error-codes.constants.cjs +1 -1
  51. package/error-handling/error-codes.constants.d.ts +2 -0
  52. package/error-handling/error-codes.constants.mjs +2 -0
  53. package/functions/index.cjs +1 -1
  54. package/functions/index.mjs +1 -0
  55. package/functions/pre-transaction/sendV0Transaction.cjs +2 -1
  56. package/functions/pre-transaction/sendV0Transaction.mjs +2 -2
  57. package/functions/utils/enclave-signature-storage.cjs +1 -1
  58. package/functions/utils/enclave-signature-storage.d.ts +1 -1
  59. package/functions/utils/enclave-signature-storage.mjs +1 -1
  60. package/functions/utils/index.cjs +1 -1
  61. package/functions/utils/index.d.ts +1 -0
  62. package/functions/utils/index.mjs +1 -0
  63. package/functions/utils/nearIntents.utils.cjs +1 -0
  64. package/functions/utils/nearIntents.utils.d.ts +11 -0
  65. package/functions/utils/nearIntents.utils.mjs +36 -0
  66. package/functions/utils/time.utils.cjs +1 -1
  67. package/functions/utils/time.utils.d.ts +1 -0
  68. package/functions/utils/time.utils.mjs +2 -2
  69. package/index.cjs +1 -1
  70. package/index.mjs +320 -316
  71. package/package.json +1 -1
  72. package/types/index.d.ts +1 -0
  73. package/types/near-intents.types.d.ts +60 -0
  74. package/types/solana.types.d.ts +1 -0
  75. package/webworker/{logError-DZiJbbaT.js → logError-B1LyaM6e.js} +14 -14
  76. package/webworker/package.json +1 -1
  77. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  78. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  79. package/webworker/snarkjsWorkerNode.cjs +2 -2
  80. package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  81. package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  82. package/webworker/utxoWorkerNode.cjs +1 -1
  83. package/webworker/viteWorkerURL.constant.cjs +3 -3
  84. package/webworker/viteWorkerURL.constant.mjs +3 -3
  85. package/webworker/{workerProxy-DQJE57Ye.js → workerProxy-UUs7pDb1.js} +7 -9
  86. package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  87. package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  88. package/webworker/zkProofWorkerNode.cjs +1 -1
  89. package/functions/utils/enum.utils.cjs +0 -1
  90. package/functions/utils/enum.utils.mjs +0 -12
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/ethereum-network.types.cjs`),t=require(`../../functions/utils/serialize.utils.cjs`),n=require(`../../constants/vite.constants.cjs`),r=require(`../../constants/chains.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../API/API.cjs`),o=require(`../../constants/kyc.constants.cjs`),s=require(`../../error-handling/error-codes.constants.cjs`),c=require(`../../functions/utils/erc20tokenFunctions.cjs`);require(`../../API/index.cjs`);const l=require(`../../crypto/poseidon.cjs`),u=require(`../crypto-keys/keys.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../TokenDBs/PrivateTokensDB.cjs`),p=require(`../../functions/web3/events/getShieldedBalance.cjs`),m=require(`../../functions/pre-transaction/solana.cjs`),h=require(`../../functions/web3/getContractMetadata.cjs`),g=require(`../../functions/utils/reloadPage.cjs`),_=require(`../../functions/utils/cacheDevice.utils.cjs`),v=require(`../../providers/SolanaProviderAdapter.cjs`),y=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`),w=require(`../../functions/kyc/checkTokenLimitsUSD.cjs`),T=require(`./hinkalDepositAndWithdraw.cjs`),E=require(`./hinkalSolanaDeposit.cjs`),D=require(`./hinkalSwap.cjs`),O=require(`./hinkalWithdraw.cjs`),k=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const A=require(`./resetMerkleTrees.cjs`),j=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),M=require(`./hinkalPrivateWallet.cjs`),N=require(`./hinkalGetRecipientInfo.cjs`),P=require(`./hinkalSignSubAccount.cjs`),F=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const I=require(`./hinkalProoflessDeposit.cjs`),ee=require(`./hinkalProxySwap.cjs`),L=require(`./hinkalMultiSend.cjs`),R=require(`./hinkalTransfer.cjs`),z=require(`./hinkalProxyToPrivate.cjs`),B=require(`../../providers/TronProviderAdapter.cjs`),V=require(`./hinkalSolanaDepositAndWithdraw.cjs`),H=require(`./hinkalSolanaWithdraw.cjs`),U=require(`./hinkalSolanaTransfer.cjs`),W=require(`./hinkalSolanaSwap.cjs`),G=require(`./hinkalSolanaProxySend.cjs`),K=require(`./hinkalSolanaProxySwap.cjs`),q=require(`./hinkalSolanaProxyShield.cjs`),J=require(`./hinkalDepositAndBridge.cjs`),Y=require(`./hinkalClaimUtxo.cjs`),X=require(`./hinkalSolanaProoflessDeposit.cjs`),Z=require(`./hinkalSolanaClaimUtxo.cjs`),Q=require(`./hinkalWithdrawStuckUtxos.cjs`);let $=require(`@solana/web3.js`);var te=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;constructor(e){this.userKeys=new u.UserKeys(void 0),e?.tronChainOverride&&r.setHinkalTronChainId(e.tronChainOverride),r.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=k.MerkleTree.create(l.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new j.MultiThreadedUtxoUtils,this.cacheDevice=_.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}enforceRateLimit(e,n,r=1e3){let i=Date.now(),a=t.CustomJSONStringify(n),o=this.lastCallState.get(e);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${e} was already called with the same arguments`);this.lastCallState.set(e,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?r.chainIds.ethMainnet:this.solanaProviderAdapter?r.currentSolanaChainId:r.chainIds.tronMainnet;let n;if(n=r.isSolanaLike(t)?this.solanaProviderAdapter:r.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!n)throw Error(`ProviderAdapter is not initialized`);return n}async initProviderAdapter(e,t){let n=r.chainIds.ethMainnet;t instanceof v.SolanaProviderAdapter?n=r.currentSolanaChainId:t instanceof B.TronProviderAdapter&&(n=r.currentTronChainId),await this.updateProviderAdapter(n,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 initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new u.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new u.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=b.generateHashFromSeedPhrases(e);this.userKeys=new u.UserKeys(t)}async storeAndGetInitialSignature(e,t,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await y.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await A.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof B.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?r.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?r.HINKAL_SUPPORTED_CHAINS.filter(e=>!r.isSolanaLike(e)&&!r.isTronLike(e)):this.solanaProviderAdapter?r.HINKAL_SUPPORTED_CHAINS.filter(e=>r.isSolanaLike(e)):this.tronProviderAdapter?[r.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 h.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 P.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!!r.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),n=t.getChainId(),i=n!==void 0&&r.isSameOnchainNetwork(e.chainId,n);if(!(e.chainId===n||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{r.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):r.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(),g.reloadPage())}async monitorConnectedAddress(e){await a.API.monitor(await this.getEthereumAddressByChain(e))}async getBalances(e,t,n,r,i=!1,a,o=!1){return p.getShieldedBalance(this,e,t,n,r,i,this.generateProofRemotely,a,o)}async getTotalBalance(e,t,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),l=t??this.userKeys,u=await this.getBalances(e,l.getShieldedPrivateKey(),l.getShieldedPublicKey(),s,i,a,o),d=n.isExtension?await f.privateTokensDB.getPrivateTokens(e,s):c.getErc20TokensForChain(e),p=[];return d.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=u.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};p.push(r)}),p}async getStuckShieldedBalances(e,t,n){return(await this.getTotalBalance(e,t,n,!1,!1,!0)).filter(e=>e.balance>0n)}getSupportedPassportLinks(){return o.supportedPassportLinks}checkAccessToken(e,t){return Promise.resolve(!0)}checkExternalTokenLimitsUSD(e,t,n){return w.checkTokenLimitsUSD(e,t,n)}async getHinkalTreeRootHash(t){if(r.isSolanaLike(t)){let{hinkalIdl:e,hinkalAddress:n,originalDeployer:i}=r.networkRegistry[t].contractData;if(!e||!n||!i)throw Error(`Missing Solana configuration for chain ${t}`);let a=new $.PublicKey(i),o=m.getMerkleAccountPublicKey(new $.PublicKey(n),a);return x.fetchSolanaMerkleTreeRootHash(this.getSolanaProgram(e),o)}return this.getContractWithFetcherByChainId(t,e.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 a.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 a.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}getRecipientInfo(){return N.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 E.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]),E.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,n,i,a,o,s,c,l=!0){return r.isSolanaLike(d.validateAndGetChainId([e]))?V.hinkalSolanaDepositAndWithdraw(this,e,t,n,i,a,o,s,c):T.hinkalDepositAndWithdraw(this,e,t,n,i,a,o,s,c,l)}async claimUtxo(e,t,n,i){return r.isSolanaLike(d.validateAndGetChainId([e]))?Z.hinkalSolanaClaimUtxo(this,e,t,n,i):Y.hinkalClaimUtxo(this,e,t,n,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return J.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async prooflessDeposit(e,t,n,i,a=!1){return r.isSolanaLike(d.validateAndGetChainId(e))?X.hinkalSolanaProoflessDeposit(this,e,t,n,i,a):I.hinkalProoflessDeposit(this,e,t,n,i,a)}async prooflessDepositWithPublicFee(e,t,n,i,a){let o=d.validateAndGetChainId([e]);return r.isSolanaLike(o)?E.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,n,i,a):I.hinkalProoflessDepositWithPublicFee(this,o,e,t,n,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,n,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,n]),r.isSolanaLike(d.validateAndGetChainId(e))?U.hinkalSolanaTransfer(this,e,t,n,i,a,o):R.hinkalTransfer(this,e,t,n,i,a,o)}async withdraw(e,t,n,i,a,o,s){return r.isSolanaLike(d.validateAndGetChainId(e))?H.hinkalSolanaWithdraw(this,e,t,n,a,o,s):O.hinkalWithdraw(this,e,t,n,i,a,o,s)}async withdrawStuckUtxos(e,t){return Q.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,n,i,a,o,s){return r.isSolanaLike(d.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):D.hinkalSwap(this,e,t,n,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 W.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,n,i,a,o){if(!a)throw Error(`subAccount is required`);return r.isSolanaLike(d.validateAndGetChainId(e))?q.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):F.hinkalActionReceive(this,e,t,n,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]),M.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,n,i,a,o,s,c,l=!1,u,f){return r.isSolanaLike(d.validateAndGetChainId(e))?K.hinkalSolanaProxySwap(this,e,t,i,o,n,s,c,f):ee.hinkalProxySwap(this,e,t,n,i,a,o,s,c,l,u,f)}async proxyToPrivate(e,t,n,i,a,o,s){return r.isSolanaLike(d.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],n,i]),q.hinkalSolanaProxyShield(this,e[0],t[0],n,i,s)):z.hinkalProxyToPrivate(this,e,t,i,a,o,n,s)}async proxySend(e,t,n,i,a,o,s){let c=d.validateAndGetChainId(e);if(r.isSolanaLike(c))return G.hinkalSolanaProxySend(this,e[0],t[0],n,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,n,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]),L.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=te;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/ethereum-network.types.cjs`),t=require(`../../functions/utils/serialize.utils.cjs`),n=require(`../../constants/vite.constants.cjs`),r=require(`../../constants/chains.constants.cjs`),i=require(`../../constants/protocol.constants.cjs`),a=require(`../../types/hinkal.types.cjs`),o=require(`../../API/API.cjs`),s=require(`../../constants/kyc.constants.cjs`),c=require(`../../error-handling/error-codes.constants.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`);require(`../../API/index.cjs`);const u=require(`../../crypto/poseidon.cjs`),d=require(`../crypto-keys/keys.cjs`),f=require(`../../functions/utils/token-check.utils.cjs`),p=require(`../TokenDBs/PrivateTokensDB.cjs`),m=require(`../../functions/web3/events/getShieldedBalance.cjs`),h=require(`../../functions/pre-transaction/solana.cjs`),ee=require(`../../functions/web3/getContractMetadata.cjs`),g=require(`../../functions/utils/reloadPage.cjs`),_=require(`../../functions/utils/cacheDevice.utils.cjs`),v=require(`../../providers/SolanaProviderAdapter.cjs`),te=require(`../../functions/utils/enclave-signature-storage.cjs`),y=require(`../../functions/utils/mnemonics.cjs`),b=require(`../../functions/web3/fetchSolanaMerkleTreeRootHash.cjs`),x=require(`../../functions/private-wallet/emporium.helpers.cjs`),S=require(`./hinkalDeposit.cjs`),C=require(`../../functions/kyc/checkTokenLimitsUSD.cjs`),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`),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`),I=require(`./hinkalProxySwap.cjs`),L=require(`./hinkalMultiSend.cjs`),R=require(`./hinkalTransfer.cjs`),z=require(`./hinkalProxyToPrivate.cjs`),B=require(`../../providers/TronProviderAdapter.cjs`),V=require(`./hinkalSolanaDepositAndWithdraw.cjs`),H=require(`./hinkalSolanaWithdraw.cjs`),U=require(`./hinkalSolanaTransfer.cjs`),W=require(`./hinkalSolanaSwap.cjs`),G=require(`./hinkalSolanaProxySend.cjs`),K=require(`./hinkalSolanaProxySwap.cjs`),q=require(`./hinkalSolanaProxyShield.cjs`),J=require(`./hinkalDepositAndBridge.cjs`),Y=require(`./hinkalNearDepositAndBridge.cjs`),X=require(`./hinkalClaimUtxo.cjs`),Z=require(`./hinkalSolanaProoflessDeposit.cjs`),Q=require(`./hinkalSolanaClaimUtxo.cjs`),ne=require(`./hinkalWithdrawStuckUtxos.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;constructor(e){this.userKeys=new d.UserKeys(void 0),e?.tronChainOverride&&r.setHinkalTronChainId(e.tronChainOverride),r.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=O.MerkleTree.create(u.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new A.MultiThreadedUtxoUtils,this.cacheDevice=_.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}enforceRateLimit(e,n,r=1e3){let i=Date.now(),a=t.CustomJSONStringify(n),o=this.lastCallState.get(e);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${e} was already called with the same arguments`);this.lastCallState.set(e,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?r.chainIds.ethMainnet:this.solanaProviderAdapter?r.currentSolanaChainId:r.chainIds.tronMainnet;let n;if(n=r.isSolanaLike(t)?this.solanaProviderAdapter:r.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!n)throw Error(`ProviderAdapter is not initialized`);return n}async initProviderAdapter(e,t){let n=r.chainIds.ethMainnet;t instanceof v.SolanaProviderAdapter?n=r.currentSolanaChainId:t instanceof B.TronProviderAdapter&&(n=r.currentTronChainId),await this.updateProviderAdapter(n,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=a.LoginMessageMode.PROTOCOL){switch(e){case a.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case a.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=a.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:i.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:i.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=a.LoginMessageMode.PROTOCOL){this.userKeys=new d.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new d.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=y.generateHashFromSeedPhrases(e);this.userKeys=new d.UserKeys(t)}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await te.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 B.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?r.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?r.HINKAL_SUPPORTED_CHAINS.filter(e=>!r.isSolanaLike(e)&&!r.isTronLike(e)):this.solanaProviderAdapter?r.HINKAL_SUPPORTED_CHAINS.filter(e=>r.isSolanaLike(e)):this.tronProviderAdapter?[r.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 ee.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!!r.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),n=t.getChainId(),i=n!==void 0&&r.isSameOnchainNetwork(e.chainId,n);if(!(e.chainId===n||i))try{await t.switchNetwork(e)}catch{throw Error(c.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{r.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):r.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=a.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(),g.reloadPage())}async monitorConnectedAddress(e){await o.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,t,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=t??this.userKeys,u=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),d=n.isExtension?await p.privateTokensDB.getPrivateTokens(e,s):l.getErc20TokensForChain(e),f=[];return d.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=u.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};f.push(r)}),f}async getStuckShieldedBalances(e,t,n){return(await this.getTotalBalance(e,t,n,!1,!1,!0)).filter(e=>e.balance>0n)}getSupportedPassportLinks(){return s.supportedPassportLinks}checkAccessToken(e,t){return Promise.resolve(!0)}checkExternalTokenLimitsUSD(e,t,n){return C.checkTokenLimitsUSD(e,t,n)}async getHinkalTreeRootHash(t){if(r.isSolanaLike(t)){let{hinkalIdl:e,hinkalAddress:n,originalDeployer:i}=r.networkRegistry[t].contractData;if(!e||!n||!i)throw Error(`Missing Solana configuration for chain ${t}`);let a=new $.PublicKey(i),o=h.getMerkleAccountPublicKey(new $.PublicKey(n),a);return b.fetchSolanaMerkleTreeRootHash(this.getSolanaProgram(e),o)}return this.getContractWithFetcherByChainId(t,e.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 o.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 o.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 S.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]),S.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,n,i,a,o,s,c,l=!0){return r.isSolanaLike(f.validateAndGetChainId([e]))?V.hinkalSolanaDepositAndWithdraw(this,e,t,n,i,a,o,s,c):w.hinkalDepositAndWithdraw(this,e,t,n,i,a,o,s,c,l)}async claimUtxo(e,t,n,i){return r.isSolanaLike(f.validateAndGetChainId([e]))?Q.hinkalSolanaClaimUtxo(this,e,t,n,i):X.hinkalClaimUtxo(this,e,t,n,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return J.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),Y.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,n,i,a=!1){return r.isSolanaLike(f.validateAndGetChainId(e))?Z.hinkalSolanaProoflessDeposit(this,e,t,n,i,a):F.hinkalProoflessDeposit(this,e,t,n,i,a)}async prooflessDepositWithPublicFee(e,t,n,i,a){let o=f.validateAndGetChainId([e]);return r.isSolanaLike(o)?T.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,n,i,a):F.hinkalProoflessDepositWithPublicFee(this,o,e,t,n,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,n,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,n]),r.isSolanaLike(f.validateAndGetChainId(e))?U.hinkalSolanaTransfer(this,e,t,n,i,a,o):R.hinkalTransfer(this,e,t,n,i,a,o)}async withdraw(e,t,n,i,a,o,s){return r.isSolanaLike(f.validateAndGetChainId(e))?H.hinkalSolanaWithdraw(this,e,t,n,a,o,s):D.hinkalWithdraw(this,e,t,n,i,a,o,s)}async withdrawStuckUtxos(e,t){return ne.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,n,i,a,o,s){return r.isSolanaLike(f.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):E.hinkalSwap(this,e,t,n,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 W.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,n,i,a,o){if(!a)throw Error(`subAccount is required`);return r.isSolanaLike(f.validateAndGetChainId(e))?q.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):P.hinkalActionReceive(this,e,t,n,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,n,i,a,o,s,c,l=!1,u,d){return r.isSolanaLike(f.validateAndGetChainId(e))?K.hinkalSolanaProxySwap(this,e,t,i,o,n,s,c,d):I.hinkalProxySwap(this,e,t,n,i,a,o,s,c,l,u,d)}async proxyToPrivate(e,t,n,i,a,o,s){return r.isSolanaLike(f.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],n,i]),q.hinkalSolanaProxyShield(this,e[0],t[0],n,i,s)):z.hinkalProxyToPrivate(this,e,t,i,a,o,n,s)}async proxySend(e,t,n,i,a,o,s){let c=f.validateAndGetChainId(e);if(r.isSolanaLike(c))return G.hinkalSolanaProxySend(this,e[0],t[0],n,i,s);let l=x.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,n,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]),L.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=re;
@@ -19,6 +19,7 @@ import { ClientCommitmentsSnapshotService, ClientNullifierSnapshotService, Clien
19
19
  import { Idl, Program } from '@coral-xyz/anchor';
20
20
  import { PublicKey } from '@solana/web3.js';
21
21
  import { BridgeRecipient } from '../../types/bridging-tx.types';
22
+ import { NearBridgeParams, NearBridgeResult } from '../../types/near-intents.types';
22
23
  import { Utxo } from '../utxo/Utxo';
23
24
  export declare class Hinkal<ConnectorType> implements IHinkal {
24
25
  private ethereumProviderAdapter?;
@@ -43,10 +44,14 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
43
44
  initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
44
45
  getSigningMessage(mode?: LoginMessageMode): string;
45
46
  signHinkalMessage(mode?: LoginMessageMode): Promise<string>;
47
+ signSolanaLedgerMessage(): Promise<{
48
+ signature: string;
49
+ txMessageForSolanaLedger: string;
50
+ }>;
46
51
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
47
52
  initUserKeysWithSignature(signature: string): void;
48
53
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
49
- storeAndGetInitialSignature(authSignature: string, isSolanaLedger: boolean, txMessageForSolanaLedger?: string): Promise<string>;
54
+ storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
50
55
  resetMerkle(chains?: number[]): Promise<void>;
51
56
  getTronWeb(): import('tronweb').TronWeb;
52
57
  getSupportedChains(): number[];
@@ -90,6 +95,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
90
95
  depositAndWithdraw(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean): Promise<string>;
91
96
  claimUtxo(erc20Token: ERC20Token, utxo: Utxo, feeStructureOverride?: FeeStructure, claimableSignature?: string): Promise<string>;
92
97
  depositAndBridge(erc20Token: ERC20Token, recipientBridges: BridgeRecipient[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean): Promise<string>;
98
+ nearDepositAndBridge(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], params: NearBridgeParams, txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string): Promise<NearBridgeResult>;
93
99
  prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[], action?: AdminTransactionType, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
94
100
  prooflessDepositWithPublicFee(erc20Token: ERC20Token, amounts: bigint[], stealthAddressStructures: StealthAddressStructure[], feeAmount: bigint, action?: AdminTransactionType): Promise<string>;
95
101
  getSolanaProgram(idl: Idl): Program;
@@ -2,62 +2,64 @@ import { ContractType as e } from "../../types/ethereum-network.types.mjs";
2
2
  import { CustomJSONStringify as t } from "../../functions/utils/serialize.utils.mjs";
3
3
  import { isExtension as n } from "../../constants/vite.constants.mjs";
4
4
  import { HINKAL_SUPPORTED_CHAINS as r, WALLET_SUPPORTED_CHAINS as i, chainIds as a, currentSolanaChainId as o, currentTronChainId as s, isSameOnchainNetwork as c, isSolanaLike as l, isTronLike as u, networkRegistry as d, setHinkalTronChainId as f } from "../../constants/chains.constants.mjs";
5
- import { EventType as p, LoginMessageMode as m } from "../../types/hinkal.types.mjs";
6
- import { API as h } from "../../API/API.mjs";
5
+ import { DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH as p, DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT as m } from "../../constants/protocol.constants.mjs";
6
+ import { EventType as h, LoginMessageMode as g } from "../../types/hinkal.types.mjs";
7
+ import { API as _ } from "../../API/API.mjs";
7
8
  import { supportedPassportLinks as ee } from "../../constants/kyc.constants.mjs";
8
9
  import { transactionErrorCodes as te } from "../../error-handling/error-codes.constants.mjs";
9
10
  import { getErc20TokensForChain as ne } from "../../functions/utils/erc20tokenFunctions.mjs";
10
11
  import "../../API/index.mjs";
11
12
  import { poseidonFunction as re } from "../../crypto/poseidon.mjs";
12
- import { UserKeys as g } from "../crypto-keys/keys.mjs";
13
- import { validateAndGetChainId as _ } from "../../functions/utils/token-check.utils.mjs";
14
- import { privateTokensDB as v } from "../TokenDBs/PrivateTokensDB.mjs";
15
- import { getShieldedBalance as y } from "../../functions/web3/events/getShieldedBalance.mjs";
16
- import { getMerkleAccountPublicKey as b } from "../../functions/pre-transaction/solana.mjs";
17
- import { getContractWithFetcherByChainId as x } from "../../functions/web3/getContractMetadata.mjs";
18
- import { reloadPage as S } from "../../functions/utils/reloadPage.mjs";
19
- import { createCacheDevice as C } from "../../functions/utils/cacheDevice.utils.mjs";
20
- import { SolanaProviderAdapter as w } from "../../providers/SolanaProviderAdapter.mjs";
21
- import { storeAndGetSignatureFromEnclave as T } from "../../functions/utils/enclave-signature-storage.mjs";
22
- import { generateHashFromSeedPhrases as E } from "../../functions/utils/mnemonics.mjs";
23
- import { fetchSolanaMerkleTreeRootHash as D } from "../../functions/web3/fetchSolanaMerkleTreeRootHash.mjs";
24
- import { createTransaferEmporiumOpsBatch as O } from "../../functions/private-wallet/emporium.helpers.mjs";
25
- import { hinkalDeposit as k, hinkalDepositForOther as A } from "./hinkalDeposit.mjs";
26
- import { checkTokenLimitsUSD as j } from "../../functions/kyc/checkTokenLimitsUSD.mjs";
27
- import { hinkalDepositAndWithdraw as M } from "./hinkalDepositAndWithdraw.mjs";
28
- import { hinkalSolanaDeposit as N, hinkalSolanaDepositForOther as P, hinkalSolanaProoflessDepositWithPublicFee as F } from "./hinkalSolanaDeposit.mjs";
29
- import { hinkalSwap as I } from "./hinkalSwap.mjs";
30
- import { hinkalWithdraw as L } from "./hinkalWithdraw.mjs";
31
- import { MerkleTree as R } from "../merkle-tree/MerkleTree.mjs";
13
+ import { UserKeys as v } from "../crypto-keys/keys.mjs";
14
+ import { validateAndGetChainId as y } from "../../functions/utils/token-check.utils.mjs";
15
+ import { privateTokensDB as b } from "../TokenDBs/PrivateTokensDB.mjs";
16
+ import { getShieldedBalance as x } from "../../functions/web3/events/getShieldedBalance.mjs";
17
+ import { getMerkleAccountPublicKey as S } from "../../functions/pre-transaction/solana.mjs";
18
+ import { getContractWithFetcherByChainId as C } from "../../functions/web3/getContractMetadata.mjs";
19
+ import { reloadPage as w } from "../../functions/utils/reloadPage.mjs";
20
+ import { createCacheDevice as T } from "../../functions/utils/cacheDevice.utils.mjs";
21
+ import { SolanaProviderAdapter as E } from "../../providers/SolanaProviderAdapter.mjs";
22
+ import { storeAndGetSignatureFromEnclave as D } from "../../functions/utils/enclave-signature-storage.mjs";
23
+ import { generateHashFromSeedPhrases as O } from "../../functions/utils/mnemonics.mjs";
24
+ import { fetchSolanaMerkleTreeRootHash as k } from "../../functions/web3/fetchSolanaMerkleTreeRootHash.mjs";
25
+ import { createTransaferEmporiumOpsBatch as A } from "../../functions/private-wallet/emporium.helpers.mjs";
26
+ import { hinkalDeposit as j, hinkalDepositForOther as M } from "./hinkalDeposit.mjs";
27
+ import { checkTokenLimitsUSD as N } from "../../functions/kyc/checkTokenLimitsUSD.mjs";
28
+ import { hinkalDepositAndWithdraw as P } from "./hinkalDepositAndWithdraw.mjs";
29
+ import { hinkalSolanaDeposit as F, hinkalSolanaDepositForOther as I, hinkalSolanaProoflessDepositWithPublicFee as L } from "./hinkalSolanaDeposit.mjs";
30
+ import { hinkalSwap as R } from "./hinkalSwap.mjs";
31
+ import { hinkalWithdraw as z } from "./hinkalWithdraw.mjs";
32
+ import { MerkleTree as B } from "../merkle-tree/MerkleTree.mjs";
32
33
  import "../merkle-tree/index.mjs";
33
- import { resetMerkleTrees as z } from "./resetMerkleTrees.mjs";
34
- import { MultiThreadedUtxoUtils as B } from "../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs";
35
- import { hinkalPrivateWallet as V } from "./hinkalPrivateWallet.mjs";
36
- import { getRecipientInfo as ie } from "./hinkalGetRecipientInfo.mjs";
37
- import { hinkalSignSubAccount as H } from "./hinkalSignSubAccount.mjs";
38
- import { hinkalActionReceive as U } from "./hinkalActionReceive.mjs";
34
+ import { resetMerkleTrees as V } from "./resetMerkleTrees.mjs";
35
+ import { MultiThreadedUtxoUtils as ie } from "../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs";
36
+ import { hinkalPrivateWallet as H } from "./hinkalPrivateWallet.mjs";
37
+ import { getRecipientInfo as U } from "./hinkalGetRecipientInfo.mjs";
38
+ import { hinkalSignSubAccount as W } from "./hinkalSignSubAccount.mjs";
39
+ import { hinkalActionReceive as G } from "./hinkalActionReceive.mjs";
39
40
  import "../TokenDBs/index.mjs";
40
- import { hinkalProoflessDeposit as W, hinkalProoflessDepositWithPublicFee as G } from "./hinkalProoflessDeposit.mjs";
41
- import { hinkalProxySwap as K } from "./hinkalProxySwap.mjs";
42
- import { hinkalMultiSendPrivateRecipients as q } from "./hinkalMultiSend.mjs";
43
- import { hinkalTransfer as J } from "./hinkalTransfer.mjs";
44
- import { hinkalProxyToPrivate as Y } from "./hinkalProxyToPrivate.mjs";
41
+ import { hinkalProoflessDeposit as K, hinkalProoflessDepositWithPublicFee as q } from "./hinkalProoflessDeposit.mjs";
42
+ import { hinkalProxySwap as J } from "./hinkalProxySwap.mjs";
43
+ import { hinkalMultiSendPrivateRecipients as Y } from "./hinkalMultiSend.mjs";
44
+ import { hinkalTransfer as ae } from "./hinkalTransfer.mjs";
45
+ import { hinkalProxyToPrivate as oe } from "./hinkalProxyToPrivate.mjs";
45
46
  import { TronProviderAdapter as X } from "../../providers/TronProviderAdapter.mjs";
46
- import { hinkalSolanaDepositAndWithdraw as ae } from "./hinkalSolanaDepositAndWithdraw.mjs";
47
- import { hinkalSolanaWithdraw as oe } from "./hinkalSolanaWithdraw.mjs";
48
- import { hinkalSolanaTransfer as se } from "./hinkalSolanaTransfer.mjs";
49
- import { hinkalSolanaSwap as ce } from "./hinkalSolanaSwap.mjs";
50
- import { hinkalSolanaProxySend as Z } from "./hinkalSolanaProxySend.mjs";
51
- import { hinkalSolanaProxySwap as le } from "./hinkalSolanaProxySwap.mjs";
52
- import { hinkalSolanaProxyShield as Q } from "./hinkalSolanaProxyShield.mjs";
53
- import { hinkalDepositAndBridge as ue } from "./hinkalDepositAndBridge.mjs";
54
- import { hinkalClaimUtxo as de } from "./hinkalClaimUtxo.mjs";
55
- import { hinkalSolanaProoflessDeposit as fe } from "./hinkalSolanaProoflessDeposit.mjs";
56
- import { hinkalSolanaClaimUtxo as pe } from "./hinkalSolanaClaimUtxo.mjs";
57
- import { hinkalWithdrawStuckUtxos as me } from "./hinkalWithdrawStuckUtxos.mjs";
58
- import { PublicKey as $ } from "@solana/web3.js";
47
+ import { hinkalSolanaDepositAndWithdraw as se } from "./hinkalSolanaDepositAndWithdraw.mjs";
48
+ import { hinkalSolanaWithdraw as ce } from "./hinkalSolanaWithdraw.mjs";
49
+ import { hinkalSolanaTransfer as le } from "./hinkalSolanaTransfer.mjs";
50
+ import { hinkalSolanaSwap as ue } from "./hinkalSolanaSwap.mjs";
51
+ import { hinkalSolanaProxySend as de } from "./hinkalSolanaProxySend.mjs";
52
+ import { hinkalSolanaProxySwap as fe } from "./hinkalSolanaProxySwap.mjs";
53
+ import { hinkalSolanaProxyShield as Z } from "./hinkalSolanaProxyShield.mjs";
54
+ import { hinkalDepositAndBridge as pe } from "./hinkalDepositAndBridge.mjs";
55
+ import { hinkalNearDepositAndBridge as me } from "./hinkalNearDepositAndBridge.mjs";
56
+ import { hinkalClaimUtxo as Q } from "./hinkalClaimUtxo.mjs";
57
+ import { hinkalSolanaProoflessDeposit as he } from "./hinkalSolanaProoflessDeposit.mjs";
58
+ import { hinkalSolanaClaimUtxo as ge } from "./hinkalSolanaClaimUtxo.mjs";
59
+ import { hinkalWithdrawStuckUtxos as _e } from "./hinkalWithdrawStuckUtxos.mjs";
60
+ import { PublicKey as $, Transaction as ve } from "@solana/web3.js";
59
61
  //#region libs/shared/common/src/data-structures/Hinkal/Hinkal.ts
60
- var he = class {
62
+ var ye = class {
61
63
  ethereumProviderAdapter;
62
64
  solanaProviderAdapter;
63
65
  tronProviderAdapter;
@@ -75,9 +77,9 @@ var he = class {
75
77
  generateProofRemotely;
76
78
  disableMerkleTreeUpdates;
77
79
  constructor(e) {
78
- this.userKeys = new g(void 0), e?.tronChainOverride && f(e.tronChainOverride), r.forEach((e) => {
79
- this.merkleTreeHinkalByChain[e] = R.create(re, 0n), this.nullifiersByChain[e] = /* @__PURE__ */ new Set(), this.encryptedOutputsByChain[e] = [];
80
- }), this.generateProofRemotely = e?.generateProofRemotely ?? !0, this.utxoUtils = new B(), this.cacheDevice = C(e), this.disableMerkleTreeUpdates = e?.disableMerkleTreeUpdates ?? !1;
80
+ this.userKeys = new v(void 0), e?.tronChainOverride && f(e.tronChainOverride), r.forEach((e) => {
81
+ this.merkleTreeHinkalByChain[e] = B.create(re, 0n), this.nullifiersByChain[e] = /* @__PURE__ */ new Set(), this.encryptedOutputsByChain[e] = [];
82
+ }), this.generateProofRemotely = e?.generateProofRemotely ?? !0, this.utxoUtils = new ie(), this.cacheDevice = T(e), this.disableMerkleTreeUpdates = e?.disableMerkleTreeUpdates ?? !1;
81
83
  }
82
84
  enforceRateLimit(e, n, r = 1e3) {
83
85
  let i = Date.now(), a = t(n), o = this.lastCallState.get(e);
@@ -96,38 +98,50 @@ var he = class {
96
98
  }
97
99
  async initProviderAdapter(e, t) {
98
100
  let n = a.ethMainnet;
99
- t instanceof w ? n = o : t instanceof X && (n = s), await this.updateProviderAdapter(n, t), t.initConnector(e);
101
+ t instanceof E ? n = o : t instanceof X && (n = s), await this.updateProviderAdapter(n, t), t.initConnector(e);
100
102
  let r = await t.connectAndPatchProvider(e);
101
103
  await t.init(r), await this.setListeners();
102
104
  }
103
- getSigningMessage(e = m.PROTOCOL) {
105
+ getSigningMessage(e = g.PROTOCOL) {
104
106
  switch (e) {
105
- case m.PRIVATE_TRANSFER: return this.privateTransferSigningMessage;
106
- case m.PROTOCOL:
107
+ case g.PRIVATE_TRANSFER: return this.privateTransferSigningMessage;
108
+ case g.PROTOCOL:
107
109
  default: return this.signingMessage;
108
110
  }
109
111
  }
110
- async signHinkalMessage(e = m.PROTOCOL) {
112
+ async signHinkalMessage(e = g.PROTOCOL) {
111
113
  let t = this.getSigningMessage(e);
112
114
  return this.getProviderAdapter().signMessage(t);
113
115
  }
114
- async initUserKeys(e = m.PROTOCOL) {
115
- this.userKeys = new g(await this.signHinkalMessage(e));
116
+ async signSolanaLedgerMessage() {
117
+ let e = new ve({
118
+ blockhash: p,
119
+ lastValidBlockHeight: m,
120
+ feePayer: this.getSolanaPublicKey()
121
+ }), t = await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);
122
+ if (!t) throw Error("Failed to sign transaction without broadcast");
123
+ return {
124
+ signature: t.signature,
125
+ txMessageForSolanaLedger: t.transactionMessageB64
126
+ };
127
+ }
128
+ async initUserKeys(e = g.PROTOCOL) {
129
+ this.userKeys = new v(await this.signHinkalMessage(e));
116
130
  }
117
131
  initUserKeysWithSignature(e) {
118
- this.userKeys = new g(e);
132
+ this.userKeys = new v(e);
119
133
  }
120
134
  async initUserKeysFromSeedPhrases(e) {
121
- let t = E(e);
122
- this.userKeys = new g(t);
135
+ let t = O(e);
136
+ this.userKeys = new v(t);
123
137
  }
124
- async storeAndGetInitialSignature(e, t, n) {
138
+ async storeAndGetInitialSignature(e, t = !1, n) {
125
139
  let r = await this.getEthereumAddress();
126
140
  if (!r) throw Error("Connected address not found");
127
- return await T(r, e, t, n);
141
+ return await D(r, e, t, n);
128
142
  }
129
143
  async resetMerkle(e) {
130
- this.disableMerkleTreeUpdates || (e?.every((e) => this.isSelectedNetworkSupported(e)) ?? !0) && await z(this, e);
144
+ this.disableMerkleTreeUpdates || (e?.every((e) => this.isSelectedNetworkSupported(e)) ?? !0) && await V(this, e);
131
145
  }
132
146
  getTronWeb() {
133
147
  let e = this.tronProviderAdapter;
@@ -147,7 +161,7 @@ var he = class {
147
161
  return this.getProviderAdapter(e).getContract(e, t, n);
148
162
  }
149
163
  getContractWithFetcherByChainId(e, t, n = void 0) {
150
- return x(e, t, n);
164
+ return C(e, t, n);
151
165
  }
152
166
  async signMessage(e) {
153
167
  return await this.getProviderAdapter().signMessage(e);
@@ -156,7 +170,7 @@ var he = class {
156
170
  return await this.getProviderAdapter().signTypedData(e, t, n);
157
171
  }
158
172
  async signWithSubAccount(e, t, n, r) {
159
- return H(e, t, n, r);
173
+ return W(e, t, n, r);
160
174
  }
161
175
  getContractWithSigner(e, t, n = "") {
162
176
  return this.getProviderAdapter(e).getContractWithSigner(e, t, n);
@@ -217,20 +231,20 @@ var he = class {
217
231
  }
218
232
  async onAccountChanged() {
219
233
  await this.ethereumProviderAdapter?.onAccountChanged(), await this.solanaProviderAdapter?.onAccountChanged(), await this.tronProviderAdapter?.onAccountChanged();
220
- let e = p.AccountChanged;
234
+ let e = h.AccountChanged;
221
235
  typeof document < "u" ? document?.dispatchEvent(new Event(e)) : process?.emit("message", e, void 0);
222
236
  }
223
237
  async onChainChanged(e) {
224
- e ? await this.getProviderAdapter(e).onChainChanged(e) : (await this.disconnectFromConnector(), S());
238
+ e ? await this.getProviderAdapter(e).onChainChanged(e) : (await this.disconnectFromConnector(), w());
225
239
  }
226
240
  async monitorConnectedAddress(e) {
227
- await h.monitor(await this.getEthereumAddressByChain(e));
241
+ await _.monitor(await this.getEthereumAddressByChain(e));
228
242
  }
229
243
  async getBalances(e, t, n, r, i = !1, a, o = !1) {
230
- return y(this, e, t, n, r, i, this.generateProofRemotely, a, o);
244
+ return x(this, e, t, n, r, i, this.generateProofRemotely, a, o);
231
245
  }
232
246
  async getTotalBalance(e, t, r, i = !1, a, o = !1) {
233
- let s = r ?? await this.getEthereumAddressByChain(e), c = t ?? this.userKeys, l = await this.getBalances(e, c.getShieldedPrivateKey(), c.getShieldedPublicKey(), s, i, a, o), u = n ? await v.getPrivateTokens(e, s) : ne(e), d = [];
247
+ let s = r ?? await this.getEthereumAddressByChain(e), c = t ?? this.userKeys, l = await this.getBalances(e, c.getShieldedPrivateKey(), c.getShieldedPublicKey(), s, i, a, o), u = n ? await b.getPrivateTokens(e, s) : ne(e), d = [];
234
248
  return u.forEach((e) => {
235
249
  let t = e.erc20TokenAddress.toLowerCase(), n = l.get(t), r = {
236
250
  token: e,
@@ -251,14 +265,14 @@ var he = class {
251
265
  return Promise.resolve(!0);
252
266
  }
253
267
  checkExternalTokenLimitsUSD(e, t, n) {
254
- return j(e, t, n);
268
+ return N(e, t, n);
255
269
  }
256
270
  async getHinkalTreeRootHash(t) {
257
271
  if (l(t)) {
258
272
  let { hinkalIdl: e, hinkalAddress: n, originalDeployer: r } = d[t].contractData;
259
273
  if (!e || !n || !r) throw Error(`Missing Solana configuration for chain ${t}`);
260
- let i = new $(r), a = b(new $(n), i);
261
- return D(this.getSolanaProgram(e), a);
274
+ let i = new $(r), a = S(new $(n), i);
275
+ return k(this.getSolanaProgram(e), a);
262
276
  }
263
277
  return this.getContractWithFetcherByChainId(t, e.HinkalContract).getRootHash();
264
278
  }
@@ -281,7 +295,7 @@ var he = class {
281
295
  return this.getProviderAdapter(e).getAddress();
282
296
  }
283
297
  async getRandomRelay(e, t = !1) {
284
- return (await h.getIdleRelay(e, t)).relay;
298
+ return (await _.getIdleRelay(e, t)).relay;
285
299
  }
286
300
  getGasPrice(e) {
287
301
  let t = this.getProviderAdapter(e);
@@ -289,7 +303,7 @@ var he = class {
289
303
  return t.getGasPrice(e);
290
304
  }
291
305
  getAPI() {
292
- return h;
306
+ return _;
293
307
  }
294
308
  snapshotsClearInterval() {
295
309
  this.getSupportedChains().forEach((e) => {
@@ -297,43 +311,51 @@ var he = class {
297
311
  });
298
312
  }
299
313
  getRecipientInfo() {
300
- return ie(this);
314
+ return U(this);
301
315
  }
302
316
  async deposit(e, t, n = !0, r = !1) {
303
- return k(this, e, t, n, r);
317
+ return j(this, e, t, n, r);
304
318
  }
305
319
  async depositSolana(e, t, n = !1) {
306
- return N(this, e, t, n);
320
+ return F(this, e, t, n);
307
321
  }
308
322
  async depositForOther(e, t, n, r = !0, i = !1, a) {
309
323
  return this.enforceRateLimit(this.depositForOther.name, [
310
324
  e,
311
325
  t,
312
326
  n
313
- ]), A(this, e, t, n, r, i, a);
327
+ ]), M(this, e, t, n, r, i, a);
314
328
  }
315
329
  async depositSolanaForOther(e, t, n, r = !1, i) {
316
330
  return this.enforceRateLimit(this.depositSolanaForOther.name, [
317
331
  e,
318
332
  t,
319
333
  n
320
- ]), P(this, e, t, n, r, i);
334
+ ]), I(this, e, t, n, r, i);
321
335
  }
322
336
  async depositAndWithdraw(e, t, n, r, i, a, o, s, c = !0) {
323
- return l(_([e])) ? ae(this, e, t, n, r, i, a, o, s) : M(this, e, t, n, r, i, a, o, s, c);
337
+ return l(y([e])) ? se(this, e, t, n, r, i, a, o, s) : P(this, e, t, n, r, i, a, o, s, c);
324
338
  }
325
339
  async claimUtxo(e, t, n, r) {
326
- return l(_([e])) ? pe(this, e, t, n, r) : de(this, e, t, n, r);
340
+ return l(y([e])) ? ge(this, e, t, n, r) : Q(this, e, t, n, r);
327
341
  }
328
342
  async depositAndBridge(e, t, n, r, i, a, o, s = !0) {
329
- return ue(this, e, t, n, r, i, a, o, s);
343
+ return pe(this, e, t, n, r, i, a, o, s);
344
+ }
345
+ async nearDepositAndBridge(e, t, n, r, i, a, o, s, c) {
346
+ return this.enforceRateLimit(this.nearDepositAndBridge.name, [
347
+ e,
348
+ t,
349
+ n,
350
+ r
351
+ ]), me(this, e, t, n, r, i, a, o, s, c);
330
352
  }
331
353
  async prooflessDeposit(e, t, n, r, i = !1) {
332
- return l(_(e)) ? fe(this, e, t, n, r, i) : W(this, e, t, n, r, i);
354
+ return l(y(e)) ? he(this, e, t, n, r, i) : K(this, e, t, n, r, i);
333
355
  }
334
356
  async prooflessDepositWithPublicFee(e, t, n, r, i) {
335
- let a = _([e]);
336
- return l(a) ? F(this, e, t, n, r, i) : G(this, a, e, t, n, r, i);
357
+ let a = y([e]);
358
+ return l(a) ? L(this, e, t, n, r, i) : q(this, a, e, t, n, r, i);
337
359
  }
338
360
  getSolanaProgram(e) {
339
361
  if (!this.solanaProviderAdapter) throw Error("No provider adapter initialized");
@@ -350,24 +372,24 @@ var he = class {
350
372
  e,
351
373
  t,
352
374
  n
353
- ]), l(_(e)) ? se(this, e, t, n, r, i, a) : J(this, e, t, n, r, i, a);
375
+ ]), l(y(e)) ? le(this, e, t, n, r, i, a) : ae(this, e, t, n, r, i, a);
354
376
  }
355
377
  async withdraw(e, t, n, r, i, a, o) {
356
- return l(_(e)) ? oe(this, e, t, n, i, a, o) : L(this, e, t, n, r, i, a, o);
378
+ return l(y(e)) ? ce(this, e, t, n, i, a, o) : z(this, e, t, n, r, i, a, o);
357
379
  }
358
380
  async withdrawStuckUtxos(e, t) {
359
- return me(this, e, t);
381
+ return _e(this, e, t);
360
382
  }
361
383
  async swap(e, t, n, r, i, a, o) {
362
- return l(_(e)) ? this.swapSolana(e, t, r, i, a, o) : I(this, e, t, n, r, i, a, o);
384
+ return l(y(e)) ? this.swapSolana(e, t, r, i, a, o) : R(this, e, t, n, r, i, a, o);
363
385
  }
364
386
  async swapSolana(e, t, n, r, i, a) {
365
387
  let o = JSON.parse(n), s = BigInt(o.swapperAccountSalt), { instructionLists: c, addressLookupTableAccount: l } = o.data;
366
- return ce(this, e, t, s, c, l, r, i, a);
388
+ return ue(this, e, t, s, c, l, r, i, a);
367
389
  }
368
390
  async actionReceive(e, t, n, r, i, a) {
369
391
  if (!i) throw Error("subAccount is required");
370
- return l(_(e)) ? Q(this, e[0], t[0], i, void 0, a) : U(this, e, t, n, r, i, a);
392
+ return l(y(e)) ? Z(this, e[0], t[0], i, void 0, a) : G(this, e, t, n, r, i, a);
371
393
  }
372
394
  async actionPrivateWallet(e, t, n, r, i, a, o, s, c, l, u = !1, d, f, p) {
373
395
  return this.enforceRateLimit(this.actionPrivateWallet.name, [
@@ -381,23 +403,23 @@ var he = class {
381
403
  s,
382
404
  c,
383
405
  p
384
- ]), V(this, e, t, n, r, i, a, o, s, c, l, u, d, f, p);
406
+ ]), H(this, e, t, n, r, i, a, o, s, c, l, u, d, f, p);
385
407
  }
386
408
  async proxySwap(e, t, n, r, i, a, o, s, c = !1, u, d) {
387
- return l(_(e)) ? le(this, e, t, r, a, n, o, s, d) : K(this, e, t, n, r, i, a, o, s, c, u, d);
409
+ return l(y(e)) ? fe(this, e, t, r, a, n, o, s, d) : J(this, e, t, n, r, i, a, o, s, c, u, d);
388
410
  }
389
411
  async proxyToPrivate(e, t, n, r, i, a, o) {
390
- return l(_(e)) ? (this.enforceRateLimit(this.proxyToPrivate.name, [
412
+ return l(y(e)) ? (this.enforceRateLimit(this.proxyToPrivate.name, [
391
413
  e[0],
392
414
  t[0],
393
415
  n,
394
416
  r
395
- ]), Q(this, e[0], t[0], n, r, o)) : Y(this, e, t, r, i, a, n, o);
417
+ ]), Z(this, e[0], t[0], n, r, o)) : oe(this, e, t, r, i, a, n, o);
396
418
  }
397
419
  async proxySend(e, t, n, r, i, a, o) {
398
- let s = _(e);
399
- if (l(s)) return Z(this, e[0], t[0], n, r, o);
400
- let c = O(this, s, e.map((e) => e.erc20TokenAddress), t, r), u = e.map((e, n) => ({
420
+ let s = y(e);
421
+ if (l(s)) return de(this, e[0], t[0], n, r, o);
422
+ let c = A(this, s, e.map((e) => e.erc20TokenAddress), t, r), u = e.map((e, n) => ({
401
423
  token: e,
402
424
  amount: -1n * t[n]
403
425
  }));
@@ -408,7 +430,7 @@ var he = class {
408
430
  e,
409
431
  t,
410
432
  n
411
- ]), q(this, e, t, n);
433
+ ]), Y(this, e, t, n);
412
434
  }
413
435
  areMerkleTreeUpdatesDisabled() {
414
436
  return this.disableMerkleTreeUpdates;
@@ -418,4 +440,4 @@ var he = class {
418
440
  }
419
441
  };
420
442
  //#endregion
421
- export { he as Hinkal };
443
+ export { ye as Hinkal };
@@ -18,6 +18,7 @@ import { AdminTransactionType } from '../../types/admin.types';
18
18
  import { Idl, Program } from '@coral-xyz/anchor';
19
19
  import { PublicKey } from '@solana/web3.js';
20
20
  import { BridgeRecipient } from '../../types/bridging-tx.types';
21
+ import { NearBridgeParams, NearBridgeResult } from '../../types/near-intents.types';
21
22
  import { Utxo } from '../utxo/Utxo';
22
23
  export interface IHinkal<ConnectorType = unknown> {
23
24
  userKeys: UserKeys;
@@ -53,6 +54,7 @@ export interface IHinkal<ConnectorType = unknown> {
53
54
  claimUtxo(erc20Token: ERC20Token, utxo: Utxo, feeStructureOverride?: FeeStructure, claimableSignature?: string): Promise<string>;
54
55
  depositAndWithdraw(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean): Promise<string>;
55
56
  depositAndBridge(erc20Token: ERC20Token, recipientBridges: BridgeRecipient[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean): Promise<string>;
57
+ nearDepositAndBridge(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], params: NearBridgeParams, txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string): Promise<NearBridgeResult>;
56
58
  prooflessDeposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], stealthAddressStructures?: StealthAddressStructure[], action?: AdminTransactionType, returnTxData?: boolean): Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
57
59
  prooflessDepositWithPublicFee(erc20Token: ERC20Token, amounts: bigint[], stealthAddressStructures: StealthAddressStructure[], feeAmount: bigint, action?: AdminTransactionType): Promise<string>;
58
60
  getSolanaProgram(idl: Idl): Program;
@@ -67,10 +69,14 @@ export interface IHinkal<ConnectorType = unknown> {
67
69
  getTronWeb(): TronWeb;
68
70
  getSigningMessage(mode?: LoginMessageMode): string;
69
71
  signHinkalMessage(mode?: LoginMessageMode): Promise<string>;
72
+ signSolanaLedgerMessage(): Promise<{
73
+ signature: string;
74
+ txMessageForSolanaLedger: string;
75
+ }>;
70
76
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
71
77
  initUserKeysWithSignature(signature: string): void;
72
78
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
73
- storeAndGetInitialSignature(authSignature: string, isSolanaLedger: boolean, txMessageForSolanaLedger?: string): Promise<string>;
79
+ storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
74
80
  initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
75
81
  disconnectFromConnector(): Promise<void>;
76
82
  resetProviderAdapters(): Promise<void>;
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../API/callNearIntentsAPI.cjs`),n=require(`../../constants/bridging.constants.cjs`),r=require(`../../functions/utils/time.utils.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/utils/nearIntents.utils.cjs`),o=require(`./hinkalDepositAndWithdraw.cjs`),s=require(`./hinkalSolanaDepositAndWithdraw.cjs`);var c=async(c,l,u,d,f,p,m,h,g,_)=>{if(u.length!==d.length)throw Error(`recipientAmounts and recipientAddresses length mismatch`);if(u.length===0)throw Error(`No recipients to bridge`);let v=i.validateAndGetChainId([l]),y=r.secondsToMs(p),b=new Date(y+n.NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS).toISOString(),x=await Promise.all(d.map(async(e,n)=>{let r=u[n],{quote:i}=await t.getNearIntentsQuote({dry:!1,swapType:`EXACT_INPUT`,slippageTolerance:f.slippageBps??100,originAsset:f.originAsset,depositType:`ORIGIN_CHAIN`,destinationAsset:f.destinationAsset,amount:r.toString(),recipient:e,recipientType:`DESTINATION_CHAIN`,refundTo:c.userKeys.getNearIntentsAccountId(),refundType:`INTENTS`,deadline:b});if(!i.depositAddress)throw Error(`NEAR Intents quote returned no deposit address for recipient ${e}`);if(i.deadline&&new Date(i.deadline).getTime()<y)throw Error(`Bridge quote expires before the scheduled execution time. Choose a sooner time.`);return{destinationRecipient:e,amount:r,depositAddress:i.depositAddress,quote:i}})),S=m??await a.buildNearBridgeFeeStructure(v,l,x[0].depositAddress),C=x.map(e=>e.amount),w=x.map(e=>e.depositAddress),T;return T=e.isSolanaLike(v)?await s.hinkalSolanaDepositAndWithdraw(c,l,C,w,p,S,h,g,_,x.map(e=>e.destinationRecipient)):await o.hinkalDepositAndWithdraw(c,l,C,w,p,S,h,g,_),{depositTxHash:T,legs:x}};exports.hinkalNearDepositAndBridge=c;
@@ -0,0 +1,6 @@
1
+ import { AdminTransactionType } from '../../types';
2
+ import { FeeStructure } from '../../types/hinkal.types';
3
+ import { NearBridgeParams, NearBridgeResult } from '../../types/near-intents.types';
4
+ import { ERC20Token } from '../../types/token.types';
5
+ import { IHinkal } from './IHinkal';
6
+ export declare const hinkalNearDepositAndBridge: (hinkal: IHinkal, token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], params: NearBridgeParams, txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string) => Promise<NearBridgeResult>;
@@ -0,0 +1,43 @@
1
+ import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
2
+ import { getNearIntentsQuote as t } from "../../API/callNearIntentsAPI.mjs";
3
+ import { NEAR_BRIDGE_QUOTE_DEADLINE_BUFFER_MS as n } from "../../constants/bridging.constants.mjs";
4
+ import { secondsToMs as r } from "../../functions/utils/time.utils.mjs";
5
+ import { validateAndGetChainId as i } from "../../functions/utils/token-check.utils.mjs";
6
+ import { buildNearBridgeFeeStructure as a } from "../../functions/utils/nearIntents.utils.mjs";
7
+ import { hinkalDepositAndWithdraw as o } from "./hinkalDepositAndWithdraw.mjs";
8
+ import { hinkalSolanaDepositAndWithdraw as s } from "./hinkalSolanaDepositAndWithdraw.mjs";
9
+ //#region libs/shared/common/src/data-structures/Hinkal/hinkalNearDepositAndBridge.ts
10
+ var c = async (c, l, u, d, f, p, m, h, g, _) => {
11
+ if (u.length !== d.length) throw Error("recipientAmounts and recipientAddresses length mismatch");
12
+ if (u.length === 0) throw Error("No recipients to bridge");
13
+ let v = i([l]), y = r(p), b = new Date(y + n).toISOString(), x = await Promise.all(d.map(async (e, n) => {
14
+ let r = u[n], { quote: i } = await t({
15
+ dry: !1,
16
+ swapType: "EXACT_INPUT",
17
+ slippageTolerance: f.slippageBps ?? 100,
18
+ originAsset: f.originAsset,
19
+ depositType: "ORIGIN_CHAIN",
20
+ destinationAsset: f.destinationAsset,
21
+ amount: r.toString(),
22
+ recipient: e,
23
+ recipientType: "DESTINATION_CHAIN",
24
+ refundTo: c.userKeys.getNearIntentsAccountId(),
25
+ refundType: "INTENTS",
26
+ deadline: b
27
+ });
28
+ if (!i.depositAddress) throw Error(`NEAR Intents quote returned no deposit address for recipient ${e}`);
29
+ if (i.deadline && new Date(i.deadline).getTime() < y) throw Error("Bridge quote expires before the scheduled execution time. Choose a sooner time.");
30
+ return {
31
+ destinationRecipient: e,
32
+ amount: r,
33
+ depositAddress: i.depositAddress,
34
+ quote: i
35
+ };
36
+ })), S = m ?? await a(v, l, x[0].depositAddress), C = x.map((e) => e.amount), w = x.map((e) => e.depositAddress), T;
37
+ return T = e(v) ? await s(c, l, C, w, p, S, h, g, _, x.map((e) => e.destinationRecipient)) : await o(c, l, C, w, p, S, h, g, _), {
38
+ depositTxHash: T,
39
+ legs: x
40
+ };
41
+ };
42
+ //#endregion
43
+ export { c as hinkalNearDepositAndBridge };