@zama-fhe/sdk 3.7.1 → 3.7.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/query/token-metadata.ts","../../../src/query/is-confidential.ts","../../../src/query/total-supply.ts","../../../src/query/wrapper-discovery.ts","../../../src/query/underlying-allowance.ts","../../../src/query/pending-unshield.ts","../../../src/query/confidential-is-operator.ts","../../../src/query/confidential-balance.ts","../../../src/query/confidential-balances.ts","../../../src/query/wrappers-registry.ts","../../../src/query/shield.ts","../../../src/query/transfer.ts","../../../src/query/transfer-and-call.ts","../../../src/query/transfer-from.ts","../../../src/query/transfer-from-and-call.ts","../../../src/query/set-operator.ts","../../../src/query/approve-underlying.ts","../../../src/query/unshield.ts","../../../src/query/unshield-all.ts","../../../src/query/resume-unshield.ts","../../../src/query/unwrap.ts","../../../src/query/wrap.ts","../../../src/query/unwrap-all.ts","../../../src/query/finalize-unwrap.ts","../../../src/query/encrypt.ts","../../../src/query/delegated-decrypt.ts","../../../src/query/public-decrypt.ts","../../../src/query/grant-permit.ts","../../../src/query/prepare-permit.ts","../../../src/query/batch-prepare-permits.ts","../../../src/query/register-permit.ts","../../../src/query/batch-register-permits.ts","../../../src/query/has-permit.ts","../../../src/query/revoke-permits.ts","../../../src/query/clear-credentials.ts","../../../src/query/delegate-decryption.ts","../../../src/query/user-decrypt.ts","../../../src/query/decrypt-balance-as.ts","../../../src/query/batch-decrypt-balances-as.ts","../../../src/query/revoke-delegation.ts","../../../src/query/delegation-status.ts"],"sourcesContent":["import { decimalsContract, nameContract, symbolContract } from \"../contracts\";\n\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** ERC-20 token metadata returned by {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadata {\n /** Human-readable token name. */\n name: string;\n /** Token ticker symbol. */\n symbol: string;\n /** Number of decimals the token uses. */\n decimals: number;\n}\n\n/** Configuration for {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadataQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading an ERC-20 token's name, symbol, and decimals. */\nexport function tokenMetadataQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TokenMetadataQueryConfig,\n): QueryFactoryOptions<\n TokenMetadata,\n Error,\n TokenMetadata,\n ReturnType<typeof zamaQueryKeys.tokenMetadata.token>\n> {\n const queryKey = zamaQueryKeys.tokenMetadata.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n const [name, symbol, decimals] = await Promise.all([\n sdk.provider.readContract(nameContract(keyTokenAddress)),\n sdk.provider.readContract(symbolContract(keyTokenAddress)),\n sdk.provider.readContract(decimalsContract(keyTokenAddress)),\n ]);\n return { name, symbol, decimals };\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import { isConfidentialTokenContract, isConfidentialWrapperContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { isContractCallError } from \"../utils\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link isConfidentialQueryOptions} and {@link isWrapperQueryOptions}. */\nexport interface IsConfidentialQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading whether a token address implements the confidential (ERC-7984) token interface. */\nexport function isConfidentialQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.isConfidential.token>\n> {\n const queryKey = zamaQueryKeys.isConfidential.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialTokenContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n\n/** Builds TanStack Query options for reading whether a token address is a confidential wrapper (ERC-7984 wrapper) contract. */\nexport function isWrapperQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isWrapper.token>> {\n const queryKey = zamaQueryKeys.isWrapper.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialWrapperContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import { inferredTotalSupplyContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link totalSupplyQueryOptions}. */\nexport interface TotalSupplyQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading a token's total supply. */\nexport function totalSupplyQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TotalSupplyQueryConfig,\n): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.totalSupply.token>> {\n const queryKey = zamaQueryKeys.totalSupply.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(inferredTotalSupplyContract(keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link wrapperDiscoveryQueryOptions}. */\nexport interface WrapperDiscoveryQueryConfig {\n /**\n * Address of any confidential token you control.\n * Used to scope the query cache key and to gate whether the query\n * is enabled — it does not affect which wrapper the registry returns.\n */\n tokenAddress?: Address;\n /**\n * The ERC-20 token address to discover the confidential wrapper for.\n * The registry is resolved automatically from chain config.\n */\n erc20Address?: Address;\n /**\n * The resolved registry contract address for the current chain.\n * Included in the query key so that switching chains invalidates\n * stale cached results. Pass `undefined` when the chain ID is not\n * yet known — the query will be disabled.\n */\n registryAddress?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for discovering the confidential wrapper address for a given ERC-20 token (resolves to `null` when none is registered). */\nexport function wrapperDiscoveryQueryOptions(\n registry: WrappersRegistry,\n config: WrapperDiscoveryQueryConfig,\n): QueryFactoryOptions<\n Address | null,\n Error,\n Address | null,\n ReturnType<typeof zamaQueryKeys.wrapperDiscovery.token>\n> {\n const queryKey = zamaQueryKeys.wrapperDiscovery.token(\n config.tokenAddress,\n config.erc20Address,\n config.registryAddress,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { erc20Address }] = context.queryKey;\n assertNonNullable(erc20Address, \"wrapperDiscoveryQueryOptions: erc20Address\");\n const result = await registry.getConfidentialToken(erc20Address);\n return result ? result.confidentialTokenAddress : null;\n },\n staleTime: Infinity,\n enabled:\n Boolean(config.tokenAddress && config.erc20Address && config.registryAddress) &&\n config.query?.enabled !== false,\n };\n}\n","import { allowanceContract, underlyingContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link underlyingAllowanceQueryOptions}. */\nexport interface UnderlyingAllowanceQueryConfig {\n /** Owner whose underlying-token allowance to read; the query stays disabled until provided. */\n owner?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading the ERC-20 allowance the owner has granted a confidential wrapper on its underlying token. */\nexport function underlyingAllowanceQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config: UnderlyingAllowanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.underlyingAllowance.scope>\n> {\n const ownerKey = config.owner;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.underlyingAllowance.scope(tokenAddress, ownerKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, owner: keyOwner }] = context.queryKey;\n assertNonNullable(keyOwner, \"underlyingAllowanceQueryOptions: owner\");\n const underlying = await sdk.provider.readContract(underlyingContract(keyTokenAddress));\n return sdk.provider.readContract(allowanceContract(underlying, keyOwner, keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: Boolean(ownerKey) && queryEnabled,\n };\n}\n","import type { Address, Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link pendingUnshieldQueryOptions}. */\nexport interface PendingUnshieldQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for reading the unwrap tx hash of an unshield that was\n * interrupted between its two phases (returns `null` if none is pending).\n *\n * Backed by {@link ZamaSDK} storage via `WrappedToken.getPendingUnshield()`.\n * `staleTime: 0` so the value reflects storage on mount; the unshield/unwrap\n * mutations also invalidate this key on success.\n */\nexport function pendingUnshieldQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: PendingUnshieldQueryConfig,\n): QueryFactoryOptions<\n Hex | null,\n Error,\n Hex | null,\n ReturnType<typeof zamaQueryKeys.pendingUnshield.token>\n> {\n const queryKey = zamaQueryKeys.pendingUnshield.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n return sdk.createWrappedToken(keyTokenAddress).getPendingUnshield();\n },\n staleTime: 0,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import { isOperatorContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link confidentialIsOperatorQueryOptions}. */\nexport interface ConfidentialIsOperatorQueryConfig {\n /** Token holder whose operator authorization to check; the query stays disabled until provided. */\n holder?: Address;\n /** Spender address to check for operator authorization; the query stays disabled until provided. */\n spender?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading whether a spender is an authorized operator of a holder on a confidential token. */\nexport function confidentialIsOperatorQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address | undefined,\n config: ConfidentialIsOperatorQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.confidentialIsOperator.scope>\n> {\n const holderKey = config.holder;\n const spenderKey = config.spender;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.confidentialIsOperator.scope(tokenAddress, holderKey, spenderKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, holder: keyHolder, spender: keySpender }] =\n context.queryKey;\n assertNonNullable(keyTokenAddress, \"confidentialIsOperatorQueryOptions: tokenAddress\");\n assertNonNullable(keyHolder, \"confidentialIsOperatorQueryOptions: holder\");\n assertNonNullable(keySpender, \"confidentialIsOperatorQueryOptions: spender\");\n return sdk.provider.readContract(isOperatorContract(keyTokenAddress, keyHolder, keySpender));\n },\n staleTime: 30_000,\n enabled: Boolean(tokenAddress && holderKey && spenderKey) && queryEnabled,\n };\n}\n","import type { Address } from \"viem\";\nimport type { Token } from \"../token\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link confidentialBalanceQueryOptions}. */\nexport interface ConfidentialBalanceQueryConfig {\n /** Address of the confidential token to read the balance of. */\n tokenAddress: Address;\n /** Account whose confidential balance to read; the query stays disabled until provided. */\n account?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Query options for a single confidential token balance. Auto-gated on `account`. */\nexport function confidentialBalanceQueryOptions(\n token: Token,\n config: ConfidentialBalanceQueryConfig,\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>\n> {\n const queryOpts = config.query ?? {};\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalance.owner(\n config.tokenAddress,\n config.account,\n signerContext.walletAccount,\n ),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n assertNonNullable(keyOwner, \"confidentialBalanceQueryOptions: owner\");\n return token.balanceOf(keyOwner);\n },\n enabled:\n Boolean(config.account) &&\n signerContext.walletAccount !== undefined &&\n queryOpts?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport { Token, type BatchBalancesResult } from \"../token/token\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link confidentialBalancesQueryOptions}. */\nexport interface ConfidentialBalancesQueryConfig {\n /** Account whose confidential balances to read; the query stays disabled until provided. */\n account?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading the confidential balances of several tokens for one account in a single batch. */\nexport function confidentialBalancesQueryOptions(\n tokens: Token[],\n config?: ConfidentialBalancesQueryConfig,\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<\n BatchBalancesResult,\n Error,\n BatchBalancesResult,\n ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>\n> {\n const accountKey = config?.account;\n const walletAccount = signerContext.walletAccount;\n const queryOpts = config?.query ?? {};\n const tokenAddresses = tokens.map((token) => token.address);\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalances.tokens(tokenAddresses, accountKey, walletAccount),\n queryFn: async (signerContextQuery) => {\n const [, { owner: keyOwner }] = signerContextQuery.queryKey;\n assertNonNullable(keyOwner, \"confidentialBalancesQueryOptions: owner\");\n return Token.batchBalancesOf(tokens, keyOwner);\n },\n enabled:\n Boolean(accountKey) &&\n tokens.length > 0 &&\n walletAccount !== undefined &&\n queryOpts?.enabled !== false,\n };\n}\n","import { type Address, zeroAddress } from \"viem\";\nimport {\n getTokenPairsContract,\n getTokenPairsLengthContract,\n getTokenPairsSliceContract,\n getTokenPairContract,\n getConfidentialTokenAddressContract,\n getTokenAddressContract,\n isConfidentialTokenValidContract,\n} from \"../contracts\";\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"../contracts/wrappers-registry\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Base configuration shared by the wrappers-registry query option factories. */\nexport interface WrappersRegistryQueryConfig {\n /** Registry contract address for the current chain; used as a query key discriminator. */\n registryAddress: Address | undefined;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading all token wrapper pairs registered in the wrappers registry. */\nexport function tokenPairsQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairs(config.registryAddress ?? zeroAddress);\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsContract(registryAddress));\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link confidentialTokenAddressQueryOptions}. */\nexport interface ConfidentialTokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n /** Underlying ERC-20 token address whose confidential counterpart to look up. */\n tokenAddress?: Address;\n}\n\n/** Builds TanStack Query options for reading the confidential token address registered for a given underlying ERC-20 token. */\nexport function confidentialTokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: ConfidentialTokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.confidentialTokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.tokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.confidentialTokenAddress(\n config.registryAddress ?? zeroAddress,\n config.tokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, tokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link tokenAddressQueryOptions}. */\nexport interface TokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n /** Confidential token address whose underlying ERC-20 counterpart to look up. */\n confidentialTokenAddress?: Address;\n}\n\n/** Builds TanStack Query options for reading the underlying ERC-20 token address registered for a given confidential token. */\nexport function tokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: TokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenAddress(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenAddressContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Builds TanStack Query options for reading the total number of token wrapper pairs in the registry. */\nexport function tokenPairsLengthQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsLength>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsLength(\n config.registryAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsLengthContract(registryAddress));\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link tokenPairsSliceQueryOptions}. */\nexport interface TokenPairsSliceQueryConfig extends WrappersRegistryQueryConfig {\n /** Zero-based index of the first pair in the slice (inclusive). */\n fromIndex?: bigint;\n /** Index bounding the end of the slice. */\n toIndex?: bigint;\n}\n\n/** Builds TanStack Query options for reading a contiguous slice of the registry's token wrapper pairs. */\nexport function tokenPairsSliceQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairsSliceQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsSlice>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.fromIndex !== undefined &&\n config.toIndex !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsSlice(\n config.registryAddress ?? zeroAddress,\n String(config.fromIndex ?? 0n),\n String(config.toIndex ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, fromIndex, toIndex }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenPairsSliceContract(registryAddress, BigInt(fromIndex), BigInt(toIndex)),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link tokenPairQueryOptions}. */\nexport interface TokenPairQueryConfig extends WrappersRegistryQueryConfig {\n /** Zero-based index of the token wrapper pair to read. */\n index?: bigint;\n}\n\n/** Builds TanStack Query options for reading a single token wrapper pair by its index in the registry. */\nexport function tokenPairQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairQueryConfig,\n): QueryFactoryOptions<\n TokenWrapperPair,\n Error,\n TokenWrapperPair,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPair>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.index !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPair(\n config.registryAddress ?? zeroAddress,\n String(config.index ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, index }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairContract(registryAddress, BigInt(index)));\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link isConfidentialTokenValidQueryOptions}. */\nexport interface IsConfidentialTokenValidQueryConfig extends WrappersRegistryQueryConfig {\n /** Confidential token address to validate against the registry. */\n confidentialTokenAddress?: Address;\n}\n\n/** Builds TanStack Query options for checking whether a confidential token is registered and valid in the registry. */\nexport function isConfidentialTokenValidQueryOptions(\n sdk: ZamaSDK,\n config: IsConfidentialTokenValidQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link listPairsQueryOptions}. */\nexport interface ListPairsQueryConfig {\n /**\n * The registry address for this chain — used as a query key discriminator.\n * The registry instance already knows how to resolve the address for the\n * current chain; this field just keeps the TanStack Query cache isolated\n * per registry contract.\n */\n registryAddress: Address | undefined;\n /** 1-based page number to fetch; defaults to `1`. */\n page?: number;\n /** Number of pairs per page; defaults to `100`. */\n pageSize?: number;\n /** When `true`, resolve each pair's on-chain metadata; defaults to `false`. */\n metadata?: boolean;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for paginated listing of token wrapper pairs.\n *\n * Accepts a {@link WrappersRegistry} instance rather than a raw provider so that the\n * class-level TTL cache is shared across multiple `queryFn` executions. Pass\n * `sdk.registry` (the ZamaSDK lazy singleton) to ensure a single shared cache.\n */\nexport function listPairsQueryOptions(\n registry: WrappersRegistry,\n config: ListPairsQueryConfig,\n): QueryFactoryOptions<\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n Error,\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.listPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.listPairs(\n config.registryAddress ?? zeroAddress,\n config.page ?? 1,\n config.pageSize ?? 100,\n config.metadata ?? false,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { page, pageSize, metadata }] = context.queryKey;\n return registry.listPairs({ page, pageSize, metadata });\n },\n // Use the registry's own TTL so TanStack Query and the class-level cache\n // operate under the same freshness contract.\n staleTime: registry.ttlMs,\n enabled,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappedToken } from \"../token/wrapped-token\";\nimport type { ShieldOptions, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link shieldMutationOptions}. */\nexport interface ShieldParams extends ShieldOptions {\n /** Amount of the public ERC-20 to shield, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.shield | shielding} a public ERC-20 into its confidential form. @see {@link ShieldParams} */\nexport function shieldMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.shield\", Address], ShieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.shield\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.shield(amount, rest),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferMutationOptions}. */\nexport interface ConfidentialTransferParams extends TransferOptions {\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransfer | transferring} confidential tokens. @see {@link ConfidentialTransferParams} */\nexport function confidentialTransferMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransfer\", Address],\n ConfidentialTransferParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransfer\", token.address] as const,\n mutationFn: async ({ to, amount, ...options }) =>\n token.confidentialTransfer(to, amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link confidentialTransferAndCallMutationOptions}. */\nexport interface ConfidentialTransferAndCallParams extends TransferOptions {\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n /** Opaque bytes forwarded to the recipient's ERC-7984 receiver hook. */\n data: Hex;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransferAndCall | transferring} confidential tokens and invoking the recipient's receiver hook. @see {@link ConfidentialTransferAndCallParams} */\nexport function confidentialTransferAndCallMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferAndCall\", Address],\n ConfidentialTransferAndCallParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferAndCall\", token.address] as const,\n mutationFn: async ({ to, amount, data, ...options }) =>\n token.confidentialTransferAndCall(to, amount, data, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromMutationOptions}. */\nexport interface ConfidentialTransferFromParams {\n /** Address to transfer from. */\n from: Address;\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransferFrom | transferring} confidential tokens from another account (operator flow). @see {@link ConfidentialTransferFromParams} */\nexport function confidentialTransferFromMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFrom\", Address],\n ConfidentialTransferFromParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFrom\", token.address] as const,\n mutationFn: async ({ from, to, amount, callbacks }) =>\n token.confidentialTransferFrom(from, to, amount, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromAndCallMutationOptions}. */\nexport interface ConfidentialTransferFromAndCallParams {\n /** Address to transfer from. */\n from: Address;\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n /** Opaque bytes forwarded to the recipient's ERC-7984 receiver hook. */\n data: Hex;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransferFromAndCall | transferring} confidential tokens from another account and invoking the recipient's receiver hook. @see {@link ConfidentialTransferFromAndCallParams} */\nexport function confidentialTransferFromAndCallMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFromAndCall\", Address],\n ConfidentialTransferFromAndCallParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFromAndCall\", token.address] as const,\n mutationFn: async ({ from, to, amount, data, callbacks }) =>\n token.confidentialTransferFromAndCall(from, to, amount, data, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialSetOperatorMutationOptions}. */\nexport interface ConfidentialSetOperatorParams {\n /** Operator address to authorize. */\n operator: Address;\n /** Unix timestamp (seconds) when the operator authorization expires; defaults to one hour from now. */\n until?: number;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.setOperator | authorizing} an operator on a confidential token. @see {@link ConfidentialSetOperatorParams} */\nexport function confidentialSetOperatorMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialSetOperator\", Address],\n ConfidentialSetOperatorParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialSetOperator\", token.address] as const,\n mutationFn: async ({ operator, until }) => token.setOperator(operator, until),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link approveUnderlyingMutationOptions}. */\nexport interface ApproveUnderlyingParams {\n /** Amount of the underlying ERC-20 to approve, in its base units; omit for a max approval. */\n amount?: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.approveUnderlying | approving} the wrapper to spend the underlying ERC-20. @see {@link ApproveUnderlyingParams} */\nexport function approveUnderlyingMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.approveUnderlying\", Address],\n ApproveUnderlyingParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.approveUnderlying\", token.address] as const,\n mutationFn: async ({ amount }) => token.approveUnderlying(amount),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, UnshieldOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldMutationOptions}. */\nexport interface UnshieldParams extends UnshieldOptions {\n /** Amount of tokens to unshield, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unshield | unshielding} a confidential token back into its public ERC-20. @see {@link UnshieldParams} */\nexport function unshieldMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.unshield\", Address], UnshieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unshield\", token.address] as const,\n mutationFn: async ({ amount, ...options }) => token.unshield(amount, options),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldAllMutationOptions}. */\nexport interface UnshieldAllParams extends UnshieldCallbacks {}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unshieldAll | unshielding} the entire confidential balance back into the public ERC-20. @see {@link UnshieldAllParams} */\nexport function unshieldAllMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.unshieldAll\", Address],\n UnshieldAllParams | void,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.unshieldAll\", token.address] as const,\n mutationFn: async (params) => token.unshieldAll(params || undefined),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link resumeUnshieldMutationOptions}. */\nexport interface ResumeUnshieldParams extends UnshieldCallbacks {\n /** Hash of the earlier unwrap request transaction to resume from. */\n unwrapTxHash: Hex;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.resumeUnshield | resuming} an interrupted unshield from its unwrap request transaction. @see {@link ResumeUnshieldParams} */\nexport function resumeUnshieldMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.resumeUnshield\", Address],\n ResumeUnshieldParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.resumeUnshield\", token.address] as const,\n mutationFn: async ({ unwrapTxHash, ...callbacks }) =>\n token.resumeUnshield(unwrapTxHash, callbacks),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { UnwrapResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unwrapMutationOptions}. */\nexport interface UnwrapParams {\n /** Amount of tokens to unwrap, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unwrap | unwrapping} a confidential token (request phase of the two-phase unwrap). @see {@link UnwrapParams} */\nexport function unwrapMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.unwrap\", Address], UnwrapParams, UnwrapResult> {\n return {\n mutationKey: [\"zama.unwrap\", token.address] as const,\n mutationFn: async ({ amount }) => token.unwrap(amount),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, WrapOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link wrapMutationOptions}. */\nexport interface WrapParams extends WrapOptions {\n /** Amount of the public ERC-20 to wrap, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.wrap | wrapping} a public ERC-20 into its confidential form. @see {@link WrapParams} */\nexport function wrapMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.wrap\", Address], WrapParams, TransactionResult> {\n return {\n mutationKey: [\"zama.wrap\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.wrap(amount, rest),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { UnwrapResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unwrapAll | unwrapping} the entire confidential balance. */\nexport function unwrapAllMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.unwrapAll\", Address], void, UnwrapResult> {\n return {\n mutationKey: [\"zama.unwrapAll\", token.address] as const,\n mutationFn: async () => token.unwrapAll(),\n };\n}\n","import type { EncryptedValue } from \"../relayer/types\";\nimport type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n/** Variables for {@link finalizeUnwrapMutationOptions}. */\nexport type FinalizeUnwrapParams = {\n /** Identifier from an `UnwrapRequested` event. */\n unwrapRequestId: EncryptedValue;\n};\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.finalizeUnwrap | finalizing} a previously requested unwrap. @see {@link FinalizeUnwrapParams} */\nexport function finalizeUnwrapMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.finalizeUnwrap\", Address],\n FinalizeUnwrapParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.finalizeUnwrap\", token.address] as const,\n mutationFn: async ({ unwrapRequestId }) => token.finalizeUnwrap(unwrapRequestId),\n };\n}\n","import type { EncryptParams } from \"../node\";\nimport type { EncryptResult } from \"../relayer/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link ZamaSDK.encrypt | encrypting} plaintext inputs into an encrypted payload. */\nexport function encryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.encrypt\"], EncryptParams, EncryptResult> {\n return { mutationKey: [\"zama.encrypt\"], mutationFn: async (params) => sdk.encrypt(params) };\n}\n","import type { Address } from \"viem\";\nimport type { ClearValue, EncryptedValue } from \"../relayer/types\";\nimport type { EncryptedInput } from \"./user-decrypt\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegatedDecryptValuesMutationOptions}. */\nexport interface DelegatedDecryptValuesMutationParams {\n /** Encrypted values (with their contract addresses) to decrypt. */\n encryptedInputs: EncryptedInput[];\n /** Address of the account that delegated decryption rights to the connected wallet. */\n delegatorAddress: Address;\n}\n\n/** Builds TanStack Query mutation options for {@link Decryption.delegatedDecryptValues | decrypting} encrypted values via delegated decryption credentials. @see {@link DelegatedDecryptValuesMutationParams} */\nexport function delegatedDecryptValuesMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.delegatedDecryptValues\"],\n DelegatedDecryptValuesMutationParams,\n Readonly<Record<EncryptedValue, ClearValue>>\n> {\n return {\n mutationKey: [\"zama.delegatedDecryptValues\"],\n mutationFn: async (params) =>\n sdk.decryption.delegatedDecryptValues(params.encryptedInputs, params.delegatorAddress),\n };\n}\n","import type { ClearValue, EncryptedValue, DecryptPublicValuesResult } from \"../relayer/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\n/** Builds TanStack Query mutation options for {@link Decryption.decryptPublicValues | publicly decrypting} encrypted values, caching each clear result. */\nexport function decryptPublicValuesMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.decryptPublicValues\"],\n EncryptedValue[],\n DecryptPublicValuesResult\n> {\n return {\n mutationKey: [\"zama.decryptPublicValues\"],\n mutationFn: async (handles) => sdk.decryption.decryptPublicValues(handles),\n onSuccess: (data, _variables, _onMutateResult, context) => {\n for (const [handle, value] of Object.entries(data.clearValues) as [\n EncryptedValue,\n ClearValue,\n ][]) {\n context.client.setQueryData(zamaQueryKeys.decryption.encryptedValue(handle), value);\n }\n },\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Permits.grantPermit | granting} decryption permits for the given contract addresses. */\nexport function grantPermitMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.grantPermit\"], Address[], void> {\n return {\n mutationKey: [\"zama.grantPermit\"],\n mutationFn: (contractAddresses) => sdk.permits.grantPermit(contractAddresses),\n };\n}\n","import type { PreparedPermit, PreparePermitRequest } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Offline.preparePermit | preparing} an offline decryption permit. */\nexport function preparePermitMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.preparePermit\"], PreparePermitRequest, PreparedPermit> {\n return {\n mutationKey: [\"zama.preparePermit\"],\n mutationFn: (request) => sdk.offline.preparePermit(request),\n };\n}\n","import type { PreparedPermit, PreparePermitRequest } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Offline.batchPreparePermits | preparing} a batch of offline decryption permits. */\nexport function batchPreparePermitsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.batchPreparePermits\"],\n PreparePermitRequest,\n PreparedPermit[]\n> {\n return {\n mutationKey: [\"zama.batchPreparePermits\"],\n mutationFn: (request) => sdk.offline.batchPreparePermits(request),\n };\n}\n","import type { SignedPreparedPermit } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Parameters for {@link registerPermitMutationOptions}. */\nexport type RegisterPermitParams = SignedPreparedPermit;\n\n/** Builds TanStack Query mutation options for {@link Permits.registerPermit | registering} a signed offline permit. */\nexport function registerPermitMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.registerPermit\"], RegisterPermitParams, void> {\n return {\n mutationKey: [\"zama.registerPermit\"],\n mutationFn: ({ prepared, signature }) => sdk.permits.registerPermit(prepared, signature),\n };\n}\n","import type { SignedPreparedPermit } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Permits.batchRegisterPermits | registering} a list of signed offline permits. */\nexport function batchRegisterPermitsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.batchRegisterPermits\"],\n readonly SignedPreparedPermit[],\n void\n> {\n return {\n mutationKey: [\"zama.batchRegisterPermits\"],\n mutationFn: (permits) => sdk.permits.batchRegisterPermits(permits),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link hasPermitQueryOptions}. */\nexport interface HasPermitQueryConfig {\n /** Contract addresses to check credentials against. */\n contractAddresses: Address[];\n /**\n * Standard TanStack query options. `hasPermit` intentionally overrides cache\n * timing because permit state is wallet-local, not server state: every fetch\n * should read the SDK credential service directly.\n */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading whether the connected wallet holds a valid decryption permit for the given contracts. */\nexport function hasPermitQueryOptions(\n sdk: ZamaSDK,\n config: HasPermitQueryConfig,\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.hasPermit.scope>> {\n const callerEnabled = config.query?.enabled !== false;\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey: zamaQueryKeys.hasPermit.scope(config.contractAddresses, signerContext.walletAccount),\n queryFn: (context) => {\n const [, { contractAddresses }] = context.queryKey;\n return sdk.permits.hasPermit(contractAddresses as Address[]);\n },\n staleTime: 0,\n gcTime: 0,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: false,\n enabled:\n callerEnabled &&\n signerContext.walletAccount !== undefined &&\n config.contractAddresses.length > 0,\n } as const;\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** TanStack Query mutation factory for {@link Permits.revokePermits}. */\nexport function revokePermitsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revokePermits\"], Address[] | void, void> {\n return {\n mutationKey: [\"zama.revokePermits\"],\n mutationFn: (contracts: Address[] | void) =>\n contracts === undefined ? sdk.permits.revokePermits() : sdk.permits.revokePermits(contracts),\n };\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** TanStack Query mutation factory for {@link Permits.clear}. */\nexport function clearCredentialsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.clearCredentials\"], void, void> {\n return { mutationKey: [\"zama.clearCredentials\"], mutationFn: () => sdk.permits.clear() };\n}\n","import type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegateDecryptionMutationOptions}. */\nexport interface DelegateDecryptionParams {\n /** Address to grant delegated decryption rights to. */\n delegateAddress: Address;\n /** When the delegation expires; omit for no expiry. */\n expirationDate?: Date;\n}\n\n/** Builds TanStack Query mutation options for {@link Delegations.delegateDecryption | granting} delegated decryption rights on a contract. @see {@link DelegateDecryptionParams} */\nexport function delegateDecryptionMutationOptions(\n sdk: ZamaSDK,\n contractAddress: Address,\n): MutationFactoryOptions<\n readonly [\"zama.delegateDecryption\", Address],\n DelegateDecryptionParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.delegateDecryption\", contractAddress] as const,\n mutationFn: async ({ delegateAddress, expirationDate }) =>\n sdk.delegations.delegateDecryption({ contractAddress, delegateAddress, expirationDate }),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ClearValue, EncryptedValue } from \"../relayer/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\n\n/** A single encrypted value to decrypt, paired with the contract that owns it. */\nexport interface EncryptedInput {\n /** Encrypted handle to decrypt. */\n encryptedValue: EncryptedValue;\n /** Address of the contract the encrypted value belongs to. */\n contractAddress: Address;\n}\n\n/** Decrypted clear values keyed by encrypted handle. */\nexport type DecryptResult = Readonly<Record<EncryptedValue, ClearValue>>;\n\n/** Builds TanStack Query options for decrypting a batch of encrypted handles into their clear values. */\nexport function decryptValuesQueryOptions(\n sdk: ZamaSDK,\n encryptedInputs: EncryptedInput[],\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<\n DecryptResult,\n Error,\n DecryptResult,\n ReturnType<typeof zamaQueryKeys.decryption.encryptedInputs>\n> {\n return {\n queryKey: zamaQueryKeys.decryption.encryptedInputs(\n encryptedInputs,\n signerContext.walletAccount,\n ),\n queryFn: (context) => {\n const [, { encryptedInputs: keyedInputs }] = context.queryKey;\n return sdk.decryption.decryptValues(keyedInputs);\n },\n staleTime: Infinity,\n enabled: encryptedInputs.length > 0 && signerContext.walletAccount !== undefined,\n };\n}\n","import type { Address } from \"viem\";\nimport type { Token } from \"../token/token\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link decryptBalanceAsMutationOptions}. */\nexport interface DecryptBalanceAsParams {\n /** Address of the account that delegated decryption rights to the connected wallet. */\n delegatorAddress: Address;\n /** Account whose on-chain balance to read; defaults to the delegator address. */\n accountAddress?: Address;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.decryptBalanceAs | decrypting} a balance via delegated decryption credentials. @see {@link DecryptBalanceAsParams} */\nexport function decryptBalanceAsMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.decryptBalanceAs\", Address],\n DecryptBalanceAsParams,\n bigint\n> {\n return {\n mutationKey: [\"zama.decryptBalanceAs\", token.address] as const,\n mutationFn: async ({ delegatorAddress, accountAddress }) =>\n token.decryptBalanceAs({ delegatorAddress, accountAddress }),\n };\n}\n","import { Token, type BatchDecryptAsOptions } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link batchDecryptBalancesAsMutationOptions}. */\nexport type BatchDecryptBalancesAsParams = BatchDecryptAsOptions;\n\n/** Builds TanStack Query mutation options for {@link Token.batchDecryptBalancesAs | decrypting} multiple token balances via delegated decryption credentials. @see {@link BatchDecryptBalancesAsParams} */\nexport function batchDecryptBalancesAsMutationOptions(\n tokens: Token[],\n): MutationFactoryOptions<\n readonly [\"zama.batchDecryptBalancesAs\", ...Address[]],\n BatchDecryptBalancesAsParams,\n Map<Address, bigint>\n> {\n return {\n mutationKey: [\"zama.batchDecryptBalancesAs\", ...tokens.map((t) => t.address)] as const,\n mutationFn: async (params) => Token.batchDecryptBalancesAs(tokens, params),\n };\n}\n","import type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link revokeDelegationMutationOptions}. */\nexport interface RevokeDelegationParams {\n /** Address whose delegated decryption rights to revoke. */\n delegateAddress: Address;\n}\n\n/** Builds TanStack Query mutation options for {@link Delegations.revokeDelegation | revoking} delegated decryption rights on a contract. @see {@link RevokeDelegationParams} */\nexport function revokeDelegationMutationOptions(\n sdk: ZamaSDK,\n contractAddress: Address,\n): MutationFactoryOptions<\n readonly [\"zama.revokeDelegation\", Address],\n RevokeDelegationParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.revokeDelegation\", contractAddress] as const,\n mutationFn: async ({ delegateAddress }) =>\n sdk.delegations.revokeDelegation({ contractAddress, delegateAddress }),\n };\n}\n","import type { Address } from \"viem\";\nimport type { DelegationStatus } from \"../services/delegation-service\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils\";\n\nexport type { DelegationStatus } from \"../services/delegation-service\";\n\n/** Configuration for {@link delegationStatusQueryOptions}. */\nexport interface DelegationStatusQueryConfig {\n /** Contract the delegation applies to; pass `undefined` to keep the query disabled. */\n contractAddress: Address | undefined;\n /** Address granting the delegated decryption rights; the query stays disabled until provided. */\n delegatorAddress?: Address;\n /** Address receiving the delegated decryption rights; the query stays disabled until provided. */\n delegateAddress?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading the decryption-delegation status between a delegator and a delegate on a contract. */\nexport function delegationStatusQueryOptions(\n sdk: ZamaSDK,\n config: DelegationStatusQueryConfig,\n): QueryFactoryOptions<\n DelegationStatus,\n Error,\n DelegationStatus,\n ReturnType<typeof zamaQueryKeys.delegationStatus.scope>\n> {\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey: zamaQueryKeys.delegationStatus.scope(\n config.contractAddress,\n config.delegatorAddress,\n config.delegateAddress,\n ),\n queryFn: async (context) => {\n const [, { contractAddress, delegatorAddress, delegateAddress }] = context.queryKey;\n assertNonNullable(contractAddress, \"delegationStatusQueryOptions: contractAddress\");\n assertNonNullable(delegatorAddress, \"delegationStatusQueryOptions: delegatorAddress\");\n assertNonNullable(delegateAddress, \"delegationStatusQueryOptions: delegateAddress\");\n return sdk.delegations.getStatus({ contractAddress, delegatorAddress, delegateAddress });\n },\n enabled:\n Boolean(config.contractAddress && config.delegatorAddress && config.delegateAddress) &&\n config.query?.enabled !== false,\n } as const;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/query/token-metadata.ts","../../../src/query/is-confidential.ts","../../../src/query/total-supply.ts","../../../src/query/wrapper-discovery.ts","../../../src/query/underlying-allowance.ts","../../../src/query/pending-unshield.ts","../../../src/query/confidential-is-operator.ts","../../../src/query/confidential-balance.ts","../../../src/query/confidential-balances.ts","../../../src/query/wrappers-registry.ts","../../../src/query/shield.ts","../../../src/query/transfer.ts","../../../src/query/transfer-and-call.ts","../../../src/query/transfer-from.ts","../../../src/query/transfer-from-and-call.ts","../../../src/query/set-operator.ts","../../../src/query/approve-underlying.ts","../../../src/query/unshield.ts","../../../src/query/unshield-all.ts","../../../src/query/resume-unshield.ts","../../../src/query/unwrap.ts","../../../src/query/wrap.ts","../../../src/query/unwrap-all.ts","../../../src/query/finalize-unwrap.ts","../../../src/query/encrypt.ts","../../../src/query/delegated-decrypt.ts","../../../src/query/public-decrypt.ts","../../../src/query/grant-permit.ts","../../../src/query/prepare-permit.ts","../../../src/query/batch-prepare-permits.ts","../../../src/query/register-permit.ts","../../../src/query/batch-register-permits.ts","../../../src/query/has-permit.ts","../../../src/query/revoke-permits.ts","../../../src/query/clear-credentials.ts","../../../src/query/delegate-decryption.ts","../../../src/query/user-decrypt.ts","../../../src/query/decrypt-balance-as.ts","../../../src/query/batch-decrypt-balances-as.ts","../../../src/query/revoke-delegation.ts","../../../src/query/delegation-status.ts"],"sourcesContent":["import { decimalsContract, nameContract, symbolContract } from \"../contracts\";\n\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** ERC-20 token metadata returned by {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadata {\n /** Human-readable token name. */\n name: string;\n /** Token ticker symbol. */\n symbol: string;\n /** Number of decimals the token uses. */\n decimals: number;\n}\n\n/** Configuration for {@link tokenMetadataQueryOptions}. */\nexport interface TokenMetadataQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading an ERC-20 token's name, symbol, and decimals. */\nexport function tokenMetadataQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TokenMetadataQueryConfig,\n): QueryFactoryOptions<\n TokenMetadata,\n Error,\n TokenMetadata,\n ReturnType<typeof zamaQueryKeys.tokenMetadata.token>\n> {\n const queryKey = zamaQueryKeys.tokenMetadata.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n const [name, symbol, decimals] = await Promise.all([\n sdk.provider.readContract(nameContract(keyTokenAddress)),\n sdk.provider.readContract(symbolContract(keyTokenAddress)),\n sdk.provider.readContract(decimalsContract(keyTokenAddress)),\n ]);\n return { name, symbol, decimals };\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import { isConfidentialTokenContract, isConfidentialWrapperContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { isContractCallError } from \"../utils\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link isConfidentialQueryOptions} and {@link isWrapperQueryOptions}. */\nexport interface IsConfidentialQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading whether a token address implements the confidential (ERC-7984) token interface. */\nexport function isConfidentialQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.isConfidential.token>\n> {\n const queryKey = zamaQueryKeys.isConfidential.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialTokenContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n\n/** Builds TanStack Query options for reading whether a token address is a confidential wrapper (ERC-7984 wrapper) contract. */\nexport function isWrapperQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: IsConfidentialQueryConfig,\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.isWrapper.token>> {\n const queryKey = zamaQueryKeys.isWrapper.token(tokenAddress);\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n try {\n return await sdk.provider.readContract(isConfidentialWrapperContract(keyTokenAddress));\n } catch (err) {\n // Only suppress contract execution reverts (non-ERC-165 contracts).\n // Re-throw network/transport errors so TanStack Query's retry logic applies.\n if (isContractCallError(err)) {\n return false;\n }\n throw err;\n }\n },\n staleTime: Infinity,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import { inferredTotalSupplyContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link totalSupplyQueryOptions}. */\nexport interface TotalSupplyQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading a token's total supply. */\nexport function totalSupplyQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: TotalSupplyQueryConfig,\n): QueryFactoryOptions<bigint, Error, bigint, ReturnType<typeof zamaQueryKeys.totalSupply.token>> {\n const queryKey = zamaQueryKeys.totalSupply.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(inferredTotalSupplyContract(keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link wrapperDiscoveryQueryOptions}. */\nexport interface WrapperDiscoveryQueryConfig {\n /**\n * Address of any confidential token you control.\n * Used to scope the query cache key and to gate whether the query\n * is enabled — it does not affect which wrapper the registry returns.\n */\n tokenAddress?: Address;\n /**\n * The ERC-20 token address to discover the confidential wrapper for.\n * The registry is resolved automatically from chain config.\n */\n erc20Address?: Address;\n /**\n * The resolved registry contract address for the current chain.\n * Included in the query key so that switching chains invalidates\n * stale cached results. Pass `undefined` when the chain ID is not\n * yet known — the query will be disabled.\n */\n registryAddress?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for discovering the confidential wrapper address for a given ERC-20 token (resolves to `null` when none is registered or the registered wrapper has been revoked). */\nexport function wrapperDiscoveryQueryOptions(\n registry: WrappersRegistry,\n config: WrapperDiscoveryQueryConfig,\n): QueryFactoryOptions<\n Address | null,\n Error,\n Address | null,\n ReturnType<typeof zamaQueryKeys.wrapperDiscovery.token>\n> {\n const queryKey = zamaQueryKeys.wrapperDiscovery.token(\n config.tokenAddress,\n config.erc20Address,\n config.registryAddress,\n );\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { erc20Address }] = context.queryKey;\n assertNonNullable(erc20Address, \"wrapperDiscoveryQueryOptions: erc20Address\");\n const result = await registry.getConfidentialToken(erc20Address);\n // A revoked pair keeps its non-zero wrapper address with `isValid: false`.\n return result?.isValid ? result.confidentialTokenAddress : null;\n },\n staleTime: registry.ttlMs,\n enabled:\n Boolean(config.tokenAddress && config.erc20Address && config.registryAddress) &&\n config.query?.enabled !== false,\n };\n}\n","import { allowanceContract, underlyingContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link underlyingAllowanceQueryOptions}. */\nexport interface UnderlyingAllowanceQueryConfig {\n /** Owner whose underlying-token allowance to read; the query stays disabled until provided. */\n owner?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading the ERC-20 allowance the owner has granted a confidential wrapper on its underlying token. */\nexport function underlyingAllowanceQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config: UnderlyingAllowanceQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.underlyingAllowance.scope>\n> {\n const ownerKey = config.owner;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.underlyingAllowance.scope(tokenAddress, ownerKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, owner: keyOwner }] = context.queryKey;\n assertNonNullable(keyOwner, \"underlyingAllowanceQueryOptions: owner\");\n const underlying = await sdk.provider.readContract(underlyingContract(keyTokenAddress));\n return sdk.provider.readContract(allowanceContract(underlying, keyOwner, keyTokenAddress));\n },\n staleTime: 30_000,\n enabled: Boolean(ownerKey) && queryEnabled,\n };\n}\n","import type { Address, Hex } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link pendingUnshieldQueryOptions}. */\nexport interface PendingUnshieldQueryConfig {\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for reading the unwrap tx hash of an unshield that was\n * interrupted between its two phases (returns `null` if none is pending).\n *\n * Backed by {@link ZamaSDK} storage via `WrappedToken.getPendingUnshield()`.\n * `staleTime: 0` so the value reflects storage on mount; the unshield/unwrap\n * mutations also invalidate this key on success.\n */\nexport function pendingUnshieldQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address,\n config?: PendingUnshieldQueryConfig,\n): QueryFactoryOptions<\n Hex | null,\n Error,\n Hex | null,\n ReturnType<typeof zamaQueryKeys.pendingUnshield.token>\n> {\n const queryKey = zamaQueryKeys.pendingUnshield.token(tokenAddress);\n\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress }] = context.queryKey;\n return sdk.createWrappedToken(keyTokenAddress).getPendingUnshield();\n },\n staleTime: 0,\n enabled: config?.query?.enabled !== false,\n };\n}\n","import { isOperatorContract } from \"../contracts\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { Address } from \"viem\";\n\n/** Configuration for {@link confidentialIsOperatorQueryOptions}. */\nexport interface ConfidentialIsOperatorQueryConfig {\n /** Token holder whose operator authorization to check; the query stays disabled until provided. */\n holder?: Address;\n /** Spender address to check for operator authorization; the query stays disabled until provided. */\n spender?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading whether a spender is an authorized operator of a holder on a confidential token. */\nexport function confidentialIsOperatorQueryOptions(\n sdk: ZamaSDK,\n tokenAddress: Address | undefined,\n config: ConfidentialIsOperatorQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.confidentialIsOperator.scope>\n> {\n const holderKey = config.holder;\n const spenderKey = config.spender;\n const queryEnabled = config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.confidentialIsOperator.scope(tokenAddress, holderKey, spenderKey);\n\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { tokenAddress: keyTokenAddress, holder: keyHolder, spender: keySpender }] =\n context.queryKey;\n assertNonNullable(keyTokenAddress, \"confidentialIsOperatorQueryOptions: tokenAddress\");\n assertNonNullable(keyHolder, \"confidentialIsOperatorQueryOptions: holder\");\n assertNonNullable(keySpender, \"confidentialIsOperatorQueryOptions: spender\");\n return sdk.provider.readContract(isOperatorContract(keyTokenAddress, keyHolder, keySpender));\n },\n staleTime: 30_000,\n enabled: Boolean(tokenAddress && holderKey && spenderKey) && queryEnabled,\n };\n}\n","import type { Address } from \"viem\";\nimport type { Token } from \"../token\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link confidentialBalanceQueryOptions}. */\nexport interface ConfidentialBalanceQueryConfig {\n /** Address of the confidential token to read the balance of. */\n tokenAddress: Address;\n /** Account whose confidential balance to read; the query stays disabled until provided. */\n account?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Query options for a single confidential token balance. Auto-gated on `account`. */\nexport function confidentialBalanceQueryOptions(\n token: Token,\n config: ConfidentialBalanceQueryConfig,\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.confidentialBalance.owner>\n> {\n const queryOpts = config.query ?? {};\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalance.owner(\n config.tokenAddress,\n config.account,\n signerContext.walletAccount,\n ),\n queryFn: async (context) => {\n const [, { owner: keyOwner }] = context.queryKey;\n assertNonNullable(keyOwner, \"confidentialBalanceQueryOptions: owner\");\n return token.balanceOf(keyOwner);\n },\n enabled:\n Boolean(config.account) &&\n signerContext.walletAccount !== undefined &&\n queryOpts?.enabled !== false,\n };\n}\n","import type { Address } from \"viem\";\nimport { Token, type BatchBalancesResult } from \"../token/token\";\nimport { assertNonNullable } from \"../utils/assertions\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link confidentialBalancesQueryOptions}. */\nexport interface ConfidentialBalancesQueryConfig {\n /** Account whose confidential balances to read; the query stays disabled until provided. */\n account?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading the confidential balances of several tokens for one account in a single batch. */\nexport function confidentialBalancesQueryOptions(\n tokens: Token[],\n config?: ConfidentialBalancesQueryConfig,\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<\n BatchBalancesResult,\n Error,\n BatchBalancesResult,\n ReturnType<typeof zamaQueryKeys.confidentialBalances.tokens>\n> {\n const accountKey = config?.account;\n const walletAccount = signerContext.walletAccount;\n const queryOpts = config?.query ?? {};\n const tokenAddresses = tokens.map((token) => token.address);\n\n return {\n ...filterQueryOptions(queryOpts),\n queryKey: zamaQueryKeys.confidentialBalances.tokens(tokenAddresses, accountKey, walletAccount),\n queryFn: async (signerContextQuery) => {\n const [, { owner: keyOwner }] = signerContextQuery.queryKey;\n assertNonNullable(keyOwner, \"confidentialBalancesQueryOptions: owner\");\n return Token.batchBalancesOf(tokens, keyOwner);\n },\n enabled:\n Boolean(accountKey) &&\n tokens.length > 0 &&\n walletAccount !== undefined &&\n queryOpts?.enabled !== false,\n };\n}\n","import { type Address, zeroAddress } from \"viem\";\nimport {\n getTokenPairsContract,\n getTokenPairsLengthContract,\n getTokenPairsSliceContract,\n getTokenPairContract,\n getConfidentialTokenAddressContract,\n getTokenAddressContract,\n isConfidentialTokenValidContract,\n} from \"../contracts\";\nimport type {\n TokenWrapperPair,\n TokenWrapperPairWithMetadata,\n PaginatedResult,\n} from \"../contracts/wrappers-registry\";\nimport type { WrappersRegistry } from \"../wrappers-registry\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Base configuration shared by the wrappers-registry query option factories. */\nexport interface WrappersRegistryQueryConfig {\n /** Registry contract address for the current chain; used as a query key discriminator. */\n registryAddress: Address | undefined;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading all token wrapper pairs registered in the wrappers registry. */\nexport function tokenPairsQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairs(config.registryAddress ?? zeroAddress);\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsContract(registryAddress));\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link confidentialTokenAddressQueryOptions}. */\nexport interface ConfidentialTokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n /** Underlying ERC-20 token address whose confidential counterpart to look up. */\n tokenAddress?: Address;\n}\n\n/** Builds TanStack Query options for reading the confidential token address registered for a given underlying ERC-20 token. */\nexport function confidentialTokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: ConfidentialTokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.confidentialTokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.tokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.confidentialTokenAddress(\n config.registryAddress ?? zeroAddress,\n config.tokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, tokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link tokenAddressQueryOptions}. */\nexport interface TokenAddressQueryConfig extends WrappersRegistryQueryConfig {\n /** Confidential token address whose underlying ERC-20 counterpart to look up. */\n confidentialTokenAddress?: Address;\n}\n\n/** Builds TanStack Query options for reading the underlying ERC-20 token address registered for a given confidential token. */\nexport function tokenAddressQueryOptions(\n sdk: ZamaSDK,\n config: TokenAddressQueryConfig,\n): QueryFactoryOptions<\n readonly [boolean, Address],\n Error,\n readonly [boolean, Address],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenAddress>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenAddress(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenAddressContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Builds TanStack Query options for reading the total number of token wrapper pairs in the registry. */\nexport function tokenPairsLengthQueryOptions(\n sdk: ZamaSDK,\n config: WrappersRegistryQueryConfig,\n): QueryFactoryOptions<\n bigint,\n Error,\n bigint,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsLength>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsLength(\n config.registryAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairsLengthContract(registryAddress));\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link tokenPairsSliceQueryOptions}. */\nexport interface TokenPairsSliceQueryConfig extends WrappersRegistryQueryConfig {\n /** Zero-based index of the first pair in the slice (inclusive). */\n fromIndex?: bigint;\n /** Index bounding the end of the slice. */\n toIndex?: bigint;\n}\n\n/** Builds TanStack Query options for reading a contiguous slice of the registry's token wrapper pairs. */\nexport function tokenPairsSliceQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairsSliceQueryConfig,\n): QueryFactoryOptions<\n readonly TokenWrapperPair[],\n Error,\n readonly TokenWrapperPair[],\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPairsSlice>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.fromIndex !== undefined &&\n config.toIndex !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPairsSlice(\n config.registryAddress ?? zeroAddress,\n String(config.fromIndex ?? 0n),\n String(config.toIndex ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, fromIndex, toIndex }] = context.queryKey;\n return sdk.provider.readContract(\n getTokenPairsSliceContract(registryAddress, BigInt(fromIndex), BigInt(toIndex)),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link tokenPairQueryOptions}. */\nexport interface TokenPairQueryConfig extends WrappersRegistryQueryConfig {\n /** Zero-based index of the token wrapper pair to read. */\n index?: bigint;\n}\n\n/** Builds TanStack Query options for reading a single token wrapper pair by its index in the registry. */\nexport function tokenPairQueryOptions(\n sdk: ZamaSDK,\n config: TokenPairQueryConfig,\n): QueryFactoryOptions<\n TokenWrapperPair,\n Error,\n TokenWrapperPair,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.tokenPair>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n config.index !== undefined &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.tokenPair(\n config.registryAddress ?? zeroAddress,\n String(config.index ?? 0n),\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, index }] = context.queryKey;\n return sdk.provider.readContract(getTokenPairContract(registryAddress, BigInt(index)));\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link isConfidentialTokenValidQueryOptions}. */\nexport interface IsConfidentialTokenValidQueryConfig extends WrappersRegistryQueryConfig {\n /** Confidential token address to validate against the registry. */\n confidentialTokenAddress?: Address;\n}\n\n/** Builds TanStack Query options for checking whether a confidential token is registered and valid in the registry. */\nexport function isConfidentialTokenValidQueryOptions(\n sdk: ZamaSDK,\n config: IsConfidentialTokenValidQueryConfig,\n): QueryFactoryOptions<\n boolean,\n Error,\n boolean,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid>\n> {\n const enabled =\n Boolean(config.registryAddress) &&\n Boolean(config.confidentialTokenAddress) &&\n config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.isConfidentialTokenValid(\n config.registryAddress ?? zeroAddress,\n config.confidentialTokenAddress ?? zeroAddress,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { registryAddress, confidentialTokenAddress }] = context.queryKey;\n return sdk.provider.readContract(\n isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n );\n },\n staleTime: sdk.registry.ttlMs,\n enabled,\n };\n}\n\n/** Configuration for {@link listPairsQueryOptions}. */\nexport interface ListPairsQueryConfig {\n /**\n * The registry address for this chain — used as a query key discriminator.\n * The registry instance already knows how to resolve the address for the\n * current chain; this field just keeps the TanStack Query cache isolated\n * per registry contract.\n */\n registryAddress: Address | undefined;\n /** 1-based page number to fetch; defaults to `1`. */\n page?: number;\n /** Number of pairs per page; defaults to `100`. */\n pageSize?: number;\n /** When `true`, resolve each pair's on-chain metadata; defaults to `false`. */\n metadata?: boolean;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/**\n * Query options for paginated listing of token wrapper pairs.\n *\n * Accepts a {@link WrappersRegistry} instance rather than a raw provider so that the\n * class-level TTL cache is shared across multiple `queryFn` executions. Pass\n * `sdk.registry` (the ZamaSDK lazy singleton) to ensure a single shared cache.\n */\nexport function listPairsQueryOptions(\n registry: WrappersRegistry,\n config: ListPairsQueryConfig,\n): QueryFactoryOptions<\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n Error,\n PaginatedResult<TokenWrapperPair | TokenWrapperPairWithMetadata>,\n ReturnType<typeof zamaQueryKeys.wrappersRegistry.listPairs>\n> {\n const enabled = Boolean(config.registryAddress) && config.query?.enabled !== false;\n const queryKey = zamaQueryKeys.wrappersRegistry.listPairs(\n config.registryAddress ?? zeroAddress,\n config.page ?? 1,\n config.pageSize ?? 100,\n config.metadata ?? false,\n );\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey,\n queryFn: async (context) => {\n const [, { page, pageSize, metadata }] = context.queryKey;\n return registry.listPairs({ page, pageSize, metadata });\n },\n // Use the registry's own TTL so TanStack Query and the class-level cache\n // operate under the same freshness contract.\n staleTime: registry.ttlMs,\n enabled,\n };\n}\n","import type { Address } from \"viem\";\nimport type { WrappedToken } from \"../token/wrapped-token\";\nimport type { ShieldOptions, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link shieldMutationOptions}. */\nexport interface ShieldParams extends ShieldOptions {\n /** Amount of the public ERC-20 to shield, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.shield | shielding} a public ERC-20 into its confidential form. @see {@link ShieldParams} */\nexport function shieldMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.shield\", Address], ShieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.shield\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.shield(amount, rest),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferMutationOptions}. */\nexport interface ConfidentialTransferParams extends TransferOptions {\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransfer | transferring} confidential tokens. @see {@link ConfidentialTransferParams} */\nexport function confidentialTransferMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransfer\", Address],\n ConfidentialTransferParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransfer\", token.address] as const,\n mutationFn: async ({ to, amount, ...options }) =>\n token.confidentialTransfer(to, amount, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult, TransferOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link confidentialTransferAndCallMutationOptions}. */\nexport interface ConfidentialTransferAndCallParams extends TransferOptions {\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n /** Opaque bytes forwarded to the recipient's ERC-7984 receiver hook. */\n data: Hex;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransferAndCall | transferring} confidential tokens and invoking the recipient's receiver hook. @see {@link ConfidentialTransferAndCallParams} */\nexport function confidentialTransferAndCallMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferAndCall\", Address],\n ConfidentialTransferAndCallParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferAndCall\", token.address] as const,\n mutationFn: async ({ to, amount, data, ...options }) =>\n token.confidentialTransferAndCall(to, amount, data, options),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromMutationOptions}. */\nexport interface ConfidentialTransferFromParams {\n /** Address to transfer from. */\n from: Address;\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransferFrom | transferring} confidential tokens from another account (operator flow). @see {@link ConfidentialTransferFromParams} */\nexport function confidentialTransferFromMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFrom\", Address],\n ConfidentialTransferFromParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFrom\", token.address] as const,\n mutationFn: async ({ from, to, amount, callbacks }) =>\n token.confidentialTransferFrom(from, to, amount, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransferCallbacks, TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link confidentialTransferFromAndCallMutationOptions}. */\nexport interface ConfidentialTransferFromAndCallParams {\n /** Address to transfer from. */\n from: Address;\n /** Recipient address. */\n to: Address;\n /** Amount of tokens to transfer, in the token's base units. */\n amount: bigint;\n /** Opaque bytes forwarded to the recipient's ERC-7984 receiver hook. */\n data: Hex;\n /** Optional progress callbacks for the multi-step transfer flow. */\n callbacks?: TransferCallbacks;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.confidentialTransferFromAndCall | transferring} confidential tokens from another account and invoking the recipient's receiver hook. @see {@link ConfidentialTransferFromAndCallParams} */\nexport function confidentialTransferFromAndCallMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialTransferFromAndCall\", Address],\n ConfidentialTransferFromAndCallParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialTransferFromAndCall\", token.address] as const,\n mutationFn: async ({ from, to, amount, data, callbacks }) =>\n token.confidentialTransferFromAndCall(from, to, amount, data, callbacks),\n };\n}\n","import type { Token } from \"../token/token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link confidentialSetOperatorMutationOptions}. */\nexport interface ConfidentialSetOperatorParams {\n /** Operator address to authorize. */\n operator: Address;\n /** Unix timestamp (seconds) when the operator authorization expires; defaults to one hour from now. */\n until?: number;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.setOperator | authorizing} an operator on a confidential token. @see {@link ConfidentialSetOperatorParams} */\nexport function confidentialSetOperatorMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.confidentialSetOperator\", Address],\n ConfidentialSetOperatorParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.confidentialSetOperator\", token.address] as const,\n mutationFn: async ({ operator, until }) => token.setOperator(operator, until),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link approveUnderlyingMutationOptions}. */\nexport interface ApproveUnderlyingParams {\n /** Amount of the underlying ERC-20 to approve, in its base units; omit for a max approval. */\n amount?: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.approveUnderlying | approving} the wrapper to spend the underlying ERC-20. @see {@link ApproveUnderlyingParams} */\nexport function approveUnderlyingMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.approveUnderlying\", Address],\n ApproveUnderlyingParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.approveUnderlying\", token.address] as const,\n mutationFn: async ({ amount }) => token.approveUnderlying(amount),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, UnshieldOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldMutationOptions}. */\nexport interface UnshieldParams extends UnshieldOptions {\n /** Amount of tokens to unshield, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unshield | unshielding} a confidential token back into its public ERC-20. @see {@link UnshieldParams} */\nexport function unshieldMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.unshield\", Address], UnshieldParams, TransactionResult> {\n return {\n mutationKey: [\"zama.unshield\", token.address] as const,\n mutationFn: async ({ amount, ...options }) => token.unshield(amount, options),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unshieldAllMutationOptions}. */\nexport interface UnshieldAllParams extends UnshieldCallbacks {}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unshieldAll | unshielding} the entire confidential balance back into the public ERC-20. @see {@link UnshieldAllParams} */\nexport function unshieldAllMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.unshieldAll\", Address],\n UnshieldAllParams | void,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.unshieldAll\", token.address] as const,\n mutationFn: async (params) => token.unshieldAll(params || undefined),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, UnshieldCallbacks } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address, Hex } from \"viem\";\n\n/** Variables for {@link resumeUnshieldMutationOptions}. */\nexport interface ResumeUnshieldParams extends UnshieldCallbacks {\n /** Hash of the earlier unwrap request transaction to resume from. */\n unwrapTxHash: Hex;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.resumeUnshield | resuming} an interrupted unshield from its unwrap request transaction. @see {@link ResumeUnshieldParams} */\nexport function resumeUnshieldMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.resumeUnshield\", Address],\n ResumeUnshieldParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.resumeUnshield\", token.address] as const,\n mutationFn: async ({ unwrapTxHash, ...callbacks }) =>\n token.resumeUnshield(unwrapTxHash, callbacks),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { UnwrapResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link unwrapMutationOptions}. */\nexport interface UnwrapParams {\n /** Amount of tokens to unwrap, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unwrap | unwrapping} a confidential token (request phase of the two-phase unwrap). @see {@link UnwrapParams} */\nexport function unwrapMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.unwrap\", Address], UnwrapParams, UnwrapResult> {\n return {\n mutationKey: [\"zama.unwrap\", token.address] as const,\n mutationFn: async ({ amount }) => token.unwrap(amount),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult, WrapOptions } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Variables for {@link wrapMutationOptions}. */\nexport interface WrapParams extends WrapOptions {\n /** Amount of the public ERC-20 to wrap, in the token's base units. */\n amount: bigint;\n}\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.wrap | wrapping} a public ERC-20 into its confidential form. @see {@link WrapParams} */\nexport function wrapMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.wrap\", Address], WrapParams, TransactionResult> {\n return {\n mutationKey: [\"zama.wrap\", token.address] as const,\n mutationFn: async ({ amount, ...rest }) => token.wrap(amount, rest),\n };\n}\n","import type { WrappedToken } from \"../token/wrapped-token\";\nimport type { UnwrapResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.unwrapAll | unwrapping} the entire confidential balance. */\nexport function unwrapAllMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<readonly [\"zama.unwrapAll\", Address], void, UnwrapResult> {\n return {\n mutationKey: [\"zama.unwrapAll\", token.address] as const,\n mutationFn: async () => token.unwrapAll(),\n };\n}\n","import type { EncryptedValue } from \"../relayer/types\";\nimport type { WrappedToken } from \"../token/wrapped-token\";\nimport type { TransactionResult } from \"../types\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport type { Address } from \"viem\";\n/** Variables for {@link finalizeUnwrapMutationOptions}. */\nexport type FinalizeUnwrapParams = {\n /** Identifier from an `UnwrapRequested` event. */\n unwrapRequestId: EncryptedValue;\n};\n\n/** Builds TanStack Query mutation options for {@link WrappedToken.finalizeUnwrap | finalizing} a previously requested unwrap. @see {@link FinalizeUnwrapParams} */\nexport function finalizeUnwrapMutationOptions(\n token: WrappedToken,\n): MutationFactoryOptions<\n readonly [\"zama.finalizeUnwrap\", Address],\n FinalizeUnwrapParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.finalizeUnwrap\", token.address] as const,\n mutationFn: async ({ unwrapRequestId }) => token.finalizeUnwrap(unwrapRequestId),\n };\n}\n","import type { EncryptParams } from \"../node\";\nimport type { EncryptResult } from \"../relayer/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link ZamaSDK.encrypt | encrypting} plaintext inputs into an encrypted payload. */\nexport function encryptMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.encrypt\"], EncryptParams, EncryptResult> {\n return { mutationKey: [\"zama.encrypt\"], mutationFn: async (params) => sdk.encrypt(params) };\n}\n","import type { Address } from \"viem\";\nimport type { ClearValue, EncryptedValue } from \"../relayer/types\";\nimport type { EncryptedInput } from \"./user-decrypt\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegatedDecryptValuesMutationOptions}. */\nexport interface DelegatedDecryptValuesMutationParams {\n /** Encrypted values (with their contract addresses) to decrypt. */\n encryptedInputs: EncryptedInput[];\n /** Address of the account that delegated decryption rights to the connected wallet. */\n delegatorAddress: Address;\n}\n\n/** Builds TanStack Query mutation options for {@link Decryption.delegatedDecryptValues | decrypting} encrypted values via delegated decryption credentials. @see {@link DelegatedDecryptValuesMutationParams} */\nexport function delegatedDecryptValuesMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.delegatedDecryptValues\"],\n DelegatedDecryptValuesMutationParams,\n Readonly<Record<EncryptedValue, ClearValue>>\n> {\n return {\n mutationKey: [\"zama.delegatedDecryptValues\"],\n mutationFn: async (params) =>\n sdk.decryption.delegatedDecryptValues(params.encryptedInputs, params.delegatorAddress),\n };\n}\n","import type { ClearValue, EncryptedValue, DecryptPublicValuesResult } from \"../relayer/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\n\n/** Builds TanStack Query mutation options for {@link Decryption.decryptPublicValues | publicly decrypting} encrypted values, caching each clear result. */\nexport function decryptPublicValuesMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.decryptPublicValues\"],\n EncryptedValue[],\n DecryptPublicValuesResult\n> {\n return {\n mutationKey: [\"zama.decryptPublicValues\"],\n mutationFn: async (handles) => sdk.decryption.decryptPublicValues(handles),\n onSuccess: (data, _variables, _onMutateResult, context) => {\n for (const [handle, value] of Object.entries(data.clearValues) as [\n EncryptedValue,\n ClearValue,\n ][]) {\n context.client.setQueryData(zamaQueryKeys.decryption.encryptedValue(handle), value);\n }\n },\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Permits.grantPermit | granting} decryption permits for the given contract addresses. */\nexport function grantPermitMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.grantPermit\"], Address[], void> {\n return {\n mutationKey: [\"zama.grantPermit\"],\n mutationFn: (contractAddresses) => sdk.permits.grantPermit(contractAddresses),\n };\n}\n","import type { PreparedPermit, PreparePermitRequest } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Offline.preparePermit | preparing} an offline decryption permit. */\nexport function preparePermitMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.preparePermit\"], PreparePermitRequest, PreparedPermit> {\n return {\n mutationKey: [\"zama.preparePermit\"],\n mutationFn: (request) => sdk.offline.preparePermit(request),\n };\n}\n","import type { PreparedPermit, PreparePermitRequest } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Offline.batchPreparePermits | preparing} a batch of offline decryption permits. */\nexport function batchPreparePermitsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.batchPreparePermits\"],\n PreparePermitRequest,\n PreparedPermit[]\n> {\n return {\n mutationKey: [\"zama.batchPreparePermits\"],\n mutationFn: (request) => sdk.offline.batchPreparePermits(request),\n };\n}\n","import type { SignedPreparedPermit } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Parameters for {@link registerPermitMutationOptions}. */\nexport type RegisterPermitParams = SignedPreparedPermit;\n\n/** Builds TanStack Query mutation options for {@link Permits.registerPermit | registering} a signed offline permit. */\nexport function registerPermitMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.registerPermit\"], RegisterPermitParams, void> {\n return {\n mutationKey: [\"zama.registerPermit\"],\n mutationFn: ({ prepared, signature }) => sdk.permits.registerPermit(prepared, signature),\n };\n}\n","import type { SignedPreparedPermit } from \"../credentials/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Builds TanStack Query mutation options for {@link Permits.batchRegisterPermits | registering} a list of signed offline permits. */\nexport function batchRegisterPermitsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<\n readonly [\"zama.batchRegisterPermits\"],\n readonly SignedPreparedPermit[],\n void\n> {\n return {\n mutationKey: [\"zama.batchRegisterPermits\"],\n mutationFn: (permits) => sdk.permits.batchRegisterPermits(permits),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\nimport { filterQueryOptions } from \"./utils\";\n\n/** Configuration for {@link hasPermitQueryOptions}. */\nexport interface HasPermitQueryConfig {\n /** Contract addresses to check credentials against. */\n contractAddresses: Address[];\n /**\n * Standard TanStack query options. `hasPermit` intentionally overrides cache\n * timing because permit state is wallet-local, not server state: every fetch\n * should read the SDK credential service directly.\n */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading whether the connected wallet holds a valid decryption permit for the given contracts. */\nexport function hasPermitQueryOptions(\n sdk: ZamaSDK,\n config: HasPermitQueryConfig,\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<boolean, Error, boolean, ReturnType<typeof zamaQueryKeys.hasPermit.scope>> {\n const callerEnabled = config.query?.enabled !== false;\n return {\n ...filterQueryOptions(config?.query ?? {}),\n queryKey: zamaQueryKeys.hasPermit.scope(config.contractAddresses, signerContext.walletAccount),\n queryFn: (context) => {\n const [, { contractAddresses }] = context.queryKey;\n return sdk.permits.hasPermit(contractAddresses as Address[]);\n },\n staleTime: 0,\n gcTime: 0,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: false,\n enabled:\n callerEnabled &&\n signerContext.walletAccount !== undefined &&\n config.contractAddresses.length > 0,\n } as const;\n}\n","import type { Address } from \"viem\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** TanStack Query mutation factory for {@link Permits.revokePermits}. */\nexport function revokePermitsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.revokePermits\"], Address[] | void, void> {\n return {\n mutationKey: [\"zama.revokePermits\"],\n mutationFn: (contracts: Address[] | void) =>\n contracts === undefined ? sdk.permits.revokePermits() : sdk.permits.revokePermits(contracts),\n };\n}\n","import type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** TanStack Query mutation factory for {@link Permits.clear}. */\nexport function clearCredentialsMutationOptions(\n sdk: ZamaSDK,\n): MutationFactoryOptions<readonly [\"zama.clearCredentials\"], void, void> {\n return { mutationKey: [\"zama.clearCredentials\"], mutationFn: () => sdk.permits.clear() };\n}\n","import type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link delegateDecryptionMutationOptions}. */\nexport interface DelegateDecryptionParams {\n /** Address to grant delegated decryption rights to. */\n delegateAddress: Address;\n /** When the delegation expires; omit for no expiry. */\n expirationDate?: Date;\n}\n\n/** Builds TanStack Query mutation options for {@link Delegations.delegateDecryption | granting} delegated decryption rights on a contract. @see {@link DelegateDecryptionParams} */\nexport function delegateDecryptionMutationOptions(\n sdk: ZamaSDK,\n contractAddress: Address,\n): MutationFactoryOptions<\n readonly [\"zama.delegateDecryption\", Address],\n DelegateDecryptionParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.delegateDecryption\", contractAddress] as const,\n mutationFn: async ({ delegateAddress, expirationDate }) =>\n sdk.delegations.delegateDecryption({ contractAddress, delegateAddress, expirationDate }),\n };\n}\n","import type { Address } from \"viem\";\nimport type { ClearValue, EncryptedValue } from \"../relayer/types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport type { SignerQueryContext } from \"./signer-query-context\";\n\n/** A single encrypted value to decrypt, paired with the contract that owns it. */\nexport interface EncryptedInput {\n /** Encrypted handle to decrypt. */\n encryptedValue: EncryptedValue;\n /** Address of the contract the encrypted value belongs to. */\n contractAddress: Address;\n}\n\n/** Decrypted clear values keyed by encrypted handle. */\nexport type DecryptResult = Readonly<Record<EncryptedValue, ClearValue>>;\n\n/** Builds TanStack Query options for decrypting a batch of encrypted handles into their clear values. */\nexport function decryptValuesQueryOptions(\n sdk: ZamaSDK,\n encryptedInputs: EncryptedInput[],\n signerContext: SignerQueryContext = {},\n): QueryFactoryOptions<\n DecryptResult,\n Error,\n DecryptResult,\n ReturnType<typeof zamaQueryKeys.decryption.encryptedInputs>\n> {\n return {\n queryKey: zamaQueryKeys.decryption.encryptedInputs(\n encryptedInputs,\n signerContext.walletAccount,\n ),\n queryFn: (context) => {\n const [, { encryptedInputs: keyedInputs }] = context.queryKey;\n return sdk.decryption.decryptValues(keyedInputs);\n },\n staleTime: Infinity,\n enabled: encryptedInputs.length > 0 && signerContext.walletAccount !== undefined,\n };\n}\n","import type { Address } from \"viem\";\nimport type { Token } from \"../token/token\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link decryptBalanceAsMutationOptions}. */\nexport interface DecryptBalanceAsParams {\n /** Address of the account that delegated decryption rights to the connected wallet. */\n delegatorAddress: Address;\n /** Account whose on-chain balance to read; defaults to the delegator address. */\n accountAddress?: Address;\n}\n\n/** Builds TanStack Query mutation options for {@link Token.decryptBalanceAs | decrypting} a balance via delegated decryption credentials. @see {@link DecryptBalanceAsParams} */\nexport function decryptBalanceAsMutationOptions(\n token: Token,\n): MutationFactoryOptions<\n readonly [\"zama.decryptBalanceAs\", Address],\n DecryptBalanceAsParams,\n bigint\n> {\n return {\n mutationKey: [\"zama.decryptBalanceAs\", token.address] as const,\n mutationFn: async ({ delegatorAddress, accountAddress }) =>\n token.decryptBalanceAs({ delegatorAddress, accountAddress }),\n };\n}\n","import { Token, type BatchDecryptAsOptions } from \"../token/token\";\nimport type { Address } from \"viem\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link batchDecryptBalancesAsMutationOptions}. */\nexport type BatchDecryptBalancesAsParams = BatchDecryptAsOptions;\n\n/** Builds TanStack Query mutation options for {@link Token.batchDecryptBalancesAs | decrypting} multiple token balances via delegated decryption credentials. @see {@link BatchDecryptBalancesAsParams} */\nexport function batchDecryptBalancesAsMutationOptions(\n tokens: Token[],\n): MutationFactoryOptions<\n readonly [\"zama.batchDecryptBalancesAs\", ...Address[]],\n BatchDecryptBalancesAsParams,\n Map<Address, bigint>\n> {\n return {\n mutationKey: [\"zama.batchDecryptBalancesAs\", ...tokens.map((t) => t.address)] as const,\n mutationFn: async (params) => Token.batchDecryptBalancesAs(tokens, params),\n };\n}\n","import type { Address } from \"viem\";\nimport type { TransactionResult } from \"../types\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { MutationFactoryOptions } from \"./factory-types\";\n\n/** Variables for {@link revokeDelegationMutationOptions}. */\nexport interface RevokeDelegationParams {\n /** Address whose delegated decryption rights to revoke. */\n delegateAddress: Address;\n}\n\n/** Builds TanStack Query mutation options for {@link Delegations.revokeDelegation | revoking} delegated decryption rights on a contract. @see {@link RevokeDelegationParams} */\nexport function revokeDelegationMutationOptions(\n sdk: ZamaSDK,\n contractAddress: Address,\n): MutationFactoryOptions<\n readonly [\"zama.revokeDelegation\", Address],\n RevokeDelegationParams,\n TransactionResult\n> {\n return {\n mutationKey: [\"zama.revokeDelegation\", contractAddress] as const,\n mutationFn: async ({ delegateAddress }) =>\n sdk.delegations.revokeDelegation({ contractAddress, delegateAddress }),\n };\n}\n","import type { Address } from \"viem\";\nimport type { DelegationStatus } from \"../services/delegation-service\";\nimport type { ZamaSDK } from \"../zama-sdk\";\nimport type { QueryFactoryOptions } from \"./factory-types\";\nimport { filterQueryOptions } from \"./utils\";\nimport { zamaQueryKeys } from \"./query-keys\";\nimport { assertNonNullable } from \"../utils\";\n\nexport type { DelegationStatus } from \"../services/delegation-service\";\n\n/** Configuration for {@link delegationStatusQueryOptions}. */\nexport interface DelegationStatusQueryConfig {\n /** Contract the delegation applies to; pass `undefined` to keep the query disabled. */\n contractAddress: Address | undefined;\n /** Address granting the delegated decryption rights; the query stays disabled until provided. */\n delegatorAddress?: Address;\n /** Address receiving the delegated decryption rights; the query stays disabled until provided. */\n delegateAddress?: Address;\n /** Additional TanStack Query options merged into the generated query (e.g. `staleTime`, `enabled`). */\n query?: Record<string, unknown>;\n}\n\n/** Builds TanStack Query options for reading the decryption-delegation status between a delegator and a delegate on a contract. */\nexport function delegationStatusQueryOptions(\n sdk: ZamaSDK,\n config: DelegationStatusQueryConfig,\n): QueryFactoryOptions<\n DelegationStatus,\n Error,\n DelegationStatus,\n ReturnType<typeof zamaQueryKeys.delegationStatus.scope>\n> {\n return {\n ...filterQueryOptions(config.query ?? {}),\n queryKey: zamaQueryKeys.delegationStatus.scope(\n config.contractAddress,\n config.delegatorAddress,\n config.delegateAddress,\n ),\n queryFn: async (context) => {\n const [, { contractAddress, delegatorAddress, delegateAddress }] = context.queryKey;\n assertNonNullable(contractAddress, \"delegationStatusQueryOptions: contractAddress\");\n assertNonNullable(delegatorAddress, \"delegationStatusQueryOptions: delegatorAddress\");\n assertNonNullable(delegateAddress, \"delegationStatusQueryOptions: delegateAddress\");\n return sdk.delegations.getStatus({ contractAddress, delegatorAddress, delegateAddress });\n },\n enabled:\n Boolean(config.contractAddress && config.delegatorAddress && config.delegateAddress) &&\n config.query?.enabled !== false,\n } as const;\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- function e(e,t){return{"x-zama-sdk-version":`3.7.1`,"x-zama-sdk-layer":e.state.layer,"x-zama-sdk-runtime":e.runtime,...t!==void 0&&{"x-zama-sdk-operation":t}}}function t(e,t){return Object.assign({},e,{operation:e?.operation??t})}function n(e){let t=e.ZAMA_SDK_TELEMETRY?.trim().toLowerCase();return t===`0`||t===`false`}export{e as n,t as r,n as t};
2
- //# sourceMappingURL=telemetry-CBSzrmab.js.map
1
+ function e(e,t){return{"x-zama-sdk-version":`3.7.2`,"x-zama-sdk-layer":e.state.layer,"x-zama-sdk-runtime":e.runtime,...t!==void 0&&{"x-zama-sdk-operation":t}}}function t(e,t){return Object.assign({},e,{operation:e?.operation??t})}function n(e){let t=e.ZAMA_SDK_TELEMETRY?.trim().toLowerCase();return t===`0`||t===`false`}export{e as n,t as r,n as t};
2
+ //# sourceMappingURL=telemetry-IaHYnoo4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-CBSzrmab.js","names":["packageJson.version"],"sources":["../../package.json","../../src/version.ts","../../src/telemetry.ts"],"sourcesContent":["","import packageJson from \"../package.json\" with { type: \"json\" };\n\nexport const SDK_VERSION: string = packageJson.version;\n","import { SDK_VERSION } from \"./version\";\n\n// Usage telemetry: `x-zama-sdk-*` headers on the relayer calls the SDK already\n// makes. No header may carry a wallet address, encrypted value, amount or identifier.\n\nexport type TelemetryLayer = \"core\" | \"react\";\n\nexport type TelemetryRuntime = \"web\" | \"node\";\n\n/** Values are frozen once shipped, so that dashboards keyed on them survive method renames. */\nexport type TelemetryOperation =\n | \"balance-of\"\n | \"decrypt-balance-as\"\n | \"batch-balances-of\"\n | \"batch-decrypt-balances-as\"\n | \"confidential-transfer\"\n | \"confidential-transfer-from\"\n | \"confidential-transfer-and-call\"\n | \"confidential-transfer-from-and-call\"\n | \"unshield\"\n | \"unshield-all\"\n | \"resume-unshield\"\n | \"unwrap\"\n | \"finalize-unwrap\"\n | \"vault-deposit\"\n | \"vault-redeem\"\n | \"vault-join\"\n | \"vault-deposit-of\"\n | \"encrypt\"\n | \"decrypt-values\"\n | \"delegated-decrypt-values\"\n | \"delegated-batch-decrypt-values\"\n | \"decrypt-public-values\"\n | \"offline-confidential-transfer\"\n | \"offline-confidential-transfer-from\"\n | \"offline-unwrap\"\n | \"offline-finalize-unwrap\";\n\n/**\n * Shared by every relayer of a config. `layer` flips to `react` once\n * `ZamaProvider` marks the config, after the relayers exist.\n *\n * @internal\n */\nexport interface TelemetryState {\n layer: TelemetryLayer;\n}\n\nexport interface RelayerTelemetry {\n readonly state: TelemetryState;\n readonly runtime: TelemetryRuntime;\n}\n\nexport function telemetryHeaders(\n telemetry: RelayerTelemetry,\n operation: TelemetryOperation | undefined,\n): Record<string, string> {\n return {\n \"x-zama-sdk-version\": SDK_VERSION,\n \"x-zama-sdk-layer\": telemetry.state.layer,\n \"x-zama-sdk-runtime\": telemetry.runtime,\n ...(operation !== undefined && { \"x-zama-sdk-operation\": operation }),\n };\n}\n\n/** `options` labelled with `operation`, unless the caller already labelled it. */\nexport function withOperation<T extends { readonly operation?: TelemetryOperation }>(\n options: T | undefined,\n operation: TelemetryOperation,\n): Partial<T> & { readonly operation: TelemetryOperation } {\n return Object.assign({}, options, { operation: options?.operation ?? operation });\n}\n\nexport function isTelemetryDisabledByEnv(env: Record<string, string | undefined>): boolean {\n const value = env.ZAMA_SDK_TELEMETRY?.trim().toLowerCase();\n return value === \"0\" || value === \"false\";\n}\n"],"mappings":"AEqDA,SAAgB,EACd,EACA,EACwB,CACxB,MAAO,CACL,qBAAsB,QACtB,mBAAoB,EAAU,MAAM,MACpC,qBAAsB,EAAU,QAChC,GAAI,IAAc,IAAA,IAAa,CAAE,uBAAwB,CAAU,CACrE,CACF,CAGA,SAAgB,EACd,EACA,EACyD,CACzD,OAAO,OAAO,OAAO,CAAC,EAAG,EAAS,CAAE,UAAW,GAAS,WAAa,CAAU,CAAC,CAClF,CAEA,SAAgB,EAAyB,EAAkD,CACzF,IAAM,EAAQ,EAAI,oBAAoB,KAAK,CAAC,CAAC,YAAY,EACzD,OAAO,IAAU,KAAO,IAAU,OACpC"}
1
+ {"version":3,"file":"telemetry-IaHYnoo4.js","names":["packageJson.version"],"sources":["../../package.json","../../src/version.ts","../../src/telemetry.ts"],"sourcesContent":["","import packageJson from \"../package.json\" with { type: \"json\" };\n\nexport const SDK_VERSION: string = packageJson.version;\n","import { SDK_VERSION } from \"./version\";\n\n// Usage telemetry: `x-zama-sdk-*` headers on the relayer calls the SDK already\n// makes. No header may carry a wallet address, encrypted value, amount or identifier.\n\nexport type TelemetryLayer = \"core\" | \"react\";\n\nexport type TelemetryRuntime = \"web\" | \"node\";\n\n/** Values are frozen once shipped, so that dashboards keyed on them survive method renames. */\nexport type TelemetryOperation =\n | \"balance-of\"\n | \"decrypt-balance-as\"\n | \"batch-balances-of\"\n | \"batch-decrypt-balances-as\"\n | \"confidential-transfer\"\n | \"confidential-transfer-from\"\n | \"confidential-transfer-and-call\"\n | \"confidential-transfer-from-and-call\"\n | \"unshield\"\n | \"unshield-all\"\n | \"resume-unshield\"\n | \"unwrap\"\n | \"finalize-unwrap\"\n | \"vault-deposit\"\n | \"vault-redeem\"\n | \"vault-join\"\n | \"vault-deposit-of\"\n | \"encrypt\"\n | \"decrypt-values\"\n | \"delegated-decrypt-values\"\n | \"delegated-batch-decrypt-values\"\n | \"decrypt-public-values\"\n | \"offline-confidential-transfer\"\n | \"offline-confidential-transfer-from\"\n | \"offline-unwrap\"\n | \"offline-finalize-unwrap\";\n\n/**\n * Shared by every relayer of a config. `layer` flips to `react` once\n * `ZamaProvider` marks the config, after the relayers exist.\n *\n * @internal\n */\nexport interface TelemetryState {\n layer: TelemetryLayer;\n}\n\nexport interface RelayerTelemetry {\n readonly state: TelemetryState;\n readonly runtime: TelemetryRuntime;\n}\n\nexport function telemetryHeaders(\n telemetry: RelayerTelemetry,\n operation: TelemetryOperation | undefined,\n): Record<string, string> {\n return {\n \"x-zama-sdk-version\": SDK_VERSION,\n \"x-zama-sdk-layer\": telemetry.state.layer,\n \"x-zama-sdk-runtime\": telemetry.runtime,\n ...(operation !== undefined && { \"x-zama-sdk-operation\": operation }),\n };\n}\n\n/** `options` labelled with `operation`, unless the caller already labelled it. */\nexport function withOperation<T extends { readonly operation?: TelemetryOperation }>(\n options: T | undefined,\n operation: TelemetryOperation,\n): Partial<T> & { readonly operation: TelemetryOperation } {\n return Object.assign({}, options, { operation: options?.operation ?? operation });\n}\n\nexport function isTelemetryDisabledByEnv(env: Record<string, string | undefined>): boolean {\n const value = env.ZAMA_SDK_TELEMETRY?.trim().toLowerCase();\n return value === \"0\" || value === \"false\";\n}\n"],"mappings":"AEqDA,SAAgB,EACd,EACA,EACwB,CACxB,MAAO,CACL,qBAAsB,QACtB,mBAAoB,EAAU,MAAM,MACpC,qBAAsB,EAAU,QAChC,GAAI,IAAc,IAAA,IAAa,CAAE,uBAAwB,CAAU,CACrE,CACF,CAGA,SAAgB,EACd,EACA,EACyD,CACzD,OAAO,OAAO,OAAO,CAAC,EAAG,EAAS,CAAE,UAAW,GAAS,WAAa,CAAU,CAAC,CAClF,CAEA,SAAgB,EAAyB,EAAkD,CACzF,IAAM,EAAQ,EAAI,oBAAoB,KAAK,CAAC,CAAC,YAAY,EACzD,OAAO,IAAU,KAAO,IAAU,OACpC"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"../relayer-C3jVhqSK.js";import{H as t,L as n,M as r,P as i}from"../erc165-BAd2z3ay.js";import{r as a,t as o}from"../encryption-6AVd-82z.js";import{a as s,i as c,l,n as u,o as d,t as f}from"../token-CTvEGQmH.js";import{S as p,b as m,t as h,x as g}from"../wrapped-token-IDUEFpZx.js";import{r as _}from"../telemetry-CBSzrmab.js";import{l as v,p as y}from"../invalidation-BgFjmXeQ.js";import{getAddress as b}from"viem";const x=[{type:`function`,name:`batchCallbackDeadline`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchCreatedAt`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchDispatchedAt`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchMaxSlippageBps`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint16`,internalType:`uint16`}],stateMutability:`view`},{type:`function`,name:`batchMinBatchAge`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchState`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint8`,internalType:`enum BatcherConfidential.BatchState`}],stateMutability:`view`},{type:`function`,name:`callbackDeadline`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`claim`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`currentBatchId`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`deposits`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`dispatchBatch`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`exchangeRate`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`exchangeRateDecimals`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`pure`},{type:`function`,name:`fromToken`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC7984ERC20Wrapper`}],stateMutability:`view`},{type:`function`,name:`join`,inputs:[{name:`beneficiary`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`joined`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`maxSlippageBps`,inputs:[],outputs:[{name:``,type:`uint16`,internalType:`uint16`}],stateMutability:`view`},{type:`function`,name:`minBatchAge`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`paused`,inputs:[],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`quit`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`recover`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:`refunded`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`toToken`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC7984ERC20Wrapper`}],stateMutability:`view`},{type:`function`,name:`totalDeposits`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`unwrapRequestId`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`bytes32`}],stateMutability:`view`},{type:`function`,name:`vault`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC4626`}],stateMutability:`view`},{type:`event`,name:`BatchCanceled`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`BatchDispatched`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`BatchFinalized`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`exchangeRate`,type:`uint64`,indexed:!1,internalType:`uint64`}],anonymous:!1},{type:`event`,name:`Claimed`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`account`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`event`,name:`Joined`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`account`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`event`,name:`Quit`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`account`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`error`,name:`BatchNonexistent`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`BatchTooYoung`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`elapsed`,type:`uint256`,internalType:`uint256`},{name:`required`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`BatchUnexpectedState`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`current`,type:`uint8`,internalType:`enum BatcherConfidential.BatchState`},{name:`expectedStates`,type:`bytes32`,internalType:`bytes32`}]},{type:`error`,name:`DuplicateUnderlyingTokens`,inputs:[]},{type:`error`,name:`EnforcedPause`,inputs:[]},{type:`error`,name:`ExpectedPause`,inputs:[]},{type:`error`,name:`IntermediateStepToTokenBalanceChanged`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`InvalidBeneficiary`,inputs:[]},{type:`error`,name:`InvalidCallbackDeadline`,inputs:[]},{type:`error`,name:`InvalidExchangeRate`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`totalDeposits`,type:`uint256`,internalType:`uint256`},{name:`exchangeRate`,type:`uint64`,internalType:`uint64`}]},{type:`error`,name:`InvalidKMSSignatures`,inputs:[]},{type:`error`,name:`InvalidMaxSlippageBps`,inputs:[]},{type:`error`,name:`InvalidMinBatchAge`,inputs:[]},{type:`error`,name:`InvalidTokenRate`,inputs:[]},{type:`error`,name:`InvalidWrapperToken`,inputs:[{name:`token`,type:`address`,internalType:`address`}]},{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:`ReentrancyGuardReentrantCall`,inputs:[]},{type:`error`,name:`RouteAssetMismatch`,inputs:[{name:`actualAsset`,type:`address`,internalType:`address`},{name:`expectedAsset`,type:`address`,internalType:`address`}]},{type:`error`,name:`RouteShareMismatch`,inputs:[{name:`actualShare`,type:`address`,internalType:`address`},{name:`expectedShare`,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:`SlippageExceeded`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`actual`,type:`uint256`,internalType:`uint256`},{name:`minimum`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`Unauthorized`,inputs:[]},{type:`error`,name:`ZamaProtocolUnsupported`,inputs:[]},{type:`error`,name:`ZeroDeposits`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}]}];function S(e,t,n,r){return{address:e,abi:x,functionName:`join`,args:[t,n,r]}}function C(e,t,n){return{address:e,abi:x,functionName:`claim`,args:[t,n]}}function w(e,t){return{address:e,abi:x,functionName:`quit`,args:[t]}}function T(e,t,n){return{address:e,abi:x,functionName:`recover`,args:[t,n]}}function E(e){return{address:e,abi:x,functionName:`dispatchBatch`,args:[]}}function D(e){return{address:e,abi:x,functionName:`currentBatchId`,args:[]}}function O(e,t){return{address:e,abi:x,functionName:`batchState`,args:[t]}}function k(e,t){return{address:e,abi:x,functionName:`totalDeposits`,args:[t]}}function A(e,t,n){return{address:e,abi:x,functionName:`deposits`,args:[t,n]}}function j(e){return{address:e,abi:x,functionName:`vault`,args:[]}}function M(e){return{address:e,abi:x,functionName:`fromToken`,args:[]}}function N(e){return{address:e,abi:x,functionName:`toToken`,args:[]}}function P(e){return{address:e,abi:x,functionName:`minBatchAge`,args:[]}}function F(e,t){return{address:e,abi:x,functionName:`batchMinBatchAge`,args:[t]}}function I(e){return{address:e,abi:x,functionName:`callbackDeadline`,args:[]}}function L(e,t){return{address:e,abi:x,functionName:`batchCallbackDeadline`,args:[t]}}function R(e,t){return{address:e,abi:x,functionName:`batchCreatedAt`,args:[t]}}function z(e,t){return{address:e,abi:x,functionName:`batchDispatchedAt`,args:[t]}}function B(e,t){return{address:e,abi:x,functionName:`exchangeRate`,args:[t]}}function V(e){return{address:e,abi:x,functionName:`exchangeRateDecimals`,args:[]}}function H(e){return{address:e,abi:x,functionName:`paused`,args:[]}}const U={Joined:m(`Joined(uint256,address,bytes32)`)};function W(e){let[t,n,r]=e.topics;return t!==U.Joined||n===void 0||r===void 0?null:{batchId:BigInt(n),account:g(r),confidentialAmount:p(e.data,0)}}function G(e,t,n){let r=n?b(n):void 0;for(let n of e){if(n.address!==void 0&&b(n.address)!==t)continue;let e=W(n);if(e&&(r===void 0||e.account===r))return e}return null}const K={Pending:0,Dispatched:1,Finalized:2,Canceled:3};function q(e){let t,n=null;return()=>t===void 0?(n||=e().then(e=>(t=e,n=null,e)).catch(e=>{throw n=null,e}),n):Promise.resolve(t)}var J=class{sdk;address;#e;#t;#n;#r=null;constructor(e,t){this.sdk=e,this.address=b(t),this.#e=q(()=>e.provider.readContract(j(this.address))),this.#t=q(()=>e.provider.readContract(M(this.address))),this.#n=q(()=>e.provider.readContract(N(this.address)))}async vault(){return this.#e()}async fromToken(){return this.#t()}async toToken(){return this.#n()}async currentBatchId(){return this.sdk.provider.readContract(D(this.address))}async batchState(e){return await this.sdk.provider.readContract(O(this.address,e))}async paused(){return this.sdk.provider.readContract(H(this.address))}async minBatchAge(){return this.sdk.provider.readContract(P(this.address))}async batchMinBatchAge(e){return this.sdk.provider.readContract(F(this.address,e))}async callbackDeadline(){return this.sdk.provider.readContract(I(this.address))}async batchCallbackDeadline(e){return this.sdk.provider.readContract(L(this.address,e))}async batchCreatedAt(e){return this.sdk.provider.readContract(R(this.address,e))}async batchDispatchedAt(e){return this.sdk.provider.readContract(z(this.address,e))}async exchangeRate(e){return this.sdk.provider.readContract(B(this.address,e))}async exchangeRateDecimals(){return this.sdk.provider.readContract(V(this.address))}async timeUntilDispatchable(e){let[t,n,r,i]=await Promise.all([this.batchState(e),this.batchCreatedAt(e),this.batchMinBatchAge(e),this.sdk.provider.getBlockTimestamp()]);if(t!==K.Pending)return null;let a=n+r;return a>i?a-i:0n}async confidentialTotalDeposits(e){return this.sdk.provider.readContract(k(this.address,e))}async confidentialDepositOf(e,t){return this.sdk.provider.readContract(A(this.address,e,b(t)))}async depositOf(e,t){let n=b(t),i=await this.confidentialDepositOf(e,n);if(l(i))return 0n;let a=(await this.sdk.decryption.decryptValues([{encryptedValue:i,contractAddress:this.address}],{operation:`vault-deposit-of`}))[i];if(a===void 0)throw new o(`Decryption returned no value for ${i}`);return r(a,`depositOf: result[encryptedValue]`),a}async join(e,n,r){let{operation:i}=_(r,`vault-join`);this.#i(`join`);let o=b((await s(`join`,this.sdk.signer,this.sdk.provider)).address),c=n?b(n):o;r?.skipBalanceCheck||await this.#o(e,i);let{encryptedValues:l,inputProof:u}=await this.sdk.encrypt({values:[{value:e,type:`euint64`}],contractAddress:this.address,userAddress:o},{operation:i}),d=l[0];if(!d)throw new a(`Encryption returned no encrypted values`);let f=await this.#c(`vault:join`,S(this.address,c,d,u)),p=G(f.receipt.logs,this.address,c);if(!p)throw new t(`No Joined event for ${c} from batcher ${this.address} found in the join receipt`);return{...f,batchId:p.batchId,beneficiary:p.account,confidentialJoinedAmount:p.confidentialAmount}}async quit(e){return this.#i(`quit`),await d(`quit`,this.sdk.signer,this.sdk.provider),this.#c(`vault:quit`,w(this.address,e))}async recover(e,t){let n=await this.#s(`recover`,t);return this.#c(`vault:recover`,T(this.address,e,n))}async claim(e,t){let n=await this.#s(`claim`,t);return this.#c(`vault:claim`,C(this.address,e,n))}async dispatchBatch(){return this.#i(`dispatchBatch`),await d(`dispatchBatch`,this.sdk.signer,this.sdk.provider),this.#c(`vault:dispatchBatch`,E(this.address))}#i(e){if(!this.sdk.signer)throw new n(e);return this.sdk.signer}async#a(){return this.#r??=this.fromToken().then(e=>new f(this.sdk,e)).catch(e=>{throw this.#r=null,e}),this.#r}async#o(e,t){let n=await this.#a();return c({operation:`join`,tokenAddress:n.address,amount:e,signer:this.sdk.signer,provider:this.sdk.provider,readBalance:e=>n.decryptBalance(e,t)})}async#s(e,t){return this.#i(e),t?(await d(e,this.sdk.signer,this.sdk.provider),b(t)):b((await s(e,this.sdk.signer,this.sdk.provider)).address)}async#c(e,t){return u({operation:e,signer:this.#i(e),provider:this.sdk.provider,config:t,emit:e=>this.sdk.emitEvent(e,this.address),logger:this.sdk.logger})}};function Y(e,t){return new J(e,t)}var X=class{sdk;depositBatcher;redeemBatcher;#e=null;#t=null;#n=null;#r;constructor(e,t){this.sdk=e,this.#r=t.vault?b(t.vault):void 0,this.depositBatcher=new J(e,t.depositBatcher),this.redeemBatcher=new J(e,t.redeemBatcher)}async vaultAddress(){return this.#e??=this.#i().catch(e=>{throw this.#e=null,e}),this.#e}async cAsset(){return this.#t??=this.depositBatcher.fromToken().then(e=>new h(this.sdk,e)).catch(e=>{throw this.#t=null,e}),this.#t}async cShare(){return this.#n??=this.redeemBatcher.fromToken().then(e=>new h(this.sdk,e)).catch(e=>{throw this.#n=null,e}),this.#n}async deposit(e,t){let[,n]=await Promise.all([this.vaultAddress(),this.cAsset()]);return await this.#a(`deposit`,n,this.depositBatcher.address,t?.operatorUntil),this.depositBatcher.join(e,t?.beneficiary,{skipBalanceCheck:t?.skipBalanceCheck,operation:`vault-deposit`})}async redeem(e,t){let[,n]=await Promise.all([this.vaultAddress(),this.cShare()]);return await this.#a(`redeem`,n,this.redeemBatcher.address,t?.operatorUntil),this.redeemBatcher.join(e,t?.beneficiary,{skipBalanceCheck:t?.skipBalanceCheck,operation:`vault-redeem`})}async#i(){let[t,n]=await Promise.all([this.depositBatcher.vault(),this.redeemBatcher.vault()]);if(b(t)!==b(n))throw new e(`Vault batchers point at different ERC-4626 vaults: deposit batcher ${this.depositBatcher.address} reports ${t}, redeem batcher ${this.redeemBatcher.address} reports ${n}`);let r=b(t);if(this.#r!==void 0&&this.#r!==r)throw new e(`Configured vault address ${this.#r} does not match the ${r} both batchers report`);return r}async#a(e,t,r,i){if(!this.sdk.signer)throw new n(e);let a=this.sdk.signer.requireWalletAccount(e);await t.isOperator(a.address,r)||await t.setOperator(r,i)}};function Z(e,t){return new X(e,t)}const Q={currentBatchId:{batcher:e=>[`zama.vault.currentBatchId`,{batcherAddress:b(e)}]},batchState:{batcher:e=>[`zama.vault.batchState`,{batcherAddress:b(e)}],batch:(e,t)=>[`zama.vault.batchState`,{batcherAddress:b(e),batchId:t}]},timeUntilDispatchable:{batcher:e=>[`zama.vault.timeUntilDispatchable`,{batcherAddress:b(e)}],batch:(e,t)=>[`zama.vault.timeUntilDispatchable`,{batcherAddress:b(e),batchId:t}]}};function $(e,t){e.invalidateQueries({queryKey:Q.currentBatchId.batcher(t)}),e.invalidateQueries({queryKey:Q.batchState.batcher(t)}),e.invalidateQueries({queryKey:Q.timeUntilDispatchable.batcher(t)})}function ee(e,t){v(e,t.fromToken),$(e,t.batcherAddress)}function te(e,t){v(e,t.fromToken),$(e,t.batcherAddress)}function ne(e,t){v(e,t.toToken)}function re(e,t){$(e,t)}function ie(e,t={}){let n=t.query??{};return{...y(n),queryKey:Q.currentBatchId.batcher(e.address),queryFn:async()=>e.currentBatchId(),enabled:n.enabled!==!1}}function ae(e,t={}){let n=t.query??{};return{...y(n),queryKey:Q.batchState.batch(e.address,t.batchId),queryFn:async t=>{let[,{batchId:n}]=t.queryKey;return i(n,`batchStateQueryOptions: batchId`),e.batchState(n)},enabled:t.batchId!==void 0&&n.enabled!==!1}}function oe(e,t={}){let n=t.query??{};return{...y(n),queryKey:Q.timeUntilDispatchable.batch(e.address,t.batchId),queryFn:async t=>{let[,{batchId:n}]=t.queryKey;return i(n,`timeUntilDispatchableQueryOptions: batchId`),e.timeUntilDispatchable(n)},enabled:t.batchId!==void 0&&n.enabled!==!1}}function se(e){return{mutationKey:[`zama.vault.deposit`,e.depositBatcher.address],mutationFn:async({amount:t,...n})=>e.deposit(t,n)}}function ce(e){return{mutationKey:[`zama.vault.redeem`,e.redeemBatcher.address],mutationFn:async({amount:t,...n})=>e.redeem(t,n)}}function le(e){return{mutationKey:[`zama.vault.join`,e.address],mutationFn:async({amount:t,beneficiary:n,...r})=>e.join(t,n,r)}}function ue(e){return{mutationKey:[`zama.vault.claim`,e.address],mutationFn:async({batchId:t,account:n})=>e.claim(t,n)}}function de(e){return{mutationKey:[`zama.vault.quit`,e.address],mutationFn:async({batchId:t})=>e.quit(t)}}function fe(e){return{mutationKey:[`zama.vault.recover`,e.address],mutationFn:async({batchId:t,account:n})=>e.recover(t,n)}}function pe(e){return{mutationKey:[`zama.vault.dispatchBatch`,e.address],mutationFn:async()=>e.dispatchBatch()}}export{K as BatchState,X as Vault,J as VaultBatcher,U as VaultTopics,L as batchCallbackDeadlineContract,R as batchCreatedAtContract,z as batchDispatchedAtContract,F as batchMinBatchAgeContract,O as batchStateContract,ae as batchStateQueryOptions,I as callbackDeadlineContract,C as claimContract,ue as claimMutationOptions,Z as createVault,Y as createVaultBatcher,D as currentBatchIdContract,ie as currentBatchIdQueryOptions,W as decodeJoined,se as depositMutationOptions,A as depositsContract,E as dispatchBatchContract,pe as dispatchBatchMutationOptions,B as exchangeRateContract,V as exchangeRateDecimalsContract,G as findJoined,M as fromTokenContract,ne as invalidateAfterClaim,re as invalidateAfterDispatchBatch,ee as invalidateAfterJoin,te as invalidateAfterQuit,$ as invalidateBatchQueries,S as joinContract,le as joinMutationOptions,P as minBatchAgeContract,H as pausedContract,w as quitContract,de as quitMutationOptions,T as recoverContract,fe as recoverMutationOptions,ce as redeemMutationOptions,oe as timeUntilDispatchableQueryOptions,N as toTokenContract,k as totalDepositsContract,j as vaultContract,Q as vaultQueryKeys};
1
+ import{t as e}from"../relayer-C3jVhqSK.js";import{H as t,L as n,M as r,P as i}from"../erc165-BAd2z3ay.js";import{r as a,t as o}from"../encryption-6AVd-82z.js";import{a as s,i as c,l,n as u,o as d,t as f}from"../token-CTvEGQmH.js";import{S as p,b as m,t as h,x as g}from"../wrapped-token-IDUEFpZx.js";import{r as _}from"../telemetry-IaHYnoo4.js";import{l as v,p as y}from"../invalidation-BgFjmXeQ.js";import{getAddress as b}from"viem";const x=[{type:`function`,name:`batchCallbackDeadline`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchCreatedAt`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchDispatchedAt`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchMaxSlippageBps`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint16`,internalType:`uint16`}],stateMutability:`view`},{type:`function`,name:`batchMinBatchAge`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`batchState`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint8`,internalType:`enum BatcherConfidential.BatchState`}],stateMutability:`view`},{type:`function`,name:`callbackDeadline`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`claim`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`currentBatchId`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`deposits`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`dispatchBatch`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`exchangeRate`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`exchangeRateDecimals`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`pure`},{type:`function`,name:`fromToken`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC7984ERC20Wrapper`}],stateMutability:`view`},{type:`function`,name:`join`,inputs:[{name:`beneficiary`,type:`address`,internalType:`address`},{name:`encryptedAmount`,type:`bytes32`,internalType:`externalEuint64`},{name:`inputProof`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`joined`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`maxSlippageBps`,inputs:[],outputs:[{name:``,type:`uint16`,internalType:`uint16`}],stateMutability:`view`},{type:`function`,name:`minBatchAge`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`paused`,inputs:[],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`quit`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`recover`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:`refunded`,type:`bytes32`,internalType:`euint64`}],stateMutability:`nonpayable`},{type:`function`,name:`toToken`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC7984ERC20Wrapper`}],stateMutability:`view`},{type:`function`,name:`totalDeposits`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`euint64`}],stateMutability:`view`},{type:`function`,name:`unwrapRequestId`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bytes32`,internalType:`bytes32`}],stateMutability:`view`},{type:`function`,name:`vault`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC4626`}],stateMutability:`view`},{type:`event`,name:`BatchCanceled`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`BatchDispatched`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`BatchFinalized`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`exchangeRate`,type:`uint64`,indexed:!1,internalType:`uint64`}],anonymous:!1},{type:`event`,name:`Claimed`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`account`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`event`,name:`Joined`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`account`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`event`,name:`Quit`,inputs:[{name:`batchId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`account`,type:`address`,indexed:!0,internalType:`address`},{name:`amount`,type:`bytes32`,indexed:!1,internalType:`euint64`}],anonymous:!1},{type:`error`,name:`BatchNonexistent`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`BatchTooYoung`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`elapsed`,type:`uint256`,internalType:`uint256`},{name:`required`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`BatchUnexpectedState`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`current`,type:`uint8`,internalType:`enum BatcherConfidential.BatchState`},{name:`expectedStates`,type:`bytes32`,internalType:`bytes32`}]},{type:`error`,name:`DuplicateUnderlyingTokens`,inputs:[]},{type:`error`,name:`EnforcedPause`,inputs:[]},{type:`error`,name:`ExpectedPause`,inputs:[]},{type:`error`,name:`IntermediateStepToTokenBalanceChanged`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`InvalidBeneficiary`,inputs:[]},{type:`error`,name:`InvalidCallbackDeadline`,inputs:[]},{type:`error`,name:`InvalidExchangeRate`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`totalDeposits`,type:`uint256`,internalType:`uint256`},{name:`exchangeRate`,type:`uint64`,internalType:`uint64`}]},{type:`error`,name:`InvalidKMSSignatures`,inputs:[]},{type:`error`,name:`InvalidMaxSlippageBps`,inputs:[]},{type:`error`,name:`InvalidMinBatchAge`,inputs:[]},{type:`error`,name:`InvalidTokenRate`,inputs:[]},{type:`error`,name:`InvalidWrapperToken`,inputs:[{name:`token`,type:`address`,internalType:`address`}]},{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:`ReentrancyGuardReentrantCall`,inputs:[]},{type:`error`,name:`RouteAssetMismatch`,inputs:[{name:`actualAsset`,type:`address`,internalType:`address`},{name:`expectedAsset`,type:`address`,internalType:`address`}]},{type:`error`,name:`RouteShareMismatch`,inputs:[{name:`actualShare`,type:`address`,internalType:`address`},{name:`expectedShare`,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:`SlippageExceeded`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`actual`,type:`uint256`,internalType:`uint256`},{name:`minimum`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`Unauthorized`,inputs:[]},{type:`error`,name:`ZamaProtocolUnsupported`,inputs:[]},{type:`error`,name:`ZeroDeposits`,inputs:[{name:`batchId`,type:`uint256`,internalType:`uint256`},{name:`account`,type:`address`,internalType:`address`}]}];function S(e,t,n,r){return{address:e,abi:x,functionName:`join`,args:[t,n,r]}}function C(e,t,n){return{address:e,abi:x,functionName:`claim`,args:[t,n]}}function w(e,t){return{address:e,abi:x,functionName:`quit`,args:[t]}}function T(e,t,n){return{address:e,abi:x,functionName:`recover`,args:[t,n]}}function E(e){return{address:e,abi:x,functionName:`dispatchBatch`,args:[]}}function D(e){return{address:e,abi:x,functionName:`currentBatchId`,args:[]}}function O(e,t){return{address:e,abi:x,functionName:`batchState`,args:[t]}}function k(e,t){return{address:e,abi:x,functionName:`totalDeposits`,args:[t]}}function A(e,t,n){return{address:e,abi:x,functionName:`deposits`,args:[t,n]}}function j(e){return{address:e,abi:x,functionName:`vault`,args:[]}}function M(e){return{address:e,abi:x,functionName:`fromToken`,args:[]}}function N(e){return{address:e,abi:x,functionName:`toToken`,args:[]}}function P(e){return{address:e,abi:x,functionName:`minBatchAge`,args:[]}}function F(e,t){return{address:e,abi:x,functionName:`batchMinBatchAge`,args:[t]}}function I(e){return{address:e,abi:x,functionName:`callbackDeadline`,args:[]}}function L(e,t){return{address:e,abi:x,functionName:`batchCallbackDeadline`,args:[t]}}function R(e,t){return{address:e,abi:x,functionName:`batchCreatedAt`,args:[t]}}function z(e,t){return{address:e,abi:x,functionName:`batchDispatchedAt`,args:[t]}}function B(e,t){return{address:e,abi:x,functionName:`exchangeRate`,args:[t]}}function V(e){return{address:e,abi:x,functionName:`exchangeRateDecimals`,args:[]}}function H(e){return{address:e,abi:x,functionName:`paused`,args:[]}}const U={Joined:m(`Joined(uint256,address,bytes32)`)};function W(e){let[t,n,r]=e.topics;return t!==U.Joined||n===void 0||r===void 0?null:{batchId:BigInt(n),account:g(r),confidentialAmount:p(e.data,0)}}function G(e,t,n){let r=n?b(n):void 0;for(let n of e){if(n.address!==void 0&&b(n.address)!==t)continue;let e=W(n);if(e&&(r===void 0||e.account===r))return e}return null}const K={Pending:0,Dispatched:1,Finalized:2,Canceled:3};function q(e){let t,n=null;return()=>t===void 0?(n||=e().then(e=>(t=e,n=null,e)).catch(e=>{throw n=null,e}),n):Promise.resolve(t)}var J=class{sdk;address;#e;#t;#n;#r=null;constructor(e,t){this.sdk=e,this.address=b(t),this.#e=q(()=>e.provider.readContract(j(this.address))),this.#t=q(()=>e.provider.readContract(M(this.address))),this.#n=q(()=>e.provider.readContract(N(this.address)))}async vault(){return this.#e()}async fromToken(){return this.#t()}async toToken(){return this.#n()}async currentBatchId(){return this.sdk.provider.readContract(D(this.address))}async batchState(e){return await this.sdk.provider.readContract(O(this.address,e))}async paused(){return this.sdk.provider.readContract(H(this.address))}async minBatchAge(){return this.sdk.provider.readContract(P(this.address))}async batchMinBatchAge(e){return this.sdk.provider.readContract(F(this.address,e))}async callbackDeadline(){return this.sdk.provider.readContract(I(this.address))}async batchCallbackDeadline(e){return this.sdk.provider.readContract(L(this.address,e))}async batchCreatedAt(e){return this.sdk.provider.readContract(R(this.address,e))}async batchDispatchedAt(e){return this.sdk.provider.readContract(z(this.address,e))}async exchangeRate(e){return this.sdk.provider.readContract(B(this.address,e))}async exchangeRateDecimals(){return this.sdk.provider.readContract(V(this.address))}async timeUntilDispatchable(e){let[t,n,r,i]=await Promise.all([this.batchState(e),this.batchCreatedAt(e),this.batchMinBatchAge(e),this.sdk.provider.getBlockTimestamp()]);if(t!==K.Pending)return null;let a=n+r;return a>i?a-i:0n}async confidentialTotalDeposits(e){return this.sdk.provider.readContract(k(this.address,e))}async confidentialDepositOf(e,t){return this.sdk.provider.readContract(A(this.address,e,b(t)))}async depositOf(e,t){let n=b(t),i=await this.confidentialDepositOf(e,n);if(l(i))return 0n;let a=(await this.sdk.decryption.decryptValues([{encryptedValue:i,contractAddress:this.address}],{operation:`vault-deposit-of`}))[i];if(a===void 0)throw new o(`Decryption returned no value for ${i}`);return r(a,`depositOf: result[encryptedValue]`),a}async join(e,n,r){let{operation:i}=_(r,`vault-join`);this.#i(`join`);let o=b((await s(`join`,this.sdk.signer,this.sdk.provider)).address),c=n?b(n):o;r?.skipBalanceCheck||await this.#o(e,i);let{encryptedValues:l,inputProof:u}=await this.sdk.encrypt({values:[{value:e,type:`euint64`}],contractAddress:this.address,userAddress:o},{operation:i}),d=l[0];if(!d)throw new a(`Encryption returned no encrypted values`);let f=await this.#c(`vault:join`,S(this.address,c,d,u)),p=G(f.receipt.logs,this.address,c);if(!p)throw new t(`No Joined event for ${c} from batcher ${this.address} found in the join receipt`);return{...f,batchId:p.batchId,beneficiary:p.account,confidentialJoinedAmount:p.confidentialAmount}}async quit(e){return this.#i(`quit`),await d(`quit`,this.sdk.signer,this.sdk.provider),this.#c(`vault:quit`,w(this.address,e))}async recover(e,t){let n=await this.#s(`recover`,t);return this.#c(`vault:recover`,T(this.address,e,n))}async claim(e,t){let n=await this.#s(`claim`,t);return this.#c(`vault:claim`,C(this.address,e,n))}async dispatchBatch(){return this.#i(`dispatchBatch`),await d(`dispatchBatch`,this.sdk.signer,this.sdk.provider),this.#c(`vault:dispatchBatch`,E(this.address))}#i(e){if(!this.sdk.signer)throw new n(e);return this.sdk.signer}async#a(){return this.#r??=this.fromToken().then(e=>new f(this.sdk,e)).catch(e=>{throw this.#r=null,e}),this.#r}async#o(e,t){let n=await this.#a();return c({operation:`join`,tokenAddress:n.address,amount:e,signer:this.sdk.signer,provider:this.sdk.provider,readBalance:e=>n.decryptBalance(e,t)})}async#s(e,t){return this.#i(e),t?(await d(e,this.sdk.signer,this.sdk.provider),b(t)):b((await s(e,this.sdk.signer,this.sdk.provider)).address)}async#c(e,t){return u({operation:e,signer:this.#i(e),provider:this.sdk.provider,config:t,emit:e=>this.sdk.emitEvent(e,this.address),logger:this.sdk.logger})}};function Y(e,t){return new J(e,t)}var X=class{sdk;depositBatcher;redeemBatcher;#e=null;#t=null;#n=null;#r;constructor(e,t){this.sdk=e,this.#r=t.vault?b(t.vault):void 0,this.depositBatcher=new J(e,t.depositBatcher),this.redeemBatcher=new J(e,t.redeemBatcher)}async vaultAddress(){return this.#e??=this.#i().catch(e=>{throw this.#e=null,e}),this.#e}async cAsset(){return this.#t??=this.depositBatcher.fromToken().then(e=>new h(this.sdk,e)).catch(e=>{throw this.#t=null,e}),this.#t}async cShare(){return this.#n??=this.redeemBatcher.fromToken().then(e=>new h(this.sdk,e)).catch(e=>{throw this.#n=null,e}),this.#n}async deposit(e,t){let[,n]=await Promise.all([this.vaultAddress(),this.cAsset()]);return await this.#a(`deposit`,n,this.depositBatcher.address,t?.operatorUntil),this.depositBatcher.join(e,t?.beneficiary,{skipBalanceCheck:t?.skipBalanceCheck,operation:`vault-deposit`})}async redeem(e,t){let[,n]=await Promise.all([this.vaultAddress(),this.cShare()]);return await this.#a(`redeem`,n,this.redeemBatcher.address,t?.operatorUntil),this.redeemBatcher.join(e,t?.beneficiary,{skipBalanceCheck:t?.skipBalanceCheck,operation:`vault-redeem`})}async#i(){let[t,n]=await Promise.all([this.depositBatcher.vault(),this.redeemBatcher.vault()]);if(b(t)!==b(n))throw new e(`Vault batchers point at different ERC-4626 vaults: deposit batcher ${this.depositBatcher.address} reports ${t}, redeem batcher ${this.redeemBatcher.address} reports ${n}`);let r=b(t);if(this.#r!==void 0&&this.#r!==r)throw new e(`Configured vault address ${this.#r} does not match the ${r} both batchers report`);return r}async#a(e,t,r,i){if(!this.sdk.signer)throw new n(e);let a=this.sdk.signer.requireWalletAccount(e);await t.isOperator(a.address,r)||await t.setOperator(r,i)}};function Z(e,t){return new X(e,t)}const Q={currentBatchId:{batcher:e=>[`zama.vault.currentBatchId`,{batcherAddress:b(e)}]},batchState:{batcher:e=>[`zama.vault.batchState`,{batcherAddress:b(e)}],batch:(e,t)=>[`zama.vault.batchState`,{batcherAddress:b(e),batchId:t}]},timeUntilDispatchable:{batcher:e=>[`zama.vault.timeUntilDispatchable`,{batcherAddress:b(e)}],batch:(e,t)=>[`zama.vault.timeUntilDispatchable`,{batcherAddress:b(e),batchId:t}]}};function $(e,t){e.invalidateQueries({queryKey:Q.currentBatchId.batcher(t)}),e.invalidateQueries({queryKey:Q.batchState.batcher(t)}),e.invalidateQueries({queryKey:Q.timeUntilDispatchable.batcher(t)})}function ee(e,t){v(e,t.fromToken),$(e,t.batcherAddress)}function te(e,t){v(e,t.fromToken),$(e,t.batcherAddress)}function ne(e,t){v(e,t.toToken)}function re(e,t){$(e,t)}function ie(e,t={}){let n=t.query??{};return{...y(n),queryKey:Q.currentBatchId.batcher(e.address),queryFn:async()=>e.currentBatchId(),enabled:n.enabled!==!1}}function ae(e,t={}){let n=t.query??{};return{...y(n),queryKey:Q.batchState.batch(e.address,t.batchId),queryFn:async t=>{let[,{batchId:n}]=t.queryKey;return i(n,`batchStateQueryOptions: batchId`),e.batchState(n)},enabled:t.batchId!==void 0&&n.enabled!==!1}}function oe(e,t={}){let n=t.query??{};return{...y(n),queryKey:Q.timeUntilDispatchable.batch(e.address,t.batchId),queryFn:async t=>{let[,{batchId:n}]=t.queryKey;return i(n,`timeUntilDispatchableQueryOptions: batchId`),e.timeUntilDispatchable(n)},enabled:t.batchId!==void 0&&n.enabled!==!1}}function se(e){return{mutationKey:[`zama.vault.deposit`,e.depositBatcher.address],mutationFn:async({amount:t,...n})=>e.deposit(t,n)}}function ce(e){return{mutationKey:[`zama.vault.redeem`,e.redeemBatcher.address],mutationFn:async({amount:t,...n})=>e.redeem(t,n)}}function le(e){return{mutationKey:[`zama.vault.join`,e.address],mutationFn:async({amount:t,beneficiary:n,...r})=>e.join(t,n,r)}}function ue(e){return{mutationKey:[`zama.vault.claim`,e.address],mutationFn:async({batchId:t,account:n})=>e.claim(t,n)}}function de(e){return{mutationKey:[`zama.vault.quit`,e.address],mutationFn:async({batchId:t})=>e.quit(t)}}function fe(e){return{mutationKey:[`zama.vault.recover`,e.address],mutationFn:async({batchId:t,account:n})=>e.recover(t,n)}}function pe(e){return{mutationKey:[`zama.vault.dispatchBatch`,e.address],mutationFn:async()=>e.dispatchBatch()}}export{K as BatchState,X as Vault,J as VaultBatcher,U as VaultTopics,L as batchCallbackDeadlineContract,R as batchCreatedAtContract,z as batchDispatchedAtContract,F as batchMinBatchAgeContract,O as batchStateContract,ae as batchStateQueryOptions,I as callbackDeadlineContract,C as claimContract,ue as claimMutationOptions,Z as createVault,Y as createVaultBatcher,D as currentBatchIdContract,ie as currentBatchIdQueryOptions,W as decodeJoined,se as depositMutationOptions,A as depositsContract,E as dispatchBatchContract,pe as dispatchBatchMutationOptions,B as exchangeRateContract,V as exchangeRateDecimalsContract,G as findJoined,M as fromTokenContract,ne as invalidateAfterClaim,re as invalidateAfterDispatchBatch,ee as invalidateAfterJoin,te as invalidateAfterQuit,$ as invalidateBatchQueries,S as joinContract,le as joinMutationOptions,P as minBatchAgeContract,H as pausedContract,w as quitContract,de as quitMutationOptions,T as recoverContract,fe as recoverMutationOptions,ce as redeemMutationOptions,oe as timeUntilDispatchableQueryOptions,N as toTokenContract,k as totalDepositsContract,j as vaultContract,Q as vaultQueryKeys};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{n as e,t}from"../fhevm-relayer-BEQ31nmT.js";import{t as n}from"../validation-ClSvPh6P.js";import{z as r}from"zod/mini";const i=e=>r._default(r.number().check(r.positive()),e),a=r.custom(e=>typeof e==`function`),o=r.object({offloadEncrypt:r._default(r.union([r.literal(`auto`),r.boolean()]),`auto`),offloadTimeouts:r.optional(r.object({spawn:i(e.spawn),init:i(e.init)})),offloadWorker:r.optional(r.union([r.string().check(r.minLength(1)),r.instanceof(URL),a]))});function s(e){let{offloadEncrypt:r,offloadTimeouts:i,offloadWorker:a,...s}=e??{},c=n(o,{offloadEncrypt:r,offloadTimeouts:i,offloadWorker:a});return{type:`web`,createRelayer:(e,n,r)=>new t({chain:e,options:s,telemetry:r&&{state:r,runtime:`web`},offloadEncrypt:c.offloadEncrypt,offloadTimeouts:c.offloadTimeouts,offloadWorker:c.offloadWorker,logger:n})}}export{s as web};
1
+ import{n as e,t}from"../fhevm-relayer-DnAUqf3b.js";import{t as n}from"../validation-ClSvPh6P.js";import{z as r}from"zod/mini";const i=e=>r._default(r.number().check(r.positive()),e),a=r.custom(e=>typeof e==`function`),o=r.object({offloadEncrypt:r._default(r.union([r.literal(`auto`),r.boolean()]),`auto`),offloadTimeouts:r.optional(r.object({spawn:i(e.spawn),init:i(e.init)})),offloadWorker:r.optional(r.union([r.string().check(r.minLength(1)),r.instanceof(URL),a]))});function s(e){let{offloadEncrypt:r,offloadTimeouts:i,offloadWorker:a,...s}=e??{},c=n(o,{offloadEncrypt:r,offloadTimeouts:i,offloadWorker:a});return{type:`web`,createRelayer:(e,n,r)=>new t({chain:e,options:s,telemetry:r&&{state:r,runtime:`web`},offloadEncrypt:c.offloadEncrypt,offloadTimeouts:c.offloadTimeouts,offloadWorker:c.offloadWorker,logger:n})}}export{s as web};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zama-fhe/sdk",
3
- "version": "3.7.1",
3
+ "version": "3.7.2",
4
4
  "description": "TypeScript SDK for Zama fhEVM confidential smart contracts",
5
5
  "keywords": [
6
6
  "blockchain",