@gurge/sdk 0.3.45 → 0.3.47

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 (57) hide show
  1. package/common/src/data-structures/Hinkal/Hinkal.d.ts +1 -0
  2. package/common/src/data-structures/Hinkal/IHinkal.d.ts +1 -0
  3. package/common/src/webworker/package.json +1 -1
  4. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  5. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  6. package/dist/libs/shared/workers-prebuild/viteWorkerURL.constant.es.cjs +1 -1
  7. package/dist/libs/shared/workers-prebuild/viteWorkerURL.constant.es.mjs +3 -3
  8. package/index.cjs +1 -1
  9. package/index.d.ts +0 -1
  10. package/index.mjs +2 -7
  11. package/internal/swapApi.cjs +1 -0
  12. package/internal/swapApi.d.ts +3 -0
  13. package/internal/swapApi.mjs +32 -0
  14. package/libs/shared/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  15. package/libs/shared/common/src/data-structures/Hinkal/Hinkal.mjs +10 -0
  16. package/libs/shared/common/src/functions/utils/process.utils.cjs +1 -1
  17. package/libs/shared/common/src/functions/utils/process.utils.mjs +10 -6
  18. package/package.json +1 -1
  19. package/providers/prepareEthersHinkal.cjs +1 -1
  20. package/providers/prepareEthersHinkal.d.ts +2 -0
  21. package/providers/prepareEthersHinkal.mjs +5 -5
  22. package/providers/prepareSolanaHinkal.cjs +1 -1
  23. package/providers/prepareSolanaHinkal.d.ts +2 -0
  24. package/providers/prepareSolanaHinkal.mjs +5 -5
  25. package/providers/prepareTronHinkal.cjs +1 -1
  26. package/providers/prepareTronHinkal.d.ts +2 -0
  27. package/providers/prepareTronHinkal.mjs +5 -5
  28. package/providers/prepareWagmiHinkal.cjs +1 -1
  29. package/providers/prepareWagmiHinkal.d.ts +3 -1
  30. package/providers/prepareWagmiHinkal.mjs +5 -5
  31. package/services/Hinkal.cjs +1 -1
  32. package/services/Hinkal.d.ts +8 -2
  33. package/services/Hinkal.mjs +39 -10
  34. package/types/IHinkal.d.ts +9 -2
  35. package/types/index.d.ts +1 -0
  36. package/types/swap.types.d.ts +25 -0
  37. package/functions/index.cjs +0 -1
  38. package/functions/index.d.ts +0 -2
  39. package/functions/index.mjs +0 -6
  40. package/functions/integrations/index.cjs +0 -1
  41. package/functions/integrations/index.d.ts +0 -1
  42. package/functions/integrations/index.mjs +0 -1
  43. package/functions/integrations/swapApi.cjs +0 -1
  44. package/functions/integrations/swapApi.d.ts +0 -23
  45. package/functions/integrations/swapApi.mjs +0 -32
  46. package/functions/utils/getFeeStructure.cjs +0 -1
  47. package/functions/utils/getFeeStructure.d.ts +0 -1
  48. package/functions/utils/getFeeStructure.mjs +0 -1
  49. package/functions/utils/index.cjs +0 -1
  50. package/functions/utils/index.d.ts +0 -3
  51. package/functions/utils/index.mjs +0 -5
  52. package/functions/utils/preProcessing.cjs +0 -1
  53. package/functions/utils/preProcessing.d.ts +0 -1
  54. package/functions/utils/preProcessing.mjs +0 -1
  55. package/functions/utils/refreshBalance.cjs +0 -1
  56. package/functions/utils/refreshBalance.d.ts +0 -2
  57. package/functions/utils/refreshBalance.mjs +0 -7
@@ -58,6 +58,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
58
58
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
59
59
  initUserKeysWithSignature(signature: string): void;
60
60
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
61
+ initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
61
62
  storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
62
63
  resetMerkle(chains?: number[]): Promise<void>;
63
64
  getTronWeb(): import('tronweb').TronWeb;
@@ -83,6 +83,7 @@ export interface IHinkal<ConnectorType = unknown> {
83
83
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
84
84
  initUserKeysWithSignature(signature: string): void;
85
85
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
86
+ initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
86
87
  storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
87
88
  initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
88
89
  disconnectFromConnector(): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.45",
3
+ "version": "0.3.47",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -2,9 +2,9 @@
2
2
  const domain = 'https://storage.googleapis.com/hinkal-workers-staging';
3
3
 
4
4
  const WORKER_CDN_URLS = {
5
- ZKProof: domain + '/0.3.45/' + 'zkProofWorkerLauncher.js',
6
- SnarkJS: domain + '/0.3.45/' + 'snarkjsWorkerLauncher.js',
7
- UTXO: domain + '/0.3.45/' + 'utxoWorkerLauncher.js',
5
+ ZKProof: domain + '/0.3.47/' + 'zkProofWorkerLauncher.js',
6
+ SnarkJS: domain + '/0.3.47/' + 'snarkjsWorkerLauncher.js',
7
+ UTXO: domain + '/0.3.47/' + 'utxoWorkerLauncher.js',
8
8
  };
9
9
 
10
10
  // Returns a blob:// URL which points
@@ -2,9 +2,9 @@
2
2
  const domain = 'https://storage.googleapis.com/hinkal-workers-staging';
3
3
 
4
4
  const WORKER_CDN_URLS = {
5
- ZKProof: domain + '/0.3.45/' + 'zkProofWorkerLauncher.js',
6
- SnarkJS: domain + '/0.3.45/' + 'snarkjsWorkerLauncher.js',
7
- UTXO: domain + '/0.3.45/' + 'utxoWorkerLauncher.js',
5
+ ZKProof: domain + '/0.3.47/' + 'zkProofWorkerLauncher.js',
6
+ SnarkJS: domain + '/0.3.47/' + 'snarkjsWorkerLauncher.js',
7
+ UTXO: domain + '/0.3.47/' + 'utxoWorkerLauncher.js',
8
8
  };
9
9
 
10
10
  // Returns a blob:// URL which points
@@ -1 +1 @@
1
- var e=`https://storage.googleapis.com/hinkal-workers-staging`,t={ZKProof:e+`/0.3.45/zkProofWorkerLauncher.js`,SnarkJS:e+`/0.3.45/snarkjsWorkerLauncher.js`,UTXO:e+`/0.3.45/utxoWorkerLauncher.js`};exports.WORKER_CDN_URLS=t;
1
+ var e=`https://storage.googleapis.com/hinkal-workers-staging`,t={ZKProof:e+`/0.3.47/zkProofWorkerLauncher.js`,SnarkJS:e+`/0.3.47/snarkjsWorkerLauncher.js`,UTXO:e+`/0.3.47/utxoWorkerLauncher.js`};exports.WORKER_CDN_URLS=t;
@@ -1,8 +1,8 @@
1
1
  //#region dist/libs/shared/workers-prebuild/viteWorkerURL.constant.es.js
2
2
  var e = "https://storage.googleapis.com/hinkal-workers-staging", t = {
3
- ZKProof: e + "/0.3.45/zkProofWorkerLauncher.js",
4
- SnarkJS: e + "/0.3.45/snarkjsWorkerLauncher.js",
5
- UTXO: e + "/0.3.45/utxoWorkerLauncher.js"
3
+ ZKProof: e + "/0.3.47/zkProofWorkerLauncher.js",
4
+ SnarkJS: e + "/0.3.47/snarkjsWorkerLauncher.js",
5
+ UTXO: e + "/0.3.47/utxoWorkerLauncher.js"
6
6
  };
7
7
  //#endregion
8
8
  export { t as WORKER_CDN_URLS };
package/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./libs/shared/common/src/types/external-action.types.cjs`),t=require(`./libs/shared/common/src/types/balances.types.cjs`),n=require(`./libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),r=require(`./libs/shared/common/src/crypto/preProcessing.cjs`),i=require(`./services/Hinkal.cjs`);require(`./services/index.cjs`);const a=require(`./functions/utils/refreshBalance.cjs`),o=require(`./functions/integrations/swapApi.cjs`);require(`./functions/index.cjs`),require(`./types/index.cjs`),exports.ExternalActionId=e.ExternalActionId,exports.Hinkal=i.Hinkal,exports.PrivateBalanceUpdateType=t.PrivateBalanceUpdateType,exports.getEvmSwapPrices=o.getEvmSwapPrices,exports.getFeeStructure=n.getFeeStructure,exports.getSolanaSwapPrices=o.getSolanaSwapPrices,exports.preProcessing=r.preProcessing,exports.refreshBalance=a.refreshBalance;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./libs/shared/common/src/types/external-action.types.cjs`),t=require(`./libs/shared/common/src/types/balances.types.cjs`),n=require(`./services/Hinkal.cjs`);require(`./services/index.cjs`),require(`./types/index.cjs`),exports.ExternalActionId=e.ExternalActionId,exports.Hinkal=n.Hinkal,exports.PrivateBalanceUpdateType=t.PrivateBalanceUpdateType;
package/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './services';
2
- export * from './functions';
3
2
  export * from './types';
package/index.mjs CHANGED
@@ -1,11 +1,6 @@
1
1
  import { ExternalActionId as e } from "./libs/shared/common/src/types/external-action.types.mjs";
2
2
  import { PrivateBalanceUpdateType as t } from "./libs/shared/common/src/types/balances.types.mjs";
3
- import { getFeeStructure as n } from "./libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
4
- import { preProcessing as r } from "./libs/shared/common/src/crypto/preProcessing.mjs";
5
- import { Hinkal as i } from "./services/Hinkal.mjs";
3
+ import { Hinkal as n } from "./services/Hinkal.mjs";
6
4
  import "./services/index.mjs";
7
- import { refreshBalance as a } from "./functions/utils/refreshBalance.mjs";
8
- import { getEvmSwapPrices as o, getSolanaSwapPrices as s } from "./functions/integrations/swapApi.mjs";
9
- import "./functions/index.mjs";
10
5
  import "./types/index.mjs";
11
- export { e as ExternalActionId, i as Hinkal, t as PrivateBalanceUpdateType, o as getEvmSwapPrices, n as getFeeStructure, s as getSolanaSwapPrices, r as preProcessing, a as refreshBalance };
6
+ export { e as ExternalActionId, n as Hinkal, t as PrivateBalanceUpdateType };
@@ -0,0 +1 @@
1
+ const e=require(`../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`),t=require(`../libs/shared/common/src/functions/utils/process.utils.cjs`),n=require(`../libs/shared/common/src/functions/web3/uniswapAPI.cjs`),r=require(`../libs/shared/common/src/functions/web3/odosAPI.cjs`),i=require(`../libs/shared/common/src/functions/web3/oneInchAPI.cjs`),a=require(`../libs/shared/common/src/functions/web3/okxAPI.cjs`);require(`../libs/shared/common/src/functions/index.cjs`);var o=async(t,r,i,a,o)=>{let s=t.hinkalCommon,[c,l]=await e.resolveErc20Tokens(r,[a,o]);return n.getUniswapPrice(s,r,i,c,l)},s=async(n,a,s,c,l)=>{let[u,d]=await e.resolveErc20Tokens(a,[c,l]),[f,p,m]=await Promise.allSettled([t.withTimeout(o(n,a,s,c,l)),t.withTimeout(r.getOdosPrice(a,u,d,s)),t.withTimeout(i.getOneInchPrice(a,u,d,s))]);return{uniswap:f.status===`fulfilled`?f.value:null,odos:p.status===`fulfilled`?p.value:null,oneInch:m.status===`fulfilled`?m.value:null}},c=async(n,r,i,o)=>{let[s,c]=await e.resolveErc20Tokens(n,[i,o]);try{return{okx:await t.withTimeout(a.getOKXPrice(n,s,c,r))}}catch{return{okx:null}}};exports.getEvmSwapPrices=s,exports.getSolanaSwapPrices=c;
@@ -0,0 +1,3 @@
1
+ import { EvmSwapPrices, IHinkal, SolanaSwapPrices } from '../types';
2
+ export declare const getEvmSwapPrices: (hinkal: IHinkal, chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<EvmSwapPrices>;
3
+ export declare const getSolanaSwapPrices: (chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<SolanaSwapPrices>;
@@ -0,0 +1,32 @@
1
+ import { resolveErc20Tokens as e } from "../libs/shared/common/src/functions/utils/erc20tokenFunctions.mjs";
2
+ import { withTimeout as t } from "../libs/shared/common/src/functions/utils/process.utils.mjs";
3
+ import { getUniswapPrice as n } from "../libs/shared/common/src/functions/web3/uniswapAPI.mjs";
4
+ import { getOdosPrice as r } from "../libs/shared/common/src/functions/web3/odosAPI.mjs";
5
+ import { getOneInchPrice as i } from "../libs/shared/common/src/functions/web3/oneInchAPI.mjs";
6
+ import { getOKXPrice as a } from "../libs/shared/common/src/functions/web3/okxAPI.mjs";
7
+ import "../libs/shared/common/src/functions/index.mjs";
8
+ //#region libs/shared/sdk/src/internal/swapApi.ts
9
+ var o = async (t, r, i, a, o) => {
10
+ let s = t.hinkalCommon, [c, l] = await e(r, [a, o]);
11
+ return n(s, r, i, c, l);
12
+ }, s = async (n, a, s, c, l) => {
13
+ let [u, d] = await e(a, [c, l]), [f, p, m] = await Promise.allSettled([
14
+ t(o(n, a, s, c, l)),
15
+ t(r(a, u, d, s)),
16
+ t(i(a, u, d, s))
17
+ ]);
18
+ return {
19
+ uniswap: f.status === "fulfilled" ? f.value : null,
20
+ odos: p.status === "fulfilled" ? p.value : null,
21
+ oneInch: m.status === "fulfilled" ? m.value : null
22
+ };
23
+ }, c = async (n, r, i, o) => {
24
+ let [s, c] = await e(n, [i, o]);
25
+ try {
26
+ return { okx: await t(a(n, s, c, r)) };
27
+ } catch {
28
+ return { okx: null };
29
+ }
30
+ };
31
+ //#endregion
32
+ export { s as getEvmSwapPrices, c as getSolanaSwapPrices };
@@ -1 +1 @@
1
- require(`../../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../functions/utils/serialize.utils.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../constants/protocol.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../crypto/poseidon.cjs`),o=require(`../../error-handling/error-codes.constants.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../API/scheduled-transactions-calls.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../TokenDBs/PrivateTokensDB.cjs`),f=require(`../../functions/utils/erc20tokenFunctions.cjs`),p=require(`../../functions/web3/events/getShieldedBalance.cjs`),m=require(`../../functions/web3/getContractMetadata.cjs`),h=require(`../../functions/utils/reloadPage.cjs`),g=require(`../../functions/utils/cacheDevice.utils.cjs`),_=require(`../../providers/SolanaProviderAdapter.cjs`),v=require(`../../functions/utils/enclave-signature-storage.cjs`),y=require(`../../functions/utils/mnemonics.cjs`),b=require(`../../functions/snarkjs/fetchOnChainRootHashes.cjs`),x=require(`../../functions/private-wallet/emporium.helpers.cjs`),S=require(`./hinkalDeposit.cjs`);require(`../../functions/index.cjs`);const C=require(`./hinkalDepositAndWithdraw.cjs`),w=require(`./hinkalSolanaDeposit.cjs`),T=require(`./hinkalSwap.cjs`),E=require(`./hinkalWithdraw.cjs`),D=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const O=require(`./resetMerkleTrees.cjs`);require(`../../API/index.cjs`);const k=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),A=require(`./hinkalPrivateWallet.cjs`),j=require(`./hinkalGetRecipientInfo.cjs`),M=require(`./hinkalSignSubAccount.cjs`),N=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const P=require(`./hinkalProoflessDeposit.cjs`),F=require(`./hinkalProxySwap.cjs`),ee=require(`./hinkalMultiSend.cjs`),I=require(`./hinkalTransfer.cjs`),L=require(`./hinkalProxyToPrivate.cjs`),R=require(`../../providers/TronProviderAdapter.cjs`),z=require(`./hinkalSolanaDepositAndWithdraw.cjs`),B=require(`./hinkalSolanaWithdraw.cjs`),V=require(`./hinkalSolanaTransfer.cjs`),H=require(`./hinkalSolanaSwap.cjs`),U=require(`./hinkalSolanaProxySend.cjs`),W=require(`./hinkalSolanaProxySwap.cjs`),G=require(`./hinkalSolanaProxyShield.cjs`),K=require(`./hinkalDepositAndBridge.cjs`),q=require(`./hinkalNearDepositAndBridge.cjs`),J=require(`./hinkalClaimUtxo.cjs`),Y=require(`./hinkalSolanaProoflessDeposit.cjs`),X=require(`./hinkalSolanaClaimUtxo.cjs`),Z=require(`./hinkalWithdrawStuckUtxos.cjs`),Q=require(`../private-balances/HinkalPrivateBalanceController.cjs`);require(`../private-balances/index.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;balanceFetchingMutexByChain=new Map;generateProofRemotely;disableMerkleTreeUpdates;allowParallelBalanceLocalDecryption;privateBalances=new Q.HinkalPrivateBalanceController(this);constructor(e){this.userKeys=new s.UserKeys(void 0),e?.tronChainOverride&&n.setHinkalTronChainId(e.tronChainOverride),n.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=D.MerkleTree.create(a.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new k.MultiThreadedUtxoUtils,this.cacheDevice=g.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1,this.allowParallelBalanceLocalDecryption=e?.allowParallelBalanceLocalDecryption??!1}enforceRateLimit(t,n,r=1e3){let i=Date.now(),a=e.CustomJSONStringify(n),o=this.lastCallState.get(t);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${t} was already called with the same arguments`);this.lastCallState.set(t,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?n.chainIds.ethMainnet:this.solanaProviderAdapter?n.currentSolanaChainId:n.chainIds.tronMainnet;let r;if(r=n.isSolanaLike(t)?this.solanaProviderAdapter:n.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!r)throw Error(`ProviderAdapter is not initialized`);return r}async initProviderAdapter(e,t){let r=n.chainIds.ethMainnet;t instanceof _.SolanaProviderAdapter?r=n.currentSolanaChainId:t instanceof R.TronProviderAdapter&&(r=n.currentTronChainId),await this.updateProviderAdapter(r,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=i.LoginMessageMode.PROTOCOL){switch(e){case i.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case i.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=i.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:r.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:r.DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT,feePayer:this.getSolanaPublicKey()}),t=await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);if(!t)throw Error(`Failed to sign transaction without broadcast`);return{signature:t.signature,txMessageForSolanaLedger:t.transactionMessageB64}}async initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new s.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new s.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=y.generateHashFromSeedPhrases(e);this.userKeys=new s.UserKeys(t)}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await v.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await O.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof R.TronProviderAdapter))throw Error(`Tron provider adapter is not a TronProviderAdapter`);let t=e.getTronWeb();if(!t)throw Error(`TronWeb not available`);return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?n.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>!n.isSolanaLike(e)&&!n.isTronLike(e)):this.solanaProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>n.isSolanaLike(e)):this.tronProviderAdapter?[n.currentTronChainId]:[]}async waitForTransaction(e,t,n=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,t,n)}getContract(e,t,n=void 0){return this.getProviderAdapter(e).getContract(e,t,n)}getContractWithFetcherByChainId(e,t,n=void 0){return m.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 M.hinkalSignSubAccount(e,t,n,r)}getContractWithSigner(e,t,n=``){return this.getProviderAdapter(e).getContractWithSigner(e,t,n)}getContractWithFetcher(e,t,n=``){return this.getProviderAdapter(e).getContractWithFetcher(e,t,n)}isSelectedNetworkSupported(e){return!!n.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),r=t.getChainId(),i=r!==void 0&&n.isSameOnchainNetwork(e.chainId,r);if(!(e.chainId===r||i))try{await t.switchNetwork(e)}catch{throw Error(o.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector(),await this.tronProviderAdapter?.disconnectFromConnector()}async resetProviderAdapters(){this.ethereumProviderAdapter?.release(),this.solanaProviderAdapter?.release(),this.tronProviderAdapter?.release(),this.ethereumProviderAdapter=void 0,this.solanaProviderAdapter=void 0,this.tronProviderAdapter=void 0}async updateProviderAdapter(e,t){try{n.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):n.isTronLike(e)?(this.tronProviderAdapter&&this.tronProviderAdapter.release(),this.tronProviderAdapter=t):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=t)}catch(e){throw console.error(e),Error(`updateProviderAdapter failed, please try again.`)}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.tronProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged(),await this.tronProviderAdapter?.onAccountChanged();let e=i.EventType.AccountChanged;typeof document<`u`?document?.dispatchEvent(new Event(e)):process?.emit(`message`,e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),h.reloadPage())}async monitorConnectedAddress(e){await l.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,n,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=n??this.userKeys,l=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),u=t.isExtension?await d.privateTokensDB.getPrivateTokens(e,s):await f.getErc20TokensForChainAPI(e),p=[];return u.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=l.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};p.push(r)}),p}async getStuckShieldedBalances(e,t,n,r=!1,i=!1){return(await this.getTotalBalance(e,t,n,r,i,!0)).filter(e=>e.balance>0n)}get privateBalancesWithUSD(){return this.privateBalances.getSnapshot()}onPrivateBalancesWithUSDChange(e){return this.privateBalances.onPrivateBalancesWithUSDChange(e)}async getHinkalTreeRootHash(e){return(await b.fetchOnChainRootHashes(e)).hinkalRootHash}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 l.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 l.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}async destroy(){this.snapshotsClearInterval(),this.privateBalances.dispose(),await this.resetProviderAdapters()}getRecipientInfo(){return j.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 w.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]),w.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,r,i,a,o,s,c,l=!0){return n.isSolanaLike(u.validateAndGetChainId([e]))?z.hinkalSolanaDepositAndWithdraw(this,e,t,r,i,a,o,s,c):C.hinkalDepositAndWithdraw(this,e,t,r,i,a,o,s,c,l)}async claimUtxo(e,t,r,i){return n.isSolanaLike(u.validateAndGetChainId([e]))?X.hinkalSolanaClaimUtxo(this,e,t,r,i):J.hinkalClaimUtxo(this,e,t,r,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return K.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async checkSendTransactionStatus(e){return c.getScheduledTransactionById(e)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),q.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,r,i,a=!1){return n.isSolanaLike(u.validateAndGetChainId(e))?Y.hinkalSolanaProoflessDeposit(this,e,t,r,i,a):P.hinkalProoflessDeposit(this,e,t,r,i,a)}async prooflessDepositWithPublicFee(e,t,r,i,a){let o=u.validateAndGetChainId([e]);return n.isSolanaLike(o)?w.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,r,i,a):P.hinkalProoflessDepositWithPublicFee(this,o,e,t,r,i,a)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaProgram`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaPublicKey`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaPublicKey()}async transfer(e,t,r,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,r]),n.isSolanaLike(u.validateAndGetChainId(e))?V.hinkalSolanaTransfer(this,e,t,r,i,a,o):I.hinkalTransfer(this,e,t,r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?B.hinkalSolanaWithdraw(this,e,t,r,a,o,s):E.hinkalWithdraw(this,e,t,r,i,a,o,s)}async withdrawStuckUtxos(e,t){return Z.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):T.hinkalSwap(this,e,t,r,i,a,o,s)}async swapSolana(e,t,n,r,i,a){let o=JSON.parse(n),s=BigInt(o.swapperAccountSalt),{instructionLists:c,addressLookupTableAccount:l}=o.data;return H.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,r,i,a,o){if(!a)throw Error(`subAccount is required`);return n.isSolanaLike(u.validateAndGetChainId(e))?G.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):N.hinkalActionReceive(this,e,t,r,i,a,o)}async actionPrivateWallet(e,t,n,r,i,a,o,s,c,l,u=!1,d,f,p){return this.enforceRateLimit(this.actionPrivateWallet.name,[e,t,n,r,i,a,o,s,c,p]),A.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,r,i,a,o,s,c,l=!1,d,f){return n.isSolanaLike(u.validateAndGetChainId(e))?W.hinkalSolanaProxySwap(this,e,t,i,o,r,s,c,f):F.hinkalProxySwap(this,e,t,r,i,a,o,s,c,l,d,f)}async proxyToPrivate(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],r,i]),G.hinkalSolanaProxyShield(this,e[0],t[0],r,i,s)):L.hinkalProxyToPrivate(this,e,t,i,a,o,r,s)}async proxySend(e,t,r,i,a,o,s){let c=u.validateAndGetChainId(e);if(n.isSolanaLike(c))return U.hinkalSolanaProxySend(this,e[0],t[0],r,i,s);let l=x.createTransaferEmporiumOpsBatch(this,c,e.map(e=>e.erc20TokenAddress),t,i),d=e.map((e,n)=>({token:e,amount:-1n*t[n]}));return await this.actionPrivateWallet(c,[],[],[],l,d,r,a,o,void 0,void 0,void 0,s,void 0)}async multiSendPrivateRecipients(e,t,n){return this.enforceRateLimit(this.multiSendPrivateRecipients.name,[e,t,n]),ee.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(`../../functions/utils/serialize.utils.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../constants/protocol.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../crypto/poseidon.cjs`),o=require(`../../error-handling/error-codes.constants.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../API/scheduled-transactions-calls.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../TokenDBs/PrivateTokensDB.cjs`),f=require(`../../functions/utils/erc20tokenFunctions.cjs`),p=require(`../../functions/web3/events/getShieldedBalance.cjs`),m=require(`../../functions/web3/getContractMetadata.cjs`),h=require(`../../functions/utils/reloadPage.cjs`),g=require(`../../functions/utils/cacheDevice.utils.cjs`),_=require(`../../providers/SolanaProviderAdapter.cjs`),v=require(`../../functions/utils/enclave-signature-storage.cjs`),y=require(`../../functions/utils/mnemonics.cjs`),b=require(`../../functions/snarkjs/fetchOnChainRootHashes.cjs`),x=require(`../../functions/private-wallet/emporium.helpers.cjs`),S=require(`./hinkalDeposit.cjs`);require(`../../functions/index.cjs`);const C=require(`./hinkalDepositAndWithdraw.cjs`),w=require(`./hinkalSolanaDeposit.cjs`),T=require(`./hinkalSwap.cjs`),E=require(`./hinkalWithdraw.cjs`),D=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const O=require(`./resetMerkleTrees.cjs`);require(`../../API/index.cjs`);const k=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),A=require(`./hinkalPrivateWallet.cjs`),j=require(`./hinkalGetRecipientInfo.cjs`),M=require(`./hinkalSignSubAccount.cjs`),N=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const P=require(`./hinkalProoflessDeposit.cjs`),F=require(`./hinkalProxySwap.cjs`),ee=require(`./hinkalMultiSend.cjs`),I=require(`./hinkalTransfer.cjs`),L=require(`./hinkalProxyToPrivate.cjs`),R=require(`../../providers/TronProviderAdapter.cjs`),z=require(`./hinkalSolanaDepositAndWithdraw.cjs`),B=require(`./hinkalSolanaWithdraw.cjs`),V=require(`./hinkalSolanaTransfer.cjs`),H=require(`./hinkalSolanaSwap.cjs`),U=require(`./hinkalSolanaProxySend.cjs`),W=require(`./hinkalSolanaProxySwap.cjs`),G=require(`./hinkalSolanaProxyShield.cjs`),K=require(`./hinkalDepositAndBridge.cjs`),q=require(`./hinkalNearDepositAndBridge.cjs`),J=require(`./hinkalClaimUtxo.cjs`),Y=require(`./hinkalSolanaProoflessDeposit.cjs`),X=require(`./hinkalSolanaClaimUtxo.cjs`),Z=require(`./hinkalWithdrawStuckUtxos.cjs`),Q=require(`../private-balances/HinkalPrivateBalanceController.cjs`);require(`../private-balances/index.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;balanceFetchingMutexByChain=new Map;generateProofRemotely;disableMerkleTreeUpdates;allowParallelBalanceLocalDecryption;privateBalances=new Q.HinkalPrivateBalanceController(this);constructor(e){this.userKeys=new s.UserKeys(void 0),e?.tronChainOverride&&n.setHinkalTronChainId(e.tronChainOverride),n.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=D.MerkleTree.create(a.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new k.MultiThreadedUtxoUtils,this.cacheDevice=g.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1,this.allowParallelBalanceLocalDecryption=e?.allowParallelBalanceLocalDecryption??!1}enforceRateLimit(t,n,r=1e3){let i=Date.now(),a=e.CustomJSONStringify(n),o=this.lastCallState.get(t);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${t} was already called with the same arguments`);this.lastCallState.set(t,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?n.chainIds.ethMainnet:this.solanaProviderAdapter?n.currentSolanaChainId:n.chainIds.tronMainnet;let r;if(r=n.isSolanaLike(t)?this.solanaProviderAdapter:n.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!r)throw Error(`ProviderAdapter is not initialized`);return r}async initProviderAdapter(e,t){let r=n.chainIds.ethMainnet;t instanceof _.SolanaProviderAdapter?r=n.currentSolanaChainId:t instanceof R.TronProviderAdapter&&(r=n.currentTronChainId),await this.updateProviderAdapter(r,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=i.LoginMessageMode.PROTOCOL){switch(e){case i.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case i.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=i.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:r.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:r.DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT,feePayer:this.getSolanaPublicKey()}),t=await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);if(!t)throw Error(`Failed to sign transaction without broadcast`);return{signature:t.signature,txMessageForSolanaLedger:t.transactionMessageB64}}async initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new s.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new s.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=y.generateHashFromSeedPhrases(e);this.userKeys=new s.UserKeys(t)}async initUserKeysWithEnclaveSignature(e=i.LoginMessageMode.PROTOCOL){if(!await this.getEthereumAddress())throw Error(`Connected address not found`);let t=this.getProviderAdapter().isSolanaLedger?.()??!1,n,r;if(t){let e=await this.signSolanaLedgerMessage();n=e.signature,r=e.txMessageForSolanaLedger}else n=await this.getProviderAdapter().signMessage(this.getSigningMessage(e));let a=await this.storeAndGetInitialSignature(n,t,r);return this.initUserKeysWithSignature(a??n),r}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await v.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await O.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof R.TronProviderAdapter))throw Error(`Tron provider adapter is not a TronProviderAdapter`);let t=e.getTronWeb();if(!t)throw Error(`TronWeb not available`);return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?n.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>!n.isSolanaLike(e)&&!n.isTronLike(e)):this.solanaProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>n.isSolanaLike(e)):this.tronProviderAdapter?[n.currentTronChainId]:[]}async waitForTransaction(e,t,n=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,t,n)}getContract(e,t,n=void 0){return this.getProviderAdapter(e).getContract(e,t,n)}getContractWithFetcherByChainId(e,t,n=void 0){return m.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 M.hinkalSignSubAccount(e,t,n,r)}getContractWithSigner(e,t,n=``){return this.getProviderAdapter(e).getContractWithSigner(e,t,n)}getContractWithFetcher(e,t,n=``){return this.getProviderAdapter(e).getContractWithFetcher(e,t,n)}isSelectedNetworkSupported(e){return!!n.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),r=t.getChainId(),i=r!==void 0&&n.isSameOnchainNetwork(e.chainId,r);if(!(e.chainId===r||i))try{await t.switchNetwork(e)}catch{throw Error(o.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector(),await this.tronProviderAdapter?.disconnectFromConnector()}async resetProviderAdapters(){this.ethereumProviderAdapter?.release(),this.solanaProviderAdapter?.release(),this.tronProviderAdapter?.release(),this.ethereumProviderAdapter=void 0,this.solanaProviderAdapter=void 0,this.tronProviderAdapter=void 0}async updateProviderAdapter(e,t){try{n.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):n.isTronLike(e)?(this.tronProviderAdapter&&this.tronProviderAdapter.release(),this.tronProviderAdapter=t):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=t)}catch(e){throw console.error(e),Error(`updateProviderAdapter failed, please try again.`)}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.tronProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged(),await this.tronProviderAdapter?.onAccountChanged();let e=i.EventType.AccountChanged;typeof document<`u`?document?.dispatchEvent(new Event(e)):process?.emit(`message`,e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),h.reloadPage())}async monitorConnectedAddress(e){await l.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,n,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=n??this.userKeys,l=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),u=t.isExtension?await d.privateTokensDB.getPrivateTokens(e,s):await f.getErc20TokensForChainAPI(e),p=[];return u.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=l.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};p.push(r)}),p}async getStuckShieldedBalances(e,t,n,r=!1,i=!1){return(await this.getTotalBalance(e,t,n,r,i,!0)).filter(e=>e.balance>0n)}get privateBalancesWithUSD(){return this.privateBalances.getSnapshot()}onPrivateBalancesWithUSDChange(e){return this.privateBalances.onPrivateBalancesWithUSDChange(e)}async getHinkalTreeRootHash(e){return(await b.fetchOnChainRootHashes(e)).hinkalRootHash}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 l.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 l.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}async destroy(){this.snapshotsClearInterval(),this.privateBalances.dispose(),await this.resetProviderAdapters()}getRecipientInfo(){return j.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 w.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]),w.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,r,i,a,o,s,c,l=!0){return n.isSolanaLike(u.validateAndGetChainId([e]))?z.hinkalSolanaDepositAndWithdraw(this,e,t,r,i,a,o,s,c):C.hinkalDepositAndWithdraw(this,e,t,r,i,a,o,s,c,l)}async claimUtxo(e,t,r,i){return n.isSolanaLike(u.validateAndGetChainId([e]))?X.hinkalSolanaClaimUtxo(this,e,t,r,i):J.hinkalClaimUtxo(this,e,t,r,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return K.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async checkSendTransactionStatus(e){return c.getScheduledTransactionById(e)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),q.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,r,i,a=!1){return n.isSolanaLike(u.validateAndGetChainId(e))?Y.hinkalSolanaProoflessDeposit(this,e,t,r,i,a):P.hinkalProoflessDeposit(this,e,t,r,i,a)}async prooflessDepositWithPublicFee(e,t,r,i,a){let o=u.validateAndGetChainId([e]);return n.isSolanaLike(o)?w.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,r,i,a):P.hinkalProoflessDepositWithPublicFee(this,o,e,t,r,i,a)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaProgram`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaPublicKey`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaPublicKey()}async transfer(e,t,r,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,r]),n.isSolanaLike(u.validateAndGetChainId(e))?V.hinkalSolanaTransfer(this,e,t,r,i,a,o):I.hinkalTransfer(this,e,t,r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?B.hinkalSolanaWithdraw(this,e,t,r,a,o,s):E.hinkalWithdraw(this,e,t,r,i,a,o,s)}async withdrawStuckUtxos(e,t){return Z.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):T.hinkalSwap(this,e,t,r,i,a,o,s)}async swapSolana(e,t,n,r,i,a){let o=JSON.parse(n),s=BigInt(o.swapperAccountSalt),{instructionLists:c,addressLookupTableAccount:l}=o.data;return H.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,r,i,a,o){if(!a)throw Error(`subAccount is required`);return n.isSolanaLike(u.validateAndGetChainId(e))?G.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):N.hinkalActionReceive(this,e,t,r,i,a,o)}async actionPrivateWallet(e,t,n,r,i,a,o,s,c,l,u=!1,d,f,p){return this.enforceRateLimit(this.actionPrivateWallet.name,[e,t,n,r,i,a,o,s,c,p]),A.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,r,i,a,o,s,c,l=!1,d,f){return n.isSolanaLike(u.validateAndGetChainId(e))?W.hinkalSolanaProxySwap(this,e,t,i,o,r,s,c,f):F.hinkalProxySwap(this,e,t,r,i,a,o,s,c,l,d,f)}async proxyToPrivate(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],r,i]),G.hinkalSolanaProxyShield(this,e[0],t[0],r,i,s)):L.hinkalProxyToPrivate(this,e,t,i,a,o,r,s)}async proxySend(e,t,r,i,a,o,s){let c=u.validateAndGetChainId(e);if(n.isSolanaLike(c))return U.hinkalSolanaProxySend(this,e[0],t[0],r,i,s);let l=x.createTransaferEmporiumOpsBatch(this,c,e.map(e=>e.erc20TokenAddress),t,i),d=e.map((e,n)=>({token:e,amount:-1n*t[n]}));return await this.actionPrivateWallet(c,[],[],[],l,d,r,a,o,void 0,void 0,void 0,s,void 0)}async multiSendPrivateRecipients(e,t,n){return this.enforceRateLimit(this.multiSendPrivateRecipients.name,[e,t,n]),ee.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=te;
@@ -138,6 +138,16 @@ var ge = class {
138
138
  let t = O(e);
139
139
  this.userKeys = new _(t);
140
140
  }
141
+ async initUserKeysWithEnclaveSignature(e = h.PROTOCOL) {
142
+ if (!await this.getEthereumAddress()) throw Error("Connected address not found");
143
+ let t = this.getProviderAdapter().isSolanaLedger?.() ?? !1, n, r;
144
+ if (t) {
145
+ let e = await this.signSolanaLedgerMessage();
146
+ n = e.signature, r = e.txMessageForSolanaLedger;
147
+ } else n = await this.getProviderAdapter().signMessage(this.getSigningMessage(e));
148
+ let i = await this.storeAndGetInitialSignature(n, t, r);
149
+ return this.initUserKeysWithSignature(i ?? n), r;
150
+ }
141
151
  async storeAndGetInitialSignature(e, t = !1, n) {
142
152
  let r = await this.getEthereumAddress();
143
153
  if (!r) throw Error("Connected address not found");
@@ -1 +1 @@
1
- var e=e=>new Promise(t=>{setTimeout(t,e)}),t=async(e,t=1e4)=>Promise.race([e,new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`Timeout after ${t}ms`))},t);e.finally(()=>clearTimeout(i))})]),n=async(t,n={})=>{let r=n.intervalMs??5e3,i=n.timeoutMs??6e4,a=Math.floor(i/r)+1;for(let n=0;n<a;n+=1){try{let e=await t();if(e!=null)return e}catch{}n<a-1&&await e(r)}};exports.pollForValue=n,exports.wait=e,exports.withTimeout=t;
1
+ var e=e=>new Promise(t=>{setTimeout(t,e)}),t=async(e,t=1e4)=>{let n,r=new Promise((e,r)=>{n=setTimeout(()=>r(Error(`Timeout after ${t}ms`)),t)});try{return await Promise.race([e,r])}finally{clearTimeout(n)}},n=async(t,n={})=>{let r=n.intervalMs??5e3,i=n.timeoutMs??6e4,a=Math.floor(i/r)+1;for(let n=0;n<a;n+=1){try{let e=await t();if(e!=null)return e}catch{}n<a-1&&await e(r)}};exports.pollForValue=n,exports.wait=e,exports.withTimeout=t;
@@ -1,12 +1,16 @@
1
1
  //#region libs/shared/common/src/functions/utils/process.utils.ts
2
2
  var e = (e) => new Promise((t) => {
3
3
  setTimeout(t, e);
4
- }), t = async (e, t = 1e4) => Promise.race([e, new Promise((n, r) => {
5
- let i = setTimeout(() => {
6
- r(/* @__PURE__ */ Error(`Timeout after ${t}ms`));
7
- }, t);
8
- e.finally(() => clearTimeout(i));
9
- })]), n = async (t, n = {}) => {
4
+ }), t = async (e, t = 1e4) => {
5
+ let n, r = new Promise((e, r) => {
6
+ n = setTimeout(() => r(/* @__PURE__ */ Error(`Timeout after ${t}ms`)), t);
7
+ });
8
+ try {
9
+ return await Promise.race([e, r]);
10
+ } finally {
11
+ clearTimeout(n);
12
+ }
13
+ }, n = async (t, n = {}) => {
10
14
  let r = n.intervalMs ?? 5e3, i = n.timeoutMs ?? 6e4, a = Math.floor(i / r) + 1;
11
15
  for (let n = 0; n < a; n += 1) {
12
16
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.45",
3
+ "version": "0.3.47",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../libs/shared/common/src/providers/EthersProviderAdapter.cjs`),n=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var r=async(r,i)=>{await e.preProcessing();let a=new n.Hinkal(i),o=t.default();return o.initSigner?.(r),await a.initProviderAdapter(void 0,o),await a.initUserKeys(),await a.resetMerkle(),a};exports.prepareEthersHinkal=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../libs/shared/common/src/providers/EthersProviderAdapter.cjs`),n=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var r=async(r,i,a)=>{await e.preProcessing();let o=new n.Hinkal(a),s=t.default();return s.initSigner?.(r),await o.initProviderAdapter(void 0,s),await i(o),await o.resetMerkle(),o},i=async(e,t)=>r(e,e=>e.initUserKeys(),t),a=async(e,t)=>r(e,e=>e.initUserKeysWithEnclaveSignature(),t),o=async(e,t,n)=>r(e,e=>e.initUserKeysWithSignature(t),n);exports.prepareEthersHinkal=i,exports.prepareEthersHinkalFromSignature=o,exports.prepareEthersHinkalWithEnclaveSignIn=a;
@@ -2,3 +2,5 @@ import { HinkalConfig } from '../common/src/types/hinkal.types';
2
2
  import { Signer } from 'ethers';
3
3
  import { Hinkal } from '../services';
4
4
  export declare const prepareEthersHinkal: (signer: Signer, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
5
+ export declare const prepareEthersHinkalWithEnclaveSignIn: (signer: Signer, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
6
+ export declare const prepareEthersHinkalFromSignature: (signer: Signer, signature: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
@@ -3,10 +3,10 @@ import t from "../libs/shared/common/src/providers/EthersProviderAdapter.mjs";
3
3
  import { Hinkal as n } from "../services/Hinkal.mjs";
4
4
  import "../services/index.mjs";
5
5
  //#region libs/shared/sdk/src/providers/prepareEthersHinkal.ts
6
- var r = async (r, i) => {
6
+ var r = async (r, i, a) => {
7
7
  await e();
8
- let a = new n(i), o = t();
9
- return o.initSigner?.(r), await a.initProviderAdapter(void 0, o), await a.initUserKeys(), await a.resetMerkle(), a;
10
- };
8
+ let o = new n(a), s = t();
9
+ return s.initSigner?.(r), await o.initProviderAdapter(void 0, s), await i(o), await o.resetMerkle(), o;
10
+ }, i = async (e, t) => r(e, (e) => e.initUserKeys(), t), a = async (e, t) => r(e, (e) => e.initUserKeysWithEnclaveSignature(), t), o = async (e, t, n) => r(e, (e) => e.initUserKeysWithSignature(t), n);
11
11
  //#endregion
12
- export { r as prepareEthersHinkal };
12
+ export { i as prepareEthersHinkal, o as prepareEthersHinkalFromSignature, a as prepareEthersHinkalWithEnclaveSignIn };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/SolanaProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a,o)=>{await t.preProcessing();let s=new r.Hinkal(o),c=n.default(e.currentSolanaChainId,a);return await s.initProviderAdapter(i,c),await s.initUserKeys(),await s.resetMerkle(),s};exports.prepareSolanaHinkal=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/SolanaProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a,o,s)=>{await t.preProcessing();let c=new r.Hinkal(s),l=n.default(e.currentSolanaChainId,o);return await c.initProviderAdapter(i,l),await a(c),await c.resetMerkle(),c},a=async(e,t,n)=>i(e,e=>e.initUserKeys(),t,n),o=async(e,t,n)=>i(e,e=>e.initUserKeysWithEnclaveSignature(),t,n),s=async(e,t,n,r)=>i(e,e=>e.initUserKeysWithSignature(t),n,r);exports.prepareSolanaHinkal=a,exports.prepareSolanaHinkalFromSignature=s,exports.prepareSolanaHinkalWithEnclaveSignIn=o;
@@ -2,3 +2,5 @@ import { HinkalConfig } from '../common/src/types/hinkal.types';
2
2
  import { SolanaWallet } from '../common/src/types/solana.types';
3
3
  import { Hinkal } from '../services';
4
4
  export declare const prepareSolanaHinkal: (connector: SolanaWallet, ethereumAddress?: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
5
+ export declare const prepareSolanaHinkalWithEnclaveSignIn: (connector: SolanaWallet, ethereumAddress?: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
6
+ export declare const prepareSolanaHinkalFromSignature: (connector: SolanaWallet, signature: string, ethereumAddress?: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
@@ -4,10 +4,10 @@ import n from "../libs/shared/common/src/providers/SolanaProviderAdapter.mjs";
4
4
  import { Hinkal as r } from "../services/Hinkal.mjs";
5
5
  import "../services/index.mjs";
6
6
  //#region libs/shared/sdk/src/providers/prepareSolanaHinkal.ts
7
- var i = async (i, a, o) => {
7
+ var i = async (i, a, o, s) => {
8
8
  await t();
9
- let s = new r(o), c = n(e, a);
10
- return await s.initProviderAdapter(i, c), await s.initUserKeys(), await s.resetMerkle(), s;
11
- };
9
+ let c = new r(s), l = n(e, o);
10
+ return await c.initProviderAdapter(i, l), await a(c), await c.resetMerkle(), c;
11
+ }, a = async (e, t, n) => i(e, (e) => e.initUserKeys(), t, n), o = async (e, t, n) => i(e, (e) => e.initUserKeysWithEnclaveSignature(), t, n), s = async (e, t, n, r) => i(e, (e) => e.initUserKeysWithSignature(t), n, r);
12
12
  //#endregion
13
- export { i as prepareSolanaHinkal };
13
+ export { a as prepareSolanaHinkal, s as prepareSolanaHinkalFromSignature, o as prepareSolanaHinkalWithEnclaveSignIn };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/TronProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a)=>{await t.preProcessing();let o=new r.Hinkal(a),s=n.default(e.currentTronChainId);return await o.initProviderAdapter(i,s),await o.initUserKeys(),await o.resetMerkle(),o};exports.prepareTronHinkal=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/TronProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a,o)=>{await t.preProcessing();let s=new r.Hinkal(o),c=n.default(e.currentTronChainId);return await s.initProviderAdapter(i,c),await a(s),await s.resetMerkle(),s},a=async(e,t)=>i(e,e=>e.initUserKeys(),t),o=async(e,t)=>i(e,e=>e.initUserKeysWithEnclaveSignature(),t),s=async(e,t,n)=>i(e,e=>e.initUserKeysWithSignature(t),n);exports.prepareTronHinkal=a,exports.prepareTronHinkalFromSignature=s,exports.prepareTronHinkalWithEnclaveSignIn=o;
@@ -2,3 +2,5 @@ import { HinkalConfig } from '../common/src/types/hinkal.types';
2
2
  import { TronWeb } from 'tronweb';
3
3
  import { Hinkal } from '../services';
4
4
  export declare const prepareTronHinkal: (connector: TronWeb, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
5
+ export declare const prepareTronHinkalWithEnclaveSignIn: (connector: TronWeb, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
6
+ export declare const prepareTronHinkalFromSignature: (connector: TronWeb, signature: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
@@ -4,10 +4,10 @@ import n from "../libs/shared/common/src/providers/TronProviderAdapter.mjs";
4
4
  import { Hinkal as r } from "../services/Hinkal.mjs";
5
5
  import "../services/index.mjs";
6
6
  //#region libs/shared/sdk/src/providers/prepareTronHinkal.ts
7
- var i = async (i, a) => {
7
+ var i = async (i, a, o) => {
8
8
  await t();
9
- let o = new r(a), s = n(e);
10
- return await o.initProviderAdapter(i, s), await o.initUserKeys(), await o.resetMerkle(), o;
11
- };
9
+ let s = new r(o), c = n(e);
10
+ return await s.initProviderAdapter(i, c), await a(s), await s.resetMerkle(), s;
11
+ }, a = async (e, t) => i(e, (e) => e.initUserKeys(), t), o = async (e, t) => i(e, (e) => e.initUserKeysWithEnclaveSignature(), t), s = async (e, t, n) => i(e, (e) => e.initUserKeysWithSignature(t), n);
12
12
  //#endregion
13
- export { i as prepareTronHinkal };
13
+ export { a as prepareTronHinkal, s as prepareTronHinkalFromSignature, o as prepareTronHinkalWithEnclaveSignIn };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);const n=require(`../libs/shared/common/src/providers/WagmiProviderAdapter.cjs`);var r=async(r,i,a)=>{await e.preProcessing();let o=new t.Hinkal(a),s=n.default();return s.initConfig?.(i),await o.initProviderAdapter(r,s),await o.initUserKeys(),await o.resetMerkle(),o};exports.prepareWagmiHinkal=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);const n=require(`../libs/shared/common/src/providers/WagmiProviderAdapter.cjs`);var r=async(r,i,a,o)=>{await e.preProcessing();let s=new t.Hinkal(o),c=n.default();return c.initConfig?.(i),await s.initProviderAdapter(r,c),await a(s),await s.resetMerkle(),s},i=async(e,t,n)=>r(e,t,e=>e.initUserKeys(),n),a=async(e,t,n)=>r(e,t,e=>e.initUserKeysWithEnclaveSignature(),n),o=async(e,t,n,i)=>r(e,t,e=>e.initUserKeysWithSignature(n),i);exports.prepareWagmiHinkal=i,exports.prepareWagmiHinkalFromSignature=o,exports.prepareWagmiHinkalWithEnclaveSignIn=a;
@@ -1,4 +1,6 @@
1
+ import { HinkalConfig } from '../common/src/types/hinkal.types';
1
2
  import { Config, Connector } from 'wagmi';
2
3
  import { Hinkal } from '../services';
3
- import { HinkalConfig } from '../common/src/types/hinkal.types';
4
4
  export declare const prepareWagmiHinkal: (connector: Connector, config: Config, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
5
+ export declare const prepareWagmiHinkalWithEnclaveSignIn: (connector: Connector, config: Config, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
6
+ export declare const prepareWagmiHinkalFromSignature: (connector: Connector, config: Config, signature: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
@@ -3,10 +3,10 @@ import { Hinkal as t } from "../services/Hinkal.mjs";
3
3
  import "../services/index.mjs";
4
4
  import n from "../libs/shared/common/src/providers/WagmiProviderAdapter.mjs";
5
5
  //#region libs/shared/sdk/src/providers/prepareWagmiHinkal.ts
6
- var r = async (r, i, a) => {
6
+ var r = async (r, i, a, o) => {
7
7
  await e();
8
- let o = new t(a), s = n();
9
- return s.initConfig?.(i), await o.initProviderAdapter(r, s), await o.initUserKeys(), await o.resetMerkle(), o;
10
- };
8
+ let s = new t(o), c = n();
9
+ return c.initConfig?.(i), await s.initProviderAdapter(r, c), await a(s), await s.resetMerkle(), s;
10
+ }, i = async (e, t, n) => r(e, t, (e) => e.initUserKeys(), n), a = async (e, t, n) => r(e, t, (e) => e.initUserKeysWithEnclaveSignature(), n), o = async (e, t, n, i) => r(e, t, (e) => e.initUserKeysWithSignature(n), i);
11
11
  //#endregion
12
- export { r as prepareWagmiHinkal };
12
+ export { i as prepareWagmiHinkal, o as prepareWagmiHinkalFromSignature, a as prepareWagmiHinkalWithEnclaveSignIn };
@@ -1 +1 @@
1
- const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/types/hinkal.types.cjs`);require(`../libs/shared/common/src/types/index.cjs`);const n=require(`../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`);require(`../libs/shared/common/src/functions/index.cjs`);const r=require(`../libs/shared/common/src/data-structures/Hinkal/Hinkal.cjs`),i=require(`../internal/token.utils.cjs`);var a=class{hinkalCommon;mappedPrivateBalancesSource;mappedPrivateBalances={};constructor(e){this.hinkalCommon=new r.Hinkal(e)}getProviderAdapter(e){return this.hinkalCommon.getProviderAdapter(e)}initProviderAdapter(e,t){return this.hinkalCommon.initProviderAdapter(e,t)}initUserKeys(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeys(e)}initUserKeysWithSignature(e){return this.hinkalCommon.initUserKeysWithSignature(e)}initUserKeysFromSeedPhrases(e){return this.hinkalCommon.initUserKeysFromSeedPhrases(e)}storeAndGetInitialSignature(e,t=!1,n){return this.hinkalCommon.storeAndGetInitialSignature(e,t,n)}resetProviderAdapters(){return this.hinkalCommon.resetProviderAdapters()}disconnectFromConnector(){return this.hinkalCommon.disconnectFromConnector()}destroy(){return this.hinkalCommon.destroy()}signMessage(e){return this.hinkalCommon.signMessage(e)}signTypedData(e,t,n){return this.hinkalCommon.signTypedData(e,t,n)}getSupportedChains(){return this.hinkalCommon.getSupportedChains()}isSelectedNetworkSupported(e){return this.hinkalCommon.isSelectedNetworkSupported(e)}switchNetwork(t){let n=e.networkRegistry[t];if(!n)throw Error(`Network with chainId ${t} not supported`);return this.hinkalCommon.switchNetwork(n)}resetMerkle(e){return this.hinkalCommon.resetMerkle(e)}resetMerkleTreesIfNecessary(e){return this.hinkalCommon.resetMerkleTreesIfNecessary(e)}getMappedPrivateBalances(e){return e===this.mappedPrivateBalancesSource?this.mappedPrivateBalances:(this.mappedPrivateBalancesSource=e,this.mappedPrivateBalances=i.mapPrivateBalances(e),this.mappedPrivateBalances)}get privateBalancesWithUSD(){return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD)}onPrivateBalancesWithUSDChange(e){return this.hinkalCommon.onPrivateBalancesWithUSDChange(t=>e(this.getMappedPrivateBalances(t)))}async getTotalBalance(e,t=!1,n=!1){return(await this.hinkalCommon.getTotalBalance(e,void 0,void 0,t,n)).map(i.mapTokenBalance)}async getStuckShieldedBalances(e,t=!1,n=!1){return(await this.hinkalCommon.getStuckShieldedBalances(e,void 0,void 0,t,n)).map(i.mapTokenBalance)}monitorConnectedAddress(e){return this.hinkalCommon.monitorConnectedAddress(e)}waitForTransaction(e,t,n){return this.hinkalCommon.waitForTransaction(e,t,n)}getSolanaPublicKey(){return this.hinkalCommon.getSolanaPublicKey()}getEthereumAddress(){return this.hinkalCommon.getEthereumAddress()}getEthereumAddressByChain(e){return this.hinkalCommon.getEthereumAddressByChain(e)}getRecipientInfo(){return this.hinkalCommon.getRecipientInfo()}getShieldedPublicKey(){return this.hinkalCommon.userKeys.getShieldedPublicKey()}async prooflessDeposit(e,t,r,i){return this.hinkalCommon.prooflessDeposit(await n.resolveErc20Tokens(e,t),r,i)}async prooflessDepositWithPublicFee(e,t,r,i,a){return this.hinkalCommon.prooflessDepositWithPublicFee(await n.resolveErc20Token(e,t),r,i,a)}async deposit(e,t,r,i,a){return this.hinkalCommon.deposit(await n.resolveErc20Tokens(e,t),r,i,a)}async depositSolana(e,t,r){return this.hinkalCommon.depositSolana(r,await n.resolveErc20Token(e,t))}async depositForOther(e,t,r,i,a,o){return this.hinkalCommon.depositForOther(await n.resolveErc20Tokens(e,t),r,i,a,o)}async depositSolanaForOther(e,t,r,i){return this.hinkalCommon.depositSolanaForOther(r,await n.resolveErc20Token(e,t),i)}async depositAndWithdraw(e,t,r,i,a,o,s){return this.hinkalCommon.depositAndWithdraw(await n.resolveErc20Token(e,t),r,i,a,o,void 0,void 0,void 0,s)}async depositAndBridge(e,t,r,i,a,o){return this.hinkalCommon.depositAndBridge(await n.resolveErc20Token(e,t),r,i,a,void 0,void 0,void 0,o)}async checkSendTransactionStatus(e){return this.hinkalCommon.checkSendTransactionStatus(e)}async nearDepositAndBridge(e,t,r,i,a,o,s){return this.hinkalCommon.nearDepositAndBridge(await n.resolveErc20Token(e,t),r,i,a,o,s)}async claimUtxo(e,t,r,i,a){return this.hinkalCommon.claimUtxo(await n.resolveErc20Token(e,t),r,i,a)}async transfer(e,t,r,i,a,o){return this.hinkalCommon.transfer(await n.resolveErc20Tokens(e,t),r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return this.hinkalCommon.withdraw(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async withdrawStuckUtxos(e,t,r){return this.hinkalCommon.withdrawStuckUtxos(await n.resolveErc20Token(e,t),r)}async swap(e,t,r,i,a,o,s){return this.hinkalCommon.swap(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async actionPrivateWallet(e,t,r,a,o,s,c,l,u){return this.hinkalCommon.actionPrivateWallet(e,await n.resolveErc20Tokens(e,t),r,a,o,await i.resolveCommonTokenChanges(e,s),c,l,u)}async proxySwap(e,t,r,i,a,o,s,c,l){return this.hinkalCommon.proxySwap(await n.resolveErc20Tokens(e,t),r,i,a,o,s,c,l)}async proxyToPrivate(e,t,r,i,a,o,s){return this.hinkalCommon.proxyToPrivate(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async proxySend(e,t,r,i,a,o,s){return this.hinkalCommon.proxySend(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}};exports.Hinkal=a;
1
+ const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/types/hinkal.types.cjs`);require(`../libs/shared/common/src/types/index.cjs`);const n=require(`../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`),r=require(`../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),i=require(`../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.cjs`),a=require(`../libs/shared/common/src/functions/private-wallet/emporium.helpers.cjs`);require(`../libs/shared/common/src/functions/index.cjs`);const o=require(`../libs/shared/common/src/data-structures/Hinkal/Hinkal.cjs`),s=require(`../internal/token.utils.cjs`),c=require(`../internal/swapApi.cjs`);var l=class{hinkalCommon;mappedPrivateBalancesSource;mappedPrivateBalances={};constructor(e){this.hinkalCommon=new o.Hinkal(e)}getProviderAdapter(e){return this.hinkalCommon.getProviderAdapter(e)}initProviderAdapter(e,t){return this.hinkalCommon.initProviderAdapter(e,t)}initUserKeys(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeys(e)}initUserKeysWithSignature(e){return this.hinkalCommon.initUserKeysWithSignature(e)}initUserKeysFromSeedPhrases(e){return this.hinkalCommon.initUserKeysFromSeedPhrases(e)}initUserKeysWithEnclaveSignature(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeysWithEnclaveSignature(e)}storeAndGetInitialSignature(e,t=!1,n){return this.hinkalCommon.storeAndGetInitialSignature(e,t,n)}resetProviderAdapters(){return this.hinkalCommon.resetProviderAdapters()}disconnectFromConnector(){return this.hinkalCommon.disconnectFromConnector()}destroy(){return this.hinkalCommon.destroy()}signMessage(e){return this.hinkalCommon.signMessage(e)}signTypedData(e,t,n){return this.hinkalCommon.signTypedData(e,t,n)}getSupportedChains(){return this.hinkalCommon.getSupportedChains()}isSelectedNetworkSupported(e){return this.hinkalCommon.isSelectedNetworkSupported(e)}switchNetwork(t){let n=e.networkRegistry[t];if(!n)throw Error(`Network with chainId ${t} not supported`);return this.hinkalCommon.switchNetwork(n)}resetMerkle(e){return this.hinkalCommon.resetMerkle(e)}resetMerkleTreesIfNecessary(e){return this.hinkalCommon.resetMerkleTreesIfNecessary(e)}getMappedPrivateBalances(e){return e===this.mappedPrivateBalancesSource?this.mappedPrivateBalances:(this.mappedPrivateBalancesSource=e,this.mappedPrivateBalances=s.mapPrivateBalances(e),this.mappedPrivateBalances)}get privateBalancesWithUSD(){return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD)}onPrivateBalancesWithUSDChange(e){return this.hinkalCommon.onPrivateBalancesWithUSDChange(t=>e(this.getMappedPrivateBalances(t)))}refreshBalance(e){i.balanceChangedHandler.dispatch(e)}async getTotalBalance(e,t=!1,n=!1){return(await this.hinkalCommon.getTotalBalance(e,void 0,void 0,t,n)).map(s.mapTokenBalance)}async getStuckShieldedBalances(e,t=!1,n=!1){return(await this.hinkalCommon.getStuckShieldedBalances(e,void 0,void 0,t,n)).map(s.mapTokenBalance)}monitorConnectedAddress(e){return this.hinkalCommon.monitorConnectedAddress(e)}waitForTransaction(e,t,n){return this.hinkalCommon.waitForTransaction(e,t,n)}getFeeStructure(e,t,n,i,a=[],o=0n,s){return r.getFeeStructure(e,t,n,i,a,o,s)}getEvmSwapPrices(e,t,n,r){return c.getEvmSwapPrices(this,e,t,n,r)}getSolanaSwapPrices(e,t,n,r){return c.getSolanaSwapPrices(e,t,n,r)}getSolanaPublicKey(){return this.hinkalCommon.getSolanaPublicKey()}getEthereumAddress(){return this.hinkalCommon.getEthereumAddress()}getEthereumAddressByChain(e){return this.hinkalCommon.getEthereumAddressByChain(e)}getRecipientInfo(){return this.hinkalCommon.getRecipientInfo()}getShieldedPublicKey(){return this.hinkalCommon.userKeys.getShieldedPublicKey()}async prooflessDeposit(e,t,r,i){return this.hinkalCommon.prooflessDeposit(await n.resolveErc20Tokens(e,t),r,i)}async prooflessDepositWithPublicFee(e,t,r,i,a){return this.hinkalCommon.prooflessDepositWithPublicFee(await n.resolveErc20Token(e,t),r,i,a)}async deposit(e,t,r,i,a){return this.hinkalCommon.deposit(await n.resolveErc20Tokens(e,t),r,i,a)}async depositSolana(e,t,r){return this.hinkalCommon.depositSolana(r,await n.resolveErc20Token(e,t))}async depositForOther(e,t,r,i,a,o){return this.hinkalCommon.depositForOther(await n.resolveErc20Tokens(e,t),r,i,a,o)}async depositSolanaForOther(e,t,r,i){return this.hinkalCommon.depositSolanaForOther(r,await n.resolveErc20Token(e,t),i)}async depositAndWithdraw(e,t,r,i,a,o,s){return this.hinkalCommon.depositAndWithdraw(await n.resolveErc20Token(e,t),r,i,a,o,void 0,void 0,void 0,s)}async depositAndBridge(e,t,r,i,a,o){return this.hinkalCommon.depositAndBridge(await n.resolveErc20Token(e,t),r,i,a,void 0,void 0,void 0,o)}async checkSendTransactionStatus(e){return this.hinkalCommon.checkSendTransactionStatus(e)}async nearDepositAndBridge(e,t,r,i,a,o,s){return this.hinkalCommon.nearDepositAndBridge(await n.resolveErc20Token(e,t),r,i,a,o,s)}async claimUtxo(e,t,r,i,a){return this.hinkalCommon.claimUtxo(await n.resolveErc20Token(e,t),r,i,a)}async transfer(e,t,r,i,a,o){return this.hinkalCommon.transfer(await n.resolveErc20Tokens(e,t),r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return this.hinkalCommon.withdraw(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async withdrawStuckUtxos(e,t,r){return this.hinkalCommon.withdrawStuckUtxos(await n.resolveErc20Token(e,t),r)}async swap(e,t,r,i,a,o,s){return this.hinkalCommon.swap(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}emporiumOp(e,t,n,r,i,o){return a.emporiumOp({contract:e,func:t,args:n,callDataString:r,invokeWallet:i,value:o})}async actionPrivateWallet(e,t,r,i,a,o,c,l,u){return this.hinkalCommon.actionPrivateWallet(e,await n.resolveErc20Tokens(e,t),r,i,a,await s.resolveCommonTokenChanges(e,o),c,l,u)}async proxySwap(e,t,r,i,a,o,s,c,l){return this.hinkalCommon.proxySwap(await n.resolveErc20Tokens(e,t),r,i,a,o,s,c,l)}async proxyToPrivate(e,t,r,i,a,o,s){return this.hinkalCommon.proxyToPrivate(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async proxySend(e,t,r,i,a,o,s){return this.hinkalCommon.proxySend(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}};exports.Hinkal=l;
@@ -1,9 +1,9 @@
1
- import { BridgeRecipient, ExternalActionId, FeeStructure, HinkalConfig, LoginMessageMode, NearBridgeParams, NearBridgeResult, StealthAddressStructure, SubAccount, DepositAndSendExtendedResult } from '../common/src/types';
1
+ import { BridgeRecipient, CallInfo, ExternalActionId, FeeStructure, HinkalConfig, LoginMessageMode, NearBridgeParams, NearBridgeResult, SolanaTransactionParams, StealthAddressStructure, SubAccount, DepositAndSendExtendedResult } from '../common/src/types';
2
2
  import { ethers, TypedDataDomain, TypedDataField } from 'ethers';
3
3
  import { Types as TronWebTypes } from 'tronweb';
4
4
  import { Utxo } from '../common/src/data-structures/utxo/Utxo';
5
5
  import { PublicKey } from '@solana/web3.js';
6
- import { IHinkal, IProviderAdapter, PrivateBalancesState, TokenBalance, TokenChanges } from '../types';
6
+ import { EvmSwapPrices, IHinkal, IProviderAdapter, PrivateBalancesState, PrivateBalanceUpdateEventType, SolanaSwapPrices, TokenBalance, TokenChanges } from '../types';
7
7
  import { ScheduledTransactionByIdResponse } from '../common/src/API';
8
8
  export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
9
9
  private readonly hinkalCommon;
@@ -15,6 +15,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
15
15
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
16
16
  initUserKeysWithSignature(signature: string): void;
17
17
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
18
+ initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
18
19
  storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
19
20
  resetProviderAdapters(): Promise<void>;
20
21
  disconnectFromConnector(): Promise<void>;
@@ -29,10 +30,14 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
29
30
  private getMappedPrivateBalances;
30
31
  get privateBalancesWithUSD(): PrivateBalancesState;
31
32
  onPrivateBalancesWithUSDChange(callback: (state: PrivateBalancesState) => void): () => void;
33
+ refreshBalance(detail: PrivateBalanceUpdateEventType): void;
32
34
  getTotalBalance(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
33
35
  getStuckShieldedBalances(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
34
36
  monitorConnectedAddress(chainId: number): Promise<void>;
35
37
  waitForTransaction(chainId: number, transactionHash: string, confirmations?: number): Promise<boolean>;
38
+ getFeeStructure(chainId: number, feeTokenAddress: string | undefined, erc20Addresses: string[], externalActionId: ExternalActionId, calls?: CallInfo[], variableRate?: bigint, solanaTransactionParams?: SolanaTransactionParams): Promise<FeeStructure>;
39
+ getEvmSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<EvmSwapPrices>;
40
+ getSolanaSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<SolanaSwapPrices>;
36
41
  getSolanaPublicKey(): PublicKey;
37
42
  getEthereumAddress(): Promise<string>;
38
43
  getEthereumAddressByChain(chainId: number): Promise<string>;
@@ -53,6 +58,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
53
58
  withdraw(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], recipientAddress: string, isRelayerOff: boolean, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<ethers.TransactionResponse | string>;
54
59
  withdrawStuckUtxos(chainId: number, erc20Address: string, recipientAddress: string): Promise<string[]>;
55
60
  swap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
61
+ emporiumOp(contract: ethers.Contract | string, func?: string, args?: unknown[], callDataString?: string, invokeWallet?: boolean, value?: bigint): string;
56
62
  actionPrivateWallet(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
57
63
  proxySwap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
58
64
  proxyToPrivate(chainId: number, erc20Addresses: string[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
@@ -2,16 +2,20 @@ import { networkRegistry as e } from "../libs/shared/common/src/constants/chains
2
2
  import { LoginMessageMode as t } from "../libs/shared/common/src/types/hinkal.types.mjs";
3
3
  import "../libs/shared/common/src/types/index.mjs";
4
4
  import { resolveErc20Token as n, resolveErc20Tokens as r } from "../libs/shared/common/src/functions/utils/erc20tokenFunctions.mjs";
5
+ import { getFeeStructure as i } from "../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
6
+ import { balanceChangedHandler as a } from "../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.mjs";
7
+ import { emporiumOp as o } from "../libs/shared/common/src/functions/private-wallet/emporium.helpers.mjs";
5
8
  import "../libs/shared/common/src/functions/index.mjs";
6
- import { Hinkal as i } from "../libs/shared/common/src/data-structures/Hinkal/Hinkal.mjs";
7
- import { mapPrivateBalances as a, mapTokenBalance as o, resolveCommonTokenChanges as s } from "../internal/token.utils.mjs";
9
+ import { Hinkal as s } from "../libs/shared/common/src/data-structures/Hinkal/Hinkal.mjs";
10
+ import { mapPrivateBalances as c, mapTokenBalance as l, resolveCommonTokenChanges as u } from "../internal/token.utils.mjs";
11
+ import { getEvmSwapPrices as d, getSolanaSwapPrices as f } from "../internal/swapApi.mjs";
8
12
  //#region libs/shared/sdk/src/services/Hinkal.ts
9
- var c = class {
13
+ var p = class {
10
14
  hinkalCommon;
11
15
  mappedPrivateBalancesSource;
12
16
  mappedPrivateBalances = {};
13
17
  constructor(e) {
14
- this.hinkalCommon = new i(e);
18
+ this.hinkalCommon = new s(e);
15
19
  }
16
20
  getProviderAdapter(e) {
17
21
  return this.hinkalCommon.getProviderAdapter(e);
@@ -28,6 +32,9 @@ var c = class {
28
32
  initUserKeysFromSeedPhrases(e) {
29
33
  return this.hinkalCommon.initUserKeysFromSeedPhrases(e);
30
34
  }
35
+ initUserKeysWithEnclaveSignature(e = t.PROTOCOL) {
36
+ return this.hinkalCommon.initUserKeysWithEnclaveSignature(e);
37
+ }
31
38
  storeAndGetInitialSignature(e, t = !1, n) {
32
39
  return this.hinkalCommon.storeAndGetInitialSignature(e, t, n);
33
40
  }
@@ -64,7 +71,7 @@ var c = class {
64
71
  return this.hinkalCommon.resetMerkleTreesIfNecessary(e);
65
72
  }
66
73
  getMappedPrivateBalances(e) {
67
- return e === this.mappedPrivateBalancesSource ? this.mappedPrivateBalances : (this.mappedPrivateBalancesSource = e, this.mappedPrivateBalances = a(e), this.mappedPrivateBalances);
74
+ return e === this.mappedPrivateBalancesSource ? this.mappedPrivateBalances : (this.mappedPrivateBalancesSource = e, this.mappedPrivateBalances = c(e), this.mappedPrivateBalances);
68
75
  }
69
76
  get privateBalancesWithUSD() {
70
77
  return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD);
@@ -72,11 +79,14 @@ var c = class {
72
79
  onPrivateBalancesWithUSDChange(e) {
73
80
  return this.hinkalCommon.onPrivateBalancesWithUSDChange((t) => e(this.getMappedPrivateBalances(t)));
74
81
  }
82
+ refreshBalance(e) {
83
+ a.dispatch(e);
84
+ }
75
85
  async getTotalBalance(e, t = !1, n = !1) {
76
- return (await this.hinkalCommon.getTotalBalance(e, void 0, void 0, t, n)).map(o);
86
+ return (await this.hinkalCommon.getTotalBalance(e, void 0, void 0, t, n)).map(l);
77
87
  }
78
88
  async getStuckShieldedBalances(e, t = !1, n = !1) {
79
- return (await this.hinkalCommon.getStuckShieldedBalances(e, void 0, void 0, t, n)).map(o);
89
+ return (await this.hinkalCommon.getStuckShieldedBalances(e, void 0, void 0, t, n)).map(l);
80
90
  }
81
91
  monitorConnectedAddress(e) {
82
92
  return this.hinkalCommon.monitorConnectedAddress(e);
@@ -84,6 +94,15 @@ var c = class {
84
94
  waitForTransaction(e, t, n) {
85
95
  return this.hinkalCommon.waitForTransaction(e, t, n);
86
96
  }
97
+ getFeeStructure(e, t, n, r, a = [], o = 0n, s) {
98
+ return i(e, t, n, r, a, o, s);
99
+ }
100
+ getEvmSwapPrices(e, t, n, r) {
101
+ return d(this, e, t, n, r);
102
+ }
103
+ getSolanaSwapPrices(e, t, n, r) {
104
+ return f(e, t, n, r);
105
+ }
87
106
  getSolanaPublicKey() {
88
107
  return this.hinkalCommon.getSolanaPublicKey();
89
108
  }
@@ -144,8 +163,18 @@ var c = class {
144
163
  async swap(e, t, n, i, a, o, s) {
145
164
  return this.hinkalCommon.swap(await r(e, t), n, i, a, o, s);
146
165
  }
147
- async actionPrivateWallet(e, t, n, i, a, o, c, l, u) {
148
- return this.hinkalCommon.actionPrivateWallet(e, await r(e, t), n, i, a, await s(e, o), c, l, u);
166
+ emporiumOp(e, t, n, r, i, a) {
167
+ return o({
168
+ contract: e,
169
+ func: t,
170
+ args: n,
171
+ callDataString: r,
172
+ invokeWallet: i,
173
+ value: a
174
+ });
175
+ }
176
+ async actionPrivateWallet(e, t, n, i, a, o, s, c, l) {
177
+ return this.hinkalCommon.actionPrivateWallet(e, await r(e, t), n, i, a, await u(e, o), s, c, l);
149
178
  }
150
179
  async proxySwap(e, t, n, i, a, o, s, c, l) {
151
180
  return this.hinkalCommon.proxySwap(await r(e, t), n, i, a, o, s, c, l);
@@ -158,4 +187,4 @@ var c = class {
158
187
  }
159
188
  };
160
189
  //#endregion
161
- export { c as Hinkal };
190
+ export { p as Hinkal };
@@ -1,11 +1,12 @@
1
- import { BridgeRecipient, DepositAndSendExtendedResult, ExternalActionId, FeeStructure, LoginMessageMode, NearBridgeParams, NearBridgeResult, StealthAddressStructure, SubAccount } from '../common/src/types';
1
+ import { BridgeRecipient, CallInfo, DepositAndSendExtendedResult, ExternalActionId, FeeStructure, LoginMessageMode, NearBridgeParams, NearBridgeResult, SolanaTransactionParams, StealthAddressStructure, SubAccount } from '../common/src/types';
2
2
  import { ethers, TypedDataDomain, TypedDataField } from 'ethers';
3
3
  import { Types as TronWebTypes } from 'tronweb';
4
4
  import { Utxo } from '../common/src/data-structures/utxo/Utxo';
5
5
  import { PublicKey } from '@solana/web3.js';
6
6
  import { IProviderAdapter } from './IProviderAdapter';
7
- import { PrivateBalancesState, TokenBalance } from './balances.types';
7
+ import { PrivateBalancesState, PrivateBalanceUpdateEventType, TokenBalance } from './balances.types';
8
8
  import { TokenChanges } from './token.types';
9
+ import { EvmSwapPrices, SolanaSwapPrices } from './swap.types';
9
10
  import { ScheduledTransactionByIdResponse } from '../common/src/API';
10
11
  export interface IHinkal<ConnectorType = unknown> {
11
12
  getProviderAdapter(chainId?: number): IProviderAdapter;
@@ -13,6 +14,7 @@ export interface IHinkal<ConnectorType = unknown> {
13
14
  initUserKeys(mode?: LoginMessageMode): Promise<void>;
14
15
  initUserKeysWithSignature(signature: string): void;
15
16
  initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
17
+ initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
16
18
  storeAndGetInitialSignature(authSignature: string, isSolanaLedger: boolean, txMessageForSolanaLedger?: string): Promise<string>;
17
19
  resetProviderAdapters(): Promise<void>;
18
20
  disconnectFromConnector(): Promise<void>;
@@ -27,10 +29,14 @@ export interface IHinkal<ConnectorType = unknown> {
27
29
  privateBalancesWithUSD: PrivateBalancesState;
28
30
  /** Returns unsubscribe. Multiple listeners supported. */
29
31
  onPrivateBalancesWithUSDChange(callback: (state: PrivateBalancesState) => void): () => void;
32
+ refreshBalance(detail: PrivateBalanceUpdateEventType): void;
30
33
  getTotalBalance(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
31
34
  getStuckShieldedBalances(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
32
35
  monitorConnectedAddress(chainId: number): Promise<void>;
33
36
  waitForTransaction(chainId: number, transactionHash: string, confirmations?: number): Promise<boolean>;
37
+ getFeeStructure(chainId: number, feeTokenAddress: string | undefined, erc20Addresses: string[], externalActionId: ExternalActionId, calls?: CallInfo[], variableRate?: bigint, solanaTransactionParams?: SolanaTransactionParams): Promise<FeeStructure>;
38
+ getEvmSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<EvmSwapPrices>;
39
+ getSolanaSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<SolanaSwapPrices>;
34
40
  getSolanaPublicKey(): PublicKey;
35
41
  getEthereumAddress(): Promise<string>;
36
42
  getEthereumAddressByChain(chainId: number): Promise<string>;
@@ -51,6 +57,7 @@ export interface IHinkal<ConnectorType = unknown> {
51
57
  withdraw(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], recipientAddress: string, isRelayerOff: boolean, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<ethers.TransactionResponse | string>;
52
58
  withdrawStuckUtxos(chainId: number, erc20Address: string, recipientAddress: string): Promise<string[]>;
53
59
  swap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
60
+ emporiumOp: (contract: ethers.Contract | string, func?: string, args?: unknown[], callDataString?: string, invokeWallet?: boolean, value?: bigint) => string;
54
61
  actionPrivateWallet(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
55
62
  proxySwap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
56
63
  proxyToPrivate(chainId: number, erc20Addresses: string[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
package/types/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export * from './IProviderAdapter';
3
3
  export * from './fee.types';
4
4
  export * from './balances.types';
5
5
  export * from './external-action.types';
6
+ export * from './swap.types';
6
7
  export * from './token.types';
@@ -0,0 +1,25 @@
1
+ type UniswapSwapPrice = {
2
+ tokenPrice: bigint;
3
+ poolFee: string;
4
+ };
5
+ type OdosSwapPrice = {
6
+ outSwapAmountValue: bigint;
7
+ odosDataValue: string;
8
+ };
9
+ type OneInchSwapPrice = {
10
+ outSwapAmountValue: bigint;
11
+ oneInchDataValue: string;
12
+ };
13
+ type OkxSwapPrice = {
14
+ outSwapAmountValue: bigint;
15
+ okxDataValue: string;
16
+ };
17
+ export type EvmSwapPrices = {
18
+ uniswap: UniswapSwapPrice | null;
19
+ odos: OdosSwapPrice | null;
20
+ oneInch: OneInchSwapPrice | null;
21
+ };
22
+ export type SolanaSwapPrices = {
23
+ okx: OkxSwapPrice | null;
24
+ };
25
+ export {};
@@ -1 +0,0 @@
1
- require(`../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),require(`../libs/shared/common/src/crypto/preProcessing.cjs`),require(`./utils/refreshBalance.cjs`),require(`./utils/index.cjs`),require(`./integrations/swapApi.cjs`),require(`./integrations/index.cjs`);
@@ -1,2 +0,0 @@
1
- export * from './utils';
2
- export * from './integrations';
@@ -1,6 +0,0 @@
1
- import "../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
2
- import "../libs/shared/common/src/crypto/preProcessing.mjs";
3
- import "./utils/refreshBalance.mjs";
4
- import "./utils/index.mjs";
5
- import "./integrations/swapApi.mjs";
6
- import "./integrations/index.mjs";
@@ -1 +0,0 @@
1
- require(`./swapApi.cjs`);
@@ -1 +0,0 @@
1
- export * from './swapApi';
@@ -1 +0,0 @@
1
- import "./swapApi.mjs";
@@ -1 +0,0 @@
1
- const e=require(`../../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`),t=require(`../../libs/shared/common/src/functions/utils/process.utils.cjs`),n=require(`../../libs/shared/common/src/functions/web3/uniswapAPI.cjs`),r=require(`../../libs/shared/common/src/functions/web3/odosAPI.cjs`),i=require(`../../libs/shared/common/src/functions/web3/oneInchAPI.cjs`),a=require(`../../libs/shared/common/src/functions/web3/okxAPI.cjs`);require(`../../libs/shared/common/src/functions/index.cjs`);var o=async(t,r,i,a,o)=>{let s=t.hinkalCommon,[c,l]=await e.resolveErc20Tokens(r,[a,o]);return n.getUniswapPrice(s,r,i,c,l)},s=async(n,a,s,c,l)=>{let[u,d]=await e.resolveErc20Tokens(a,[c,l]),[f,p,m]=await Promise.allSettled([t.withTimeout(o(n,a,s,c,l)),t.withTimeout(r.getOdosPrice(a,u,d,s)),t.withTimeout(i.getOneInchPrice(a,u,d,s))]);return{uniswap:f.status===`fulfilled`?f.value:null,odos:p.status===`fulfilled`?p.value:null,oneInch:m.status===`fulfilled`?m.value:null}},c=async(n,r,i,o)=>{let[s,c]=await e.resolveErc20Tokens(n,[i,o]);try{return{okx:await t.withTimeout(a.getOKXPrice(n,s,c,r))}}catch{return{okx:null}}};exports.getEvmSwapPrices=s,exports.getSolanaSwapPrices=c;
@@ -1,23 +0,0 @@
1
- import { IHinkal } from '../../types';
2
- export declare const getEvmSwapPrices: (hinkal: IHinkal, chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<{
3
- uniswap: {
4
- tokenPrice: bigint;
5
- poolFee: string;
6
- } | null;
7
- odos: {
8
- outSwapAmountValue: bigint;
9
- odosDataValue: string;
10
- } | null;
11
- oneInch: {
12
- outSwapAmountValue: bigint;
13
- oneInchDataValue: string;
14
- } | null;
15
- }>;
16
- export declare const getSolanaSwapPrices: (chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<{
17
- okx: {
18
- outSwapAmountValue: bigint;
19
- okxDataValue: string;
20
- };
21
- } | {
22
- okx: null;
23
- }>;
@@ -1,32 +0,0 @@
1
- import { resolveErc20Tokens as e } from "../../libs/shared/common/src/functions/utils/erc20tokenFunctions.mjs";
2
- import { withTimeout as t } from "../../libs/shared/common/src/functions/utils/process.utils.mjs";
3
- import { getUniswapPrice as n } from "../../libs/shared/common/src/functions/web3/uniswapAPI.mjs";
4
- import { getOdosPrice as r } from "../../libs/shared/common/src/functions/web3/odosAPI.mjs";
5
- import { getOneInchPrice as i } from "../../libs/shared/common/src/functions/web3/oneInchAPI.mjs";
6
- import { getOKXPrice as a } from "../../libs/shared/common/src/functions/web3/okxAPI.mjs";
7
- import "../../libs/shared/common/src/functions/index.mjs";
8
- //#region libs/shared/sdk/src/functions/integrations/swapApi.ts
9
- var o = async (t, r, i, a, o) => {
10
- let s = t.hinkalCommon, [c, l] = await e(r, [a, o]);
11
- return n(s, r, i, c, l);
12
- }, s = async (n, a, s, c, l) => {
13
- let [u, d] = await e(a, [c, l]), [f, p, m] = await Promise.allSettled([
14
- t(o(n, a, s, c, l)),
15
- t(r(a, u, d, s)),
16
- t(i(a, u, d, s))
17
- ]);
18
- return {
19
- uniswap: f.status === "fulfilled" ? f.value : null,
20
- odos: p.status === "fulfilled" ? p.value : null,
21
- oneInch: m.status === "fulfilled" ? m.value : null
22
- };
23
- }, c = async (n, r, i, o) => {
24
- let [s, c] = await e(n, [i, o]);
25
- try {
26
- return { okx: await t(a(n, s, c, r)) };
27
- } catch {
28
- return { okx: null };
29
- }
30
- };
31
- //#endregion
32
- export { s as getEvmSwapPrices, c as getSolanaSwapPrices };
@@ -1 +0,0 @@
1
- require(`../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`);
@@ -1 +0,0 @@
1
- export { getFeeStructure } from '../../common/src/functions/pre-transaction/getFeeStructure';
@@ -1 +0,0 @@
1
- import "../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
@@ -1 +0,0 @@
1
- require(`../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),require(`../../libs/shared/common/src/crypto/preProcessing.cjs`),require(`./getFeeStructure.cjs`),require(`./refreshBalance.cjs`),require(`./preProcessing.cjs`);
@@ -1,3 +0,0 @@
1
- export * from './getFeeStructure';
2
- export * from './refreshBalance';
3
- export * from './preProcessing';
@@ -1,5 +0,0 @@
1
- import "../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
2
- import "../../libs/shared/common/src/crypto/preProcessing.mjs";
3
- import "./getFeeStructure.mjs";
4
- import "./refreshBalance.mjs";
5
- import "./preProcessing.mjs";
@@ -1 +0,0 @@
1
- require(`../../libs/shared/common/src/crypto/preProcessing.cjs`);
@@ -1 +0,0 @@
1
- export { preProcessing } from '../../common/src/crypto/preProcessing';
@@ -1 +0,0 @@
1
- import "../../libs/shared/common/src/crypto/preProcessing.mjs";
@@ -1 +0,0 @@
1
- const e=require(`../../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.cjs`);var t=t=>{e.balanceChangedHandler.dispatch(t)};exports.refreshBalance=t;
@@ -1,2 +0,0 @@
1
- import { PrivateBalanceUpdateEventType } from '../../types/balances.types';
2
- export declare const refreshBalance: (detail: PrivateBalanceUpdateEventType) => void;
@@ -1,7 +0,0 @@
1
- import { balanceChangedHandler as e } from "../../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.mjs";
2
- //#region libs/shared/sdk/src/functions/utils/refreshBalance.ts
3
- var t = (t) => {
4
- e.dispatch(t);
5
- };
6
- //#endregion
7
- export { t as refreshBalance };