@hinkal/common 0.2.14 → 0.2.15

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 (84) hide show
  1. package/API/getRelayerURL.cjs +1 -1
  2. package/API/getRelayerURL.mjs +4 -4
  3. package/API/getServerURL.cjs +1 -1
  4. package/API/getServerURL.mjs +14 -12
  5. package/API/tenderly.api.cjs +1 -1
  6. package/API/tenderly.api.d.ts +9 -7
  7. package/API/tenderly.api.mjs +37 -29
  8. package/constants/axelar.constants.cjs +1 -1
  9. package/constants/axelar.constants.mjs +8 -8
  10. package/constants/chains.constants.cjs +1 -1
  11. package/constants/chains.constants.d.ts +2 -0
  12. package/constants/chains.constants.mjs +24 -15
  13. package/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  14. package/constants/deploy-data/deploy-data-arbMainnet.json.mjs +9328 -3470
  15. package/constants/deploy-data/deploy-data-avalanche.json.cjs +1 -1
  16. package/constants/deploy-data/deploy-data-avalanche.json.mjs +9323 -3461
  17. package/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  18. package/constants/deploy-data/deploy-data-base.json.mjs +8668 -3820
  19. package/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  20. package/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +8966 -3102
  21. package/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  22. package/constants/deploy-data/deploy-data-ethMainnet.json.mjs +6413 -4517
  23. package/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  24. package/constants/deploy-data/deploy-data-optimism.json.mjs +171 -61
  25. package/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  26. package/constants/deploy-data/deploy-data-polygon.json.mjs +9311 -3477
  27. package/constants/protocol.constants.cjs +1 -1
  28. package/constants/protocol.constants.d.ts +2 -0
  29. package/constants/protocol.constants.mjs +14 -12
  30. package/constants/server.constants.cjs +1 -1
  31. package/constants/server.constants.d.ts +20 -0
  32. package/constants/server.constants.mjs +39 -19
  33. package/constants/token-data/arbMainnetRegistry.json.cjs +1 -1
  34. package/constants/token-data/arbMainnetRegistry.json.mjs +321 -84
  35. package/constants/token-data/arbMainnetRegistryFixed.json.cjs +1 -1
  36. package/constants/token-data/arbMainnetRegistryFixed.json.mjs +313 -82
  37. package/constants/token-data/avalancheRegistry.json.cjs +1 -1
  38. package/constants/token-data/avalancheRegistry.json.mjs +220 -55
  39. package/constants/token-data/avalancheRegistryFixed.json.cjs +1 -1
  40. package/constants/token-data/avalancheRegistryFixed.json.mjs +220 -55
  41. package/constants/token-data/baseRegistry.json.cjs +1 -1
  42. package/constants/token-data/baseRegistry.json.mjs +216 -54
  43. package/constants/token-data/baseRegistryFixed.json.cjs +1 -1
  44. package/constants/token-data/baseRegistryFixed.json.mjs +204 -51
  45. package/constants/token-data/ethMainnetRegistry.json.cjs +1 -1
  46. package/constants/token-data/ethMainnetRegistry.json.mjs +895 -225
  47. package/constants/token-data/ethMainnetRegistryFixed.json.cjs +1 -1
  48. package/constants/token-data/ethMainnetRegistryFixed.json.mjs +855 -215
  49. package/constants/token-data/index.d.ts +433 -0
  50. package/constants/token-data/polygonRegistry.json.cjs +1 -1
  51. package/constants/token-data/polygonRegistry.json.mjs +501 -129
  52. package/constants/token-data/polygonRegistryFixed.json.cjs +1 -1
  53. package/constants/token-data/polygonRegistryFixed.json.mjs +477 -123
  54. package/constants/vite.constants.cjs +1 -1
  55. package/constants/vite.constants.d.ts +2 -1
  56. package/constants/vite.constants.mjs +22 -21
  57. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  58. package/data-structures/Hinkal/Hinkal.mjs +4 -3
  59. package/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  60. package/data-structures/Hinkal/hinkalProoflessDeposit.mjs +7 -7
  61. package/data-structures/TokenDBs/PublicTokensDB.cjs +1 -1
  62. package/data-structures/TokenDBs/PublicTokensDB.mjs +43 -38
  63. package/data-structures/event-service/AbstractAccessTokenSnapshotService.cjs +1 -1
  64. package/data-structures/event-service/AbstractAccessTokenSnapshotService.mjs +1 -1
  65. package/data-structures/event-service/AbstractCommitmentsSnapshotService.cjs +1 -1
  66. package/data-structures/event-service/AbstractCommitmentsSnapshotService.mjs +2 -2
  67. package/data-structures/merkle-tree/MerkleTree.cjs +1 -1
  68. package/data-structures/merkle-tree/MerkleTree.d.ts +1 -1
  69. package/data-structures/merkle-tree/MerkleTree.mjs +15 -14
  70. package/data-structures/merkle-tree/getPatchedAccessTokenMerkleTree.cjs +1 -1
  71. package/data-structures/merkle-tree/getPatchedAccessTokenMerkleTree.mjs +1 -1
  72. package/functions/utils/merkleTree.utils.cjs +1 -1
  73. package/functions/utils/merkleTree.utils.mjs +7 -6
  74. package/functions/web3/getTokenHolder.cjs +1 -0
  75. package/functions/web3/getTokenHolder.d.ts +1 -0
  76. package/functions/web3/getTokenHolder.mjs +12 -0
  77. package/functions/web3/index.d.ts +1 -0
  78. package/index.cjs +1 -1
  79. package/index.mjs +722 -714
  80. package/package.json +1 -1
  81. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.cjs +1 -1
  82. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.mjs +1 -1
  83. package/webworker/zkProofWorker/zkProofWorkerLauncher.cjs +1 -1
  84. package/webworker/zkProofWorker/zkProofWorkerLauncher.mjs +1 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../functions/utils/enum.utils.cjs"),i=typeof process<"u"&&process?.release?.name==="node",r=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,y=!r&&typeof window<"u"&&window.origin==="null",f=typeof __webpack_require__<"u",m={value:!1},v=typeof window<"u"&&window?.location?.protocol==="chrome-extension:";var s=(o=>(o.DEVELOPMENT="development",o.STAGING="staging",o.PLAYGROUND="playground",o.PRODUCTION="production",o))(s||{});const e={development:["localhost","192.","127."],playground:["playground","onboarding"],staging:["working-branch"]};function t(o,p){return p.some(a=>o.includes(a))}const w=()=>(require("dotenv").config({path:"DOTENV_OVERRIDE"in process.env?process.env.DOTENV_OVERRIDE:void 0}),g.toEnumValue(s,process.env.DEPLOYMENT_MODE)||"playground"),S=()=>{if(!i&&typeof window>"u")return;if(i)return w();const o=window?.location?.host;return window?.location?.protocol==="chrome-extension:"||t(o,e.development)?"development":t(o,e.playground)?"playground":t(o,e.staging)?"staging":"production"},n=S(),d=n==="staging",c=n==="playground",u=n==="development",l=d||u||c,b=l||n==="production"&&i;exports.DEPLOYMENT_MODE=s;exports.deploymentMode=n;exports.isDevelopment=u;exports.isExtension=v;exports.isExtensionSandbox=m;exports.isNode=r;exports.isNotClientProduction=b;exports.isNotProduction=l;exports.isPlayground=c;exports.isSandbox=y;exports.isStaging=d;exports.isWebpack=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../functions/utils/enum.utils.cjs"),i=typeof process<"u"&&process?.release?.name==="node",r=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,y=!r&&typeof window<"u"&&window.origin==="null",f=typeof __webpack_require__<"u",w={value:!1},m=typeof window<"u"&&window?.location?.protocol==="chrome-extension:";var s=(e=>(e.DEVELOPMENT="development",e.STAGING="staging",e.PLAYGROUND="playground",e.PRODUCTION="production",e.WALLET="wallet",e))(s||{});const o={development:["localhost","192.","127."],wallet:["wallet","onboarding"],playground:["playground"],staging:["working-branch"]};function t(e,a){return a.some(p=>e.includes(p))}const v=()=>(require("dotenv").config({path:"DOTENV_OVERRIDE"in process.env?process.env.DOTENV_OVERRIDE:void 0}),g.toEnumValue(s,process.env.DEPLOYMENT_MODE)||"wallet"),S=()=>{if(!i&&typeof window>"u")return;if(i)return v();const e=window?.location?.host;return window?.location?.protocol==="chrome-extension:"||t(e,o.wallet)?"wallet":t(e,o.development)?"development":t(e,o.playground)?"playground":t(e,o.staging)?"staging":"production"},n=S(),d=n==="staging",l=n==="playground",c=n==="development",u=d||c||l,b=u||n==="production"&&i;exports.DEPLOYMENT_MODE=s;exports.deploymentMode=n;exports.isDevelopment=c;exports.isExtension=m;exports.isExtensionSandbox=w;exports.isNode=r;exports.isNotClientProduction=b;exports.isNotProduction=u;exports.isPlayground=l;exports.isSandbox=y;exports.isStaging=d;exports.isWebpack=f;
@@ -9,7 +9,8 @@ export declare enum DEPLOYMENT_MODE {
9
9
  DEVELOPMENT = "development",
10
10
  STAGING = "staging",
11
11
  PLAYGROUND = "playground",
12
- PRODUCTION = "production"
12
+ PRODUCTION = "production",
13
+ WALLET = "wallet"
13
14
  }
14
15
  export declare const deploymentMode: DEPLOYMENT_MODE | undefined;
15
16
  export declare const isStaging: boolean;
@@ -1,39 +1,40 @@
1
- import { toEnumValue as c } from "../functions/utils/enum.utils.mjs";
2
- const i = typeof process < "u" && process?.release?.name === "node", p = typeof process < "u" && process.versions != null && process.versions.node != null, v = !p && typeof window < "u" && window.origin === "null", w = typeof __webpack_require__ < "u", x = { value: !1 }, N = typeof window < "u" && window?.location?.protocol === "chrome-extension:";
3
- var s = /* @__PURE__ */ ((o) => (o.DEVELOPMENT = "development", o.STAGING = "staging", o.PLAYGROUND = "playground", o.PRODUCTION = "production", o))(s || {});
4
- const e = {
1
+ import { toEnumValue as l } from "../functions/utils/enum.utils.mjs";
2
+ const i = typeof process < "u" && process?.release?.name === "node", c = typeof process < "u" && process.versions != null && process.versions.node != null, m = !c && typeof window < "u" && window.origin === "null", v = typeof __webpack_require__ < "u", x = { value: !1 }, R = typeof window < "u" && window?.location?.protocol === "chrome-extension:";
3
+ var r = /* @__PURE__ */ ((e) => (e.DEVELOPMENT = "development", e.STAGING = "staging", e.PLAYGROUND = "playground", e.PRODUCTION = "production", e.WALLET = "wallet", e))(r || {});
4
+ const n = {
5
5
  development: ["localhost", "192.", "127."],
6
6
  // TODO: Temporary for onboarding, needs to be changed
7
- playground: ["playground", "onboarding"],
7
+ wallet: ["wallet", "onboarding"],
8
+ playground: ["playground"],
8
9
  // The code deployed to the 'playground' branch is hosted by Netlify at 'hinkal-playground.netlify.app'
9
10
  staging: ["working-branch"]
10
11
  // The code deployed to the 'new' branch is hosted by Netlify at 'working-branch.netlify.app'
11
12
  };
12
- function t(o, r) {
13
- return r.some((d) => o.includes(d));
13
+ function o(e, s) {
14
+ return s.some((d) => e.includes(d));
14
15
  }
15
- const l = () => (require("dotenv").config({
16
+ const p = () => (require("dotenv").config({
16
17
  // allow overriding .env file path, see startServer.sh script for explenation on why it is needed
17
18
  path: "DOTENV_OVERRIDE" in process.env ? process.env.DOTENV_OVERRIDE : void 0
18
- }), c(s, process.env.DEPLOYMENT_MODE) || "playground"), u = () => {
19
+ }), l(r, process.env.DEPLOYMENT_MODE) || "wallet"), u = () => {
19
20
  if (!i && typeof window > "u")
20
21
  return;
21
22
  if (i)
22
- return l();
23
- const o = window?.location?.host;
24
- return window?.location?.protocol === "chrome-extension:" || t(o, e.development) ? "development" : t(o, e.playground) ? "playground" : t(o, e.staging) ? "staging" : "production";
25
- }, n = u(), a = n === "staging", g = n === "playground", f = n === "development", y = a || f || g, R = y || n === "production" && i;
23
+ return p();
24
+ const e = window?.location?.host;
25
+ return window?.location?.protocol === "chrome-extension:" || o(e, n.wallet) ? "wallet" : o(e, n.development) ? "development" : o(e, n.playground) ? "playground" : o(e, n.staging) ? "staging" : "production";
26
+ }, t = u(), a = t === "staging", g = t === "playground", f = t === "development", w = a || f || g, S = w || t === "production" && i;
26
27
  export {
27
- s as DEPLOYMENT_MODE,
28
- n as deploymentMode,
28
+ r as DEPLOYMENT_MODE,
29
+ t as deploymentMode,
29
30
  f as isDevelopment,
30
- N as isExtension,
31
+ R as isExtension,
31
32
  x as isExtensionSandbox,
32
- p as isNode,
33
- R as isNotClientProduction,
34
- y as isNotProduction,
33
+ c as isNode,
34
+ S as isNotClientProduction,
35
+ w as isNotProduction,
35
36
  g as isPlayground,
36
- v as isSandbox,
37
+ m as isSandbox,
37
38
  a as isStaging,
38
- w as isWebpack
39
+ v as isWebpack
39
40
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../../types/hinkal.types.cjs"),u=require("../../types/ethereum-network.types.cjs"),p=require("../../functions/web3/functionCalls/accessTokenCalls.cjs"),I=require("../../functions/web3/events/getShieldedBalance.cjs"),g=require("../crypto-keys/keys.cjs"),M=require("./hinkalActionBeefy.cjs"),R=require("./hinkalActionConvex.cjs"),H=require("./hinkalActionCurve.cjs"),B=require("./hinkalActionPendle.cjs"),m=require("./hinkalDeposit.cjs"),b=require("./hinkalSwap.cjs"),x=require("./hinkalWithdraw.cjs"),U=require("./resetMerkleTrees.cjs"),T=require("../merkle-tree/MerkleTree.cjs");require("ethers");const w=require("../../error-handling/error-codes.constants.cjs"),q=require("../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const W=require("../../constants/chains.constants.cjs"),D=require("../../API/callMonitor.cjs"),K=require("./hinkalActionLidoEth.cjs"),L=require("../../constants/vite.constants.cjs");require("axios");require("../../constants/coingecko.constants.cjs");const N=require("../../API/getAxelarGasEstimate.cjs"),S=require("../../API/API.cjs");require("../../types/curve.types.cjs");require("../../constants/token-data/index.cjs");require("../../constants/contracts.constants.cjs");const O=require("../../constants/kyc.constants.cjs");require("../../constants/axelar.constants.cjs");require("../../constants/rewards.constants.cjs");require("../../constants/reorg-depths.constants.cjs");require("../../constants/addresses.constants.cjs");require("../../constants/token.limits.constants.cjs");const _=require("../transactions-manager/TransactionsManager.cjs");require("../../functions/utils/external-action.utils.cjs");require("../../types/circom-data.types.cjs");require("../../types/transactions.types.cjs");require("../../types/activities.types.cjs");const G=require("../../functions/utils/reloadPage.cjs"),j=require("./hinkalActionVolatile.cjs"),f=require("./hinkalActionPendleLP.cjs"),V=require("../../API/getConnextReceiveFee.cjs"),z=require("./hinkalActionStake.cjs"),J=require("../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs"),Q=require("./hinkalPrivateWallet.cjs"),X=require("../../functions/utils/cacheFunctions.cjs"),Y=require("../../functions/utils/cacheDevice.utils.cjs"),Z=require("../../functions/web3/getContractMetadata.cjs"),$=require("./hinkalGetRecipientInfo.cjs"),ee=require("./hinkalApprove.cjs"),te=require("./hinkalInsideTransact.cjs"),c=require("../../functions/web3/events/getApprovedBalance.cjs"),k=require("../../functions/web3/functionCalls/inHinkalApprovalCalls.cjs"),re=require("./hinkalSignSubAccount.cjs"),ne=require("./hinkalDeploySubAccount.cjs"),ie=require("./hinkalCheckTokenRegistry.cjs"),se=require("./hinkalActionReceive.cjs"),ae=require("./hinkalActionFundApproveAndTransact.cjs"),oe=require("../TokenDBs/PrivateTokensDB.cjs");require("idb-keyval");const ce=require("./hinkalProoflessDeposit.cjs"),he=require("./hinkalProxySwap.cjs"),le=require("./hinkalMultiSend.cjs"),de=require("../../functions/utils/erc20tokenFunctions.cjs");class ue{providerAdapter;userKeys;signingMessage="Login to Hinkal Protocol";merkleTreeHinkal;merkleTreeAccessToken;nullifiers;encryptedOutputs;approvals;commitmentsSnapshotService;nullifierSnapshotService;accessTokenSnapshotService;approvalsSnapshotService;transactionsManager;utxoUtils;cacheDevice;generateProofRemotely;disableMerkleTreeUpdates;constructor(e){this.userKeys=new g.UserKeys(void 0),this.merkleTreeHinkal=T.MerkleTree.create(q.poseidonFunction,25n,0n),this.merkleTreeAccessToken=T.MerkleTree.create(q.poseidonFunction,25n,0n),this.nullifiers=new Set,this.encryptedOutputs=[],this.approvals=new Map,this.transactionsManager=new _.TransactionsManager,this.generateProofRemotely=e?.generateProofRemotely??!1,this.utxoUtils=new J.MultiThreadedUtxoUtils,this.cacheDevice=Y.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}async initProviderAdapter(e,t){await this.updateProviderAdapter(t),this.providerAdapter?.initConnector(e);const r=await this.connectAndPatchProvider(e);await t.init(r),await this.setListeners()}async initUserKeys(){this.userKeys=new g.UserKeys(await this.getProviderAdapter().signMessage(this.signingMessage))}async initUserKeysWithPassword(e){this.userKeys=new g.UserKeys(e)}async resetMerkle(){this.disableMerkleTreeUpdates||this.isSelectedNetworkSupported()&&await U.resetMerkleTrees(this)}getProviderAdapter(){if(!this.providerAdapter)throw new Error("ProviderAdapter is not initialized");return this.providerAdapter}async waitForTransaction(e,t=1){return!!await this.providerAdapter?.waitForTransaction(e,t)}getContractMetadata(e,t){return this.getProviderAdapter().getContractMetadata(e,t)}getContract(e,t=void 0,r){return this.getProviderAdapter().getContract(e,t,r)}getContractWithFetcherByChainId(e,t,r=void 0){return Z.getContractWithFetcherByChainId(e,t,r)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,t,r){return await this.getProviderAdapter().signTypedData(e,t,r)}async deploySubAccount(e,t){return ne.hinkalDeploySubAccount(this,e,t)}async signWithSubAccount(e,t,r,n){return re.hinkalSignSubAccount(this,e,t,r,n)}getContractWithSigner(e,t=""){return this.getProviderAdapter().getContractWithSigner(e,t)}getContractWithFetcher(e,t=""){return this.getProviderAdapter().getContractWithFetcher(e,t)}getContractWithFetcherForEthereum(e,t){return this.getProviderAdapter().getContractWithFetcherForEthereum(e,t)}isSelectedNetworkSupported(){return!!W.networkRegistry[this.getCurrentChainId()]}async switchNetwork(e){try{await this.getProviderAdapter().switchNetwork(e)}catch{throw new Error(w.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}async switchAccount(e){await this.getProviderAdapter().switchAccount(e)}getCurrentChainId(){const{chainId:e}=this.getProviderAdapter();if(!e)throw new Error("Illegal State: no chainId");return e}getSelectedNetwork(){return this.providerAdapter?.getSelectedNetwork()}isPermitterAvailable(){return this.getProviderAdapter().isPermitterAvailable()}async connectAndPatchProvider(e){return await this.getProviderAdapter().connectAndPatchProvider(e)}async disconnectFromConnector(){await this.getProviderAdapter().disconnectFromConnector()}async updateProviderAdapter(e){try{this.providerAdapter&&this.providerAdapter.release(),this.providerAdapter=e}catch(t){throw console.error(t),Error("updateProviderAdapter failed, please try again.")}}async setListeners(){this.providerAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.getProviderAdapter().onAccountChanged();const e=P.EventType.AccountChanged;typeof document<"u"?document?.dispatchEvent(new Event(e)):process?.emit("message",e,void 0)}async onChainChanged(e){if(e){await this.getProviderAdapter().onChainChanged(e);const t=P.EventType.NetworkChange;typeof document<"u"?document.dispatchEvent(new Event(t)):process?.emit("message",t,void 0)}else await this.disconnectFromConnector(),G.reloadPage()}async monitorConnectedAddress(){D.monitor(await this.getEthereumAddress(),this.getCurrentChainId())}async getBalances(e,t,r,n,i=!1,s){return I.getShieldedBalance(this,e,t,r,n,i,this.generateProofRemotely,s)}async getApprovedBalances(e=!1,t=!1){return c.getApprovedBalance(this,e,t)}async getTotalBalance(e,t,r,n=!1,i){const s=e??this.getCurrentChainId(),a=r??await this.getEthereumAddress(),o=t??this.userKeys,h=await this.getBalances(s,o.getShieldedPrivateKey(),o.getShieldedPublicKey(),a,n,i),l=await this.getApprovedBalances(n,i),F=L.isExtension?await oe.privateTokensDB.getPrivateTokens(s,a):de.getErc20TokensForChain(s),v=[];return F.forEach(A=>{const y=A.erc20TokenAddress.toLowerCase(),d=h.get(y),C=l.get(y),E={token:A,balance:(d?.balance??0n)+(C?.balance??0n),timestamp:d?.timestamp||C?.timestamp||"0",nfts:d?.nfts||[]};v.push(E)}),v}getSupportedPassportLinks(){return O.supportedPassportLinks}checkAccessToken(){return p.checkHinkalAccessToken(this)}async getAxelarEstimate(e,t,r,n){return N.getAxelarGasEstimate(e,t,r,n,this.userKeys.getAccessKey())}async getConnextReceiveFee(e,t){return V.getConnextReceiveFee(this.getCurrentChainId(),e,t)}async mintHinkalAccessToken(e,t){return p.mintAccessToken(this,e,t)}async mintHinkalAccessTokenCrossChain(e,t,r){return p.mintTokenCrossChain(this,e,t,r)}async getHinkalTreeRootHash(){return this.getContractWithFetcher(u.ContractType.HinkalContract).getRootHash()}async getAccessTokenTreeRootHash(){return this.getContractWithFetcher(u.ContractType.AccessTokenContract).getRootHash()}async resetMerkleTreesIfNecessary(){if(!this.isSelectedNetworkSupported())throw new Error(w.transactionErrorCodes.UNSUPPORTED_NETWORK);const[e,t]=await Promise.all([this.getHinkalTreeRootHash(),this.getAccessTokenTreeRootHash()]);(e.toBigInt()!==this.merkleTreeHinkal.getRootHash()||t.toBigInt()!==this.merkleTreeAccessToken.getRootHash())&&(console.log("resetting merkle tree in resetMerkleTreesIfNecessary"),await this.resetMerkle())}async getEventsFromHinkal(){await Promise.all([this.accessTokenSnapshotService?.retrieveEventsFromLatestBlock(),this.commitmentsSnapshotService?.retrieveEventsFromLatestBlock(),this.nullifierSnapshotService?.retrieveEventsFromLatestBlock(),this.approvalsSnapshotService?.retrieveEventsFromLatestBlock()])}getEthereumAddress(){return this.getProviderAdapter().getAddress()}async getRandomRelay(){return(await S.API.getIdleRelay(this.getCurrentChainId())).relay}getGasPrice(){if(!this.providerAdapter?.chainId)throw new Error("Illegal State of providerAdapter in Hinkal: no chainId");return this.providerAdapter.getGasPrice()}getAPI(){return S.API}resetCache(){X.resetCache(this,this.getCurrentChainId(),this.userKeys.getShieldedPublicKey())}snapshotsClearInterval(){this.commitmentsSnapshotService?.intervalClear(),this.accessTokenSnapshotService?.intervalClear(),this.nullifierSnapshotService?.intervalClear(),this.approvalsSnapshotService?.intervalClear()}checkTokenRegistry(e,t){const r=this.getContractWithFetcher(u.ContractType.HinkalHelperContract);return ie.hinkalCheckTokenRegistry(r,e,t)}getRecipientInfo(e=!1){return $.getRecipientInfo(this,e)}async getInteractionApprovals(e){return await k.getInteractionApprovals(this,e)}getApprovedUtxos(e=!1){return c.getApprovedUtxos(this,e)}getApprovedUtxosForToken(e,t=!1){return c.getApprovedUtxosForToken(this,e,t)}getMyApprovalAmountForInteraction(e,t){return c.getMyApprovalAmountForInteraction(this,e,t)}async checkExistingApprovalFromHinkal(e,t){return await k.checkExistingApprovalFromHinkal(this,e,t)}async getBufferEntry(e,t,r){return k.getBufferEntry(this,e,t,r)}async deposit(e,t){return m.hinkalDeposit(this,e,t)}async depositForOther(e,t,r){return m.hinkalDepositForOther(this,e,t,r)}async prooflessDeposit(e,t,r){return ce.hinkalProoflessDeposit(this,e,t,r)}async withdraw(e,t,r,n,i,s,a=!1){return x.hinkalWithdraw(this,e,t,r,n,i,s,a)}async swap(e,t,r,n,i,s,a=!1,o=!1){return b.hinkalSwap(this,e,t,r,n,i,s,a,o)}async actionCurve(e,t,r,n,i,s=!1){return H.hinkalActionCurve(this,e,t,r,n,i,s)}async actionConvex(e,t,r,n,i=!1){return R.hinkalActionConvex(this,e,t,r,n,i)}async actionBeefy(e,t,r,n,i,s,a=!1){return M.hinkalActionBeefy(this,e,t,r,n,i,s,a)}async actionLido(e,t,r,n,i,s=!1){return K.hinkalActionLido(this,e,t,r,n,i,s)}async actionPendle(e,t,r,n,i=!1){return B.hinkalActionPendle(this,e,t,r,n,i)}async actionPendleLP(e,t,r,n,i=!1){return f.hinkalActionPendleLP(this,e,t,r,n,i)}async actionVolatile(e,t,r,n=!1){return j.hinkalActionVolatile(this,e,t,r,n)}async actionStake(e,t,r,n){return z.hinkalActionStake(this,e,t,r,n)}async actionReceive(e,t,r,n,i,s=!1){return se.hinkalActionReceive(this,e,t,r,n,i,s)}async actionFundApproveAndTransact(e,t,r,n,i,s,a,o,h,l){return ae.hinkalActionFundApproveAndTransact(this,e,t,r,n,i,s,a,o,h,l)}async actionPrivateWallet(e,t,r,n=[],i,s,a,o=!1){return Q.hinkalPrivateWallet(this,e,t,r,n,i,s,a,o)}async getPendleLPClaimableParams(e,t){return f.hinkalGetPendleLPClaimableParams(this,e,t)}async approve(e,t,r,n,i=!1){return ee.hinkalApprove(this,e,t,r,n,i)}async hinkalInsideTransact(e,t,r,n,i,s,a=!1){return te.hinkalInsideTransact(this,e,t,r,n,i,s,a)}async proxySwap(e,t,r,n,i,s,a,o=!1){return he.hinkalProxySwap(this,e,t,r,n,i,s,a,o)}async multiSendPrivateRecipients(e,t,r){return le.hinkalMultiSendPrivateRecipients(this,e,t,r)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}}exports.Hinkal=ue;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../../types/hinkal.types.cjs"),u=require("../../types/ethereum-network.types.cjs"),p=require("../../functions/web3/functionCalls/accessTokenCalls.cjs"),I=require("../../functions/web3/events/getShieldedBalance.cjs"),g=require("../crypto-keys/keys.cjs"),M=require("./hinkalActionBeefy.cjs"),R=require("./hinkalActionConvex.cjs"),H=require("./hinkalActionCurve.cjs"),B=require("./hinkalActionPendle.cjs"),m=require("./hinkalDeposit.cjs"),b=require("./hinkalSwap.cjs"),x=require("./hinkalWithdraw.cjs"),U=require("./resetMerkleTrees.cjs"),T=require("../merkle-tree/MerkleTree.cjs");require("ethers");const w=require("../../error-handling/error-codes.constants.cjs"),q=require("../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const W=require("../../constants/chains.constants.cjs"),D=require("../../API/callMonitor.cjs"),K=require("./hinkalActionLidoEth.cjs"),L=require("../../constants/vite.constants.cjs");require("axios");require("../../constants/coingecko.constants.cjs");const N=require("../../API/getAxelarGasEstimate.cjs"),S=require("../../API/API.cjs");require("../../types/curve.types.cjs");require("../../constants/token-data/index.cjs");require("../../constants/contracts.constants.cjs");const O=require("../../constants/kyc.constants.cjs");require("../../constants/axelar.constants.cjs");require("../../constants/rewards.constants.cjs");require("../../constants/reorg-depths.constants.cjs");require("../../constants/addresses.constants.cjs");require("../../constants/token.limits.constants.cjs");require("../../API/tenderly.api.cjs");const _=require("../transactions-manager/TransactionsManager.cjs");require("../../functions/utils/external-action.utils.cjs");require("../../types/circom-data.types.cjs");require("../../types/transactions.types.cjs");require("../../types/activities.types.cjs");const G=require("../../functions/utils/reloadPage.cjs"),j=require("./hinkalActionVolatile.cjs"),f=require("./hinkalActionPendleLP.cjs"),V=require("../../API/getConnextReceiveFee.cjs"),z=require("./hinkalActionStake.cjs"),J=require("../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs"),Q=require("./hinkalPrivateWallet.cjs"),X=require("../../functions/utils/cacheFunctions.cjs"),Y=require("../../functions/utils/cacheDevice.utils.cjs"),Z=require("../../functions/web3/getContractMetadata.cjs"),$=require("./hinkalGetRecipientInfo.cjs"),ee=require("./hinkalApprove.cjs"),te=require("./hinkalInsideTransact.cjs"),c=require("../../functions/web3/events/getApprovedBalance.cjs"),k=require("../../functions/web3/functionCalls/inHinkalApprovalCalls.cjs"),re=require("./hinkalSignSubAccount.cjs"),ne=require("./hinkalDeploySubAccount.cjs"),ie=require("./hinkalCheckTokenRegistry.cjs"),se=require("./hinkalActionReceive.cjs"),ae=require("./hinkalActionFundApproveAndTransact.cjs"),oe=require("../TokenDBs/PrivateTokensDB.cjs");require("idb-keyval");const ce=require("./hinkalProoflessDeposit.cjs"),he=require("./hinkalProxySwap.cjs"),le=require("./hinkalMultiSend.cjs"),de=require("../../functions/utils/erc20tokenFunctions.cjs");class ue{providerAdapter;userKeys;signingMessage="Login to Hinkal Protocol";merkleTreeHinkal;merkleTreeAccessToken;nullifiers;encryptedOutputs;approvals;commitmentsSnapshotService;nullifierSnapshotService;accessTokenSnapshotService;approvalsSnapshotService;transactionsManager;utxoUtils;cacheDevice;generateProofRemotely;disableMerkleTreeUpdates;constructor(e){this.userKeys=new g.UserKeys(void 0),this.merkleTreeHinkal=T.MerkleTree.create(q.poseidonFunction,0n),this.merkleTreeAccessToken=T.MerkleTree.create(q.poseidonFunction,0n),this.nullifiers=new Set,this.encryptedOutputs=[],this.approvals=new Map,this.transactionsManager=new _.TransactionsManager,this.generateProofRemotely=e?.generateProofRemotely??!1,this.utxoUtils=new J.MultiThreadedUtxoUtils,this.cacheDevice=Y.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1}async initProviderAdapter(e,t){await this.updateProviderAdapter(t),this.providerAdapter?.initConnector(e);const r=await this.connectAndPatchProvider(e);await t.init(r),await this.setListeners()}async initUserKeys(){this.userKeys=new g.UserKeys(await this.getProviderAdapter().signMessage(this.signingMessage))}async initUserKeysWithPassword(e){this.userKeys=new g.UserKeys(e)}async resetMerkle(){this.disableMerkleTreeUpdates||this.isSelectedNetworkSupported()&&await U.resetMerkleTrees(this)}getProviderAdapter(){if(!this.providerAdapter)throw new Error("ProviderAdapter is not initialized");return this.providerAdapter}async waitForTransaction(e,t=1){return!!await this.providerAdapter?.waitForTransaction(e,t)}getContractMetadata(e,t){return this.getProviderAdapter().getContractMetadata(e,t)}getContract(e,t=void 0,r){return this.getProviderAdapter().getContract(e,t,r)}getContractWithFetcherByChainId(e,t,r=void 0){return Z.getContractWithFetcherByChainId(e,t,r)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,t,r){return await this.getProviderAdapter().signTypedData(e,t,r)}async deploySubAccount(e,t){return ne.hinkalDeploySubAccount(this,e,t)}async signWithSubAccount(e,t,r,n){return re.hinkalSignSubAccount(this,e,t,r,n)}getContractWithSigner(e,t=""){return this.getProviderAdapter().getContractWithSigner(e,t)}getContractWithFetcher(e,t=""){return this.getProviderAdapter().getContractWithFetcher(e,t)}getContractWithFetcherForEthereum(e,t){return this.getProviderAdapter().getContractWithFetcherForEthereum(e,t)}isSelectedNetworkSupported(){return!!W.networkRegistry[this.getCurrentChainId()]}async switchNetwork(e){try{await this.getProviderAdapter().switchNetwork(e)}catch{throw new Error(w.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}async switchAccount(e){await this.getProviderAdapter().switchAccount(e)}getCurrentChainId(){const{chainId:e}=this.getProviderAdapter();if(!e)throw new Error("Illegal State: no chainId");return e}getSelectedNetwork(){return this.providerAdapter?.getSelectedNetwork()}isPermitterAvailable(){return this.getProviderAdapter().isPermitterAvailable()}async connectAndPatchProvider(e){return await this.getProviderAdapter().connectAndPatchProvider(e)}async disconnectFromConnector(){await this.getProviderAdapter().disconnectFromConnector()}async updateProviderAdapter(e){try{this.providerAdapter&&this.providerAdapter.release(),this.providerAdapter=e}catch(t){throw console.error(t),Error("updateProviderAdapter failed, please try again.")}}async setListeners(){this.providerAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.getProviderAdapter().onAccountChanged();const e=P.EventType.AccountChanged;typeof document<"u"?document?.dispatchEvent(new Event(e)):process?.emit("message",e,void 0)}async onChainChanged(e){if(e){await this.getProviderAdapter().onChainChanged(e);const t=P.EventType.NetworkChange;typeof document<"u"?document.dispatchEvent(new Event(t)):process?.emit("message",t,void 0)}else await this.disconnectFromConnector(),G.reloadPage()}async monitorConnectedAddress(){D.monitor(await this.getEthereumAddress(),this.getCurrentChainId())}async getBalances(e,t,r,n,i=!1,s){return I.getShieldedBalance(this,e,t,r,n,i,this.generateProofRemotely,s)}async getApprovedBalances(e=!1,t=!1){return c.getApprovedBalance(this,e,t)}async getTotalBalance(e,t,r,n=!1,i){const s=e??this.getCurrentChainId(),a=r??await this.getEthereumAddress(),o=t??this.userKeys,h=await this.getBalances(s,o.getShieldedPrivateKey(),o.getShieldedPublicKey(),a,n,i),l=await this.getApprovedBalances(n,i),F=L.isExtension?await oe.privateTokensDB.getPrivateTokens(s,a):de.getErc20TokensForChain(s),v=[];return F.forEach(A=>{const y=A.erc20TokenAddress.toLowerCase(),d=h.get(y),C=l.get(y),E={token:A,balance:(d?.balance??0n)+(C?.balance??0n),timestamp:d?.timestamp||C?.timestamp||"0",nfts:d?.nfts||[]};v.push(E)}),v}getSupportedPassportLinks(){return O.supportedPassportLinks}checkAccessToken(){return p.checkHinkalAccessToken(this)}async getAxelarEstimate(e,t,r,n){return N.getAxelarGasEstimate(e,t,r,n,this.userKeys.getAccessKey())}async getConnextReceiveFee(e,t){return V.getConnextReceiveFee(this.getCurrentChainId(),e,t)}async mintHinkalAccessToken(e,t){return p.mintAccessToken(this,e,t)}async mintHinkalAccessTokenCrossChain(e,t,r){return p.mintTokenCrossChain(this,e,t,r)}async getHinkalTreeRootHash(){return this.getContractWithFetcher(u.ContractType.HinkalContract).getRootHash()}async getAccessTokenTreeRootHash(){return this.getContractWithFetcher(u.ContractType.AccessTokenContract).getRootHash()}async resetMerkleTreesIfNecessary(){if(!this.isSelectedNetworkSupported())throw new Error(w.transactionErrorCodes.UNSUPPORTED_NETWORK);const[e,t]=await Promise.all([this.getHinkalTreeRootHash(),this.getAccessTokenTreeRootHash()]);(e.toBigInt()!==this.merkleTreeHinkal.getRootHash()||t.toBigInt()!==this.merkleTreeAccessToken.getRootHash())&&(console.log("resetting merkle tree in resetMerkleTreesIfNecessary"),await this.resetMerkle())}async getEventsFromHinkal(){await Promise.all([this.accessTokenSnapshotService?.retrieveEventsFromLatestBlock(),this.commitmentsSnapshotService?.retrieveEventsFromLatestBlock(),this.nullifierSnapshotService?.retrieveEventsFromLatestBlock(),this.approvalsSnapshotService?.retrieveEventsFromLatestBlock()])}getEthereumAddress(){return this.getProviderAdapter().getAddress()}async getRandomRelay(){return(await S.API.getIdleRelay(this.getCurrentChainId())).relay}getGasPrice(){if(!this.providerAdapter?.chainId)throw new Error("Illegal State of providerAdapter in Hinkal: no chainId");return this.providerAdapter.getGasPrice()}getAPI(){return S.API}resetCache(){X.resetCache(this,this.getCurrentChainId(),this.userKeys.getShieldedPublicKey())}snapshotsClearInterval(){this.commitmentsSnapshotService?.intervalClear(),this.accessTokenSnapshotService?.intervalClear(),this.nullifierSnapshotService?.intervalClear(),this.approvalsSnapshotService?.intervalClear()}checkTokenRegistry(e,t){const r=this.getContractWithFetcher(u.ContractType.HinkalHelperContract);return ie.hinkalCheckTokenRegistry(r,e,t)}getRecipientInfo(e=!1){return $.getRecipientInfo(this,e)}async getInteractionApprovals(e){return await k.getInteractionApprovals(this,e)}getApprovedUtxos(e=!1){return c.getApprovedUtxos(this,e)}getApprovedUtxosForToken(e,t=!1){return c.getApprovedUtxosForToken(this,e,t)}getMyApprovalAmountForInteraction(e,t){return c.getMyApprovalAmountForInteraction(this,e,t)}async checkExistingApprovalFromHinkal(e,t){return await k.checkExistingApprovalFromHinkal(this,e,t)}async getBufferEntry(e,t,r){return k.getBufferEntry(this,e,t,r)}async deposit(e,t){return m.hinkalDeposit(this,e,t)}async depositForOther(e,t,r){return m.hinkalDepositForOther(this,e,t,r)}async prooflessDeposit(e,t,r){return ce.hinkalProoflessDeposit(this,e,t,r)}async withdraw(e,t,r,n,i,s,a=!1){return x.hinkalWithdraw(this,e,t,r,n,i,s,a)}async swap(e,t,r,n,i,s,a=!1,o=!1){return b.hinkalSwap(this,e,t,r,n,i,s,a,o)}async actionCurve(e,t,r,n,i,s=!1){return H.hinkalActionCurve(this,e,t,r,n,i,s)}async actionConvex(e,t,r,n,i=!1){return R.hinkalActionConvex(this,e,t,r,n,i)}async actionBeefy(e,t,r,n,i,s,a=!1){return M.hinkalActionBeefy(this,e,t,r,n,i,s,a)}async actionLido(e,t,r,n,i,s=!1){return K.hinkalActionLido(this,e,t,r,n,i,s)}async actionPendle(e,t,r,n,i=!1){return B.hinkalActionPendle(this,e,t,r,n,i)}async actionPendleLP(e,t,r,n,i=!1){return f.hinkalActionPendleLP(this,e,t,r,n,i)}async actionVolatile(e,t,r,n=!1){return j.hinkalActionVolatile(this,e,t,r,n)}async actionStake(e,t,r,n){return z.hinkalActionStake(this,e,t,r,n)}async actionReceive(e,t,r,n,i,s=!1){return se.hinkalActionReceive(this,e,t,r,n,i,s)}async actionFundApproveAndTransact(e,t,r,n,i,s,a,o,h,l){return ae.hinkalActionFundApproveAndTransact(this,e,t,r,n,i,s,a,o,h,l)}async actionPrivateWallet(e,t,r,n=[],i,s,a,o=!1){return Q.hinkalPrivateWallet(this,e,t,r,n,i,s,a,o)}async getPendleLPClaimableParams(e,t){return f.hinkalGetPendleLPClaimableParams(this,e,t)}async approve(e,t,r,n,i=!1){return ee.hinkalApprove(this,e,t,r,n,i)}async hinkalInsideTransact(e,t,r,n,i,s,a=!1){return te.hinkalInsideTransact(this,e,t,r,n,i,s,a)}async proxySwap(e,t,r,n,i,s,a,o=!1){return he.hinkalProxySwap(this,e,t,r,n,i,s,a,o)}async multiSendPrivateRecipients(e,t,r){return le.hinkalMultiSendPrivateRecipients(this,e,t,r)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}}exports.Hinkal=ue;
@@ -36,6 +36,7 @@ import "../../constants/rewards.constants.mjs";
36
36
  import "../../constants/reorg-depths.constants.mjs";
37
37
  import "../../constants/addresses.constants.mjs";
38
38
  import "../../constants/token.limits.constants.mjs";
39
+ import "../../API/tenderly.api.mjs";
39
40
  import { TransactionsManager as _ } from "../transactions-manager/TransactionsManager.mjs";
40
41
  import "../../functions/utils/external-action.utils.mjs";
41
42
  import "../../types/circom-data.types.mjs";
@@ -67,7 +68,7 @@ import { hinkalProoflessDeposit as ke } from "./hinkalProoflessDeposit.mjs";
67
68
  import { hinkalProxySwap as fe } from "./hinkalProxySwap.mjs";
68
69
  import { hinkalMultiSendPrivateRecipients as Ae } from "./hinkalMultiSend.mjs";
69
70
  import { getErc20TokensForChain as ye } from "../../functions/utils/erc20tokenFunctions.mjs";
70
- class Kt {
71
+ class Lt {
71
72
  providerAdapter;
72
73
  userKeys;
73
74
  signingMessage = "Login to Hinkal Protocol";
@@ -86,7 +87,7 @@ class Kt {
86
87
  generateProofRemotely;
87
88
  disableMerkleTreeUpdates;
88
89
  constructor(e) {
89
- this.userKeys = new d(void 0), this.merkleTreeHinkal = f.create(y, 25n, 0n), this.merkleTreeAccessToken = f.create(y, 25n, 0n), this.nullifiers = /* @__PURE__ */ new Set(), this.encryptedOutputs = [], this.approvals = /* @__PURE__ */ new Map(), this.transactionsManager = new _(), this.generateProofRemotely = e?.generateProofRemotely ?? !1, this.utxoUtils = new X(), this.cacheDevice = $(e), this.disableMerkleTreeUpdates = e?.disableMerkleTreeUpdates ?? !1;
90
+ this.userKeys = new d(void 0), this.merkleTreeHinkal = f.create(y, 0n), this.merkleTreeAccessToken = f.create(y, 0n), this.nullifiers = /* @__PURE__ */ new Set(), this.encryptedOutputs = [], this.approvals = /* @__PURE__ */ new Map(), this.transactionsManager = new _(), this.generateProofRemotely = e?.generateProofRemotely ?? !1, this.utxoUtils = new X(), this.cacheDevice = $(e), this.disableMerkleTreeUpdates = e?.disableMerkleTreeUpdates ?? !1;
90
91
  }
91
92
  async initProviderAdapter(e, t) {
92
93
  await this.updateProviderAdapter(t), this.providerAdapter?.initConnector(e);
@@ -485,5 +486,5 @@ class Kt {
485
486
  }
486
487
  }
487
488
  export {
488
- Kt as Hinkal
489
+ Lt as Hinkal
489
490
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../functions/snarkjs/common.snarkjs.cjs"),C=require("../../functions/web3/etherFunctions.cjs"),l=require("../../types/ethereum-network.types.cjs"),k=require("../utxo/Utxo.cjs"),u=require("../../constants/protocol.constants.cjs"),h=require("../../functions/utils/caseInsensitive.utils.cjs"),A=(n,e)=>{const r=[];let o=0;for(let s=0;s<n.length;s+=1){let a=!1;for(let t=0;t<o;t+=1)if(h.caseInsensitiveEqual(r[t].token.erc20TokenAddress,n[s].erc20TokenAddress)){r[t].balance+=e[s],a=!0;break}a||(r[o]={token:n[s],balance:e[s]},o+=1)}return r},y=async(n,e,r)=>{const o=A(e,r),a=n.getContractWithSigner(l.ContractType.HinkalContract).address;for(let t=0;t<o.length;t+=1)h.caseInsensitiveEqual(o[t].token.erc20TokenAddress,u.zeroAddress)&&await n.getContractWithSigner(l.ContractType.ERC20Contract,o[t].token.erc20TokenAddress).approve(a,o[t].balance)},q=async(n,e,r,o)=>{const s=n.getContractWithSigner(l.ContractType.HinkalContract),a=n.userKeys.getShieldedPrivateKey(),t=k.Utxo.findCorrectRandomization(C.randomBigInt(31),a),c=o??Array(e.length).fill(f.calcStealthAddressStructure(t,a));if(c.length!==e.length)throw new Error("Stealth address structures length must be equal to erc20 tokens length");await y(n,e,r);const g=e.findIndex(i=>i.erc20TokenAddress===u.zeroAddress),p=r[g]??0n,d=await s.prooflessDeposit(e.map(({erc20TokenAddress:i})=>i),r,e.map(()=>0n),c,{value:p});return await d.wait(),d};exports.hinkalProoflessDeposit=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../functions/snarkjs/common.snarkjs.cjs"),C=require("../../functions/web3/etherFunctions.cjs"),l=require("../../types/ethereum-network.types.cjs"),k=require("../utxo/Utxo.cjs"),h=require("../../constants/protocol.constants.cjs"),g=require("../../functions/utils/caseInsensitive.utils.cjs"),A=(n,e)=>{const r=[];let o=0;for(let s=0;s<n.length;s+=1){let a=!1;for(let t=0;t<o;t+=1)if(g.caseInsensitiveEqual(r[t].token.erc20TokenAddress,n[s].erc20TokenAddress)){r[t].balance+=e[s],a=!0;break}a||(r[o]={token:n[s],balance:e[s]},o+=1)}return r},y=async(n,e,r)=>{const o=A(e,r),a=n.getContractWithSigner(l.ContractType.HinkalContract).address;for(let t=0;t<o.length;t+=1)g.caseInsensitiveEqual(o[t].token.erc20TokenAddress,h.zeroAddress)||await(await n.getContractWithSigner(l.ContractType.ERC20Contract,o[t].token.erc20TokenAddress).approve(a,o[t].balance)).wait()},q=async(n,e,r,o)=>{const s=n.getContractWithSigner(l.ContractType.HinkalContract),a=n.userKeys.getShieldedPrivateKey(),t=k.Utxo.findCorrectRandomization(C.randomBigInt(31),a),i=o??Array(e.length).fill(f.calcStealthAddressStructure(t,a));if(i.length!==e.length)throw new Error("Stealth address structures length must be equal to erc20 tokens length");await y(n,e,r);const d=e.findIndex(c=>c.erc20TokenAddress===h.zeroAddress),p=r[d]??0n,u=await s.prooflessDeposit(e.map(({erc20TokenAddress:c})=>c),r,e.map(()=>0n),i,{value:p});return await u.wait(),u};exports.hinkalProoflessDeposit=q;
@@ -2,15 +2,15 @@ import { calcStealthAddressStructure as m } from "../../functions/snarkjs/common
2
2
  import { randomBigInt as g } from "../../functions/web3/etherFunctions.mjs";
3
3
  import { ContractType as l } from "../../types/ethereum-network.types.mjs";
4
4
  import { Utxo as A } from "../utxo/Utxo.mjs";
5
- import { zeroAddress as f } from "../../constants/protocol.constants.mjs";
6
- import { caseInsensitiveEqual as h } from "../../functions/utils/caseInsensitive.utils.mjs";
5
+ import { zeroAddress as h } from "../../constants/protocol.constants.mjs";
6
+ import { caseInsensitiveEqual as p } from "../../functions/utils/caseInsensitive.utils.mjs";
7
7
  const C = (r, e) => {
8
8
  const n = [];
9
9
  let o = 0;
10
10
  for (let a = 0; a < r.length; a += 1) {
11
11
  let s = !1;
12
12
  for (let t = 0; t < o; t += 1)
13
- if (h(n[t].token.erc20TokenAddress, r[a].erc20TokenAddress)) {
13
+ if (p(n[t].token.erc20TokenAddress, r[a].erc20TokenAddress)) {
14
14
  n[t].balance += e[a], s = !0;
15
15
  break;
16
16
  }
@@ -23,23 +23,23 @@ const C = (r, e) => {
23
23
  }, k = async (r, e, n) => {
24
24
  const o = C(e, n), s = r.getContractWithSigner(l.HinkalContract).address;
25
25
  for (let t = 0; t < o.length; t += 1)
26
- h(o[t].token.erc20TokenAddress, f) && await r.getContractWithSigner(
26
+ p(o[t].token.erc20TokenAddress, h) || await (await r.getContractWithSigner(
27
27
  l.ERC20Contract,
28
28
  o[t].token.erc20TokenAddress
29
- ).approve(s, o[t].balance);
29
+ ).approve(s, o[t].balance)).wait();
30
30
  }, q = async (r, e, n, o) => {
31
31
  const a = r.getContractWithSigner(l.HinkalContract), s = r.userKeys.getShieldedPrivateKey(), t = A.findCorrectRandomization(g(31), s), i = o ?? Array(e.length).fill(m(t, s));
32
32
  if (i.length !== e.length)
33
33
  throw new Error("Stealth address structures length must be equal to erc20 tokens length");
34
34
  await k(r, e, n);
35
- const p = e.findIndex((c) => c.erc20TokenAddress === f), u = n[p] ?? 0n, d = await a.prooflessDeposit(
35
+ const d = e.findIndex((c) => c.erc20TokenAddress === h), u = n[d] ?? 0n, f = await a.prooflessDeposit(
36
36
  e.map(({ erc20TokenAddress: c }) => c),
37
37
  n,
38
38
  e.map(() => 0n),
39
39
  i,
40
40
  { value: u }
41
41
  );
42
- return await d.wait(), d;
42
+ return await f.wait(), f;
43
43
  };
44
44
  export {
45
45
  q as hinkalProoflessDeposit
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("ethers"),d=require("idb-keyval"),b=require("../../API/API.cjs"),y=require("../../constants/chains.constants.cjs"),L=require("../../error-handling/logger.cjs"),P=require("../../functions/utils/caseInsensitive.utils.cjs"),g=require("../../types/cache.types.cjs"),k=require("../../functions/utils/string.utils.cjs"),K=require("../../constants/protocol.constants.cjs");class B{fetchedTokens={};transferEventTopic=f.ethers.utils.id("Transfer(address,address,uint256)");INITIAL_BLOCKS={[y.chainIds.optimism]:124883692};async getPublicTokens(e,t){const o=k.getStateKey(t,e);return(await d.get(g.StorageKeys.PUBLIC_TOKENS))?.[o]||[]}async getLastProcessedBlock(e,t){const o=await d.get(g.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS)||{},s=k.getStateKey(t,e);return o[s]||this.INITIAL_BLOCKS[e]}async updateLastProcessedBlock(e,t,o){await d.update(g.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS,(s={})=>{const r=k.getStateKey(t,e);return{...s,[r]:o}})}async fetchPublicTokens(e,t,o){try{const{fetchRpcUrl:s}=y.networkRegistry[t];if(!s)throw Error("No fetchRpcUrl in PublicTokensDB");const r=new f.ethers.providers.JsonRpcProvider(s),i=await this.getLastProcessedBlock(t,e),a=await r.getBlockNumber(),n=f.ethers.utils.hexZeroPad(e.toLowerCase(),32),l={topics:[this.transferEventTopic,null,n],fromBlock:i},p={topics:[this.transferEventTopic,n,null],fromBlock:i},[S,T]=await Promise.all([r.getLogs(l),r.getLogs(p)]),u=[...S,...T],h=[K.zeroAddress,...new Set(u.map(c=>c.address))].filter(c=>c&&!P.lowerCaseIncludes(o,c));return h.length?{erc20Tokens:(await b.API.tokensInfoCall(t,h)).filter(c=>!!c),latestBlock:a}:{erc20Tokens:[],latestBlock:a}}catch(s){return L.Logger.error("Error fetching public tokens:",s),{erc20Tokens:[],latestBlock:void 0}}}async fetchAndUpdatePublicTokens(e,t){const s=(await this.getPublicTokens(t,e)).map(n=>n.erc20TokenAddress),{erc20Tokens:r,latestBlock:i}=await this.fetchPublicTokens(e,t,s),a=k.getStateKey(e,t);await d.update(g.StorageKeys.PUBLIC_TOKENS,(n={})=>{const l=n[a]||[],p=l.map(u=>u.erc20TokenAddress),S=r.filter(u=>!P.lowerCaseIncludes(p,u.erc20TokenAddress));l.push(...S);const T={...n,[a]:l};return this.fetchedTokens=T,T}),i&&await this.updateLastProcessedBlock(t,e,i)}getFetchedTokens(e,t){const o=k.getStateKey(t,e);return this.fetchedTokens[o]||[]}}const w=new B;exports.PublicTokensDB=B;exports.publicTokensDB=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("ethers"),h=require("idb-keyval"),B=require("../../API/API.cjs"),n=require("../../constants/chains.constants.cjs"),L=require("../../error-handling/logger.cjs"),P=require("../../functions/utils/caseInsensitive.utils.cjs"),g=require("../../types/cache.types.cjs"),T=require("../../functions/utils/string.utils.cjs"),K=require("../../constants/protocol.constants.cjs");class b{fetchedTokens={};transferEventTopic=S.ethers.utils.id("Transfer(address,address,uint256)");INITIAL_BLOCKS={[n.chainIds.arbMainnet]:339713830,[n.chainIds.avalanche]:62576092,[n.chainIds.base]:30613576,[n.chainIds.bnbMainnet]:50188154,[n.chainIds.ethMainnet]:22548343,[n.chainIds.optimism]:136203723,[n.chainIds.polygon]:71872141};async getPublicTokens(e,t){const o=T.getStateKey(t,e);return(await h.get(g.StorageKeys.PUBLIC_TOKENS))?.[o]||[]}async getLastProcessedBlock(e,t){const o=await h.get(g.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS)||{},s=T.getStateKey(t,e);return o[s]||this.INITIAL_BLOCKS[e]}async updateLastProcessedBlock(e,t,o){await h.update(g.StorageKeys.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS,(s={})=>{const r=T.getStateKey(t,e);return{...s,[r]:o}})}async fetchPublicTokens(e,t,o){try{const{fetchRpcUrl:s}=n.networkRegistry[t];if(!s)throw Error("No fetchRpcUrl in PublicTokensDB");const r=new S.ethers.providers.JsonRpcProvider(s),a=await this.getLastProcessedBlock(t,e),l=await r.getBlockNumber(),c=S.ethers.utils.hexZeroPad(e.toLowerCase(),32),u={topics:[this.transferEventTopic,null,c],fromBlock:a},p={topics:[this.transferEventTopic,c,null],fromBlock:a},[y,d]=await Promise.all([r.getLogs(u),r.getLogs(p)]),k=[...y,...d],f=[K.zeroAddress,...new Set(k.map(i=>i.address))].filter(i=>i&&!P.lowerCaseIncludes(o,i));return f.length?{erc20Tokens:(await B.API.tokensInfoCall(t,f)).filter(i=>!!i),latestBlock:l}:{erc20Tokens:[],latestBlock:l}}catch(s){return L.Logger.error("Error fetching public tokens:",s),{erc20Tokens:[],latestBlock:void 0}}}async fetchAndUpdatePublicTokens(e,t){const s=(await this.getPublicTokens(t,e)).map(c=>c.erc20TokenAddress),{erc20Tokens:r,latestBlock:a}=await this.fetchPublicTokens(e,t,s),l=T.getStateKey(e,t);await h.update(g.StorageKeys.PUBLIC_TOKENS,(c={})=>{const u=c[l]||[],p=u.map(k=>k.erc20TokenAddress),y=r.filter(k=>!P.lowerCaseIncludes(p,k.erc20TokenAddress));u.push(...y);const d={...c,[l]:u};return this.fetchedTokens=d,d}),a&&await this.updateLastProcessedBlock(t,e,a)}getFetchedTokens(e,t){const o=T.getStateKey(t,e);return this.fetchedTokens[o]||[]}}const w=new b;exports.PublicTokensDB=b;exports.publicTokensDB=w;
@@ -1,30 +1,35 @@
1
- import { ethers as m } from "ethers";
2
- import { get as B, update as h } from "idb-keyval";
1
+ import { ethers as h } from "ethers";
2
+ import { get as B, update as L } from "idb-keyval";
3
3
  import { API as g } from "../../API/API.mjs";
4
- import { chainIds as S, networkRegistry as w } from "../../constants/chains.constants.mjs";
5
- import { Logger as E } from "../../error-handling/logger.mjs";
6
- import { lowerCaseIncludes as L } from "../../functions/utils/caseInsensitive.utils.mjs";
7
- import { StorageKeys as u } from "../../types/cache.types.mjs";
8
- import { getStateKey as T } from "../../functions/utils/string.utils.mjs";
9
- import { zeroAddress as b } from "../../constants/protocol.constants.mjs";
4
+ import { chainIds as c, networkRegistry as S } from "../../constants/chains.constants.mjs";
5
+ import { Logger as w } from "../../error-handling/logger.mjs";
6
+ import { lowerCaseIncludes as b } from "../../functions/utils/caseInsensitive.utils.mjs";
7
+ import { StorageKeys as f } from "../../types/cache.types.mjs";
8
+ import { getStateKey as p } from "../../functions/utils/string.utils.mjs";
9
+ import { zeroAddress as E } from "../../constants/protocol.constants.mjs";
10
10
  class y {
11
11
  fetchedTokens = {};
12
- transferEventTopic = m.utils.id("Transfer(address,address,uint256)");
13
- // ToDo: replace this with hinkal deployment block
12
+ transferEventTopic = h.utils.id("Transfer(address,address,uint256)");
14
13
  INITIAL_BLOCKS = {
15
- [S.optimism]: 124883692
14
+ [c.arbMainnet]: 339713830,
15
+ [c.avalanche]: 62576092,
16
+ [c.base]: 30613576,
17
+ [c.bnbMainnet]: 50188154,
18
+ [c.ethMainnet]: 22548343,
19
+ [c.optimism]: 136203723,
20
+ [c.polygon]: 71872141
16
21
  };
17
22
  async getPublicTokens(e, t) {
18
- const o = T(t, e);
19
- return (await B(u.PUBLIC_TOKENS))?.[o] || [];
23
+ const o = p(t, e);
24
+ return (await B(f.PUBLIC_TOKENS))?.[o] || [];
20
25
  }
21
26
  async getLastProcessedBlock(e, t) {
22
- const o = await B(u.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS) || {}, s = T(t, e);
27
+ const o = await B(f.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS) || {}, s = p(t, e);
23
28
  return o[s] || this.INITIAL_BLOCKS[e];
24
29
  }
25
30
  async updateLastProcessedBlock(e, t, o) {
26
- await h(u.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS, (s = {}) => {
27
- const r = T(t, e);
31
+ await L(f.PUBLIC_TOKENS_LAST_PROCESSED_BLOCKS, (s = {}) => {
32
+ const r = p(t, e);
28
33
  return {
29
34
  ...s,
30
35
  [r]: o
@@ -33,49 +38,49 @@ class y {
33
38
  }
34
39
  async fetchPublicTokens(e, t, o) {
35
40
  try {
36
- const { fetchRpcUrl: s } = w[t];
41
+ const { fetchRpcUrl: s } = S[t];
37
42
  if (!s)
38
43
  throw Error("No fetchRpcUrl in PublicTokensDB");
39
- const r = new m.providers.JsonRpcProvider(s), i = await this.getLastProcessedBlock(t, e), a = await r.getBlockNumber(), n = m.utils.hexZeroPad(e.toLowerCase(), 32), k = {
44
+ const r = new h.providers.JsonRpcProvider(s), a = await this.getLastProcessedBlock(t, e), l = await r.getBlockNumber(), n = h.utils.hexZeroPad(e.toLowerCase(), 32), k = {
40
45
  topics: [this.transferEventTopic, null, n],
41
- fromBlock: i
42
- }, f = {
46
+ fromBlock: a
47
+ }, d = {
43
48
  topics: [this.transferEventTopic, n, null],
44
- fromBlock: i
45
- }, [d, p] = await Promise.all([r.getLogs(k), r.getLogs(f)]), l = [...d, ...p], P = [b, ...new Set(l.map((c) => c.address))].filter(
46
- (c) => c && !L(o, c)
49
+ fromBlock: a
50
+ }, [m, u] = await Promise.all([r.getLogs(k), r.getLogs(d)]), T = [...m, ...u], P = [E, ...new Set(T.map((i) => i.address))].filter(
51
+ (i) => i && !b(o, i)
47
52
  );
48
53
  return P.length ? { erc20Tokens: (await g.tokensInfoCall(t, P)).filter(
49
- (c) => !!c
50
- ), latestBlock: a } : { erc20Tokens: [], latestBlock: a };
54
+ (i) => !!i
55
+ ), latestBlock: l } : { erc20Tokens: [], latestBlock: l };
51
56
  } catch (s) {
52
- return E.error("Error fetching public tokens:", s), { erc20Tokens: [], latestBlock: void 0 };
57
+ return w.error("Error fetching public tokens:", s), { erc20Tokens: [], latestBlock: void 0 };
53
58
  }
54
59
  }
55
60
  // this function should be called when:
56
61
  // 1) user first initiates wallet on a given chain
57
62
  // 2) user manually press refresh balances button
58
63
  async fetchAndUpdatePublicTokens(e, t) {
59
- const s = (await this.getPublicTokens(t, e)).map((n) => n.erc20TokenAddress), { erc20Tokens: r, latestBlock: i } = await this.fetchPublicTokens(e, t, s), a = T(e, t);
60
- await h(u.PUBLIC_TOKENS, (n = {}) => {
61
- const k = n[a] || [], f = k.map((l) => l.erc20TokenAddress), d = r.filter(
62
- (l) => !L(f, l.erc20TokenAddress)
64
+ const s = (await this.getPublicTokens(t, e)).map((n) => n.erc20TokenAddress), { erc20Tokens: r, latestBlock: a } = await this.fetchPublicTokens(e, t, s), l = p(e, t);
65
+ await L(f.PUBLIC_TOKENS, (n = {}) => {
66
+ const k = n[l] || [], d = k.map((T) => T.erc20TokenAddress), m = r.filter(
67
+ (T) => !b(d, T.erc20TokenAddress)
63
68
  );
64
- k.push(...d);
65
- const p = {
69
+ k.push(...m);
70
+ const u = {
66
71
  ...n,
67
- [a]: k
72
+ [l]: k
68
73
  };
69
- return this.fetchedTokens = p, p;
70
- }), i && await this.updateLastProcessedBlock(t, e, i);
74
+ return this.fetchedTokens = u, u;
75
+ }), a && await this.updateLastProcessedBlock(t, e, a);
71
76
  }
72
77
  getFetchedTokens(e, t) {
73
- const o = T(t, e);
78
+ const o = p(t, e);
74
79
  return this.fetchedTokens[o] || [];
75
80
  }
76
81
  }
77
- const x = new y();
82
+ const M = new y();
78
83
  export {
79
84
  y as PublicTokensDB,
80
- x as publicTokensDB
85
+ M as publicTokensDB
81
86
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../constants/protocol.constants.cjs"),a=require("../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const n=require("../../functions/utils/amounts.utils.cjs"),o=require("../merkle-tree/MerkleTree.cjs");require("ethers");require("../../error-handling/error-codes.constants.cjs");const l=require("./AbstractSnapshotService.cjs"),u=require("../../functions/utils/merkleTree.utils.cjs");class i extends l.AbstractSnapshotService{constructor(e,s,r,d){super(e,{name:"NewAccessKeyAdded",args:["accessKey","index","senderAddress"]},s,r,d)}_merkleTree;_senderAddresses;_senderAddressIndexMap;get merkleTree(){return this._merkleTree}get senderAddresses(){return this._senderAddresses}get senderAddressIndexMap(){return this._senderAddressIndexMap}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),senderAddresses:Array.from(e.payload.senderAddresses),latestBlockNumber:e.latestBlockNumber,reserveBlockNumber:e.reserveBlockNumber,senderAddressIndexMap:Array.from(e.payload.senderAddressIndexMap).map(([s,r])=>({address:s,index:r}))}}deserializeSnapshot(e){let s,r;return e.latestBlockNumber&&e.merkleTree?s=u.contructMerkleTreeFromSerialized(e.merkleTree):s=o.MerkleTree.create(a.poseidonFunction,25n,0n),e.latestBlockNumber&&e.senderAddressIndexMap?r=new Map(e.senderAddressIndexMap.map(({address:d,index:t})=>[d,t])):r=new Map,{latestBlockNumber:e.latestBlockNumber??0,reserveBlockNumber:e.reserveBlockNumber??0,payload:{merkleTree:s,senderAddresses:e.senderAddresses??[],senderAddressIndexMap:r}}}acceptEvent(e,s){try{return this._merkleTree.insert(e.accessKey,e.index),this._senderAddressIndexMap.set(e.senderAddress,Math.max(Number(e.index),this._senderAddressIndexMap.get(e.senderAddress)??0)),this._senderAddresses.includes(e.senderAddress)||this._senderAddresses.push(e.senderAddress),e.accessKey===0n&&e.senderAddress===c.zeroAddress&&this._merkleTree.remove(e.index),!0}catch(r){return console.error(r),!1}}mapEvent(e){const{accessKey:s,index:r,senderAddress:d}=e;return{accessKey:n.toBigInt(s),index:n.toBigInt(r),senderAddress:d}}getSnapshotPayload(){return{merkleTree:this._merkleTree,senderAddresses:this._senderAddresses,senderAddressIndexMap:this._senderAddressIndexMap}}populateSnapshot({payload:{merkleTree:e,senderAddresses:s,senderAddressIndexMap:r}}){this._merkleTree=e,this._senderAddresses=s,this._senderAddressIndexMap=r}}exports.AbstractAccessTokenSnapshotService=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../constants/protocol.constants.cjs"),a=require("../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const n=require("../../functions/utils/amounts.utils.cjs"),o=require("../merkle-tree/MerkleTree.cjs");require("ethers");require("../../error-handling/error-codes.constants.cjs");const l=require("./AbstractSnapshotService.cjs"),u=require("../../functions/utils/merkleTree.utils.cjs");class i extends l.AbstractSnapshotService{constructor(e,s,r,d){super(e,{name:"NewAccessKeyAdded",args:["accessKey","index","senderAddress"]},s,r,d)}_merkleTree;_senderAddresses;_senderAddressIndexMap;get merkleTree(){return this._merkleTree}get senderAddresses(){return this._senderAddresses}get senderAddressIndexMap(){return this._senderAddressIndexMap}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),senderAddresses:Array.from(e.payload.senderAddresses),latestBlockNumber:e.latestBlockNumber,reserveBlockNumber:e.reserveBlockNumber,senderAddressIndexMap:Array.from(e.payload.senderAddressIndexMap).map(([s,r])=>({address:s,index:r}))}}deserializeSnapshot(e){let s,r;return e.latestBlockNumber&&e.merkleTree?s=u.contructMerkleTreeFromSerialized(e.merkleTree):s=o.MerkleTree.create(a.poseidonFunction,0n),e.latestBlockNumber&&e.senderAddressIndexMap?r=new Map(e.senderAddressIndexMap.map(({address:d,index:t})=>[d,t])):r=new Map,{latestBlockNumber:e.latestBlockNumber??0,reserveBlockNumber:e.reserveBlockNumber??0,payload:{merkleTree:s,senderAddresses:e.senderAddresses??[],senderAddressIndexMap:r}}}acceptEvent(e,s){try{return this._merkleTree.insert(e.accessKey,e.index),this._senderAddressIndexMap.set(e.senderAddress,Math.max(Number(e.index),this._senderAddressIndexMap.get(e.senderAddress)??0)),this._senderAddresses.includes(e.senderAddress)||this._senderAddresses.push(e.senderAddress),e.accessKey===0n&&e.senderAddress===c.zeroAddress&&this._merkleTree.remove(e.index),!0}catch(r){return console.error(r),!1}}mapEvent(e){const{accessKey:s,index:r,senderAddress:d}=e;return{accessKey:n.toBigInt(s),index:n.toBigInt(r),senderAddress:d}}getSnapshotPayload(){return{merkleTree:this._merkleTree,senderAddresses:this._senderAddresses,senderAddressIndexMap:this._senderAddressIndexMap}}populateSnapshot({payload:{merkleTree:e,senderAddresses:s,senderAddressIndexMap:r}}){this._merkleTree=e,this._senderAddresses=s,this._senderAddressIndexMap=r}}exports.AbstractAccessTokenSnapshotService=i;
@@ -49,7 +49,7 @@ class f extends c {
49
49
  }
50
50
  deserializeSnapshot(e) {
51
51
  let s, r;
52
- return e.latestBlockNumber && e.merkleTree ? s = l(e.merkleTree) : s = a.create(o, 25n, 0n), e.latestBlockNumber && e.senderAddressIndexMap ? r = new Map(
52
+ return e.latestBlockNumber && e.merkleTree ? s = l(e.merkleTree) : s = a.create(o, 0n), e.latestBlockNumber && e.senderAddressIndexMap ? r = new Map(
53
53
  e.senderAddressIndexMap.map(({ address: d, index: n }) => [d, n])
54
54
  ) : r = /* @__PURE__ */ new Map(), {
55
55
  latestBlockNumber: e.latestBlockNumber ?? 0,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const n=require("../merkle-tree/MerkleTree.cjs");require("ethers");require("../../error-handling/error-codes.constants.cjs");const s=require("../../functions/utils/amounts.utils.cjs"),c=require("./AbstractSnapshotService.cjs"),l=require("../../functions/utils/merkleTree.utils.cjs");class m extends c.AbstractSnapshotService{constructor(e,t,r,u){super(e,{name:"NewCommitment",args:["commitment","index","encryptedOutput"]},t,r,u)}_merkleTree;_encryptedOutputs;get merkleTree(){return this._merkleTree}get encryptedOutputs(){return this._encryptedOutputs}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),latestBlockNumber:e.latestBlockNumber,reserveBlockNumber:e.reserveBlockNumber,encryptedOutputs:e.payload.encryptedOutputs.map(t=>({value:t.value,isPositive:String(t.isPositive)}))}}deserializeSnapshot(e){let t;e.latestBlockNumber&&e.merkleTree?t=l.contructMerkleTreeFromSerialized(e.merkleTree):t=n.MerkleTree.create(i.poseidonFunction,25n,0n);const r=e.encryptedOutputs?.map(u=>({value:u.value,isPositive:JSON.parse(u.isPositive)}));return{latestBlockNumber:e.latestBlockNumber??0,reserveBlockNumber:e.reserveBlockNumber??0,payload:{merkleTree:t,encryptedOutputs:r||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:e,encryptedOutputs:t}}){this._merkleTree=e,this._encryptedOutputs=t}mapEvent(e){const{commitment:t,index:r,encryptedOutput:u}=e;return{commitment:s.toBigInt(t),index:s.toBigInt(r),encryptedOutput:u}}acceptEvent(e,t){if(!this.encryptedOutputs.map(r=>r.value).includes(e.encryptedOutput)){if(!this._merkleTree.insert(e.commitment,e.index>=0?e.index:-1n*e.index))return!1;const u={value:e.encryptedOutput,isPositive:e.index>=0n};return this._encryptedOutputs.push(u),!0}return!1}}exports.AbstractCommitmentsSnapshotService=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../crypto/poseidon.cjs");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");const n=require("../merkle-tree/MerkleTree.cjs");require("ethers");require("../../error-handling/error-codes.constants.cjs");const s=require("../../functions/utils/amounts.utils.cjs"),c=require("./AbstractSnapshotService.cjs"),l=require("../../functions/utils/merkleTree.utils.cjs");class m extends c.AbstractSnapshotService{constructor(e,t,r,u){super(e,{name:"NewCommitment",args:["commitment","index","encryptedOutput"]},t,r,u)}_merkleTree;_encryptedOutputs;get merkleTree(){return this._merkleTree}get encryptedOutputs(){return this._encryptedOutputs}serializeSnapshot(e){return{merkleTree:e.payload.merkleTree.toJSON(),latestBlockNumber:e.latestBlockNumber,reserveBlockNumber:e.reserveBlockNumber,encryptedOutputs:e.payload.encryptedOutputs.map(t=>({value:t.value,isPositive:String(t.isPositive)}))}}deserializeSnapshot(e){let t;e.latestBlockNumber&&e.merkleTree?t=l.contructMerkleTreeFromSerialized(e.merkleTree):t=n.MerkleTree.create(i.poseidonFunction,0n);const r=e.encryptedOutputs?.map(u=>({value:u.value,isPositive:JSON.parse(u.isPositive)}));return{latestBlockNumber:e.latestBlockNumber??0,reserveBlockNumber:e.reserveBlockNumber??0,payload:{merkleTree:t,encryptedOutputs:r||[]}}}getSnapshotPayload(){return{merkleTree:this._merkleTree,encryptedOutputs:this._encryptedOutputs}}populateSnapshot({payload:{merkleTree:e,encryptedOutputs:t}}){this._merkleTree=e,this._encryptedOutputs=t}mapEvent(e){const{commitment:t,index:r,encryptedOutput:u}=e;return{commitment:s.toBigInt(t),index:s.toBigInt(r),encryptedOutput:u}}acceptEvent(e,t){if(!this.encryptedOutputs.map(r=>r.value).includes(e.encryptedOutput)){if(!this._merkleTree.insert(e.commitment,e.index>=0?e.index:-1n*e.index))return!1;const u={value:e.encryptedOutput,isPositive:e.index>=0n};return this._encryptedOutputs.push(u),!0}return!1}}exports.AbstractCommitmentsSnapshotService=m;
@@ -8,7 +8,7 @@ import "ethers";
8
8
  import "../../error-handling/error-codes.constants.mjs";
9
9
  import { toBigInt as m } from "../../functions/utils/amounts.utils.mjs";
10
10
  import { AbstractSnapshotService as p } from "./AbstractSnapshotService.mjs";
11
- import { contructMerkleTreeFromSerialized as n } from "../../functions/utils/merkleTree.utils.mjs";
11
+ import { contructMerkleTreeFromSerialized as c } from "../../functions/utils/merkleTree.utils.mjs";
12
12
  class _ extends p {
13
13
  constructor(e, t, r, u) {
14
14
  super(
@@ -43,7 +43,7 @@ class _ extends p {
43
43
  }
44
44
  deserializeSnapshot(e) {
45
45
  let t;
46
- e.latestBlockNumber && e.merkleTree ? t = n(e.merkleTree) : t = i.create(s, 25n, 0n);
46
+ e.latestBlockNumber && e.merkleTree ? t = c(e.merkleTree) : t = i.create(s, 0n);
47
47
  const r = e.encryptedOutputs?.map((u) => ({
48
48
  value: u.value,
49
49
  isPositive: JSON.parse(u.isPositive)
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../../error-handling/logError.cjs"),u=require("./MerkleTreeIncompleteError.cjs");class o{constructor(t,e,r,s,i,n,h){this.hashFunction=t,this.levels=e,this.defaultNodeValue=r,this.tree=s??new Map,this.count=h??0n,this.index=n??2n**(e-1n),i?this.reverseTree=i:this.reverseTree=this.createReverseTree()}tree;count;index;reverseTree;static createWithData(t,e,r,s,i,n,h){return new o(i,n,h,t,e,r,s)}static create(t,e,r){return new o(t,e,r)}createReverseTree(){const t=new Map;for(let e=this.getStartIndex();e<this.getStartIndex()+this.count;e+=1n){const r=this.tree.get(e);r!==void 0&&t.set(r,e)}return t}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(t){let e=0n;for(;2n**e<t;)e+=1n;return e}bigIntMax(t,e){return t>e?t:e}forceInsert(t,e){if(e<this.getStartIndex())throw new RangeError;this.tree.set(e,t),this.reverseTree.set(t,e);const r=this.index-this.getStartIndex(),s=this.logarithm2(r);let i=e;for(let n=1n;n<=s;n+=1n){i/=2n;const h=this.hashFunction(this.tree.get(i*2n)||this.defaultNodeValue,this.tree.get(i*2n+1n)||this.defaultNodeValue);this.tree.set(i,h)}}insert(t,e){let r=!1;return this.tree.has(e)&&(r=!0,l.logError(`Editing commitment index: ${e} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,e+1n),this.forceInsert(t,e),!0}remove(t){this.forceInsert(this.defaultNodeValue,t)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new u.MerkleTreeIncompleteError}getRootHash(){this.completenessCheck();for(let t=1n;t<2n**this.levels;t*=2n)if(this.tree.get(t))return this.tree.get(t);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getSiblingIndex(t){return t===1n?1n:t%2n===1n?t-1n:t+1n}getSiblingHashesForVerification(t){this.completenessCheck();let e=this.reverseTree.get(t);if(e===void 0)return new Array(Number(this.levels)).fill(0n);const r=[];for(;e!==0n;)r.push(this.tree.get(this.getSiblingIndex(e))||this.defaultNodeValue),e/=2n;return r}getSiblingSides(t){this.completenessCheck();let e=this.reverseTree.get(t);if(e===void 0)return new Array(Number(this.levels)).fill(0n);const r=[];for(;e!==0n;){const s=e%2n===0n?0n:1n;r.push(s),e/=2n}return r}toJSON(){const{tree:t,reverseTree:e,count:r,index:s}=this;return{tree:Object.fromEntries(t),reverseTree:Object.fromEntries(e),count:r.toString(),index:s.toString()}}clone(){return o.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}}exports.MerkleTree=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../constants/protocol.constants.cjs"),c=require("../../error-handling/logError.cjs"),u=require("./MerkleTreeIncompleteError.cjs");class l{constructor(t,e,r,n,s,i,h){this.hashFunction=t,this.levels=e,this.defaultNodeValue=r,this.tree=n??new Map,this.count=h??0n,this.index=i??2n**(e-1n),s?this.reverseTree=s:this.reverseTree=this.createReverseTree()}tree;count;index;reverseTree;static createWithData(t,e,r,n,s,i,h){return new l(s,i,h,t,e,r,n)}static create(t,e,r=o.MERKLE_LEVELS){return new l(t,r,e)}createReverseTree(){const t=new Map;for(let e=this.getStartIndex();e<this.getStartIndex()+this.count;e+=1n){const r=this.tree.get(e);r!==void 0&&t.set(r,e)}return t}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(t){let e=0n;for(;2n**e<t;)e+=1n;return e}bigIntMax(t,e){return t>e?t:e}forceInsert(t,e){if(e<this.getStartIndex())throw new RangeError;this.tree.set(e,t),this.reverseTree.set(t,e);const r=this.index-this.getStartIndex(),n=this.logarithm2(r);let s=e;for(let i=1n;i<=n;i+=1n){s/=2n;const h=this.hashFunction(this.tree.get(s*2n)||this.defaultNodeValue,this.tree.get(s*2n+1n)||this.defaultNodeValue);this.tree.set(s,h)}}insert(t,e){let r=!1;return this.tree.has(e)&&(r=!0,c.logError(`Editing commitment index: ${e} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,e+1n),this.forceInsert(t,e),!0}remove(t){this.forceInsert(this.defaultNodeValue,t)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new u.MerkleTreeIncompleteError}getRootHash(){this.completenessCheck();for(let t=1n;t<2n**this.levels;t*=2n)if(this.tree.get(t))return this.tree.get(t);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getSiblingIndex(t){return t===1n?1n:t%2n===1n?t-1n:t+1n}getSiblingHashesForVerification(t){this.completenessCheck();let e=this.reverseTree.get(t);if(e===void 0)return new Array(Number(o.CIRCOM_MERKLE_LENGTH)).fill(0n);const r=[];for(;e!==0n;)r.push(this.tree.get(this.getSiblingIndex(e))||this.defaultNodeValue),e/=2n;return r.slice(0,o.CIRCOM_MERKLE_LENGTH)}getSiblingSides(t){this.completenessCheck();let e=this.reverseTree.get(t);if(e===void 0)return new Array(Number(o.CIRCOM_MERKLE_LENGTH)).fill(0n);const r=[];for(;e!==0n;){const n=e%2n===0n?0n:1n;r.push(n),e/=2n}return r.slice(0,o.CIRCOM_MERKLE_LENGTH)}toJSON(){const{tree:t,reverseTree:e,count:r,index:n}=this;return{tree:Object.fromEntries(t),reverseTree:Object.fromEntries(e),count:r.toString(),index:n.toString()}}clone(){return l.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}}exports.MerkleTree=l;
@@ -33,7 +33,7 @@ export declare class MerkleTree<T> {
33
33
  * @param levels the amount of layers in the merkle tree
34
34
  * @param defaultNodeValue the default value of an empty node in the merkle tree
35
35
  */
36
- static create<T>(hashFunction: (a: T, b: T) => T, levels: bigint, defaultNodeValue: T): MerkleTree<T>;
36
+ static create<T>(hashFunction: (a: T, b: T) => T, defaultNodeValue: T, levels?: bigint): MerkleTree<T>;
37
37
  private createReverseTree;
38
38
  private constructor();
39
39
  /**
@@ -1,6 +1,7 @@
1
- import { logError as l } from "../../error-handling/logError.mjs";
2
- import { MerkleTreeIncompleteError as a } from "./MerkleTreeIncompleteError.mjs";
3
- class o {
1
+ import { MERKLE_LEVELS as a, CIRCOM_MERKLE_LENGTH as o } from "../../constants/protocol.constants.mjs";
2
+ import { logError as u } from "../../error-handling/logError.mjs";
3
+ import { MerkleTreeIncompleteError as c } from "./MerkleTreeIncompleteError.mjs";
4
+ class l {
4
5
  constructor(t, e, r, i, s, n, h) {
5
6
  this.hashFunction = t, this.levels = e, this.defaultNodeValue = r, this.tree = i ?? /* @__PURE__ */ new Map(), this.count = h ?? 0n, this.index = n ?? 2n ** (e - 1n), s ? this.reverseTree = s : this.reverseTree = this.createReverseTree();
6
7
  }
@@ -20,15 +21,15 @@ class o {
20
21
  index;
21
22
  reverseTree;
22
23
  static createWithData(t, e, r, i, s, n, h) {
23
- return new o(s, n, h, t, e, r, i);
24
+ return new l(s, n, h, t, e, r, i);
24
25
  }
25
26
  /**
26
27
  * @param hashFunction the hashFunction used to fill the upper layers of the merkle tree
27
28
  * @param levels the amount of layers in the merkle tree
28
29
  * @param defaultNodeValue the default value of an empty node in the merkle tree
29
30
  */
30
- static create(t, e, r) {
31
- return new o(t, e, r);
31
+ static create(t, e, r = a) {
32
+ return new l(t, r, e);
32
33
  }
33
34
  createReverseTree() {
34
35
  const t = /* @__PURE__ */ new Map();
@@ -80,14 +81,14 @@ class o {
80
81
  */
81
82
  insert(t, e) {
82
83
  let r = !1;
83
- return this.tree.has(e) && (r = !0, l(`Editing commitment index: ${e} `)), r || (this.count += 1n), this.index = this.bigIntMax(this.index, e + 1n), this.forceInsert(t, e), !0;
84
+ return this.tree.has(e) && (r = !0, u(`Editing commitment index: ${e} `)), r || (this.count += 1n), this.index = this.bigIntMax(this.index, e + 1n), this.forceInsert(t, e), !0;
84
85
  }
85
86
  remove(t) {
86
87
  this.forceInsert(this.defaultNodeValue, t);
87
88
  }
88
89
  completenessCheck() {
89
90
  if (this.count !== this.index - this.getStartIndex())
90
- throw new a();
91
+ throw new c();
91
92
  }
92
93
  /**
93
94
  * get root hash of the merkle tree
@@ -115,11 +116,11 @@ class o {
115
116
  this.completenessCheck();
116
117
  let e = this.reverseTree.get(t);
117
118
  if (e === void 0)
118
- return new Array(Number(this.levels)).fill(0n);
119
+ return new Array(Number(o)).fill(0n);
119
120
  const r = [];
120
121
  for (; e !== 0n; )
121
122
  r.push(this.tree.get(this.getSiblingIndex(e)) || this.defaultNodeValue), e /= 2n;
122
- return r;
123
+ return r.slice(0, o);
123
124
  }
124
125
  /**
125
126
  * get item's sibling hashes side
@@ -130,13 +131,13 @@ class o {
130
131
  this.completenessCheck();
131
132
  let e = this.reverseTree.get(t);
132
133
  if (e === void 0)
133
- return new Array(Number(this.levels)).fill(0n);
134
+ return new Array(Number(o)).fill(0n);
134
135
  const r = [];
135
136
  for (; e !== 0n; ) {
136
137
  const i = e % 2n === 0n ? 0n : 1n;
137
138
  r.push(i), e /= 2n;
138
139
  }
139
- return r;
140
+ return r.slice(0, o);
140
141
  }
141
142
  toJSON() {
142
143
  const { tree: t, reverseTree: e, count: r, index: i } = this;
@@ -148,7 +149,7 @@ class o {
148
149
  };
149
150
  }
150
151
  clone() {
151
- return o.createWithData(
152
+ return l.createWithData(
152
153
  new Map(this.tree),
153
154
  new Map(this.reverseTree),
154
155
  this.index,
@@ -163,5 +164,5 @@ class o {
163
164
  }
164
165
  }
165
166
  export {
166
- o as MerkleTree
167
+ l as MerkleTree
167
168
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../functions/web3/etherFunctions.cjs"),c=require("../../crypto/poseidon.cjs"),i=require("./MerkleTree.cjs"),g=(r,n,o,t)=>{if(!t||o){const e=i.MerkleTree.create(c.poseidonFunction,25n,0n);return e.insert(BigInt(n.getAccessKey()),e.getStartIndex()),t||e.insert(s.randomBigInt(31),e.getStartIndex()+1n),e}return r};exports.getPatchedAccessTokenMerkleTree=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../functions/web3/etherFunctions.cjs"),c=require("../../crypto/poseidon.cjs"),i=require("./MerkleTree.cjs"),g=(r,n,o,t)=>{if(!t||o){const e=i.MerkleTree.create(c.poseidonFunction,0n);return e.insert(BigInt(n.getAccessKey()),e.getStartIndex()),t||e.insert(s.randomBigInt(31),e.getStartIndex()+1n),e}return r};exports.getPatchedAccessTokenMerkleTree=g;
@@ -3,7 +3,7 @@ import { poseidonFunction as s } from "../../crypto/poseidon.mjs";
3
3
  import { MerkleTree as c } from "./MerkleTree.mjs";
4
4
  const f = (r, n, o, t) => {
5
5
  if (!t || o) {
6
- const e = c.create(s, 25n, 0n);
6
+ const e = c.create(s, 0n);
7
7
  return e.insert(BigInt(n.getAccessKey()), e.getStartIndex()), t || e.insert(i(31), e.getStartIndex() + 1n), e;
8
8
  }
9
9
  return r;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../crypto/poseidon.cjs"),c=require("../../data-structures/merkle-tree/MerkleTree.cjs"),n=e=>new Map(Object.entries(e).map(([r,t])=>[BigInt(r),BigInt(t)])),s=e=>{const r=n(e.tree),t=e.reverseTree?n(e.reverseTree):void 0;return c.MerkleTree.createWithData(r,t,BigInt(e.index),BigInt(e.count),o.poseidonFunction,25n,0n)};exports.contructMerkleTreeFromSerialized=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../constants/protocol.constants.cjs"),c=require("../../crypto/poseidon.cjs"),s=require("../../data-structures/merkle-tree/MerkleTree.cjs"),n=e=>new Map(Object.entries(e).map(([r,t])=>[BigInt(r),BigInt(t)])),i=e=>{const r=n(e.tree),t=e.reverseTree?n(e.reverseTree):void 0;return s.MerkleTree.createWithData(r,t,BigInt(e.index),BigInt(e.count),c.poseidonFunction,o.MERKLE_LEVELS,0n)};exports.contructMerkleTreeFromSerialized=i;