@hinkal/common 0.2.36 → 0.2.37

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 (70) hide show
  1. package/API/enclaveUtxoCalls.cjs +1 -1
  2. package/API/enclaveUtxoCalls.mjs +6 -7
  3. package/constants/events.constants.cjs +1 -1
  4. package/constants/events.constants.mjs +3 -1
  5. package/constants/server.constants.cjs +1 -1
  6. package/constants/server.constants.d.ts +1 -1
  7. package/constants/server.constants.mjs +1 -1
  8. package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.cjs +1 -1
  9. package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.mjs +13 -13
  10. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  11. package/data-structures/Hinkal/Hinkal.d.ts +5 -0
  12. package/data-structures/Hinkal/Hinkal.mjs +114 -104
  13. package/data-structures/Hinkal/IHinkal.d.ts +5 -0
  14. package/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  15. package/data-structures/Hinkal/hinkalDepositAndBridge.d.ts +2 -2
  16. package/data-structures/Hinkal/hinkalDepositAndBridge.mjs +8 -5
  17. package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  18. package/data-structures/Hinkal/hinkalDepositAndWithdraw.d.ts +2 -2
  19. package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +4 -1
  20. package/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -1
  21. package/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +1 -1
  22. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  23. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
  24. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +4 -1
  25. package/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
  26. package/data-structures/Hinkal/resetMerkleTrees.mjs +12 -12
  27. package/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +1 -1
  28. package/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +3 -2
  29. package/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
  30. package/data-structures/TokenDBs/EventsPublicTokensDB.d.ts +0 -1
  31. package/data-structures/TokenDBs/EventsPublicTokensDB.mjs +27 -36
  32. package/data-structures/TokenDBs/PublicTokensDB.cjs +1 -1
  33. package/data-structures/TokenDBs/PublicTokensDB.mjs +22 -20
  34. package/data-structures/TokenDBs/TronPublicTokensDB.cjs +1 -0
  35. package/data-structures/TokenDBs/TronPublicTokensDB.d.ts +9 -0
  36. package/data-structures/TokenDBs/TronPublicTokensDB.mjs +47 -0
  37. package/data-structures/TokenDBs/index.cjs +1 -1
  38. package/data-structures/TokenDBs/index.d.ts +1 -0
  39. package/data-structures/TokenDBs/index.mjs +1 -0
  40. package/data-structures/index.cjs +1 -1
  41. package/data-structures/index.mjs +1 -0
  42. package/functions/index.cjs +1 -1
  43. package/functions/index.mjs +1 -0
  44. package/functions/pre-transaction/sendV0Transaction.cjs +2 -2
  45. package/functions/pre-transaction/sendV0Transaction.mjs +69 -57
  46. package/functions/snarkjs/common.snarkjs.cjs +1 -1
  47. package/functions/snarkjs/common.snarkjs.mjs +2 -2
  48. package/functions/snarkjs/constant.cjs +1 -1
  49. package/functions/snarkjs/constant.mjs +1 -1
  50. package/functions/utils/enclaveHandshakeService.cjs +1 -0
  51. package/functions/utils/enclaveHandshakeService.d.ts +10 -0
  52. package/functions/utils/enclaveHandshakeService.mjs +22 -0
  53. package/functions/utils/encryptInputForEnclave.cjs +1 -1
  54. package/functions/utils/encryptInputForEnclave.mjs +23 -25
  55. package/functions/utils/index.cjs +1 -1
  56. package/functions/utils/index.d.ts +1 -0
  57. package/functions/utils/index.mjs +1 -0
  58. package/functions/utils/tron.utils.cjs +1 -1
  59. package/functions/utils/tron.utils.d.ts +1 -0
  60. package/functions/utils/tron.utils.mjs +1 -1
  61. package/index.cjs +1 -1
  62. package/index.mjs +183 -181
  63. package/package.json +1 -1
  64. package/types/cache.types.cjs +1 -1
  65. package/types/cache.types.d.ts +1 -0
  66. package/types/cache.types.mjs +1 -1
  67. package/types/scheduled-transactions.types.d.ts +4 -0
  68. package/webworker/package.json +1 -1
  69. package/webworker/viteWorkerURL.constant.cjs +3 -3
  70. package/webworker/viteWorkerURL.constant.mjs +3 -3
@@ -154,7 +154,10 @@ var N = (e, r, i, a) => {
154
154
  }), F;
155
155
  }, L = async (t, n, r, o, s, c, l, u, d, p) => {
156
156
  let m = f([n]), h = n.erc20TokenAddress, g = i(await t.getEthereumAddressByChain(m)), _ = d ? a(d) : void 0, v = c ?? await x(m, h, [h], e.Transact, [], 5n), { userDepositedUtxos: y, depositTxHash: b, statusId: C } = await F(t, m, n, r, o, v, g);
157
- return await S(t, m, y), await I(t, m, n, y, v, g, r, C, s, l, u, _, p), b;
157
+ return await S(t, m, y), {
158
+ depositTxHash: b,
159
+ scheduleId: await I(t, m, n, y, v, g, r, C, s, l, u, _, p)
160
+ };
158
161
  };
159
162
  //#endregion
160
163
  export { P as buildMultiPaymentDepositBuilder, N as buildMultiPaymentDepositSetup, L as hinkalSolanaDepositAndWithdraw, I as hinkalSolanaWithdrawBatch };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/ethereum-network.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/mutexes.utils.cjs`),a=require(`../../functions/utils/create-provider.cjs`),o=require(`../../functions/utils/getContractAddress.cjs`),s=require(`../../functions/web3/events/balanceChangedHandler.cjs`),c=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),l=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const u=require(`../snapshot/SnapshotFetcherService.cjs`),d=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),p=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let h=require(`async-mutex`),g=require(`@solana/web3.js`);var _=new Map,v=e=>{let t=_.get(e);return t||(t=new h.Mutex,_.set(e,t)),t},y=async(h,_)=>{let y=(_??h.getSupportedChains()).map(_=>v(_).runExclusive(async()=>{h.commitmentsSnapshotServiceByChain[_]?.intervalClear(),h.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=t.networkRegistry[_],x;if(t.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new l.ClientSolanaBlockchainEventEmitter(_,a.createCustomSolanaConnection(y),new g.PublicKey(e),0,i.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new u.SnapshotFetcherService(_,e);h.commitmentsSnapshotServiceByChain[_]=new d.ClientSolanaCommitmentsSnapshotService(x,n),h.nullifierSnapshotServiceByChain[_]=new f.ClientSolanaNullifierSnapshotService(x,n)}else{let t=h.getContractWithFetcherByChainId(_,e.ContractType.HinkalContract),n=h.getContractWithFetcherByChainId(_,e.ContractType.DepositOnChainUtxos),a=i.getChainBalanceFetchingMutex(_);x=new c.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,t,0,a,v,n);let s=new u.SnapshotFetcherService(_,o.getContractAddress(t));h.commitmentsSnapshotServiceByChain[_]=new p.ClientCommitmentsSnapshotService(x,s),h.nullifierSnapshotServiceByChain[_]=new m.ClientNullifierSnapshotService(x,s)}let S=h.commitmentsSnapshotServiceByChain[_],C=h.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),h.merkleTreeHinkalByChain[_]=S.merkleTree,h.nullifiersByChain[_]=C.nullifiers,h.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&s.balanceChangedHandler({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(y)};exports.resetMerkleTrees=y;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/ethereum-network.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/mutexes.utils.cjs`),a=require(`../../functions/utils/create-provider.cjs`),o=require(`../../functions/utils/getContractAddress.cjs`),s=require(`../../functions/web3/events/balanceChangedHandler.cjs`),c=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),l=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const u=require(`../snapshot/SnapshotFetcherService.cjs`),d=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),p=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let h=require(`@solana/web3.js`),g=require(`async-mutex`);var _=new Map,v=e=>{let t=_.get(e);return t||(t=new g.Mutex,_.set(e,t)),t},y=async(g,_)=>{let y=(_??g.getSupportedChains()).map(_=>v(_).runExclusive(async()=>{g.commitmentsSnapshotServiceByChain[_]?.intervalClear(),g.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=t.networkRegistry[_],x;if(t.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new l.ClientSolanaBlockchainEventEmitter(_,a.createCustomSolanaConnection(y),new h.PublicKey(e),0,i.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new u.SnapshotFetcherService(_,e);g.commitmentsSnapshotServiceByChain[_]=new d.ClientSolanaCommitmentsSnapshotService(x,n),g.nullifierSnapshotServiceByChain[_]=new f.ClientSolanaNullifierSnapshotService(x,n)}else{let t=g.getContractWithFetcherByChainId(_,e.ContractType.HinkalContract),n=g.getContractWithFetcherByChainId(_,e.ContractType.DepositOnChainUtxos),a=i.getChainBalanceFetchingMutex(_);x=new c.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,t,0,a,v,n);let s=new u.SnapshotFetcherService(_,o.getContractAddress(t));g.commitmentsSnapshotServiceByChain[_]=new p.ClientCommitmentsSnapshotService(x,s),g.nullifierSnapshotServiceByChain[_]=new m.ClientNullifierSnapshotService(x,s)}let S=g.commitmentsSnapshotServiceByChain[_],C=g.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),g.merkleTreeHinkalByChain[_]=S.merkleTree,g.nullifiersByChain[_]=C.nullifiers,g.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&s.balanceChangedHandler({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(y)};exports.resetMerkleTrees=y;
@@ -16,33 +16,33 @@ import { ClientSolanaNullifierSnapshotService as p } from "../snapshot/solana-sn
16
16
  import { ClientCommitmentsSnapshotService as m } from "../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.mjs";
17
17
  import { ClientNullifierSnapshotService as h } from "../snapshot/evm-snapshots/ClientNullifierSnapshotService.mjs";
18
18
  import "../snapshot/index.mjs";
19
- import { Mutex as g } from "async-mutex";
20
- import { PublicKey as _ } from "@solana/web3.js";
19
+ import { PublicKey as g } from "@solana/web3.js";
20
+ import { Mutex as _ } from "async-mutex";
21
21
  //#region libs/shared/common/src/data-structures/Hinkal/resetMerkleTrees.ts
22
22
  var v = /* @__PURE__ */ new Map(), y = (e) => {
23
23
  let t = v.get(e);
24
- return t || (t = new g(), v.set(e, t)), t;
25
- }, b = async (g, v) => {
26
- let b = (v ?? g.getSupportedChains()).map((v) => y(v).runExclusive(async () => {
27
- g.commitmentsSnapshotServiceByChain[v]?.intervalClear(), g.nullifierSnapshotServiceByChain[v]?.intervalClear();
24
+ return t || (t = new _(), v.set(e, t)), t;
25
+ }, b = async (_, v) => {
26
+ let b = (v ?? _.getSupportedChains()).map((v) => y(v).runExclusive(async () => {
27
+ _.commitmentsSnapshotServiceByChain[v]?.intervalClear(), _.nullifierSnapshotServiceByChain[v]?.intervalClear();
28
28
  let { maxPageSize: y, fetchRpcUrl: b, contractData: x } = n[v], S;
29
29
  if (t(v)) {
30
30
  let e = x.hinkalAddress;
31
31
  if (!b || !e) throw Error("Fetch RPC URL or Solana program ID is not set");
32
- S = new u(v, o(b), new _(e), 0, a(v), y);
32
+ S = new u(v, o(b), new g(e), 0, a(v), y);
33
33
  let t = x.hinkalIdl;
34
34
  t && S.setIdl(t);
35
35
  let n = new d(v, e);
36
- g.commitmentsSnapshotServiceByChain[v] = new f(S, n), g.nullifierSnapshotServiceByChain[v] = new p(S, n);
36
+ _.commitmentsSnapshotServiceByChain[v] = new f(S, n), _.nullifierSnapshotServiceByChain[v] = new p(S, n);
37
37
  } else {
38
- let t = g.getContractWithFetcherByChainId(v, e.HinkalContract), n = g.getContractWithFetcherByChainId(v, e.DepositOnChainUtxos), r = a(v);
38
+ let t = _.getContractWithFetcherByChainId(v, e.HinkalContract), n = _.getContractWithFetcherByChainId(v, e.DepositOnChainUtxos), r = a(v);
39
39
  S = new l(i.MainContractEvents, v, t, 0, r, y, n);
40
40
  let o = new d(v, s(t));
41
- g.commitmentsSnapshotServiceByChain[v] = new m(S, o), g.nullifierSnapshotServiceByChain[v] = new h(S, o);
41
+ _.commitmentsSnapshotServiceByChain[v] = new m(S, o), _.nullifierSnapshotServiceByChain[v] = new h(S, o);
42
42
  }
43
- let C = g.commitmentsSnapshotServiceByChain[v], w = g.nullifierSnapshotServiceByChain[v];
43
+ let C = _.commitmentsSnapshotServiceByChain[v], w = _.nullifierSnapshotServiceByChain[v];
44
44
  if (!C || !w) throw Error(`Missing snapshot service for chain ${v}`);
45
- await Promise.all([C.init(), w.init()]), await S.init(), g.merkleTreeHinkalByChain[v] = C.merkleTree, g.nullifiersByChain[v] = w.nullifiers, g.encryptedOutputsByChain[v] = C.encryptedOutputs, S.onEventsProcessed = (e) => {
45
+ await Promise.all([C.init(), w.init()]), await S.init(), _.merkleTreeHinkalByChain[v] = C.merkleTree, _.nullifiersByChain[v] = w.nullifiers, _.encryptedOutputsByChain[v] = C.encryptedOutputs, S.onEventsProcessed = (e) => {
46
46
  e > 0 && c({
47
47
  updateType: r.FreshWithoutLoader,
48
48
  updateTokensListBefore: !0,
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/cache.types.cjs`),r=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const i=require(`../../functions/utils/caseInsensitive.utils.cjs`),a=require(`../../API/API.cjs`),o=require(`../../functions/utils/erc20tokenFunctions.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../../functions/utils/string.utils.cjs`),l=require(`./token-visibility-db.cjs`),u=require(`../../functions/utils/create-provider.cjs`),d=require(`../../functions/utils/publicBalance.utils.cjs`);let f=require(`@solana/web3.js`),p=require(`idb-keyval`),m=require(`@solana/spl-token`);var h=new class{fetchedTokens={};ALCHEMY_URLS={[e.chainIds.ethMainnet]:`eth-mainnet`,[e.chainIds.polygon]:`polygon-mainnet`,[e.chainIds.arbMainnet]:`arb-mainnet`,[e.chainIds.optimism]:`opt-mainnet`,[e.chainIds.optimismTest]:`opt-mainnet`,[e.chainIds.base]:`base-mainnet`,[e.chainIds.solanaMainnet]:`solana-mainnet`};KNOWN_GOOD_NFTS={[e.chainIds.base]:[`0x20bc8d248fe9c18a947406cea50d716828ab821f`],[e.chainIds.optimism]:[`0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e`]};isWhitelistedNFT(e,t){return this.KNOWN_GOOD_NFTS[t]?this.KNOWN_GOOD_NFTS[t].some(t=>i.caseInsensitiveEqual(e,t)):!1}async getPublicTokens(e,t){let r=c.getStateKey(t,e);return((await(0,p.get)(n.StorageKeys.ALCHEMY_PUBLIC_TOKENS))?.[r]||[]).map(t=>o.overlayTokenWithRegistryData(t,e))}getFetchedTokens(e,t){let n=c.getStateKey(t,e);return(this.fetchedTokens[n]||[]).map(t=>o.overlayTokenWithRegistryData(t,e))}fetchAndUpdatePublicTokens(t,n){return e.isSolanaLike(n)?this.fetchAndUpdateSolanaTokens(t,n):this.fetchAndUpdateEVMTokens(t,n)}async fetchAndUpdateSolanaTokens(e,t){let r=c.getStateKey(e,t),[o,s]=await Promise.all([this.getSolanaTokenAddresses(t,e),this.getNFTAddresses(t,e)]),u=Array.from(new Set([...o,...s]));if(!u.length)return;let d=(await a.API.tokensInfoCall(t,u)).filter(e=>!!e),f=await l.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(t,d),m=d.filter(e=>!i.lowerCaseIncludes(f,e.erc20TokenAddress));await(0,p.update)(n.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[r]:m};return this.fetchedTokens=t,t})}async getWalletTokenAddresses(t,n){return e.isSolanaLike(t)?this.getSolanaTokenAddresses(t,n):this.getEVMTokenAddresses(t,n)}async fetchAndUpdateEVMTokens(e,r){let o=c.getStateKey(e,r),s=await this.getEVMTokenAddresses(r,e),u=await this.getNFTTokens(r,e),d=u.map(e=>e.contractAddress),f=[...s,...d];if(!f.length)return;let m=(await a.API.tokensInfoCall(r,f)).map((e,n)=>{if(e)return e;let a=f[n],o=u.find(e=>i.caseInsensitiveEqual(e.contractAddress,a));return o&&o.tokenIds&&o.tokenIds.length>0&&this.isWhitelistedNFT(a,r)?{chainId:r,name:`Unknown NFT`,symbol:`NFT`,erc20TokenAddress:a,decimals:0,nftTokenType:t.TokenType.ERC721,tokenIds:o.tokenIds}:null}).filter(e=>!!e),h=await l.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,m),g=m.filter(e=>!i.lowerCaseIncludes(h,e.erc20TokenAddress)).map(e=>({...e,tokenIds:u.find(t=>i.caseInsensitiveEqual(t.contractAddress,e.erc20TokenAddress))?.tokenIds}));await(0,p.update)(n.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[o]:g};return this.fetchedTokens=t,t})}async getSolanaTokenAddresses(n,r){let{fetchRpcUrl:i}=e.networkRegistry[n];if(!i)throw Error(`RPC URL not found for the specified chain ID`);let a=u.createCustomSolanaConnection(i),o=await a.getBalance(new f.PublicKey(r)),[s,c]=await Promise.all([a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_PROGRAM_ID}),a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_2022_PROGRAM_ID})]),l=[...s.value,...c.value].filter(e=>{let{amount:t}=e.account.data.parsed.info.tokenAmount;return BigInt(t)>0n}).map(e=>e.account.data.parsed.info.mint);return o>0&&l.unshift(t.solanaNativeAddress),Array.from(new Set(l))}async getNFTAddresses(n,i){let{fetchRpcUrl:a}=e.networkRegistry[n];if(!a)throw Error(`RPC URL not found for the specified chain ID`);try{let e=[],n=1;do{let{items:o=[],page:s}=(await r.httpClient.post(a,{jsonrpc:`2.0`,id:1,method:`getAssetsByOwner`,params:{ownerAddress:i,page:n,limit:1e3,displayOptions:{showFungible:!1,showCollectionMetadata:!0}}})).result||{},c=o.filter(e=>e.interface&&t.SOLANA_NFT_INTERFACES.includes(e.interface)).map(e=>e.id);e.push(...c),n=s&&s>n?s:0}while(n>0);return e}catch(e){return s.Logger.error(`Failed to fetch NFTs from DAS API`,e),[]}}async getEVMTokenAddresses(n,i){let a=await d.getPublicBalanceByTokenAddress(n,i,t.zeroAddress),o=this.ALCHEMY_URLS[n];if(!o)throw Error(`Alchemy URL not found for the specified chain ID`);let s=`https://${o}.g.alchemy.com/v2/${e.ALCHEMY_API_KEY}`,c=[],l;do{let e=[i,`erc20`];l&&e.push({pageKey:l});let{result:t}=await r.httpClient.post(s,{jsonrpc:`2.0`,id:1,method:`alchemy_getTokenBalances`,params:e});c.push(...t?.tokenBalances??[]),l=t?.pageKey}while(l);a&&a>0n&&c.push({contractAddress:t.zeroAddress,tokenBalance:a.toString()});let u={};return c.forEach(e=>{(!u[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(u[e.contractAddress]=e)}),Object.keys(u)}async getNFTTokens(t,n){let i=`https://${this.ALCHEMY_URLS[t]}.g.alchemy.com/nft/v3/${e.ALCHEMY_API_KEY}/getNFTsForOwner`,a=[],o;do{let e=new URLSearchParams({owner:n,withMetadata:`false`,pageSize:`100`});o&&e.append(`pageKey`,o);let{ownedNfts:t=[],pageKey:s}=await r.httpClient.get(`${i}?${e.toString()}`);a.push(...t),o=s}while(o);let s=a.filter(({contractAddress:e,tokenId:t})=>e&&t).reduce((e,{contractAddress:t,tokenId:n})=>{let r=t.toLowerCase();return e.has(r)||e.set(r,[]),e.get(r)?.push(n),e},new Map);return Array.from(s.entries()).map(([e,t])=>({contractAddress:e,tokenIds:t}))}};exports.alchemyPublicTokensDB=h;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/cache.types.cjs`),r=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const i=require(`../../functions/utils/caseInsensitive.utils.cjs`),a=require(`../../API/API.cjs`),o=require(`../../functions/utils/erc20tokenFunctions.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../../functions/utils/string.utils.cjs`),l=require(`./token-visibility-db.cjs`),u=require(`../../functions/utils/create-provider.cjs`),d=require(`../../functions/utils/publicBalance.utils.cjs`);let f=require(`@solana/web3.js`),p=require(`idb-keyval`),m=require(`@solana/spl-token`);var h=new class{fetchedTokens={};ALCHEMY_URLS={[e.chainIds.ethMainnet]:`eth-mainnet`,[e.chainIds.polygon]:`polygon-mainnet`,[e.chainIds.arbMainnet]:`arb-mainnet`,[e.chainIds.optimism]:`opt-mainnet`,[e.chainIds.optimismTest]:`opt-mainnet`,[e.chainIds.base]:`base-mainnet`,[e.chainIds.solanaMainnet]:`solana-mainnet`,[e.chainIds.sepoliaTestnet]:`eth-sepolia`};KNOWN_GOOD_NFTS={[e.chainIds.base]:[`0x20bc8d248fe9c18a947406cea50d716828ab821f`],[e.chainIds.optimism]:[`0x3c3e0e73b53a19bcaf4178b8f9c9428fd2a2775e`]};isWhitelistedNFT(e,t){return this.KNOWN_GOOD_NFTS[t]?this.KNOWN_GOOD_NFTS[t].some(t=>i.caseInsensitiveEqual(e,t)):!1}async getPublicTokens(e,t){let r=c.getStateKey(t,e);return((await(0,p.get)(n.StorageKeys.ALCHEMY_PUBLIC_TOKENS))?.[r]||[]).map(t=>o.overlayTokenWithRegistryData(t,e))}getFetchedTokens(e,t){let n=c.getStateKey(t,e);return(this.fetchedTokens[n]||[]).map(t=>o.overlayTokenWithRegistryData(t,e))}fetchAndUpdatePublicTokens(t,n){return e.isSolanaLike(n)?this.fetchAndUpdateSolanaTokens(t,n):this.fetchAndUpdateEVMTokens(t,n)}async fetchAndUpdateSolanaTokens(e,t){let r=c.getStateKey(e,t),[o,s]=await Promise.all([this.getSolanaTokenAddresses(t,e),this.getNFTAddresses(t,e)]),u=Array.from(new Set([...o,...s]));if(!u.length)return;let d=(await a.API.tokensInfoCall(t,u)).filter(e=>!!e),f=await l.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(t,d),m=d.filter(e=>!i.lowerCaseIncludes(f,e.erc20TokenAddress));await(0,p.update)(n.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[r]:m};return this.fetchedTokens=t,t})}async getWalletTokenAddresses(t,n){return e.isSolanaLike(t)?this.getSolanaTokenAddresses(t,n):this.getEVMTokenAddresses(t,n)}async fetchAndUpdateEVMTokens(e,r){let o=c.getStateKey(e,r),s=await this.getEVMTokenAddresses(r,e),u=await this.getNFTTokens(r,e),d=u.map(e=>e.contractAddress),f=[...s,...d];if(!f.length)return;let m=(await a.API.tokensInfoCall(r,f)).map((e,n)=>{if(e)return e;let a=f[n],o=u.find(e=>i.caseInsensitiveEqual(e.contractAddress,a));return o&&o.tokenIds&&o.tokenIds.length>0&&this.isWhitelistedNFT(a,r)?{chainId:r,name:`Unknown NFT`,symbol:`NFT`,erc20TokenAddress:a,decimals:0,nftTokenType:t.TokenType.ERC721,tokenIds:o.tokenIds}:null}).filter(e=>!!e),h=await l.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,m),g=m.filter(e=>!i.lowerCaseIncludes(h,e.erc20TokenAddress)).map(e=>({...e,tokenIds:u.find(t=>i.caseInsensitiveEqual(t.contractAddress,e.erc20TokenAddress))?.tokenIds}));await(0,p.update)(n.StorageKeys.ALCHEMY_PUBLIC_TOKENS,(e={})=>{let t={...e,[o]:g};return this.fetchedTokens=t,t})}async getSolanaTokenAddresses(n,r){let{fetchRpcUrl:i}=e.networkRegistry[n];if(!i)throw Error(`RPC URL not found for the specified chain ID`);let a=u.createCustomSolanaConnection(i),o=await a.getBalance(new f.PublicKey(r)),[s,c]=await Promise.all([a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_PROGRAM_ID}),a.getParsedTokenAccountsByOwner(new f.PublicKey(r),{programId:m.TOKEN_2022_PROGRAM_ID})]),l=[...s.value,...c.value].filter(e=>{let{amount:t}=e.account.data.parsed.info.tokenAmount;return BigInt(t)>0n}).map(e=>e.account.data.parsed.info.mint);return o>0&&l.unshift(t.solanaNativeAddress),Array.from(new Set(l))}async getNFTAddresses(n,i){let{fetchRpcUrl:a}=e.networkRegistry[n];if(!a)throw Error(`RPC URL not found for the specified chain ID`);try{let e=[],n=1;do{let{items:o=[],page:s}=(await r.httpClient.post(a,{jsonrpc:`2.0`,id:1,method:`getAssetsByOwner`,params:{ownerAddress:i,page:n,limit:1e3,displayOptions:{showFungible:!1,showCollectionMetadata:!0}}})).result||{},c=o.filter(e=>e.interface&&t.SOLANA_NFT_INTERFACES.includes(e.interface)).map(e=>e.id);e.push(...c),n=s&&s>n?s:0}while(n>0);return e}catch(e){return s.Logger.error(`Failed to fetch NFTs from DAS API`,e),[]}}async getEVMTokenAddresses(n,i){let a=await d.getPublicBalanceByTokenAddress(n,i,t.zeroAddress),o=this.ALCHEMY_URLS[n];if(!o)throw Error(`Alchemy URL not found for the specified chain ID: ${n}`);let s=`https://${o}.g.alchemy.com/v2/${e.ALCHEMY_API_KEY}`,c=[],l;do{let e=[i,`erc20`];l&&e.push({pageKey:l});let{result:t}=await r.httpClient.post(s,{jsonrpc:`2.0`,id:1,method:`alchemy_getTokenBalances`,params:e});c.push(...t?.tokenBalances??[]),l=t?.pageKey}while(l);a&&a>0n&&c.push({contractAddress:t.zeroAddress,tokenBalance:a.toString()});let u={};return c.forEach(e=>{(!u[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(u[e.contractAddress]=e)}),Object.keys(u)}async getNFTTokens(t,n){let i=`https://${this.ALCHEMY_URLS[t]}.g.alchemy.com/nft/v3/${e.ALCHEMY_API_KEY}/getNFTsForOwner`,a=[],o;do{let e=new URLSearchParams({owner:n,withMetadata:`false`,pageSize:`100`});o&&e.append(`pageKey`,o);let{ownedNfts:t=[],pageKey:s}=await r.httpClient.get(`${i}?${e.toString()}`);a.push(...t),o=s}while(o);let s=a.filter(({contractAddress:e,tokenId:t})=>e&&t).reduce((e,{contractAddress:t,tokenId:n})=>{let r=t.toLowerCase();return e.has(r)||e.set(r,[]),e.get(r)?.push(n),e},new Map);return Array.from(s.entries()).map(([e,t])=>({contractAddress:e,tokenIds:t}))}};exports.alchemyPublicTokensDB=h;
@@ -23,7 +23,8 @@ var w = new class {
23
23
  [t.optimism]: "opt-mainnet",
24
24
  [t.optimismTest]: "opt-mainnet",
25
25
  [t.base]: "base-mainnet",
26
- [t.solanaMainnet]: "solana-mainnet"
26
+ [t.solanaMainnet]: "solana-mainnet",
27
+ [t.sepoliaTestnet]: "eth-sepolia"
27
28
  };
28
29
  KNOWN_GOOD_NFTS = {
29
30
  [t.base]: ["0x20bc8d248fe9c18a947406cea50d716828ab821f"],
@@ -123,7 +124,7 @@ var w = new class {
123
124
  }
124
125
  async getEVMTokenAddresses(t, n) {
125
126
  let r = await v(t, n, s), i = this.ALCHEMY_URLS[t];
126
- if (!i) throw Error("Alchemy URL not found for the specified chain ID");
127
+ if (!i) throw Error(`Alchemy URL not found for the specified chain ID: ${t}`);
127
128
  let a = `https://${i}.g.alchemy.com/v2/${e}`, o = [], c;
128
129
  do {
129
130
  let e = [n, "erc20"];
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../types/cache.types.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../API/API.cjs`),i=require(`../../functions/utils/erc20tokenFunctions.cjs`),a=require(`../../constants/events.constants.cjs`);require(`../../constants/index.cjs`);const o=require(`../../error-handling/logger.cjs`),s=require(`../../functions/utils/string.utils.cjs`),c=require(`./token-visibility-db.cjs`),l=require(`../../functions/utils/create-provider.cjs`);require(`../../functions/index.cjs`);let u=require(`async-mutex`),d=require(`ethers`),f=require(`idb-keyval`);var p=new class{fetchedTokens={};updateMutexes={};transferEventTopic=d.ethers.id(`Transfer(address,address,uint256)`);chunkSize=2e3;getMutex(e){return this.updateMutexes[e]||(this.updateMutexes[e]=new u.Mutex),this.updateMutexes[e]}withRegistryOverlay(e,t){let n=i.getERC20Token(e.erc20TokenAddress,t);return n?{...e,name:n.name,symbol:n.symbol,logoURI:n.logoURI,decimals:n.decimals}:e}async getPublicTokens(e,n){let r=s.getStateKey(n,e);return((await(0,f.get)(t.StorageKeys.EVENTS_PUBLIC_TOKENS))?.[r]||[]).map(t=>i.overlayTokenWithRegistryData(t,e))}getFetchedTokens(e,t){let n=s.getStateKey(t,e);return(this.fetchedTokens[n]||[]).map(t=>i.overlayTokenWithRegistryData(t,e))}async fetchAndUpdatePublicTokens(e,r){let i=s.getStateKey(e,r);await this.getMutex(i).runExclusive(async()=>{try{let a=(await this.getPublicTokens(r,e)).map(e=>e.erc20TokenAddress),{toEvents:o,fromEvents:s,latestBlock:l}=await this.getEvents(e,r),u=[...o,...s],{erc20Tokens:d}=await this.fetchPublicTokens(u,r,a),p=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,d),m=d.filter(e=>!n.lowerCaseIncludes(p,e.erc20TokenAddress));await(0,f.update)(t.StorageKeys.EVENTS_PUBLIC_TOKENS,(e={})=>{let t=e[i]||[],r=t.map(e=>e.erc20TokenAddress),a=m.filter(e=>!n.lowerCaseIncludes(r,e.erc20TokenAddress));t.push(...a);let c=this.updateTokenIds(s,o,t),l={...e,[i]:c};return this.fetchedTokens=l,l}),l&&await this.updateLastProcessedBlock(r,e,l)}catch(e){o.Logger.error(`public tokens db error`,e)}})}async getLastProcessedBlock(e,n){return(await(0,f.get)(t.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS)||{})[s.getStateKey(n,e)]||a.EVENTS_INITIAL_BLOCKS[e]}async updateLastProcessedBlock(e,n,r){await(0,f.update)(t.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS,(t={})=>{let i=s.getStateKey(n,e);return{...t,[i]:r}})}async getEvents(e,t){try{let n=l.createJsonRpcProvider(t),r=await this.getLastProcessedBlock(t,e)+1,i=await n.getBlockNumber(),a=d.ethers.zeroPadValue(e.toLowerCase(),32),o=[],s=[];for(let e=r;e<=i;e+=this.chunkSize){let t=Math.min(e+this.chunkSize-1,i),r={topics:[this.transferEventTopic,null,a],fromBlock:e,toBlock:t},c={topics:[this.transferEventTopic,a,null],fromBlock:e,toBlock:t},[l,u]=await Promise.all([n.getLogs(r),n.getLogs(c)]);o.push(...l),s.push(...u)}return{toEvents:o,fromEvents:s,latestBlock:i}}catch(n){return o.Logger.error(`Error fetching events:`,n,`chainId`,t,`walletAddress`,e),{toEvents:[],fromEvents:[],latestBlock:void 0}}}updateTokenIds(e,t,n){let r=new Map;return n.forEach(e=>{if(i.isNFTToken(e)&&e.tokenIds){let t=e.erc20TokenAddress.toLowerCase();r.set(t,[...e.tokenIds])}}),t.forEach(e=>{if(e.topics.length<=3)return;let t=e.address.toLowerCase(),n=BigInt(e.topics[3]).toString();r.has(t)||r.set(t,[]),r.get(t)?.push(n)}),e.forEach(e=>{if(e.topics.length<=3)return;let t=e.address.toLowerCase(),n=r.get(t);if(n?.length){let t=BigInt(e.topics[3]).toString(),r=n.indexOf(t);r!==-1&&n.splice(r,1)}}),n.forEach(e=>{if(i.isNFTToken(e)){let t=e.erc20TokenAddress.toLowerCase(),n=r.get(t);e.tokenIds=n?.length&&n.length>0?n:void 0}}),n}async fetchPublicTokens(t,i,a){try{let o=[e.zeroAddress,...new Set(t.map(e=>e.address))].filter(e=>e&&!n.lowerCaseIncludes(a,e));return o.length?{erc20Tokens:(await r.API.tokensInfoCall(i,o)).filter(e=>!!e)}:{erc20Tokens:[]}}catch(e){return o.Logger.error(`Error fetching public tokens:`,e),{erc20Tokens:[]}}}};exports.eventsPublicTokensDB=p;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../types/cache.types.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../API/API.cjs`),i=require(`../../functions/utils/erc20tokenFunctions.cjs`),a=require(`../../constants/events.constants.cjs`);require(`../../constants/index.cjs`);const o=require(`../../error-handling/logger.cjs`),s=require(`../../functions/utils/tron.utils.cjs`),c=require(`../../functions/utils/string.utils.cjs`),l=require(`./token-visibility-db.cjs`),u=require(`../../functions/utils/create-provider.cjs`);require(`../../functions/index.cjs`);let d=require(`ethers`),f=require(`idb-keyval`),p=require(`async-mutex`);var m=new class{fetchedTokens={};updateMutexes={};transferEventTopic=d.ethers.id(`Transfer(address,address,uint256)`);chunkSize=2e3;getMutex(e){return this.updateMutexes[e]||(this.updateMutexes[e]=new p.Mutex),this.updateMutexes[e]}async getPublicTokens(e,n){let r=c.getStateKey(n,e);return((await(0,f.get)(t.StorageKeys.EVENTS_PUBLIC_TOKENS))?.[r]||[]).map(t=>i.overlayTokenWithRegistryData(t,e))}getFetchedTokens(e,t){let n=c.getStateKey(t,e);return(this.fetchedTokens[n]||[]).map(t=>i.overlayTokenWithRegistryData(t,e))}async fetchAndUpdatePublicTokens(e,r){let i=c.getStateKey(e,r);await this.getMutex(i).runExclusive(async()=>{try{let a=(await this.getPublicTokens(r,e)).map(e=>e.erc20TokenAddress),{toEvents:o,fromEvents:s,latestBlock:c}=await this.getEvents(e,r),u=[...o,...s],{erc20Tokens:d}=await this.fetchPublicTokens(u,r,a),p=await l.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(r,d),m=d.filter(e=>!n.lowerCaseIncludes(p,e.erc20TokenAddress));await(0,f.update)(t.StorageKeys.EVENTS_PUBLIC_TOKENS,(e={})=>{let t=e[i]||[],r=t.map(e=>e.erc20TokenAddress),a=m.filter(e=>!n.lowerCaseIncludes(r,e.erc20TokenAddress));t.push(...a);let c=this.updateTokenIds(s,o,t),l={...e,[i]:c};return this.fetchedTokens=l,l}),c&&await this.updateLastProcessedBlock(r,e,c)}catch(e){o.Logger.error(`public tokens db error`,e)}})}async getLastProcessedBlock(e,n){return(await(0,f.get)(t.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS)||{})[c.getStateKey(n,e)]||a.EVENTS_INITIAL_BLOCKS[e]}async updateLastProcessedBlock(e,n,r){await(0,f.update)(t.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS,(t={})=>{let i=c.getStateKey(n,e);return{...t,[i]:r}})}async getEvents(e,t){try{let n=u.createJsonRpcProvider(t),r=await this.getLastProcessedBlock(t,e)+1,i=await n.getBlockNumber(),a=s.addressToHexFormat(e),o=d.ethers.zeroPadValue(a,32),c=[],l=[];for(let e=r;e<=i;e+=this.chunkSize){let t=Math.min(e+this.chunkSize-1,i),r={topics:[this.transferEventTopic,null,o],fromBlock:e,toBlock:t},a={topics:[this.transferEventTopic,o,null],fromBlock:e,toBlock:t},[s,u]=await Promise.all([n.getLogs(r),n.getLogs(a)]);c.push(...s),l.push(...u)}return{toEvents:c,fromEvents:l,latestBlock:i}}catch(n){return o.Logger.error(`Error fetching events:`,n,`chainId`,t,`walletAddress`,e),{toEvents:[],fromEvents:[],latestBlock:void 0}}}updateTokenIds(e,t,n){let r=new Map;return n.forEach(e=>{if(i.isNFTToken(e)&&e.tokenIds){let t=e.erc20TokenAddress.toLowerCase();r.set(t,[...e.tokenIds])}}),t.forEach(e=>{if(e.topics.length<=3)return;let t=e.address.toLowerCase(),n=BigInt(e.topics[3]).toString();r.has(t)||r.set(t,[]),r.get(t)?.push(n)}),e.forEach(e=>{if(e.topics.length<=3)return;let t=e.address.toLowerCase(),n=r.get(t);if(n?.length){let t=BigInt(e.topics[3]).toString(),r=n.indexOf(t);r!==-1&&n.splice(r,1)}}),n.forEach(e=>{if(i.isNFTToken(e)){let t=e.erc20TokenAddress.toLowerCase(),n=r.get(t);e.tokenIds=n?.length&&n.length>0?n:void 0}}),n}async fetchPublicTokens(t,i,a){try{let o=[e.zeroAddress,...new Set(t.map(e=>e.address))].filter(e=>e&&!n.lowerCaseIncludes(a,e));return o.length?{erc20Tokens:(await r.API.tokensInfoCall(i,o)).filter(e=>!!e)}:{erc20Tokens:[]}}catch(e){return o.Logger.error(`Error fetching public tokens:`,e),{erc20Tokens:[]}}}};exports.eventsPublicTokensDB=m;
@@ -6,7 +6,6 @@ export declare class EventsPublicTokensDB implements IPublicTokensDB {
6
6
  private readonly transferEventTopic;
7
7
  private readonly chunkSize;
8
8
  private getMutex;
9
- private withRegistryOverlay;
10
9
  getPublicTokens(chainId: number, walletAddress: string): Promise<ERC20Token[]>;
11
10
  getFetchedTokens(chainId: number, walletAddress: string): ERC20Token[];
12
11
  fetchAndUpdatePublicTokens(walletAddress: string, chainId: number): Promise<void>;
@@ -2,49 +2,40 @@ import { zeroAddress as e } from "../../constants/protocol.constants.mjs";
2
2
  import { StorageKeys as t } from "../../types/cache.types.mjs";
3
3
  import { lowerCaseIncludes as n } from "../../functions/utils/caseInsensitive.utils.mjs";
4
4
  import { API as r } from "../../API/API.mjs";
5
- import { getERC20Token as i, isNFTToken as a, overlayTokenWithRegistryData as o } from "../../functions/utils/erc20tokenFunctions.mjs";
6
- import { EVENTS_INITIAL_BLOCKS as s } from "../../constants/events.constants.mjs";
5
+ import { isNFTToken as i, overlayTokenWithRegistryData as a } from "../../functions/utils/erc20tokenFunctions.mjs";
6
+ import { EVENTS_INITIAL_BLOCKS as o } from "../../constants/events.constants.mjs";
7
7
  import "../../constants/index.mjs";
8
- import { Logger as c } from "../../error-handling/logger.mjs";
8
+ import { Logger as s } from "../../error-handling/logger.mjs";
9
+ import { addressToHexFormat as c } from "../../functions/utils/tron.utils.mjs";
9
10
  import { getStateKey as l } from "../../functions/utils/string.utils.mjs";
10
11
  import { tokenVisibilityStorage as u } from "./token-visibility-db.mjs";
11
12
  import { createJsonRpcProvider as d } from "../../functions/utils/create-provider.mjs";
12
13
  import "../../functions/index.mjs";
13
- import { Mutex as f } from "async-mutex";
14
- import { ethers as p } from "ethers";
15
- import { get as m, update as h } from "idb-keyval";
14
+ import { ethers as f } from "ethers";
15
+ import { get as p, update as m } from "idb-keyval";
16
+ import { Mutex as h } from "async-mutex";
16
17
  var g = new class {
17
18
  fetchedTokens = {};
18
19
  updateMutexes = {};
19
- transferEventTopic = p.id("Transfer(address,address,uint256)");
20
+ transferEventTopic = f.id("Transfer(address,address,uint256)");
20
21
  chunkSize = 2e3;
21
22
  getMutex(e) {
22
- return this.updateMutexes[e] || (this.updateMutexes[e] = new f()), this.updateMutexes[e];
23
- }
24
- withRegistryOverlay(e, t) {
25
- let n = i(e.erc20TokenAddress, t);
26
- return n ? {
27
- ...e,
28
- name: n.name,
29
- symbol: n.symbol,
30
- logoURI: n.logoURI,
31
- decimals: n.decimals
32
- } : e;
23
+ return this.updateMutexes[e] || (this.updateMutexes[e] = new h()), this.updateMutexes[e];
33
24
  }
34
25
  async getPublicTokens(e, n) {
35
26
  let r = l(n, e);
36
- return ((await m(t.EVENTS_PUBLIC_TOKENS))?.[r] || []).map((t) => o(t, e));
27
+ return ((await p(t.EVENTS_PUBLIC_TOKENS))?.[r] || []).map((t) => a(t, e));
37
28
  }
38
29
  getFetchedTokens(e, t) {
39
30
  let n = l(t, e);
40
- return (this.fetchedTokens[n] || []).map((t) => o(t, e));
31
+ return (this.fetchedTokens[n] || []).map((t) => a(t, e));
41
32
  }
42
33
  async fetchAndUpdatePublicTokens(e, r) {
43
34
  let i = l(e, r);
44
35
  await this.getMutex(i).runExclusive(async () => {
45
36
  try {
46
37
  let a = (await this.getPublicTokens(r, e)).map((e) => e.erc20TokenAddress), { toEvents: o, fromEvents: s, latestBlock: c } = await this.getEvents(e, r), l = [...o, ...s], { erc20Tokens: d } = await this.fetchPublicTokens(l, r, a), f = await u.hideSpamsAndFetchHiddenTokensAddresses(r, d), p = d.filter((e) => !n(f, e.erc20TokenAddress));
47
- await h(t.EVENTS_PUBLIC_TOKENS, (e = {}) => {
38
+ await m(t.EVENTS_PUBLIC_TOKENS, (e = {}) => {
48
39
  let t = e[i] || [], r = t.map((e) => e.erc20TokenAddress), a = p.filter((e) => !n(r, e.erc20TokenAddress));
49
40
  t.push(...a);
50
41
  let c = this.updateTokenIds(s, o, t), l = {
@@ -54,15 +45,15 @@ var g = new class {
54
45
  return this.fetchedTokens = l, l;
55
46
  }), c && await this.updateLastProcessedBlock(r, e, c);
56
47
  } catch (e) {
57
- c.error("public tokens db error", e);
48
+ s.error("public tokens db error", e);
58
49
  }
59
50
  });
60
51
  }
61
52
  async getLastProcessedBlock(e, n) {
62
- return (await m(t.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS) || {})[l(n, e)] || s[e];
53
+ return (await p(t.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS) || {})[l(n, e)] || o[e];
63
54
  }
64
55
  async updateLastProcessedBlock(e, n, r) {
65
- await h(t.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS, (t = {}) => {
56
+ await m(t.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS, (t = {}) => {
66
57
  let i = l(n, e);
67
58
  return {
68
59
  ...t,
@@ -72,34 +63,34 @@ var g = new class {
72
63
  }
73
64
  async getEvents(e, t) {
74
65
  try {
75
- let n = d(t), r = await this.getLastProcessedBlock(t, e) + 1, i = await n.getBlockNumber(), a = p.zeroPadValue(e.toLowerCase(), 32), o = [], s = [];
66
+ let n = d(t), r = await this.getLastProcessedBlock(t, e) + 1, i = await n.getBlockNumber(), a = c(e), o = f.zeroPadValue(a, 32), s = [], l = [];
76
67
  for (let e = r; e <= i; e += this.chunkSize) {
77
68
  let t = Math.min(e + this.chunkSize - 1, i), r = {
78
69
  topics: [
79
70
  this.transferEventTopic,
80
71
  null,
81
- a
72
+ o
82
73
  ],
83
74
  fromBlock: e,
84
75
  toBlock: t
85
- }, c = {
76
+ }, a = {
86
77
  topics: [
87
78
  this.transferEventTopic,
88
- a,
79
+ o,
89
80
  null
90
81
  ],
91
82
  fromBlock: e,
92
83
  toBlock: t
93
- }, [l, u] = await Promise.all([n.getLogs(r), n.getLogs(c)]);
94
- o.push(...l), s.push(...u);
84
+ }, [c, u] = await Promise.all([n.getLogs(r), n.getLogs(a)]);
85
+ s.push(...c), l.push(...u);
95
86
  }
96
87
  return {
97
- toEvents: o,
98
- fromEvents: s,
88
+ toEvents: s,
89
+ fromEvents: l,
99
90
  latestBlock: i
100
91
  };
101
92
  } catch (n) {
102
- return c.error("Error fetching events:", n, "chainId", t, "walletAddress", e), {
93
+ return s.error("Error fetching events:", n, "chainId", t, "walletAddress", e), {
103
94
  toEvents: [],
104
95
  fromEvents: [],
105
96
  latestBlock: void 0
@@ -109,7 +100,7 @@ var g = new class {
109
100
  updateTokenIds(e, t, n) {
110
101
  let r = /* @__PURE__ */ new Map();
111
102
  return n.forEach((e) => {
112
- if (a(e) && e.tokenIds) {
103
+ if (i(e) && e.tokenIds) {
113
104
  let t = e.erc20TokenAddress.toLowerCase();
114
105
  r.set(t, [...e.tokenIds]);
115
106
  }
@@ -125,7 +116,7 @@ var g = new class {
125
116
  r !== -1 && n.splice(r, 1);
126
117
  }
127
118
  }), n.forEach((e) => {
128
- if (a(e)) {
119
+ if (i(e)) {
129
120
  let t = e.erc20TokenAddress.toLowerCase(), n = r.get(t);
130
121
  e.tokenIds = n?.length && n.length > 0 ? n : void 0;
131
122
  }
@@ -136,7 +127,7 @@ var g = new class {
136
127
  let o = [e, ...new Set(t.map((e) => e.address))].filter((e) => e && !n(a, e));
137
128
  return o.length ? { erc20Tokens: (await r.tokensInfoCall(i, o)).filter((e) => !!e) } : { erc20Tokens: [] };
138
129
  } catch (e) {
139
- return c.error("Error fetching public tokens:", e), { erc20Tokens: [] };
130
+ return s.error("Error fetching public tokens:", e), { erc20Tokens: [] };
140
131
  }
141
132
  }
142
133
  }();
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/string.utils.cjs`),n=require(`./AlchemyPublicTokensDB.cjs`),r=require(`./EventsPublicTokensDB.cjs`),i=require(`./ArcPublicTokensDB.cjs`);var a=class{useAlternativeDB={};async getPublicTokens(a,o){let s=t.getStateKey(o,a);return a===e.chainIds.arcTestnet?i.arcPublicTokensDB.getPublicTokens(o):this.useAlternativeDB[s]?r.eventsPublicTokensDB.getPublicTokens(a,o):n.alchemyPublicTokensDB.getPublicTokens(a,o)}getFetchedTokens(a,o){let s=t.getStateKey(o,a);return a===e.chainIds.arcTestnet?i.arcPublicTokensDB.getFetchedTokens(o):this.useAlternativeDB[s]?r.eventsPublicTokensDB.getFetchedTokens(a,o):n.alchemyPublicTokensDB.getFetchedTokens(a,o)}async fetchAndUpdatePublicTokens(a,o){let s=t.getStateKey(a,o);try{o===e.chainIds.arcTestnet?await i.arcPublicTokensDB.fetchAndUpdatePublicTokens(a):(await n.alchemyPublicTokensDB.fetchAndUpdatePublicTokens(a,o),this.useAlternativeDB[s]=!1)}catch{if(e.isSolanaLike(o))return;await r.eventsPublicTokensDB.fetchAndUpdatePublicTokens(a,o),this.useAlternativeDB[s]=!0}}},o=new a;exports.PublicTokensDB=a,exports.publicTokensDB=o;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../../functions/utils/string.utils.cjs`),r=require(`./AlchemyPublicTokensDB.cjs`),i=require(`./EventsPublicTokensDB.cjs`),a=require(`./ArcPublicTokensDB.cjs`),o=require(`./TronPublicTokensDB.cjs`);var s=class{useAlternativeDB={};async getPublicTokens(t,s){let c=n.getStateKey(s,t);return this.useAlternativeDB[c]?i.eventsPublicTokensDB.getPublicTokens(t,s):t===e.chainIds.arcTestnet?a.arcPublicTokensDB.getPublicTokens(s):e.isTronLike(t)?o.tronPublicTokensDB.getPublicTokens(s,t):r.alchemyPublicTokensDB.getPublicTokens(t,s)}getFetchedTokens(t,s){let c=n.getStateKey(s,t);return this.useAlternativeDB[c]?i.eventsPublicTokensDB.getFetchedTokens(t,s):t===e.chainIds.arcTestnet?a.arcPublicTokensDB.getFetchedTokens(s):e.isTronLike(t)?o.tronPublicTokensDB.getFetchedTokens(s,t):r.alchemyPublicTokensDB.getFetchedTokens(t,s)}async fetchAndUpdatePublicTokens(s,c){let l=n.getStateKey(s,c);try{c===e.chainIds.arcTestnet?await a.arcPublicTokensDB.fetchAndUpdatePublicTokens(s):e.isTronLike(c)?await o.tronPublicTokensDB.fetchAndUpdatePublicTokens(s,c):(await r.alchemyPublicTokensDB.fetchAndUpdatePublicTokens(s,c),this.useAlternativeDB[l]=!1)}catch(n){if(t.Logger.error(`error`,n),e.isSolanaLike(c))return;await i.eventsPublicTokensDB.fetchAndUpdatePublicTokens(s,c),this.useAlternativeDB[l]=!0}}},c=new s;exports.PublicTokensDB=s,exports.publicTokensDB=c;
@@ -1,28 +1,30 @@
1
- import { chainIds as e, isSolanaLike as t } from "../../constants/chains.constants.mjs";
2
- import { getStateKey as n } from "../../functions/utils/string.utils.mjs";
3
- import { alchemyPublicTokensDB as r } from "./AlchemyPublicTokensDB.mjs";
4
- import { eventsPublicTokensDB as i } from "./EventsPublicTokensDB.mjs";
5
- import { arcPublicTokensDB as a } from "./ArcPublicTokensDB.mjs";
1
+ import { chainIds as e, isSolanaLike as t, isTronLike as n } from "../../constants/chains.constants.mjs";
2
+ import { Logger as r } from "../../error-handling/logger.mjs";
3
+ import { getStateKey as i } from "../../functions/utils/string.utils.mjs";
4
+ import { alchemyPublicTokensDB as a } from "./AlchemyPublicTokensDB.mjs";
5
+ import { eventsPublicTokensDB as o } from "./EventsPublicTokensDB.mjs";
6
+ import { arcPublicTokensDB as s } from "./ArcPublicTokensDB.mjs";
7
+ import { tronPublicTokensDB as c } from "./TronPublicTokensDB.mjs";
6
8
  //#region libs/shared/common/src/data-structures/TokenDBs/PublicTokensDB.ts
7
- var o = class {
9
+ var l = class {
8
10
  useAlternativeDB = {};
9
- async getPublicTokens(t, o) {
10
- let s = n(o, t);
11
- return t === e.arcTestnet ? a.getPublicTokens(o) : this.useAlternativeDB[s] ? i.getPublicTokens(t, o) : r.getPublicTokens(t, o);
11
+ async getPublicTokens(t, r) {
12
+ let l = i(r, t);
13
+ return this.useAlternativeDB[l] ? o.getPublicTokens(t, r) : t === e.arcTestnet ? s.getPublicTokens(r) : n(t) ? c.getPublicTokens(r, t) : a.getPublicTokens(t, r);
12
14
  }
13
- getFetchedTokens(t, o) {
14
- let s = n(o, t);
15
- return t === e.arcTestnet ? a.getFetchedTokens(o) : this.useAlternativeDB[s] ? i.getFetchedTokens(t, o) : r.getFetchedTokens(t, o);
15
+ getFetchedTokens(t, r) {
16
+ let l = i(r, t);
17
+ return this.useAlternativeDB[l] ? o.getFetchedTokens(t, r) : t === e.arcTestnet ? s.getFetchedTokens(r) : n(t) ? c.getFetchedTokens(r, t) : a.getFetchedTokens(t, r);
16
18
  }
17
- async fetchAndUpdatePublicTokens(o, s) {
18
- let c = n(o, s);
19
+ async fetchAndUpdatePublicTokens(l, u) {
20
+ let d = i(l, u);
19
21
  try {
20
- s === e.arcTestnet ? await a.fetchAndUpdatePublicTokens(o) : (await r.fetchAndUpdatePublicTokens(o, s), this.useAlternativeDB[c] = !1);
21
- } catch {
22
- if (t(s)) return;
23
- await i.fetchAndUpdatePublicTokens(o, s), this.useAlternativeDB[c] = !0;
22
+ u === e.arcTestnet ? await s.fetchAndUpdatePublicTokens(l) : n(u) ? await c.fetchAndUpdatePublicTokens(l, u) : (await a.fetchAndUpdatePublicTokens(l, u), this.useAlternativeDB[d] = !1);
23
+ } catch (e) {
24
+ if (r.error("error", e), t(u)) return;
25
+ await o.fetchAndUpdatePublicTokens(l, u), this.useAlternativeDB[d] = !0;
24
26
  }
25
27
  }
26
- }, s = new o();
28
+ }, u = new l();
27
29
  //#endregion
28
- export { o as PublicTokensDB, s as publicTokensDB };
30
+ export { l as PublicTokensDB, u as publicTokensDB };
@@ -0,0 +1 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../types/cache.types.cjs`),n=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const r=require(`../../functions/utils/caseInsensitive.utils.cjs`),i=require(`../../API/API.cjs`),a=require(`../../functions/utils/erc20tokenFunctions.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/string.utils.cjs`),c=require(`./token-visibility-db.cjs`);let l=require(`idb-keyval`);var u=class{fetchedTokens={};async getPublicTokens(e,n){let r=s.getStateKey(e,n);return((await(0,l.get)(t.StorageKeys.TRON_PUBLIC_TOKENS))?.[r]||[]).map(e=>a.overlayTokenWithRegistryData(e,n))}getFetchedTokens(e,t){let n=s.getStateKey(e,t);return(this.fetchedTokens[n]||[]).map(e=>a.overlayTokenWithRegistryData(e,t))}async fetchAndUpdatePublicTokens(e,n){let a=s.getStateKey(e,n),o=await this.getHeldTokenAddresses(e,n);if(!o.length)return;let u=(await i.API.tokensInfoCall(n,o)).filter(e=>!!e),d=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(n,u),f=u.filter(e=>!r.lowerCaseIncludes(d,e.erc20TokenAddress));await(0,l.update)(t.StorageKeys.TRON_PUBLIC_TOKENS,(e={})=>{let t={...e,[a]:f};return this.fetchedTokens=t,t})}async getHeldTokenAddresses(t,r){let i=o.toTronBase58IfHex(t),a=`${o.getTronWalletRpcUrl(r)}/v1/accounts/${i}`,s=(await n.httpClient.get(a))?.data?.[0];if(!s)return[];let c=[];return s.balance&&s.balance>0&&c.push(e.zeroAddress),(s.trc20??[]).forEach(e=>{Object.entries(e).forEach(([e,t])=>{BigInt(t)>0n&&c.push(o.addressToHexFormat(e))})}),Array.from(new Set(c))}},d=new u;exports.TronPublicTokensDB=u,exports.tronPublicTokensDB=d;
@@ -0,0 +1,9 @@
1
+ import { ERC20Token } from '../../types/token.types';
2
+ export declare class TronPublicTokensDB {
3
+ private fetchedTokens;
4
+ getPublicTokens(walletAddress: string, chainId: number): Promise<ERC20Token[]>;
5
+ getFetchedTokens(walletAddress: string, chainId: number): ERC20Token[];
6
+ fetchAndUpdatePublicTokens(walletAddress: string, chainId: number): Promise<void>;
7
+ private getHeldTokenAddresses;
8
+ }
9
+ export declare const tronPublicTokensDB: TronPublicTokensDB;
@@ -0,0 +1,47 @@
1
+ import { zeroAddress as e } from "../../constants/protocol.constants.mjs";
2
+ import { StorageKeys as t } from "../../types/cache.types.mjs";
3
+ import { httpClient as n } from "../http/HttpClient.mjs";
4
+ import "../http/index.mjs";
5
+ import { lowerCaseIncludes as r } from "../../functions/utils/caseInsensitive.utils.mjs";
6
+ import { API as i } from "../../API/API.mjs";
7
+ import { overlayTokenWithRegistryData as a } from "../../functions/utils/erc20tokenFunctions.mjs";
8
+ import { addressToHexFormat as o, getTronWalletRpcUrl as s, toTronBase58IfHex as c } from "../../functions/utils/tron.utils.mjs";
9
+ import { getStateKey as l } from "../../functions/utils/string.utils.mjs";
10
+ import { tokenVisibilityStorage as u } from "./token-visibility-db.mjs";
11
+ import { get as d, update as f } from "idb-keyval";
12
+ //#region libs/shared/common/src/data-structures/TokenDBs/TronPublicTokensDB.ts
13
+ var p = class {
14
+ fetchedTokens = {};
15
+ async getPublicTokens(e, n) {
16
+ let r = l(e, n);
17
+ return ((await d(t.TRON_PUBLIC_TOKENS))?.[r] || []).map((e) => a(e, n));
18
+ }
19
+ getFetchedTokens(e, t) {
20
+ let n = l(e, t);
21
+ return (this.fetchedTokens[n] || []).map((e) => a(e, t));
22
+ }
23
+ async fetchAndUpdatePublicTokens(e, n) {
24
+ let a = l(e, n), o = await this.getHeldTokenAddresses(e, n);
25
+ if (!o.length) return;
26
+ let s = (await i.tokensInfoCall(n, o)).filter((e) => !!e), c = await u.hideSpamsAndFetchHiddenTokensAddresses(n, s), d = s.filter((e) => !r(c, e.erc20TokenAddress));
27
+ await f(t.TRON_PUBLIC_TOKENS, (e = {}) => {
28
+ let t = {
29
+ ...e,
30
+ [a]: d
31
+ };
32
+ return this.fetchedTokens = t, t;
33
+ });
34
+ }
35
+ async getHeldTokenAddresses(t, r) {
36
+ let i = c(t), a = `${s(r)}/v1/accounts/${i}`, l = (await n.get(a))?.data?.[0];
37
+ if (!l) return [];
38
+ let u = [];
39
+ return l.balance && l.balance > 0 && u.push(e), (l.trc20 ?? []).forEach((e) => {
40
+ Object.entries(e).forEach(([e, t]) => {
41
+ BigInt(t) > 0n && u.push(o(e));
42
+ });
43
+ }), Array.from(new Set(u));
44
+ }
45
+ }, m = new p();
46
+ //#endregion
47
+ export { p as TronPublicTokensDB, m as tronPublicTokensDB };
@@ -1 +1 @@
1
- require(`./token-visibility-db.cjs`),require(`./PrivateTokensDB.cjs`),require(`./ArcPublicTokensDB.cjs`),require(`./PublicTokensDB.cjs`);
1
+ require(`./token-visibility-db.cjs`),require(`./PrivateTokensDB.cjs`),require(`./ArcPublicTokensDB.cjs`),require(`./TronPublicTokensDB.cjs`),require(`./PublicTokensDB.cjs`);
@@ -2,3 +2,4 @@ export * from './PrivateTokensDB';
2
2
  export * from './PublicTokensDB';
3
3
  export * from './token-visibility-db';
4
4
  export * from './ArcPublicTokensDB';
5
+ export * from './TronPublicTokensDB';
@@ -1,4 +1,5 @@
1
1
  import "./token-visibility-db.mjs";
2
2
  import "./PrivateTokensDB.mjs";
3
3
  import "./ArcPublicTokensDB.mjs";
4
+ import "./TronPublicTokensDB.mjs";
4
5
  import "./PublicTokensDB.mjs";
@@ -1 +1 @@
1
- require(`./http/BasicHttpClient.cjs`),require(`./http/HttpClient.cjs`),require(`./http/index.cjs`),require(`./custom-token-registry/CustomTokenRegistry.cjs`),require(`./ValueCache/ValueCache.cjs`),require(`./crypto-keys/keyUtils.cjs`),require(`./crypto-keys/keys.cjs`),require(`./utxo/Utxo.cjs`),require(`./crypto-keys/decodeUTXO.cjs`),require(`./crypto-keys/encryptDecryptUtxo.cjs`),require(`./crypto-keys/index.cjs`),require(`./TokenDBs/token-visibility-db.cjs`),require(`./TokenDBs/PrivateTokensDB.cjs`),require(`./token-price-fetcher/TokenChecker.cjs`),require(`./AccountActions/AccountActions.cjs`),require(`./cacheDevices/FileCacheDevice.cjs`),require(`./cacheDevices/LocalStorageCacheDevice.cjs`),require(`./cacheDevices/index.cjs`),require(`./Hinkal/hinkalDeposit.cjs`),require(`./Hinkal/prepareDepositOnChainUtxosZkProof.cjs`),require(`./Hinkal/hinkalDepositAndWithdraw.cjs`),require(`./Hinkal/hinkalSwap.cjs`),require(`./Hinkal/hinkalWithdraw.cjs`),require(`./merkle-tree/MerkleTreeIncompleteError.cjs`),require(`./merkle-tree/MerkleTree.cjs`),require(`./merkle-tree/index.cjs`),require(`./event-service/evm/AbstractEventService.cjs`),require(`./event-service/evm/AbstractSnapshotService.cjs`),require(`./event-service/evm/AbstractCommitmentsSnapshotService.cjs`),require(`./event-service/evm/AbstractNullifierSnapshotService.cjs`),require(`./BlockchainEvent/BlockchainEvent.cjs`),require(`./event-service/evm/BlockchainEventEmitter.cjs`),require(`./event-service/evm/PollingBlockchainEventEmitter.cjs`),require(`./event-service/evm/ClientBlockchainEventEmitter.cjs`),require(`./event-service/solana/SolanaBlockchainEventEmitter.cjs`),require(`./event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`),require(`./event-service/solana/PollingSolanaBlockchainEventEmitter.cjs`),require(`./event-service/solana/AbstractSolanaEventService.cjs`),require(`./event-service/solana/AbstractSolanaSnapshotService.cjs`),require(`./event-service/solana/AbstractSolanaNullifierSnapshotService.cjs`),require(`./event-service/solana/AbstractSolanaCommitmentsSnapshotService.cjs`),require(`./event-service/index.cjs`),require(`./snapshot/SnapshotFetcherService.cjs`),require(`./snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),require(`./snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),require(`./snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),require(`./snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`),require(`./snapshot/index.cjs`),require(`./Hinkal/resetMerkleTrees.cjs`),require(`./MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),require(`./IndexedDB/activity-db.cjs`),require(`./IndexedDB/balances-db.cjs`),require(`./IndexedDB/private-balances-db.cjs`),require(`./IndexedDB/prices-db.cjs`),require(`./IndexedDB/contact-db.cjs`),require(`./IndexedDB/signatures-db.cjs`),require(`./IndexedDB/pay-activity-db.cjs`),require(`./IndexedDB/index.cjs`),require(`./Hinkal/hinkalPrivateWallet.cjs`),require(`./AccountActions/index.cjs`),require(`./TokenDBs/ArcPublicTokensDB.cjs`),require(`./TokenDBs/PublicTokensDB.cjs`),require(`./TokenDBs/index.cjs`),require(`./Hinkal/hinkalProxySwap.cjs`),require(`./Hinkal/hinkalTransfer.cjs`),require(`./Hinkal/hinkalSolanaDepositAndWithdraw.cjs`),require(`./Hinkal/hinkalSolanaTransfer.cjs`),require(`./Hinkal/hinkalSolanaProxySend.cjs`),require(`./Hinkal/hinkalSolanaProxySwap.cjs`),require(`./Hinkal/hinkalSolanaProxyShield.cjs`),require(`./Hinkal/hinkalNearDepositAndBridge.cjs`),require(`./Hinkal/hinkalClaimUtxo.cjs`),require(`./Hinkal/hinkalSolanaProoflessDeposit.cjs`),require(`./Hinkal/hinkalSolanaClaimUtxo.cjs`),require(`./Hinkal/hinkalWithdrawStuckUtxos.cjs`),require(`./Hinkal/Hinkal.cjs`),require(`./Hinkal/hinkalPalSolanaDepositPrepare.cjs`),require(`./Hinkal/hinkalPalEvmDeposit.cjs`),require(`./Hinkal/hinkalPalTronDepositPrepare.cjs`),require(`./Hinkal/index.cjs`),require(`./token-price-fetcher/index.cjs`),require(`./transactions-manager/history/history.types.cjs`),require(`./presale/PresaleContractWrapper.cjs`),require(`./presale/index.cjs`),require(`./ApprovalDBs/EventsPublicApprovalsDB.cjs`),require(`./ApprovalDBs/index.cjs`),require(`./WalletManager/WalletManager.cjs`),require(`./WalletManager/index.cjs`);
1
+ require(`./http/BasicHttpClient.cjs`),require(`./http/HttpClient.cjs`),require(`./http/index.cjs`),require(`./custom-token-registry/CustomTokenRegistry.cjs`),require(`./ValueCache/ValueCache.cjs`),require(`./crypto-keys/keyUtils.cjs`),require(`./crypto-keys/keys.cjs`),require(`./utxo/Utxo.cjs`),require(`./crypto-keys/decodeUTXO.cjs`),require(`./crypto-keys/encryptDecryptUtxo.cjs`),require(`./crypto-keys/index.cjs`),require(`./TokenDBs/token-visibility-db.cjs`),require(`./TokenDBs/PrivateTokensDB.cjs`),require(`./token-price-fetcher/TokenChecker.cjs`),require(`./AccountActions/AccountActions.cjs`),require(`./cacheDevices/FileCacheDevice.cjs`),require(`./cacheDevices/LocalStorageCacheDevice.cjs`),require(`./cacheDevices/index.cjs`),require(`./Hinkal/hinkalDeposit.cjs`),require(`./Hinkal/prepareDepositOnChainUtxosZkProof.cjs`),require(`./Hinkal/hinkalDepositAndWithdraw.cjs`),require(`./Hinkal/hinkalSwap.cjs`),require(`./Hinkal/hinkalWithdraw.cjs`),require(`./merkle-tree/MerkleTreeIncompleteError.cjs`),require(`./merkle-tree/MerkleTree.cjs`),require(`./merkle-tree/index.cjs`),require(`./event-service/evm/AbstractEventService.cjs`),require(`./event-service/evm/AbstractSnapshotService.cjs`),require(`./event-service/evm/AbstractCommitmentsSnapshotService.cjs`),require(`./event-service/evm/AbstractNullifierSnapshotService.cjs`),require(`./BlockchainEvent/BlockchainEvent.cjs`),require(`./event-service/evm/BlockchainEventEmitter.cjs`),require(`./event-service/evm/PollingBlockchainEventEmitter.cjs`),require(`./event-service/evm/ClientBlockchainEventEmitter.cjs`),require(`./event-service/solana/SolanaBlockchainEventEmitter.cjs`),require(`./event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`),require(`./event-service/solana/PollingSolanaBlockchainEventEmitter.cjs`),require(`./event-service/solana/AbstractSolanaEventService.cjs`),require(`./event-service/solana/AbstractSolanaSnapshotService.cjs`),require(`./event-service/solana/AbstractSolanaNullifierSnapshotService.cjs`),require(`./event-service/solana/AbstractSolanaCommitmentsSnapshotService.cjs`),require(`./event-service/index.cjs`),require(`./snapshot/SnapshotFetcherService.cjs`),require(`./snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),require(`./snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),require(`./snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),require(`./snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`),require(`./snapshot/index.cjs`),require(`./Hinkal/resetMerkleTrees.cjs`),require(`./MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),require(`./IndexedDB/activity-db.cjs`),require(`./IndexedDB/balances-db.cjs`),require(`./IndexedDB/private-balances-db.cjs`),require(`./IndexedDB/prices-db.cjs`),require(`./IndexedDB/contact-db.cjs`),require(`./IndexedDB/signatures-db.cjs`),require(`./IndexedDB/pay-activity-db.cjs`),require(`./IndexedDB/index.cjs`),require(`./Hinkal/hinkalPrivateWallet.cjs`),require(`./AccountActions/index.cjs`),require(`./TokenDBs/ArcPublicTokensDB.cjs`),require(`./TokenDBs/TronPublicTokensDB.cjs`),require(`./TokenDBs/PublicTokensDB.cjs`),require(`./TokenDBs/index.cjs`),require(`./Hinkal/hinkalProxySwap.cjs`),require(`./Hinkal/hinkalTransfer.cjs`),require(`./Hinkal/hinkalSolanaDepositAndWithdraw.cjs`),require(`./Hinkal/hinkalSolanaTransfer.cjs`),require(`./Hinkal/hinkalSolanaProxySend.cjs`),require(`./Hinkal/hinkalSolanaProxySwap.cjs`),require(`./Hinkal/hinkalSolanaProxyShield.cjs`),require(`./Hinkal/hinkalNearDepositAndBridge.cjs`),require(`./Hinkal/hinkalClaimUtxo.cjs`),require(`./Hinkal/hinkalSolanaProoflessDeposit.cjs`),require(`./Hinkal/hinkalSolanaClaimUtxo.cjs`),require(`./Hinkal/hinkalWithdrawStuckUtxos.cjs`),require(`./Hinkal/Hinkal.cjs`),require(`./Hinkal/hinkalPalSolanaDepositPrepare.cjs`),require(`./Hinkal/hinkalPalEvmDeposit.cjs`),require(`./Hinkal/hinkalPalTronDepositPrepare.cjs`),require(`./Hinkal/index.cjs`),require(`./token-price-fetcher/index.cjs`),require(`./transactions-manager/history/history.types.cjs`),require(`./presale/PresaleContractWrapper.cjs`),require(`./presale/index.cjs`),require(`./ApprovalDBs/EventsPublicApprovalsDB.cjs`),require(`./ApprovalDBs/index.cjs`),require(`./WalletManager/WalletManager.cjs`),require(`./WalletManager/index.cjs`);
@@ -59,6 +59,7 @@ import "./IndexedDB/index.mjs";
59
59
  import "./Hinkal/hinkalPrivateWallet.mjs";
60
60
  import "./AccountActions/index.mjs";
61
61
  import "./TokenDBs/ArcPublicTokensDB.mjs";
62
+ import "./TokenDBs/TronPublicTokensDB.mjs";
62
63
  import "./TokenDBs/PublicTokensDB.mjs";
63
64
  import "./TokenDBs/index.mjs";
64
65
  import "./Hinkal/hinkalProxySwap.mjs";
@@ -1 +1 @@
1
- require(`./utils/serialize.utils.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/addresses.cjs`),require(`./utils/auth.utils.cjs`),require(`./kyc/openDefaultPassportWindow.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/amounts.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/getDataFromTransaction.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/interaction-to-action.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getFlatFees.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/calculateSolanaNullifierCount.cjs`),require(`./pre-transaction/addressTableLookup.cjs`),require(`./pre-transaction/solana-public-signals.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./pre-transaction/store-proof.cjs`),require(`./pre-transaction/sendInitNullifiersTransaction.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/store-instructions.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/requireEnv.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/convertIntegrationProviderToExternalActionId.cjs`),require(`./utils/evmNetworkFunctions.cjs`),require(`./utils/userAgent.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/nickname.utils.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/getBlockExplorerUrl.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/rpc-int-encode.cjs`),require(`./utils/arraysMatch.cjs`),require(`./utils/trimFieldValues.cjs`),require(`./utils/walletBalances.utils.cjs`),require(`./utils/nftTokenFunctions.cjs`),require(`./utils/inLogicMetadata.cjs`),require(`./utils/networks.utils.cjs`),require(`./utils/is-valid-url.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/solanaSendPreflight.utils.cjs`),require(`./utils/prepareHinkal.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/proxyAvatar.utils.cjs`),require(`./utils/validateUsername.cjs`),require(`./utils/enclave-utxo-storage.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/buildClaimableDepositPlan.cjs`),require(`./utils/pay-routing.utils.cjs`),require(`./utils/formatter.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/deposit-claimable.utils.cjs`),require(`./utils/transfer-claimable.utils.cjs`),require(`./utils/getWalletGroupKey.utils.cjs`),require(`./web3/events/balanceChangedHandler.cjs`),require(`./utils/dispatchBalanceRefreshes.cjs`),require(`./utils/lifi.utils.cjs`),require(`./utils/enclave-recipient-info-storage.cjs`),require(`./utils/solana-memo.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/events/getTransactionLogEvents.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/lifiAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/runContractFunction.cjs`),require(`./web3/getTokenHolder.cjs`),require(`./web3/EIP-712.cjs`),require(`./web3/signAndSendSerializedTransaction.cjs`),require(`./web3/connectors.utils.cjs`),require(`./web3/crypto.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/verifyCommitmentValidationData.cjs`),require(`./snarkjs/index.cjs`),require(`./kyc/passportHelper.cjs`),require(`./kyc/checkTokenLimitsUSD.cjs`),require(`./kyc/index.cjs`),require(`./private-wallet/opProducer.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
1
+ require(`./utils/serialize.utils.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/addresses.cjs`),require(`./utils/auth.utils.cjs`),require(`./kyc/openDefaultPassportWindow.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/amounts.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/getDataFromTransaction.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/interaction-to-action.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getFlatFees.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/calculateSolanaNullifierCount.cjs`),require(`./pre-transaction/addressTableLookup.cjs`),require(`./pre-transaction/solana-public-signals.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./pre-transaction/store-proof.cjs`),require(`./pre-transaction/sendInitNullifiersTransaction.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/store-instructions.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/requireEnv.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/convertIntegrationProviderToExternalActionId.cjs`),require(`./utils/evmNetworkFunctions.cjs`),require(`./utils/userAgent.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/nickname.utils.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/getBlockExplorerUrl.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/rpc-int-encode.cjs`),require(`./utils/arraysMatch.cjs`),require(`./utils/trimFieldValues.cjs`),require(`./utils/walletBalances.utils.cjs`),require(`./utils/nftTokenFunctions.cjs`),require(`./utils/inLogicMetadata.cjs`),require(`./utils/networks.utils.cjs`),require(`./utils/is-valid-url.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/solanaSendPreflight.utils.cjs`),require(`./utils/prepareHinkal.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/proxyAvatar.utils.cjs`),require(`./utils/validateUsername.cjs`),require(`./utils/enclave-utxo-storage.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/buildClaimableDepositPlan.cjs`),require(`./utils/pay-routing.utils.cjs`),require(`./utils/formatter.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/deposit-claimable.utils.cjs`),require(`./utils/transfer-claimable.utils.cjs`),require(`./utils/getWalletGroupKey.utils.cjs`),require(`./web3/events/balanceChangedHandler.cjs`),require(`./utils/dispatchBalanceRefreshes.cjs`),require(`./utils/lifi.utils.cjs`),require(`./utils/enclave-recipient-info-storage.cjs`),require(`./utils/solana-memo.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/events/getTransactionLogEvents.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/lifiAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/runContractFunction.cjs`),require(`./web3/getTokenHolder.cjs`),require(`./web3/EIP-712.cjs`),require(`./web3/signAndSendSerializedTransaction.cjs`),require(`./web3/connectors.utils.cjs`),require(`./web3/crypto.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/verifyCommitmentValidationData.cjs`),require(`./snarkjs/index.cjs`),require(`./kyc/passportHelper.cjs`),require(`./kyc/checkTokenLimitsUSD.cjs`),require(`./kyc/index.cjs`),require(`./private-wallet/opProducer.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
@@ -13,6 +13,7 @@ import "./utils/bit.operations.mjs";
13
13
  import "./utils/upToDateState.mjs";
14
14
  import "./utils/getDataFromTransaction.mjs";
15
15
  import "./utils/cacheFunctions.mjs";
16
+ import "./utils/enclaveHandshakeService.mjs";
16
17
  import "./utils/encryptInputForEnclave.mjs";
17
18
  import "./utils/solanaMint.utils.mjs";
18
19
  import "./utils/customEnclaveFunctionsRegister.mjs";
@@ -1,2 +1,2 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../utils/serialize.utils.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../data-structures/AccountActions/AccountActions.cjs`),r=require(`../../types/fee.types.cjs`),i=require(`../web3/getSolanaPriorityFee.cjs`),a=require(`../utils/process.utils.cjs`),o=require(`../../error-handling/retrySolanaError.cjs`);let s=require(`@solana/web3.js`),c=require(`@solana/spl-token`);var l=5e3,u=6e4,d=7,f=async(e,t,n=`confirmed`)=>await a.pollForValue(()=>e.getTransaction(t,{commitment:n,maxSupportedTransactionVersion:0}),{timeoutMs:u,intervalMs:l})??null,p=async(e,n,r,i,a=!1)=>{try{let{blockhash:o}=await e.getLatestBlockhash(),c=new s.VersionedTransaction(new s.TransactionMessage({payerKey:n,recentBlockhash:o,instructions:[s.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}),...a?[s.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...r]}).compileToV0Message(i)),{unitsConsumed:l}=(await e.simulateTransaction(c,{sigVerify:!1,replaceRecentBlockhash:!0})).value;if(!l)return t.MAX_COMPUTE_UNIT_LIMIT;let u=Math.ceil(l*(1+t.COMPUTE_UNIT_PADDING_PERCENTAGE));return Math.max(t.MIN_COMPUTE_UNIT_LIMIT,Math.min(u,t.MAX_COMPUTE_UNIT_LIMIT))}catch{return t.MAX_COMPUTE_UNIT_LIMIT}},m=(e,t,n,r)=>{let i=new Set;return t&&i.add(t.toBase58()),n?.forEach(e=>i.add(e.toBase58())),e.forEach(e=>{i.add(e.programId.toBase58()),e.keys.forEach(e=>{i.add(e.pubkey.toBase58())})}),r&&r.forEach(e=>{i.add(e.key.toBase58()),e.state.addresses.forEach(e=>{i.add(e.toBase58())})}),[...i].map(e=>new s.PublicKey(e))},h=t=>{if(!t)throw Error(`Failed to fetch Solana transaction details for signature`);if(t.meta?.err){let n=e.safeJsonStringify(t.meta.err),r=t.meta.logMessages?.join(`
2
- `);throw Error(r?`Solana transaction failed on-chain: ${n}\n${r}`:`Solana transaction failed on-chain: ${n}`)}},g=async(e,n,r,a,o,c=!1)=>{if(r.some(e=>e.programId.equals(s.ComputeBudgetProgram.programId)))return r.map(e=>e.programId.equals(s.ComputeBudgetProgram.programId)&&e.data[0]===2?s.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}):e);let l=r.filter(e=>!e.programId.equals(s.ComputeBudgetProgram.programId)),u=await p(e,n,l,a,c),d=s.ComputeBudgetProgram.setComputeUnitLimit({units:u}),f=e.rpcEndpoint.includes(`helius`)?await i.getSolanaPriorityFee(m(l,n,[s.ComputeBudgetProgram.programId],a),o):0;return[d,s.ComputeBudgetProgram.setComputeUnitPrice({microLamports:f}),...c?[s.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...l]},_=async(e,t,n,i,a,c=!1)=>{if(t.length===0)return``;for(let l=0;l<10;l+=1){let u=l===9;try{let o=await g(e,n.publicKey,t,a,l>=d?r.SolanaPriorityFeeMode.HIGH:r.SolanaPriorityFeeMode.RECOMMENDED,c),{blockhash:u,lastValidBlockHeight:p}=await e.getLatestBlockhash(),m=new s.VersionedTransaction(new s.TransactionMessage({payerKey:n.publicKey,instructions:o,recentBlockhash:u}).compileToV0Message(a));m.sign(i);let _=await e.sendTransaction(m);return await e.confirmTransaction({signature:_,blockhash:u,lastValidBlockHeight:p},`confirmed`),h(await f(e,_)),_}catch(e){if(o.shouldRetryForSolanaError(e)&&!u)continue;throw e}}return``},v=async(e,t,n,r)=>{if(!n)return null;let i=await(0,c.getAssociatedTokenAddress)(n,r,!0,c.TOKEN_PROGRAM_ID,c.ASSOCIATED_TOKEN_PROGRAM_ID);return await e.getAccountInfo(i)||await _(e,[(0,c.createAssociatedTokenAccountInstruction)(t.publicKey,i,r,n,c.TOKEN_PROGRAM_ID,c.ASSOCIATED_TOKEN_PROGRAM_ID)],t,[t]),i},y=async({connection:e,chainId:t,subAccount:i,payerPublicKey:a,instructions:c,lookupTableAccounts:l})=>{let u=n.AccountActions.getPrivateKeyFromSubAccount(t,i);if(!u)throw Error(`Private key is not available`);for(let t=0;t<10;t+=1){let i=t===9;try{let t=await g(e,a,c,l,i?r.SolanaPriorityFeeMode.HIGH:r.SolanaPriorityFeeMode.RECOMMENDED),{blockhash:o,lastValidBlockHeight:d}=await e.getLatestBlockhash(),p=new s.VersionedTransaction(new s.TransactionMessage({payerKey:a,recentBlockhash:o,instructions:t}).compileToV0Message(l)),m=await n.AccountActions.sendAndSignSolanaTransactionFromPrivateKey(e,u,p,!0);return await e.confirmTransaction({signature:m,blockhash:o,lastValidBlockHeight:d},`confirmed`),h(await f(e,m)),m}catch(e){if(o.shouldRetryForSolanaError(e)&&!i)continue;throw e}}throw Error(`Failed to send proxy v0 transaction due to expired blockheight after all retries`)},b=async(e,t,n,r)=>{let{blockhash:i}=await e.getLatestBlockhash(),a=new s.VersionedTransaction(new s.TransactionMessage({payerKey:t,recentBlockhash:i,instructions:await g(e,t,n,r)}).compileToV0Message(r));return Buffer.from(a.serialize()).toString(`base64`)};exports.ensureAtaExists=v,exports.estimateComputeUnitLimit=p,exports.fetchSolanaTransaction=f,exports.getAccountsFromInstructions=m,exports.sendProxyV0Transaction=y,exports.sendV0Transaction=_,exports.serializeProxyV0Transaction=b;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../utils/serialize.utils.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/logger.cjs`),r=require(`../../data-structures/AccountActions/AccountActions.cjs`),i=require(`../../types/fee.types.cjs`),a=require(`../web3/getSolanaPriorityFee.cjs`),o=require(`../utils/process.utils.cjs`),s=require(`../../error-handling/retrySolanaError.cjs`);let c=require(`@solana/web3.js`),l=require(`@solana/spl-token`);var u=5e3,d=6e4,f=7,p=async(e,t,n=`confirmed`)=>await o.pollForValue(()=>e.getTransaction(t,{commitment:n,maxSupportedTransactionVersion:0}),{timeoutMs:d,intervalMs:u})??null,m=async(r,i,a,o,s=!1)=>{try{let{blockhash:l}=await r.getLatestBlockhash(),u=new c.VersionedTransaction(new c.TransactionMessage({payerKey:i,recentBlockhash:l,instructions:[c.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}),...s?[c.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...a]}).compileToV0Message(o)),d=await r.simulateTransaction(u,{sigVerify:!1,replaceRecentBlockhash:!0});d.value.err&&n.Logger.error(`Solana compute-unit simulation failed:`,{error:e.safeJsonStringify(d.value.err),logs:d.value.logs});let{unitsConsumed:f}=d.value;if(!f)return t.MAX_COMPUTE_UNIT_LIMIT;let p=Math.ceil(f*(1+t.COMPUTE_UNIT_PADDING_PERCENTAGE));return Math.max(t.MIN_COMPUTE_UNIT_LIMIT,Math.min(p,t.MAX_COMPUTE_UNIT_LIMIT))}catch(e){return n.Logger.error(`Solana compute-unit estimation threw:`,e),t.MAX_COMPUTE_UNIT_LIMIT}},h=(e,t,n,r)=>{let i=new Set;return t&&i.add(t.toBase58()),n?.forEach(e=>i.add(e.toBase58())),e.forEach(e=>{i.add(e.programId.toBase58()),e.keys.forEach(e=>{i.add(e.pubkey.toBase58())})}),r&&r.forEach(e=>{i.add(e.key.toBase58()),e.state.addresses.forEach(e=>{i.add(e.toBase58())})}),[...i].map(e=>new c.PublicKey(e))},g=(t,r)=>{if(!t)throw Error(`Failed to fetch Solana transaction details for signature${r?` ${r}`:``}`);if(t.meta?.err){let i=e.safeJsonStringify(t.meta.err),a=t.meta.logMessages?.join(`
2
+ `);n.Logger.error(`Solana transaction failed on-chain`,{signature:r,error:i,logs:t.meta.logMessages});let o=r?` (signature: ${r})`:``;throw Error(a?`Solana transaction failed on-chain${o}: ${i}\n${a}`:`Solana transaction failed on-chain${o}: ${i}`)}},_=async(e,n,r,i,o,s=!1)=>{if(r.some(e=>e.programId.equals(c.ComputeBudgetProgram.programId)))return r.map(e=>e.programId.equals(c.ComputeBudgetProgram.programId)&&e.data[0]===2?c.ComputeBudgetProgram.setComputeUnitLimit({units:t.MAX_COMPUTE_UNIT_LIMIT}):e);let l=r.filter(e=>!e.programId.equals(c.ComputeBudgetProgram.programId)),u=await m(e,n,l,i,s),d=c.ComputeBudgetProgram.setComputeUnitLimit({units:u}),f=e.rpcEndpoint.includes(`helius`)?await a.getSolanaPriorityFee(h(l,n,[c.ComputeBudgetProgram.programId],i),o):0;return[d,c.ComputeBudgetProgram.setComputeUnitPrice({microLamports:f}),...s?[c.ComputeBudgetProgram.requestHeapFrame({bytes:t.MAX_SOLANA_HEAP_FRAME_BYTES})]:[],...l]},v=async(e,t,n,r,a,o=!1)=>{if(t.length===0)return``;for(let l=0;l<10;l+=1){let u=l===9;try{let s=await _(e,n.publicKey,t,a,l>=f?i.SolanaPriorityFeeMode.HIGH:i.SolanaPriorityFeeMode.RECOMMENDED,o),{blockhash:u,lastValidBlockHeight:d}=await e.getLatestBlockhash(),m=new c.VersionedTransaction(new c.TransactionMessage({payerKey:n.publicKey,instructions:s,recentBlockhash:u}).compileToV0Message(a));m.sign(r);let h=await e.sendTransaction(m);return await e.confirmTransaction({signature:h,blockhash:u,lastValidBlockHeight:d},`confirmed`),g(await p(e,h),h),h}catch(e){if(s.shouldRetryForSolanaError(e)&&!u)continue;throw e}}return``},y=async(e,t,n,r)=>{if(!n)return null;let i=await(0,l.getAssociatedTokenAddress)(n,r,!0,l.TOKEN_PROGRAM_ID,l.ASSOCIATED_TOKEN_PROGRAM_ID);return await e.getAccountInfo(i)||await v(e,[(0,l.createAssociatedTokenAccountInstruction)(t.publicKey,i,r,n,l.TOKEN_PROGRAM_ID,l.ASSOCIATED_TOKEN_PROGRAM_ID)],t,[t]),i},b=async({connection:e,chainId:t,subAccount:n,payerPublicKey:a,instructions:o,lookupTableAccounts:l})=>{let u=r.AccountActions.getPrivateKeyFromSubAccount(t,n);if(!u)throw Error(`Private key is not available`);for(let t=0;t<10;t+=1){let n=t===9;try{let t=await _(e,a,o,l,n?i.SolanaPriorityFeeMode.HIGH:i.SolanaPriorityFeeMode.RECOMMENDED),{blockhash:s,lastValidBlockHeight:d}=await e.getLatestBlockhash(),f=new c.VersionedTransaction(new c.TransactionMessage({payerKey:a,recentBlockhash:s,instructions:t}).compileToV0Message(l)),m=await r.AccountActions.sendAndSignSolanaTransactionFromPrivateKey(e,u,f,!0);return await e.confirmTransaction({signature:m,blockhash:s,lastValidBlockHeight:d},`confirmed`),g(await p(e,m),m),m}catch(e){if(s.shouldRetryForSolanaError(e)&&!n)continue;throw e}}throw Error(`Failed to send proxy v0 transaction due to expired blockheight after all retries`)},x=async(e,t,n,r)=>{let{blockhash:i}=await e.getLatestBlockhash(),a=new c.VersionedTransaction(new c.TransactionMessage({payerKey:t,recentBlockhash:i,instructions:await _(e,t,n,r)}).compileToV0Message(r));return Buffer.from(a.serialize()).toString(`base64`)};exports.ensureAtaExists=y,exports.estimateComputeUnitLimit=m,exports.fetchSolanaTransaction=p,exports.getAccountsFromInstructions=h,exports.sendProxyV0Transaction=b,exports.sendV0Transaction=v,exports.serializeProxyV0Transaction=x;