@zama-fhe/sdk 3.4.0 → 3.5.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/base-signer.cjs +1 -1
- package/dist/cjs/base-signer.cjs.map +1 -1
- package/dist/cjs/chains/index.cjs +1 -1
- package/dist/cjs/chains.cjs +1 -1
- package/dist/cjs/chains.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/node/index.cjs +1 -1
- package/dist/esm/base-signer-BGEnALwn.js +2 -0
- package/dist/esm/{base-signer-YpkEmlp2.js.map → base-signer-BGEnALwn.js.map} +1 -1
- package/dist/esm/{base-signer-BvL-jMNO.d.ts → base-signer-rvOfr9wl.d.ts} +2 -2
- package/dist/esm/chains/index.d.ts +2 -2
- package/dist/esm/chains/index.js +1 -1
- package/dist/esm/chains-BoqPSzrs.js +2 -0
- package/dist/esm/chains-BoqPSzrs.js.map +1 -0
- package/dist/esm/cleartext/index.d.ts +2 -2
- package/dist/esm/{cleartext-CxlICeUh.d.ts → cleartext-CT4qh3Ra.d.ts} +2 -2
- package/dist/esm/ethers/index.d.ts +4 -4
- package/dist/esm/ethers/index.js +1 -1
- package/dist/esm/{index-DNofJMCK.d.ts → index-BYF_r0pl.d.ts} +4 -4
- package/dist/esm/{index-S6_V7aAH.d.ts → index-SfbUoPTf.d.ts} +19 -4
- package/dist/esm/{index-DLaQtvYu.d.ts → index-bro9lghR.d.ts} +7 -7
- package/dist/esm/index.d.ts +8 -8
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node/index.d.ts +5 -5
- package/dist/esm/node/index.js +1 -1
- package/dist/esm/node/index.js.map +1 -1
- package/dist/esm/query/index.d.ts +4 -4
- package/dist/esm/{types-CWPSTRF6.d.ts → types-BiA5rWAw.d.ts} +2 -2
- package/dist/esm/{types-BEz-VgR_.d.ts → types-C24EbhTi.d.ts} +3 -3
- package/dist/esm/{types-Dr7AmEs1.d.ts → types-CPJdosAz.d.ts} +3 -3
- package/dist/esm/viem/index.d.ts +4 -4
- package/dist/esm/viem/index.js +1 -1
- package/dist/esm/web/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/esm/base-signer-YpkEmlp2.js +0 -2
- package/dist/esm/chains-CLv9HEJ_.js +0 -2
- package/dist/esm/chains-CLv9HEJ_.js.map +0 -1
package/dist/cjs/chains.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.cjs","names":[],"sources":["../../src/chains/configs.ts"],"sourcesContent":["import type { FheChain } from \"./types\";\n\n/**\n * Mainnet network configuration (chainId 1).\n */\nexport const mainnet = {\n id: 1,\n gatewayChainId: 261131,\n relayerUrl: \"https://relayer.mainnet.zama.org\",\n network: \"https://ethereum-rpc.publicnode.com\",\n aclContractAddress: \"0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\n kmsContractAddress: \"0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\n inputVerifierContractAddress: \"0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2\",\n verifyingContractAddressDecryption: \"0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24\",\n verifyingContractAddressInputVerification: \"0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287\",\n registryAddress: \"0xeb5015fF021DB115aCe010f23F55C2591059bBA0\",\n} as const satisfies FheChain;\n\n/**\n * Sepolia testnet network configuration (chainId 11155111).\n */\nexport const sepolia = {\n id: 11155111,\n gatewayChainId: 10901,\n relayerUrl: \"https://relayer.testnet.zama.org\",\n network: \"https://ethereum-sepolia-rpc.publicnode.com\",\n aclContractAddress: \"0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D\",\n kmsContractAddress: \"0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A\",\n inputVerifierContractAddress: \"0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0\",\n verifyingContractAddressDecryption: \"0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478\",\n verifyingContractAddressInputVerification: \"0x483b9dE06E4E4C7D35CCf5837A1668487406D955\",\n registryAddress: \"0x2f0750Bbb0A246059d80e94c454586a7F27a128e\",\n} as const satisfies FheChain;\n\n/**\n * Hoodi testnet configuration (chainId 560048).\n *\n * Hoodi does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const hoodi = {\n id: 560048,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://rpc.hoodi.ethpandaops.io\",\n aclContractAddress: \"0x6D3FAf6f86e1fF9F3B0831Dda920AbA1cBd5bd68\",\n kmsContractAddress: \"0x822BE20679CfAfdc352F05dEdfe12a07E912212e\",\n inputVerifierContractAddress: \"0xf3D9A51f32D9bC23E1eECb0fAbF1f1DA4d9Bba26\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0x1807aE2f693F8530DFB126D0eF98F2F2518F292f\",\n executorAddress: \"0xC316692627de536368d82e9121F1D44a550894E6\",\n} as const satisfies FheChain;\n\n/**\n * T-Rex InGen testnet configuration (chainId 364301).\n *\n * InGen does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const ingenTestnet = {\n id: 364301,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://rpc.ingen.t-rex.network\",\n aclContractAddress: \"0x09a4710BfBe7B557cD5CFE88BB31e9b5b85C419b\",\n kmsContractAddress: \"0xd885DEa6a924785fCcdf9CE993FEe27EA11832e6\",\n inputVerifierContractAddress: \"0x90f05B10db153365D8cB143EA17f5E5714D0bCD5\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0x7FC3D79EF9d01fA318CF2Aa5D91dDC492383Be0F\",\n executorAddress: \"0x1B05DE5b67b8f8363DC04E3a5996a616f11f8C7B\",\n} as const satisfies FheChain;\n\n/**\n * BNB Smart Chain testnet configuration (chainId 97, Chapel).\n *\n * BSC testnet does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const bscTestnet = {\n id: 97,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://bsc-testnet-rpc.publicnode.com\",\n aclContractAddress: \"0x52470e945521E247Cb4754088a836Dc4b838AFBE\",\n kmsContractAddress: \"0x788F5BB2d93aB4Cb67Fe2277757aE95006504F6F\",\n inputVerifierContractAddress: \"0x49e0BAB39904E4192c30CFB58573Cbe27B7E398E\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0xc0E8B73b1C58D846e1d4f8fAE2E1466C85BCeAeC\",\n executorAddress: \"0x5985e48689550c1b2893ABfBbe4cc0eE3A22cc54\",\n} as const satisfies FheChain;\n\n/**\n * Hardhat local network configuration (chainId 31337).\n *\n * The addresses in this configuration must match those of your deployment.\n */\nexport const hardhat = {\n id: 31337,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"http://127.0.0.1:8545\",\n aclContractAddress: \"0x50157CFfD6bBFA2DECe204a89ec419c23ef5755D\",\n inputVerifierContractAddress: \"0x36772142b74871f255CbD7A3e89B401d3e45825f\",\n kmsContractAddress: \"0x901F8942346f7AB3a01F6D7613119Bca447Bb030\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: undefined,\n executorAddress: \"0xe3a9105a3a932253A70F126eb1E3b589C643dD24\",\n} as const satisfies FheChain;\n\n/** Alias for {@link hardhat}. */\nexport const anvil = hardhat;\n\n/**\n * Built-in chain configurations keyed by chain ID.\n */\nexport const chains: Record<number, FheChain> = {\n [mainnet.id]: mainnet,\n [sepolia.id]: sepolia,\n [hoodi.id]: hoodi,\n [ingenTestnet.id]: ingenTestnet,\n [bscTestnet.id]: bscTestnet,\n [hardhat.id]: hardhat,\n} as const;\n"],"mappings":"AAKA,MAAa,EAAU,CACrB,GAAI,EACJ,eAAgB,OAChB,WAAY,mCACZ,QAAS,sCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAKa,EAAU,CACrB,GAAI,SACJ,eAAgB,MAChB,WAAY,mCACZ,QAAS,8CACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAQa,EAAQ,CACnB,GAAI,OACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,mCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAQa,EAAe,CAC1B,GAAI,OACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,kCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAQa,EAAa,CACxB,GAAI,GACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,yCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAOa,EAAU,CACrB,GAAI,MACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,wBACT,mBAAoB,6CACpB,6BAA8B,6CAC9B,mBAAoB,6CACpB,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,IAAA,GACjB,gBAAiB,4CACnB,EAGa,EAAQ,EAKR,EAAmC,EAC7C,EAAQ,IAAK,GACb,EAAQ,IAAK,GACb,EAAM,IAAK,GACX,EAAa,IAAK,GAClB,EAAW,IAAK,GAChB,EAAQ,IAAK,CAChB"}
|
|
1
|
+
{"version":3,"file":"chains.cjs","names":[],"sources":["../../src/chains/configs.ts"],"sourcesContent":["import type { FheChain } from \"./types\";\n\n/**\n * Mainnet network configuration (chainId 1).\n */\nexport const mainnet = {\n id: 1,\n gatewayChainId: 261131,\n relayerUrl: \"https://relayer.mainnet.zama.org\",\n network: \"https://ethereum-rpc.publicnode.com\",\n aclContractAddress: \"0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\n kmsContractAddress: \"0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\n inputVerifierContractAddress: \"0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2\",\n verifyingContractAddressDecryption: \"0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24\",\n verifyingContractAddressInputVerification: \"0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287\",\n registryAddress: \"0xeb5015fF021DB115aCe010f23F55C2591059bBA0\",\n} as const satisfies FheChain;\n\n/**\n * Sepolia testnet network configuration (chainId 11155111).\n */\nexport const sepolia = {\n id: 11155111,\n gatewayChainId: 10901,\n relayerUrl: \"https://relayer.testnet.zama.org\",\n network: \"https://ethereum-sepolia-rpc.publicnode.com\",\n aclContractAddress: \"0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D\",\n kmsContractAddress: \"0xbE0E383937d564D7FF0BC3b46c51f0bF8d5C311A\",\n inputVerifierContractAddress: \"0xBBC1fFCdc7C316aAAd72E807D9b0272BE8F84DA0\",\n verifyingContractAddressDecryption: \"0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478\",\n verifyingContractAddressInputVerification: \"0x483b9dE06E4E4C7D35CCf5837A1668487406D955\",\n registryAddress: \"0x2f0750Bbb0A246059d80e94c454586a7F27a128e\",\n} as const satisfies FheChain;\n\n/**\n * Polygon Amoy testnet network configuration (chainId 80002).\n */\nexport const polygonAmoy = {\n id: 80002,\n gatewayChainId: 10901,\n relayerUrl: \"https://relayer.testnet.zama.org\",\n network: \"https://polygon-amoy-bor-rpc.publicnode.com\",\n aclContractAddress: \"0xD99Cb9Fc3c42c87f2A4A12e8Fd60318d6bDdf985\",\n kmsContractAddress: \"0xCD1D89E311bce4C8DEa9a0857a0c9A4E153D4041\",\n inputVerifierContractAddress: \"0x6e5A7D8b0c645467Cba7e62D6624917085118631\",\n verifyingContractAddressDecryption: \"0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478\",\n verifyingContractAddressInputVerification: \"0x483b9dE06E4E4C7D35CCf5837A1668487406D955\",\n registryAddress: \"0xF486c3D4F4562760A43883e72E8D6f6Cf2EFdA94\",\n} as const satisfies FheChain;\n\n/**\n * Hoodi testnet configuration (chainId 560048).\n *\n * Hoodi does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const hoodi = {\n id: 560048,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://rpc.hoodi.ethpandaops.io\",\n aclContractAddress: \"0x6D3FAf6f86e1fF9F3B0831Dda920AbA1cBd5bd68\",\n kmsContractAddress: \"0x822BE20679CfAfdc352F05dEdfe12a07E912212e\",\n inputVerifierContractAddress: \"0xf3D9A51f32D9bC23E1eECb0fAbF1f1DA4d9Bba26\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0x1807aE2f693F8530DFB126D0eF98F2F2518F292f\",\n executorAddress: \"0xC316692627de536368d82e9121F1D44a550894E6\",\n} as const satisfies FheChain;\n\n/**\n * T-Rex InGen testnet configuration (chainId 364301).\n *\n * InGen does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const ingenTestnet = {\n id: 364301,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://rpc.ingen.t-rex.network\",\n aclContractAddress: \"0x09a4710BfBe7B557cD5CFE88BB31e9b5b85C419b\",\n kmsContractAddress: \"0xd885DEa6a924785fCcdf9CE993FEe27EA11832e6\",\n inputVerifierContractAddress: \"0x90f05B10db153365D8cB143EA17f5E5714D0bCD5\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0x7FC3D79EF9d01fA318CF2Aa5D91dDC492383Be0F\",\n executorAddress: \"0x1B05DE5b67b8f8363DC04E3a5996a616f11f8C7B\",\n} as const satisfies FheChain;\n\n/**\n * BNB Smart Chain testnet configuration (chainId 97, Chapel).\n *\n * BSC testnet does not have full FHE infrastructure — use with `cleartext()` transport.\n * Contract addresses match the cleartext deployment.\n */\nexport const bscTestnet = {\n id: 97,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"https://bsc-testnet-rpc.publicnode.com\",\n aclContractAddress: \"0x52470e945521E247Cb4754088a836Dc4b838AFBE\",\n kmsContractAddress: \"0x788F5BB2d93aB4Cb67Fe2277757aE95006504F6F\",\n inputVerifierContractAddress: \"0x49e0BAB39904E4192c30CFB58573Cbe27B7E398E\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: \"0xc0E8B73b1C58D846e1d4f8fAE2E1466C85BCeAeC\",\n executorAddress: \"0x5985e48689550c1b2893ABfBbe4cc0eE3A22cc54\",\n} as const satisfies FheChain;\n\n/**\n * Hardhat local network configuration (chainId 31337).\n *\n * The addresses in this configuration must match those of your deployment.\n */\nexport const hardhat = {\n id: 31337,\n gatewayChainId: 10901,\n relayerUrl: \"\",\n network: \"http://127.0.0.1:8545\",\n aclContractAddress: \"0x50157CFfD6bBFA2DECe204a89ec419c23ef5755D\",\n inputVerifierContractAddress: \"0x36772142b74871f255CbD7A3e89B401d3e45825f\",\n kmsContractAddress: \"0x901F8942346f7AB3a01F6D7613119Bca447Bb030\",\n verifyingContractAddressDecryption: \"0x5ffdaAB0373E62E2ea2944776209aEf29E631A64\",\n verifyingContractAddressInputVerification: \"0x812b06e1CDCE800494b79fFE4f925A504a9A9810\",\n registryAddress: undefined,\n executorAddress: \"0xe3a9105a3a932253A70F126eb1E3b589C643dD24\",\n} as const satisfies FheChain;\n\n/** Alias for {@link hardhat}. */\nexport const anvil = hardhat;\n\n/**\n * Built-in chain configurations keyed by chain ID.\n */\nexport const chains: Record<number, FheChain> = {\n [mainnet.id]: mainnet,\n [sepolia.id]: sepolia,\n [polygonAmoy.id]: polygonAmoy,\n [hoodi.id]: hoodi,\n [ingenTestnet.id]: ingenTestnet,\n [bscTestnet.id]: bscTestnet,\n [hardhat.id]: hardhat,\n} as const;\n"],"mappings":"AAKA,MAAa,EAAU,CACrB,GAAI,EACJ,eAAgB,OAChB,WAAY,mCACZ,QAAS,sCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAKa,EAAU,CACrB,GAAI,SACJ,eAAgB,MAChB,WAAY,mCACZ,QAAS,8CACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAKa,EAAc,CACzB,GAAI,MACJ,eAAgB,MAChB,WAAY,mCACZ,QAAS,8CACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,4CACnB,EAQa,EAAQ,CACnB,GAAI,OACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,mCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAQa,EAAe,CAC1B,GAAI,OACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,kCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAQa,EAAa,CACxB,GAAI,GACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,yCACT,mBAAoB,6CACpB,mBAAoB,6CACpB,6BAA8B,6CAC9B,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,6CACjB,gBAAiB,4CACnB,EAOa,EAAU,CACrB,GAAI,MACJ,eAAgB,MAChB,WAAY,GACZ,QAAS,wBACT,mBAAoB,6CACpB,6BAA8B,6CAC9B,mBAAoB,6CACpB,mCAAoC,6CACpC,0CAA2C,6CAC3C,gBAAiB,IAAA,GACjB,gBAAiB,4CACnB,EAGa,EAAQ,EAKR,EAAmC,EAC7C,EAAQ,IAAK,GACb,EAAQ,IAAK,GACb,EAAY,IAAK,GACjB,EAAM,IAAK,GACX,EAAa,IAAK,GAClB,EAAW,IAAK,GAChB,EAAQ,IAAK,CAChB"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./relayer.cjs"),t=require("./sdk-events.cjs"),n=require("./token.cjs"),r=require("./cleartext.cjs"),i=require("./base-signer.cjs"),a=require("./chains.cjs");let o=require("viem"),s=require("zod/mini");function c(t,n){if(t instanceof e.r){let e=n[t.code];if(e)return e(t)}return n._?.(t)}var l=class extends e.r{encryptedValue;contractAddress;account;constructor(t,n){super(e.i.NotEntitled,`Account ${t.account} is not entitled to decrypt encrypted value ${t.encryptedValue} on contract ${t.contractAddress}. This is not a transient failure — the account needs an on-chain ACL grant before it can decrypt this encrypted value.`,n),this.name=`NotEntitledError`,this.encryptedValue=t.encryptedValue,this.contractAddress=t.contractAddress,this.account=t.account}},u=class extends e.r{constructor(t,n){super(e.i.DelegationSelfNotAllowed,t,n),this.name=`DelegationSelfNotAllowedError`}},d=class extends e.r{constructor(t,n){super(e.i.DelegationCooldown,t,n),this.name=`DelegationCooldownError`}},f=class extends e.r{constructor(t,n){super(e.i.DelegationNotFound,t,n),this.name=`DelegationNotFoundError`}},p=class extends e.r{constructor(t,n){super(e.i.DelegationExpired,t,n),this.name=`DelegationExpiredError`}},m=class extends e.r{constructor(t,n){super(e.i.DelegationExpiryUnchanged,t,n),this.name=`DelegationExpiryUnchangedError`}},h=class extends e.r{constructor(t,n){super(e.i.DelegationDelegateEqualsContract,t,n),this.name=`DelegationDelegateEqualsContractError`}},g=class extends e.r{constructor(t,n){super(e.i.DelegationContractIsSelf,t,n),this.name=`DelegationContractIsSelfError`}},_=class extends e.r{constructor(t,n){super(e.i.AclPaused,t,n),this.name=`AclPausedError`}},v=class extends e.r{constructor(t,n){super(e.i.DelegationExpirationTooSoon,t,n),this.name=`DelegationExpirationTooSoonError`}},y=class extends e.r{constructor(t,n){super(e.i.DelegationNotPropagated,t,n),this.name=`DelegationNotPropagatedError`}};const ee=[n.b,t.Y,e.n,y,t.K,t.G,l,n.v,t.J];function b(r,i,a={}){if(ee.some(e=>r instanceof e))return r;let o=r instanceof Error?r.message:i;if(r instanceof Error&&e.d(r.message))return new t.J(r.message,{cause:r});if(r instanceof Error&&e.f(r.message))return a.isDelegated?new y(`Delegated decryption was denied by the on-chain ACL check. This is most commonly caused by the delegation not having propagated yet, or by the RPC node serving a stale block. Propagation usually completes within ~10 blocks (a few seconds) and the SDK retries across that window; seeing this means it did not sync in time. Retry shortly (and prefer a fresh, low-lag RPC endpoint). If it persists, the delegator may genuinely lack the on-chain ACL grant.`,{cause:r}):new l({encryptedValue:e.g(r.message)??``,contractAddress:a.contractAddress??``,account:a.account??``},{cause:r});if(e.l(r))return new n.v(o,{cause:r,retryAfter:e.c(r)});let s=e.s(r);return s===void 0&&e.h(r)?new n.v(o,{cause:r,retryAfter:e.c(r)}):s===400?new t.Y(r instanceof Error?r.message:`No ciphertext for this account`,{cause:r}):a.isDelegated&&s===500?new y(`Delegated decryption failed with a server error. This is most commonly caused by the delegation not having propagated to the gateway yet. Cross-chain sync usually completes within ~10 blocks (a few seconds) and the SDK retries across that window; seeing this means it did not sync in time — retry shortly. If the error persists, the gateway or relayer may be experiencing an unrelated issue.`,{cause:r}):e.p(r)||s!==void 0?new e.n(o,s,{cause:r,retryAfter:e.c(r),retryable:e.m(r)||void 0}):new n.b(i,{cause:r})}function te(t,r){if(t instanceof e.r)return t;let i=e.s(t),a=e.m(t);return i!==void 0||e.p(t)?new e.n(t instanceof Error?t.message:r,i,{cause:t,retryAfter:e.c(t),retryable:a||void 0}):new n.x(r,{cause:t})}const ne=[{type:`function`,name:`allowance`,inputs:[{name:`owner`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`approve`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`balanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`supportsInterface`,inputs:[{name:`interfaceId`,type:`bytes4`,internalType:`bytes4`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`totalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`transfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`event`,name:`Approval`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`spender`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Transfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1}];function x(e,t,n,r=`0x`){return{address:e,abi:ne,functionName:`transferAndCall`,args:[t,n,r]}}const S=[{type:`function`,name:`allow`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`allowForDecryption`,inputs:[{name:`handlesList`,type:`bytes32[]`,internalType:`bytes32[]`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`allowTransient`,inputs:[{name:`ciphertext`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`cleanTransientStorage`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`delegateForUserDecryption`,inputs:[{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`},{name:`expirationDate`,type:`uint64`,internalType:`uint64`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`getUserDecryptionDelegationExpirationDate`,inputs:[{name:`delegator`,type:`address`,internalType:`address`},{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`isAccountDenied`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isAllowed`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isAllowedForDecryption`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isHandleDelegatedForUserDecryption`,inputs:[{name:`delegator`,type:`address`,internalType:`address`},{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`},{name:`handle`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`multicall`,inputs:[{name:`data`,type:`bytes[]`,internalType:`bytes[]`}],outputs:[{name:`results`,type:`bytes[]`,internalType:`bytes[]`}],stateMutability:`payable`},{type:`function`,name:`persistAllowed`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`revokeDelegationForUserDecryption`,inputs:[{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`}];function C(e,t,n,r){return{address:e,abi:S,functionName:`delegateForUserDecryption`,args:[t,n,r]}}function w(e,t,n){return{address:e,abi:S,functionName:`revokeDelegationForUserDecryption`,args:[t,n]}}function T(e,t,n,r){return{address:e,abi:S,functionName:`getUserDecryptionDelegationExpirationDate`,args:[t,n,r]}}function re(e,t,n,r,i){return{address:e,abi:S,functionName:`isHandleDelegatedForUserDecryption`,args:[t,n,r,i]}}const E=2n**64n-1n;function ie(e){return i.i(e.signer,e.provider,e)}function D(e){return e.startsWith(`0x`)?e:`0x${e}`}var O=class{#e;#t;#n;#r;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.router,this.#r=e.decryptionService}#i(e){return t.W(this.#r,e)}async decryptValues(e,t){let r=this.#i(`decryptValues`),i=await n.l(`decryptValues`,this.#e,this.#t);return r.decryptValues(e,i.address,t)}async delegatedDecryptValues(e,t,r=t,i){let a=this.#i(`delegatedDecryptValues`),o=await n.l(`delegatedDecryptValues`,this.#e,this.#t);return a.delegatedDecryptValues(e,t,o.address,r,i)}async decryptPublicValues(e,t){if(e.length===0)return{clearValues:{},decryptionProof:`0x`,abiEncodedClearValues:`0x`};try{let r=await this.#n.relayer.decryptPublicValuesWithSignatures({encryptedValues:e,options:t}),i={};return r.checkSignaturesArgs.handlesList.forEach((e,t)=>{n.c(r.clearValues[t],`result.clearValues[${t}]`),i[e]=r.clearValues[t].value}),{clearValues:i,abiEncodedClearValues:r.checkSignaturesArgs.abiEncodedCleartexts,decryptionProof:r.checkSignaturesArgs.decryptionProof}}catch(e){throw b(e,`Public decryption failed`)}}async delegatedBatchDecryptValues({encryptedInputs:e,delegatorAddress:t,accountAddress:r=t,maxConcurrency:i,waitForPropagation:a}){let o=this.#i(`delegatedBatchDecryptValues`),s=await n.l(`delegatedBatchDecryptValues`,this.#e,this.#t);return o.delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:s.address,accountAddress:r,maxConcurrency:i,waitForPropagation:a})}},k=class{#e;#t;#n;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.delegationService}#r(e){return t.W(this.#e,e)}async delegateDecryption({contractAddress:e,delegateAddress:t,expirationDate:r}){let i=this.#r(`delegateDecryption`),a=await n.l(`delegateDecryption`,this.#e,this.#t);return this.#n.delegateDecryption(i,{contractAddress:e,delegateAddress:t,delegatorAddress:a.address,expirationDate:r})}async revokeDelegation({contractAddress:e,delegateAddress:t}){let r=this.#r(`revokeDelegation`),i=await n.l(`revokeDelegation`,this.#e,this.#t);return this.#n.revokeDelegation(r,{contractAddress:e,delegateAddress:t,delegatorAddress:i.address})}async isActive(e){return this.#n.isDelegated(e)}async getExpiry(e){return this.#n.getDelegationExpiry(e)}async getStatus(e){return this.#n.getStatus(e)}},A=class{#e;#t;#n;#r;#i;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger}#a(e){return t.W(this.#r,e)}async grantPermit(e){if(e.length===0)return;let t=this.#a(`grantPermit`);await n.u(`grantPermit`,this.#e,this.#t),await t.grantPermit(e)}async grantDelegationPermit(e,t){if(t.length===0)return;let r=this.#a(`grantDelegationPermit`);await n.u(`grantDelegationPermit`,this.#e,this.#t),await r.grantPermit(t,e)}async hasPermit(e){return this.#r?this.#r.hasPermit(e):!1}async hasDelegationPermit(e,t){return this.#r?this.#r.hasPermit(t,e):!1}async warmTransportKeyPair(){let e=this.#r;if(!e)return;let t=this.#e?.walletAccount.getSnapshot();t&&await e.warmTransportKeyPair(t.address)}async revokePermits(e){let t=this.#a(`revokePermits`),r=(0,o.getAddress)((await n.l(`revokePermits`,this.#e,this.#t)).address);try{await t.revokePermits(e)}finally{await this.#o(r)}}async clear(){let e=this.#a(`clear`),t=(0,o.getAddress)((await n.l(`clear`,this.#e,this.#t)).address);try{await e.clearCredentials()}finally{await this.#o(t)}}async#o(e){await t.z(`clear decrypt cache`,()=>this.#n.clearForRequester(e),this.#i)}async revokeTransportKeyPair(e){await this.#a(`revokeTransportKeyPair`).revokeTransportKeyPair(e)}async warmTransportKeyPairScope(e){await this.#a(`warmTransportKeyPairScope`).warmTransportKeyPairScope(e)}};const ae=s.z.union([s.z.bigint(),s.z.boolean(),i.l]),oe=s.z.array(s.z.string());var se=class{#e;#t;#n=`zama:decrypt`;#r=`${this.#n}:keys`;#i=Promise.resolve();constructor(e,t){this.#e=e,this.#t=t}async get(e,t,n){try{let r=this.#c(e,t,n),i=await this.#e.get(r);if(i===null)return null;let a=ae.safeParse(i);return a.success?a.data:(await this.delete(e,t,n),null)}catch(e){return this.#t.warn(`CachingService.get failed`,{error:e}),null}}async set(e,t,n,r){try{let i=this.#c(e,t,n);await this.#e.set(i,r),this.#i=this.#i.then(()=>this.#u(i).catch(e=>{this.#t.warn(`CachingService index write failed`,{error:e})})),await this.#i}catch(e){this.#t.warn(`CachingService.set failed`,{error:e})}}async delete(e,t,n){let r=this.#c(e,t,n);this.#i=this.#i.then(()=>this.#a(r).catch(e=>{this.#t.warn(`CachingService.delete failed`,{error:e})})),await this.#i}async clearForRequester(e){this.#i=this.#i.then(()=>this.#o(e).catch(e=>{this.#t.warn(`CachingService.clearForRequester failed`,{error:e})})),await this.#i}async clearAll(){this.#i=this.#i.then(()=>this.#s().catch(e=>{this.#t.warn(`CachingService.clearAll failed`,{error:e})})),await this.#i}async#a(e){await this.#e.delete(e).catch(()=>{});let t=await this.#l(),n=t.filter(t=>t!==e);n.length!==t.length&&await this.#e.set(this.#r,n)}async#o(e){let t=(0,o.getAddress)(e),n=`${this.#n}:${t}:`,r=await this.#l(),i=[],a=[];for(let e of r)e.startsWith(n)?i.push(e):a.push(e);await Promise.all(i.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.set(this.#r,a)}async#s(){let e=await this.#l();await Promise.all(e.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.delete(this.#r)}#c(e,t,n){return`${this.#n}:${(0,o.getAddress)(e)}:${(0,o.getAddress)(t)}:${n.toLowerCase()}`}async#l(){let e=await this.#e.get(this.#r);if(e===null)return[];let t=oe.safeParse(e);return t.success?t.data:(await this.#e.delete(this.#r).catch(()=>{}),[])}async#u(e){let t=await this.#l();t.includes(e)||(t.push(e),await this.#e.set(this.#r,t))}};function ce(e,t){let r=le(e,t);if(!r)throw new n.b(`No permit covers contract ${t} after allow()`);return{privateKey:e.keypair.privateKey,publicKey:e.keypair.publicKey,serializedPermit:r.serializedPermit}}function le(e,t){let n=i.c(t);return e.permissions.find(e=>e.contractAddresses.includes(n))}const ue=e=>new Promise(t=>setTimeout(t,e));var de=class{#e;#t;#n;#r;#i;constructor({cache:e,credentialService:t,delegationService:n,router:r,emitEvent:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}async decryptValues(e,t,n){let r=(0,o.getAddress)(t);return this.#s(e,{requesterAddress:r,aclActorAddress:r,resolveCredentials:e=>this.#t.grantPermit(e),decryptContract:({credentials:e,contractAddress:t,encryptedValues:n,options:r})=>this.#o(e,t,n,r),errorMessage:`Failed to decrypt encrypted values`},n)}async delegatedDecryptValues(e,t,n,r,i){let a=(0,o.getAddress)(t),s=(0,o.getAddress)(n);return this.#a(i?.waitForPropagation??!0,()=>this.#s(e,{requesterAddress:(0,o.getAddress)(r),aclActorAddress:a,resolveCredentials:e=>this.#t.grantPermit(e,a),validate:e=>this.#f(e,{delegatorAddress:a,delegateAddress:s}),decryptContract:({credentials:e,contractAddress:t,encryptedValues:n,options:r})=>this.#o(e,t,n,r),errorMessage:`Failed to decrypt delegated encrypted values`,delegated:!0}))}async#a(e,t){let n;for(let r=0;r<16;r++)try{return await t()}catch(t){if(n=t,!(r<15&&e&&t instanceof y))throw t;await ue(2e3)}throw n}async delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:r,accountAddress:i,maxConcurrency:a=5,waitForPropagation:s=!0}){let c=e.map(e=>({encryptedValue:e.encryptedValue,contractAddress:(0,o.getAddress)(e.contractAddress)}));if(c.length===0)return{items:c};let l=(0,o.getAddress)(i);try{let e=await this.delegatedDecryptValues(c.map(({encryptedValue:e,contractAddress:t})=>({encryptedValue:e,contractAddress:t})),t,r,l,{waitForPropagation:s});for(let t of c)this.#l(t,e);return{items:c}}catch(e){if(n.d(e))throw e;if(c.length===1){let[n=this.#d()]=c;return n.error=this.#u(e,`Failed to decrypt delegated encrypted values`,{isDelegated:!0,contractAddress:n.contractAddress,account:(0,o.getAddress)(t)}),{items:c}}}let u=!1;return await n.r(c.map(e=>async()=>{if(!u)try{let n=await this.delegatedDecryptValues([{encryptedValue:e.encryptedValue,contractAddress:e.contractAddress}],t,r,l,{waitForPropagation:!1});this.#l(e,n)}catch(r){if(n.d(r))throw u=!0,r;e.error=this.#u(r,`Failed to decrypt delegated encrypted values`,{isDelegated:!0,contractAddress:e.contractAddress,account:(0,o.getAddress)(t)})}}),a),{items:c}}async#o(t,n,r,i){let a=ce(t,n),o;try{o=await this.#r.relayer.parseTransportKeyPair({publicKey:a.publicKey,privateKey:a.privateKey,tkmsVersion:t.keypair.tkmsVersion})}catch(t){throw t instanceof Error&&e.d(t.message)&&await this.#t.evictTransportKeyPair(),t}let s=await this.#r.relayer.parseSignedDecryptionPermit({transportKeyPair:o,serializedPermit:a.serializedPermit});return this.#r.relayer.decryptValues({transportKeyPair:o,signedPermit:s,encryptedValues:r,contractAddress:n,options:i})}async#s(r,i,a){if(r.length===0)return{};let s=r.map(e=>({encryptedValue:e.encryptedValue,contractAddress:(0,o.getAddress)(e.contractAddress)})),c={},l=[];for(let e of s)n.o(e.encryptedValue)?c[e.encryptedValue]=0n:l.push(e);if(l.length===0)return c;let u=Array.from(new Set(s.map(e=>e.contractAddress))),d=Array.from(new Set(l.map(e=>e.contractAddress)));if(i.validate)try{await i.validate(d)}catch(t){throw e.h(t)?this.#c(t,`the delegation pre-check`):t}let f=[];for(let e of l){let t=await this.#e.get(i.requesterAddress,e.contractAddress,e.encryptedValue);t===null?f.push(e):c[e.encryptedValue]=t}if(f.length===0)return c;let p=await i.resolveCredentials(u),m=new Map;for(let e of f){let t=m.get(e.contractAddress);t?t.push(e.encryptedValue):m.set(e.contractAddress,[e.encryptedValue])}let h=[];for(let[e,t]of m)for(let r of n.a(t))h.push({contractAddress:e,encryptedValues:r});let g=Date.now(),_=f.map(e=>e.encryptedValue);try{this.#i({type:t.t.DecryptStart,encryptedValues:_}),await n.r(h.map(({contractAddress:e,encryptedValues:t})=>async()=>{let r;try{r=await i.decryptContract({credentials:p,contractAddress:e,encryptedValues:t,options:a})}catch(t){throw b(t,i.errorMessage,{isDelegated:i.delegated,contractAddress:e,account:i.aclActorAddress})}for(let n=0;n<t.length;n++){let a=t[n],o=r[n]?.value;a!==void 0&&o!==void 0&&(c[a]=o,await this.#e.set(i.requesterAddress,e,a,o))}let o=t.filter(e=>c[e]===void 0);if(o.length>0)throw new n.b(`${i.errorMessage}: relayer returned no clear value for ${o.length} of ${t.length} handle(s) on ${e}`,{cause:AggregateError(o.map(t=>new n.b(`No clear value for handle ${t} on ${e}`)),`${o.length} handle(s) missing a clear value on ${e}`)})}),5);let e={};for(let t of _){let n=c[t];n!==void 0&&(e[t]=n)}return this.#i({type:t.t.DecryptEnd,durationMs:Date.now()-g,encryptedValues:_,result:e}),c}catch(n){let r=n instanceof e.r&&n.cause instanceof Error?n.cause:n;throw this.#i({type:t.t.DecryptError,error:e._(r),durationMs:Date.now()-g,encryptedValues:_}),b(n,i.errorMessage,{isDelegated:i.delegated})}}#c(t,r){return new n.v(`RPC provider rate-limited ${r}; retry with backoff.`,{cause:t,retryAfter:e.c(t)})}#l(e,t){let r=t[e.encryptedValue];if(r===void 0){e.error=new n.b(`Batch delegated decryption returned no value for encrypted value ${e.encryptedValue} on contract ${e.contractAddress}`);return}e.value=r}#u(t,n,r){return t instanceof e.r?t:b(t,n,r)}#d(){throw new n.b(`Batch delegated decryption invariant failed: missing item`)}async#f(e,{delegatorAddress:t,delegateAddress:n}){let r=await this.#n.findInactiveDelegations(e,t,n);if(r.size!==0)for(let e of r.values())throw e}};function fe(e){if(!(e instanceof Error))return null;let t=e.cause;if(typeof t!=`object`||!t||!(`data`in t))return null;let{data:n}=t;return typeof n!=`object`||!n||!(`errorName`in n)?null:typeof n.errorName==`string`?n.errorName:null}const j={AlreadyDelegatedOrRevokedInSameBlock:e=>new d(`Only one delegate/revoke per (delegator, delegate, contract) per block. Wait for the next block before retrying.`,{cause:e}),SenderCannotBeContractAddress:e=>new g(`The contract address cannot be the caller address.`,{cause:e}),EnforcedPause:e=>new _(`The ACL contract is paused. Delegation operations are temporarily disabled.`,{cause:e}),SenderCannotBeDelegate:e=>new u(`Cannot delegate to yourself (delegate === msg.sender).`,{cause:e}),DelegateCannotBeContractAddress:e=>new h(`Delegate address cannot be the same as the contract address.`,{cause:e}),ExpirationDateBeforeOneHour:e=>new v(`Expiration date must be at least 1 hour in the future.`,{cause:e}),ExpirationDateAlreadySetToSameValue:e=>new m(`The new expiration date is the same as the current one.`,{cause:e}),NotDelegatedYet:e=>new f(`Cannot revoke: no active delegation exists.`,{cause:e})};function pe(e){return e in j}function me(e,t){let n=fe(e);if(n&&pe(n))return j[n](t);let r=e instanceof Error?e.message:String(e);for(let[e,n]of Object.entries(j))if(r.includes(e))return n(t);return null}var he=class{#e;#t;#n;#r;constructor({provider:e,router:t,emitEvent:n=()=>{},logger:r}){this.#t=e,this.#e=t,this.#r=r,this.#n=n}async delegateDecryption(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r,expirationDate:i}){if(i&&i.getTime()<Date.now()+36e5)throw new v(`Expiration date must be at least 1 hour in the future`);let a=(0,o.getAddress)(t),s=(0,o.getAddress)(n),c=(0,o.getAddress)(r);if(s===c)throw new u(`Cannot delegate to yourself (delegate === msg.sender).`);if(s===a)throw new h(`Delegate address cannot be the same as the contract address (${a}).`);let l=this.#e.relayer.chain.aclContractAddress,d=i?BigInt(Math.floor(i.getTime()/1e3)):E,f;try{f=await this.getDelegationExpiry({contractAddress:a,delegatorAddress:c,delegateAddress:s})}catch(e){this.#r.warn(`delegateDecryption: pre-flight expiry check failed`,{error:e}),f=-1n}if(f===d)throw new m(`The new expiration date (${d}) is the same as the current one. No on-chain change needed.`);return this.#i({operation:`delegateDecryption`,signer:e,contractAddress:t,config:C(l,s,a,d)})}async revokeDelegation(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r}){let i=(0,o.getAddress)(t),a=(0,o.getAddress)(n),s=(0,o.getAddress)(r),c=this.#e.relayer.chain.aclContractAddress,l;try{l=await this.getDelegationExpiry({contractAddress:i,delegatorAddress:s,delegateAddress:a})}catch(e){this.#r.warn(`revokeDelegation: pre-flight expiry check failed`,{error:e}),l=1n}if(l===0n)throw new f(`No active delegation found for delegate ${a} on contract ${i}.`);return this.#i({operation:`revokeDelegation`,signer:e,contractAddress:t,config:w(c,a,i)})}async isDelegated(e){return(await this.getStatus(e)).isActive}async getStatus(e){let t=await this.getDelegationExpiry(e);return t===0n?{isActive:!1,expiryTimestamp:t}:t===E?{isActive:!0,expiryTimestamp:t}:{isActive:t>await this.#t.getBlockTimestamp(),expiryTimestamp:t}}async getDelegationExpiry({contractAddress:e,delegatorAddress:t,delegateAddress:n}){let r=this.#e.relayer.chain.aclContractAddress;return this.#t.readContract(T(r,(0,o.getAddress)(t),(0,o.getAddress)(n),(0,o.getAddress)(e)))}async#i({operation:e,signer:t,contractAddress:r,config:i}){try{return await n.n({operation:e,signer:t,provider:this.#t,config:i,emit:e=>this.#n(e,r),logger:this.#r})}catch(e){throw this.#a(e),e}}#a(e){if(!(e instanceof n.y))return;let t=me(e.cause??e,e);if(t)throw t}async findInactiveDelegations(e,t,n){let r=new Map;return await Promise.all(e.map(async e=>{try{await this.assertDelegationActive(e,t,n)}catch(t){if(t instanceof f||t instanceof p){let n=(0,o.getAddress)(e);r.set(n,t);return}throw t}})),r}async assertDelegationActive(e,t,n){let r=(0,o.getAddress)(e),i=(0,o.getAddress)(t),a=(0,o.getAddress)(n),{isActive:s,expiryTimestamp:c}=await this.getStatus({contractAddress:r,delegatorAddress:i,delegateAddress:a});if(!s)throw c===0n?new f(`No active delegation from ${i} to ${a} for ${r}`):new p(`Delegation from ${i} to ${a} for ${r} has expired`)}},ge=class{#e;#t;constructor({router:e,emitEvent:t}){this.#e=e,this.#t=t}async encryptValues(n,r){let i=Date.now(),a=(0,o.getAddress)(n.contractAddress);try{this.#t({type:t.t.EncryptStart},a);let e=await this.#e.relayer.encryptValues({...n,options:r});return this.#t({type:t.t.EncryptEnd,durationMs:Date.now()-i},a),e}catch(n){throw this.#t({type:t.t.EncryptError,error:e._(n),durationMs:Date.now()-i},a),te(n,`Encryption failed`)}}},_e=class{#e;#t;#n;#r;#i;#a=new Set;#o;constructor(e){this.#e=e.signer,this.#t=e.router,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger,this.#e&&(this.#o=this.#e.walletAccount.subscribe(e=>{this.#s(e).catch(e=>{this.#i.warn(`wallet account handler failed`,{error:e})})}))}onWalletAccountChange(e){return this.#a.add(e),()=>{this.#a.delete(e)}}dispose(){this.#o?.(),this.#o=void 0,this.#a.clear()}async#s(e){let n=e.previous,r=e.next,i=r?.chainId;i!==void 0&&await t.z(`switch relayer chain`,()=>this.#t.switchChain(i),this.#i);let a=this.#r;a&&await t.z(`credential wallet account change`,()=>a.handleWalletAccountChange(n,r),this.#i),n&&await t.z(`clear decrypt cache`,()=>this.#n.clearForRequester(n.address),this.#i),await Promise.all(Array.from(this.#a,n=>t.z(`wallet account listener`,()=>n(e),this.#i)))}};function M(e){return(0,o.keccak256)((0,o.toBytes)(e))}const N={ConfidentialTransfer:M(`ConfidentialTransfer(address,address,bytes32)`),Wrap:M(`Wrap(address,uint256,bytes32)`),UnwrapRequested:M(`UnwrapRequested(address,bytes32,bytes32)`),UnwrapFinalized:M(`UnwrapFinalized(address,bytes32,bytes32,uint64)`)};function P(e){return(0,o.getAddress)(D(e.slice(-40)))}function F(e){return e}function I(e,t){let n=2+t*64,r=e.slice(n,n+64);return r.length===64?r:r.padEnd(64,`0`)}function L(e,t){return(0,o.getAddress)(D(I(e,t).slice(-40)))}function R(e,t){return BigInt(`0x`+I(e,t))}function z(e,t){return D(I(e,t))}function B(e){return e.topics[0]!==N.ConfidentialTransfer||e.topics.length<4?null:{eventName:`ConfidentialTransfer`,from:P(e.topics[1]),to:P(e.topics[2]),encryptedAmount:F(e.topics[3])}}function V(e){return e.topics[0]!==N.Wrap||e.topics.length<2?null:{eventName:`Wrap`,to:P(e.topics[1]),roundedAmount:R(e.data,0),encryptedWrappedAmount:z(e.data,1)}}function H(e){return e.topics[0]!==N.UnwrapRequested||e.topics.length<3?null:{eventName:`UnwrapRequested`,receiver:P(e.topics[1]),unwrapRequestId:F(e.topics[2]),encryptedAmount:z(e.data,0)}}function U(e){return e.topics[0]!==N.UnwrapFinalized||e.topics.length<3?null:{eventName:`UnwrapFinalized`,receiver:P(e.topics[1]),unwrapRequestId:F(e.topics[2]),encryptedAmount:z(e.data,0),cleartextAmount:R(e.data,1)}}function W(e){return B(e)??V(e)??H(e)??U(e)}function ve(e){let t=[];for(let n of e){let e=W(n);e&&t.push(e)}return t}function G(e){for(let t of e){let e=H(t);if(e)return e}return null}function ye(e){for(let t of e){let e=V(t);if(e)return e}return null}const be=[N.ConfidentialTransfer,N.Wrap,N.UnwrapRequested,N.UnwrapFinalized],K={DelegatedForUserDecryption:M(`DelegatedForUserDecryption(address,address,address,uint64,uint64,uint64)`),RevokedDelegationForUserDecryption:M(`RevokedDelegationForUserDecryption(address,address,address,uint64,uint64)`)};function q(e){return e.topics[0]!==K.DelegatedForUserDecryption||e.topics.length<3?null:{eventName:`DelegatedForUserDecryption`,delegator:P(e.topics[1]),delegate:P(e.topics[2]),contractAddress:L(e.data,0),delegationCounter:R(e.data,1),oldExpirationDate:R(e.data,2),newExpirationDate:R(e.data,3)}}function J(e){return e.topics[0]!==K.RevokedDelegationForUserDecryption||e.topics.length<3?null:{eventName:`RevokedDelegationForUserDecryption`,delegator:P(e.topics[1]),delegate:P(e.topics[2]),contractAddress:L(e.data,0),delegationCounter:R(e.data,1),oldExpirationDate:R(e.data,2)}}function Y(e){return q(e)??J(e)}function xe(e){let t=[];for(let n of e){let e=Y(n);e&&t.push(e)}return t}function Se(e){for(let t of e){let e=q(t);if(e)return e}return null}function Ce(e){for(let t of e){let e=J(t);if(e)return e}return null}const we=[K.DelegatedForUserDecryption,K.RevokedDelegationForUserDecryption];function X(e){return`zama:pending-unshield:${i.c(e)}`}const Te=s.z.union([s.z.pipe(i.u,s.z.transform(e=>({unwrapTxHash:e}))),s.z.pipe(s.z.object({version:s.z.literal(1),unwrapTxHash:i.u,unwrapRequestId:s.z.optional(i.u)}),s.z.transform(({unwrapTxHash:e,unwrapRequestId:t})=>({unwrapTxHash:e,unwrapRequestId:t})))]);async function Z(e,t,n,r){if(r===void 0){await e.set(X(t),n);return}await e.set(X(t),{version:1,unwrapTxHash:n,unwrapRequestId:r})}async function Ee(e,t){return(await De(e,t))?.unwrapTxHash??null}async function De(e,t){let n=X(t),r=await e.get(n);if(r==null)return null;let i=Te.safeParse(r);return i.success?i.data:(await e.delete(n),null)}async function Oe(e,t){await e.delete(X(t))}var Q=class extends n.t{#e;#t=null;#n=null;#r(e){try{return n.c(this.sdk.signer,`WrappedToken.sdk.signer`),this.sdk.signer}catch(n){throw new t.B(e,{cause:n})}}async underlying(){return this.#s()}async isPayable(){if(this.#n!==null)return this.#n;try{let e=await this.#s();this.#n=await this.sdk.provider.readContract(t.h(e))}catch{this.#n=!1}return this.#n}async allowance(e){let n=await this.#s();return this.sdk.provider.readContract(t._(n,(0,o.getAddress)(e),this.address))}async shield(r,i){let a=await n.l(`shield`,this.sdk.signer,this.sdk.provider),s=await this.isPayable(),c=await this.#s(),l=(0,o.getAddress)(a.address),u;try{u=await this.sdk.provider.readContract(t.y(c,l))}catch(t){throw t instanceof e.r?t:new n.p(`Could not read ERC-20 balance for shield validation (token: ${c})`,{cause:e._(t)})}if(u<r)throw new n.g(`Insufficient ERC-20 balance: requested ${r}, available ${u} (token: ${c})`,{requested:r,available:u,token:c});return s?this.#i(r,c,l,i):this.#a(r,l,i)}async#i(e,t,n,r){this.#r(`shield`);let i=r?.to?(0,o.getAddress)(r.to):n,a=i===n?`0x`:i;return this.submitTransaction({operation:`shield:transferAndCall`,config:x(t,this.address,e,a),onSubmitted:r?.onShieldSubmitted})}async wrap(r,i){this.#r(`wrap`);let a=await n.l(`wrap`,this.sdk.signer,this.sdk.provider),s=await this.#s(),c=(0,o.getAddress)(a.address),l;try{l=await this.sdk.provider.readContract(t.y(s,c))}catch(t){throw t instanceof e.r?t:new n.p(`Could not read ERC-20 balance for wrap validation (token: ${s})`,{cause:e._(t)})}if(l<r)throw new n.g(`Insufficient ERC-20 balance: requested ${r}, available ${l} (token: ${s})`,{requested:r,available:l,token:s});let u;try{u=await this.sdk.provider.readContract(t._(s,c,this.address))}catch(t){throw t instanceof e.r?t:new n.p(`Could not read ERC-20 allowance for wrap validation (token: ${s})`,{cause:e._(t)})}if(u<r)throw new n.m(`Insufficient allowance for wrap: requested ${r}, approved ${u}. Call approveUnderlying() first (token: ${s}).`,{requested:r,available:u,token:s});let d=i?.to?(0,o.getAddress)(i.to):c;return this.submitTransaction({operation:`wrap`,config:t.R(this.address,d,r),onSubmitted:i?.onWrapSubmitted})}async#a(e,n,r){this.#r(`shield`);let i=r?.approvalStrategy??`exact`;i!==`skip`&&await this.#l(e,i===`max`,r);let a=r?.to?(0,o.getAddress)(r.to):n;return this.submitTransaction({operation:`shield:approveAndWrap`,config:t.R(this.address,a,e),onSubmitted:r?.onShieldSubmitted})}async approveUnderlying(e){this.#r(`approveUnderlying`);let r=await n.l(`approveUnderlying`,this.sdk.signer,this.sdk.provider),i=await this.#s(),a=(0,o.getAddress)(r.address),s=e??2n**256n-1n;return s>0n&&await this.sdk.provider.readContract(t._(i,a,this.address))>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:t.v(i,this.address,0n)}),this.submitTransaction({operation:`approveUnderlying`,config:t.v(i,this.address,s)})}async unshield(e,n){let{skipBalanceCheck:r=!1,onUnwrapSubmitted:i,onFinalizing:a,onFinalizeSubmitted:o}=n??{};r||await this.assertConfidentialBalance(e);let s={onFinalizing:a,onFinalizeSubmitted:o},c=crypto.randomUUID(),l=await this.unwrap(e);return t.z(`unshield: onUnwrapSubmitted`,()=>i?.(l.txHash),this.sdk.logger),this.#c(l.unwrapRequestId,l.txHash,c,s)}async unshieldAll(e){let n=crypto.randomUUID(),r=await this.unwrapAll();return t.z(`unshieldAll: onUnwrapSubmitted`,()=>e?.onUnwrapSubmitted?.(r.txHash),this.sdk.logger),this.#c(r.unwrapRequestId,r.txHash,n,e)}async resumeUnshield(t,r){let i;try{i=await this.sdk.provider.waitForTransactionReceipt(t)}catch(t){throw t instanceof e.r?t:new n.y(`Failed to get unwrap receipt`,{cause:t})}let a=this.#o(i.logs);return this.#c(a,t,crypto.randomUUID(),r)}async getPendingUnshield(){return Ee(this.sdk.storage,this.address)}async unwrap(e){this.#r(`unwrap`);let r=(0,o.getAddress)((await n.l(`unwrap`,this.sdk.signer,this.sdk.provider)).address),{encryptedValues:i,inputProof:a}=await this.sdk.encrypt({values:[{value:e,type:`euint64`}],contractAddress:this.address,userAddress:r}),[s]=i;if(!s)throw new n.x(`Encryption returned no encrypted values`);let c=await this.submitTransaction({operation:`unwrap`,config:t.I(this.address,r,r,s,a)});return{...c,unwrapRequestId:this.#o(c.receipt.logs)}}async unwrapAll(){this.#r(`unwrapAll`);let e=(0,o.getAddress)((await n.l(`unwrapAll`,this.sdk.signer,this.sdk.provider)).address),r=await this.readConfidentialBalanceOf(e);if(n.o(r))throw new n.b(`Cannot unshield: balance is zero`);let i=await this.submitTransaction({operation:`unwrapAll`,config:t.L(this.address,e,e,r)});return{...i,unwrapRequestId:this.#o(i.receipt.logs)}}async finalizeUnwrap(e){this.#r(`finalizeUnwrap`),await n.u(`finalizeUnwrap`,this.sdk.signer,this.sdk.provider);let r=await this.sdk.decryption.decryptPublicValues([e]),i=r.clearValues[e];return n.s(i,`finalizeUnwrap: clearValue`),this.submitTransaction({operation:`finalizeUnwrap`,config:t.A(this.address,e,i,r.decryptionProof)})}#o(e){let t=G(e);if(!t)throw new n.y(`No UnwrapRequested event found in unwrap receipt`);return t.unwrapRequestId}async#s(){return this.#e===void 0?(this.#t||=this.sdk.provider.readContract(t.F(this.address)).then(e=>(this.#e=e,this.#t=null,e)).catch(e=>{throw this.#t=null,e}),this.#t):this.#e}async#c(e,n,r,i){this.emit({type:t.t.UnshieldPhase1Submitted,txHash:n,operationId:r}),await t.z(`unshield: savePendingUnshield`,()=>Z(this.sdk.storage,this.address,n),this.sdk.logger),this.emit({type:t.t.UnshieldPhase2Started,operationId:r}),t.z(`unshield: onFinalizing`,()=>i?.onFinalizing?.(),this.sdk.logger);let a=await this.finalizeUnwrap(e);return this.emit({type:t.t.UnshieldPhase2Submitted,txHash:a.txHash,operationId:r}),t.z(`unshield: onFinalizeSubmitted`,()=>i?.onFinalizeSubmitted?.(a.txHash),this.sdk.logger),await t.z(`unshield: clearPendingUnshield`,()=>Oe(this.sdk.storage,this.address),this.sdk.logger),a}async#l(e,r,i){this.#r(`approveUnderlying`);let a=await this.#s(),s=(0,o.getAddress)((await n.l(`approveUnderlying`,this.sdk.signer,this.sdk.provider)).address),c=await this.sdk.provider.readContract(t._(a,s,this.address));if(c>=e)return;c>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:t.v(a,this.address,0n)});let l=r?2n**256n-1n:e;await this.submitTransaction({operation:`approveUnderlying`,config:t.v(a,this.address,l),onSubmitted:i?.onApprovalSubmitted})}},ke=class{#e;provider;signer;storage;registry;permits;delegations;decryption;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;constructor(e){this.#e=e.router,this.provider=e.provider,this.signer=e.signer,this.storage=e.storage,this.#r=e.onEvent??function(){},this.#i=e.logger,this.#a=new se(e.storage,this.#i),this.#u=new he({provider:this.provider,router:e.router,emitEvent:this.emitEvent.bind(this),logger:this.#i});let t={};for(let n of e.chains)n.registryAddress&&(t[n.id]=n.registryAddress);this.registry=new i.o({provider:this.provider,registryAddresses:t,registryTTL:e.registryTTL}),this.#n=t,this.#t=e.registryTTL,e.signer&&(this.#l=new i.s({router:e.router,signer:e.signer,transportKeyPairTTL:e.transportKeyPairTTL,permitTTL:e.permitTTL,scope:e.transportKeyPairScope,storage:this.storage,permitStorage:e.permitStorage,logger:this.#i}),this.#c=new de({cache:this.#a,credentialService:this.#l,delegationService:this.#u,router:e.router,emitEvent:this.emitEvent.bind(this)})),this.#s=new ge({router:e.router,emitEvent:this.emitEvent.bind(this)}),this.#o=new _e({signer:e.signer,router:e.router,cachingService:this.#a,credentialService:this.#l,logger:this.#i}),this.permits=new A({signer:this.signer,provider:this.provider,cachingService:this.#a,credentialService:this.#l,logger:this.#i}),this.delegations=new k({signer:this.signer,provider:this.provider,delegationService:this.#u}),this.decryption=new O({signer:this.signer,provider:this.provider,router:e.router,decryptionService:this.#c})}onWalletAccountChange(e){return this.#o.onWalletAccountChange(e)}get logger(){return this.#i}get relayer(){return this.#e.relayer}emitEvent(e,t){try{this.#r({...e,tokenAddress:t,timestamp:Date.now()})}catch(t){this.#i.warn(`${e.type} event listener silently failed`,{error:t})}}createWrappersRegistry(e){return new i.o({provider:this.provider,registryAddresses:{...this.#n,...e},registryTTL:this.#t})}async encrypt(e,t){return this.#s.encryptValues(e,t)}createToken(e){return new n.t(this,e)}createWrappedToken(e){return new Q(this,e)}dispose(){this.#o.dispose()}terminate(){this.dispose(),this.signer?.dispose?.()}[Symbol.dispose](){this.terminate()}},$=class{async get(e){return(await chrome.storage.session.get(e))[e]??null}async set(e,t){await chrome.storage.session.set({[e]:t})}async delete(e){await chrome.storage.session.remove(e)}};const Ae=new $;exports.ACL_TOPICS=we,exports.AclPausedError=_,exports.AclTopics=K,exports.BalanceCheckUnavailableError=n.f,exports.BaseSigner=i.t,exports.ChainMismatchError=n._,exports.ChromeSessionStorage=$,exports.ConfigurationError=e.t,exports.Decryption=O,exports.DecryptionFailedError=n.b,exports.DefaultRegistryAddresses=i.a,exports.DelegationContractIsSelfError=g,exports.DelegationCooldownError=d,exports.DelegationDelegateEqualsContractError=h,exports.DelegationExpirationTooSoonError=v,exports.DelegationExpiredError=p,exports.DelegationExpiryUnchangedError=m,exports.DelegationNotFoundError=f,exports.DelegationNotPropagatedError=y,exports.DelegationSelfNotAllowedError=u,exports.Delegations=k,exports.ERC1363_INTERFACE_ID=t.u,exports.ERC20ReadFailedError=n.p,exports.ERC7984_INTERFACE_ID=t.d,exports.ERC7984_WRAPPER_INTERFACE_ID=t.f,exports.EncryptionFailedError=n.x,exports.IndexedDBStorage=i.p,exports.InsufficientAllowanceError=n.m,exports.InsufficientConfidentialBalanceError=n.h,exports.InsufficientERC20BalanceError=n.g,exports.InvalidTransportKeyPairError=t.J,exports.MemoryStorage=i.d,exports.MutableWalletAccountStore=i.n,exports.NoCiphertextError=t.Y,exports.NotEntitledError=l,exports.Permits=A,exports.RelayerRequestFailedError=e.n,exports.RpcRateLimitError=n.v,exports.SignerNotConfiguredError=t.B,exports.SignerRequiredError=t.V,exports.SigningFailedError=t.G,exports.SigningRejectedError=t.K,exports.TOKEN_TOPICS=be,exports.Token=n.t,exports.Topics=N,exports.TransactionRevertedError=n.y,exports.TransportKeyPairExpiredError=t.X,exports.WalletAccountNotReadyError=t.H,exports.WalletNotConnectedError=t.U,exports.WrappedToken=Q,exports.WrappersRegistry=i.o,exports.ZERO_ENCRYPTED_VALUE=n.i,exports.ZamaError=e.r,exports.ZamaErrorCode=e.i,exports.ZamaSDK=ke,exports.ZamaSDKEvents=t.t,exports.allowanceContract=t._,exports.anvil=a.t,exports.approveContract=t.v,exports.balanceOfContract=t.y,exports.bscTestnet=a.n,exports.chains=a.r,exports.chromeSessionStorage=Ae,exports.cleartext=r.t,exports.confidentialBalanceOfContract=t.w,exports.confidentialTotalSupplyContract=t.T,exports.confidentialTransferContract=t.D,exports.confidentialTransferFromContract=t.k,exports.createConfig=ie,exports.createWalletAccountStore=i.r,exports.decimalsContract=t.b,exports.decodeAclEvent=Y,exports.decodeAclEvents=xe,exports.decodeConfidentialTransfer=B,exports.decodeDelegatedForUserDecryption=q,exports.decodeOnChainEvent=W,exports.decodeOnChainEvents=ve,exports.decodeRevokedDelegationForUserDecryption=J,exports.decodeUnwrapFinalized=U,exports.decodeUnwrapRequested=H,exports.decodeWrap=V,exports.delegateForUserDecryptionContract=C,exports.finalizeUnwrapContract=t.A,exports.findDelegatedForUserDecryption=Se,exports.findRevokedDelegationForUserDecryption=Ce,exports.findUnwrapRequested=G,exports.findWrap=ye,exports.getConfidentialTokenAddressContract=t.r,exports.getDelegationExpiryContract=T,exports.getTokenAddressContract=t.i,exports.getTokenPairContract=t.a,exports.getTokenPairsContract=t.o,exports.getTokenPairsLengthContract=t.s,exports.getTokenPairsSliceContract=t.c,exports.hardhat=a.i,exports.hoodi=a.a,exports.indexedDBStorage=i.m,exports.inferredTotalSupplyContract=t.j,exports.ingenTestnet=a.o,exports.isConfidentialTokenContract=t.p,exports.isConfidentialTokenValidContract=t.l,exports.isConfidentialWrapperContract=t.m,exports.isEncryptedValueZero=n.o,exports.isHandleDelegatedContract=re,exports.isOperatorContract=t.M,exports.isRetryable=e.a,exports.mainnet=a.s,exports.matchZamaError=c,exports.memoryStorage=i.f,exports.nameContract=t.S,exports.rateContract=t.N,exports.retryAfterSeconds=e.o,exports.revokeDelegationContract=w,exports.sepolia=a.c,exports.setOperatorContract=t.P,exports.supportsInterfaceContract=t.g,exports.symbolContract=t.C,exports.transferAndCallContract=x,exports.underlyingContract=t.F,exports.unwrapContract=t.I,exports.unwrapFromBalanceContract=t.L,exports.wrapContract=t.R;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./relayer.cjs"),t=require("./sdk-events.cjs"),n=require("./token.cjs"),r=require("./cleartext.cjs"),i=require("./base-signer.cjs"),a=require("./chains.cjs");let o=require("viem"),s=require("zod/mini");function c(t,n){if(t instanceof e.r){let e=n[t.code];if(e)return e(t)}return n._?.(t)}var l=class extends e.r{encryptedValue;contractAddress;account;constructor(t,n){super(e.i.NotEntitled,`Account ${t.account} is not entitled to decrypt encrypted value ${t.encryptedValue} on contract ${t.contractAddress}. This is not a transient failure — the account needs an on-chain ACL grant before it can decrypt this encrypted value.`,n),this.name=`NotEntitledError`,this.encryptedValue=t.encryptedValue,this.contractAddress=t.contractAddress,this.account=t.account}},u=class extends e.r{constructor(t,n){super(e.i.DelegationSelfNotAllowed,t,n),this.name=`DelegationSelfNotAllowedError`}},d=class extends e.r{constructor(t,n){super(e.i.DelegationCooldown,t,n),this.name=`DelegationCooldownError`}},f=class extends e.r{constructor(t,n){super(e.i.DelegationNotFound,t,n),this.name=`DelegationNotFoundError`}},p=class extends e.r{constructor(t,n){super(e.i.DelegationExpired,t,n),this.name=`DelegationExpiredError`}},m=class extends e.r{constructor(t,n){super(e.i.DelegationExpiryUnchanged,t,n),this.name=`DelegationExpiryUnchangedError`}},h=class extends e.r{constructor(t,n){super(e.i.DelegationDelegateEqualsContract,t,n),this.name=`DelegationDelegateEqualsContractError`}},g=class extends e.r{constructor(t,n){super(e.i.DelegationContractIsSelf,t,n),this.name=`DelegationContractIsSelfError`}},_=class extends e.r{constructor(t,n){super(e.i.AclPaused,t,n),this.name=`AclPausedError`}},v=class extends e.r{constructor(t,n){super(e.i.DelegationExpirationTooSoon,t,n),this.name=`DelegationExpirationTooSoonError`}},y=class extends e.r{constructor(t,n){super(e.i.DelegationNotPropagated,t,n),this.name=`DelegationNotPropagatedError`}};const ee=[n.b,t.Y,e.n,y,t.K,t.G,l,n.v,t.J];function b(r,i,a={}){if(ee.some(e=>r instanceof e))return r;let o=r instanceof Error?r.message:i;if(r instanceof Error&&e.d(r.message))return new t.J(r.message,{cause:r});if(r instanceof Error&&e.f(r.message))return a.isDelegated?new y(`Delegated decryption was denied by the on-chain ACL check. This is most commonly caused by the delegation not having propagated yet, or by the RPC node serving a stale block. Propagation usually completes within ~10 blocks (a few seconds) and the SDK retries across that window; seeing this means it did not sync in time. Retry shortly (and prefer a fresh, low-lag RPC endpoint). If it persists, the delegator may genuinely lack the on-chain ACL grant.`,{cause:r}):new l({encryptedValue:e.g(r.message)??``,contractAddress:a.contractAddress??``,account:a.account??``},{cause:r});if(e.l(r))return new n.v(o,{cause:r,retryAfter:e.c(r)});let s=e.s(r);return s===void 0&&e.h(r)?new n.v(o,{cause:r,retryAfter:e.c(r)}):s===400?new t.Y(r instanceof Error?r.message:`No ciphertext for this account`,{cause:r}):a.isDelegated&&s===500?new y(`Delegated decryption failed with a server error. This is most commonly caused by the delegation not having propagated to the gateway yet. Cross-chain sync usually completes within ~10 blocks (a few seconds) and the SDK retries across that window; seeing this means it did not sync in time — retry shortly. If the error persists, the gateway or relayer may be experiencing an unrelated issue.`,{cause:r}):e.p(r)||s!==void 0?new e.n(o,s,{cause:r,retryAfter:e.c(r),retryable:e.m(r)||void 0}):new n.b(i,{cause:r})}function te(t,r){if(t instanceof e.r)return t;let i=e.s(t),a=e.m(t);return i!==void 0||e.p(t)?new e.n(t instanceof Error?t.message:r,i,{cause:t,retryAfter:e.c(t),retryable:a||void 0}):new n.x(r,{cause:t})}const ne=[{type:`function`,name:`allowance`,inputs:[{name:`owner`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`approve`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`approveAndCall`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`balanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`supportsInterface`,inputs:[{name:`interfaceId`,type:`bytes4`,internalType:`bytes4`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`totalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`transfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`value`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`event`,name:`Approval`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`spender`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Transfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1}];function x(e,t,n,r=`0x`){return{address:e,abi:ne,functionName:`transferAndCall`,args:[t,n,r]}}const S=[{type:`function`,name:`allow`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`allowForDecryption`,inputs:[{name:`handlesList`,type:`bytes32[]`,internalType:`bytes32[]`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`allowTransient`,inputs:[{name:`ciphertext`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`cleanTransientStorage`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`delegateForUserDecryption`,inputs:[{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`},{name:`expirationDate`,type:`uint64`,internalType:`uint64`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`getUserDecryptionDelegationExpirationDate`,inputs:[{name:`delegator`,type:`address`,internalType:`address`},{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`isAccountDenied`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isAllowed`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isAllowedForDecryption`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isHandleDelegatedForUserDecryption`,inputs:[{name:`delegator`,type:`address`,internalType:`address`},{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`},{name:`handle`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`multicall`,inputs:[{name:`data`,type:`bytes[]`,internalType:`bytes[]`}],outputs:[{name:`results`,type:`bytes[]`,internalType:`bytes[]`}],stateMutability:`payable`},{type:`function`,name:`persistAllowed`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`revokeDelegationForUserDecryption`,inputs:[{name:`delegate`,type:`address`,internalType:`address`},{name:`contractAddress`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`}];function C(e,t,n,r){return{address:e,abi:S,functionName:`delegateForUserDecryption`,args:[t,n,r]}}function w(e,t,n){return{address:e,abi:S,functionName:`revokeDelegationForUserDecryption`,args:[t,n]}}function T(e,t,n,r){return{address:e,abi:S,functionName:`getUserDecryptionDelegationExpirationDate`,args:[t,n,r]}}function re(e,t,n,r,i){return{address:e,abi:S,functionName:`isHandleDelegatedForUserDecryption`,args:[t,n,r,i]}}const E=2n**64n-1n;function ie(e){return i.i(e.signer,e.provider,e)}function D(e){return e.startsWith(`0x`)?e:`0x${e}`}var O=class{#e;#t;#n;#r;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.router,this.#r=e.decryptionService}#i(e){return t.W(this.#r,e)}async decryptValues(e,t){let r=this.#i(`decryptValues`),i=await n.l(`decryptValues`,this.#e,this.#t);return r.decryptValues(e,i.address,t)}async delegatedDecryptValues(e,t,r=t,i){let a=this.#i(`delegatedDecryptValues`),o=await n.l(`delegatedDecryptValues`,this.#e,this.#t);return a.delegatedDecryptValues(e,t,o.address,r,i)}async decryptPublicValues(e,t){if(e.length===0)return{clearValues:{},decryptionProof:`0x`,abiEncodedClearValues:`0x`};try{let r=await this.#n.relayer.decryptPublicValuesWithSignatures({encryptedValues:e,options:t}),i={};return r.checkSignaturesArgs.handlesList.forEach((e,t)=>{n.c(r.clearValues[t],`result.clearValues[${t}]`),i[e]=r.clearValues[t].value}),{clearValues:i,abiEncodedClearValues:r.checkSignaturesArgs.abiEncodedCleartexts,decryptionProof:r.checkSignaturesArgs.decryptionProof}}catch(e){throw b(e,`Public decryption failed`)}}async delegatedBatchDecryptValues({encryptedInputs:e,delegatorAddress:t,accountAddress:r=t,maxConcurrency:i,waitForPropagation:a}){let o=this.#i(`delegatedBatchDecryptValues`),s=await n.l(`delegatedBatchDecryptValues`,this.#e,this.#t);return o.delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:s.address,accountAddress:r,maxConcurrency:i,waitForPropagation:a})}},k=class{#e;#t;#n;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.delegationService}#r(e){return t.W(this.#e,e)}async delegateDecryption({contractAddress:e,delegateAddress:t,expirationDate:r}){let i=this.#r(`delegateDecryption`),a=await n.l(`delegateDecryption`,this.#e,this.#t);return this.#n.delegateDecryption(i,{contractAddress:e,delegateAddress:t,delegatorAddress:a.address,expirationDate:r})}async revokeDelegation({contractAddress:e,delegateAddress:t}){let r=this.#r(`revokeDelegation`),i=await n.l(`revokeDelegation`,this.#e,this.#t);return this.#n.revokeDelegation(r,{contractAddress:e,delegateAddress:t,delegatorAddress:i.address})}async isActive(e){return this.#n.isDelegated(e)}async getExpiry(e){return this.#n.getDelegationExpiry(e)}async getStatus(e){return this.#n.getStatus(e)}},A=class{#e;#t;#n;#r;#i;constructor(e){this.#e=e.signer,this.#t=e.provider,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger}#a(e){return t.W(this.#r,e)}async grantPermit(e){if(e.length===0)return;let t=this.#a(`grantPermit`);await n.u(`grantPermit`,this.#e,this.#t),await t.grantPermit(e)}async grantDelegationPermit(e,t){if(t.length===0)return;let r=this.#a(`grantDelegationPermit`);await n.u(`grantDelegationPermit`,this.#e,this.#t),await r.grantPermit(t,e)}async hasPermit(e){return this.#r?this.#r.hasPermit(e):!1}async hasDelegationPermit(e,t){return this.#r?this.#r.hasPermit(t,e):!1}async warmTransportKeyPair(){let e=this.#r;if(!e)return;let t=this.#e?.walletAccount.getSnapshot();t&&await e.warmTransportKeyPair(t.address)}async revokePermits(e){let t=this.#a(`revokePermits`),r=(0,o.getAddress)((await n.l(`revokePermits`,this.#e,this.#t)).address);try{await t.revokePermits(e)}finally{await this.#o(r)}}async clear(){let e=this.#a(`clear`),t=(0,o.getAddress)((await n.l(`clear`,this.#e,this.#t)).address);try{await e.clearCredentials()}finally{await this.#o(t)}}async#o(e){await t.z(`clear decrypt cache`,()=>this.#n.clearForRequester(e),this.#i)}async revokeTransportKeyPair(e){await this.#a(`revokeTransportKeyPair`).revokeTransportKeyPair(e)}async warmTransportKeyPairScope(e){await this.#a(`warmTransportKeyPairScope`).warmTransportKeyPairScope(e)}};const ae=s.z.union([s.z.bigint(),s.z.boolean(),i.l]),oe=s.z.array(s.z.string());var se=class{#e;#t;#n=`zama:decrypt`;#r=`${this.#n}:keys`;#i=Promise.resolve();constructor(e,t){this.#e=e,this.#t=t}async get(e,t,n){try{let r=this.#c(e,t,n),i=await this.#e.get(r);if(i===null)return null;let a=ae.safeParse(i);return a.success?a.data:(await this.delete(e,t,n),null)}catch(e){return this.#t.warn(`CachingService.get failed`,{error:e}),null}}async set(e,t,n,r){try{let i=this.#c(e,t,n);await this.#e.set(i,r),this.#i=this.#i.then(()=>this.#u(i).catch(e=>{this.#t.warn(`CachingService index write failed`,{error:e})})),await this.#i}catch(e){this.#t.warn(`CachingService.set failed`,{error:e})}}async delete(e,t,n){let r=this.#c(e,t,n);this.#i=this.#i.then(()=>this.#a(r).catch(e=>{this.#t.warn(`CachingService.delete failed`,{error:e})})),await this.#i}async clearForRequester(e){this.#i=this.#i.then(()=>this.#o(e).catch(e=>{this.#t.warn(`CachingService.clearForRequester failed`,{error:e})})),await this.#i}async clearAll(){this.#i=this.#i.then(()=>this.#s().catch(e=>{this.#t.warn(`CachingService.clearAll failed`,{error:e})})),await this.#i}async#a(e){await this.#e.delete(e).catch(()=>{});let t=await this.#l(),n=t.filter(t=>t!==e);n.length!==t.length&&await this.#e.set(this.#r,n)}async#o(e){let t=(0,o.getAddress)(e),n=`${this.#n}:${t}:`,r=await this.#l(),i=[],a=[];for(let e of r)e.startsWith(n)?i.push(e):a.push(e);await Promise.all(i.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.set(this.#r,a)}async#s(){let e=await this.#l();await Promise.all(e.map(e=>this.#e.delete(e).catch(()=>{}))),await this.#e.delete(this.#r)}#c(e,t,n){return`${this.#n}:${(0,o.getAddress)(e)}:${(0,o.getAddress)(t)}:${n.toLowerCase()}`}async#l(){let e=await this.#e.get(this.#r);if(e===null)return[];let t=oe.safeParse(e);return t.success?t.data:(await this.#e.delete(this.#r).catch(()=>{}),[])}async#u(e){let t=await this.#l();t.includes(e)||(t.push(e),await this.#e.set(this.#r,t))}};function ce(e,t){let r=le(e,t);if(!r)throw new n.b(`No permit covers contract ${t} after allow()`);return{privateKey:e.keypair.privateKey,publicKey:e.keypair.publicKey,serializedPermit:r.serializedPermit}}function le(e,t){let n=i.c(t);return e.permissions.find(e=>e.contractAddresses.includes(n))}const ue=e=>new Promise(t=>setTimeout(t,e));var de=class{#e;#t;#n;#r;#i;constructor({cache:e,credentialService:t,delegationService:n,router:r,emitEvent:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i}async decryptValues(e,t,n){let r=(0,o.getAddress)(t);return this.#s(e,{requesterAddress:r,aclActorAddress:r,resolveCredentials:e=>this.#t.grantPermit(e),decryptContract:({credentials:e,contractAddress:t,encryptedValues:n,options:r})=>this.#o(e,t,n,r),errorMessage:`Failed to decrypt encrypted values`},n)}async delegatedDecryptValues(e,t,n,r,i){let a=(0,o.getAddress)(t),s=(0,o.getAddress)(n);return this.#a(i?.waitForPropagation??!0,()=>this.#s(e,{requesterAddress:(0,o.getAddress)(r),aclActorAddress:a,resolveCredentials:e=>this.#t.grantPermit(e,a),validate:e=>this.#f(e,{delegatorAddress:a,delegateAddress:s}),decryptContract:({credentials:e,contractAddress:t,encryptedValues:n,options:r})=>this.#o(e,t,n,r),errorMessage:`Failed to decrypt delegated encrypted values`,delegated:!0}))}async#a(e,t){let n;for(let r=0;r<16;r++)try{return await t()}catch(t){if(n=t,!(r<15&&e&&t instanceof y))throw t;await ue(2e3)}throw n}async delegatedBatchDecryptHandlesAs({encryptedInputs:e,delegatorAddress:t,delegateAddress:r,accountAddress:i,maxConcurrency:a=5,waitForPropagation:s=!0}){let c=e.map(e=>({encryptedValue:e.encryptedValue,contractAddress:(0,o.getAddress)(e.contractAddress)}));if(c.length===0)return{items:c};let l=(0,o.getAddress)(i);try{let e=await this.delegatedDecryptValues(c.map(({encryptedValue:e,contractAddress:t})=>({encryptedValue:e,contractAddress:t})),t,r,l,{waitForPropagation:s});for(let t of c)this.#l(t,e);return{items:c}}catch(e){if(n.d(e))throw e;if(c.length===1){let[n=this.#d()]=c;return n.error=this.#u(e,`Failed to decrypt delegated encrypted values`,{isDelegated:!0,contractAddress:n.contractAddress,account:(0,o.getAddress)(t)}),{items:c}}}let u=!1;return await n.r(c.map(e=>async()=>{if(!u)try{let n=await this.delegatedDecryptValues([{encryptedValue:e.encryptedValue,contractAddress:e.contractAddress}],t,r,l,{waitForPropagation:!1});this.#l(e,n)}catch(r){if(n.d(r))throw u=!0,r;e.error=this.#u(r,`Failed to decrypt delegated encrypted values`,{isDelegated:!0,contractAddress:e.contractAddress,account:(0,o.getAddress)(t)})}}),a),{items:c}}async#o(t,n,r,i){let a=ce(t,n),o;try{o=await this.#r.relayer.parseTransportKeyPair({publicKey:a.publicKey,privateKey:a.privateKey,tkmsVersion:t.keypair.tkmsVersion})}catch(t){throw t instanceof Error&&e.d(t.message)&&await this.#t.evictTransportKeyPair(),t}let s=await this.#r.relayer.parseSignedDecryptionPermit({transportKeyPair:o,serializedPermit:a.serializedPermit});return this.#r.relayer.decryptValues({transportKeyPair:o,signedPermit:s,encryptedValues:r,contractAddress:n,options:i})}async#s(r,i,a){if(r.length===0)return{};let s=r.map(e=>({encryptedValue:e.encryptedValue,contractAddress:(0,o.getAddress)(e.contractAddress)})),c={},l=[];for(let e of s)n.o(e.encryptedValue)?c[e.encryptedValue]=0n:l.push(e);if(l.length===0)return c;let u=Array.from(new Set(s.map(e=>e.contractAddress))),d=Array.from(new Set(l.map(e=>e.contractAddress)));if(i.validate)try{await i.validate(d)}catch(t){throw e.h(t)?this.#c(t,`the delegation pre-check`):t}let f=[];for(let e of l){let t=await this.#e.get(i.requesterAddress,e.contractAddress,e.encryptedValue);t===null?f.push(e):c[e.encryptedValue]=t}if(f.length===0)return c;let p=await i.resolveCredentials(u),m=new Map;for(let e of f){let t=m.get(e.contractAddress);t?t.push(e.encryptedValue):m.set(e.contractAddress,[e.encryptedValue])}let h=[];for(let[e,t]of m)for(let r of n.a(t))h.push({contractAddress:e,encryptedValues:r});let g=Date.now(),_=f.map(e=>e.encryptedValue);try{this.#i({type:t.t.DecryptStart,encryptedValues:_}),await n.r(h.map(({contractAddress:e,encryptedValues:t})=>async()=>{let r;try{r=await i.decryptContract({credentials:p,contractAddress:e,encryptedValues:t,options:a})}catch(t){throw b(t,i.errorMessage,{isDelegated:i.delegated,contractAddress:e,account:i.aclActorAddress})}for(let n=0;n<t.length;n++){let a=t[n],o=r[n]?.value;a!==void 0&&o!==void 0&&(c[a]=o,await this.#e.set(i.requesterAddress,e,a,o))}let o=t.filter(e=>c[e]===void 0);if(o.length>0)throw new n.b(`${i.errorMessage}: relayer returned no clear value for ${o.length} of ${t.length} handle(s) on ${e}`,{cause:AggregateError(o.map(t=>new n.b(`No clear value for handle ${t} on ${e}`)),`${o.length} handle(s) missing a clear value on ${e}`)})}),5);let e={};for(let t of _){let n=c[t];n!==void 0&&(e[t]=n)}return this.#i({type:t.t.DecryptEnd,durationMs:Date.now()-g,encryptedValues:_,result:e}),c}catch(n){let r=n instanceof e.r&&n.cause instanceof Error?n.cause:n;throw this.#i({type:t.t.DecryptError,error:e._(r),durationMs:Date.now()-g,encryptedValues:_}),b(n,i.errorMessage,{isDelegated:i.delegated})}}#c(t,r){return new n.v(`RPC provider rate-limited ${r}; retry with backoff.`,{cause:t,retryAfter:e.c(t)})}#l(e,t){let r=t[e.encryptedValue];if(r===void 0){e.error=new n.b(`Batch delegated decryption returned no value for encrypted value ${e.encryptedValue} on contract ${e.contractAddress}`);return}e.value=r}#u(t,n,r){return t instanceof e.r?t:b(t,n,r)}#d(){throw new n.b(`Batch delegated decryption invariant failed: missing item`)}async#f(e,{delegatorAddress:t,delegateAddress:n}){let r=await this.#n.findInactiveDelegations(e,t,n);if(r.size!==0)for(let e of r.values())throw e}};function fe(e){if(!(e instanceof Error))return null;let t=e.cause;if(typeof t!=`object`||!t||!(`data`in t))return null;let{data:n}=t;return typeof n!=`object`||!n||!(`errorName`in n)?null:typeof n.errorName==`string`?n.errorName:null}const j={AlreadyDelegatedOrRevokedInSameBlock:e=>new d(`Only one delegate/revoke per (delegator, delegate, contract) per block. Wait for the next block before retrying.`,{cause:e}),SenderCannotBeContractAddress:e=>new g(`The contract address cannot be the caller address.`,{cause:e}),EnforcedPause:e=>new _(`The ACL contract is paused. Delegation operations are temporarily disabled.`,{cause:e}),SenderCannotBeDelegate:e=>new u(`Cannot delegate to yourself (delegate === msg.sender).`,{cause:e}),DelegateCannotBeContractAddress:e=>new h(`Delegate address cannot be the same as the contract address.`,{cause:e}),ExpirationDateBeforeOneHour:e=>new v(`Expiration date must be at least 1 hour in the future.`,{cause:e}),ExpirationDateAlreadySetToSameValue:e=>new m(`The new expiration date is the same as the current one.`,{cause:e}),NotDelegatedYet:e=>new f(`Cannot revoke: no active delegation exists.`,{cause:e})};function pe(e){return e in j}function me(e,t){let n=fe(e);if(n&&pe(n))return j[n](t);let r=e instanceof Error?e.message:String(e);for(let[e,n]of Object.entries(j))if(r.includes(e))return n(t);return null}var he=class{#e;#t;#n;#r;constructor({provider:e,router:t,emitEvent:n=()=>{},logger:r}){this.#t=e,this.#e=t,this.#r=r,this.#n=n}async delegateDecryption(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r,expirationDate:i}){if(i&&i.getTime()<Date.now()+36e5)throw new v(`Expiration date must be at least 1 hour in the future`);let a=(0,o.getAddress)(t),s=(0,o.getAddress)(n),c=(0,o.getAddress)(r);if(s===c)throw new u(`Cannot delegate to yourself (delegate === msg.sender).`);if(s===a)throw new h(`Delegate address cannot be the same as the contract address (${a}).`);let l=this.#e.relayer.chain.aclContractAddress,d=i?BigInt(Math.floor(i.getTime()/1e3)):E,f;try{f=await this.getDelegationExpiry({contractAddress:a,delegatorAddress:c,delegateAddress:s})}catch(e){this.#r.warn(`delegateDecryption: pre-flight expiry check failed`,{error:e}),f=-1n}if(f===d)throw new m(`The new expiration date (${d}) is the same as the current one. No on-chain change needed.`);return this.#i({operation:`delegateDecryption`,signer:e,contractAddress:t,config:C(l,s,a,d)})}async revokeDelegation(e,{contractAddress:t,delegateAddress:n,delegatorAddress:r}){let i=(0,o.getAddress)(t),a=(0,o.getAddress)(n),s=(0,o.getAddress)(r),c=this.#e.relayer.chain.aclContractAddress,l;try{l=await this.getDelegationExpiry({contractAddress:i,delegatorAddress:s,delegateAddress:a})}catch(e){this.#r.warn(`revokeDelegation: pre-flight expiry check failed`,{error:e}),l=1n}if(l===0n)throw new f(`No active delegation found for delegate ${a} on contract ${i}.`);return this.#i({operation:`revokeDelegation`,signer:e,contractAddress:t,config:w(c,a,i)})}async isDelegated(e){return(await this.getStatus(e)).isActive}async getStatus(e){let t=await this.getDelegationExpiry(e);return t===0n?{isActive:!1,expiryTimestamp:t}:t===E?{isActive:!0,expiryTimestamp:t}:{isActive:t>await this.#t.getBlockTimestamp(),expiryTimestamp:t}}async getDelegationExpiry({contractAddress:e,delegatorAddress:t,delegateAddress:n}){let r=this.#e.relayer.chain.aclContractAddress;return this.#t.readContract(T(r,(0,o.getAddress)(t),(0,o.getAddress)(n),(0,o.getAddress)(e)))}async#i({operation:e,signer:t,contractAddress:r,config:i}){try{return await n.n({operation:e,signer:t,provider:this.#t,config:i,emit:e=>this.#n(e,r),logger:this.#r})}catch(e){throw this.#a(e),e}}#a(e){if(!(e instanceof n.y))return;let t=me(e.cause??e,e);if(t)throw t}async findInactiveDelegations(e,t,n){let r=new Map;return await Promise.all(e.map(async e=>{try{await this.assertDelegationActive(e,t,n)}catch(t){if(t instanceof f||t instanceof p){let n=(0,o.getAddress)(e);r.set(n,t);return}throw t}})),r}async assertDelegationActive(e,t,n){let r=(0,o.getAddress)(e),i=(0,o.getAddress)(t),a=(0,o.getAddress)(n),{isActive:s,expiryTimestamp:c}=await this.getStatus({contractAddress:r,delegatorAddress:i,delegateAddress:a});if(!s)throw c===0n?new f(`No active delegation from ${i} to ${a} for ${r}`):new p(`Delegation from ${i} to ${a} for ${r} has expired`)}},ge=class{#e;#t;constructor({router:e,emitEvent:t}){this.#e=e,this.#t=t}async encryptValues(n,r){let i=Date.now(),a=(0,o.getAddress)(n.contractAddress);try{this.#t({type:t.t.EncryptStart},a);let e=await this.#e.relayer.encryptValues({...n,options:r});return this.#t({type:t.t.EncryptEnd,durationMs:Date.now()-i},a),e}catch(n){throw this.#t({type:t.t.EncryptError,error:e._(n),durationMs:Date.now()-i},a),te(n,`Encryption failed`)}}},_e=class{#e;#t;#n;#r;#i;#a=new Set;#o;constructor(e){this.#e=e.signer,this.#t=e.router,this.#n=e.cachingService,this.#r=e.credentialService,this.#i=e.logger,this.#e&&(this.#o=this.#e.walletAccount.subscribe(e=>{this.#s(e).catch(e=>{this.#i.warn(`wallet account handler failed`,{error:e})})}))}onWalletAccountChange(e){return this.#a.add(e),()=>{this.#a.delete(e)}}dispose(){this.#o?.(),this.#o=void 0,this.#a.clear()}async#s(e){let n=e.previous,r=e.next,i=r?.chainId;i!==void 0&&await t.z(`switch relayer chain`,()=>this.#t.switchChain(i),this.#i);let a=this.#r;a&&await t.z(`credential wallet account change`,()=>a.handleWalletAccountChange(n,r),this.#i),n&&await t.z(`clear decrypt cache`,()=>this.#n.clearForRequester(n.address),this.#i),await Promise.all(Array.from(this.#a,n=>t.z(`wallet account listener`,()=>n(e),this.#i)))}};function M(e){return(0,o.keccak256)((0,o.toBytes)(e))}const N={ConfidentialTransfer:M(`ConfidentialTransfer(address,address,bytes32)`),Wrap:M(`Wrap(address,uint256,bytes32)`),UnwrapRequested:M(`UnwrapRequested(address,bytes32,bytes32)`),UnwrapFinalized:M(`UnwrapFinalized(address,bytes32,bytes32,uint64)`)};function P(e){return(0,o.getAddress)(D(e.slice(-40)))}function F(e){return e}function I(e,t){let n=2+t*64,r=e.slice(n,n+64);return r.length===64?r:r.padEnd(64,`0`)}function L(e,t){return(0,o.getAddress)(D(I(e,t).slice(-40)))}function R(e,t){return BigInt(`0x`+I(e,t))}function z(e,t){return D(I(e,t))}function B(e){return e.topics[0]!==N.ConfidentialTransfer||e.topics.length<4?null:{eventName:`ConfidentialTransfer`,from:P(e.topics[1]),to:P(e.topics[2]),encryptedAmount:F(e.topics[3])}}function V(e){return e.topics[0]!==N.Wrap||e.topics.length<2?null:{eventName:`Wrap`,to:P(e.topics[1]),roundedAmount:R(e.data,0),encryptedWrappedAmount:z(e.data,1)}}function H(e){return e.topics[0]!==N.UnwrapRequested||e.topics.length<3?null:{eventName:`UnwrapRequested`,receiver:P(e.topics[1]),unwrapRequestId:F(e.topics[2]),encryptedAmount:z(e.data,0)}}function U(e){return e.topics[0]!==N.UnwrapFinalized||e.topics.length<3?null:{eventName:`UnwrapFinalized`,receiver:P(e.topics[1]),unwrapRequestId:F(e.topics[2]),encryptedAmount:z(e.data,0),cleartextAmount:R(e.data,1)}}function W(e){return B(e)??V(e)??H(e)??U(e)}function ve(e){let t=[];for(let n of e){let e=W(n);e&&t.push(e)}return t}function G(e){for(let t of e){let e=H(t);if(e)return e}return null}function ye(e){for(let t of e){let e=V(t);if(e)return e}return null}const be=[N.ConfidentialTransfer,N.Wrap,N.UnwrapRequested,N.UnwrapFinalized],K={DelegatedForUserDecryption:M(`DelegatedForUserDecryption(address,address,address,uint64,uint64,uint64)`),RevokedDelegationForUserDecryption:M(`RevokedDelegationForUserDecryption(address,address,address,uint64,uint64)`)};function q(e){return e.topics[0]!==K.DelegatedForUserDecryption||e.topics.length<3?null:{eventName:`DelegatedForUserDecryption`,delegator:P(e.topics[1]),delegate:P(e.topics[2]),contractAddress:L(e.data,0),delegationCounter:R(e.data,1),oldExpirationDate:R(e.data,2),newExpirationDate:R(e.data,3)}}function J(e){return e.topics[0]!==K.RevokedDelegationForUserDecryption||e.topics.length<3?null:{eventName:`RevokedDelegationForUserDecryption`,delegator:P(e.topics[1]),delegate:P(e.topics[2]),contractAddress:L(e.data,0),delegationCounter:R(e.data,1),oldExpirationDate:R(e.data,2)}}function Y(e){return q(e)??J(e)}function xe(e){let t=[];for(let n of e){let e=Y(n);e&&t.push(e)}return t}function Se(e){for(let t of e){let e=q(t);if(e)return e}return null}function Ce(e){for(let t of e){let e=J(t);if(e)return e}return null}const we=[K.DelegatedForUserDecryption,K.RevokedDelegationForUserDecryption];function X(e){return`zama:pending-unshield:${i.c(e)}`}const Te=s.z.union([s.z.pipe(i.u,s.z.transform(e=>({unwrapTxHash:e}))),s.z.pipe(s.z.object({version:s.z.literal(1),unwrapTxHash:i.u,unwrapRequestId:s.z.optional(i.u)}),s.z.transform(({unwrapTxHash:e,unwrapRequestId:t})=>({unwrapTxHash:e,unwrapRequestId:t})))]);async function Z(e,t,n,r){if(r===void 0){await e.set(X(t),n);return}await e.set(X(t),{version:1,unwrapTxHash:n,unwrapRequestId:r})}async function Ee(e,t){return(await De(e,t))?.unwrapTxHash??null}async function De(e,t){let n=X(t),r=await e.get(n);if(r==null)return null;let i=Te.safeParse(r);return i.success?i.data:(await e.delete(n),null)}async function Oe(e,t){await e.delete(X(t))}var Q=class extends n.t{#e;#t=null;#n=null;#r(e){try{return n.c(this.sdk.signer,`WrappedToken.sdk.signer`),this.sdk.signer}catch(n){throw new t.B(e,{cause:n})}}async underlying(){return this.#s()}async isPayable(){if(this.#n!==null)return this.#n;try{let e=await this.#s();this.#n=await this.sdk.provider.readContract(t.h(e))}catch{this.#n=!1}return this.#n}async allowance(e){let n=await this.#s();return this.sdk.provider.readContract(t._(n,(0,o.getAddress)(e),this.address))}async shield(r,i){let a=await n.l(`shield`,this.sdk.signer,this.sdk.provider),s=await this.isPayable(),c=await this.#s(),l=(0,o.getAddress)(a.address),u;try{u=await this.sdk.provider.readContract(t.y(c,l))}catch(t){throw t instanceof e.r?t:new n.p(`Could not read ERC-20 balance for shield validation (token: ${c})`,{cause:e._(t)})}if(u<r)throw new n.g(`Insufficient ERC-20 balance: requested ${r}, available ${u} (token: ${c})`,{requested:r,available:u,token:c});return s?this.#i(r,c,l,i):this.#a(r,l,i)}async#i(e,t,n,r){this.#r(`shield`);let i=r?.to?(0,o.getAddress)(r.to):n,a=i===n?`0x`:i;return this.submitTransaction({operation:`shield:transferAndCall`,config:x(t,this.address,e,a),onSubmitted:r?.onShieldSubmitted})}async wrap(r,i){this.#r(`wrap`);let a=await n.l(`wrap`,this.sdk.signer,this.sdk.provider),s=await this.#s(),c=(0,o.getAddress)(a.address),l;try{l=await this.sdk.provider.readContract(t.y(s,c))}catch(t){throw t instanceof e.r?t:new n.p(`Could not read ERC-20 balance for wrap validation (token: ${s})`,{cause:e._(t)})}if(l<r)throw new n.g(`Insufficient ERC-20 balance: requested ${r}, available ${l} (token: ${s})`,{requested:r,available:l,token:s});let u;try{u=await this.sdk.provider.readContract(t._(s,c,this.address))}catch(t){throw t instanceof e.r?t:new n.p(`Could not read ERC-20 allowance for wrap validation (token: ${s})`,{cause:e._(t)})}if(u<r)throw new n.m(`Insufficient allowance for wrap: requested ${r}, approved ${u}. Call approveUnderlying() first (token: ${s}).`,{requested:r,available:u,token:s});let d=i?.to?(0,o.getAddress)(i.to):c;return this.submitTransaction({operation:`wrap`,config:t.R(this.address,d,r),onSubmitted:i?.onWrapSubmitted})}async#a(e,n,r){this.#r(`shield`);let i=r?.approvalStrategy??`exact`;i!==`skip`&&await this.#l(e,i===`max`,r);let a=r?.to?(0,o.getAddress)(r.to):n;return this.submitTransaction({operation:`shield:approveAndWrap`,config:t.R(this.address,a,e),onSubmitted:r?.onShieldSubmitted})}async approveUnderlying(e){this.#r(`approveUnderlying`);let r=await n.l(`approveUnderlying`,this.sdk.signer,this.sdk.provider),i=await this.#s(),a=(0,o.getAddress)(r.address),s=e??2n**256n-1n;return s>0n&&await this.sdk.provider.readContract(t._(i,a,this.address))>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:t.v(i,this.address,0n)}),this.submitTransaction({operation:`approveUnderlying`,config:t.v(i,this.address,s)})}async unshield(e,n){let{skipBalanceCheck:r=!1,onUnwrapSubmitted:i,onFinalizing:a,onFinalizeSubmitted:o}=n??{};r||await this.assertConfidentialBalance(e);let s={onFinalizing:a,onFinalizeSubmitted:o},c=crypto.randomUUID(),l=await this.unwrap(e);return t.z(`unshield: onUnwrapSubmitted`,()=>i?.(l.txHash),this.sdk.logger),this.#c(l.unwrapRequestId,l.txHash,c,s)}async unshieldAll(e){let n=crypto.randomUUID(),r=await this.unwrapAll();return t.z(`unshieldAll: onUnwrapSubmitted`,()=>e?.onUnwrapSubmitted?.(r.txHash),this.sdk.logger),this.#c(r.unwrapRequestId,r.txHash,n,e)}async resumeUnshield(t,r){let i;try{i=await this.sdk.provider.waitForTransactionReceipt(t)}catch(t){throw t instanceof e.r?t:new n.y(`Failed to get unwrap receipt`,{cause:t})}let a=this.#o(i.logs);return this.#c(a,t,crypto.randomUUID(),r)}async getPendingUnshield(){return Ee(this.sdk.storage,this.address)}async unwrap(e){this.#r(`unwrap`);let r=(0,o.getAddress)((await n.l(`unwrap`,this.sdk.signer,this.sdk.provider)).address),{encryptedValues:i,inputProof:a}=await this.sdk.encrypt({values:[{value:e,type:`euint64`}],contractAddress:this.address,userAddress:r}),[s]=i;if(!s)throw new n.x(`Encryption returned no encrypted values`);let c=await this.submitTransaction({operation:`unwrap`,config:t.I(this.address,r,r,s,a)});return{...c,unwrapRequestId:this.#o(c.receipt.logs)}}async unwrapAll(){this.#r(`unwrapAll`);let e=(0,o.getAddress)((await n.l(`unwrapAll`,this.sdk.signer,this.sdk.provider)).address),r=await this.readConfidentialBalanceOf(e);if(n.o(r))throw new n.b(`Cannot unshield: balance is zero`);let i=await this.submitTransaction({operation:`unwrapAll`,config:t.L(this.address,e,e,r)});return{...i,unwrapRequestId:this.#o(i.receipt.logs)}}async finalizeUnwrap(e){this.#r(`finalizeUnwrap`),await n.u(`finalizeUnwrap`,this.sdk.signer,this.sdk.provider);let r=await this.sdk.decryption.decryptPublicValues([e]),i=r.clearValues[e];return n.s(i,`finalizeUnwrap: clearValue`),this.submitTransaction({operation:`finalizeUnwrap`,config:t.A(this.address,e,i,r.decryptionProof)})}#o(e){let t=G(e);if(!t)throw new n.y(`No UnwrapRequested event found in unwrap receipt`);return t.unwrapRequestId}async#s(){return this.#e===void 0?(this.#t||=this.sdk.provider.readContract(t.F(this.address)).then(e=>(this.#e=e,this.#t=null,e)).catch(e=>{throw this.#t=null,e}),this.#t):this.#e}async#c(e,n,r,i){this.emit({type:t.t.UnshieldPhase1Submitted,txHash:n,operationId:r}),await t.z(`unshield: savePendingUnshield`,()=>Z(this.sdk.storage,this.address,n),this.sdk.logger),this.emit({type:t.t.UnshieldPhase2Started,operationId:r}),t.z(`unshield: onFinalizing`,()=>i?.onFinalizing?.(),this.sdk.logger);let a=await this.finalizeUnwrap(e);return this.emit({type:t.t.UnshieldPhase2Submitted,txHash:a.txHash,operationId:r}),t.z(`unshield: onFinalizeSubmitted`,()=>i?.onFinalizeSubmitted?.(a.txHash),this.sdk.logger),await t.z(`unshield: clearPendingUnshield`,()=>Oe(this.sdk.storage,this.address),this.sdk.logger),a}async#l(e,r,i){this.#r(`approveUnderlying`);let a=await this.#s(),s=(0,o.getAddress)((await n.l(`approveUnderlying`,this.sdk.signer,this.sdk.provider)).address),c=await this.sdk.provider.readContract(t._(a,s,this.address));if(c>=e)return;c>0n&&await this.submitTransaction({operation:`approveUnderlying:reset`,config:t.v(a,this.address,0n)});let l=r?2n**256n-1n:e;await this.submitTransaction({operation:`approveUnderlying`,config:t.v(a,this.address,l),onSubmitted:i?.onApprovalSubmitted})}},ke=class{#e;provider;signer;storage;registry;permits;delegations;decryption;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;constructor(e){this.#e=e.router,this.provider=e.provider,this.signer=e.signer,this.storage=e.storage,this.#r=e.onEvent??function(){},this.#i=e.logger,this.#a=new se(e.storage,this.#i),this.#u=new he({provider:this.provider,router:e.router,emitEvent:this.emitEvent.bind(this),logger:this.#i});let t={};for(let n of e.chains)n.registryAddress&&(t[n.id]=n.registryAddress);this.registry=new i.o({provider:this.provider,registryAddresses:t,registryTTL:e.registryTTL}),this.#n=t,this.#t=e.registryTTL,e.signer&&(this.#l=new i.s({router:e.router,signer:e.signer,transportKeyPairTTL:e.transportKeyPairTTL,permitTTL:e.permitTTL,scope:e.transportKeyPairScope,storage:this.storage,permitStorage:e.permitStorage,logger:this.#i}),this.#c=new de({cache:this.#a,credentialService:this.#l,delegationService:this.#u,router:e.router,emitEvent:this.emitEvent.bind(this)})),this.#s=new ge({router:e.router,emitEvent:this.emitEvent.bind(this)}),this.#o=new _e({signer:e.signer,router:e.router,cachingService:this.#a,credentialService:this.#l,logger:this.#i}),this.permits=new A({signer:this.signer,provider:this.provider,cachingService:this.#a,credentialService:this.#l,logger:this.#i}),this.delegations=new k({signer:this.signer,provider:this.provider,delegationService:this.#u}),this.decryption=new O({signer:this.signer,provider:this.provider,router:e.router,decryptionService:this.#c})}onWalletAccountChange(e){return this.#o.onWalletAccountChange(e)}get logger(){return this.#i}get relayer(){return this.#e.relayer}emitEvent(e,t){try{this.#r({...e,tokenAddress:t,timestamp:Date.now()})}catch(t){this.#i.warn(`${e.type} event listener silently failed`,{error:t})}}createWrappersRegistry(e){return new i.o({provider:this.provider,registryAddresses:{...this.#n,...e},registryTTL:this.#t})}async encrypt(e,t){return this.#s.encryptValues(e,t)}createToken(e){return new n.t(this,e)}createWrappedToken(e){return new Q(this,e)}dispose(){this.#o.dispose()}terminate(){this.dispose(),this.signer?.dispose?.()}[Symbol.dispose](){this.terminate()}},$=class{async get(e){return(await chrome.storage.session.get(e))[e]??null}async set(e,t){await chrome.storage.session.set({[e]:t})}async delete(e){await chrome.storage.session.remove(e)}};const Ae=new $;exports.ACL_TOPICS=we,exports.AclPausedError=_,exports.AclTopics=K,exports.BalanceCheckUnavailableError=n.f,exports.BaseSigner=i.t,exports.ChainMismatchError=n._,exports.ChromeSessionStorage=$,exports.ConfigurationError=e.t,exports.Decryption=O,exports.DecryptionFailedError=n.b,exports.DefaultRegistryAddresses=i.a,exports.DelegationContractIsSelfError=g,exports.DelegationCooldownError=d,exports.DelegationDelegateEqualsContractError=h,exports.DelegationExpirationTooSoonError=v,exports.DelegationExpiredError=p,exports.DelegationExpiryUnchangedError=m,exports.DelegationNotFoundError=f,exports.DelegationNotPropagatedError=y,exports.DelegationSelfNotAllowedError=u,exports.Delegations=k,exports.ERC1363_INTERFACE_ID=t.u,exports.ERC20ReadFailedError=n.p,exports.ERC7984_INTERFACE_ID=t.d,exports.ERC7984_WRAPPER_INTERFACE_ID=t.f,exports.EncryptionFailedError=n.x,exports.IndexedDBStorage=i.p,exports.InsufficientAllowanceError=n.m,exports.InsufficientConfidentialBalanceError=n.h,exports.InsufficientERC20BalanceError=n.g,exports.InvalidTransportKeyPairError=t.J,exports.MemoryStorage=i.d,exports.MutableWalletAccountStore=i.n,exports.NoCiphertextError=t.Y,exports.NotEntitledError=l,exports.Permits=A,exports.RelayerRequestFailedError=e.n,exports.RpcRateLimitError=n.v,exports.SignerNotConfiguredError=t.B,exports.SignerRequiredError=t.V,exports.SigningFailedError=t.G,exports.SigningRejectedError=t.K,exports.TOKEN_TOPICS=be,exports.Token=n.t,exports.Topics=N,exports.TransactionRevertedError=n.y,exports.TransportKeyPairExpiredError=t.X,exports.WalletAccountNotReadyError=t.H,exports.WalletNotConnectedError=t.U,exports.WrappedToken=Q,exports.WrappersRegistry=i.o,exports.ZERO_ENCRYPTED_VALUE=n.i,exports.ZamaError=e.r,exports.ZamaErrorCode=e.i,exports.ZamaSDK=ke,exports.ZamaSDKEvents=t.t,exports.allowanceContract=t._,exports.anvil=a.t,exports.approveContract=t.v,exports.balanceOfContract=t.y,exports.bscTestnet=a.n,exports.chains=a.r,exports.chromeSessionStorage=Ae,exports.cleartext=r.t,exports.confidentialBalanceOfContract=t.w,exports.confidentialTotalSupplyContract=t.T,exports.confidentialTransferContract=t.D,exports.confidentialTransferFromContract=t.k,exports.createConfig=ie,exports.createWalletAccountStore=i.r,exports.decimalsContract=t.b,exports.decodeAclEvent=Y,exports.decodeAclEvents=xe,exports.decodeConfidentialTransfer=B,exports.decodeDelegatedForUserDecryption=q,exports.decodeOnChainEvent=W,exports.decodeOnChainEvents=ve,exports.decodeRevokedDelegationForUserDecryption=J,exports.decodeUnwrapFinalized=U,exports.decodeUnwrapRequested=H,exports.decodeWrap=V,exports.delegateForUserDecryptionContract=C,exports.finalizeUnwrapContract=t.A,exports.findDelegatedForUserDecryption=Se,exports.findRevokedDelegationForUserDecryption=Ce,exports.findUnwrapRequested=G,exports.findWrap=ye,exports.getConfidentialTokenAddressContract=t.r,exports.getDelegationExpiryContract=T,exports.getTokenAddressContract=t.i,exports.getTokenPairContract=t.a,exports.getTokenPairsContract=t.o,exports.getTokenPairsLengthContract=t.s,exports.getTokenPairsSliceContract=t.c,exports.hardhat=a.i,exports.hoodi=a.a,exports.indexedDBStorage=i.m,exports.inferredTotalSupplyContract=t.j,exports.ingenTestnet=a.o,exports.isConfidentialTokenContract=t.p,exports.isConfidentialTokenValidContract=t.l,exports.isConfidentialWrapperContract=t.m,exports.isEncryptedValueZero=n.o,exports.isHandleDelegatedContract=re,exports.isOperatorContract=t.M,exports.isRetryable=e.a,exports.mainnet=a.s,exports.matchZamaError=c,exports.memoryStorage=i.f,exports.nameContract=t.S,exports.polygonAmoy=a.c,exports.rateContract=t.N,exports.retryAfterSeconds=e.o,exports.revokeDelegationContract=w,exports.sepolia=a.l,exports.setOperatorContract=t.P,exports.supportsInterfaceContract=t.g,exports.symbolContract=t.C,exports.transferAndCallContract=x,exports.underlyingContract=t.F,exports.unwrapContract=t.I,exports.unwrapFromBalanceContract=t.L,exports.wrapContract=t.R;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/cjs/node/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../fhevm-relayer.cjs"),t=require("../cleartext.cjs"),n=require("../chains.cjs");let r=require("node:async_hooks");function i(t){return{type:`node`,createRelayer:n=>new e.t({chain:n,options:t})}}var a=class{#e=new r.AsyncLocalStorage;run(e){return this.#e.run(new Map,e)}async get(e){return this.#e.getStore()?.get(e)??null}async set(e,t){this.#e.getStore()?.set(e,t)}async delete(e){this.#e.getStore()?.delete(e)}};const o=new a;exports.AsyncLocalMapStorage=a,exports.anvil=n.t,exports.asyncLocalStorage=o,exports.bscTestnet=n.n,exports.chains=n.r,exports.cleartext=t.t,exports.hardhat=n.i,exports.hoodi=n.a,exports.ingenTestnet=n.o,exports.mainnet=n.s,exports.node=i,exports.sepolia=n.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../fhevm-relayer.cjs"),t=require("../cleartext.cjs"),n=require("../chains.cjs");let r=require("node:async_hooks");function i(t){return{type:`node`,createRelayer:n=>new e.t({chain:n,options:t})}}var a=class{#e=new r.AsyncLocalStorage;run(e){return this.#e.run(new Map,e)}async get(e){return this.#e.getStore()?.get(e)??null}async set(e,t){this.#e.getStore()?.set(e,t)}async delete(e){this.#e.getStore()?.delete(e)}};const o=new a;exports.AsyncLocalMapStorage=a,exports.anvil=n.t,exports.asyncLocalStorage=o,exports.bscTestnet=n.n,exports.chains=n.r,exports.cleartext=t.t,exports.hardhat=n.i,exports.hoodi=n.a,exports.ingenTestnet=n.o,exports.mainnet=n.s,exports.node=i,exports.polygonAmoy=n.c,exports.sepolia=n.l;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as e,r as t,t as n}from"./relayer-BWHOLVcG.js";import{C as r,S as i,U as a,a as o,b as s,c,i as l,l as u,o as d,q as f,r as p,s as m,x as h,z as g}from"./sdk-events-D68bJ5jT.js";import{a as _,c as v,l as y,n as b,o as x,s as S}from"./chains-BoqPSzrs.js";import{hasFhevmRuntimeConfig as ee,setFhevmRuntimeConfig as te}from"@fhevm/sdk/viem";import{getAddress as C,isAddress as ne,isHex as re,zeroAddress as w}from"viem";import{z as T}from"zod/mini";var E=class{#e=null;#t=null;#n;#r;#i;constructor(e=`CredentialStore`,t=1,n=`credentials`){this.#n=e,this.#r=t,this.#i=n}#a(){return this.#e?Promise.resolve(this.#e):(this.#t||=new Promise((e,t)=>{let n=indexedDB.open(this.#n,this.#r);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(this.#i)||e.createObjectStore(this.#i,{keyPath:`key`})},n.onsuccess=()=>{this.#e=n.result,this.#t=null,this.#e.onversionchange=()=>{this.#e?.close(),this.#e=null,this.#t=null},this.#e.onclose=()=>{this.#e=null,this.#t=null},e(this.#e)},n.onerror=()=>{this.#e=null,this.#t=null,t(n.error)}}),this.#t)}async#o(e,t){let n=await this.#a();return new Promise((r,i)=>{let a=n.transaction(this.#i,e);a.onabort=()=>i(a.error??Error(`Transaction aborted`));let o=t(a.objectStore(this.#i));e===`readonly`?o.onsuccess=()=>r(o.result):a.oncomplete=()=>r(o.result),o.onerror=()=>i(o.error)})}async get(e){return(await this.#o(`readonly`,t=>t.get(e)))?.value??null}async set(e,t){await this.#o(`readwrite`,n=>n.put({key:e,value:t}))}async delete(e){await this.#o(`readwrite`,t=>t.delete(e))}async clear(){await this.#o(`readwrite`,e=>e.clear())}};const ie=new E;var D=class{#e=new Map;async get(e){return this.#e.get(e)??null}async set(e,t){this.#e.set(e,t)}async delete(e){this.#e.delete(e)}};const ae=new D;function oe(){return typeof window<`u`?new E(`CredentialStore`):new D}function se(e=oe(),t=e){return{storage:e,permitStorage:t}}function ce(e,t){let r=new Map(e.map(e=>[e.id,e]));if(r.size!==e.length){let t=e.map(e=>e.id);throw new n(`Duplicate chain id(s) [${[...new Set(t.filter((e,n)=>t.indexOf(e)!==n))].join(`, `)}] in the chains array. Each chain id must appear only once. Note: hardhat and anvil are aliases (both use 31337).`)}let i=new Map(Object.entries(t)),a=new Map;for(let e of r.keys()){let t=r.get(e),o=i.get(String(e));if(!o)throw new n(`Chain ${e} has no relayer configured. Add a relayer entry: relayers: { [${e}]: web() }`);if(!t)throw new n(`Chain ${e} has a relayer configured but no entry in the chains array. Add the chain config to the chains array.`);a.set(e,{chain:t,relayerConfig:o})}let o=new Set(Object.keys(t).map(Number)),s=new Set([...o].filter(e=>!r.has(e)));if(s.size>0)throw new n(`Relayer entries for chain(s) [${[...s].join(`, `)}] have no matching entry in the chains array. Remove them or add the corresponding chain config.`);return a}var le=class{#e;#t;#n;constructor(e,t){if(e.length===0)throw new n(`At least one chain is required.`);this.#e=new Map(e.map(e=>[e.id,e])),this.#n=e[0].id;let r=new Map;for(let[n,{relayerConfig:i,chain:a}]of ce(e,t))r.set(n,i.createRelayer(a));this.#t=r}get chains(){return[...this.#e.values()]}get chain(){let e=this.#e.get(this.#n);if(e===void 0)throw new n(`Chain ${this.#n} is not configured. Add it to the chains array.`);return e}switchChain(e){this.#n=e}get relayer(){let e=this.#t.get(this.chain.id);if(e===void 0)throw new n(`No relayer configured for chain ${this.#n}. Add it to the relayers object.`);return e}};function O(e){return C(e)}const k=T.custom(e=>typeof e==`string`&&re(e,{strict:!0}),`expected 0x-prefixed hex string`),ue=T.custom(e=>typeof e==`string`&&ne(e,{strict:!1}),`expected EVM address`),A=T.pipe(ue,T.transform(O)),j=T.int().check(T.nonnegative()),de=T.int().check(T.positive()),fe=T.int().check(T.nonnegative()),pe=T.int().check(T.positive());T.int().check(T.positive());const M=86400;function N(){return Math.floor(Date.now()/1e3)}function P(e){return[...new Set(e.map(O))].toSorted()}const F=`transportKeyPairTTL must be a positive integer number of seconds`,I=`permitTTL must be a positive integer number of days`,L=`transportKeyPairScope must be a non-empty string`,R=365*M,z=T.int({error:F}).check(T.positive({error:F}),T.maximum(R,`transportKeyPairTTL must not exceed the fhevm ACL maximum of ${R}s (365 days)`)),B=T.int({error:I}).check(T.positive({error:I})),me=T.string({error:L}).check(T.minLength(1,L)),he=T.object({publicKey:k,privateKey:k,createdAt:j,expiresAt:de,tkmsVersion:T.optional(T.string())}),ge=T.object({domain:T.record(T.string(),T.unknown()),primaryType:T.optional(T.string()),types:T.record(T.string(),T.array(T.object({name:T.string(),type:T.string()}))),message:T.record(T.string(),T.unknown())}),V=T.object({version:T.int().check(T.positive()),eip712:ge,signature:k,signerAddress:A}),H=T.object({keypairPublicKey:k,contractAddresses:T.array(A).check(T.maxLength(10)),serializedPermit:V,startTimestamp:j,durationDays:pe}),_e=T.array(H),ve=T.array(T.string());function U(e){return`keypair:${e}`}function W(e){return`keypair:scope:${e}`}function G(e){return`permits:${e.signerAddress}:${e.chainId}:${e.delegatorAddress}`}function K(e){return`permits-index:${e}`}var ye=class{#e;#t;#n;#r;#i;#a=new Map;#o=new Map;constructor(e){this.#e=e.generator,this.#t=e.storage,this.#n=e.ttl,this.#r=e.logger,this.#i=e.scope}#s(e){return this.#i===void 0?U(e):W(this.#i)}async readStored(e){return this.#c(this.#s(e))}async#c(e){let t=await this.#t.get(e);if(t==null)return null;let n=he.safeParse(t);if(!n.success)return await g(`delete transport key pair entry`,()=>this.#t.delete(e),this.#r),null;let r=n.data;return N()>=r.expiresAt?(await g(`delete transport key pair entry`,()=>this.#t.delete(e),this.#r),null):r}async getOrCreate(e){return this.#l(this.#s(e))}async#l(e,t){let n=`${e}::${t?.strict??!1}`,r=this.#a.get(n);if(r)return r;let i=this.#o.get(e)??0,a=(async()=>{let n=await this.#c(e);if(n!==null)return n;let r=await this.#e(),a=N(),o={publicKey:r.publicKey,privateKey:r.privateKey,createdAt:a,expiresAt:a+this.#n};return r.tkmsVersion&&(o.tkmsVersion=r.tkmsVersion),(this.#o.get(e)??0)===i&&(t?.strict?await this.#t.set(e,o):await g(`persist transport key pair`,()=>this.#t.set(e,o),this.#r)),o})().finally(()=>{this.#a.delete(n)});return this.#a.set(n,a),a}async clear(e){let t=U(e);await g(`delete transport key pair entry`,()=>this.#t.delete(t),this.#r)}async evict(e){let t=this.#s(e);await g(`evict transport key pair entry`,()=>this.#t.delete(t),this.#r)}async clearScope(){if(this.#i===void 0)return;let e=W(this.#i);this.#o.set(e,(this.#o.get(e)??0)+1),await this.#t.delete(e)}async warmScope(){this.#i!==void 0&&await this.#l(W(this.#i),{strict:!0})}};function q(e,t){let n=new Set(e.flatMap(e=>e.contractAddresses));return t.filter(e=>!n.has(e))}function be(e){let t=[];for(let n=0;n<e.length;n+=10)t.push(e.slice(n,n+10));return t}function xe(e,t,n){return e.filter(e=>e.keypairPublicKey===t&&n<e.startTimestamp+e.durationDays*86400)}function Se(e,t){let n=new Set(t);return e.filter(e=>!e.contractAddresses.some(e=>n.has(e)))}function Ce(e,t){return[...new Set([...e,...t])].toSorted()}function we(e,t,n){let r=new Set(n),i=e.filter(e=>new Set([...e.contractAddresses,...t]).size<=10);if(i.length===0)return null;function a(e){return e.contractAddresses.reduce((e,t)=>e+ +!!r.has(t),0)}let o=Math.max(...i.map(a));return i.filter(e=>a(e)===o).reduce((e,t)=>t.startTimestamp>e.startTimestamp?t:e)}var Te=class{#e;#t;constructor(e){this.#e=e.storage,this.#t=e.logger}async list(e){let t=G(e),n=await this.#e.get(t);if(n==null)return[];let r=_e.safeParse(n);return r.success?r.data:(await this.#a(t),await this.#i(e),[])}async listUsableAndPrune(e,t){let n=await this.list(e),r=xe(n,t,Math.floor(Date.now()/1e3));if(r.length!==n.length){let t=G(e);r.length===0?(await this.#a(t),await this.#i(e)):await g(`update permit entry`,()=>this.#e.set(t,r),this.#t)}return r}async append(e,t){if(t.length===0)return;let n=t.map(e=>H.parse(e)),r=await this.list(e);await this.#e.set(G(e),[...r,...n]),await this.#r(e)}async replace(e,t,n){let r=H.parse(n),i=(await this.list(e)).filter(e=>e.serializedPermit.signature!==t);await this.#e.set(G(e),[...i,r]),await this.#r(e)}async deletePermitsTouching(e,t){let n=await this.list(e);if(n.length===0)return;let r=G(e),i=Se(n,t);i.length===0?(await this.#a(r),await this.#i(e)):await this.#e.set(r,i)}async clearAllForSigner(e){let t=K(e),n=await this.#n(t);await Promise.all(n.map(e=>this.#a(e))),await g(`delete permit index`,()=>this.#e.delete(t),this.#t)}async#n(e){let t=await this.#e.get(e);if(t==null)return[];let n=ve.safeParse(t);return n.success?n.data:(await g(`delete permit index`,()=>this.#e.delete(e),this.#t),[])}async#r(e){let t=K(e.signerAddress),n=G(e),r=await this.#n(t);r.includes(n)||await this.#e.set(t,[...r,n])}async#i(e){let t=K(e.signerAddress),n=G(e),r=await this.#n(t),i=r.filter(e=>e!==n);i.length!==r.length&&(i.length===0?await g(`delete permit index`,()=>this.#e.delete(t),this.#t):await g(`update permit index`,()=>this.#e.set(t,i),this.#t))}async#a(e){await g(`delete permit entry`,()=>this.#e.delete(e),this.#t)}},J=class{#e;#t;#n;#r;#i;#a;#o;constructor(e){this.#e=new ye({generator:async()=>{let t=e.router.relayer,n=await t.generateTransportKeyPair();return t.serializeTransportKeyPair({transportKeyPair:n})},storage:e.storage,ttl:e.transportKeyPairTTL,logger:e.logger,scope:e.scope}),this.#t=new Te({storage:e.permitStorage??e.storage,logger:e.logger}),this.#n=e.router,this.#r=e.signer,this.#i=e.permitTTL,this.#a=e.logger,this.#o=e.scope}async grantPermit(e,t){let n=O(this.#r.requireWalletAccount(`grantPermit`).address),r=P(e),i=await this.#e.getOrCreate(n);if(r.length===0)return{keypair:i,permissions:[]};let a={signerAddress:n,chainId:this.#n.chain.id,delegatorAddress:t?O(t):n},o=await this.#t.listUsableAndPrune(a,i.publicKey),s=q(o,r);if(s.length>0){let e=we(o,s,r);if(e!==null){let t=Ce(e.contractAddresses,s),n=await this.#s({chunk:t,keypair:i,scope:a});await g(`replace permit`,()=>this.#t.replace(a,e.serializedPermit.signature,n),this.#a),o[o.indexOf(e)]=n}else for(let e of be(s)){let t=await this.#s({chunk:e,keypair:i,scope:a});o.push(t),await g(`persist permit`,()=>this.#t.append(a,[t]),this.#a)}}let c=new Set(r);return{keypair:i,permissions:o.filter(e=>e.contractAddresses.some(e=>c.has(e)))}}async hasPermit(e,t){if(e.length===0)return!0;let n=this.#r.walletAccount.getSnapshot();if(!n)return!1;let r=O(n.address),i=await this.#e.readStored(r);if(i===null)return!1;let a={signerAddress:r,chainId:this.#n.chain.id,delegatorAddress:t?O(t):r};return q(await this.#t.listUsableAndPrune(a,i.publicKey),P(e)).length===0}async revokePermits(e){let t=O(this.#r.requireWalletAccount(`revokePermits`).address);if(e===void 0){await this.#t.clearAllForSigner(t);return}let n=P(e);if(n.length===0)return;let r=this.#n.chain.id;await this.#t.deletePermitsTouching({signerAddress:t,chainId:r,delegatorAddress:t},n)}async clearCredentials(){let e=O(this.#r.requireWalletAccount(`clearCredentials`).address);await this.#e.clear(e),await this.#t.clearAllForSigner(e)}async revokeTransportKeyPair(e){if(this.#o===void 0)throw new n(`revokeTransportKeyPair() requires a transportKeyPairScope to be configured on this SDK instance — there is no shared key pair to revoke.`);if(e!==this.#o)throw new n(`revokeTransportKeyPair("${e}") does not match the configured scope ("${this.#o}").`);await this.#e.clearScope()}async warmTransportKeyPair(e){await this.#e.getOrCreate(O(e))}async warmTransportKeyPairScope(e){if(this.#o===void 0)throw new n(`warmTransportKeyPairScope() requires a transportKeyPairScope to be configured on this SDK instance — there is no shared key pair to warm.`);if(e!==this.#o)throw new n(`warmTransportKeyPairScope("${e}") does not match the configured scope ("${this.#o}").`);await this.#e.warmScope()}async handleWalletAccountChange(e,t){let n=e?O(e.address):void 0;n!==(t?O(t.address):void 0)&&n&&(await this.#e.clear(n),await this.#t.clearAllForSigner(n))}async#s(n){let{chunk:r,keypair:i,scope:a}=n,o=N(),s=a.delegatorAddress!==a.signerAddress,c=this.#n.relayer;try{let e={transportKeyPair:await c.parseTransportKeyPair(i),contractAddresses:r,startTimestamp:o,durationSeconds:this.#i*M,signerAddress:a.signerAddress,signer:this.#r},t=s?await c.signDecryptionPermit({...e,delegatorAddress:a.delegatorAddress}):await c.signDecryptionPermit(e),n=V.parse(await c.serializeSignedDecryptionPermit({signedPermit:t}));return{keypairPublicKey:i.publicKey,contractAddresses:r,serializedPermit:n,startTimestamp:o,durationDays:this.#i}}catch(n){throw n instanceof t?n:(n instanceof Error&&e(n.message)&&await this.#e.evict(a.signerAddress),f(n,`Credential signing failed`))}}async evictTransportKeyPair(){let e=this.#r.walletAccount.getSnapshot();e&&await this.#e.evict(O(e.address))}},Ee=class{#e;#t=`[zama-sdk]`;constructor(e){this.#e=e}error(e,t){this.#e?.error(`${this.#t} ${e}`,t)}warn(e,t){this.#e?.warn(`${this.#t} ${e}`,t)}info(e,t){this.#e?.info(`${this.#t} ${e}`,t)}debug(e,t){this.#e?.debug(`${this.#t} ${e}`,t)}};function Y(e,t){let r=T.safeParse(e,t);if(r.success)return r.data;throw new n(T.prettifyError(r.error),{cause:r.error})}const X={[S.id]:S.registryAddress,[y.id]:y.registryAddress,[v.id]:v.registryAddress,[_.id]:_.registryAddress,[x.id]:x.registryAddress,[b.id]:b.registryAddress},De=T.record(T.string().check(T.regex(/^\d+$/,`expected numeric chain id key`)),A),Z=fe,Q=300*1e3;var Oe=class{provider;#e;#t;#n=new Map;constructor(e){this.provider=e.provider,this.#e=Object.assign({},X,Y(T.optional(De),e.registryAddresses)),this.#t=Y(Z,e.registryTTL??86400)*1e3}getAddress(e){return this.#e[e]}#r(e){let t=this.#n.get(e);if(t){if(Date.now()>=t.expiresAt){this.#n.delete(e);return}return t.data}}#i(e,t,n=this.#t){return this.#n.set(e,{data:t,expiresAt:Date.now()+n}),t}refresh(){this.#n.clear()}get ttlMs(){return this.#t}async getRegistryAddress(){let e=await this.provider.getChainId(),t=this.#e[e];if(!t)throw new n(`No wrappers registry address configured for chain ${e}.\nPass a registryAddresses entry for this chain.`);return C(t)}async listPairs(e={}){let t=e.page??1,r=e.pageSize??100,i=e.metadata??!1;if(t<1)throw new n(`page must be >= 1, got ${t}`);if(r<1)throw new n(`pageSize must be >= 1, got ${r}`);let a=await this.getRegistryAddress(),o=`total:${a}`,s=this.#r(o);if(s===void 0){let e=await this.provider.readContract(m(a));s=this.#i(o,Number(e))}let l=BigInt((t-1)*r),u=l+BigInt(r)>BigInt(s)?BigInt(s):l+BigInt(r);if(l>=BigInt(s))return{items:[],total:s,page:t,pageSize:r};let d=`slice:${a}:${l}:${u}`,f=this.#r(d);if(f===void 0){let e=await this.provider.readContract(c(a,l,u));f=this.#i(d,[...e])}if(!i)return{items:f,total:s,page:t,pageSize:r};let p=`metadata:${a}:${l}:${u}`,h=this.#r(p);if(h===void 0){let e=await Promise.allSettled(f.map(e=>this.#a(e))),t=e.some(e=>e.status===`rejected`),n=e.map((e,t)=>e.status===`fulfilled`?e.value:Object.assign({},f[t],{metadataFailed:!0,underlying:{name:`Unknown`,symbol:`???`,decimals:0,totalSupply:0n},confidential:{name:`Unknown`,symbol:`???`,decimals:0}}));h=this.#i(p,n,t?Q:void 0)}return{items:h,total:s,page:t,pageSize:r}}async#a(e){let[t,n,a,o,c,l,u]=await Promise.all([this.provider.readContract(i(e.tokenAddress)),this.provider.readContract(r(e.tokenAddress)),this.provider.readContract(s(e.tokenAddress)),this.provider.readContract(h(e.tokenAddress)),this.provider.readContract(i(e.confidentialTokenAddress)),this.provider.readContract(r(e.confidentialTokenAddress)),this.provider.readContract(s(e.confidentialTokenAddress))]);return{...e,underlying:{name:t,symbol:n,decimals:a,totalSupply:o},confidential:{name:c,symbol:l,decimals:u}}}async getConfidentialToken(e){let t=await this.getRegistryAddress(),n=C(e),r=`ct:${t}:${n}`,i=this.#r(r);if(i!==void 0)return i;let[a,o]=await this.provider.readContract(p(t,n));return o===w?this.#i(r,null,Q):this.#i(r,{confidentialTokenAddress:o,isValid:a})}async getUnderlyingToken(e){let t=await this.getRegistryAddress(),n=C(e),r=`ut:${t}:${n}`,i=this.#r(r);if(i!==void 0)return i;let[a,o]=await this.provider.readContract(l(t,n));return o===w?this.#i(r,null,Q):this.#i(r,{tokenAddress:o,isValid:a})}async getTokenPairs(){let e=await this.getRegistryAddress();return this.provider.readContract(d(e))}async getTokenPairsLength(){let e=await this.getRegistryAddress();return this.provider.readContract(m(e))}async getTokenPairsSlice(e,t){let n=await this.getRegistryAddress();return this.provider.readContract(c(n,e,t))}async getTokenPair(e){let t=await this.getRegistryAddress();return this.provider.readContract(o(t,e))}async getConfidentialTokenAddress(e){let t=await this.getRegistryAddress();return this.provider.readContract(p(t,C(e)))}async getTokenAddress(e){let t=await this.getRegistryAddress();return this.provider.readContract(l(t,C(e)))}async isConfidentialTokenValid(e){let t=await this.getRegistryAddress();return this.provider.readContract(u(t,C(e)))}};function ke(e,t,n){let r=new Ee(n.logger);ee()?r.warn(`runtime configuration is already set and cannot be changed.`):te({wasmAssetLoadMode:`auto`,moduleVersions:`auto`,logger:{error:(e,t)=>n.logger?.error(e,{cause:t}),warn:e=>n.logger?.warn(e),debug:e=>n.logger?.debug(e)},...n.runtime});let{storage:i,permitStorage:a}=se(n.storage,n.permitStorage),o=new le(n.chains,n.relayers);return{chains:n.chains,router:o,provider:t,signer:e,storage:i,permitStorage:a,transportKeyPairTTL:Y(z,n.transportKeyPairTTL??2592e3),permitTTL:Y(B,n.permitTTL??30),transportKeyPairScope:n.transportKeyPairScope===void 0?void 0:Y(me,n.transportKeyPairScope),registryTTL:Y(Z,n.registryTTL??86400),logger:r,onEvent:n.onEvent}}function Ae(e,t){return e?.address===t?.address&&e?.chainId===t?.chainId}var $=class{#e=new Set;#t;#n;constructor(e){this.#t=e,this.#n=e!==void 0}getSnapshot(){return this.#t}isReady(){return this.#n}setSnapshot(e){this.#n=!0;let t=this.#t;Ae(t,e)||(this.#t=e,this.#r({previous:t,next:e}))}subscribe(e){this.#e.add(e);let t=this.#t;return t&&e({previous:void 0,next:t}),()=>{this.#e.delete(e)}}#r(e){for(let t of this.#e)t(e)}};function je(e){return new $(e)}var Me=class{walletAccount;#e=!1;constructor(e){this.walletAccount=new $(e)}requireWalletAccount(e){let t=this.walletAccount.getSnapshot();if(!t)throw new a(e);return t}dispose(){this.#e||(this.#e=!0,this.onDispose())}[Symbol.dispose](){this.dispose()}onDispose(){}};export{X as a,O as c,D as d,ae as f,ke as i,A as l,ie as m,$ as n,Oe as o,E as p,je as r,J as s,Me as t,k as u};
|
|
2
|
+
//# sourceMappingURL=base-signer-BGEnALwn.js.map
|