{"version":3,"file":"wrappers-registry.cjs","names":["ZamaError","ZamaErrorCode","ZamaError","ZamaErrorCode","erc20Abi"],"sources":["../../src/errors/signing.ts","../../src/errors/signer.ts","../../src/utils/swallow.ts","../../src/abi/confidential-wrapper.abi.ts","../../src/contracts/confidential-wrapper.ts","../../src/contracts/erc20.ts","../../src/abi/erc165.abi.ts","../../src/contracts/erc165.ts","../../src/contracts/wrappers-registry.ts"],"sourcesContent":["import { ZamaError, ZamaErrorCode } from \"./base\";\n\n/** User rejected the wallet signature prompt. */\nexport class SigningRejectedError extends ZamaError {\n  constructor(message: string, options?: ErrorOptions) {\n    super(ZamaErrorCode.SigningRejected, message, options);\n    this.name = \"SigningRejectedError\";\n  }\n}\n\n/** Wallet signature failed for a reason other than rejection. */\nexport class SigningFailedError extends ZamaError {\n  constructor(message: string, options?: ErrorOptions) {\n    super(ZamaErrorCode.SigningFailed, message, options);\n    this.name = \"SigningFailedError\";\n  }\n}\n\n/**\n * Wrap a signing error as {@link SigningRejectedError} or {@link SigningFailedError}.\n * Detects user rejection via EIP-1193 code 4001 or message heuristics.\n */\nexport function wrapSigningError(error: unknown, context: string): never {\n  const hasCode4001 =\n    typeof error === \"object\" && error !== null && \"code\" in error && error.code === 4001;\n  const originalMsg = error instanceof Error ? error.message : String(error);\n  const lowerMsg = originalMsg.toLowerCase();\n  const hasRejectionMessage =\n    lowerMsg.includes(\"user rejected\") || lowerMsg.includes(\"user denied\");\n  const fullMessage = `${context}: ${originalMsg}`;\n  if (hasCode4001 || hasRejectionMessage) {\n    throw new SigningRejectedError(fullMessage, { cause: error });\n  }\n  throw new SigningFailedError(fullMessage, { cause: error });\n}\n","import { ZamaError, ZamaErrorCode } from \"./base\";\n\n/**\n * Base class for signer/account readiness failures.\n */\nexport class SignerRequiredError extends ZamaError {\n  readonly operation: string;\n\n  constructor(code: ZamaErrorCode, operation: string, message: string, options?: ErrorOptions) {\n    super(code, message, options);\n    this.name = \"SignerRequiredError\";\n    this.operation = operation;\n  }\n}\n\n/**\n * Thrown when an operation requires a signer but none is configured.\n *\n * The SDK can be constructed without a signer. Operations that need wallet\n * authority throw this before probing wallet state.\n *\n * @example\n * ```ts\n * try {\n *   await token.confidentialTransfer(\"0xTo\", 100n);\n * } catch (e) {\n *   if (e instanceof SignerNotConfiguredError) {\n *     // Fix SDK/provider configuration.\n *   }\n * }\n * ```\n */\nexport class SignerNotConfiguredError extends SignerRequiredError {\n  constructor(operation: string, options?: ErrorOptions) {\n    super(\n      ZamaErrorCode.SignerNotConfigured,\n      operation,\n      `Cannot ${operation} without a signer. Configure one via createConfig({ signer: ... }) or <ZamaProvider config={createConfig({ signer: ... })}>.`,\n      options,\n    );\n    this.name = \"SignerNotConfiguredError\";\n  }\n}\n\n/** Thrown when a signer exists but no wallet account is currently connected. */\nexport class WalletNotConnectedError extends SignerRequiredError {\n  constructor(operation: string, options?: ErrorOptions) {\n    super(\n      ZamaErrorCode.WalletNotConnected,\n      operation,\n      `Cannot ${operation} without a connected wallet account.`,\n      options,\n    );\n    this.name = \"WalletNotConnectedError\";\n  }\n}\n\n/** Thrown when an async adapter has not resolved its initial wallet account yet. */\nexport class WalletAccountNotReadyError extends SignerRequiredError {\n  constructor(operation: string, options?: ErrorOptions) {\n    super(\n      ZamaErrorCode.WalletAccountNotReady,\n      operation,\n      `Cannot ${operation} before the wallet account is ready.`,\n      options,\n    );\n    this.name = \"WalletAccountNotReadyError\";\n  }\n}\n\n/**\n * Narrow a nullable signer-dependent value or throw {@link SignerNotConfiguredError}.\n */\nexport function requireConfigured<T>(value: T, operation: string): NonNullable<T> {\n  if (value === null || value === undefined) {\n    throw new SignerNotConfiguredError(operation);\n  }\n  return value as NonNullable<T>;\n}\n","import type { GenericLogger } from \"../worker/worker.types\";\n\n/**\n * Runs a function and swallows any errors.\n *\n * The swallowed error is a handled, best-effort failure — when a logger is\n * supplied it is routed to the {@link GenericLogger} at `warn`, never to the\n * console. Most SDK call sites pass the SDK-wide logger; a few (e.g. a signer\n * constructed before `createConfig` exists) genuinely have none, so the logger\n * is optional and the failure is then silent.\n */\nexport async function swallow(\n  label: string,\n  fn: () => Promise<void> | void,\n  logger?: GenericLogger,\n): Promise<void> {\n  try {\n    await fn();\n  } catch (error) {\n    logger?.warn(`${label} failed`, { error });\n  }\n}\n","// DO NOT EDIT: generated by `pnpm abi:build` from\n// contracts/out/ConfidentialWrapperV3.sol/ConfidentialWrapperV3.json.\n// Regenerate after `pnpm contracts:build`; `pnpm abi:check` enforces this in CI.\nexport const confidentialWrapperAbi = [\n  {\n    type: \"function\",\n    name: \"UPGRADE_INTERFACE_VERSION\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"acceptOwnership\",\n    inputs: [],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"blockUser\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialBalanceOf\",\n    inputs: [\n      {\n        name: \"account\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialProtocolId\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTotalSupply\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransfer\",\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"externalEuint64\",\n      },\n      {\n        name: \"inputProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransfer\",\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransferAndCall\",\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n      {\n        name: \"data\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"transferred\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransferAndCall\",\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"externalEuint64\",\n      },\n      {\n        name: \"inputProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n      {\n        name: \"data\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"transferred\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransferFrom\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"externalEuint64\",\n      },\n      {\n        name: \"inputProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"transferred\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransferFrom\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"transferred\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransferFromAndCall\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"externalEuint64\",\n      },\n      {\n        name: \"inputProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n      {\n        name: \"data\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"transferred\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"confidentialTransferFromAndCall\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n      {\n        name: \"data\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"transferred\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"contractURI\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"decimals\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint8\",\n        internalType: \"uint8\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"discloseEncryptedAmount\",\n    inputs: [\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n      {\n        name: \"cleartextAmount\",\n        type: \"uint64\",\n        internalType: \"uint64\",\n      },\n      {\n        name: \"decryptionProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"finalizeUnwrap\",\n    inputs: [\n      {\n        name: \"unwrapRequestId\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n      {\n        name: \"unwrapAmountCleartext\",\n        type: \"uint64\",\n        internalType: \"uint64\",\n      },\n      {\n        name: \"decryptionProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"getUnderlyingDenyListSelector\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"isSet\",\n        type: \"bool\",\n        internalType: \"bool\",\n      },\n      {\n        name: \"selector\",\n        type: \"bytes4\",\n        internalType: \"bytes4\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"inferredTotalSupply\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"initialize\",\n    inputs: [\n      {\n        name: \"name_\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n      {\n        name: \"symbol_\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n      {\n        name: \"contractURI_\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n      {\n        name: \"underlying_\",\n        type: \"address\",\n        internalType: \"contract IERC20\",\n      },\n      {\n        name: \"owner_\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"isBlocked\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bool\",\n        internalType: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"isOperator\",\n    inputs: [\n      {\n        name: \"holder\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"spender\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bool\",\n        internalType: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"maxTotalSupply\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"name\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"onTransferReceived\",\n    inputs: [\n      {\n        name: \"operator\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n      {\n        name: \"data\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes4\",\n        internalType: \"bytes4\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"owner\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"pendingOwner\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"proxiableUUID\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"rate\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"reinitializeV2\",\n    inputs: [],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"reinitializeV3\",\n    inputs: [\n      {\n        name: \"blockedUsers\",\n        type: \"address[]\",\n        internalType: \"address[]\",\n      },\n      {\n        name: \"underlyingDenyListSelector\",\n        type: \"bytes4\",\n        internalType: \"bytes4\",\n      },\n      {\n        name: \"hasUnderlyingDenyListSelector_\",\n        type: \"bool\",\n        internalType: \"bool\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"renounceOwnership\",\n    inputs: [],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"requestDiscloseEncryptedAmount\",\n    inputs: [\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"setOperator\",\n    inputs: [\n      {\n        name: \"operator\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"until\",\n        type: \"uint48\",\n        internalType: \"uint48\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"supportsInterface\",\n    inputs: [\n      {\n        name: \"interfaceId\",\n        type: \"bytes4\",\n        internalType: \"bytes4\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bool\",\n        internalType: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"symbol\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"string\",\n        internalType: \"string\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"transferOwnership\",\n    inputs: [\n      {\n        name: \"newOwner\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"unblockUser\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"underlying\",\n    inputs: [],\n    outputs: [\n      {\n        name: \"\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"unwrap\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        internalType: \"externalEuint64\",\n      },\n      {\n        name: \"inputProof\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"unwrap\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"function\",\n    name: \"unwrapAmount\",\n    inputs: [\n      {\n        name: \"unwrapRequestId\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"unwrapRequester\",\n    inputs: [\n      {\n        name: \"unwrapRequestId\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n  {\n    type: \"function\",\n    name: \"upgradeToAndCall\",\n    inputs: [\n      {\n        name: \"newImplementation\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"data\",\n        type: \"bytes\",\n        internalType: \"bytes\",\n      },\n    ],\n    outputs: [],\n    stateMutability: \"payable\",\n  },\n  {\n    type: \"function\",\n    name: \"wrap\",\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n    ],\n    stateMutability: \"nonpayable\",\n  },\n  {\n    type: \"event\",\n    name: \"AmountDiscloseRequested\",\n    inputs: [\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        indexed: true,\n        internalType: \"euint64\",\n      },\n      {\n        name: \"requester\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"AmountDisclosed\",\n    inputs: [\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        indexed: true,\n        internalType: \"euint64\",\n      },\n      {\n        name: \"amount\",\n        type: \"uint64\",\n        indexed: false,\n        internalType: \"uint64\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"ConfidentialTransfer\",\n    inputs: [\n      {\n        name: \"from\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"to\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        indexed: true,\n        internalType: \"euint64\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"Initialized\",\n    inputs: [\n      {\n        name: \"version\",\n        type: \"uint64\",\n        indexed: false,\n        internalType: \"uint64\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"OperatorSet\",\n    inputs: [\n      {\n        name: \"holder\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"operator\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"until\",\n        type: \"uint48\",\n        indexed: false,\n        internalType: \"uint48\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"OwnershipTransferStarted\",\n    inputs: [\n      {\n        name: \"previousOwner\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"newOwner\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"OwnershipTransferred\",\n    inputs: [\n      {\n        name: \"previousOwner\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"newOwner\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"PublicDecryptionVerified\",\n    inputs: [\n      {\n        name: \"handlesList\",\n        type: \"bytes32[]\",\n        indexed: false,\n        internalType: \"bytes32[]\",\n      },\n      {\n        name: \"abiEncodedCleartexts\",\n        type: \"bytes\",\n        indexed: false,\n        internalType: \"bytes\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"UnwrapFinalized\",\n    inputs: [\n      {\n        name: \"receiver\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"unwrapRequestId\",\n        type: \"bytes32\",\n        indexed: true,\n        internalType: \"bytes32\",\n      },\n      {\n        name: \"encryptedAmount\",\n        type: \"bytes32\",\n        indexed: false,\n        internalType: \"euint64\",\n      },\n      {\n        name: \"cleartextAmount\",\n        type: \"uint64\",\n        indexed: false,\n        internalType: \"uint64\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"UnwrapRequested\",\n    inputs: [\n      {\n        name: \"receiver\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"unwrapRequestId\",\n        type: \"bytes32\",\n        indexed: true,\n        internalType: \"bytes32\",\n      },\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        indexed: false,\n        internalType: \"euint64\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"Upgraded\",\n    inputs: [\n      {\n        name: \"implementation\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"UserBlocked\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"UserUnblocked\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"event\",\n    name: \"Wrap\",\n    inputs: [\n      {\n        name: \"to\",\n        type: \"address\",\n        indexed: true,\n        internalType: \"address\",\n      },\n      {\n        name: \"roundedAmount\",\n        type: \"uint256\",\n        indexed: false,\n        internalType: \"uint256\",\n      },\n      {\n        name: \"encryptedWrappedAmount\",\n        type: \"bytes32\",\n        indexed: false,\n        internalType: \"euint64\",\n      },\n    ],\n    anonymous: false,\n  },\n  {\n    type: \"error\",\n    name: \"AddressEmptyCode\",\n    inputs: [\n      {\n        name: \"target\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"BlockedUser\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC1967InvalidImplementation\",\n    inputs: [\n      {\n        name: \"implementation\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC1967NonPayable\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984InvalidReceiver\",\n    inputs: [\n      {\n        name: \"receiver\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984InvalidReceiver\",\n    inputs: [\n      {\n        name: \"receiver\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984InvalidSender\",\n    inputs: [\n      {\n        name: \"sender\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984TotalSupplyOverflow\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984UnauthorizedCaller\",\n    inputs: [\n      {\n        name: \"caller\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984UnauthorizedSpender\",\n    inputs: [\n      {\n        name: \"holder\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n      {\n        name: \"spender\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984UnauthorizedUseOfEncryptedAmount\",\n    inputs: [\n      {\n        name: \"amount\",\n        type: \"bytes32\",\n        internalType: \"euint64\",\n      },\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ERC7984ZeroBalance\",\n    inputs: [\n      {\n        name: \"holder\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"FailedCall\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"InvalidInitialization\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"InvalidKMSSignatures\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"InvalidUnderlyingDenyListResponse\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"InvalidUnwrapRequest\",\n    inputs: [\n      {\n        name: \"unwrapRequestId\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"NotInitializing\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"OwnableInvalidOwner\",\n    inputs: [\n      {\n        name: \"owner\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"OwnableUnauthorizedAccount\",\n    inputs: [\n      {\n        name: \"account\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"SafeCastOverflowedUintDowncast\",\n    inputs: [\n      {\n        name: \"bits\",\n        type: \"uint8\",\n        internalType: \"uint8\",\n      },\n      {\n        name: \"value\",\n        type: \"uint256\",\n        internalType: \"uint256\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"SafeERC20FailedOperation\",\n    inputs: [\n      {\n        name: \"token\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"SenderNotAllowedToUseHandle\",\n    inputs: [\n      {\n        name: \"handle\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n      {\n        name: \"sender\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"UUPSUnauthorizedCallContext\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"UUPSUnsupportedProxiableUUID\",\n    inputs: [\n      {\n        name: \"slot\",\n        type: \"bytes32\",\n        internalType: \"bytes32\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"UnderlyingDenyListCallFailed\",\n    inputs: [],\n  },\n  {\n    type: \"error\",\n    name: \"UnderlyingDenyListedAddress\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"UserAlreadyBlocked\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"UserAlreadyUnblocked\",\n    inputs: [\n      {\n        name: \"user\",\n        type: \"address\",\n        internalType: \"address\",\n      },\n    ],\n  },\n  {\n    type: \"error\",\n    name: \"ZamaProtocolUnsupported\",\n    inputs: [],\n  },\n] as const;\n","import type { Address, Hex } from \"viem\";\nimport { confidentialWrapperAbi } from \"../abi/confidential-wrapper.abi\";\nimport type { EncryptedValue } from \"../relayer/relayer-sdk.types\";\n\n/**\n * Returns the contract config to read an encrypted balance.\n *\n * @example\n * ```ts\n * const handle = await provider.readContract(\n *   confidentialBalanceOfContract(tokenAddress, userAddress),\n * );\n * ```\n */\nexport function confidentialBalanceOfContract(tokenAddress: Address, userAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"confidentialBalanceOf\",\n    args: [userAddress],\n  } as const;\n}\n\n/**\n * Returns the contract config for a confidential transfer.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   confidentialTransferContract(tokenAddress, to, encryptedValues[0], inputProof),\n * );\n * ```\n */\nexport function confidentialTransferContract(\n  encryptedErc20: Address,\n  to: Address,\n  encryptedAmount: EncryptedValue,\n  inputProof: Hex,\n) {\n  return {\n    address: encryptedErc20,\n    abi: confidentialWrapperAbi,\n    functionName: \"confidentialTransfer\",\n    args: [to, encryptedAmount, inputProof],\n  } as const;\n}\n\n/**\n * Returns the contract config for a confidential transferFrom.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   confidentialTransferFromContract(tokenAddress, from, to, encryptedValues[0], inputProof),\n * );\n * ```\n */\nexport function confidentialTransferFromContract(\n  encryptedErc20: Address,\n  from: Address,\n  to: Address,\n  encryptedAmount: EncryptedValue,\n  inputProof: Hex,\n) {\n  return {\n    address: encryptedErc20,\n    abi: confidentialWrapperAbi,\n    functionName: \"confidentialTransferFrom\",\n    args: [from, to, encryptedAmount, inputProof],\n  } as const;\n}\n\n/**\n * Returns the contract config for checking operator status.\n *\n * @example\n * ```ts\n * const isOperator = await provider.readContract(\n *   isOperatorContract(tokenAddress, holder, spender),\n * );\n * ```\n */\nexport function isOperatorContract(tokenAddress: Address, holder: Address, spender: Address) {\n  return {\n    address: tokenAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"isOperator\",\n    args: [holder, spender],\n  } as const;\n}\n\n/**\n * Returns the contract config for setting an operator.\n * Defaults until to 1 hour from now.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   setOperatorContract(tokenAddress, operator),\n * );\n * ```\n */\nexport function setOperatorContract(tokenAddress: Address, operator: Address, until?: number) {\n  const effectiveUntil = until ?? Math.floor(Date.now() / 1000) + 3600;\n  return {\n    address: tokenAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"setOperator\",\n    args: [operator, effectiveUntil],\n  } as const;\n}\n\n/**\n * Returns the contract config for an unwrap with newly encrypted amount.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   unwrapContract(encryptedErc20, from, to, encryptedValues[0], inputProof),\n * );\n * ```\n */\nexport function unwrapContract(\n  encryptedErc20: Address,\n  from: Address,\n  to: Address,\n  encryptedAmount: EncryptedValue,\n  inputProof: Hex,\n) {\n  return {\n    address: encryptedErc20,\n    abi: confidentialWrapperAbi,\n    functionName: \"unwrap\",\n    args: [from, to, encryptedAmount, inputProof],\n  } as const;\n}\n\n/**\n * Returns the contract config for an unwrap with an existing balance handle.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   unwrapFromBalanceContract(encryptedErc20, from, to, encryptedBalance),\n * );\n * ```\n */\nexport function unwrapFromBalanceContract(\n  encryptedErc20: Address,\n  from: Address,\n  to: Address,\n  encryptedBalance: EncryptedValue,\n) {\n  return {\n    address: encryptedErc20,\n    abi: confidentialWrapperAbi,\n    functionName: \"unwrap\",\n    args: [from, to, encryptedBalance],\n  } as const;\n}\n\n/**\n * Returns the contract config to read the confidential (encrypted) total supply.\n *\n * @example\n * ```ts\n * const handle = await provider.readContract(\n *   confidentialTotalSupplyContract(tokenAddress),\n * );\n * ```\n */\nexport function confidentialTotalSupplyContract(tokenAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"confidentialTotalSupply\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to read the wrap/unwrap conversion rate.\n *\n * @example\n * ```ts\n * const rate = await provider.readContract(rateContract(tokenAddress));\n * ```\n */\nexport function rateContract(tokenAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"rate\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config for finalizing an unwrap.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   finalizeUnwrapContract(wrapper, unwrapRequestId, cleartext, proof),\n * );\n * ```\n */\nexport function finalizeUnwrapContract(\n  wrapper: Address,\n  unwrapRequestId: EncryptedValue,\n  unwrapAmountCleartext: bigint,\n  decryptionProof: Hex,\n) {\n  return {\n    address: wrapper,\n    abi: confidentialWrapperAbi,\n    functionName: \"finalizeUnwrap\",\n    args: [unwrapRequestId, unwrapAmountCleartext, decryptionProof],\n  } as const;\n}\n\n/**\n * Returns the contract config to read the underlying ERC-20 token of a wrapper.\n *\n * @example\n * ```ts\n * const token = await provider.readContract(underlyingContract(wrapperAddress));\n * ```\n */\nexport function underlyingContract(wrapperAddress: Address) {\n  return {\n    address: wrapperAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"underlying\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to read the inferred plaintext total supply.\n *\n * @example\n * ```ts\n * const supply = await provider.readContract(\n *   inferredTotalSupplyContract(wrapperAddress),\n * );\n * ```\n */\nexport function inferredTotalSupplyContract(wrapperAddress: Address) {\n  return {\n    address: wrapperAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"inferredTotalSupply\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config for a wrap (shield) operation.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   wrapContract(wrapperAddress, to, amount),\n * );\n * ```\n */\nexport function wrapContract(wrapperAddress: Address, to: Address, amount: bigint) {\n  return {\n    address: wrapperAddress,\n    abi: confidentialWrapperAbi,\n    functionName: \"wrap\",\n    args: [to, amount],\n  } as const;\n}\n","import { erc20Abi, type Address } from \"viem\";\n\n/**\n * Returns the contract config to read a token's name.\n *\n * @example\n * ```ts\n * const name = await provider.readContract(nameContract(tokenAddress));\n * ```\n */\nexport function nameContract(tokenAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"name\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to read a token's symbol.\n *\n * @example\n * ```ts\n * const symbol = await provider.readContract(symbolContract(tokenAddress));\n * ```\n */\nexport function symbolContract(tokenAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"symbol\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to read a token's decimals.\n *\n * @example\n * ```ts\n * const decimals = await provider.readContract(decimalsContract(tokenAddress));\n * ```\n */\nexport function decimalsContract(tokenAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"decimals\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to read an ERC-20 token's total supply.\n *\n * @example\n * ```ts\n * const supply = await provider.readContract(erc20TotalSupplyContract(tokenAddress));\n * ```\n */\nexport function erc20TotalSupplyContract(tokenAddress: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"totalSupply\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to read an ERC-20 balance.\n *\n * @example\n * ```ts\n * const balance = await provider.readContract(\n *   balanceOfContract(tokenAddress, account),\n * );\n * ```\n */\nexport function balanceOfContract(tokenAddress: Address, account: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"balanceOf\",\n    args: [account],\n  } as const;\n}\n\n/**\n * Returns the contract config to read an ERC-20 allowance.\n *\n * @example\n * ```ts\n * const allowance = await provider.readContract(\n *   allowanceContract(tokenAddress, owner, spender),\n * );\n * ```\n */\nexport function allowanceContract(tokenAddress: Address, owner: Address, spender: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"allowance\",\n    args: [owner, spender],\n  } as const;\n}\n\n/**\n * Returns the contract config for an ERC-20 approve.\n *\n * @example\n * ```ts\n * const txHash = await signer.writeContract(\n *   approveContract(tokenAddress, spender, amount),\n * );\n * ```\n */\nexport function approveContract(tokenAddress: Address, spender: Address, value: bigint) {\n  return {\n    address: tokenAddress,\n    abi: erc20Abi,\n    functionName: \"approve\",\n    args: [spender, value],\n  } as const;\n}\n","// DO NOT EDIT: generated by `pnpm abi:build` from\n// contracts/out/IERC165.sol/IERC165.json.\n// Regenerate after `pnpm contracts:build`; `pnpm abi:check` enforces this in CI.\nexport const erc165Abi = [\n  {\n    type: \"function\",\n    name: \"supportsInterface\",\n    inputs: [\n      {\n        name: \"interfaceId\",\n        type: \"bytes4\",\n        internalType: \"bytes4\",\n      },\n    ],\n    outputs: [\n      {\n        name: \"\",\n        type: \"bool\",\n        internalType: \"bool\",\n      },\n    ],\n    stateMutability: \"view\",\n  },\n] as const;\n","import type { Address } from \"viem\";\nimport { erc165Abi } from \"../abi/erc165.abi\";\n\n/** ERC-165 interface ID for IERC7984 (confidential fungible token). */\nexport const ERC7984_INTERFACE_ID = \"0x4958f2a4\" as const;\n\n/** ERC-165 interface ID for IERC7984ERC20Wrapper (confidential wrapper). */\nexport const ERC7984_WRAPPER_INTERFACE_ID = \"0x1f1c62b2\" as const;\n\n/** ERC-165 interface ID for ERC-1363 (payable token — `transferAndCall`). */\nexport const ERC1363_INTERFACE_ID = \"0xb0202a11\" as const;\n\n/**\n * Returns the contract config for an ERC-165 `supportsInterface` check.\n *\n * Use with {@link ERC7984_INTERFACE_ID} to detect confidential tokens,\n * or {@link ERC7984_WRAPPER_INTERFACE_ID} to detect wrappers.\n *\n * @example\n * ```ts\n * const isConfidential = await provider.readContract(\n *   supportsInterfaceContract(tokenAddress, ERC7984_INTERFACE_ID),\n * );\n * ```\n */\nexport function supportsInterfaceContract(tokenAddress: Address, interfaceId: Address) {\n  return {\n    address: tokenAddress,\n    abi: erc165Abi,\n    functionName: \"supportsInterface\",\n    args: [interfaceId],\n  } as const;\n}\n\n/**\n * Returns contract config to check if a token implements IERC7984 (confidential fungible token).\n *\n * @example\n * ```ts\n * const isConfidential = await provider.readContract(\n *   isConfidentialTokenContract(\"0xTokenAddress\"),\n * );\n * ```\n */\nexport function isConfidentialTokenContract(tokenAddress: Address) {\n  return supportsInterfaceContract(tokenAddress, ERC7984_INTERFACE_ID);\n}\n\n/**\n * Returns contract config to check if a token implements IERC7984ERC20Wrapper (confidential wrapper).\n *\n * @example\n * ```ts\n * const isWrapper = await provider.readContract(\n *   isConfidentialWrapperContract(\"0xWrapperAddress\"),\n * );\n * ```\n */\nexport function isConfidentialWrapperContract(tokenAddress: Address) {\n  return supportsInterfaceContract(tokenAddress, ERC7984_WRAPPER_INTERFACE_ID);\n}\n\n/**\n * Returns contract config to check if a token implements ERC-1363 (payable token).\n *\n * @example\n * ```ts\n * const isPayable = await provider.readContract(\n *   isPayableTokenContract(\"0xTokenAddress\"),\n * );\n * ```\n */\nexport function isPayableTokenContract(tokenAddress: Address) {\n  return supportsInterfaceContract(tokenAddress, ERC1363_INTERFACE_ID);\n}\n","import type { Address } from \"viem\";\n\nexport const wrappersRegistryAbi = [\n  {\n    inputs: [],\n    name: \"getTokenConfidentialTokenPairs\",\n    outputs: [\n      {\n        components: [\n          { internalType: \"address\", name: \"tokenAddress\", type: \"address\" },\n          {\n            internalType: \"address\",\n            name: \"confidentialTokenAddress\",\n            type: \"address\",\n          },\n          { internalType: \"bool\", name: \"isValid\", type: \"bool\" },\n        ],\n        internalType: \"struct ConfidentialTokenWrappersRegistry.TokenWrapperPair[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [],\n    name: \"getTokenConfidentialTokenPairsLength\",\n    outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      { internalType: \"uint256\", name: \"fromIndex\", type: \"uint256\" },\n      { internalType: \"uint256\", name: \"toIndex\", type: \"uint256\" },\n    ],\n    name: \"getTokenConfidentialTokenPairsSlice\",\n    outputs: [\n      {\n        components: [\n          { internalType: \"address\", name: \"tokenAddress\", type: \"address\" },\n          {\n            internalType: \"address\",\n            name: \"confidentialTokenAddress\",\n            type: \"address\",\n          },\n          { internalType: \"bool\", name: \"isValid\", type: \"bool\" },\n        ],\n        internalType: \"struct ConfidentialTokenWrappersRegistry.TokenWrapperPair[]\",\n        name: \"\",\n        type: \"tuple[]\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [{ internalType: \"uint256\", name: \"index\", type: \"uint256\" }],\n    name: \"getTokenConfidentialTokenPair\",\n    outputs: [\n      {\n        components: [\n          { internalType: \"address\", name: \"tokenAddress\", type: \"address\" },\n          {\n            internalType: \"address\",\n            name: \"confidentialTokenAddress\",\n            type: \"address\",\n          },\n          { internalType: \"bool\", name: \"isValid\", type: \"bool\" },\n        ],\n        internalType: \"struct ConfidentialTokenWrappersRegistry.TokenWrapperPair\",\n        name: \"\",\n        type: \"tuple\",\n      },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [{ internalType: \"address\", name: \"tokenAddress\", type: \"address\" }],\n    name: \"getConfidentialTokenAddress\",\n    outputs: [\n      { internalType: \"bool\", name: \"\", type: \"bool\" },\n      { internalType: \"address\", name: \"\", type: \"address\" },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"confidentialTokenAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"getTokenAddress\",\n    outputs: [\n      { internalType: \"bool\", name: \"\", type: \"bool\" },\n      { internalType: \"address\", name: \"\", type: \"address\" },\n    ],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"confidentialTokenAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"isConfidentialTokenValid\",\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n    stateMutability: \"view\",\n    type: \"function\",\n  },\n  {\n    inputs: [{ internalType: \"address\", name: \"initialOwner\", type: \"address\" }],\n    name: \"initialize\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      { internalType: \"address\", name: \"tokenAddress\", type: \"address\" },\n      { internalType: \"address\", name: \"confidentialTokenAddress\", type: \"address\" },\n    ],\n    name: \"registerConfidentialToken\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n  {\n    inputs: [\n      {\n        internalType: \"address\",\n        name: \"confidentialTokenAddress\",\n        type: \"address\",\n      },\n    ],\n    name: \"revokeConfidentialToken\",\n    outputs: [],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n  },\n] as const;\n\nexport interface TokenWrapperPair {\n  readonly tokenAddress: Address;\n  readonly confidentialTokenAddress: Address;\n  readonly isValid: boolean;\n}\n\n/** Extended pair with on-chain metadata for both tokens. */\nexport interface TokenWrapperPairWithMetadata extends TokenWrapperPair {\n  readonly underlying: {\n    readonly name: string;\n    readonly symbol: string;\n    readonly decimals: number;\n    readonly totalSupply: bigint;\n  };\n  readonly confidential: {\n    readonly name: string;\n    readonly symbol: string;\n    readonly decimals: number;\n  };\n}\n\n/** Paginated result set modelled after standard API pagination. */\nexport interface PaginatedResult<T> {\n  readonly items: readonly T[];\n  readonly total: number;\n  readonly page: number;\n  readonly pageSize: number;\n}\n\n/**\n * Returns the contract config to fetch all token wrapper pairs.\n *\n * @example\n * ```ts\n * const pairs = await client.readContract(\n *   getTokenPairsContract(registryAddress),\n * );\n * ```\n */\nexport function getTokenPairsContract(registry: Address) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"getTokenConfidentialTokenPairs\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to get the number of token wrapper pairs.\n *\n * @example\n * ```ts\n * const length = await client.readContract(\n *   getTokenPairsLengthContract(registryAddress),\n * );\n * ```\n */\nexport function getTokenPairsLengthContract(registry: Address) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"getTokenConfidentialTokenPairsLength\",\n    args: [],\n  } as const;\n}\n\n/**\n * Returns the contract config to fetch a slice of token wrapper pairs.\n *\n * @example\n * ```ts\n * const pairs = await client.readContract(\n *   getTokenPairsSliceContract(registryAddress, 0n, 10n),\n * );\n * ```\n */\nexport function getTokenPairsSliceContract(registry: Address, fromIndex: bigint, toIndex: bigint) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"getTokenConfidentialTokenPairsSlice\",\n    args: [fromIndex, toIndex],\n  } as const;\n}\n\n/**\n * Returns the contract config to fetch a single token wrapper pair by index.\n *\n * @example\n * ```ts\n * const pair = await client.readContract(\n *   getTokenPairContract(registryAddress, 0n),\n * );\n * ```\n */\nexport function getTokenPairContract(registry: Address, index: bigint) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"getTokenConfidentialTokenPair\",\n    args: [index],\n  } as const;\n}\n\n/**\n * Returns the contract config to look up the confidential token for a given plain token.\n *\n * @example\n * ```ts\n * const [isValid, confidentialToken] = await client.readContract(\n *   getConfidentialTokenAddressContract(registryAddress, tokenAddress),\n * );\n * // isValid=false + confidentialToken=zeroAddress → not registered\n * // isValid=false + confidentialToken=nonZeroAddress → registered but revoked\n * // isValid=true  + confidentialToken=nonZeroAddress → registered and valid\n * ```\n */\nexport function getConfidentialTokenAddressContract(registry: Address, tokenAddress: Address) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"getConfidentialTokenAddress\",\n    args: [tokenAddress],\n  } as const;\n}\n\n/**\n * Returns the contract config to look up the plain token for a given confidential token.\n *\n * @example\n * ```ts\n * const [isValid, token] = await client.readContract(\n *   getTokenAddressContract(registryAddress, confidentialTokenAddress),\n * );\n * // isValid=false + token=zeroAddress → not registered\n * // isValid=false + token=nonZeroAddress → registered but revoked\n * // isValid=true  + token=nonZeroAddress → registered and valid\n * ```\n */\nexport function getTokenAddressContract(registry: Address, confidentialTokenAddress: Address) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"getTokenAddress\",\n    args: [confidentialTokenAddress],\n  } as const;\n}\n\n/**\n * Returns the contract config to check if a confidential token is valid.\n *\n * @example\n * ```ts\n * const isValid = await client.readContract(\n *   isConfidentialTokenValidContract(registryAddress, confidentialTokenAddress),\n * );\n * ```\n */\nexport function isConfidentialTokenValidContract(\n  registry: Address,\n  confidentialTokenAddress: Address,\n) {\n  return {\n    address: registry,\n    abi: wrappersRegistryAbi,\n    functionName: \"isConfidentialTokenValid\",\n    args: [confidentialTokenAddress],\n  } as const;\n}\n"],"mappings":"uDAGA,IAAa,EAAb,cAA0CA,EAAAA,CAAU,CAClD,YAAY,EAAiB,EAAwB,CACnD,MAAMC,EAAAA,EAAc,gBAAiB,EAAS,CAAO,EACrD,KAAK,KAAO,sBACd,CACF,EAGa,EAAb,cAAwCD,EAAAA,CAAU,CAChD,YAAY,EAAiB,EAAwB,CACnD,MAAMC,EAAAA,EAAc,cAAe,EAAS,CAAO,EACnD,KAAK,KAAO,oBACd,CACF,EAMA,SAAgB,EAAiB,EAAgB,EAAwB,CACvE,IAAM,EACJ,OAAO,GAAU,YAAY,GAAkB,SAAU,GAAS,EAAM,OAAS,KAC7E,EAAc,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EACnE,EAAW,EAAY,YAAY,EACnC,EACJ,EAAS,SAAS,eAAe,GAAK,EAAS,SAAS,aAAa,EACjE,EAAc,GAAG,EAAQ,IAAI,IAInC,MAHI,GAAe,EACX,IAAI,EAAqB,EAAa,CAAE,MAAO,CAAM,CAAC,EAExD,IAAI,EAAmB,EAAa,CAAE,MAAO,CAAM,CAAC,CAC5D,CC7BA,IAAa,EAAb,cAAyCC,EAAAA,CAAU,CACjD,UAEA,YAAY,EAAqB,EAAmB,EAAiB,EAAwB,CAC3F,MAAM,EAAM,EAAS,CAAO,EAC5B,KAAK,KAAO,sBACZ,KAAK,UAAY,CACnB,CACF,EAmBa,EAAb,cAA8C,CAAoB,CAChE,YAAY,EAAmB,EAAwB,CACrD,MACEC,EAAAA,EAAc,oBACd,EACA,UAAU,EAAU,8HACpB,CACF,EACA,KAAK,KAAO,0BACd,CACF,EAGa,EAAb,cAA6C,CAAoB,CAC/D,YAAY,EAAmB,EAAwB,CACrD,MACEA,EAAAA,EAAc,mBACd,EACA,UAAU,EAAU,sCACpB,CACF,EACA,KAAK,KAAO,yBACd,CACF,EAGa,EAAb,cAAgD,CAAoB,CAClE,YAAY,EAAmB,EAAwB,CACrD,MACEA,EAAAA,EAAc,sBACd,EACA,UAAU,EAAU,sCACpB,CACF,EACA,KAAK,KAAO,4BACd,CACF,EAKA,SAAgB,EAAqB,EAAU,EAAmC,CAChF,GAAI,GAAU,KACZ,MAAM,IAAI,EAAyB,CAAS,EAE9C,OAAO,CACT,CCnEA,eAAsB,EACpB,EACA,EACA,EACe,CACf,GAAI,CACF,MAAM,EAAG,CACX,OAAS,EAAO,CACd,GAAQ,KAAK,GAAG,EAAM,SAAU,CAAE,OAAM,CAAC,CAC3C,CACF,CClBA,MAAa,EAAyB,CACpC,CACE,KAAM,WACN,KAAM,4BACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,kBACN,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,YACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,wBACN,OAAQ,CACN,CACE,KAAM,UACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,yBACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,0BACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,uBACN,OAAQ,CACN,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,aAAc,iBAChB,EACA,CACE,KAAM,aACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,uBACN,OAAQ,CACN,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,8BACN,OAAQ,CACN,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,cACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,8BACN,OAAQ,CACN,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,aAAc,iBAChB,EACA,CACE,KAAM,aACN,KAAM,QACN,aAAc,OAChB,EACA,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,cACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,2BACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,aAAc,iBAChB,EACA,CACE,KAAM,aACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,cACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,2BACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,cACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,kCACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,aAAc,iBAChB,EACA,CACE,KAAM,aACN,KAAM,QACN,aAAc,OAChB,EACA,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,cACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,kCACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,cACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,cACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,WACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,0BACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,SACN,aAAc,QAChB,EACA,CACE,KAAM,kBACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,iBACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,wBACN,KAAM,SACN,aAAc,QAChB,EACA,CACE,KAAM,kBACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,gCACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,QACN,KAAM,OACN,aAAc,MAChB,EACA,CACE,KAAM,WACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,sBACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,aACN,OAAQ,CACN,CACE,KAAM,QACN,KAAM,SACN,aAAc,QAChB,EACA,CACE,KAAM,UACN,KAAM,SACN,aAAc,QAChB,EACA,CACE,KAAM,eACN,KAAM,SACN,aAAc,QAChB,EACA,CACE,KAAM,cACN,KAAM,UACN,aAAc,iBAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,YACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,OACN,aAAc,MAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,aACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,UACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,OACN,aAAc,MAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,iBACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,qBACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,eACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,gBACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,iBACN,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,iBACN,OAAQ,CACN,CACE,KAAM,eACN,KAAM,YACN,aAAc,WAChB,EACA,CACE,KAAM,6BACN,KAAM,SACN,aAAc,QAChB,EACA,CACE,KAAM,iCACN,KAAM,OACN,aAAc,MAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,oBACN,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,iCACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,cACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,QACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,oBACN,OAAQ,CACN,CACE,KAAM,cACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,OACN,aAAc,MAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,SACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,SACN,aAAc,QAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,oBACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,cACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,aACN,OAAQ,CAAC,EACT,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,SACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,aAAc,iBAChB,EACA,CACE,KAAM,aACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,SACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,WACN,KAAM,eACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,kBACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,MACnB,EACA,CACE,KAAM,WACN,KAAM,mBACN,OAAQ,CACN,CACE,KAAM,oBACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,CACF,EACA,QAAS,CAAC,EACV,gBAAiB,SACnB,EACA,CACE,KAAM,WACN,KAAM,OACN,OAAQ,CACN,CACE,KAAM,KACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,QAAS,CACP,CACE,KAAM,GACN,KAAM,UACN,aAAc,SAChB,CACF,EACA,gBAAiB,YACnB,EACA,CACE,KAAM,QACN,KAAM,0BACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,YACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,kBACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,SACN,QAAS,GACT,aAAc,QAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,uBACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,KACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,cACN,OAAQ,CACN,CACE,KAAM,UACN,KAAM,SACN,QAAS,GACT,aAAc,QAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,cACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,WACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,QACN,KAAM,SACN,QAAS,GACT,aAAc,QAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,2BACN,OAAQ,CACN,CACE,KAAM,gBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,WACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,uBACN,OAAQ,CACN,CACE,KAAM,gBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,WACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,2BACN,OAAQ,CACN,CACE,KAAM,cACN,KAAM,YACN,QAAS,GACT,aAAc,WAChB,EACA,CACE,KAAM,uBACN,KAAM,QACN,QAAS,GACT,aAAc,OAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,kBACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,SACN,QAAS,GACT,aAAc,QAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,kBACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,kBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,WACN,OAAQ,CACN,CACE,KAAM,iBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,cACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,gBACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,OACN,OAAQ,CACN,CACE,KAAM,KACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,gBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,EACA,CACE,KAAM,yBACN,KAAM,UACN,QAAS,GACT,aAAc,SAChB,CACF,EACA,UAAW,EACb,EACA,CACE,KAAM,QACN,KAAM,mBACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,cACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,+BACN,OAAQ,CACN,CACE,KAAM,iBACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,oBACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,yBACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,yBACN,OAAQ,CACN,CACE,KAAM,WACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,uBACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,6BACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,4BACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,6BACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,UACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,0CACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,OACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,qBACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,aACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,wBACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,uBACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,oCACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,uBACN,OAAQ,CACN,CACE,KAAM,kBACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,kBACN,OAAQ,CAAC,CACX,EACA,CACE,KAAM,QACN,KAAM,sBACN,OAAQ,CACN,CACE,KAAM,QACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,6BACN,OAAQ,CACN,CACE,KAAM,UACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,iCACN,OAAQ,CACN,CACE,KAAM,OACN,KAAM,QACN,aAAc,OAChB,EACA,CACE,KAAM,QACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,2BACN,OAAQ,CACN,CACE,KAAM,QACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA,CACE,KAAM,QACN,KAAM,8BACN,OAAQ,CACN,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,EACA,CACE,KAAM,SACN,KAAM,UACN,aAAc,SAChB,CACF,CACF,EACA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"}