@hinkal/common 0.2.33 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API/callNearIntentsAPI.cjs +1 -0
- package/API/callNearIntentsAPI.d.ts +3 -0
- package/API/callNearIntentsAPI.mjs +8 -0
- package/API/enclaveSignatureCalls.cjs +1 -1
- package/API/enclaveSignatureCalls.d.ts +1 -1
- package/API/enclaveSignatureCalls.mjs +1 -1
- package/API/index.cjs +1 -1
- package/API/index.d.ts +1 -0
- package/API/index.mjs +1 -0
- package/constants/bridging.constants.cjs +1 -1
- package/constants/bridging.constants.d.ts +15 -1
- package/constants/bridging.constants.mjs +25 -5
- package/constants/chains.constants.cjs +1 -1
- package/constants/chains.constants.d.ts +12 -1
- package/constants/chains.constants.mjs +94 -26
- package/constants/index.cjs +1 -1
- package/constants/index.mjs +1 -0
- package/constants/protocol.constants.cjs +1 -1
- package/constants/protocol.constants.d.ts +3 -0
- package/constants/protocol.constants.mjs +2 -2
- package/constants/server.constants.cjs +1 -1
- package/constants/server.constants.d.ts +2 -0
- package/constants/server.constants.mjs +2 -0
- package/constants/token-data/ERC20Registry.cjs +1 -1
- package/constants/token-data/ERC20Registry.mjs +49 -14
- package/constants/token-data/avalancheRegistry.json.cjs +1 -0
- package/constants/token-data/avalancheRegistry.json.mjs +44 -0
- package/constants/token-data/bnbMainnetRegistry.json.cjs +1 -0
- package/constants/token-data/bnbMainnetRegistry.json.mjs +44 -0
- package/constants/token-data/cronosRegistry.json.cjs +1 -0
- package/constants/token-data/cronosRegistry.json.mjs +44 -0
- package/constants/token-data/hyperEvmRegistry.json.cjs +1 -0
- package/constants/token-data/hyperEvmRegistry.json.mjs +36 -0
- package/constants/token-data/index.cjs +1 -1
- package/constants/token-data/index.d.ts +58 -1
- package/constants/token-data/index.mjs +10 -2
- package/constants/token-data/inkRegistry.json.cjs +1 -0
- package/constants/token-data/inkRegistry.json.mjs +28 -0
- package/constants/token-data/monadRegistry.json.cjs +1 -0
- package/constants/token-data/monadRegistry.json.mjs +36 -0
- package/constants/token-data/plasmaRegistry.json.cjs +1 -0
- package/constants/token-data/plasmaRegistry.json.mjs +28 -0
- package/constants/token-data/popularNonRebasingTokens.cjs +1 -0
- package/constants/token-data/popularNonRebasingTokens.d.ts +2 -0
- package/constants/token-data/popularNonRebasingTokens.mjs +11 -0
- package/constants/tokens.constants.cjs +1 -1
- package/constants/tokens.constants.mjs +8 -1
- package/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/data-structures/Hinkal/Hinkal.d.ts +8 -2
- package/data-structures/Hinkal/Hinkal.mjs +123 -101
- package/data-structures/Hinkal/IHinkal.d.ts +8 -2
- package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/data-structures/Hinkal/handleAutoDepositBack.mjs +15 -15
- package/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
- package/data-structures/Hinkal/hinkalClaimUtxo.mjs +33 -35
- package/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositAndBridge.mjs +43 -49
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +38 -40
- package/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -0
- package/data-structures/Hinkal/hinkalNearDepositAndBridge.d.ts +6 -0
- package/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +43 -0
- package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/data-structures/Hinkal/hinkalPrivateWallet.mjs +21 -26
- package/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +62 -64
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +36 -36
- package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +7 -7
- package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +9 -9
- package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +8 -8
- package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaSwap.mjs +50 -51
- package/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaTransfer.mjs +45 -46
- package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +38 -39
- package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSwap.mjs +18 -19
- package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalTransfer.mjs +21 -22
- package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdraw.mjs +24 -25
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +39 -41
- package/data-structures/Hinkal/index.cjs +1 -1
- package/data-structures/Hinkal/index.d.ts +1 -0
- package/data-structures/Hinkal/index.mjs +1 -0
- package/data-structures/crypto-keys/keys.cjs +1 -1
- package/data-structures/crypto-keys/keys.d.ts +18 -0
- package/data-structures/crypto-keys/keys.mjs +10 -0
- package/data-structures/index.cjs +1 -1
- package/data-structures/index.mjs +1 -0
- package/error-handling/error-codes.constants.cjs +1 -1
- package/error-handling/error-codes.constants.d.ts +4 -0
- package/error-handling/error-codes.constants.mjs +4 -0
- package/error-handling/get-error.message.cjs +1 -1
- package/error-handling/get-error.message.mjs +2 -1
- package/functions/index.cjs +1 -1
- package/functions/index.mjs +8 -6
- package/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
- package/functions/pre-transaction/buildCommitmentValidationData.d.ts +12 -2
- package/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -36
- package/functions/pre-transaction/sendV0Transaction.cjs +2 -1
- package/functions/pre-transaction/sendV0Transaction.d.ts +2 -2
- package/functions/pre-transaction/sendV0Transaction.mjs +65 -60
- package/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/functions/snarkjs/constructGeneralZkProof.d.ts +1 -0
- package/functions/snarkjs/constructGeneralZkProof.mjs +6 -5
- package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/functions/snarkjs/constructSolanaZkProof.d.ts +1 -0
- package/functions/snarkjs/constructSolanaZkProof.mjs +35 -34
- package/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -0
- package/functions/snarkjs/generateMainAndCommitmentZkProof.d.ts +11 -0
- package/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +16 -0
- package/functions/snarkjs/generateZkProof.cjs +1 -1
- package/functions/snarkjs/generateZkProof.d.ts +3 -3
- package/functions/snarkjs/generateZkProof.mjs +5 -9
- package/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
- package/functions/snarkjs/generateZkProofEnclave.d.ts +2 -2
- package/functions/snarkjs/generateZkProofEnclave.mjs +8 -8
- package/functions/snarkjs/generateZkProofSelf.cjs +1 -1
- package/functions/snarkjs/generateZkProofSelf.mjs +5 -5
- package/functions/snarkjs/index.cjs +1 -1
- package/functions/snarkjs/index.d.ts +1 -0
- package/functions/snarkjs/index.mjs +1 -0
- package/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
- package/functions/snarkjs/verifyCommitmentValidationData.mjs +5 -5
- package/functions/utils/customEnclaveFunctionsRegister.d.ts +3 -3
- package/functions/utils/enclave-signature-storage.cjs +1 -1
- package/functions/utils/enclave-signature-storage.d.ts +1 -1
- package/functions/utils/enclave-signature-storage.mjs +1 -1
- package/functions/utils/index.cjs +1 -1
- package/functions/utils/index.d.ts +1 -0
- package/functions/utils/index.mjs +6 -5
- package/functions/utils/nearIntents.utils.cjs +1 -0
- package/functions/utils/nearIntents.utils.d.ts +11 -0
- package/functions/utils/nearIntents.utils.mjs +36 -0
- package/functions/utils/time.utils.cjs +1 -1
- package/functions/utils/time.utils.d.ts +1 -0
- package/functions/utils/time.utils.mjs +2 -2
- package/functions/web3/oneInchAPI.cjs +1 -1
- package/functions/web3/oneInchAPI.mjs +1 -1
- package/index.cjs +1 -1
- package/index.mjs +320 -315
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/near-intents.types.d.ts +60 -0
- package/types/solana.types.d.ts +1 -0
- package/webworker/{logError-fCJ4HXQz.js → logError-DoUkEIFE.js} +14 -14
- package/webworker/package.json +1 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
- package/webworker/snarkjsWorkerNode.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/webworker/utxoWorkerNode.cjs +1 -1
- package/webworker/viteWorkerURL.constant.cjs +3 -3
- package/webworker/viteWorkerURL.constant.mjs +3 -3
- package/webworker/{workerProxy-BNBqYien.js → workerProxy-DQJE57Ye.js} +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
- package/webworker/zkProofWorkerNode.cjs +1 -1
|
@@ -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,i,n):Y.hinkalClaimUtxo(this,e,t,i,n)}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
|
|
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[];
|
|
@@ -88,8 +93,9 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
88
93
|
depositForOther(erc20Tokens: ERC20Token[], amountChanges: bigint[], recipientInfo: string, preEstimateGas?: boolean, returnTxData?: boolean, action?: AdminTransactionType): Promise<ethers.TransactionResponse | ethers.TransactionRequest | string | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
|
|
89
94
|
depositSolanaForOther(amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, action?: AdminTransactionType): Promise<string>;
|
|
90
95
|
depositAndWithdraw(erc20Token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, preEstimateGas?: boolean): Promise<string>;
|
|
91
|
-
claimUtxo(erc20Token: ERC20Token, utxo: Utxo,
|
|
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 {
|
|
6
|
-
import {
|
|
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
|
|
13
|
-
import { validateAndGetChainId as
|
|
14
|
-
import { privateTokensDB as
|
|
15
|
-
import { getShieldedBalance as
|
|
16
|
-
import { getMerkleAccountPublicKey as
|
|
17
|
-
import { getContractWithFetcherByChainId as
|
|
18
|
-
import { reloadPage as
|
|
19
|
-
import { createCacheDevice as
|
|
20
|
-
import { SolanaProviderAdapter as
|
|
21
|
-
import { storeAndGetSignatureFromEnclave as
|
|
22
|
-
import { generateHashFromSeedPhrases as
|
|
23
|
-
import { fetchSolanaMerkleTreeRootHash as
|
|
24
|
-
import { createTransaferEmporiumOpsBatch as
|
|
25
|
-
import { hinkalDeposit as
|
|
26
|
-
import { checkTokenLimitsUSD as
|
|
27
|
-
import { hinkalDepositAndWithdraw as
|
|
28
|
-
import { hinkalSolanaDeposit as
|
|
29
|
-
import { hinkalSwap as
|
|
30
|
-
import { hinkalWithdraw as
|
|
31
|
-
import { MerkleTree as
|
|
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
|
|
34
|
-
import { MultiThreadedUtxoUtils as
|
|
35
|
-
import { hinkalPrivateWallet as
|
|
36
|
-
import { getRecipientInfo as
|
|
37
|
-
import { hinkalSignSubAccount as
|
|
38
|
-
import { hinkalActionReceive as
|
|
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
|
|
41
|
-
import { hinkalProxySwap as
|
|
42
|
-
import { hinkalMultiSendPrivateRecipients as
|
|
43
|
-
import { hinkalTransfer as
|
|
44
|
-
import { hinkalProxyToPrivate as
|
|
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
|
|
47
|
-
import { hinkalSolanaWithdraw as
|
|
48
|
-
import { hinkalSolanaTransfer as
|
|
49
|
-
import { hinkalSolanaSwap as
|
|
50
|
-
import { hinkalSolanaProxySend as
|
|
51
|
-
import { hinkalSolanaProxySwap as
|
|
52
|
-
import { hinkalSolanaProxyShield as
|
|
53
|
-
import { hinkalDepositAndBridge as
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
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
|
|
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
|
|
79
|
-
this.merkleTreeHinkalByChain[e] =
|
|
80
|
-
}), this.generateProofRemotely = e?.generateProofRemotely ?? !0, this.utxoUtils = new
|
|
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
|
|
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 =
|
|
105
|
+
getSigningMessage(e = g.PROTOCOL) {
|
|
104
106
|
switch (e) {
|
|
105
|
-
case
|
|
106
|
-
case
|
|
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 =
|
|
112
|
+
async signHinkalMessage(e = g.PROTOCOL) {
|
|
111
113
|
let t = this.getSigningMessage(e);
|
|
112
114
|
return this.getProviderAdapter().signMessage(t);
|
|
113
115
|
}
|
|
114
|
-
async
|
|
115
|
-
|
|
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
|
|
132
|
+
this.userKeys = new v(e);
|
|
119
133
|
}
|
|
120
134
|
async initUserKeysFromSeedPhrases(e) {
|
|
121
|
-
let t =
|
|
122
|
-
this.userKeys = new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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(),
|
|
238
|
+
e ? await this.getProviderAdapter(e).onChainChanged(e) : (await this.disconnectFromConnector(), w());
|
|
225
239
|
}
|
|
226
240
|
async monitorConnectedAddress(e) {
|
|
227
|
-
await
|
|
241
|
+
await _.monitor(await this.getEthereumAddressByChain(e));
|
|
228
242
|
}
|
|
229
243
|
async getBalances(e, t, n, r, i = !1, a, o = !1) {
|
|
230
|
-
return
|
|
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
|
|
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
|
|
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 =
|
|
261
|
-
return
|
|
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
|
|
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
|
|
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
|
|
314
|
+
return U(this);
|
|
301
315
|
}
|
|
302
316
|
async deposit(e, t, n = !0, r = !1) {
|
|
303
|
-
return
|
|
317
|
+
return j(this, e, t, n, r);
|
|
304
318
|
}
|
|
305
319
|
async depositSolana(e, t, n = !1) {
|
|
306
|
-
return
|
|
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
|
-
]),
|
|
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
|
-
]),
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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 =
|
|
336
|
-
return l(a) ?
|
|
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(
|
|
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(
|
|
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
|
|
381
|
+
return _e(this, e, t);
|
|
360
382
|
}
|
|
361
383
|
async swap(e, t, n, r, i, a, o) {
|
|
362
|
-
return l(
|
|
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
|
|
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(
|
|
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
|
-
]),
|
|
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(
|
|
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(
|
|
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
|
-
]),
|
|
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 =
|
|
399
|
-
if (l(s)) return
|
|
400
|
-
let c =
|
|
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
|
-
]),
|
|
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 {
|
|
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;
|
|
@@ -50,9 +51,10 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
50
51
|
getRecipientInfo(): string;
|
|
51
52
|
deposit(erc20Tokens: ERC20Token[], amountChanges: bigint[], preEstimateGas?: boolean, returnTxData?: boolean): Promise<ethers.TransactionResponse | ethers.TransactionRequest | string | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
|
|
52
53
|
depositForOther(erc20Tokens: ERC20Token[], amountChanges: bigint[], recepinetInfo: string, preEstimateGas?: boolean, returnTxData?: boolean, action?: AdminTransactionType): Promise<ethers.TransactionResponse | ethers.TransactionRequest | string | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
|
|
53
|
-
claimUtxo(erc20Token: ERC20Token, utxo: Utxo,
|
|
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
|
|
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>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../types/transactions.types.cjs`),r=require(`../../types/admin.types.cjs`),i=require(`../../types/activities.types.cjs`),a=require(`../../types/transaction.types.cjs`),o=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/caseInsensitive.utils.cjs`),c=require(`../../API/API.cjs`),l=require(`../../error-handling/error-codes.constants.cjs`),u=require(`../../functions/web3/etherFunctions.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/utils/time.utils.cjs`),p=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),m=require(`../../error-handling/logger.cjs`),h=require(`../../
|
|
1
|
+
const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../types/transactions.types.cjs`),r=require(`../../types/admin.types.cjs`),i=require(`../../types/activities.types.cjs`),a=require(`../../types/transaction.types.cjs`),o=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/caseInsensitive.utils.cjs`),c=require(`../../API/API.cjs`),l=require(`../../error-handling/error-codes.constants.cjs`),u=require(`../../functions/web3/etherFunctions.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/utils/time.utils.cjs`),p=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),m=require(`../../error-handling/logger.cjs`),h=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const g=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),_=require(`../../functions/utils/create-provider.cjs`),v=require(`../../functions/pre-transaction/getFeeStructure.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/private-wallet/emporium.helpers.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),w=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),T=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),ee=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const E=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var D=3*1e3,O=13*1e3,k=async(k,A,j,M,N,P,F,I)=>{if(!j||F.length===0)return;let L;try{let a=_.createJsonRpcProvider(A);await f.waitLittle(A===t.chainIds.ethMainnet?O:D);let p=await C.getTokensToDepositBack(F,N,j,a);if(!p.length){b.postToOffscreen(o.MessagesFromOffscreen.AutoShieldTxStatus,{message:l.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let m=x.getGasTokenSymbols(A).map(e=>d.getERC20TokenBySymbol(e,A)).filter(e=>e!==void 0),{prices:h}=await c.API.getTokenPrices(A,m.map(e=>e.erc20TokenAddress)),R=new Map(h.map((e,t)=>[m[t].erc20TokenAddress.toLowerCase(),e])),z=p.map(({token:e})=>e),B=p.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=S.createTransaferEmporiumOpsBatch(k,A,V,await g.modifyVolatileTokenAmountChanges(A,z,B,j)),U=await v.getFeeStructure(A,N,V,e.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,j,A))),{flatFee:W}=U??{},G=d.getERC20Token(U.feeToken,A);if(!G)return;let K=u.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await T.selectGasToken(N,q,A,z,H,await w.getGasTokenRecords(m,A,k,j,a,R),U,V,j);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(o.MessagesFromOffscreen.AutoShieldTxStatus,{message:l.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>s.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=t.networkRegistry[A].contractData,$={activityType:i.ActivityTypes.AUTO_SHIELD,chainId:A,from:j,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:u.getAmountInToken(e,B[t]),token:e}))};L=await E.activityStorage.saveTxRequest($),b.postToOffscreen(o.MessagesFromOffscreen.AutoShieldTxStatus,{status:n.TransactionStatus.Loading}),ee.updateHinkal(I,A,k);let te={id:0,success:!0,txHash:await k.actionReceive(z,B,Y,X,M,r.AdminTransactionType.AutoShield)};await E.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(o.MessagesFromOffscreen.AutoShieldTxStatus,{status:n.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof p.ErrorWithRelayerTransaction&&(t=e.txHash);let r={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await E.activityStorage.updatePendingTransactions(r,L),b.postToOffscreen(o.MessagesFromOffscreen.AutoShieldTxStatus,{status:n.TransactionStatus.Failed,error:h.getErrorMessageFromTransactionRequest(e,a.TransactionRequestType.ReceiveFromShieldedAccount)}),m.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=k;
|