@zama-fhe/sdk 3.7.0-beta.7 → 3.7.0
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/dist/cjs/base-signer.cjs +1 -1
- package/dist/cjs/base-signer.cjs.map +1 -1
- package/dist/cjs/erc165.cjs +1 -1
- package/dist/cjs/erc165.cjs.map +1 -1
- package/dist/cjs/fhevm-relayer.cjs +1 -1
- package/dist/cjs/fhevm-relayer.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/telemetry.cjs +1 -1
- package/dist/cjs/telemetry.cjs.map +1 -1
- package/dist/cjs/token.cjs +1 -1
- package/dist/cjs/token.cjs.map +1 -1
- package/dist/cjs/vaults/index.cjs +1 -1
- package/dist/cjs/web/index.cjs +1 -1
- package/dist/cjs/wrapped-token.cjs +1 -1
- package/dist/esm/base-signer-b1ff2VPI.js +2 -0
- package/dist/esm/base-signer-b1ff2VPI.js.map +1 -0
- package/dist/esm/cleartext/index.js +1 -1
- package/dist/esm/{cleartext-BLXvNZte.js → cleartext-CiE1gO7Y.js} +2 -2
- package/dist/esm/{cleartext-BLXvNZte.js.map → cleartext-CiE1gO7Y.js.map} +1 -1
- package/dist/esm/erc165-BAd2z3ay.js +2 -0
- package/dist/esm/erc165-BAd2z3ay.js.map +1 -0
- package/dist/esm/ethers/index.js +1 -1
- package/dist/esm/fhevm-relayer-DXLb4mIw.js +8 -0
- package/dist/esm/{fhevm-relayer-DhaBR8Kb.js.map → fhevm-relayer-DXLb4mIw.js.map} +1 -1
- package/dist/esm/{index-DHMs4ZRb.d.ts → index-BKMce5ya.d.ts} +2 -2
- package/dist/esm/{decryption-q0ODuDDS.d.ts → index-CpQK8U4F.d.ts} +2 -6
- package/dist/esm/index.d.ts +3 -4
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node/index.js +1 -1
- package/dist/esm/query/index.d.ts +2 -3
- package/dist/esm/query/index.js +1 -1
- package/dist/esm/telemetry-Dll0Swdj.js +2 -0
- package/dist/esm/{telemetry-XTn27hkl.js.map → telemetry-Dll0Swdj.js.map} +1 -1
- package/dist/esm/token-CTvEGQmH.js +2 -0
- package/dist/esm/token-CTvEGQmH.js.map +1 -0
- package/dist/esm/vaults/index.d.ts +1 -2
- package/dist/esm/vaults/index.js +1 -1
- package/dist/esm/viem/index.js +1 -1
- package/dist/esm/web/index.d.ts +16 -1
- package/dist/esm/web/index.js +1 -1
- package/dist/esm/wrapped-token-IDUEFpZx.js +2 -0
- package/dist/esm/{wrapped-token-3usJd0oi.js.map → wrapped-token-IDUEFpZx.js.map} +1 -1
- package/package.json +1 -15
- package/dist/cjs/fatal-batch.cjs +0 -2
- package/dist/cjs/fatal-batch.cjs.map +0 -1
- package/dist/cjs/internal/index.cjs +0 -2
- package/dist/cjs/internal/index.cjs.map +0 -1
- package/dist/cjs/signing.cjs +0 -2
- package/dist/cjs/signing.cjs.map +0 -1
- package/dist/esm/base-signer-CNHZZnr2.js +0 -2
- package/dist/esm/base-signer-CNHZZnr2.js.map +0 -1
- package/dist/esm/encrypt-worker-client-CKTlhAGI.d.ts +0 -19
- package/dist/esm/erc165-B8gx2luK.js +0 -2
- package/dist/esm/erc165-B8gx2luK.js.map +0 -1
- package/dist/esm/fatal-batch-BiiS7KdS.js +0 -2
- package/dist/esm/fatal-batch-BiiS7KdS.js.map +0 -1
- package/dist/esm/fhevm-relayer-DhaBR8Kb.js +0 -8
- package/dist/esm/index-B09m_e9L.d.ts +0 -1
- package/dist/esm/internal/index.d.ts +0 -26
- package/dist/esm/internal/index.js +0 -2
- package/dist/esm/internal/index.js.map +0 -1
- package/dist/esm/signing-C6nbPCyd.js +0 -2
- package/dist/esm/signing-C6nbPCyd.js.map +0 -1
- package/dist/esm/telemetry-XTn27hkl.js +0 -2
- package/dist/esm/token-g6sinwTx.js +0 -2
- package/dist/esm/token-g6sinwTx.js.map +0 -1
- package/dist/esm/wrapped-token-3usJd0oi.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./relayer-C3jVhqSK.js";import{t}from"./fhevm-relayer-
|
|
2
|
-
//# sourceMappingURL=cleartext-
|
|
1
|
+
import{t as e}from"./relayer-C3jVhqSK.js";import{t}from"./fhevm-relayer-DXLb4mIw.js";function n(n){return{type:`cleartext`,createRelayer:(r,i)=>{if(!r.executorAddress)throw new e(`Cleartext relayer requires an executorAddress. Either use a chain preset that includes it (e.g. hardhat, hoodi) or set it on the chain definition.`);return new t({chain:r,options:n,cleartext:!0,logger:i})}}}export{n as t};
|
|
2
|
+
//# sourceMappingURL=cleartext-CiE1gO7Y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleartext-
|
|
1
|
+
{"version":3,"file":"cleartext-CiE1gO7Y.js","names":[],"sources":["../../src/config/cleartext.ts"],"sourcesContent":["import { ConfigurationError } from \"../errors\";\nimport { FhevmRelayer } from \"../relayer/fhevm-relayer\";\nimport type { RelayerOptions } from \"../relayer/types\";\nimport type { CleartextRelayerConfig } from \"./types\";\n\n/**\n * Cleartext relayer — drives the FHE backend in cleartext mode (no FHE infrastructure).\n *\n * When `executorAddress` is set on the chain definition (e.g. `hardhat`, `hoodi`),\n * it is picked up automatically.\n *\n * @example\n * ```ts\n * // executorAddress comes from the chain preset:\n * relayers: { [hardhat.id]: cleartext({ batchRpcCalls: true }) }\n * ```\n */\nexport function cleartext(options?: RelayerOptions): CleartextRelayerConfig {\n return {\n type: \"cleartext\",\n createRelayer: (chain, logger) => {\n if (!chain.executorAddress) {\n throw new ConfigurationError(\n `Cleartext relayer requires an executorAddress. ` +\n `Either use a chain preset that includes it (e.g. hardhat, hoodi) ` +\n `or set it on the chain definition.`,\n );\n }\n return new FhevmRelayer({ chain, options, cleartext: true, logger });\n },\n };\n}\n"],"mappings":"qFAiBA,SAAgB,EAAU,EAAkD,CAC1E,MAAO,CACL,KAAM,YACN,eAAgB,EAAO,IAAW,CAChC,GAAI,CAAC,EAAM,gBACT,MAAM,IAAI,EACR,oJAGF,EAEF,OAAO,IAAI,EAAa,CAAE,QAAO,UAAS,UAAW,GAAM,QAAO,CAAC,CACrE,CACF,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,l as t,p as n,r,u as i}from"./relayer-C3jVhqSK.js";import{erc20Abi as a,isHex as o}from"viem";var s=class extends r{constructor(t,n){super(e.TransportKeyPairExpired,t,n),this.name=`TransportKeyPairExpiredError`}},c=class extends r{constructor(t,n){super(e.InvalidTransportKeyPair,t,n),this.name=`InvalidTransportKeyPairError`}},l=class extends r{constructor(t,n){super(e.RevokedKmsContext,t,n),this.name=`RevokedKmsContextError`}},u=class extends r{constructor(t,n){super(e.NoCiphertext,t,n),this.name=`NoCiphertextError`}},d=class extends r{constructor(t,n){super(e.KeyWrappingFailed,t,n),this.name=`KeyWrappingError`}},f=class extends r{constructor(t,n){super(e.TransportKeyPairChanged,t,n),this.name=`TransportKeyPairChangedError`}},p=class extends r{preparedChainId;activeChainId;constructor({preparedChainId:t,activeChainId:n},r){super(e.PreparedPermitChainMismatch,`registerPermit: prepared.chainId (${t}) does not match the active chain (${n}). Register the permit while the SDK is configured for the chain it was prepared for.`,r),this.name=`PreparedPermitChainMismatchError`,this.preparedChainId=t,this.activeChainId=n}},ee=class extends r{constructor(t,n){super(e.PreparedPermitExpired,t,n),this.name=`PreparedPermitExpiredError`}},m=class extends r{operation;rpcCode;walletErrorName;constructor(t,n){let{operation:r,rpcCode:i,walletErrorName:a,...o}=n??{};super(e.SigningRejected,t,o),this.name=`SigningRejectedError`,this.operation=r,this.rpcCode=i,this.walletErrorName=a}},h=class extends r{operation;rpcCode;walletErrorName;constructor(t,n){let{operation:r,rpcCode:i,walletErrorName:a,...o}=n??{};super(e.SigningFailed,t,o),this.name=`SigningFailedError`,this.operation=r,this.rpcCode=i,this.walletErrorName=a}};function g(e,a){if(e instanceof r)return e;let{operation:o}=a,s=typeof e==`object`&&!!e&&`code`in e&&e.code===4001,l=e instanceof Error?e.message:String(e),u=l.toLowerCase(),d=u.includes(`user rejected`)||u.includes(`user denied`),f=`${o}: ${l}`;return s||d?new m(f,{cause:e,operation:o,rpcCode:t(e),walletErrorName:i(e)}):n(l)?new c(f,{cause:e}):new h(f,{cause:e,operation:o,rpcCode:t(e),walletErrorName:i(e)})}var _=class extends r{constructor(t,n){super(e.TransactionReverted,t,n),this.name=`TransactionRevertedError`}},v=class extends r{operation;constructor(e,t,n,r){super(e,n,r),this.name=`SignerRequiredError`,this.operation=t}},y=class extends v{constructor(t,n){super(e.SignerNotConfigured,t,`Cannot ${t} without a signer. Configure one via createConfig({ signer: ... }) or <ZamaProvider config={createConfig({ signer: ... })}>.`,n),this.name=`SignerNotConfiguredError`}},te=class extends v{constructor(t,n){super(e.WalletNotConnected,t,`Cannot ${t} without a connected wallet account.`,n),this.name=`WalletNotConnectedError`}},ne=class extends v{constructor(t,n){super(e.WalletAccountNotReady,t,`Cannot ${t} before the wallet account is ready.`,n),this.name=`WalletAccountNotReadyError`}};function re(e,t){if(e==null)throw new y(t);return e}const b={EncryptStart:`encrypt:start`,EncryptEnd:`encrypt:end`,EncryptError:`encrypt:error`,DecryptStart:`decrypt:start`,DecryptEnd:`decrypt:end`,DecryptError:`decrypt:error`,PermitError:`permit:error`,TransactionError:`transaction:error`,ShieldSubmitted:`shield:submitted`,TransferSubmitted:`transfer:submitted`,TransferFromSubmitted:`transferFrom:submitted`,SetOperatorSubmitted:`setOperator:submitted`,ApproveUnderlyingSubmitted:`approveUnderlying:submitted`,WrapSubmitted:`wrap:submitted`,UnwrapSubmitted:`unwrap:submitted`,FinalizeUnwrapSubmitted:`finalizeUnwrap:submitted`,VaultSubmitted:`vault:submitted`,DelegationSubmitted:`delegation:submitted`,RevokeDelegationSubmitted:`revokeDelegation:submitted`,UnshieldPhase1Submitted:`unshield:phase1_submitted`,UnshieldPhase2Started:`unshield:phase2_started`,UnshieldPhase2Submitted:`unshield:phase2_submitted`},x={approveUnderlying:{submittedEvent:e=>({type:b.ApproveUnderlyingSubmitted,txHash:e,step:`approve`})},"approveUnderlying:reset":{submittedEvent:e=>({type:b.ApproveUnderlyingSubmitted,txHash:e,step:`reset`})},delegateDecryption:{submittedEvent:e=>({type:b.DelegationSubmitted,txHash:e})},finalizeUnwrap:{submittedEvent:e=>({type:b.FinalizeUnwrapSubmitted,txHash:e})},revokeDelegation:{submittedEvent:e=>({type:b.RevokeDelegationSubmitted,txHash:e})},setOperator:{submittedEvent:e=>({type:b.SetOperatorSubmitted,txHash:e})},"shield:transferAndCall":{submittedEvent:e=>({type:b.ShieldSubmitted,txHash:e,shieldPath:`transferAndCall`})},"shield:approveAndWrap":{submittedEvent:e=>({type:b.ShieldSubmitted,txHash:e,shieldPath:`approveAndWrap`})},wrap:{submittedEvent:e=>({type:b.WrapSubmitted,txHash:e})},transfer:{submittedEvent:e=>({type:b.TransferSubmitted,txHash:e})},transferAndCall:{submittedEvent:e=>({type:b.TransferSubmitted,txHash:e})},transferFrom:{submittedEvent:e=>({type:b.TransferFromSubmitted,txHash:e})},transferFromAndCall:{submittedEvent:e=>({type:b.TransferFromSubmitted,txHash:e})},unwrap:{submittedEvent:e=>({type:b.UnwrapSubmitted,txHash:e})},unwrapAll:{submittedEvent:e=>({type:b.UnwrapSubmitted,txHash:e})},"vault:join":{submittedEvent:e=>({type:b.VaultSubmitted,txHash:e,vaultOperation:`join`})},"vault:quit":{submittedEvent:e=>({type:b.VaultSubmitted,txHash:e,vaultOperation:`quit`})},"vault:claim":{submittedEvent:e=>({type:b.VaultSubmitted,txHash:e,vaultOperation:`claim`})},"vault:recover":{submittedEvent:e=>({type:b.VaultSubmitted,txHash:e,vaultOperation:`recover`})},"vault:dispatchBatch":{submittedEvent:e=>({type:b.VaultSubmitted,txHash:e,vaultOperation:`dispatchBatch`})}};function S(e,t){if(e==null)throw TypeError(`${t} must not be null or undefined`)}function C(e,t){if(typeof e!=`bigint`)throw TypeError(`${t} must be a bigint, got ${typeof e}`)}function w(e,t){if(!o(e))throw TypeError(`${t} must be a 0x-prefixed hex string, got ${typeof e}`)}async function T(e,t,n){try{await t()}catch(t){n?.warn(`${e} failed`,{error:t})}}const E=[{type:`function`,name:`UPGRADE_INTERFACE_VERSION`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`acceptOwnership`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`blockUser`,inputs:[{name:`user`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`confidentialBalanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`confidentialProtocolId`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`confidentialTotalSupply`,inputs:[],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`confidentialTransfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`bytes32`,internalType:`euint64`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`bytes32`,internalType:`euint64`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`transferred`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransferAndCall`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`transferred`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`transferred`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`bytes32`,internalType:`euint64`}],outputs:[{name:`transferred`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`transferred`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`confidentialTransferFromAndCall`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`bytes32`,internalType:`euint64`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`transferred`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`contractURI`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`decimals`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`discloseEncryptedAmount`,inputs:[{name:`encryptedAmount`,type:`bytes32`,internalType:`euint64`},{name:`cleartextAmount`,type:`uint64`,internalType:`uint64`},{name:`decryptionProof`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`finalizeUnwrap`,inputs:[{name:`unwrapRequestId`,type:`bytes32`,internalType:`bytes32`},{name:`unwrapAmountCleartext`,type:`uint64`,internalType:`uint64`},{name:`decryptionProof`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`getUnderlyingDenyListSelector`,inputs:[],outputs:[{name:`isSet`,type:`bool`,internalType:`bool`},{name:`selector`,type:`bytes4`,internalType:`bytes4`}],stateMutability:`view`},{type:`function`,name:`inferredTotalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`initialize`,inputs:[{name:`name_`,type:`string`,internalType:`string`},{name:`symbol_`,type:`string`,internalType:`string`},{name:`contractURI_`,type:`string`,internalType:`string`},{name:`underlying_`,type:`address`,internalType:`contract IERC20`},{name:`owner_`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`isBlocked`,inputs:[{name:`user`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`isOperator`,inputs:[{name:`holder`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`maxTotalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`name`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`onTransferReceived`,inputs:[{name:`operator`,type:`address`,internalType:`address`},{name:`from`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bytes4`,internalType:`bytes4`}],stateMutability:`nonpayable`},{type:`function`,name:`owner`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`pendingOwner`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`proxiableUUID`,inputs:[],outputs:[{name:``,type:`bytes32`,internalType:`bytes32`}],stateMutability:`view`},{type:`function`,name:`rate`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`reinitializeV2`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`reinitializeV3`,inputs:[{name:`blockedUsers`,type:`address[]`,internalType:`address[]`},{name:`underlyingDenyListSelector`,type:`bytes4`,internalType:`bytes4`},{name:`hasUnderlyingDenyListSelector_`,type:`bool`,internalType:`bool`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`renounceOwnership`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`requestDiscloseEncryptedAmount`,inputs:[{name:`encryptedAmount`,type:`bytes32`,internalType:`euint64`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`setOperator`,inputs:[{name:`operator`,type:`address`,internalType:`address`},{name:`until`,type:`uint48`,internalType:`uint48`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`supportsInterface`,inputs:[{name:`interfaceId`,type:`bytes4`,internalType:`bytes4`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`symbol`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`transferOwnership`,inputs:[{name:`newOwner`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`unblockUser`,inputs:[{name:`user`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`underlying`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`unwrap`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`}],outputs:[{name:``,type:`bytes32`,internalType:`bytes32`}],stateMutability:`nonpayable`},{type:`function`,name:`unwrap`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`bytes32`,internalType:`euint64`}],outputs:[{name:``,type:`bytes32`,internalType:`bytes32`}],stateMutability:`nonpayable`},{type:`function`,name:`unwrapAmount`,inputs:[{name:`unwrapRequestId`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`unwrapRequester`,inputs:[{name:`unwrapRequestId`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`upgradeToAndCall`,inputs:[{name:`newImplementation`,type:`address`,internalType:`address`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`payable`},{type:`function`,name:`wrap`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`event`,name:`AmountDiscloseRequested`,inputs:[{name:`encryptedAmount`,type:`bytes32`,indexed:!0,internalType:`euint64`},{name:`requester`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`AmountDisclosed`,inputs:[{name:`encryptedAmount`,type:`bytes32`,indexed:!0,internalType:`euint64`},{name:`amount`,type:`uint64`,indexed:!1,internalType:`uint64`}],anonymous:!1},{type:`event`,name:`ConfidentialTransfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!0,internalType:`euint64`}],anonymous:!1},{type:`event`,name:`Initialized`,inputs:[{name:`version`,type:`uint64`,indexed:!1,internalType:`uint64`}],anonymous:!1},{type:`event`,name:`OperatorSet`,inputs:[{name:`holder`,type:`address`,indexed:!0,internalType:`address`},{name:`operator`,type:`address`,indexed:!0,internalType:`address`},{name:`until`,type:`uint48`,indexed:!1,internalType:`uint48`}],anonymous:!1},{type:`event`,name:`OwnershipTransferStarted`,inputs:[{name:`previousOwner`,type:`address`,indexed:!0,internalType:`address`},{name:`newOwner`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`OwnershipTransferred`,inputs:[{name:`previousOwner`,type:`address`,indexed:!0,internalType:`address`},{name:`newOwner`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`PublicDecryptionVerified`,inputs:[{name:`handlesList`,type:`bytes32[]`,indexed:!1,internalType:`bytes32[]`},{name:`abiEncodedCleartexts`,type:`bytes`,indexed:!1,internalType:`bytes`}],anonymous:!1},{type:`event`,name:`UnwrapFinalized`,inputs:[{name:`receiver`,type:`address`,indexed:!0,internalType:`address`},{name:`unwrapRequestId`,type:`bytes32`,indexed:!0,internalType:`bytes32`},{name:`encryptedAmount`,type:`bytes32`,indexed:!1,internalType:`euint64`},{name:`cleartextAmount`,type:`uint64`,indexed:!1,internalType:`uint64`}],anonymous:!1},{type:`event`,name:`UnwrapRequested`,inputs:[{name:`receiver`,type:`address`,indexed:!0,internalType:`address`},{name:`unwrapRequestId`,type:`bytes32`,indexed:!0,internalType:`bytes32`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`event`,name:`Upgraded`,inputs:[{name:`implementation`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`UserBlocked`,inputs:[{name:`user`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`UserUnblocked`,inputs:[{name:`user`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`Wrap`,inputs:[{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`roundedAmount`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`encryptedWrappedAmount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`error`,name:`AddressEmptyCode`,inputs:[{name:`target`,type:`address`,internalType:`address`}]},{type:`error`,name:`BlockedUser`,inputs:[{name:`user`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC1967InvalidImplementation`,inputs:[{name:`implementation`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC1967NonPayable`,inputs:[]},{type:`error`,name:`ERC7984InvalidReceiver`,inputs:[{name:`receiver`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC7984InvalidReceiver`,inputs:[{name:`receiver`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC7984InvalidSender`,inputs:[{name:`sender`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC7984TotalSupplyOverflow`,inputs:[]},{type:`error`,name:`ERC7984UnauthorizedCaller`,inputs:[{name:`caller`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC7984UnauthorizedSpender`,inputs:[{name:`holder`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC7984UnauthorizedUseOfEncryptedAmount`,inputs:[{name:`amount`,type:`bytes32`,internalType:`euint64`},{name:`user`,type:`address`,internalType:`address`}]},{type:`error`,name:`ERC7984ZeroBalance`,inputs:[{name:`holder`,type:`address`,internalType:`address`}]},{type:`error`,name:`FailedCall`,inputs:[]},{type:`error`,name:`InvalidInitialization`,inputs:[]},{type:`error`,name:`InvalidKMSSignatures`,inputs:[]},{type:`error`,name:`InvalidUnderlyingDenyListResponse`,inputs:[]},{type:`error`,name:`InvalidUnwrapRequest`,inputs:[{name:`unwrapRequestId`,type:`bytes32`,internalType:`bytes32`}]},{type:`error`,name:`NotInitializing`,inputs:[]},{type:`error`,name:`OwnableInvalidOwner`,inputs:[{name:`owner`,type:`address`,internalType:`address`}]},{type:`error`,name:`OwnableUnauthorizedAccount`,inputs:[{name:`account`,type:`address`,internalType:`address`}]},{type:`error`,name:`SafeCastOverflowedUintDowncast`,inputs:[{name:`bits`,type:`uint8`,internalType:`uint8`},{name:`value`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`SafeERC20FailedOperation`,inputs:[{name:`token`,type:`address`,internalType:`address`}]},{type:`error`,name:`SenderNotAllowedToUseHandle`,inputs:[{name:`handle`,type:`bytes32`,internalType:`bytes32`},{name:`sender`,type:`address`,internalType:`address`}]},{type:`error`,name:`UUPSUnauthorizedCallContext`,inputs:[]},{type:`error`,name:`UUPSUnsupportedProxiableUUID`,inputs:[{name:`slot`,type:`bytes32`,internalType:`bytes32`}]},{type:`error`,name:`UnderlyingDenyListCallFailed`,inputs:[]},{type:`error`,name:`UnderlyingDenyListedAddress`,inputs:[{name:`user`,type:`address`,internalType:`address`}]},{type:`error`,name:`UserAlreadyBlocked`,inputs:[{name:`user`,type:`address`,internalType:`address`}]},{type:`error`,name:`UserAlreadyUnblocked`,inputs:[{name:`user`,type:`address`,internalType:`address`}]},{type:`error`,name:`ZamaProtocolUnsupported`,inputs:[]}];function D(e,t){return{address:e,abi:E,functionName:`confidentialBalanceOf`,args:[t]}}function O(e,t,n,r){return{address:e,abi:E,functionName:`confidentialTransfer`,args:[t,n,r]}}function k(e,t,n,r,i){return{address:e,abi:E,functionName:`confidentialTransferFrom`,args:[t,n,r,i]}}function A(e,t,n,r,i){return{address:e,abi:E,functionName:`confidentialTransferAndCall`,args:[t,n,r,i]}}function j(e,t,n,r,i,a){return{address:e,abi:E,functionName:`confidentialTransferFromAndCall`,args:[t,n,r,i,a]}}function M(e,t,n){return{address:e,abi:E,functionName:`isOperator`,args:[t,n]}}function N(e,t,n){return{address:e,abi:E,functionName:`setOperator`,args:[t,n??Math.floor(Date.now()/1e3)+3600]}}function P(e,t,n,r,i){return{address:e,abi:E,functionName:`unwrap`,args:[t,n,r,i]}}function F(e,t,n,r){return{address:e,abi:E,functionName:`unwrap`,args:[t,n,r]}}function ie(e){return{address:e,abi:E,functionName:`confidentialTotalSupply`,args:[]}}function I(e){return{address:e,abi:E,functionName:`rate`,args:[]}}function L(e,t,n,r){return{address:e,abi:E,functionName:`finalizeUnwrap`,args:[t,n,r]}}function R(e,t){return{address:e,abi:E,functionName:`unwrapRequester`,args:[t]}}function z(e){return{address:e,abi:E,functionName:`underlying`,args:[]}}function B(e){return{address:e,abi:E,functionName:`inferredTotalSupply`,args:[]}}function V(e,t,n){return{address:e,abi:E,functionName:`wrap`,args:[t,n]}}function H(e){return{address:e,abi:a,functionName:`name`,args:[]}}function U(e){return{address:e,abi:a,functionName:`symbol`,args:[]}}function W(e){return{address:e,abi:a,functionName:`decimals`,args:[]}}function G(e){return{address:e,abi:a,functionName:`totalSupply`,args:[]}}function K(e,t){return{address:e,abi:a,functionName:`balanceOf`,args:[t]}}function q(e,t,n){return{address:e,abi:a,functionName:`allowance`,args:[t,n]}}function J(e,t,n){return{address:e,abi:a,functionName:`approve`,args:[t,n]}}const Y=[{type:`function`,name:`supportsInterface`,inputs:[{name:`interfaceId`,type:`bytes4`,internalType:`bytes4`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`}],X=`0x4958f2a4`,Z=`0x1f1c62b2`,Q=`0xb0202a11`;function $(e,t){return{address:e,abi:Y,functionName:`supportsInterface`,args:[t]}}function ae(e){return $(e,X)}function oe(e){return $(e,Z)}function se(e){return $(e,Q)}export{s as $,V as A,te as B,M as C,P as D,z as E,b as F,g as G,_ as H,x as I,u as J,c as K,y as L,C as M,w as N,F as O,S as P,f as Q,v as R,B as S,N as T,h as U,re as V,m as W,ee as X,p as Y,l as Z,A as _,oe as a,k as b,q as c,W as d,G as f,ie as g,D as h,ae as i,T as j,R as k,J as l,U as m,X as n,se as o,H as p,d as q,Z as r,$ as s,Q as t,K as u,O as v,I as w,L as x,j as y,ne as z};
|
|
2
|
+
//# sourceMappingURL=erc165-BAd2z3ay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erc165-BAd2z3ay.js","names":[],"sources":["../../src/errors/credential.ts","../../src/errors/signing.ts","../../src/errors/transaction.ts","../../src/errors/signer.ts","../../src/events/sdk-events.ts","../../src/utils/assertions.ts","../../src/utils/swallow.ts","../../src/abi/confidential-wrapper.abi.ts","../../src/contracts/confidential-wrapper.ts","../../src/contracts/erc20.ts","../../src/abi/erc165.abi.ts","../../src/contracts/erc165.ts"],"sourcesContent":["import { ZamaError, ZamaErrorCode } from \"./base\";\n\n/** Transport key pair has expired and needs regeneration. */\nexport class TransportKeyPairExpiredError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.TransportKeyPairExpired, message, options);\n this.name = \"TransportKeyPairExpiredError\";\n }\n}\n\n/** Relayer rejected the transport key pair (stale, expired, or malformed). */\nexport class InvalidTransportKeyPairError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.InvalidTransportKeyPair, message, options);\n this.name = \"InvalidTransportKeyPairError\";\n }\n}\n\n/**\n * The permit's KMS context has been revoked on-chain, so the permit (and every\n * other permit signed under that context) is permanently unusable. The SDK\n * already tried to self-heal before surfacing this. Check `cause` to tell why\n * it failed: a `SigningFailedError` means the configured signer could not\n * produce a new permit, waiting will not help, establish a new permit with a\n * working signer. Any other cause means the retry hit the same revoked\n * context, typically because the upstream validity check caches a stale\n * \"valid\" verdict for up to 15 minutes; wait out that window and retry.\n */\nexport class RevokedKmsContextError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.RevokedKmsContext, message, options);\n this.name = \"RevokedKmsContextError\";\n }\n}\n\n/** No FHE ciphertext exists for this account (never shielded). */\nexport class NoCiphertextError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.NoCiphertext, message, options);\n this.name = \"NoCiphertextError\";\n }\n}\n\n/**\n * Wrapping or unwrapping the transport private key with `transportKeyPairDerivationSecret` failed:\n * a scoped entry that fails to unwrap may belong to a peer using a different secret, so it fails\n * loudly instead of silently regenerating and clobbering that peer's entry, or the underlying\n * WebCrypto operation itself failed (e.g. `crypto.subtle` unavailable in this environment).\n */\nexport class KeyWrappingError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.KeyWrappingFailed, message, options);\n this.name = \"KeyWrappingError\";\n }\n}\n\n/**\n * The transport key pair changed between `preparePermit` and `registerPermit`\n * (expired, evicted, or rotated in between). The prepared EIP-712 payload was\n * signed against the old key pair's public key — registering it under a\n * different one would persist a permit bound to the wrong key. Call\n * `preparePermit` again to rebind the signature request to the current key pair.\n */\nexport class TransportKeyPairChangedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.TransportKeyPairChanged, message, options);\n this.name = \"TransportKeyPairChangedError\";\n }\n}\n\n/**\n * A prepared permit's `chainId` doesn't match the chain `registerPermit` is\n * running against. The EIP-712 payload's domain is bound to the chain it was\n * prepared for; registering it under a different chain would persist a permit\n * whose signed payload disagrees with its storage scope.\n */\nexport class PreparedPermitChainMismatchError extends ZamaError {\n /** Chain ID the permit was prepared for. */\n readonly preparedChainId: number;\n /** Chain ID `registerPermit` is currently running against. */\n readonly activeChainId: number;\n\n constructor(\n { preparedChainId, activeChainId }: { preparedChainId: number; activeChainId: number },\n options?: ErrorOptions,\n ) {\n super(\n ZamaErrorCode.PreparedPermitChainMismatch,\n `registerPermit: prepared.chainId (${preparedChainId}) does not match the active chain ` +\n `(${activeChainId}). Register the permit while the SDK is configured for the chain it was prepared for.`,\n options,\n );\n this.name = \"PreparedPermitChainMismatchError\";\n this.preparedChainId = preparedChainId;\n this.activeChainId = activeChainId;\n }\n}\n\n/** A prepared permit's validity window elapsed before its signature was registered. */\nexport class PreparedPermitExpiredError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.PreparedPermitExpired, message, options);\n this.name = \"PreparedPermitExpiredError\";\n }\n}\n","import {\n extractRpcErrorCode,\n extractWalletErrorName,\n isInvalidTransportKeyPairMessage,\n} from \"../utils/error\";\nimport { ZamaError, ZamaErrorCode } from \"./base\";\nimport { InvalidTransportKeyPairError } from \"./credential\";\n\n/**\n * Diagnostic metadata attached to a signing-failure error, on top of the\n * inherited `cause`. All optional and best-effort: `operation` comes from the\n * caller, `rpcCode`/`walletErrorName` are extracted from the wallet's raw\n * error by {@link wrapSigningError}.\n */\nexport interface SigningErrorMetadata {\n /** Name of the SDK operation that was signing when the wallet/provider failed (e.g. \"grantPermit\"). */\n operation?: string;\n /** JSON-RPC / EIP-1193 numeric error code found in the failure's cause chain, if any. */\n rpcCode?: number;\n /** `name` of the error class the wallet/provider library threw (e.g. viem's `InvalidParamsRpcError`). */\n walletErrorName?: string;\n}\n\n/** User rejected the wallet signature prompt. */\nexport class SigningRejectedError extends ZamaError {\n /** Name of the SDK operation that was signing when the user rejected. */\n readonly operation: string | undefined;\n /** JSON-RPC / EIP-1193 numeric error code found in the failure's cause chain, if any. */\n readonly rpcCode: number | undefined;\n /** `name` of the error class the wallet/provider library threw. */\n readonly walletErrorName: string | undefined;\n\n constructor(message: string, options?: ErrorOptions & SigningErrorMetadata) {\n const { operation, rpcCode, walletErrorName, ...errorOptions } = options ?? {};\n super(ZamaErrorCode.SigningRejected, message, errorOptions);\n this.name = \"SigningRejectedError\";\n this.operation = operation;\n this.rpcCode = rpcCode;\n this.walletErrorName = walletErrorName;\n }\n}\n\n/** Wallet signature failed for a reason other than rejection. */\nexport class SigningFailedError extends ZamaError {\n /** Name of the SDK operation that was signing when the wallet/provider failed. */\n readonly operation: string | undefined;\n /** JSON-RPC / EIP-1193 numeric error code found in the failure's cause chain, if any. */\n readonly rpcCode: number | undefined;\n /** `name` of the error class the wallet/provider library threw. */\n readonly walletErrorName: string | undefined;\n\n constructor(message: string, options?: ErrorOptions & SigningErrorMetadata) {\n const { operation, rpcCode, walletErrorName, ...errorOptions } = options ?? {};\n super(ZamaErrorCode.SigningFailed, message, errorOptions);\n this.name = \"SigningFailedError\";\n this.operation = operation;\n this.rpcCode = rpcCode;\n this.walletErrorName = walletErrorName;\n }\n}\n\n/**\n * Classify a caught signing error into {@link SigningRejectedError},\n * {@link SigningFailedError}, or {@link InvalidTransportKeyPairError} and\n * return it rather than throw (mirroring {@link wrapDecryptError}/\n * {@link wrapEncryptError}), so a caller can emit an observability event\n * carrying the classified error before throwing it themselves. Enriches the\n * result with `rpcCode`/`walletErrorName` extracted from `error`'s cause\n * chain, and passes an already-typed `ZamaError` through unchanged.\n */\nexport function wrapSigningError(error: unknown, context: { operation: string }): ZamaError {\n if (error instanceof ZamaError) {\n return error;\n }\n const { operation } = context;\n const hasCode4001 =\n typeof error === \"object\" && error !== null && \"code\" in error && error.code === 4001;\n const originalMsg = error instanceof Error ? error.message : String(error);\n const lowerMsg = originalMsg.toLowerCase();\n const hasRejectionMessage =\n lowerMsg.includes(\"user rejected\") || lowerMsg.includes(\"user denied\");\n const fullMessage = `${operation}: ${originalMsg}`;\n if (hasCode4001 || hasRejectionMessage) {\n return new SigningRejectedError(fullMessage, {\n cause: error,\n operation,\n rpcCode: extractRpcErrorCode(error),\n walletErrorName: extractWalletErrorName(error),\n });\n }\n // A stale transport key pair the relayer can't re-derive (post-rotation) is\n // not a signing failure per se — surface it as the typed, self-heal signal so\n // the caller can evict the vault entry and regenerate.\n if (isInvalidTransportKeyPairMessage(originalMsg)) {\n return new InvalidTransportKeyPairError(fullMessage, { cause: error });\n }\n return new SigningFailedError(fullMessage, {\n cause: error,\n operation,\n rpcCode: extractRpcErrorCode(error),\n walletErrorName: extractWalletErrorName(error),\n });\n}\n","import { ZamaError, ZamaErrorCode } from \"./base\";\n\n/** On-chain transaction reverted. */\nexport class TransactionRevertedError extends ZamaError {\n constructor(message: string, options?: ErrorOptions) {\n super(ZamaErrorCode.TransactionReverted, message, options);\n this.name = \"TransactionRevertedError\";\n }\n}\n","import { ZamaError, ZamaErrorCode } from \"./base\";\n\n/**\n * Base class for signer/account readiness failures.\n */\nexport class SignerRequiredError extends ZamaError {\n /** Name of the operation that required a signer. */\n readonly operation: string;\n\n constructor(code: ZamaErrorCode, operation: string, message: string, options?: ErrorOptions) {\n super(code, message, options);\n this.name = \"SignerRequiredError\";\n this.operation = operation;\n }\n}\n\n/**\n * Thrown when an operation requires a signer but none is configured.\n *\n * The SDK can be constructed without a signer. Operations that need wallet\n * authority throw this before probing wallet state.\n *\n * @example\n * ```ts\n * try {\n * await token.confidentialTransfer(\"0xTo\", 100n);\n * } catch (e) {\n * if (e instanceof SignerNotConfiguredError) {\n * // Fix SDK/provider configuration.\n * }\n * }\n * ```\n */\nexport class SignerNotConfiguredError extends SignerRequiredError {\n constructor(operation: string, options?: ErrorOptions) {\n super(\n ZamaErrorCode.SignerNotConfigured,\n operation,\n `Cannot ${operation} without a signer. Configure one via createConfig({ signer: ... }) or <ZamaProvider config={createConfig({ signer: ... })}>.`,\n options,\n );\n this.name = \"SignerNotConfiguredError\";\n }\n}\n\n/** Thrown when a signer exists but no wallet account is currently connected. */\nexport class WalletNotConnectedError extends SignerRequiredError {\n constructor(operation: string, options?: ErrorOptions) {\n super(\n ZamaErrorCode.WalletNotConnected,\n operation,\n `Cannot ${operation} without a connected wallet account.`,\n options,\n );\n this.name = \"WalletNotConnectedError\";\n }\n}\n\n/** Thrown when an async adapter has not resolved its initial wallet account yet. */\nexport class WalletAccountNotReadyError extends SignerRequiredError {\n constructor(operation: string, options?: ErrorOptions) {\n super(\n ZamaErrorCode.WalletAccountNotReady,\n operation,\n `Cannot ${operation} before the wallet account is ready.`,\n options,\n );\n this.name = \"WalletAccountNotReadyError\";\n }\n}\n\n/**\n * Narrow a nullable signer-dependent value or throw {@link SignerNotConfiguredError}.\n */\nexport function requireConfigured<T>(value: T, operation: string): NonNullable<T> {\n if (value === null || value === undefined) {\n throw new SignerNotConfiguredError(operation);\n }\n return value as NonNullable<T>;\n}\n","import type { Address, Hex } from \"viem\";\nimport type { ClearValue, EncryptedValue } from \"../relayer/types\";\nimport type { ShieldPath } from \"../types/token\";\n\n/**\n * All SDK event keys, accessible as `ZamaSDKEvents.EncryptStart` etc.\n */\nexport const ZamaSDKEvents = {\n // FHE operations\n EncryptStart: \"encrypt:start\",\n EncryptEnd: \"encrypt:end\",\n EncryptError: \"encrypt:error\",\n DecryptStart: \"decrypt:start\",\n DecryptEnd: \"decrypt:end\",\n DecryptError: \"decrypt:error\",\n // Credential operations\n PermitError: \"permit:error\",\n // Write operations\n TransactionError: \"transaction:error\",\n ShieldSubmitted: \"shield:submitted\",\n TransferSubmitted: \"transfer:submitted\",\n TransferFromSubmitted: \"transferFrom:submitted\",\n SetOperatorSubmitted: \"setOperator:submitted\",\n ApproveUnderlyingSubmitted: \"approveUnderlying:submitted\",\n WrapSubmitted: \"wrap:submitted\",\n UnwrapSubmitted: \"unwrap:submitted\",\n FinalizeUnwrapSubmitted: \"finalizeUnwrap:submitted\",\n VaultSubmitted: \"vault:submitted\",\n // Delegation operations\n DelegationSubmitted: \"delegation:submitted\",\n RevokeDelegationSubmitted: \"revokeDelegation:submitted\",\n // Unshield orchestration\n UnshieldPhase1Submitted: \"unshield:phase1_submitted\",\n UnshieldPhase2Started: \"unshield:phase2_started\",\n UnshieldPhase2Submitted: \"unshield:phase2_submitted\",\n} as const;\n\n/** Union of all SDK event type strings. */\nexport type ZamaSDKEventType = (typeof ZamaSDKEvents)[keyof typeof ZamaSDKEvents];\n\n// -- Base fields present on every event --\n\n/** Fields present on every SDK event; each concrete event extends this. */\nexport interface BaseEvent {\n /**\n * Contract this event relates to, when the operation targets one: the\n * confidential token, or the vault batcher for {@link VaultSubmittedEvent}.\n */\n tokenAddress?: Address;\n /** Unix epoch time (milliseconds) at which the event was emitted. */\n timestamp: number;\n /** Shared identifier linking related events in multi-phase operations (e.g. unshield). */\n operationId?: string;\n}\n\n// -- Per-event typed payloads --\n\n/** Emitted when an FHE encryption starts. */\nexport interface EncryptStartEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.EncryptStart;\n}\n\n/** Emitted when an FHE encryption completes successfully. */\nexport interface EncryptEndEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.EncryptEnd;\n /** Time the encryption took, in milliseconds. */\n durationMs: number;\n}\n\n/** Emitted when an FHE encryption fails. */\nexport interface EncryptErrorEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.EncryptError;\n /** The error that caused the encryption to fail. */\n error: Error;\n /** Time elapsed before the encryption failed, in milliseconds. */\n durationMs: number;\n}\n\n/** Emitted when an FHE decryption starts. */\nexport interface DecryptStartEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.DecryptStart;\n /** Encrypted values being decrypted — correlate with matching DecryptEnd/DecryptError. */\n encryptedValues: EncryptedValue[];\n}\n\n/** Emitted when an FHE decryption completes successfully. */\nexport interface DecryptEndEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.DecryptEnd;\n /** Time the decryption took, in milliseconds. */\n durationMs: number;\n /** Encrypted values that were decrypted. */\n encryptedValues: EncryptedValue[];\n /** Decrypted values keyed by encrypted value — use this to correlate events to specific entries. */\n result: Record<EncryptedValue, ClearValue>;\n}\n\n/** Emitted when an FHE decryption fails. */\nexport interface DecryptErrorEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.DecryptError;\n /** The error that caused the decryption to fail. */\n error: Error;\n /** Time elapsed before the decryption failed, in milliseconds. */\n durationMs: number;\n /** Encrypted values that were being decrypted when the error occurred. */\n encryptedValues: EncryptedValue[];\n}\n\n/**\n * SDK credential/permit operations that emit a {@link PermitErrorEvent} on failure.\n * `grantPermit` and `grantDelegationPermit` are distinguished so an integrator\n * can tell a direct-decrypt permit failure from a delegation-permit failure\n * without parsing the error message.\n */\nexport type PermitOperation = \"grantPermit\" | \"grantDelegationPermit\" | \"registerPermit\";\n\n/**\n * Emitted when signing or registering a decryption permit fails — including\n * wallet/provider signing failures (`SigningFailedError`/`SigningRejectedError`)\n * that would otherwise only be visible by catching the thrown error at the call\n * site. Mirrors {@link TransactionErrorEvent} for the credential/permit path.\n */\nexport interface PermitErrorEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.PermitError;\n /** Which permit operation failed. */\n operation: PermitOperation;\n /** The error that caused the operation to fail. */\n error: Error;\n}\n\n/** Emitted when a write operation's transaction fails (before or after submission). */\nexport interface TransactionErrorEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.TransactionError;\n /** Which SDK operation failed. */\n operation: TransactionOperation;\n /** The error that caused the transaction to fail. */\n error: Error;\n}\n\n/** Emitted when a shield transaction has been submitted to the network. */\nexport interface ShieldSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.ShieldSubmitted;\n /** Hash of the submitted shield transaction. */\n txHash: Hex;\n /** Which execution path was used: single-tx `transferAndCall` or two-tx `approveAndWrap`. */\n shieldPath: ShieldPath;\n}\n\n/** Emitted when a confidential transfer transaction has been submitted to the network. */\nexport interface TransferSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.TransferSubmitted;\n /** Hash of the submitted transfer transaction. */\n txHash: Hex;\n}\n\n/** Emitted when a confidential `transferFrom` transaction has been submitted to the network. */\nexport interface TransferFromSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.TransferFromSubmitted;\n /** Hash of the submitted transferFrom transaction. */\n txHash: Hex;\n}\n\n/** Emitted when a set-operator transaction has been submitted to the network. */\nexport interface SetOperatorSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.SetOperatorSubmitted;\n /** Hash of the submitted setOperator transaction. */\n txHash: Hex;\n}\n\n/** Which vault batcher write a {@link VaultSubmittedEvent} describes. */\nexport type VaultOperation = \"join\" | \"quit\" | \"claim\" | \"recover\" | \"dispatchBatch\";\n\n/** Emitted when a vault batcher transaction has been submitted to the network. */\nexport interface VaultSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.VaultSubmitted;\n /** Hash of the submitted batcher transaction. */\n txHash: Hex;\n /** The batcher write this transaction performs. */\n vaultOperation: VaultOperation;\n}\n\n/** Emitted when an underlying-ERC-20 approval transaction has been submitted to the network. */\nexport interface ApproveUnderlyingSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.ApproveUnderlyingSubmitted;\n /** Hash of the submitted approval transaction. */\n txHash: Hex;\n /** Which approval transaction was submitted. */\n step: \"reset\" | \"approve\";\n}\n\n/**\n * Emitted by the standalone `wrap()` escape hatch (not by `shield()`, which\n * emits {@link ShieldSubmittedEvent}). Distinct so a caller-initiated `wrap`\n * isn't conflated with `shield()`'s internal `approveAndWrap` leg — mirroring\n * how `unwrap` emits its own event rather than reusing the unshield phases.\n */\nexport interface WrapSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.WrapSubmitted;\n /** Hash of the submitted wrap transaction. */\n txHash: Hex;\n}\n\n/** Emitted when an unwrap transaction has been submitted to the network. */\nexport interface UnwrapSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.UnwrapSubmitted;\n /** Hash of the submitted unwrap transaction. */\n txHash: Hex;\n}\n\n/** Emitted when a finalize-unwrap transaction has been submitted to the network. */\nexport interface FinalizeUnwrapSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.FinalizeUnwrapSubmitted;\n /** Hash of the submitted finalizeUnwrap transaction. */\n txHash: Hex;\n}\n\n/** Emitted when a decryption-delegation transaction has been submitted to the network. */\nexport interface DelegationSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.DelegationSubmitted;\n /** Hash of the submitted delegation transaction. */\n txHash: Hex;\n}\n\n/** Emitted when a revoke-delegation transaction has been submitted to the network. */\nexport interface RevokeDelegationSubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.RevokeDelegationSubmitted;\n /** Hash of the submitted revokeDelegation transaction. */\n txHash: Hex;\n}\n\n/** Emitted when the first phase of an unshield (the unwrap request) has been submitted. */\nexport interface UnshieldPhase1SubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.UnshieldPhase1Submitted;\n /** Hash of the submitted phase-1 transaction. */\n txHash: Hex;\n}\n\n/** Emitted when the second phase of an unshield (finalization) starts. */\nexport interface UnshieldPhase2StartedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.UnshieldPhase2Started;\n}\n\n/** Emitted when the second phase of an unshield (finalization) has been submitted. */\nexport interface UnshieldPhase2SubmittedEvent extends BaseEvent {\n /** Event type discriminant. */\n type: typeof ZamaSDKEvents.UnshieldPhase2Submitted;\n /** Hash of the submitted phase-2 transaction. */\n txHash: Hex;\n}\n\n/**\n * Discriminated union of all SDK events.\n *\n * Decrypt events carry encrypted values and decrypted clear-text values so event\n * subscribers can correlate and bind them in UI layers. Events never carry\n * private keys, permit signatures, or ZK proofs.\n */\nexport type ZamaSDKEvent =\n | EncryptStartEvent\n | EncryptEndEvent\n | EncryptErrorEvent\n | DecryptStartEvent\n | DecryptEndEvent\n | DecryptErrorEvent\n | PermitErrorEvent\n | TransactionErrorEvent\n | ShieldSubmittedEvent\n | TransferSubmittedEvent\n | TransferFromSubmittedEvent\n | SetOperatorSubmittedEvent\n | VaultSubmittedEvent\n | ApproveUnderlyingSubmittedEvent\n | WrapSubmittedEvent\n | UnwrapSubmittedEvent\n | FinalizeUnwrapSubmittedEvent\n | DelegationSubmittedEvent\n | RevokeDelegationSubmittedEvent\n | UnshieldPhase1SubmittedEvent\n | UnshieldPhase2StartedEvent\n | UnshieldPhase2SubmittedEvent;\n\n/** Callback invoked with each emitted {@link ZamaSDKEvent}. */\nexport type ZamaSDKEventListener = (event: ZamaSDKEvent) => void;\n\n/**\n * Distributive Omit that preserves the discriminated union. Internal emit-side\n * shape — consumers only ever receive fully-populated {@link ZamaSDKEvent}.\n * @internal\n */\nexport type ZamaSDKEventInput = ZamaSDKEvent extends infer E\n ? E extends ZamaSDKEvent\n ? Omit<E, \"timestamp\" | \"tokenAddress\">\n : never\n : never;\n\n/**\n * SDK transaction operations that emit submitted/error lifecycle events.\n *\n * Operation strings encode the execution-path discriminator for flows that have\n * one (`shield:transferAndCall` vs. `shield:approveAndWrap`), routing both error\n * and success events on a single field — see {@link transactionOperationMetadata}.\n */\nexport type TransactionOperation =\n | \"approveUnderlying\"\n | \"approveUnderlying:reset\"\n | \"delegateDecryption\"\n | \"finalizeUnwrap\"\n | \"revokeDelegation\"\n | \"setOperator\"\n | \"shield:transferAndCall\"\n | \"shield:approveAndWrap\"\n | \"wrap\"\n | \"transfer\"\n | \"transferAndCall\"\n | \"transferFrom\"\n | \"transferFromAndCall\"\n | \"unwrap\"\n | \"unwrapAll\"\n | \"vault:join\"\n | \"vault:quit\"\n | \"vault:claim\"\n | \"vault:recover\"\n | \"vault:dispatchBatch\";\n\n/**\n * Single source of truth for each transaction operation's submitted-event payload.\n *\n * Adding a write op = adding one entry here plus its {@link TransactionOperation}\n * member; the `satisfies Record<TransactionOperation, …>` check enforces that the\n * table and the union stay in lockstep (missing or extra keys fail the build) and\n * that every entry produces a valid {@link ZamaSDKEventInput}.\n *\n * @internal\n */\nexport const transactionOperationMetadata = {\n approveUnderlying: {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.ApproveUnderlyingSubmitted,\n txHash,\n step: \"approve\" as const,\n }),\n },\n \"approveUnderlying:reset\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.ApproveUnderlyingSubmitted,\n txHash,\n step: \"reset\" as const,\n }),\n },\n delegateDecryption: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.DelegationSubmitted, txHash }),\n },\n finalizeUnwrap: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.FinalizeUnwrapSubmitted, txHash }),\n },\n revokeDelegation: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.RevokeDelegationSubmitted, txHash }),\n },\n setOperator: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.SetOperatorSubmitted, txHash }),\n },\n \"shield:transferAndCall\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.ShieldSubmitted,\n txHash,\n shieldPath: \"transferAndCall\" as const,\n }),\n },\n \"shield:approveAndWrap\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.ShieldSubmitted,\n txHash,\n shieldPath: \"approveAndWrap\" as const,\n }),\n },\n wrap: { submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.WrapSubmitted, txHash }) },\n transfer: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.TransferSubmitted, txHash }),\n },\n transferAndCall: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.TransferSubmitted, txHash }),\n },\n transferFrom: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.TransferFromSubmitted, txHash }),\n },\n transferFromAndCall: {\n submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.TransferFromSubmitted, txHash }),\n },\n unwrap: { submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.UnwrapSubmitted, txHash }) },\n unwrapAll: { submittedEvent: (txHash: Hex) => ({ type: ZamaSDKEvents.UnwrapSubmitted, txHash }) },\n \"vault:join\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.VaultSubmitted,\n txHash,\n vaultOperation: \"join\" as const,\n }),\n },\n \"vault:quit\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.VaultSubmitted,\n txHash,\n vaultOperation: \"quit\" as const,\n }),\n },\n \"vault:claim\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.VaultSubmitted,\n txHash,\n vaultOperation: \"claim\" as const,\n }),\n },\n \"vault:recover\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.VaultSubmitted,\n txHash,\n vaultOperation: \"recover\" as const,\n }),\n },\n \"vault:dispatchBatch\": {\n submittedEvent: (txHash: Hex) => ({\n type: ZamaSDKEvents.VaultSubmitted,\n txHash,\n vaultOperation: \"dispatchBatch\" as const,\n }),\n },\n} satisfies Record<TransactionOperation, { submittedEvent: (txHash: Hex) => ZamaSDKEventInput }>;\n","import { isHex, type Hex } from \"viem\";\n\nexport function assertNonNullable<T>(value: T, context: string): asserts value is NonNullable<T> {\n if (value === null || value === undefined) {\n throw new TypeError(`${context} must not be null or undefined`);\n }\n}\n\nexport function assertObject(\n value: unknown,\n context: string,\n): asserts value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${context} must be an object, got ${typeof value}`);\n }\n}\n\nexport function assertString(value: unknown, context: string): asserts value is string {\n if (typeof value !== \"string\") {\n throw new TypeError(`${context} must be a string, got ${typeof value}`);\n }\n}\n\nexport function assertArray(value: unknown, context: string): asserts value is unknown[] {\n if (!Array.isArray(value)) {\n throw new TypeError(`${context} must be an array, got ${typeof value}`);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function assertFunction(value: unknown, context: string): asserts value is Function {\n if (typeof value !== \"function\") {\n throw new TypeError(`${context} must be a function, got ${typeof value}`);\n }\n}\n\nexport function assertBigint(value: unknown, context: string): asserts value is bigint {\n if (typeof value !== \"bigint\") {\n throw new TypeError(`${context} must be a bigint, got ${typeof value}`);\n }\n}\n\nexport function assertHex(value: unknown, context: string): asserts value is Hex {\n if (!isHex(value)) {\n throw new TypeError(`${context} must be a 0x-prefixed hex string, got ${typeof value}`);\n }\n}\n\n/** Assert that `obj[key]` is a string. Narrows `obj` to include `{ [key]: string }`. */\nexport function assertStringProp<\n K extends string,\n O extends Record<string, unknown> = Record<string, unknown>,\n>(obj: O, key: K, context: string): asserts obj is O & Record<K, string> {\n assertString(obj[key], context);\n}\n\n/** Assert that `obj[key]` is a function. Narrows `obj` to include `{ [key]: F }`. */\nexport function assertFunctionProp<\n K extends string,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n F extends Function,\n O extends Record<string, unknown> = Record<string, unknown>,\n>(obj: O, key: K, context: string): asserts obj is O & Record<K, F> {\n assertFunction(obj[key], context);\n}\n\nexport function assertCondition(condition: boolean, message: string): asserts condition {\n if (!condition) {\n throw new TypeError(message);\n }\n}\n","import type { GenericLogger } from \"../types\";\n\n/**\n * Runs a function and swallows any errors.\n *\n * The swallowed error is a handled, best-effort failure — when a logger is\n * supplied it is routed to the {@link GenericLogger} at `warn`, never to the\n * console. Most SDK call sites pass the SDK-wide logger; a few (e.g. a signer\n * constructed before `createConfig` exists) genuinely have none, so the logger\n * is optional and the failure is then silent.\n */\nexport async function swallow(\n label: string,\n fn: () => Promise<void> | void,\n logger?: GenericLogger,\n): Promise<void> {\n try {\n await fn();\n } catch (error) {\n logger?.warn(`${label} failed`, { error });\n }\n}\n","// DO NOT EDIT: generated by `pnpm abi:build` from\n// contracts/out/ConfidentialWrapperV3.sol/ConfidentialWrapperV3.json.\n// Regenerate after `pnpm contracts:build`; `pnpm abi:check` enforces this in CI.\nexport const confidentialWrapperAbi = [\n {\n type: \"function\",\n name: \"UPGRADE_INTERFACE_VERSION\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\", internalType: \"string\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"acceptOwnership\",\n inputs: [],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"blockUser\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialBalanceOf\",\n inputs: [{ name: \"account\", type: \"address\", internalType: \"address\" }],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"confidentialProtocolId\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\", internalType: \"uint256\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"confidentialTotalSupply\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"confidentialTransfer\",\n inputs: [\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"encryptedAmount\", type: \"bytes32\", internalType: \"externalEuint64\" },\n { name: \"inputProof\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransfer\",\n inputs: [\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"bytes32\", internalType: \"euint64\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransferAndCall\",\n inputs: [\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"bytes32\", internalType: \"euint64\" },\n { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"transferred\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransferAndCall\",\n inputs: [\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"encryptedAmount\", type: \"bytes32\", internalType: \"externalEuint64\" },\n { name: \"inputProof\", type: \"bytes\", internalType: \"bytes\" },\n { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"transferred\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransferFrom\",\n inputs: [\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"encryptedAmount\", type: \"bytes32\", internalType: \"externalEuint64\" },\n { name: \"inputProof\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"transferred\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransferFrom\",\n inputs: [\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"bytes32\", internalType: \"euint64\" },\n ],\n outputs: [{ name: \"transferred\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransferFromAndCall\",\n inputs: [\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"encryptedAmount\", type: \"bytes32\", internalType: \"externalEuint64\" },\n { name: \"inputProof\", type: \"bytes\", internalType: \"bytes\" },\n { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"transferred\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"confidentialTransferFromAndCall\",\n inputs: [\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"bytes32\", internalType: \"euint64\" },\n { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"transferred\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"contractURI\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\", internalType: \"string\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"decimals\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint8\", internalType: \"uint8\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"discloseEncryptedAmount\",\n inputs: [\n { name: \"encryptedAmount\", type: \"bytes32\", internalType: \"euint64\" },\n { name: \"cleartextAmount\", type: \"uint64\", internalType: \"uint64\" },\n { name: \"decryptionProof\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"finalizeUnwrap\",\n inputs: [\n { name: \"unwrapRequestId\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"unwrapAmountCleartext\", type: \"uint64\", internalType: \"uint64\" },\n { name: \"decryptionProof\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"getUnderlyingDenyListSelector\",\n inputs: [],\n outputs: [\n { name: \"isSet\", type: \"bool\", internalType: \"bool\" },\n { name: \"selector\", type: \"bytes4\", internalType: \"bytes4\" },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"inferredTotalSupply\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\", internalType: \"uint256\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"initialize\",\n inputs: [\n { name: \"name_\", type: \"string\", internalType: \"string\" },\n { name: \"symbol_\", type: \"string\", internalType: \"string\" },\n { name: \"contractURI_\", type: \"string\", internalType: \"string\" },\n { name: \"underlying_\", type: \"address\", internalType: \"contract IERC20\" },\n { name: \"owner_\", type: \"address\", internalType: \"address\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"isBlocked\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isOperator\",\n inputs: [\n { name: \"holder\", type: \"address\", internalType: \"address\" },\n { name: \"spender\", type: \"address\", internalType: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"maxTotalSupply\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\", internalType: \"uint256\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"name\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\", internalType: \"string\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"onTransferReceived\",\n inputs: [\n { name: \"operator\", type: \"address\", internalType: \"address\" },\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"uint256\", internalType: \"uint256\" },\n { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"\", type: \"bytes4\", internalType: \"bytes4\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"owner\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pendingOwner\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"proxiableUUID\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"bytes32\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rate\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\", internalType: \"uint256\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"reinitializeV2\",\n inputs: [],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"reinitializeV3\",\n inputs: [\n { name: \"blockedUsers\", type: \"address[]\", internalType: \"address[]\" },\n { name: \"underlyingDenyListSelector\", type: \"bytes4\", internalType: \"bytes4\" },\n { name: \"hasUnderlyingDenyListSelector_\", type: \"bool\", internalType: \"bool\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"renounceOwnership\",\n inputs: [],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"requestDiscloseEncryptedAmount\",\n inputs: [{ name: \"encryptedAmount\", type: \"bytes32\", internalType: \"euint64\" }],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setOperator\",\n inputs: [\n { name: \"operator\", type: \"address\", internalType: \"address\" },\n { name: \"until\", type: \"uint48\", internalType: \"uint48\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"supportsInterface\",\n inputs: [{ name: \"interfaceId\", type: \"bytes4\", internalType: \"bytes4\" }],\n outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"symbol\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\", internalType: \"string\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"transferOwnership\",\n inputs: [{ name: \"newOwner\", type: \"address\", internalType: \"address\" }],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"unblockUser\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"underlying\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"unwrap\",\n inputs: [\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"encryptedAmount\", type: \"bytes32\", internalType: \"externalEuint64\" },\n { name: \"inputProof\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"bytes32\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"unwrap\",\n inputs: [\n { name: \"from\", type: \"address\", internalType: \"address\" },\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"bytes32\", internalType: \"euint64\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"bytes32\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"unwrapAmount\",\n inputs: [{ name: \"unwrapRequestId\", type: \"bytes32\", internalType: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"unwrapRequester\",\n inputs: [{ name: \"unwrapRequestId\", type: \"bytes32\", internalType: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"upgradeToAndCall\",\n inputs: [\n { name: \"newImplementation\", type: \"address\", internalType: \"address\" },\n { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n ],\n outputs: [],\n stateMutability: \"payable\",\n },\n {\n type: \"function\",\n name: \"wrap\",\n inputs: [\n { name: \"to\", type: \"address\", internalType: \"address\" },\n { name: \"amount\", type: \"uint256\", internalType: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\", internalType: \"euint64\" }],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"event\",\n name: \"AmountDiscloseRequested\",\n inputs: [\n { name: \"encryptedAmount\", type: \"bytes32\", indexed: true, internalType: \"euint64\" },\n { name: \"requester\", type: \"address\", indexed: true, internalType: \"address\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"AmountDisclosed\",\n inputs: [\n { name: \"encryptedAmount\", type: \"bytes32\", indexed: true, internalType: \"euint64\" },\n { name: \"amount\", type: \"uint64\", indexed: false, internalType: \"uint64\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ConfidentialTransfer\",\n inputs: [\n { name: \"from\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"to\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"amount\", type: \"bytes32\", indexed: true, internalType: \"euint64\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"Initialized\",\n inputs: [{ name: \"version\", type: \"uint64\", indexed: false, internalType: \"uint64\" }],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OperatorSet\",\n inputs: [\n { name: \"holder\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"operator\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"until\", type: \"uint48\", indexed: false, internalType: \"uint48\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OwnershipTransferStarted\",\n inputs: [\n { name: \"previousOwner\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"newOwner\", type: \"address\", indexed: true, internalType: \"address\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OwnershipTransferred\",\n inputs: [\n { name: \"previousOwner\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"newOwner\", type: \"address\", indexed: true, internalType: \"address\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PublicDecryptionVerified\",\n inputs: [\n { name: \"handlesList\", type: \"bytes32[]\", indexed: false, internalType: \"bytes32[]\" },\n { name: \"abiEncodedCleartexts\", type: \"bytes\", indexed: false, internalType: \"bytes\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"UnwrapFinalized\",\n inputs: [\n { name: \"receiver\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"unwrapRequestId\", type: \"bytes32\", indexed: true, internalType: \"bytes32\" },\n { name: \"encryptedAmount\", type: \"bytes32\", indexed: false, internalType: \"euint64\" },\n { name: \"cleartextAmount\", type: \"uint64\", indexed: false, internalType: \"uint64\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"UnwrapRequested\",\n inputs: [\n { name: \"receiver\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"unwrapRequestId\", type: \"bytes32\", indexed: true, internalType: \"bytes32\" },\n { name: \"amount\", type: \"bytes32\", indexed: false, internalType: \"euint64\" },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"Upgraded\",\n inputs: [{ name: \"implementation\", type: \"address\", indexed: true, internalType: \"address\" }],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"UserBlocked\",\n inputs: [{ name: \"user\", type: \"address\", indexed: true, internalType: \"address\" }],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"UserUnblocked\",\n inputs: [{ name: \"user\", type: \"address\", indexed: true, internalType: \"address\" }],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"Wrap\",\n inputs: [\n { name: \"to\", type: \"address\", indexed: true, internalType: \"address\" },\n { name: \"roundedAmount\", type: \"uint256\", indexed: false, internalType: \"uint256\" },\n { name: \"encryptedWrappedAmount\", type: \"bytes32\", indexed: false, internalType: \"euint64\" },\n ],\n anonymous: false,\n },\n {\n type: \"error\",\n name: \"AddressEmptyCode\",\n inputs: [{ name: \"target\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"BlockedUser\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"ERC1967InvalidImplementation\",\n inputs: [{ name: \"implementation\", type: \"address\", internalType: \"address\" }],\n },\n { type: \"error\", name: \"ERC1967NonPayable\", inputs: [] },\n {\n type: \"error\",\n name: \"ERC7984InvalidReceiver\",\n inputs: [{ name: \"receiver\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"ERC7984InvalidReceiver\",\n inputs: [{ name: \"receiver\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"ERC7984InvalidSender\",\n inputs: [{ name: \"sender\", type: \"address\", internalType: \"address\" }],\n },\n { type: \"error\", name: \"ERC7984TotalSupplyOverflow\", inputs: [] },\n {\n type: \"error\",\n name: \"ERC7984UnauthorizedCaller\",\n inputs: [{ name: \"caller\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"ERC7984UnauthorizedSpender\",\n inputs: [\n { name: \"holder\", type: \"address\", internalType: \"address\" },\n { name: \"spender\", type: \"address\", internalType: \"address\" },\n ],\n },\n {\n type: \"error\",\n name: \"ERC7984UnauthorizedUseOfEncryptedAmount\",\n inputs: [\n { name: \"amount\", type: \"bytes32\", internalType: \"euint64\" },\n { name: \"user\", type: \"address\", internalType: \"address\" },\n ],\n },\n {\n type: \"error\",\n name: \"ERC7984ZeroBalance\",\n inputs: [{ name: \"holder\", type: \"address\", internalType: \"address\" }],\n },\n { type: \"error\", name: \"FailedCall\", inputs: [] },\n { type: \"error\", name: \"InvalidInitialization\", inputs: [] },\n { type: \"error\", name: \"InvalidKMSSignatures\", inputs: [] },\n { type: \"error\", name: \"InvalidUnderlyingDenyListResponse\", inputs: [] },\n {\n type: \"error\",\n name: \"InvalidUnwrapRequest\",\n inputs: [{ name: \"unwrapRequestId\", type: \"bytes32\", internalType: \"bytes32\" }],\n },\n { type: \"error\", name: \"NotInitializing\", inputs: [] },\n {\n type: \"error\",\n name: \"OwnableInvalidOwner\",\n inputs: [{ name: \"owner\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"OwnableUnauthorizedAccount\",\n inputs: [{ name: \"account\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"SafeCastOverflowedUintDowncast\",\n inputs: [\n { name: \"bits\", type: \"uint8\", internalType: \"uint8\" },\n { name: \"value\", type: \"uint256\", internalType: \"uint256\" },\n ],\n },\n {\n type: \"error\",\n name: \"SafeERC20FailedOperation\",\n inputs: [{ name: \"token\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"SenderNotAllowedToUseHandle\",\n inputs: [\n { name: \"handle\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"sender\", type: \"address\", internalType: \"address\" },\n ],\n },\n { type: \"error\", name: \"UUPSUnauthorizedCallContext\", inputs: [] },\n {\n type: \"error\",\n name: \"UUPSUnsupportedProxiableUUID\",\n inputs: [{ name: \"slot\", type: \"bytes32\", internalType: \"bytes32\" }],\n },\n { type: \"error\", name: \"UnderlyingDenyListCallFailed\", inputs: [] },\n {\n type: \"error\",\n name: \"UnderlyingDenyListedAddress\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"UserAlreadyBlocked\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"error\",\n name: \"UserAlreadyUnblocked\",\n inputs: [{ name: \"user\", type: \"address\", internalType: \"address\" }],\n },\n { type: \"error\", name: \"ZamaProtocolUnsupported\", inputs: [] },\n] as const;\n","import type { Address, Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidential-wrapper.abi\";\nimport type { EncryptedValue } from \"../relayer/types\";\n\n/**\n * Returns the contract config to read an encrypted balance.\n *\n * @example\n * ```ts\n * const handle = await provider.readContract(\n * confidentialBalanceOfContract(tokenAddress, userAddress),\n * );\n * ```\n */\nexport function confidentialBalanceOfContract(tokenAddress: Address, userAddress: Address) {\n return {\n address: tokenAddress,\n abi: confidentialWrapperAbi,\n functionName: \"confidentialBalanceOf\",\n args: [userAddress],\n } as const;\n}\n\n/**\n * Returns the contract config for a confidential transfer.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * confidentialTransferContract(tokenAddress, to, encryptedValues[0], inputProof),\n * );\n * ```\n */\nexport function confidentialTransferContract(\n encryptedErc20: Address,\n to: Address,\n encryptedAmount: EncryptedValue,\n inputProof: Hex,\n) {\n return {\n address: encryptedErc20,\n abi: confidentialWrapperAbi,\n functionName: \"confidentialTransfer\",\n args: [to, encryptedAmount, inputProof],\n } as const;\n}\n\n/**\n * Returns the contract config for a confidential transferFrom.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * confidentialTransferFromContract(tokenAddress, from, to, encryptedValues[0], inputProof),\n * );\n * ```\n */\nexport function confidentialTransferFromContract(\n encryptedErc20: Address,\n from: Address,\n to: Address,\n encryptedAmount: EncryptedValue,\n inputProof: Hex,\n) {\n return {\n address: encryptedErc20,\n abi: confidentialWrapperAbi,\n functionName: \"confidentialTransferFrom\",\n args: [from, to, encryptedAmount, inputProof],\n } as const;\n}\n\n/**\n * Returns the contract config for a confidential transferAndCall. The caller\n * supplies an opaque `data` payload that is forwarded to the recipient's\n * ERC-7984 receiver hook (`onConfidentialTransferReceived`). The SDK does not\n * craft, validate, or inspect `data` — encoding the call site's domain message\n * is the caller's responsibility.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * confidentialTransferAndCallContract(\n * tokenAddress,\n * to,\n * encryptedValues[0],\n * inputProof,\n * data,\n * ),\n * );\n * ```\n */\nexport function confidentialTransferAndCallContract(\n encryptedErc20: Address,\n to: Address,\n encryptedAmount: EncryptedValue,\n inputProof: Hex,\n data: Hex,\n) {\n return {\n address: encryptedErc20,\n abi: confidentialWrapperAbi,\n functionName: \"confidentialTransferAndCall\",\n args: [to, encryptedAmount, inputProof, data],\n } as const;\n}\n\n/**\n * Returns the contract config for a confidential transferFromAndCall. The\n * caller supplies an opaque `data` payload forwarded to the recipient's\n * ERC-7984 receiver hook; the SDK does not craft or inspect it.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * confidentialTransferFromAndCallContract(\n * tokenAddress,\n * from,\n * to,\n * encryptedValues[0],\n * inputProof,\n * data,\n * ),\n * );\n * ```\n */\nexport function confidentialTransferFromAndCallContract(\n encryptedErc20: Address,\n from: Address,\n to: Address,\n encryptedAmount: EncryptedValue,\n inputProof: Hex,\n data: Hex,\n) {\n return {\n address: encryptedErc20,\n abi: confidentialWrapperAbi,\n functionName: \"confidentialTransferFromAndCall\",\n args: [from, to, encryptedAmount, inputProof, data],\n } as const;\n}\n\n/**\n * Returns the contract config for checking operator status.\n *\n * @example\n * ```ts\n * const isOperator = await provider.readContract(\n * isOperatorContract(tokenAddress, holder, spender),\n * );\n * ```\n */\nexport function isOperatorContract(tokenAddress: Address, holder: Address, spender: Address) {\n return {\n address: tokenAddress,\n abi: confidentialWrapperAbi,\n functionName: \"isOperator\",\n args: [holder, spender],\n } as const;\n}\n\n/**\n * Returns the contract config for setting an operator.\n * Defaults until to 1 hour from now.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * setOperatorContract(tokenAddress, operator),\n * );\n * ```\n */\nexport function setOperatorContract(tokenAddress: Address, operator: Address, until?: number) {\n const effectiveUntil = until ?? Math.floor(Date.now() / 1000) + 3600;\n return {\n address: tokenAddress,\n abi: confidentialWrapperAbi,\n functionName: \"setOperator\",\n args: [operator, effectiveUntil],\n } as const;\n}\n\n/**\n * Returns the contract config for an unwrap with newly encrypted amount.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * unwrapContract(encryptedErc20, from, to, encryptedValues[0], inputProof),\n * );\n * ```\n */\nexport function unwrapContract(\n encryptedErc20: Address,\n from: Address,\n to: Address,\n encryptedAmount: EncryptedValue,\n inputProof: Hex,\n) {\n return {\n address: encryptedErc20,\n abi: confidentialWrapperAbi,\n functionName: \"unwrap\",\n args: [from, to, encryptedAmount, inputProof],\n } as const;\n}\n\n/**\n * Returns the contract config for an unwrap with an existing balance handle.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * unwrapFromBalanceContract(encryptedErc20, from, to, encryptedBalance),\n * );\n * ```\n */\nexport function unwrapFromBalanceContract(\n encryptedErc20: Address,\n from: Address,\n to: Address,\n encryptedBalance: EncryptedValue,\n) {\n return {\n address: encryptedErc20,\n abi: confidentialWrapperAbi,\n functionName: \"unwrap\",\n args: [from, to, encryptedBalance],\n } as const;\n}\n\n/**\n * Returns the contract config to read the confidential (encrypted) total supply.\n *\n * @example\n * ```ts\n * const handle = await provider.readContract(\n * confidentialTotalSupplyContract(tokenAddress),\n * );\n * ```\n */\nexport function confidentialTotalSupplyContract(tokenAddress: Address) {\n return {\n address: tokenAddress,\n abi: confidentialWrapperAbi,\n functionName: \"confidentialTotalSupply\",\n args: [],\n } as const;\n}\n\n/**\n * Returns the contract config to read the wrap/unwrap conversion rate.\n *\n * @example\n * ```ts\n * const rate = await provider.readContract(rateContract(tokenAddress));\n * ```\n */\nexport function rateContract(tokenAddress: Address) {\n return {\n address: tokenAddress,\n abi: confidentialWrapperAbi,\n functionName: \"rate\",\n args: [],\n } as const;\n}\n\n/**\n * Returns the contract config for finalizing an unwrap.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * finalizeUnwrapContract(wrapper, unwrapRequestId, cleartext, proof),\n * );\n * ```\n */\nexport function finalizeUnwrapContract(\n wrapper: Address,\n unwrapRequestId: EncryptedValue,\n unwrapAmountCleartext: bigint,\n decryptionProof: Hex,\n) {\n return {\n address: wrapper,\n abi: confidentialWrapperAbi,\n functionName: \"finalizeUnwrap\",\n args: [unwrapRequestId, unwrapAmountCleartext, decryptionProof],\n } as const;\n}\n\n/**\n * Returns the contract config to read the requester of an open unwrap request.\n * The wrapper deletes the request on finalize, so the zero address means the\n * request no longer exists.\n *\n * @example\n * ```ts\n * const requester = await provider.readContract(\n * unwrapRequesterContract(wrapperAddress, unwrapRequestId),\n * );\n * ```\n */\nexport function unwrapRequesterContract(wrapperAddress: Address, unwrapRequestId: EncryptedValue) {\n return {\n address: wrapperAddress,\n abi: confidentialWrapperAbi,\n functionName: \"unwrapRequester\",\n args: [unwrapRequestId],\n } as const;\n}\n\n/**\n * Returns the contract config to read the underlying ERC-20 token of a wrapper.\n *\n * @example\n * ```ts\n * const token = await provider.readContract(underlyingContract(wrapperAddress));\n * ```\n */\nexport function underlyingContract(wrapperAddress: Address) {\n return {\n address: wrapperAddress,\n abi: confidentialWrapperAbi,\n functionName: \"underlying\",\n args: [],\n } as const;\n}\n\n/**\n * Returns the contract config to read the inferred plaintext total supply.\n *\n * @example\n * ```ts\n * const supply = await provider.readContract(\n * inferredTotalSupplyContract(wrapperAddress),\n * );\n * ```\n */\nexport function inferredTotalSupplyContract(wrapperAddress: Address) {\n return {\n address: wrapperAddress,\n abi: confidentialWrapperAbi,\n functionName: \"inferredTotalSupply\",\n args: [],\n } as const;\n}\n\n/**\n * Returns the contract config for a wrap (shield) operation.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * wrapContract(wrapperAddress, to, amount),\n * );\n * ```\n */\nexport function wrapContract(wrapperAddress: Address, to: Address, amount: bigint) {\n return {\n address: wrapperAddress,\n abi: confidentialWrapperAbi,\n functionName: \"wrap\",\n args: [to, amount],\n } as const;\n}\n","import { erc20Abi, type Address } from \"viem\";\n\n/**\n * Returns the contract config to read a token's name.\n *\n * @example\n * ```ts\n * const name = await provider.readContract(nameContract(tokenAddress));\n * ```\n */\nexport function nameContract(tokenAddress: Address) {\n return { address: tokenAddress, abi: erc20Abi, functionName: \"name\", args: [] } as const;\n}\n\n/**\n * Returns the contract config to read a token's symbol.\n *\n * @example\n * ```ts\n * const symbol = await provider.readContract(symbolContract(tokenAddress));\n * ```\n */\nexport function symbolContract(tokenAddress: Address) {\n return { address: tokenAddress, abi: erc20Abi, functionName: \"symbol\", args: [] } as const;\n}\n\n/**\n * Returns the contract config to read a token's decimals.\n *\n * @example\n * ```ts\n * const decimals = await provider.readContract(decimalsContract(tokenAddress));\n * ```\n */\nexport function decimalsContract(tokenAddress: Address) {\n return { address: tokenAddress, abi: erc20Abi, functionName: \"decimals\", args: [] } as const;\n}\n\n/**\n * Returns the contract config to read an ERC-20 token's total supply.\n *\n * @example\n * ```ts\n * const supply = await provider.readContract(erc20TotalSupplyContract(tokenAddress));\n * ```\n */\nexport function erc20TotalSupplyContract(tokenAddress: Address) {\n return { address: tokenAddress, abi: erc20Abi, functionName: \"totalSupply\", args: [] } as const;\n}\n\n/**\n * Returns the contract config to read an ERC-20 balance.\n *\n * @example\n * ```ts\n * const balance = await provider.readContract(\n * balanceOfContract(tokenAddress, account),\n * );\n * ```\n */\nexport function balanceOfContract(tokenAddress: Address, account: Address) {\n return {\n address: tokenAddress,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n } as const;\n}\n\n/**\n * Returns the contract config to read an ERC-20 allowance.\n *\n * @example\n * ```ts\n * const allowance = await provider.readContract(\n * allowanceContract(tokenAddress, owner, spender),\n * );\n * ```\n */\nexport function allowanceContract(tokenAddress: Address, owner: Address, spender: Address) {\n return {\n address: tokenAddress,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [owner, spender],\n } as const;\n}\n\n/**\n * Returns the contract config for an ERC-20 approve.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n * approveContract(tokenAddress, spender, amount),\n * );\n * ```\n */\nexport function approveContract(tokenAddress: Address, spender: Address, value: bigint) {\n return {\n address: tokenAddress,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [spender, value],\n } as const;\n}\n","// DO NOT EDIT: generated by `pnpm abi:build` from\n// contracts/out/IERC165.sol/IERC165.json.\n// Regenerate after `pnpm contracts:build`; `pnpm abi:check` enforces this in CI.\nexport const erc165Abi = [\n {\n type: \"function\",\n name: \"supportsInterface\",\n inputs: [{ name: \"interfaceId\", type: \"bytes4\", internalType: \"bytes4\" }],\n outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n stateMutability: \"view\",\n },\n] as const;\n","import type { Address } from \"viem\";\nimport { erc165Abi } from \"../abi/erc165.abi\";\n\n/** ERC-165 interface ID for IERC7984 (confidential fungible token). */\nexport const ERC7984_INTERFACE_ID = \"0x4958f2a4\" as const;\n\n/** ERC-165 interface ID for IERC7984ERC20Wrapper (confidential wrapper). */\nexport const ERC7984_WRAPPER_INTERFACE_ID = \"0x1f1c62b2\" as const;\n\n/** ERC-165 interface ID for ERC-1363 (payable token — `transferAndCall`). */\nexport const ERC1363_INTERFACE_ID = \"0xb0202a11\" as const;\n\n/**\n * Returns the contract config for an ERC-165 `supportsInterface` check.\n *\n * Use with {@link ERC7984_INTERFACE_ID} to detect confidential tokens,\n * or {@link ERC7984_WRAPPER_INTERFACE_ID} to detect wrappers.\n *\n * @example\n * ```ts\n * const isConfidential = await provider.readContract(\n * supportsInterfaceContract(tokenAddress, ERC7984_INTERFACE_ID),\n * );\n * ```\n */\nexport function supportsInterfaceContract(tokenAddress: Address, interfaceId: Address) {\n return {\n address: tokenAddress,\n abi: erc165Abi,\n functionName: \"supportsInterface\",\n args: [interfaceId],\n } as const;\n}\n\n/**\n * Returns contract config to check if a token implements IERC7984 (confidential fungible token).\n *\n * @example\n * ```ts\n * const isConfidential = await provider.readContract(\n * isConfidentialTokenContract(\"0xTokenAddress\"),\n * );\n * ```\n */\nexport function isConfidentialTokenContract(tokenAddress: Address) {\n return supportsInterfaceContract(tokenAddress, ERC7984_INTERFACE_ID);\n}\n\n/**\n * Returns contract config to check if a token implements IERC7984ERC20Wrapper (confidential wrapper).\n *\n * @example\n * ```ts\n * const isWrapper = await provider.readContract(\n * isConfidentialWrapperContract(\"0xWrapperAddress\"),\n * );\n * ```\n */\nexport function isConfidentialWrapperContract(tokenAddress: Address) {\n return supportsInterfaceContract(tokenAddress, ERC7984_WRAPPER_INTERFACE_ID);\n}\n\n/**\n * Returns contract config to check if a token implements ERC-1363 (payable token).\n *\n * @example\n * ```ts\n * const isPayable = await provider.readContract(\n * isPayableTokenContract(\"0xTokenAddress\"),\n * );\n * ```\n */\nexport function isPayableTokenContract(tokenAddress: Address) {\n return supportsInterfaceContract(tokenAddress, ERC1363_INTERFACE_ID);\n}\n"],"mappings":"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"}
|
package/dist/esm/ethers/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"../relayer-C3jVhqSK.js";import{A as t,B as n,D as r,E as i,F as a,H as o,L as s,N as c,O as l,T as u,h as d,j as f,s as p,v as m,x as h,z as g}from"../erc165-
|
|
1
|
+
import{t as e}from"../relayer-C3jVhqSK.js";import{A as t,B as n,D as r,E as i,F as a,H as o,L as s,N as c,O as l,T as u,h as d,j as f,s as p,v as m,x as h,z as g}from"../erc165-BAd2z3ay.js";import{i as _,t as v}from"../base-signer-b1ff2VPI.js";import{a as y,i as b,n as x,o as ee,r as S,s as C,t as w}from"../wrappers-registry-Cm3JJeqx.js";import{t as T}from"../eip1193-subscribe-CNxVHW6y.js";import{ProviderRpcError as E,decodeFunctionResult as D,encodeFunctionData as te,getAddress as O,isHex as k}from"viem";import{BrowserProvider as A,Contract as j,Transaction as M,ethers as N}from"ethers";function P(e){return{to:e.address,data:te({abi:e.abi,functionName:e.functionName,args:e.args}),...e.gas===void 0?{}:{gasLimit:e.gas},...e.value===void 0?{}:{value:e.value}}}async function F(e,t){let n=await e.call(P(t));if(!k(n))throw TypeError(`Expected hex string, got: ${n}`);return D({abi:t.abi,functionName:t.functionName,data:n})}async function I(e,t){let n=await e.sendTransaction(P(t));if(!k(n.hash))throw TypeError(`Expected hex string, got: ${n.hash}`);return n.hash}function L(e,t,n){return F(e,d(t,n))}function R(e,t){return F(e,i(t))}function z(e,t,n){return F(e,p(t,n))}function B(e,t,n,r,i){return I(e,m(t,n,r,i))}function V(e,t,n,i,a,o){return I(e,r(t,n,i,a,o))}function H(e,t,n,r,i){return I(e,l(t,n,r,i))}function U(e,t,n,r,i){return I(e,h(t,n,r,i))}function W(e,t,n,r){return I(e,u(t,n,r))}function G(e,n,r,i){return I(e,t(n,r,i))}function K(e,t){return F(e,b(t))}function q(e,t){return F(e,y(t))}function J(e,t,n,r){return F(e,ee(t,n,r))}function Y(e,t,n){return F(e,S(t,n))}function X(e,t,n){return F(e,w(t,n))}function Z(e,t,n){return F(e,x(t,n))}function ne(e,t,n){return F(e,C(t,n))}var Q=class{#e;constructor(e){`ethereum`in e?this.#e=new A(e.ethereum):this.#e=e.provider}async getChainId(){let e=await this.#e.getNetwork();return Number(e.chainId)}async readContract(e){return F(this.#e,{address:e.address,abi:e.abi,functionName:e.functionName,args:e.args})}async getBlockTimestamp(){let t=await this.#e.getBlock(`latest`);if(!t)throw new e(`EthersProvider.getBlockTimestamp: failed to fetch latest block`);if(t.timestamp===null)throw new e(`EthersProvider.getBlockTimestamp: latest block has no timestamp`);return BigInt(t.timestamp)}async waitForTransactionReceipt(e){let t=await this.#e.waitForTransaction(e);if(!t)throw new o(`EthersProvider.waitForTransactionReceipt: no receipt found for tx ${e}. The transaction may have been dropped from the mempool, or the RPC's wait timeout elapsed.`);return{logs:t.logs.map(e=>({address:e.address,topics:e.topics.filter(e=>e!==null),data:e.data}))}}async prepareTransaction(t){let{from:n,calldata:r}=t,i=new N.Interface(r.abi),a=[];i.forEachFunction(e=>{e.name===r.functionName&&a.push(e)});let s=r.args.length,l=a.length===1?a[0]:a.find(e=>e.inputs.length===s);if(!l)throw Error(`Function ${r.functionName}(${s} args) not found in ABI`);let u=i.encodeFunctionData(l,r.args);c(u,`data`);let d=r.value??0n,f=this.#e.getNetwork(),p=t.nonce===void 0?this.#e.getTransactionCount(n,`pending`):Promise.resolve(t.nonce),m=t.gasLimit===void 0?r.gas??this.#e.estimateGas({from:n,to:r.address,data:u,value:d}).catch(e=>{throw new o(`EthersProvider.prepareTransaction: gas estimation reverted for ${r.functionName} on ${r.address}`,{cause:e})}):Promise.resolve(t.gasLimit),h=t.fees??this.#e.getFeeData(),[g,_,v,y]=await Promise.all([f,p,m,h]),b=y.maxFeePerGas,x=y.maxPriorityFeePerGas;if(b===null||x===null)throw new e(`EthersProvider.prepareTransaction: EIP-1559 fee data unavailable (provider returned null maxFeePerGas). The connected chain may not support EIP-1559 type-2 transactions.`);return M.from({type:2,chainId:Number(g.chainId),nonce:_,to:r.address,data:u,value:d,gasLimit:v,maxFeePerGas:b,maxPriorityFeePerGas:x}).unsignedSerialized}},$=class extends v{#e;#t;#n;#r;#i;constructor(e){super(),`ethereum`in e?(this.#e=new A(e.ethereum),this.#n=e.ethereum,this.#r=T({provider:e.ethereum,getInitialWalletAccount:()=>this.#l(),onWalletAccountChange:({next:e})=>{this.walletAccount.setSnapshot(e)}})):(this.#t=e.signer,this.#r=()=>{},f(`refresh wallet account`,async()=>{await this.refreshWalletAccount()}))}requireWalletAccount(e){let t=this.walletAccount.getSnapshot();if(!t&&!this.walletAccount.isReady())throw new g(e);if(!t)throw new n(e);return t}refreshWalletAccount(){return this.#n?this.#c():this.#t?this.#s(this.#t):Promise.resolve(void 0)}onDispose(){this.#r()}async#a(){if(this.#t)return this.#t;if(!this.#e)throw new s(`resolveSigner`);return this.#e.getSigner()}async#o(e){let t=e.provider;if(!t)return;let[n,r]=await Promise.all([e.getAddress(),t.getNetwork()]);return{address:O(n),chainId:Number(r.chainId)}}async signTypedData(e){let t=await this.#a(),{domain:n,types:r,message:i}=e,{EIP712Domain:a,...o}=r,s=Object.fromEntries(Object.entries(o).map(([e,t])=>[e,[...t]])),c=await t.signTypedData(n,s,i);if(!k(c))throw TypeError(`Expected hex string, got: ${c}`);return c}async writeContract(e){let t=await this.#a(),n=new j(e.address,e.abi,t),r={};e.value!==void 0&&(r.value=e.value),e.gas!==void 0&&(r.gasLimit=e.gas);let i=await n.getFunction(e.functionName)(...e.args,r);if(!k(i.hash))throw TypeError(`Expected hex string, got: ${i.hash}`);return i.hash}async#s(e){return this.#i??=this.#o(e).then(e=>(this.walletAccount.setSnapshot(e),e)).finally(()=>{this.#i=void 0}),this.#i}async#c(){let e=await this.#l();return this.walletAccount.setSnapshot(e),e}async#l(){let e=this.#n;if(!e)return;let[t,n]=await Promise.all([e.request({method:`eth_accounts`}),e.request({method:`eth_chainId`})]);if(!Array.isArray(t)||typeof t[0]!=`string`)return;let r=Number(n);if(!(!Number.isSafeInteger(r)||r<=0))return{address:O(t[0]),chainId:r}}};function re(e){if(`signer`in e&&e.signer){let t=new $({signer:e.signer});if(!e.signer.provider)throw Error(`createConfig requires a Signer with an attached provider for chain reads`);return _(t,new Q({provider:e.signer.provider}),e)}return _(new $({ethereum:e.ethereum}),`provider`in e&&e.provider?new Q({provider:e.provider}):new Q({ethereum:e.ethereum}),e)}export{v as BaseSigner,Q as EthersProvider,$ as EthersSigner,E as ProviderRpcError,a as ZamaSDKEvents,re as createConfig,L as readConfidentialBalanceOfContract,X as readConfidentialTokenAddressContract,ne as readIsConfidentialTokenValidContract,z as readSupportsInterfaceContract,Z as readTokenAddressContract,Y as readTokenPairContract,K as readTokenPairsContract,q as readTokenPairsLengthContract,J as readTokenPairsSliceContract,R as readUnderlyingTokenContract,B as writeConfidentialTransferContract,U as writeFinalizeUnwrapContract,W as writeSetOperatorContract,V as writeUnwrapContract,H as writeUnwrapFromBalanceContract,G as writeWrapContract};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{t as e,x as t,y as n}from"./relayer-C3jVhqSK.js";import{n as r}from"./encryption-6AVd-82z.js";import{n as i,t as a}from"./applied-runtime-3fzqBC2V.js";import{n as o}from"./telemetry-Dll0Swdj.js";import{createPublicClient as s,custom as c,http as l}from"viem";import{createUnsignedLegacyDecryptionPermitEip712 as u}from"@fhevm/sdk/actions/base";import{createFhevmBaseClient as ee,createFhevmDecryptClient as te,createFhevmEncryptClient as d,hasFhevmRuntimeConfig as f}from"@fhevm/sdk/viem";import{createFhevmCleartextBaseClient as ne,createFhevmCleartextDecryptClient as re,createFhevmCleartextEncryptClient as p}from"@fhevm/sdk/viem/cleartext";function m(e){return{id:e.id,fhevm:{contracts:{acl:{address:e.aclContractAddress},inputVerifier:{address:e.inputVerifierContractAddress},kmsVerifier:{address:e.kmsContractAddress},protocolConfig:void 0},relayerUrl:e.relayerUrl,gateway:{id:e.gatewayChainId,contracts:{decryption:{address:e.verifyingContractAddressDecryption},inputVerification:{address:e.verifyingContractAddressInputVerification}}}}}}
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2019 Google LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
const h=Symbol(`Comlink.proxy`),g=Symbol(`Comlink.endpoint`),_=Symbol(`Comlink.releaseProxy`),v=Symbol(`Comlink.finalizer`),y=Symbol(`Comlink.thrown`),b=e=>typeof e==`object`&&!!e||typeof e==`function`,x=new Map([[`proxy`,{canHandle:e=>b(e)&&e[h],serialize(e){let{port1:t,port2:n}=new MessageChannel;return C(e,t),[n,[n]]},deserialize(e){return e.start(),T(e)}}],[`throw`,{canHandle:e=>b(e)&&y in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(Error(e.value.message),e.value):e.value}}]]);function S(e,t){for(let n of e)if(t===n||n===`*`||n instanceof RegExp&&n.test(t))return!0;return!1}function C(e,t=globalThis,n=[`*`]){t.addEventListener(`message`,function r(i){if(!i||!i.data)return;if(!S(n,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}let{id:a,type:o,path:s}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(R),l;try{let t=s.slice(0,-1).reduce((e,t)=>e[t],e),n=s.reduce((e,t)=>e[t],e);switch(o){case`GET`:l=n;break;case`SET`:t[s.slice(-1)[0]]=R(i.data.value),l=!0;break;case`APPLY`:l=n.apply(t,c);break;case`CONSTRUCT`:l=I(new n(...c));break;case`ENDPOINT`:{let{port1:t,port2:n}=new MessageChannel;C(e,n),l=F(t,[t])}break;case`RELEASE`:l=void 0;break;default:return}}catch(e){l={value:e,[y]:0}}Promise.resolve(l).catch(e=>({value:e,[y]:0})).then(n=>{let[i,s]=L(n);t.postMessage(Object.assign(Object.assign({},i),{id:a}),s),o===`RELEASE`&&(t.removeEventListener(`message`,r),w(t),v in e&&typeof e[v]==`function`&&e[v]())}).catch(e=>{let[n,r]=L({value:TypeError(`Unserializable return value`),[y]:0});t.postMessage(Object.assign(Object.assign({},n),{id:a}),r)})}),t.start&&t.start()}function ie(e){return e.constructor.name===`MessagePort`}function w(e){ie(e)&&e.close()}function T(e,t){let n=new Map;return e.addEventListener(`message`,function(e){let{data:t}=e;if(!t||!t.id)return;let r=n.get(t.id);if(r)try{r(t)}finally{n.delete(t.id)}}),M(e,n,[],t)}function E(e){if(e)throw Error(`Proxy has been released and is not useable`)}function D(e){return z(e,new Map,{type:`RELEASE`}).then(()=>{w(e)})}const O=new WeakMap,k=`FinalizationRegistry`in globalThis&&new FinalizationRegistry(e=>{let t=(O.get(e)||0)-1;O.set(e,t),t===0&&D(e)});function A(e,t){let n=(O.get(t)||0)+1;O.set(t,n),k&&k.register(e,t,e)}function j(e){k&&k.unregister(e)}function M(e,t,n=[],r=function(){}){let i=!1,a=new Proxy(r,{get(r,o){if(E(i),o===_)return()=>{j(a),D(e),t.clear(),i=!0};if(o===`then`){if(n.length===0)return{then:()=>a};let r=z(e,t,{type:`GET`,path:n.map(e=>e.toString())}).then(R);return r.then.bind(r)}return M(e,t,[...n,o])},set(r,a,o){E(i);let[s,c]=L(o);return z(e,t,{type:`SET`,path:[...n,a].map(e=>e.toString()),value:s},c).then(R)},apply(r,a,o){E(i);let s=n[n.length-1];if(s===g)return z(e,t,{type:`ENDPOINT`}).then(R);if(s===`bind`)return M(e,t,n.slice(0,-1));let[c,l]=N(o);return z(e,t,{type:`APPLY`,path:n.map(e=>e.toString()),argumentList:c},l).then(R)},construct(r,a){E(i);let[o,s]=N(a);return z(e,t,{type:`CONSTRUCT`,path:n.map(e=>e.toString()),argumentList:o},s).then(R)}});return A(a,e),a}function ae(e){return Array.prototype.concat.apply([],e)}function N(e){let t=e.map(L);return[t.map(e=>e[0]),ae(t.map(e=>e[1]))]}const P=new WeakMap;function F(e,t){return P.set(e,t),e}function I(e){return Object.assign(e,{[h]:!0})}function L(e){for(let[t,n]of x)if(n.canHandle(e)){let[r,i]=n.serialize(e);return[{type:`HANDLER`,name:t,value:r},i]}return[{type:`RAW`,value:e},P.get(e)||[]]}function R(e){switch(e.type){case`HANDLER`:return x.get(e.name).deserialize(e.value);case`RAW`:return e.value}}function z(e,t,n,r){return new Promise(i=>{let a=B();t.set(a,i),e.start&&e.start(),e.postMessage(Object.assign({id:a},n),r)})}function B(){return[,,,,].fill(0).map(()=>Math.floor(Math.random()*(2**53-1)).toString(16)).join(`-`)}function V(e){return typeof e==`object`&&!!e&&e.wireError===!0}const H=[`statusCode`,`status`,`retryAfter`,`timeoutMs`,`relayerApiError`,`code`,`data`,`shortMessage`,`details`,`error`,`info`];function U(e){try{return structuredClone(e),!0}catch{return!1}}function W(e){let n=e.response;return t(n?.headers)}function G(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function K(e){let t={};for(let n of H){let r=e[n];r!==void 0&&U(r)&&(t[n]=r)}if(!n(t.retryAfter)){let n=W(e);n!==void 0&&(t.retryAfter=n)}return t}function q(e,t=6){if(V(e))return e;let n=e=>t>0&&e!==void 0?q(e,t-1):void 0;if(e instanceof Error)return{wireError:!0,name:e.name,message:e.message,stack:e.stack,props:K(e),cause:n(e.cause)};if(typeof e==`object`&&e){let{message:t,cause:r}=e;return{wireError:!0,name:`Error`,message:typeof t==`string`?t:G(e),stack:void 0,props:K(e),cause:n(r)}}return{wireError:!0,name:`Error`,message:typeof e==`string`?e:G(e),stack:void 0,props:{},cause:void 0}}function J(e){let t=Error(e.message,e.cause?{cause:J(e.cause)}:{});return t.name=e.name,e.stack!==void 0&&(t.stack=e.stack),Object.assign(t,e.props),t}function oe(){return new Worker(new URL(`./encrypt.worker.js`,import.meta.url),{type:`module`,name:`zama-fhe-encrypt`})}const Y={spawn:1e4,init:3e5},X=new WeakSet;var Z=class extends Error{crashed;constructor(e,t){super(e,t),this.name=`WorkerUnavailableError`,this.crashed=t?.crashed??!1}};function se(e){if(typeof e!=`object`||!e)return!1;let{name:t,message:n}=e;return t===`DataCloneError`||t===`TypeError`&&typeof n==`string`&&n.includes(`Unserializable return value`)}function Q(e){if(e?.aborted)throw e.reason??new DOMException(`The operation was aborted.`,`AbortError`)}const $={count:0,last:void 0,warnedFor:-1};function ce(e){if(e===void 0)return{key:e,transfers:[]};let t=e.publicKeyBytes.bytes,n=e.crsBytes.bytes;if(!(t instanceof Uint8Array)||!(n instanceof Uint8Array))return{key:e,transfers:[]};let r=t.slice(),i=n.slice();return{key:{...e,publicKeyBytes:{...e.publicKeyBytes,bytes:r},crsBytes:{...e.crsBytes,bytes:i}},transfers:[r.buffer,i.buffer]}}function le(){let e,t=new Promise((t,n)=>{e=n});return t.catch(()=>{}),{initPromise:void 0,worker:void 0,api:void 0,doomed:t,doom:e}}var ue=class{#e;#t;#n=!1;#r=$;#i=0;#a=new Map;#o;#s=0;#c=!1;constructor(e){this.#e=e}init=()=>{let e=this.#t??=le();if(e.initPromise===void 0){let t=this.#f(()=>this.#u(e)).catch(n=>{throw e.initPromise===t&&(e.initPromise=void 0),n});e.initPromise=t}return e.initPromise};encryptValue=e=>this.#f(()=>this.#l(t=>t.encryptValue(e),(t,n,r)=>t.encryptValue(n,{...e,options:r}),e.options));encryptValues=e=>this.#f(()=>this.#l(t=>t.encryptValues(e),(t,n,r)=>t.encryptValues(n,{...e,options:r}),e.options));dispose(){this.#c=!0,this.#p()}async#l(e,t,n){let{signal:r,onProgress:i,...a}=n??{};Q(r),await this.init(),Q(r);let o=this.#t,s=o?.api;if(this.#o!==void 0&&(this.#n||s===void 0))return e(await this.#o);if(o===void 0||s===void 0)return e(await this.#b(o,this.#r.last??new Z(`Encrypt worker not running.`)));let c=this.#i++,l=()=>void s.abort(c).catch(()=>{});r?.addEventListener(`abort`,l,{once:!0}),i&&this.#a.set(c,i);try{let e=await this.#v(o,t(s,c,a));return this.#r=$,e}catch(t){if(t instanceof Z)return e(await this.#b(o,t));throw t}finally{this.#a.delete(c),r?.removeEventListener(`abort`,l)}}async#u(e){if(this.#n)return;let t=this.#e.blockedReason;if(t!==void 0){await this.#b(e,new Z(t));return}let n=await this.#e.prefetchKey();try{let t=await this.#h(e),r=this.#e.network,i=typeof r==`string`?null:I(async e=>{try{return await r.request(e)}catch(e){throw q(e)}}),a=I((e,t)=>{try{this.#e.logger[e](t)}catch(e){this.#d(`logger`,e)}}),o=I((e,t)=>{try{this.#a.get(e)?.(t)}catch(e){this.#d(`onProgress`,e)}}),s=ce(n);await this.#v(e,t.init(F({...this.#e.initPayload,clientOptions:{...this.#e.initPayload.clientOptions,fheEncryptionKey:s.key},rpcUrl:typeof r==`string`?r:void 0},s.transfers),i,a,o),{ms:this.#e.timeouts.init,operation:`init`}),e.api=t,this.#r={...this.#r,last:void 0}}catch(t){if(!(t instanceof Z))throw this.#y(e,new Z(`Encrypt worker init failed.`)),t;await this.#b(e,t)}}#d(e,t){let n=t instanceof Error?t.message:String(t);try{this.#e.logger.warn(`Encrypt offload ${e} callback threw: ${n}`)}catch{}}async#f(e){this.#s++;try{return await e()}finally{this.#s--,this.#p()}}#p(){!this.#c||this.#s>0||(this.#c=!1,this.#t?.worker?.terminate(),this.#t=void 0,this.#o=void 0,this.#n=!1,this.#r=$)}#m(){let e=this.#e.workerSource;if(e===void 0)return oe();if(typeof e==`function`){let t=e();return X.has(t)&&this.#e.logger.warnAlways(`The offloadWorker factory returned a worker it already handed out; each call must construct a fresh Worker.`),X.add(t),t}return new Worker(e,{type:`module`,name:`zama-fhe-encrypt`})}async#h(e){let t;try{t=this.#m()}catch(e){throw new Z(e instanceof Error?e.message:String(e),{cause:e})}e.worker=t;let n=await this.#g(e,t);return this.#_(e,t),n}#g(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(a),t.removeEventListener(`message`,o),t.removeEventListener(`error`,s)},a=setTimeout(()=>{i(),r(new Z(`Encrypt worker did not start within ${this.#e.timeouts.spawn}ms.`))},this.#e.timeouts.spawn),o=e=>{e.data===`zama-encrypt-worker-ready`&&(i(),n(T(t)))},s=t=>{i();let n=t.message||`Encrypt worker error.`;r(new Z(n)),this.#y(e,new Z(n))};t.addEventListener(`message`,o),t.addEventListener(`error`,s)})}#_(e,t){t.addEventListener(`error`,t=>{if(this.#t!==e)return;let n=new Z(t.message||`Encrypt worker error.`,{crashed:!0});this.#r={...this.#r,count:this.#r.count+1,last:n},this.#y(e,n)})}async#v(e,t,n){let r=n===void 0?void 0:setTimeout(()=>{this.#y(e,new Z(`Encrypt worker ${n.operation} timed out after ${n.ms}ms.`))},n.ms);try{return await Promise.race([t.catch(e=>{let t=V(e)?J(e):e;throw se(t)?new Z(t.message,{cause:t}):t}),e.doomed])}finally{r!==void 0&&clearTimeout(r)}}#y(e,t){e!==void 0&&(this.#t===e&&(this.#t=void 0),e.worker?.terminate(),e.worker=void 0,e.api=void 0,e.initPromise=void 0,e.doom(t))}async#b(e,t){let n=t instanceof Error?t.message:String(t);if(this.#e.strict)throw this.#y(e,new Z(`Encrypt worker unavailable.`)),new r(`Encrypt offload required (offloadEncrypt: true) but unavailable: ${n}`,{cause:t});let{transient:i,pinning:a}=this.#x(t);if(this.#n||=!i,this.#y(e,new Z(`Encrypt worker degraded to inline.`)),this.#S(n,i,a),this.#o===void 0){let e=(async()=>{let e=this.#e.createInlineClient();return await e.init(),e})().catch(t=>{throw this.#o===e&&(this.#o=void 0),this.#e.logger.warnAlways(`Encrypt inline fallback failed to initialize: ${t instanceof Error?t.message:String(t)}`),t});this.#o=e}return this.#o}#x(e){let t=e instanceof Z&&e.crashed&&this.#r.count<2;return{transient:t,pinning:!t&&!this.#n}}#S(e,t,n){if(!n&&this.#r.warnedFor===this.#r.count)return;this.#r={...this.#r,warnedFor:this.#r.count};let r=t?`in-flight encryption falls back`:`encryption falls back`;this.#e.logger.warnAlways(`Encrypt offload unavailable, ${r} to the calling thread: ${e}`)}},de=class{#e;#t;#n;#r;#i;#a;#o;constructor(e){this.#e=e.chain;let{timeout:t,debug:n,batchRpcCalls:r,moduleVersions:i,fheEncryptionKey:a}=e.options??{},o=this.#e.auth?me(this.#e.auth):void 0,u={publicClient:s({transport:typeof this.#e.network==`string`?l(this.#e.network):c(this.#e.network)}),chain:m(this.#e),options:{batchRpcCalls:r,moduleVersions:i,fheEncryptionKey:a}};this.#i={...o!==void 0&&{auth:o},...t!==void 0&&{timeout:t},...n!==void 0&&{debug:n}},this.#a=e.telemetry;let f=()=>this.#t.fetchFheEncryptionKeyBytes({options:this.#c(void 0)}),h=e=>({init:async()=>{await f(),await e.init()},encryptValue:t=>e.encryptValue(t),encryptValues:t=>e.encryptValues(t),fetchFheEncryptionKeyBytes:t=>e.fetchFheEncryptionKeyBytes(t)});e.cleartext?(this.#t=ne(u),this.#n=re(u),this.#r=h(p(u))):(this.#t=ee(u),this.#n=te(u),this.#r=this.#s(e,u,{prefetchKey:f,createInlineClient:()=>h(d(u))}))}#s(e,t,n){let r=e.offloadEncrypt??!1,i=r===!0,o=typeof Worker==`function`&&(e.offloadWorker!==void 0||!0);if(r===!1||!(i||o))return n.createInlineClient();let s=a(),c=pe(s);if(c!==void 0&&!i)return e.logger.warnAlways(`Encryption runs on the calling thread: ${c}.`),n.createInlineClient();let l=new ue({initPayload:{chain:t.chain,clientOptions:t.options,runtime:s??{}},network:this.#e.network,prefetchKey:n.prefetchKey,createInlineClient:n.createInlineClient,logger:e.logger,timeouts:e.offloadTimeouts??Y,workerSource:e.offloadWorker,blockedReason:c,strict:i});return{init:()=>l.init(),encryptValue:e=>l.encryptValue(e),encryptValues:e=>l.encryptValues(e),fetchFheEncryptionKeyBytes:e=>this.#t.fetchFheEncryptionKeyBytes(e),dispose:()=>l.dispose()}}get chain(){return this.#e}#c(e){let{operation:t,...n}={...this.#i,...e};return this.#a===void 0?n:{...n,headers:{...n.headers,...o(this.#a,t)}}}#l=()=>(this.#o??=this.#r.init().catch(e=>{throw this.#o=void 0,e}),this.#o);dispose=()=>{this.#o=void 0,this.#r.dispose?.()};decryptPublicValue=async e=>(await this.#t.init(),this.#t.decryptPublicValue({...e,options:this.#c(e.options)}));decryptPublicValues=async e=>(await this.#t.init(),this.#t.decryptPublicValues({...e,options:this.#c(e.options)}));decryptPublicValuesWithSignatures=async e=>(await this.#t.init(),this.#t.decryptPublicValuesWithSignatures({...e,options:this.#c(e.options)}));encryptValue=async e=>(await this.#l(),this.#r.encryptValue({...e,options:this.#c(e.options)}));encryptValues=async e=>(await this.#l(),this.#r.encryptValues({...e,options:this.#c(e.options)}));decryptValue=async e=>(await this.#n.init(),this.#n.decryptValue({...e,options:this.#c(e.options)}));decryptValues=async e=>(await this.#n.init(),this.#n.decryptValues({...e,options:this.#c(e.options)}));decryptValuesFromPairs=async e=>(await this.#n.init(),this.#n.decryptValuesFromPairs({...e,options:this.#c(e.options)}));fetchFheEncryptionKeyBytes=async e=>(await this.#t.init(),this.#t.fetchFheEncryptionKeyBytes({...e,options:this.#c(e?.options)}));signDecryptionPermit=async e=>(await this.#t.init(),this.#t.signDecryptionPermit(e));createUnsignedLegacyDecryptionPermitEip712=e=>u(this.#t,e);serializeTransportKeyPair=e=>this.#n.serializeTransportKeyPair(e);serializeSignedDecryptionPermit=e=>this.#t.serializeSignedDecryptionPermit(e);parseTransportKeyPair=async e=>(await this.#n.init(),this.#n.parseTransportKeyPair(e));parseSignedDecryptionPermit=async e=>{await this.#t.init();let{serializedPermit:t}=e;return this.#t.parseSignedDecryptionPermit({...e,serializedPermit:{...t,signature:fe(t.signature)}})};generateTransportKeyPair=async()=>(await this.#n.init(),this.#n.generateTransportKeyPair())};function fe(e){if(e.length!==132)return e;let t=parseInt(e.slice(130),16);return t!==0&&t!==1?e:`${e.slice(0,130)}${t===0?`1b`:`1c`}`}function pe(e){if(i())return`a runtime locateFile cannot cross the encrypt worker boundary`;if(e===void 0&&f())return`a runtime config set outside createConfig cannot be replicated in the encrypt worker realm`}function me(t){let n=t.__type;switch(n){case`ApiKeyHeader`:return{type:n,value:t.value,header:t.header};case`ApiKeyCookie`:return{type:n,value:t.value,cookie:t.cookie};case`BearerToken`:return{type:n,token:t.token};default:throw new e(`Unknown auth type: ${String(n)}`)}}export{Y as n,de as t};
|
|
8
|
+
//# sourceMappingURL=fhevm-relayer-DXLb4mIw.js.map
|