{"version":3,"file":"monstera.mjs","sources":["../src/internal/utils/normalize.js","../src/config/networks.js","../src/internal/sanitization/SensitiveParams.js","../src/internal/sanitization/Sanitizer.js","../src/internal/sanitization/index.js","../src/errors/WalletError.js","../src/errors/translators/revert.js","../src/errors/translators/network.js","../src/errors/translators/signing.js","../src/errors/translators/ethersEncoder.js","../src/errors/translators/fallback.js","../src/errors/pipeline.js","../src/adapters/ethers/encoding.js","../src/internal/logger.js","../src/internal/validators/configAssert.js","../src/adapters/ethers/provider.js","../src/internal/utils/time.js","../src/internal/validation/primitives.js","../src/internal/validation/address.js","../src/internal/validation/bytes.js","../src/internal/validation/provider.js","../src/internal/validators/networkConfig.js","../src/internal/validators/connectOptions.js","../src/config/monstera.js","../src/internal/utils/version.js","../src/internal/versionCheck.js","../src/sdk/MonsteraUtils.js","../src/base/ContractRegistry.js","../src/events/apiKeySessionAuthenticator.js","../src/events/walletSignatureAuthenticator.js","../src/events/walletFactory.js","../src/events/passwordAuthenticator.js","../src/events/keyVault.js","../src/events/dualFactorAuthenticator.js","../src/events/decodeReceipt.js","../src/events/passwordMinuteSignatureAuthenticator.js","../src/events/multiAuthenticator.js","../src/events/passwordOrWalletSignatureAuthenticator.js","../src/base/ExecutionPipeline.js","../src/base/BaseContractClient.js","../src/contracts/abi/core/walletFactory.js","../src/contracts/core/walletFactory.js","../src/internal/crypto/mnemonic.js","../src/clients/factory/WalletFactoryClient.js","../src/contracts/abi/core/walletLogic.js","../src/contracts/core/walletLogic.js","../src/clients/logic/WalletLogicClient.js","../src/contracts/abi/core/keyVault.js","../src/contracts/core/keyVault.js","../src/clients/keyVault/KeyVaultClient.js","../src/contracts/abi/authenticators/apiKeySessionAuthenticator.js","../src/contracts/authenticators/ApiKeySessionAuthenticator.js","../src/clients/auth/ApiKeySessionAuthenticatorClient.js","../src/contracts/abi/authenticators/passwordAuthenticator.js","../src/contracts/authenticators/PasswordAuthenticator.js","../src/clients/auth/PasswordAuthenticatorClient.js","../src/contracts/abi/authenticators/walletSignatureAuthenticator.js","../src/contracts/authenticators/WalletSignatureAuthenticator.js","../src/clients/auth/WalletSignatureAuthenticatorClient.js","../src/contracts/abi/authenticators/dualFactorAuthenticator.js","../src/contracts/authenticators/DualFactorAuthenticator.js","../src/clients/auth/DualFactorAuthenticatorClient.js","../src/contracts/abi/authenticators/passwordMinuteSignatureAuthenticator.js","../src/contracts/authenticators/PasswordMinuteSignatureAuthenticator.js","../src/clients/auth/PasswordMinuteSignatureAuthenticatorClient.js","../src/contracts/abi/authenticators/multiAuthenticator.js","../src/contracts/authenticators/MultiAuthenticator.js","../src/clients/auth/MultiAuthenticatorClient.js","../src/contracts/abi/authenticators/passwordOrWalletSignatureAuthenticator.js","../src/contracts/authenticators/PasswordOrWalletSignatureAuthenticator.js","../src/clients/auth/PasswordOrWalletSignatureAuthenticatorClient.js","../src/clients/auth/AuthenticatorClient.js","../node_modules/cborg/esm/lib/is.js","../node_modules/cborg/esm/lib/token.js","../node_modules/cborg/esm/lib/byte-utils.js","../node_modules/cborg/esm/lib/bl.js","../node_modules/cborg/esm/lib/common.js","../node_modules/cborg/esm/lib/0uint.js","../node_modules/cborg/esm/lib/1negint.js","../node_modules/cborg/esm/lib/2bytes.js","../node_modules/cborg/esm/lib/3string.js","../node_modules/cborg/esm/lib/4array.js","../node_modules/cborg/esm/lib/5map.js","../node_modules/cborg/esm/lib/6tag.js","../node_modules/cborg/esm/lib/7float.js","../node_modules/cborg/esm/lib/jump.js","../node_modules/cborg/esm/lib/encode.js","../node_modules/cborg/esm/lib/decode.js","../node_modules/@oasisprotocol/deoxysii/dist/index.mjs","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_sha2.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/@noble/hashes/esm/hmac.js","../node_modules/@oasisprotocol/sapphire-paratime/lib/esm/munacl.js","../node_modules/@oasisprotocol/sapphire-paratime/lib/esm/ethersutils.js","../node_modules/@oasisprotocol/sapphire-paratime/lib/esm/cipher.js","../node_modules/@oasisprotocol/sapphire-paratime/lib/esm/constants.js","../node_modules/@oasisprotocol/sapphire-paratime/lib/esm/calldatapublickey.js","../node_modules/@oasisprotocol/sapphire-paratime/lib/esm/provider.js","../node_modules/@oasisprotocol/sapphire-ethers-v6/dist/_esm/index.js","../src/providers/sapphire.js","../src/internal/crypto/address.js","../src/internal/vault/getSelector.js","../src/internal/auth/context/actionContext.js","../src/internal/auth/proof/common.js","../src/internal/auth/proof/builders/abiProofs.js","../src/internal/auth/specs/createAuthenticatorSpec.js","../src/internal/auth/specs/password.js","../src/internal/validators/authProofOptions.js","../src/internal/auth/proof/builders/minuteSignature.js","../src/internal/auth/specs/passwordMinuteSignature.js","../src/internal/auth/config/bytes.js","../src/internal/crypto/eip712.js","../src/internal/auth/proof/signing/eip712.js","../src/internal/auth/proof/builders/walletSignature.js","../src/internal/auth/specs/walletSignature.js","../src/internal/auth/proof/builders/dualFactor.js","../src/internal/auth/specs/dualFactor.js","../src/internal/auth/proof/builders/apiKeySession.js","../src/internal/auth/specs/apiKeySession.js","../src/internal/auth/specs/multiChildResolver.js","../src/internal/auth/proof/builders/multiChildEncode.js","../src/internal/auth/specs/multi.js","../src/internal/auth/proof/builders/passwordOrWalletSignature.js","../src/internal/auth/specs/passwordOrWalletSignature.js","../src/internal/auth/specs/registry.js","../src/internal/auth/config/AuthConfigEncoder.js","../src/contracts/abi/interfaces/iAuthenticator.js","../src/internal/auth/probes/verifyProbe.js","../src/internal/auth/proof/AuthProofEncoder.js","../src/internal/auth/session/ConnectSession.js","../src/internal/vault/accountIndex.js","../src/internal/auth/pipelines/KeyVaultAuthPipeline.js","../src/internal/auth/pipelines/ExplicitAuthPipeline.js","../src/internal/auth/pipelines/AuthConfigPipeline.js","../src/sdk/domains/defineDomainMethods.js","../src/sdk/domains/MonsteraRecipes.js","../src/sdk/domains/MonsteraSession.js","../src/internal/auth/actions/password.js","../src/internal/auth/actions/passwordMinuteSignature.js","../src/internal/auth/actions/walletSignature.js","../src/internal/auth/actions/dualFactor.js","../src/internal/auth/actions/apiKeySession.js","../src/internal/auth/actions/multi.js","../src/internal/auth/actions/passwordOrWalletSignature.js","../src/sdk/domains/MonsteraAuth.js","../src/sdk/domains/MonsteraFactory.js","../src/internal/vault/actions/keyVault.js","../src/sdk/domains/MonsteraKeyVault.js","../src/internal/crypto/eip7702.js","../src/internal/vault/eip7702.js","../src/internal/vault/signEip7702Authorization.js","../src/sdk/domains/MonsteraSigning.js","../src/sdk/Monstera.js","../src/index.js"],"sourcesContent":["/**\n * Pure normalisation helpers used by config + assertion code.\n *\n * @description Both helpers return {@code undefined} on failure rather than throwing, so callers\n * (typically the {@code require*} helpers in {@link ../validation/assert.js}) can wrap them in their own\n * structured {@link ValidationError} messages.\n *\n * @module internal/utils/normalize\n */\n\n/**\n * Normalise an EVM chain id into the {@link ChainId} representation used internally.\n *\n * @description Accepts {@code bigint}, {@code number}, decimal string, or {@code 0x}-hex string.\n * Returns a {@code number} when the value fits in {@link Number.MAX_SAFE_INTEGER}; otherwise\n * returns a lowercase {@code 0x}-hex string. Returns {@code undefined} on missing / non-finite /\n * unparseable input.\n *\n * @public\n * @param {unknown} value - Candidate chain id\n * @returns {ChainId | undefined} Normalised chain id, or {@code undefined}\n */\nfunction normalizeChainId(value) {\n  if (value === undefined || value === null) {\n    return undefined;\n  }\n  try {\n    /** @type {bigint} */\n    let b;\n    if (typeof value === 'bigint') {\n      b = value;\n    } else if (typeof value === 'number') {\n      if (!Number.isFinite(value)) {\n        return undefined;\n      }\n      b = BigInt(value);\n    } else {\n      const s = String(value).trim();\n      if (s === '') {\n        return undefined;\n      }\n      b = BigInt(s);\n    }\n    if (b <= BigInt(Number.MAX_SAFE_INTEGER)) {\n      return Number(b);\n    }\n    return /** @type {ChainId} */ ('0x' + b.toString(16));\n  } catch {\n    return undefined;\n  }\n}\n\n/**\n * Coerce a value to {@link bigint}.\n *\n * @description Accepts {@code bigint}, finite integer {@code number}, or trimmed decimal /\n * {@code 0x}-hex string. Returns {@code undefined} on missing / invalid input.\n *\n * @public\n * @param {unknown} value - Candidate bigint\n * @returns {bigint | undefined} Coerced value, or {@code undefined}\n */\nfunction normalizeBigInt(value) {\n  if (value === undefined || value === null) {\n    return undefined;\n  }\n  if (typeof value === 'bigint') {\n    return value;\n  }\n  if (typeof value === 'number') {\n    if (!Number.isFinite(value) || !Number.isInteger(value)) {\n      return undefined;\n    }\n    try {\n      return BigInt(value);\n    } catch {\n      return undefined;\n    }\n  }\n  if (typeof value === 'string') {\n    const s = value.trim();\n    if (s === '') {\n      return undefined;\n    }\n    try {\n      return BigInt(s);\n    } catch {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Normalise a username for factory registration (trim + lowercase).\n *\n * @description Matches the convention documented on {@code WalletFactory.createWalletForUsername}:\n * the factory stores only {@code keccak256(bytes(normalizedUsername))}, so callers must apply the\n * same normalisation before hashing or sending plaintext usernames.\n *\n * @public\n * @param {unknown} value - Candidate username\n * @returns {string | undefined} Normalised username, or {@code undefined} when missing/empty after trim\n */\nfunction normalizeUsername(value) {\n  if (value === undefined || value === null || typeof value !== 'string') {\n    return undefined;\n  }\n\n  const normalized = value.trim().toLowerCase();\n  return normalized === '' ? undefined : normalized;\n}\n\n/**\n * Normalise a BIP-39 mnemonic phrase (trim, lowercase, collapse whitespace).\n *\n * @description Used before word-count / checksum validation and PBKDF2 seed derivation so callers\n * accept extra surrounding whitespace, mixed casing, and irregular separators.\n *\n * @public\n * @param {unknown} value - Candidate mnemonic phrase\n * @returns {Mnemonic | undefined} Normalised phrase, or {@code undefined} when missing/empty after trim\n */\nfunction normalizeMnemonic(value) {\n  if (value === undefined || value === null || typeof value !== 'string') {\n    return undefined;\n  }\n\n  const normalized = value.trim().toLowerCase().replace(/\\s+/g, ' ');\n  return normalized === '' ? undefined : normalized;\n}\n\nexport { normalizeChainId, normalizeBigInt, normalizeUsername, normalizeMnemonic };\n","/**\n * Built-in network presets and contract address defaults for Oasis Sapphire.\n *\n * Provides:\n * - {@link NETWORKS}: per-network metadata (name, chain id, default RPC URL, explorer URL)\n * - {@link DEFAULT_ADDRESSES}: SDK-shipped factory + authenticator contract addresses per network\n * - {@link buildNetworkConfig}: pure helper that merges user overrides on top of the presets\n *\n * Consumed by {@code MonsteraConfig.resolveBaseConfig}, which is itself called by the {@code Monstera}\n * facade during {@code connect}. No network I/O happens here — this module is fully static.\n *\n * @module config/networks\n */\n\nimport { normalizeChainId } from '../internal/utils/normalize.js';\n\n/**\n * Network metadata presets for Sapphire testnet and mainnet.\n *\n * @public\n * @readonly\n * @type {NetworkPresets}\n */\nconst NETWORKS = {\n  testnet: {\n    name: 'sapphire-testnet',\n    chainId: 0x5aff, // 23295\n    rpcUrl: 'https://testnet.sapphire.oasis.dev',\n    explorerUrl: 'https://testnet.explorer.sapphire.oasis.io'\n  },\n  mainnet: {\n    name: 'sapphire-mainnet',\n    chainId: 0x5afe, // 23294\n    rpcUrl: 'https://sapphire.oasis.io',\n    explorerUrl: 'https://explorer.sapphire.oasis.io'\n  }\n};\n\n/**\n * SDK-shipped contract address defaults for the Monstera deployment on each network.\n *\n * @remarks Users do not need to pass these — they are merged in by {@link buildNetworkConfig}.\n * Per-call {@code addresses} overrides on the connect options take precedence over these defaults\n * and are typically only used for local / staging deployments.\n *\n * @public\n * @readonly\n * @type {DefaultContractAddresses}\n */\nconst DEFAULT_ADDRESSES = {\n  testnet: {\n    factory: '0x8B7e2310c4582eF9A492035FE867a9f58BcfB696',\n    passwordAuth: '0x34d2426BA65b6d782fE570F08658038974F840b8',\n    walletSignatureAuth: '0xF283b3A7FE88932968D9278e72A27A35CEBBf5eD',\n    dualFactorAuth: '0xBfd22Afcbcf514e3e352372dDDF1526b0c3464D3',\n    passwordMinuteSignatureAuth: '0xBb8b2343e34A26432F59ea8A7c857F003b5e3ccc',\n    apiKeySessionAuth: '0x65124D1C7d11e0D1Ff93828A6ba43D08f09Fd784',\n    multiAuthenticator: '0xB970b92ace7552158CB5929ef527D80d433260e9',\n    passwordOrWalletSigAuth: '0x14bc2090C679f8f481E6b7911B6F00F1436fA785',\n  },\n  mainnet: {\n    factory: '0x19b90486eDbfdD765a2CBcd97aFCd4876A28C220',\n    passwordAuth: '0x93c675336372EBb64dA38018bE28d5EA1a8cC26A',\n    walletSignatureAuth: '0xC5AAFBC2e3D7D7674cE317AE0A02bF43f2eD2AA9',\n    dualFactorAuth: '0xB82D5511e43723A377d6e1d9B52Ec31979e56c97',\n    passwordMinuteSignatureAuth: '0x63B0A8E71a91a2Fc4116FAc57B76beAB82d559d3',\n    apiKeySessionAuth: '0x4cb14250Dbf288dEe12E6Fe0C5F1351E9D211347',\n    multiAuthenticator: '0x3315C78EEf2a79D141Abe16B226Afe948b22702e',\n    passwordOrWalletSigAuth: '0x129a9c6e4D431144d2613e53367a2e8700f48655',\n  }\n};\n\n/**\n * Build a {@link NetworkConfig} from a preset key plus optional overrides.\n *\n * @description Pure function: looks up the preset by {@code network} ({@code \"testnet\"} or\n * {@code \"mainnet\"}), merges user-supplied {@code addresses} on top of {@link DEFAULT_ADDRESSES},\n * and applies {@code rpcUrl} / {@code chainId} overrides if provided. The chain id is normalised\n * via {@link normalizeChainId} so callers may pass decimal or {@code 0x}-hex strings.\n *\n * @remarks Does NOT validate that {@code network} is a known preset; an unknown key results in a\n * {@code TypeError} on property access. The {@code MonsteraConfig.resolveBaseConfig} caller\n * computes {@code network} from a boolean and runs {@code validateContractAddresses} afterwards,\n * so end users never reach this branch.\n *\n * @public\n * @param {BuildNetworkConfigInput} config - Preset key and optional RPC / chain id / address overrides\n * @returns {NetworkConfig} Fully resolved network configuration\n */\nfunction buildNetworkConfig(config) {\n  const { network, rpcUrl, addresses, chainId } = config;\n\n  const networkConfig = NETWORKS[network];\n\n  const mergedAddresses = {\n    ...DEFAULT_ADDRESSES[network],\n    ...(addresses || {})\n  };\n\n  const resolvedChainId = normalizeChainId(chainId);\n\n  return {\n    network: networkConfig.name,\n    chainId: resolvedChainId !== undefined ? resolvedChainId : networkConfig.chainId,\n    rpcUrl: rpcUrl || networkConfig.rpcUrl,\n    explorerUrl: networkConfig.explorerUrl,\n    addresses: mergedAddresses\n  };\n}\n\n\nexport { NETWORKS, DEFAULT_ADDRESSES, buildNetworkConfig };\n","/**\n * Single source of truth for parameter names whose values must NEVER appear verbatim in errors,\n * logs, or debug output.\n *\n * Re-exported by {@link MonsteraConfig.SENSITIVE_PARAMS}; consumed directly by {@link Sanitizer}\n * (for log / error / encoder-error redaction) and {@link ValidationError} (so error\n * {@code context.value} on validation failures is redacted at construction time).\n *\n * @module internal/sanitization/SensitiveParams\n */\n\n/**\n * Frozen list of sensitive parameter names.\n *\n * @public\n * @readonly\n * @type {readonly string[]}\n */\nexport const SENSITIVE_PARAM_NAMES = Object.freeze([\n  'accessToken',\n  'authConfig',\n  'authProof',\n  'baseChainCode',\n  'basePrivateKey',\n  'currentPassword',\n  'digest',\n  'newPasswordHash',\n  'passwordHash',\n  'seed',\n  'mnemonic',\n  'newAuthConfig',\n  'hookData',\n  'implCall',\n  'logicData',\n  'txData',\n  'data',\n  'message',\n  'hash',\n  'privateKey',\n  'password',\n  'providedSigner',\n  'apiKey',\n  'apiKeySecret',\n  'newApiKeySecret'\n]);\n","/**\n * Redaction helpers used by the logger, error pipeline and {@link ValidationError} construction.\n *\n * The same instance is reused across the SDK as the {@code sanitizer} singleton in\n * {@link ./index.js}.\n *\n * @module internal/sanitization/Sanitizer\n */\n\n/**\n * Placeholder for sensitive keys in log output (string for readable {@code log.debug} JSON).\n *\n * @private\n * @readonly\n */\nconst LOG_REDACTED = '[redacted]';\n\n/**\n * Max length before an ABI encoder error value is summarised without its raw payload.\n *\n * @private\n * @readonly\n */\nconst MAX_ENCODER_VALUE_RAW_LENGTH = 256;\n\n/**\n * Redacts sensitive parameter values out of logs, errors, and ABI encoder context.\n *\n * @public\n */\nexport class Sanitizer {\n  /**\n   * @public\n   * @param {readonly string[]} sensitiveKeys - Parameter names to consider sensitive (typically\n   *   {@link SENSITIVE_PARAM_NAMES})\n   */\n  constructor(sensitiveKeys) {\n    this._keys = new Set(sensitiveKeys);\n  }\n\n  /**\n   * Whether a parameter name is in the sensitive set.\n   *\n   * @public\n   * @param {string} key - Parameter / context key\n   * @returns {boolean} {@code true} if {@code key} is sensitive\n   */\n  isSensitive(key) {\n    return typeof key === 'string' && this._keys.has(key);\n  }\n\n  /**\n   * Produce a JSON-safe deep clone with sensitive keys redacted, suitable for {@code log.debug}.\n   *\n   * @description Walks the value up to {@code maxDepth} levels, replacing sensitive object keys\n   * with {@code \"[redacted]\"}, summarising {@link Uint8Array}s as {@code \"Uint8Array(N)\"},\n   * stringifying bigints / symbols / functions, and detecting cycles.\n   *\n   * @public\n   * @param {unknown} value - Typically a method's {@code options} bag\n   * @param {number} [maxDepth=6] - Maximum recursion depth before falling back to\n   *   {@code \"[max depth]\"}\n   * @returns {unknown} JSON-serialisable summary\n   */\n  forLog(value, maxDepth = 6) {\n    return this._forLogInner(value, 0, maxDepth, new WeakSet());\n  }\n\n  /**\n   * Produce the value stored on a {@link ValidationError} for a given parameter.\n   *\n   * @description Non-sensitive values pass through unchanged; sensitive values are replaced with a\n   * {@link RedactedValidationValue} carrying just the {@code valueKind} (and {@code valueLength}\n   * for strings / {@link Uint8Array}s).\n   *\n   * @public\n   * @param {string} paramName - Parameter name being validated\n   * @param {unknown} value - Original parameter value\n   * @returns {unknown | RedactedValidationValue} Original value, or redacted summary\n   */\n  forValidationValue(paramName, value) {\n    if (!this.isSensitive(paramName)) {\n      return value;\n    }\n    let valueKind = typeof value;\n    if (value === null) {\n      valueKind = 'null';\n    } else if (value === undefined) {\n      valueKind = 'undefined';\n    } else if (value instanceof Uint8Array) {\n      valueKind = 'Uint8Array';\n    }\n    /** @type {RedactedValidationValue} */\n    const out = { redacted: true, valueKind };\n    if (typeof value === 'string') {\n      out.valueLength = value.length;\n    } else if (value instanceof Uint8Array) {\n      out.valueLength = value.length;\n    }\n    return out;\n  }\n\n  /**\n   * Redact values for sensitive keys in an error / translator context object.\n   *\n   * @description Top-level sensitive keys are replaced with {@link RedactedValidationValue}\n   * summaries; if {@code ctx} has {@code parameter}/{@code value} pair (the {@link ValidationError}\n   * shape) the {@code value} is redacted using {@code parameter} as the lookup key. Any\n   * {@code extraData} sub-object is recursed one level so nested secrets (e.g. a spread mnemonic)\n   * are still redacted, even though the write pipeline currently excludes {@code extraData} from\n   * error context.\n   *\n   * @public\n   * @param {Record<string, unknown>} ctx - Free-form context bag\n   * @returns {Record<string, unknown>} Sanitised copy ({@code ctx} is NOT mutated)\n   */\n  forErrorContext(ctx) {\n    if (!ctx || typeof ctx !== 'object') {\n      return {};\n    }\n    /** @type {Record<string, unknown>} */\n    const out = {};\n    for (const [key, val] of Object.entries(ctx)) {\n      if (this.isSensitive(key)) {\n        out[key] = this.forValidationValue(key, val);\n      } else if (key === 'value' && typeof ctx.parameter === 'string' && this.isSensitive(ctx.parameter)) {\n        out[key] = this.forValidationValue(ctx.parameter, val);\n      } else if (\n        key === 'extraData' &&\n        val !== null &&\n        typeof val === 'object' &&\n        !Array.isArray(val)\n      ) {\n        out[key] = this.forErrorContext(/** @type {Record<string, unknown>} */ (val));\n      } else {\n        out[key] = val;\n      }\n    }\n    return out;\n  }\n\n  /**\n   * Sanitise a value reported by an ethers ABI encoder error.\n   *\n   * @description If {@code argLabel} matches a sensitive parameter, the value is redacted via\n   * {@link forValidationValue}. Otherwise long strings / {@link Uint8Array}s are summarised so we\n   * don't echo huge payloads into logs.\n   *\n   * @public\n   * @param {string} argLabel - Argument label as reported by ethers (numeric index or name)\n   * @param {unknown} value - Argument value as reported by ethers\n   * @returns {unknown} Original value, redacted summary, or truncated descriptor\n   */\n  forEncoderValue(argLabel, value) {\n    const name = typeof argLabel === 'string' ? argLabel : String(argLabel ?? '');\n    if (name && this.isSensitive(name)) {\n      return this.forValidationValue(name, value);\n    }\n    if (typeof value === 'string' && value.length > MAX_ENCODER_VALUE_RAW_LENGTH) {\n      return {\n        truncated: true,\n        length: value.length,\n        kind: 'string'\n      };\n    }\n    if (value instanceof Uint8Array && value.length > MAX_ENCODER_VALUE_RAW_LENGTH) {\n      return {\n        truncated: true,\n        length: value.length,\n        kind: 'Uint8Array'\n      };\n    }\n    return value;\n  }\n\n  /**\n   * Recursive backend for {@link forLog} with cycle detection.\n   *\n   * @private\n   * @param {unknown} value - Current value\n   * @param {number} depth - Current recursion depth\n   * @param {number} maxDepth - Maximum depth before bail-out\n   * @param {WeakSet<object>} visiting - Cycle-detection set (enter-add / leave-delete)\n   * @returns {unknown} JSON-serialisable summary for the current node\n   */\n  _forLogInner(value, depth, maxDepth, visiting) {\n    if (value === null || value === undefined) {\n      return value;\n    }\n    if (depth > maxDepth) {\n      return '[max depth]';\n    }\n\n    const t = typeof value;\n    if (t === 'string' || t === 'number' || t === 'boolean') {\n      return value;\n    }\n    if (t === 'bigint') {\n      return value.toString();\n    }\n    if (t === 'symbol') {\n      return String(value);\n    }\n    if (t === 'function') {\n      return '[Function]';\n    }\n\n    if (value instanceof Uint8Array) {\n      return `Uint8Array(${value.length})`;\n    }\n    if (value instanceof Date) {\n      return value.toISOString();\n    }\n\n    if (Array.isArray(value)) {\n      if (visiting.has(value)) {\n        return '[Circular]';\n      }\n      visiting.add(value);\n      try {\n        return value.map((item) => this._forLogInner(item, depth + 1, maxDepth, visiting));\n      } finally {\n        visiting.delete(value);\n      }\n    }\n\n    if (t === 'object') {\n      if (visiting.has(value)) {\n        return '[Circular]';\n      }\n      visiting.add(value);\n      try {\n        /** @type {Record<string, unknown>} */\n        const out = {};\n        for (const [key, val] of Object.entries(value)) {\n          if (this.isSensitive(key)) {\n            out[key] = LOG_REDACTED;\n          } else {\n            out[key] = this._forLogInner(val, depth + 1, maxDepth, visiting);\n          }\n        }\n        return out;\n      } finally {\n        visiting.delete(value);\n      }\n    }\n\n    return value;\n  }\n}\n","/**\n * Sanitization barrel.\n *\n * Exposes:\n * - {@link SENSITIVE_PARAM_NAMES} — frozen list of parameter names whose values must never appear\n *   in logs / errors / debug output\n * - {@link Sanitizer} — class with redaction helpers used by errors / logger / pipeline\n * - {@link sanitizer} — process-wide singleton bound to {@link SENSITIVE_PARAM_NAMES}\n *\n * @module internal/sanitization\n */\n\nimport { SENSITIVE_PARAM_NAMES } from './SensitiveParams.js';\nimport { Sanitizer } from './Sanitizer.js';\n\nexport { SENSITIVE_PARAM_NAMES } from './SensitiveParams.js';\nexport { Sanitizer } from './Sanitizer.js';\n\n/**\n * Process-wide {@link Sanitizer} instance bound to {@link SENSITIVE_PARAM_NAMES}.\n *\n * @public\n * @readonly\n * @type {Sanitizer}\n */\nexport const sanitizer = new Sanitizer(SENSITIVE_PARAM_NAMES);\n","/**\n * The complete {@link WalletError} hierarchy used by the SDK.\n *\n * Every error thrown out of a public Monstera method (and every error produced inside the\n * {@code sdkErrorPipeline}) is one of the classes defined below. They share a stable\n * {@code code} string and a {@code context} bag so callers can handle them programmatically\n * without parsing English messages.\n *\n * Class hierarchy:\n * - {@link WalletError} — base\n *   - {@link ValidationError} — code {@code \"INVALID_ARGUMENT\"}\n *   - {@link ConfigError} — code {@code \"MISSING_CONFIG\"}\n *   - {@link NetworkError} — code {@code \"RPC_ERROR\"}\n *   - {@link ContractRevertError} — code {@code \"TX_REVERTED\"}\n *   - {@link EventNotFoundError} — code {@code \"EVENT_NOT_FOUND\"}\n *   - {@link SapphireRequiredError} — code {@code \"SAPPHIRE_REQUIRED\"}\n *   - {@link WriteRequiresSignerError} — code {@code \"WRITE_REQUIRES_SIGNER\"}\n *   - {@link EventParseError} — code {@code \"EVENT_PARSE_ERROR\"}\n *\n * @module errors/WalletError\n */\n\nimport { sanitizer } from '../internal/sanitization/index.js';\n\n/**\n * Base class for every error thrown by the SDK.\n *\n * Carries a stable error {@code code} string for programmatic handling and a free-form\n * {@code context} bag (already sanitised by callers / subclasses) for diagnostics.\n *\n * @public\n */\nclass WalletError extends Error {\n  /**\n   * @public\n   * @param {string} message - Human readable error message\n   * @param {string} code - Stable error code for programmatic dispatch (e.g. {@code \"INVALID_ARGUMENT\"})\n   * @param {Record<string, unknown>} [context={}] - Additional context (function name, parameter,\n   *   transaction hash, etc.). Should already be sanitised by the caller.\n   */\n  constructor(message, code, context = {}) {\n    super(message);\n    this.name = 'WalletError';\n    this.code = code;\n    this.context = context;\n    \n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n\n  /**\n   * Serialise the error into a JSON-friendly object.\n   *\n   * @description Used by structured loggers and by tests asserting on error context. Includes the\n   * stack trace as-is — callers responsible for redaction must do it before logging.\n   *\n   * @public\n   * @returns {Record<string, unknown>} Plain object with {@code name}, {@code message},\n   *   {@code code}, {@code context}, {@code stack}\n   */\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      code: this.code,\n      context: this.context,\n      stack: this.stack\n    };\n  }\n\n  /**\n   * Render a human-readable single-line + indented summary of the error.\n   *\n   * @description Includes the code, and (when present) the {@code function} and {@code parameter}\n   * fields from {@code context}. Other context entries are intentionally omitted to keep the\n   * output short.\n   *\n   * @public\n   * @returns {string} Human-readable error message\n   */\n  toString() {\n    let str = `${this.name}: ${this.message}`;\n    if (this.code) {\n      str += ` (Code: ${this.code})`;\n    }\n    if (this.context.function) {\n      str += `\\n  Function: ${this.context.function}`;\n    }\n    if (this.context.parameter) {\n      str += `\\n  Parameter: ${this.context.parameter}`;\n    }\n    return str;\n  }\n}\n\n/**\n * Thrown when a public/internal helper receives an invalid argument.\n *\n * @description Code: {@code \"INVALID_ARGUMENT\"}. The offending parameter name and value are\n * captured in {@code context}; the value is run through {@link sanitizer.forValidationValue} so\n * sensitive parameters never leak.\n *\n * @public\n */\nclass ValidationError extends WalletError {\n  /**\n   * @public\n   * @param {string} message - Error message\n   * @param {string} parameter - Parameter name that failed validation\n   * @param {unknown} [value=null] - Invalid parameter value (sanitised before being stored)\n   */\n  constructor(message, parameter, value = null) {\n    super(\n      message,\n      'INVALID_ARGUMENT',\n      {\n        parameter,\n        value: sanitizer.forValidationValue(parameter, value),\n        function: 'validation'\n      }\n    );\n    this.name = 'ValidationError';\n  }\n}\n\n/**\n * Thrown when SDK configuration is missing or malformed.\n *\n * @description Code: {@code \"MISSING_CONFIG\"}. Used during {@code Monstera.connect} address\n * validation, RPC URL checks, and any time a contract address is required but not provided.\n *\n * @public\n */\nclass ConfigError extends WalletError {\n  /**\n   * @public\n   * @param {string} message - Error message\n   * @param {string | null} [missingField=null] - Name of the missing/invalid configuration field\n   */\n  constructor(message, missingField = null) {\n    super(\n      message,\n      'MISSING_CONFIG',\n      {\n        missingField,\n        function: 'configuration'\n      }\n    );\n    this.name = 'ConfigError';\n  }\n}\n\n/**\n * Thrown for RPC / network communication failures.\n *\n * @description Code: {@code \"RPC_ERROR\"}. Wraps the underlying transport error in\n * {@code originalError} (also exposed as a property for compatibility with consumers that crawl\n * {@code .originalError} chains).\n *\n * @public\n */\nclass NetworkError extends WalletError {\n  /**\n   * @public\n   * @param {string} message - Error message\n   * @param {string | null} [rpcUrl=null] - RPC URL that failed (may be null on aggregate failures)\n   * @param {Error | null} [originalError=null] - Underlying transport / fetch error\n   */\n  constructor(message, rpcUrl = null, originalError = null) {\n    super(\n      message,\n      'RPC_ERROR',\n      {\n        rpcUrl,\n        originalError: originalError ? originalError.message : null,\n        function: 'network'\n      }\n    );\n    this.name = 'NetworkError';\n    this.originalError = originalError;\n  }\n}\n\n/**\n * Thrown when a transaction reverts on-chain (or a {@code call} reverts during simulation).\n *\n * @description Code: {@code \"TX_REVERTED\"}. The {@code context} captures both the raw\n * {@code revertData} and (where decodable) the {@code revertReason}, plus optional decoded args\n * from custom Solidity errors.\n *\n * @public\n */\nclass ContractRevertError extends WalletError {\n  /**\n   * @public\n   * @param {string} message - Error message\n   * @param {Bytes | null} [revertData=null] - Raw revert data (hex), if available\n   * @param {string | null} [revertReason=null] - Decoded revert reason, if available\n   * @param {TransactionHash | null} [transactionHash=null] - Transaction hash that reverted\n   * @param {TransactionReceipt | null} [receipt=null] - Transaction receipt, if available\n   * @param {Record<string, unknown>} [extraContext={}] - Additional decoded fields (e.g.\n   *   {@code revertArgs} from a decoded custom error)\n   */\n  constructor(message, revertData = null, revertReason = null, transactionHash = null, receipt = null, extraContext = {}) {\n    super(\n      message,\n      'TX_REVERTED',\n      {\n        revertData,\n        revertReason,\n        transactionHash,\n        receipt,\n        function: 'transaction',\n        ...extraContext\n      }\n    );\n    this.name = 'ContractRevertError';\n  }\n}\n\n/**\n * Thrown when an expected event is absent from a successful transaction receipt.\n *\n * @description Code: {@code \"EVENT_NOT_FOUND\"}. Surfaces from {@code ExecutionPipeline.executeWrite}\n * when an {@code expectEvent} is configured but the event signature is not present in the logs.\n *\n * @public\n */\nclass EventNotFoundError extends WalletError {\n  /**\n   * @public\n   * @param {string} eventName - Name of the expected event\n   * @param {TransactionHash | null} [transactionHash=null] - Transaction hash where the event was expected\n   */\n  constructor(eventName, transactionHash = null) {\n    super(\n      `${eventName} event not found in transaction receipt`,\n      'EVENT_NOT_FOUND',\n      {\n        eventName,\n        transactionHash,\n        function: 'event_parsing'\n      }\n    );\n    this.name = 'EventNotFoundError';\n  }\n}\n\n/**\n * Thrown when an operation requires a Sapphire-wrapped signer / provider but none is available.\n *\n * @description Code: {@code \"SAPPHIRE_REQUIRED\"}. Most commonly raised when\n * {@code @oasisprotocol/sapphire-ethers-v6} is missing or the user supplied a non-signer.\n *\n * @public\n */\nclass SapphireRequiredError extends WalletError {\n  /**\n   * @public\n   * @param {string} [message] - Optional override message; defaults to a standard sentence\n   */\n  constructor(message) {\n    super(\n      message || 'Sapphire signer is required for this operation',\n      'SAPPHIRE_REQUIRED',\n      {\n        function: 'sapphire_check'\n      }\n    );\n    this.name = 'SapphireRequiredError';\n  }\n}\n\n/**\n * Thrown when a write method is invoked on a Monstera instance without a configured signer.\n *\n * @description Code: {@code \"WRITE_REQUIRES_SIGNER\"}. Hint message instructs the caller to pass\n * {@code signer} into {@code Monstera.connect}.\n *\n * @public\n */\nclass WriteRequiresSignerError extends WalletError {\n  /**\n   * @public\n   * @param {string} [operation='operation'] - Name of the operation that requires a signer\n   */\n  constructor(operation = 'operation') {\n    super(\n      `Signer is required for ${operation}. Pass signer to Monstera.connect({ signer, ... })`,\n      'WRITE_REQUIRES_SIGNER',\n      {\n        operation,\n        function: 'signer_check'\n      }\n    );\n    this.name = 'WriteRequiresSignerError';\n  }\n}\n\n/**\n * Thrown when an end-user vault operation is invoked without a credentials session.\n *\n * @description Code: {@code \"CREDENTIALS_REQUIRED\"}. Hint message instructs the caller to pass\n * {@code credentials} or an explicit {@code keyVaultAddr} on vault-scoped calls.\n *\n * @public\n */\nclass CredentialsRequiredError extends WalletError {\n  /**\n   * @public\n   * @param {string} [operation='operation'] - Name of the operation that requires credentials\n   */\n  constructor(operation = 'operation') {\n    super(\n      `Vault access requires credentials or keyVaultAddr for ${operation}. Pass credentials to Monstera.connect({ credentials, ... }) or keyVaultAddr on the call`,\n      'CREDENTIALS_REQUIRED',\n      {\n        operation,\n        function: 'credentials_check'\n      }\n    );\n    this.name = 'CredentialsRequiredError';\n  }\n}\n\n/**\n * Thrown when an expected event is present in the receipt but cannot be decoded.\n *\n * @description Code: {@code \"EVENT_PARSE_ERROR\"}. The underlying decoder error is captured in\n * {@code originalError} (and the message field of {@code context.originalError}).\n *\n * @public\n */\nclass EventParseError extends WalletError {\n  /**\n   * @public\n   * @param {string} eventName - Name of the event that failed to parse\n   * @param {TransactionHash | null} [transactionHash=null] - Transaction hash containing the event\n   * @param {Error | null} [originalError=null] - Underlying decoder error\n   */\n  constructor(eventName, transactionHash = null, originalError = null) {\n    super(\n      `Failed to parse ${eventName} event: ${originalError?.message || 'Unknown parsing error'}`,\n      'EVENT_PARSE_ERROR',\n      {\n        eventName,\n        transactionHash,\n        originalError: originalError ? originalError.message : null,\n        function: 'event_parsing'\n      }\n    );\n    this.name = 'EventParseError';\n    this.originalError = originalError;\n  }\n}\n\nexport {\n  WalletError,\n  ValidationError,\n  ConfigError,\n  NetworkError,\n  ContractRevertError,\n  EventNotFoundError,\n  SapphireRequiredError,\n  WriteRequiresSignerError,\n  CredentialsRequiredError,\n  EventParseError\n};\n","/**\n * Revert decoding helpers and the {@code CALL_EXCEPTION} / {@code UNPREDICTABLE_GAS_LIMIT}\n * translator.\n *\n * Public helpers ({@link extractRpcRevertBytes}, {@link decodeCustomError}) are reused outside\n * the pipeline by {@code ExecutionPipeline} when it pre-decodes mined-transaction reverts.\n *\n * @module errors/translators/revert\n */\n\nimport {\n  WalletError,\n  NetworkError,\n  ContractRevertError\n} from '../WalletError.js';\n\n/**\n * Pull revert bytes out of an ethers / RPC error envelope.\n *\n * @description Inspects {@code err.data}, {@code err.error.data}, and {@code err.info.error.data}\n * (the three places ethers v6 surfaces revert payloads from different RPC shapes) and returns the\n * first valid {@code 0x}-prefixed hex string that is at least 4-byte selector + something.\n *\n * @public\n * @param {unknown} err - Caught error (any shape; safe on non-objects)\n * @returns {string | null} Revert bytes (hex) or {@code null} when no payload is present\n */\nexport function extractRpcRevertBytes(err) {\n  let d = /** @type {{ data?: unknown }} */ (err).data;\n  if (typeof d !== 'string' || d.length < 10) {\n    d = /** @type {{ error?: { data?: unknown } }} */ (err).error?.data;\n  }\n  if (typeof d !== 'string' || d.length < 10) {\n    const info = /** @type {{ error?: { data?: unknown } }} */ (err).info;\n    d = info?.error?.data;\n  }\n  if (typeof d === 'string' && d.startsWith('0x') && d.length >= 10) {\n    return d;\n  }\n  return null;\n}\n\n/**\n * Decode custom Solidity error bytes against a contract ABI.\n *\n * @description Wraps ethers v6 {@code Interface.parseError}. Returns an all-{@code null} result\n * (instead of throwing) when {@code iface} or {@code data} are missing, the selector is unknown\n * to the ABI, or {@code parseError} throws — callers downstream rely on this never raising.\n *\n * @public\n * @param {EthersInterface | null} iface - Contract interface to decode against\n * @param {string} data - Revert bytes (hex)\n * @returns {{ revertReason: string | null, revertArgs: unknown, revertSignature: string | null }}\n *   Decoded fields. {@code revertReason} is the custom error name; {@code revertArgs} is the\n *   ethers {@code Result} array (or {@code null} when none); {@code revertSignature} is the\n *   canonical {@code \"Name(arg0type,arg1type)\"} string.\n */\nexport function decodeCustomError(iface, data) {\n  if (!iface || !data) {\n    return { revertReason: null, revertArgs: null, revertSignature: null };\n  }\n  try {\n    const parsed = iface.parseError(data);\n    if (!parsed) {\n      return { revertReason: null, revertArgs: null, revertSignature: null };\n    }\n    const revertArgs = parsed.args != null && parsed.args.length ? parsed.args : null;\n    const revertSignature =\n      typeof parsed.signature === 'string' && parsed.signature.length > 0 ? parsed.signature : null;\n    return { revertReason: parsed.name, revertArgs, revertSignature };\n  } catch {\n    return { revertReason: null, revertArgs: null, revertSignature: null };\n  }\n}\n\n/**\n * Pull the nested {@code error.message} string out of an ethers v6 RPC error envelope.\n *\n * @private\n * @param {Error} err - Caught ethers error\n * @returns {string | null} Nested message or {@code null}\n */\nfunction _nestedRpcMessage(err) {\n  const info = /** @type {{ error?: { message?: string } }} */ (err).info;\n  const nested = info?.error?.message;\n  return typeof nested === 'string' && nested.length > 0 ? nested : null;\n}\n\n/**\n * Copy the optional decoded revert fields onto an extra-context bag.\n *\n * @private\n * @param {Record<string, unknown>} extra - Mutated in place\n * @param {{ revertArgs?: unknown, revertSignature?: string | null }} source - Decoded fields\n * @returns {void}\n */\nfunction _assignRevertExtras(extra, source) {\n  if (source.revertArgs != null) {\n    extra.revertArgs = source.revertArgs;\n  }\n  if (source.revertSignature) {\n    extra.revertSignature = source.revertSignature;\n  }\n}\n\n/**\n * Resolve the final revert reason / args / signature triple from any combination of ethers\n * fields and pre-decoded values supplied via context.\n *\n * @description Precedence for the reason: explicit {@code revertReason} > {@code err.revert.name}\n * > {@code err.reason} > decoded custom error name. {@code revertArgs} prefers the existing value;\n * the decoded signature is always the ABI-resolved one.\n *\n * @private\n * @param {EthersInterface | null | undefined} iface - Contract interface (optional)\n * @param {string | null} revertData - Revert bytes (hex)\n * @param {string | null} revertReason - Pre-decoded reason\n * @param {unknown} revertArgsExisting - Pre-decoded args\n * @param {Error & { reason?: string; revert?: { name?: string } }} err - Underlying ethers error\n * @returns {{ revertReason: string | null, revertArgs: unknown, revertSignature: string | null }}\n *   Resolved fields\n */\nfunction _resolveRevertFields(iface, revertData, revertReason, revertArgsExisting, err) {\n  let revertReasonOut =\n    (typeof revertReason === 'string' && revertReason) ||\n    (typeof err.revert?.name === 'string' && err.revert.name) ||\n    (typeof err.reason === 'string' && err.reason) ||\n    null;\n  /** @type {unknown} */\n  let revertArgsOut = revertArgsExisting;\n  /** @type {string | null} */\n  let revertSignatureOut = null;\n\n  if (revertData && iface) {\n    const decoded = decodeCustomError(iface, revertData);\n    if (!revertReasonOut && decoded.revertReason) {\n      revertReasonOut = decoded.revertReason;\n    }\n    if (decoded.revertArgs != null && revertArgsOut == null) {\n      revertArgsOut = decoded.revertArgs;\n    }\n    if (decoded.revertSignature) {\n      revertSignatureOut = decoded.revertSignature;\n    }\n  }\n\n  return { revertReason: revertReasonOut, revertArgs: revertArgsOut, revertSignature: revertSignatureOut };\n}\n\n/**\n * Build the {@code (revertData, resolved, extra)} triple consumed by {@link revertTranslator}.\n *\n * @description Extracts revert bytes from the error (or accepts a pre-extracted value via\n * {@code enrichRevertData}), resolves the reason / args / signature via\n * {@link _resolveRevertFields}, and packs decoded extras into a context bag.\n *\n * @private\n * @param {Error} err - Underlying ethers error\n * @param {EthersInterface | null} revertInterface - ABI for custom error decoding (optional)\n * @param {string | null | undefined} enrichRevertData - Pre-extracted revert bytes\n * @param {string | null | undefined} enrichRevertReason - Pre-decoded reason\n * @param {unknown} enrichRevertArgs - Pre-decoded args\n * @param {string | null | undefined} enrichRevertSignature - Pre-decoded signature\n * @returns {{ revertData: string | null, resolved: { revertReason: string | null, revertArgs: unknown, revertSignature: string | null }, extra: Record<string, unknown> }}\n *   Triple ready for use in {@link ContractRevertError} construction\n */\nfunction _buildCallExceptionRevertDetails(\n  err,\n  revertInterface,\n  enrichRevertData,\n  enrichRevertReason,\n  enrichRevertArgs,\n  enrichRevertSignature\n) {\n  const revertData =\n    (typeof enrichRevertData === 'string' && enrichRevertData) ||\n    extractRpcRevertBytes(err) ||\n    /** @type {any} */ (err).data ||\n    null;\n  const resolved = _resolveRevertFields(\n    revertInterface,\n    revertData,\n    enrichRevertReason,\n    enrichRevertArgs,\n    /** @type {any} */ (err)\n  );\n  /** @type {Record<string, unknown>} */\n  const extra = {};\n  _assignRevertExtras(extra, {\n    revertArgs: resolved.revertArgs,\n    revertSignature: resolved.revertSignature || enrichRevertSignature\n  });\n  return { revertData, resolved, extra };\n}\n\n/**\n * Translate ethers {@code CALL_EXCEPTION} / {@code UNPREDICTABLE_GAS_LIMIT} errors.\n *\n * @description This is the first translator run by the {@link sdkErrorPipeline}. It only matches\n * when the error code is one of the two listed; otherwise returns {@code null} so the next\n * translator gets a chance.\n *\n * Behaviour:\n * - When a transaction hash + receipt are available (mined revert) → returns\n *   {@link ContractRevertError} with the receipt and decoded revert info.\n * - When revert data / reason are present without a receipt (pre-flight call) → returns a\n *   {@link ContractRevertError} without receipt.\n * - When neither is present (likely an RPC connection failure surfacing via CALL_EXCEPTION) →\n *   returns a {@link NetworkError} carrying the original error.\n *\n * @public\n * @param {unknown} err - Caught error\n * @param {ErrorTranslationContext} context - Translator context\n * @returns {WalletError | null} {@link ContractRevertError} or {@link NetworkError} on match,\n *   {@code null} otherwise\n */\nexport function revertTranslator(err, context) {\n  const error = /** @type {Error} */ (err);\n  const errorCode = /** @type {Error & { code?: string }} */ (error).code || /** @type {any} */ (error).error?.code;\n  if (errorCode !== 'CALL_EXCEPTION' && errorCode !== 'UNPREDICTABLE_GAS_LIMIT') {\n    return null;\n  }\n\n  const {\n    methodName = 'operation',\n    rpcUrl = null,\n    revertInterface = null,\n    receipt: receiptOpt,\n    transactionHash: txHashOpt,\n    revertData: enrichRevertData,\n    revertReason: enrichRevertReason,\n    revertArgs: enrichRevertArgs,\n    revertSignature: enrichRevertSignature = null\n  } = context;\n\n  const message = error.message || String(error);\n  /** @type {string | undefined} */\n  const action = typeof /** @type {any} */ (error).action === 'string' ? /** @type {any} */ (error).action : undefined;\n  const nestedRpc = _nestedRpcMessage(error);\n\n  const receipt = /** @type {TransactionReceipt | null | undefined} */ (\n    receiptOpt ?? /** @type {any} */ (error).receipt\n  );\n  const txHash =\n    (typeof txHashOpt === 'string' && txHashOpt && txHashOpt.length > 0 ? txHashOpt : null) ||\n    (receipt && typeof receipt.hash === 'string' ? receipt.hash : null);\n\n  if (txHash && receipt) {\n    const { revertData, resolved, extra } = _buildCallExceptionRevertDetails(\n      error,\n      revertInterface ?? null,\n      enrichRevertData,\n      enrichRevertReason,\n      enrichRevertArgs,\n      enrichRevertSignature\n    );\n    const summary = resolved.revertReason\n      ? `Transaction reverted: ${resolved.revertReason}`\n      : `Transaction reverted: ${message}`;\n    return new ContractRevertError(\n      summary,\n      revertData,\n      resolved.revertReason,\n      txHash,\n      receipt,\n      extra\n    );\n  }\n\n  const { revertData, resolved, extra } = _buildCallExceptionRevertDetails(\n    error,\n    revertInterface ?? null,\n    enrichRevertData,\n    enrichRevertReason,\n    enrichRevertArgs,\n    enrichRevertSignature\n  );\n  const hasRevert = !!(revertData || resolved.revertReason || /** @type {any} */ (error).revert);\n  if (hasRevert) {\n    const label = resolved.revertReason || 'unknown';\n    const summary = `Call reverted: ${label}`;\n    return new ContractRevertError(summary, revertData, resolved.revertReason, null, null, extra);\n  }\n\n  const actionPart = action ? ` (${action})` : '';\n  const detail = nestedRpc && nestedRpc !== message ? `${message}: ${nestedRpc}` : message;\n  return new NetworkError(\n    `RPC call failed${actionPart} during ${methodName}: ${detail}`,\n    rpcUrl,\n    error\n  );\n}\n","/**\n * Translator for transport-level RPC / provider failures.\n *\n * Recognises the canonical ethers v6 error codes ({@code NETWORK_ERROR}, {@code TIMEOUT},\n * {@code SERVER_ERROR}, {@code UNKNOWN_ERROR}) and the bare {@code error.name === 'NetworkError'}\n * shape. Defers when {@code authProofType} is set so the {@link signingTranslator} gets the first\n * shot at signing-related failures.\n *\n * @module errors/translators/network\n */\n\nimport { NetworkError } from '../WalletError.js';\n\n/**\n * Translate provider / JSON-RPC transport failures into {@link NetworkError}.\n *\n * @public\n * @param {unknown} err - Caught error\n * @param {ErrorTranslationContext} context - Translator context (uses {@code methodName},\n *   {@code rpcUrl}, {@code authProofType})\n * @returns {import('../WalletError.js').NetworkError | null} {@link NetworkError} on match,\n *   {@code null} when the error is not transport-shaped or {@code authProofType} is set\n */\nexport function networkTranslator(err, context) {\n  if (context.authProofType) {\n    return null;\n  }\n\n  const error = /** @type {Error} */ (err);\n  const message = error.message || String(err);\n  const errorCode = /** @type {Error & { code?: string }} */ (error).code || /** @type {any} */ (error).error?.code;\n  const { methodName = 'operation', rpcUrl = null } = context;\n\n  if (\n    errorCode === 'NETWORK_ERROR' ||\n    errorCode === 'TIMEOUT' ||\n    errorCode === 'SERVER_ERROR' ||\n    errorCode === 'UNKNOWN_ERROR' ||\n    error.name === 'NetworkError'\n  ) {\n    return new NetworkError(`Network error: ${message} during ${methodName}`, rpcUrl, error);\n  }\n\n  return null;\n}\n","/**\n * Translator dedicated to signing-side failures emitted by the auth-proof builders.\n *\n * @description Only engages when {@code context.authProofType} and {@code context.functionName}\n * are both set — otherwise returns {@code null} immediately so the rest of the pipeline runs as\n * usual. Distinguishes three buckets:\n * - Transport failures (network / timeout / server) → {@link NetworkError}\n * - ABI encoding failures → {@link ValidationError} on {@code authProof}\n * - Anything else → generic {@link WalletError} with code {@code \"UNKNOWN_ERROR\"}\n *\n * @module errors/translators/signing\n */\n\nimport { NetworkError, ValidationError, WalletError } from '../WalletError.js';\n\n/**\n * Translate signing / EIP-712 / auth-proof builder failures.\n *\n * @public\n * @param {unknown} error - Caught error\n * @param {ErrorTranslationContext} context - Translator context (uses {@code authProofType},\n *   {@code functionName}, {@code validationExtra})\n * @returns {WalletError | NetworkError | ValidationError | null} The categorised error, or\n *   {@code null} when context is missing the auth-proof markers\n */\nexport function signingTranslator(error, context) {\n  const { authProofType, functionName, validationExtra = {} } = context;\n  if (!authProofType || !functionName) {\n    return null;\n  }\n\n  const err = /** @type {{ code?: string; error?: { code?: string }; name?: string; message?: string }} */ (error);\n  const errorCode = err.code || err.error?.code;\n  const errorMessage = err.message || String(error);\n\n  if (\n    errorCode === 'NETWORK_ERROR' ||\n    errorCode === 'TIMEOUT' ||\n    errorCode === 'SERVER_ERROR' ||\n    errorCode === 'UNKNOWN_ERROR' ||\n    err.name === 'NetworkError' ||\n    errorMessage.includes('network') ||\n    errorMessage.includes('connection') ||\n    errorMessage.includes('timeout')\n  ) {\n    return new NetworkError(\n      `Failed to create ${authProofType}: Network error during signing - ${errorMessage}`,\n      null,\n      /** @type {Error|null} */ (/** @type {any} */ (error))\n    );\n  }\n\n  if (errorMessage.includes('encode') || errorMessage.includes('ABI')) {\n    return new ValidationError(\n      `Failed to encode ${authProofType}: ${errorMessage}`,\n      'authProof',\n      validationExtra\n    );\n  }\n\n  return new WalletError(`Failed to create ${authProofType}: ${errorMessage}`, 'UNKNOWN_ERROR', {\n    function: functionName,\n    originalError: errorMessage,\n    originalCode: errorCode\n  });\n}\n","/**\n * Translator for ABI encoder failures originating in {@code ethers} ({@code MISSING_ARGUMENT} /\n * {@code INVALID_ARGUMENT}).\n *\n * Produces a generic {@link WalletError} with code {@code \"ABI_ENCODER_ERROR\"}, optional\n * {@code argumentCount} / {@code expectedArgumentCount} / {@code argument} fields, and a\n * sanitised {@code value} (sensitive arg values like passwords are never copied verbatim).\n *\n * @module errors/translators/ethersEncoder\n */\n\nimport { WalletError } from '../WalletError.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * Translate ABI encoder errors emitted by ethers.\n *\n * @public\n * @param {unknown} err - Caught error\n * @param {ErrorTranslationContext} context - Translator context (uses {@code methodName})\n * @returns {WalletError | null} {@link WalletError} with code {@code \"ABI_ENCODER_ERROR\"} on\n *   match, {@code null} otherwise\n */\nexport function ethersEncoderTranslator(err, context) {\n  const error = /** @type {Error & { code?: string }} */ (err);\n  const errorCode = error.code || /** @type {any} */ (error).error?.code;\n  if (errorCode !== 'MISSING_ARGUMENT' && errorCode !== 'INVALID_ARGUMENT') {\n    return null;\n  }\n\n  const message = error.message || String(err);\n  const { methodName = 'operation' } = context;\n  const e = /** @type {Error & { count?: number; expectedCount?: number; argument?: string; value?: unknown }} */ (\n    error\n  );\n  const argLabel = e.argument != null ? String(e.argument) : '';\n\n  return new WalletError(`ABI encoding failed during ${methodName}: ${message}`, 'ABI_ENCODER_ERROR', {\n    methodName,\n    originalError: message,\n    originalCode: errorCode,\n    ...(e.count != null ? { argumentCount: e.count } : {}),\n    ...(e.expectedCount != null ? { expectedArgumentCount: e.expectedCount } : {}),\n    ...(e.argument != null ? { argument: e.argument } : {}),\n    ...(e.value !== undefined ? { value: sanitizer.forEncoderValue(argLabel, e.value) } : {})\n  });\n}\n","/**\n * Last-resort translator that always returns a {@link WalletError}.\n *\n * Sits at the end of the {@link sdkErrorPipeline} so the engine never falls off the end without a\n * translation. Produces a {@code \"UNKNOWN_ERROR\"} {@link WalletError} with the original message,\n * code, and a sanitised copy of the caller's SDK context (with {@code revertInterface} stripped\n * so we don't end up serialising an entire ABI inside an error).\n *\n * @module errors/translators/fallback\n */\n\nimport { WalletError } from '../WalletError.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * Translate any otherwise-unrecognised error into a generic {@link WalletError}.\n *\n * @public\n * @param {unknown} err - Caught error\n * @param {ErrorTranslationContext} context - Translator context (uses {@code methodName},\n *   {@code sdkContext})\n * @returns {WalletError} A {@link WalletError} with code {@code \"UNKNOWN_ERROR\"} (never returns\n *   {@code null}; this translator is the pipeline terminator)\n */\nexport function fallbackTranslator(err, context) {\n  const error = /** @type {Error} */ (err);\n  const message = error.message || String(err);\n  const errorCode = /** @type {Error & { code?: string }} */ (error).code || /** @type {any} */ (error).error?.code;\n  const { methodName = 'operation', sdkContext = {} } = context;\n\n  const safeSdk = sanitizer.forErrorContext({ ...sdkContext });\n  delete /** @type {any} */ (safeSdk).revertInterface;\n\n  return new WalletError(`Failed during ${methodName}: ${message}`, 'UNKNOWN_ERROR', {\n    methodName,\n    ...safeSdk,\n    originalError: message,\n    originalCode: errorCode\n  });\n}\n","/**\n * Unified error translation pipeline used by every SDK code path.\n *\n * The pipeline turns arbitrary thrown values (ethers errors, RPC failures, signing failures,\n * fetch errors, plain {@code Error} instances, strings, etc.) into a single {@link WalletError}\n * subclass with stable codes and sanitised context. It runs an ordered list of translators\n * (see {@link sdkErrorPipeline}) and short-circuits on the first match.\n *\n * Public surface:\n * - {@link ErrorPipeline} class — generic ordered-translator engine\n * - {@link sdkErrorPipeline} — shared singleton pre-configured with the default translator order\n * - {@link toWalletError} / {@link rethrowExecuteError} — convenience wrappers around the singleton\n * - {@link applySdkContext} — merge extra context onto an existing {@link WalletError}\n *\n * @module errors/pipeline\n */\n\nimport { WalletError } from './WalletError.js';\nimport { sanitizer } from '../internal/sanitization/index.js';\n\nexport { decodeCustomError, extractRpcRevertBytes } from './translators/revert.js';\n\nimport { revertTranslator } from './translators/revert.js';\nimport { networkTranslator } from './translators/network.js';\nimport { signingTranslator } from './translators/signing.js';\nimport { ethersEncoderTranslator } from './translators/ethersEncoder.js';\nimport { fallbackTranslator } from './translators/fallback.js';\n\n/**\n * Merge an arbitrary context bag onto an existing {@link WalletError}.\n *\n * @description No-op when {@code err} is not a {@link WalletError} or {@code sdkContext} is not an\n * object. Does NOT sanitise the merged keys — callers that consume untrusted input should run\n * {@code sanitizer.forErrorContext} first (see {@link _mergeSanitizedSdkContext}).\n *\n * @public\n * @param {WalletError} err - Target error (mutated in place)\n * @param {Record<string, unknown>} [sdkContext={}] - Context to merge\n * @returns {void}\n */\nexport function applySdkContext(err, sdkContext = {}) {\n  if (!(err instanceof WalletError) || !sdkContext || typeof sdkContext !== 'object') {\n    return;\n  }\n  err.context = { ...(err.context || {}), ...sdkContext };\n}\n\n/**\n * Merge {@code sdkContext} onto a {@link WalletError} after running it through the sanitizer.\n *\n * @description Internal helper used by {@link ErrorPipeline.translate} and\n * {@link ErrorPipeline.rethrow} so every {@link WalletError} that exits the pipeline has its\n * sensitive context keys redacted.\n *\n * @private\n * @param {WalletError} err - Target error (mutated in place)\n * @param {Record<string, unknown>} [sdkContext={}] - Context to sanitise + merge\n * @returns {void}\n */\nfunction _mergeSanitizedSdkContext(err, sdkContext = {}) {\n  applySdkContext(err, sanitizer.forErrorContext(sdkContext));\n}\n\n/**\n * Ordered translator engine that converts arbitrary thrown values into {@link WalletError}.\n *\n * @description Translators are tried in the order given to the constructor. The first one that\n * returns a non-null {@link WalletError} wins; remaining translators are not consulted. The\n * default {@link sdkErrorPipeline} terminates with the {@code fallbackTranslator} which always\n * returns a {@link WalletError}, so {@link translate} never throws an internal error in practice.\n *\n * @public\n */\nexport class ErrorPipeline {\n  /**\n   * @public\n   * @param {ErrorTranslator[]} [translators=[]] - Ordered translator list. Should end with a\n   *   never-null fallback translator to guarantee {@link translate} returns.\n   */\n  constructor(translators = []) {\n    this.translators = translators;\n  }\n\n  /**\n   * Translate an unknown thrown value into a {@link WalletError}.\n   *\n   * @description Coerces non-Error values into {@link Error} first, runs every translator in\n   * order, and merges {@code context.sdkContext} (sanitised) onto the produced error.\n   *\n   * @public\n   * @param {unknown} error - The thrown value (Error, string, primitive, object…)\n   * @param {ErrorTranslationContext} [context={}] - Translation context (method name, RPC URL, etc.)\n   * @returns {WalletError} A subclass of {@link WalletError} produced by the matching translator\n   * @throws {Error} If no translator (including the fallback) returns a value — indicates a\n   *   programmer error in the pipeline configuration\n   */\n  translate(error, context = {}) {\n    const errObj =\n      error instanceof Error ? error : new Error(typeof error === 'string' ? error : String(error));\n\n    for (const translator of this.translators) {\n      const result = translator(errObj, context);\n      if (result) {\n        _mergeSanitizedSdkContext(result, context.sdkContext);\n        return result;\n      }\n    }\n\n    throw new Error('ErrorPipeline: fallback translator did not return');\n  }\n\n  /**\n   * Rethrow an error, translating it first if it isn't already a {@link WalletError}.\n   *\n   * @description When {@code error} is already a {@link WalletError}, only the (sanitised)\n   * {@code sdkContext} is merged onto it before rethrowing — the existing error class and code are\n   * preserved. Otherwise {@link translate} is used to produce the {@link WalletError} that gets\n   * thrown. Always exits via {@code throw}, hence {@code never} return type.\n   *\n   * @public\n   * @param {unknown} error - Original thrown value\n   * @param {ErrorTranslationContext} [context={}] - Translation context\n   * @returns {never}\n   * @throws {WalletError} Always — either the original (with merged context) or a translated copy\n   */\n  rethrow(error, context = {}) {\n    if (error instanceof WalletError) {\n      _mergeSanitizedSdkContext(error, context.sdkContext);\n      throw error;\n    }\n    throw this.translate(error, context);\n  }\n}\n\n/**\n * Process-wide singleton pipeline used by every contract client and crypto helper.\n *\n * @description Translator order:\n * 1. {@code revertTranslator} — decodes EVM reverts (custom errors, {@code Error(string)})\n * 2. {@code networkTranslator} — RPC connectivity / transport failures\n * 3. {@code signingTranslator} — signing-side failures (only when {@code authProofType} is set)\n * 4. {@code ethersEncoderTranslator} — ABI encoding / decoding failures\n * 5. {@code fallbackTranslator} — guaranteed last-resort that always returns a {@link WalletError}\n *\n * @public\n * @readonly\n * @type {ErrorPipeline}\n */\nexport const sdkErrorPipeline = new ErrorPipeline([\n  revertTranslator,\n  networkTranslator,\n  signingTranslator,\n  ethersEncoderTranslator,\n  /** @type {ErrorTranslator} */ (fallbackTranslator)\n]);\n\n/**\n * Convenience wrapper around {@link sdkErrorPipeline.translate}.\n *\n * @public\n * @param {unknown} err - The thrown value\n * @param {ErrorTranslationContext} [options={}] - Translation context\n * @returns {WalletError} A {@link WalletError} subclass\n */\nexport function toWalletError(err, options = {}) {\n  return sdkErrorPipeline.translate(err, options);\n}\n\n/**\n * Convenience wrapper around {@link sdkErrorPipeline.rethrow}, with the narrow option shape used\n * by {@code BaseContractClient.executeRead} / {@code executeWrite}.\n *\n * @public\n * @param {unknown} err - The thrown value\n * @param {{ methodName: string; rpcUrl: string | null; revertInterface?: EthersInterface | null | undefined; sdkContext: Record<string, unknown> }} opts -\n *   Required execute-time context\n * @returns {never}\n * @throws {WalletError} Always\n */\nexport function rethrowExecuteError(err, opts) {\n  sdkErrorPipeline.rethrow(err, opts);\n}\n","/**\n * Single import boundary for ABI encode/decode primitives from {@code ethers}.\n *\n * Used by every component that needs to encode {@code authConfig} / {@code authProof}, decode\n * structured revert reasons, or build {@link Interface} instances for event parsing.\n *\n * @module adapters/ethers/encoding\n */\n\nimport { AbiCoder, Interface } from 'ethers';\n\n/**\n * Process-wide singleton {@link AbiCoder} instance.\n *\n * Equivalent to {@code AbiCoder.defaultAbiCoder()} but cached so callers can avoid the repeated\n * factory lookup on hot paths (auth proof encoding, revert decoding).\n *\n * @public\n * @readonly\n * @type {AbiCoder}\n */\nconst defaultAbiCoder = AbiCoder.defaultAbiCoder();\n\nexport { AbiCoder, Interface, defaultAbiCoder };\n","/**\n * Internal SDK logger.\n *\n * Provides a tiny level-based logger that wraps the native {@code console.*} methods. Messages at\n * or below the current level are emitted; everything else is dropped.\n *\n * @module internal/logger\n */\n\n/**\n * Numeric weight for each log level — lower numbers are higher priority.\n *\n * @public\n * @readonly\n */\nconst LEVELS = {\n  error: 0,\n  warn: 1,\n  info: 2,\n  debug: 3\n};\n\n/**\n * Level-filtering wrapper around {@code console}.\n *\n * @public\n */\nclass Logger {\n  /**\n   * @public\n   * @param {{ level?: keyof typeof LEVELS, prefix?: string }} [options={}] - Initial level and\n   *   prefix for emitted lines\n   */\n  constructor({ level = 'error', prefix = 'Monstera' } = {}) {\n    this.level = level;\n    this.prefix = prefix;\n  }\n\n  /**\n   * Switch the active log level.\n   *\n   * @public\n   * @param {keyof typeof LEVELS} level - One of {@code \"error\"}, {@code \"warn\"}, {@code \"info\"},\n   *   {@code \"debug\"}\n   * @returns {void}\n   * @throws {Error} If {@code level} is not a known key of {@link LEVELS}\n   */\n  setLevel(level) {\n    if (!(level in LEVELS)) {\n      throw new Error(`Invalid log level: ${level}. Use: error, warn, info, debug`);\n    }\n    this.level = level;\n  }\n\n  /**\n   * Whether the given level would currently be emitted.\n   *\n   * @public\n   * @param {keyof typeof LEVELS} level - Candidate level\n   * @returns {boolean} {@code true} if a log call at {@code level} would be printed\n   */\n  shouldLog(level) {\n    return LEVELS[level] <= LEVELS[this.level];\n  }\n\n  /**\n   * Build the prefixed argument array passed to the underlying {@code console} method.\n   *\n   * @private\n   * @param {keyof typeof LEVELS} level - Level for the prefix\n   * @param {unknown[]} args - Caller arguments\n   * @returns {unknown[]} Formatted arguments\n   */\n  _format(level, args) {\n    return [`[${this.prefix}]`, `[${level}]`, ...args];\n  }\n\n  /**\n   * Emit at level {@code error}.\n   * @public\n   * @param {...unknown} args - Arguments forwarded to {@code console.error}\n   * @returns {void}\n   */\n  error(...args) {\n    if (this.shouldLog('error')) {\n      console.error(...this._format('error', args));\n    }\n  }\n\n  /**\n   * Emit at level {@code warn}.\n   * @public\n   * @param {...unknown} args - Arguments forwarded to {@code console.warn}\n   * @returns {void}\n   */\n  warn(...args) {\n    if (this.shouldLog('warn')) {\n      console.warn(...this._format('warn', args));\n    }\n  }\n\n  /**\n   * Emit at level {@code info}.\n   * @public\n   * @param {...unknown} args - Arguments forwarded to {@code console.info}\n   * @returns {void}\n   */\n  info(...args) {\n    if (this.shouldLog('info')) {\n      console.info(...this._format('info', args));\n    }\n  }\n\n  /**\n   * Emit at level {@code debug}.\n   * @public\n   * @param {...unknown} args - Arguments forwarded to {@code console.debug}\n   * @returns {void}\n   */\n  debug(...args) {\n    if (this.shouldLog('debug')) {\n      console.debug(...this._format('debug', args));\n    }\n  }\n}\n\n/**\n * Singleton logger instance used by the SDK.\n *\n * @public\n * @readonly\n * @type {Logger}\n */\nconst log = new Logger({ level: 'error', prefix: 'Monstera' });\n\nexport { LEVELS, Logger, log };\nexport default log;\n","/**\n * Config-time assert wrappers that map {@link ValidationError} to {@link ConfigError}.\n *\n * @module internal/validators/configAssert\n */\n\nimport { ConfigError, ValidationError } from '../../errors/index.js';\nimport {\n  requireAddress,\n  requireChainId,\n  requirePlainObject,\n  requireString\n} from '../validation/assert.js';\n\n/**\n * @param {unknown} value\n * @param {string} name\n * @param {string} message\n */\nfunction requireConfigString(value, name, message) {\n  try {\n    requireString(value, name);\n  } catch (error) {\n    if (error instanceof ValidationError) {\n      throw new ConfigError(message, name);\n    }\n    throw error;\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} name\n * @param {{ missing: string, invalid: string }} messages\n */\nfunction requireConfigChainId(value, name, messages) {\n  try {\n    requireChainId(value, name);\n  } catch (error) {\n    if (error instanceof ValidationError) {\n      const message =\n        value === undefined || value === null ? messages.missing : messages.invalid;\n      throw new ConfigError(message, name);\n    }\n    throw error;\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} name\n * @param {string} message\n */\nfunction requireConfigPlainObject(value, name, message) {\n  try {\n    requirePlainObject(value, name);\n  } catch (error) {\n    if (error instanceof ValidationError) {\n      throw new ConfigError(message, name);\n    }\n    throw error;\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} name\n * @param {string} message\n */\nfunction requireConfigAddress(value, name, message) {\n  try {\n    requireAddress(value, name);\n  } catch (error) {\n    if (error instanceof ValidationError) {\n      throw new ConfigError(message, name);\n    }\n    throw error;\n  }\n}\n\nexport {\n  requireConfigString,\n  requireConfigChainId,\n  requireConfigPlainObject,\n  requireConfigAddress\n};\n","/**\n * JSON-RPC provider factory and URL redactor.\n *\n * The single place in the SDK where {@link JsonRpcProvider} is constructed for read flows. The\n * Sapphire write provider is built separately in {@code src/providers/sapphire.js} but ultimately\n * reuses the same {@code ethers} import surface.\n *\n * @module adapters/ethers/provider\n */\n\nimport { JsonRpcProvider } from 'ethers';\nimport log from '../../internal/logger.js';\nimport { requireConfigString } from '../../internal/validators/configAssert.js';\n\n/**\n * Redact an RPC URL down to {@code protocol://host} for safe logging.\n *\n * @description Strips any path, query string, user-info, or fragment so API keys / tokens that are\n * occasionally passed via URL never end up in logs. Returns a sentinel string for empty / malformed\n * input rather than throwing — this helper is called from log lines and must never reject.\n *\n * @public\n * @param {string} url - RPC URL (may be empty / non-string / invalid)\n * @returns {string} Safe string for logs ({@code \"protocol://host\"}, {@code \"[none]\"} for falsy, or\n *   {@code \"[invalid]\"} for unparseable input)\n */\nfunction redactRpcUrl(url) {\n  if (!url || typeof url !== 'string') return '[none]';\n  try {\n    const u = new URL(url);\n    return `${u.protocol}//${u.host}`;\n  } catch {\n    return '[invalid]';\n  }\n}\n\n/**\n * Build a fresh {@link JsonRpcProvider} for the given URL.\n *\n * @description Shared entry point used wherever the SDK needs a read-only RPC connection (default\n * read provider, contract registry fallbacks, tooling). Validates that {@code rpcUrl} is provided\n * and emits a {@code debug}-level log line with the redacted URL and role for observability. Does\n * not perform a live network probe — connectivity errors surface on the first request.\n *\n * @public\n * @param {string} rpcUrl - JSON-RPC endpoint URL\n * @param {string} [role] - Optional label for logs (e.g. {@code \"read\"}, {@code \"write\"})\n * @returns {JsonRpcProviderType} A new ethers {@link JsonRpcProvider} bound to {@code rpcUrl}\n * @throws {ConfigError} If {@code rpcUrl} is empty/missing\n */\nfunction createProvider(rpcUrl, role) {\n  requireConfigString(rpcUrl, 'rpcUrl', 'RPC URL is required');\n\n  log.debug('createProvider', { rpcUrl: redactRpcUrl(rpcUrl), role });\n\n  return new JsonRpcProvider(rpcUrl);\n}\n\nexport { JsonRpcProvider, createProvider, redactRpcUrl };\n","/**\n * Shared time helpers used by deadline assertions and the minute-bucket auth flows.\n *\n * @module internal/utils/time\n */\n\nimport { requireNonNegativeInteger } from '../validation/assert.js';\n\n/**\n * Current Unix timestamp in whole seconds, taken from the local clock.\n *\n * @public\n * @returns {number} {@code Math.floor(Date.now() / 1000)}\n */\nfunction nowUnixTimestampSeconds() {\n  return Math.floor(Date.now() / 1000);\n}\n\n/**\n * Floor a Unix timestamp (in seconds) to the start of its minute bucket.\n *\n * @description Used by the password-minute / dual-factor auth flows so off-chain and on-chain\n * agree on the same bucket to derive the ephemeral signer.\n *\n * @public\n * @param {number} timestampSeconds - Unix timestamp in seconds\n * @returns {number} Largest multiple of 60 that is ≤ {@code timestampSeconds}\n * @throws {ValidationError} If {@code timestampSeconds} is not a finite non-negative integer\n */\nfunction floorTimestampToMinuteBucket(timestampSeconds) {\n  requireNonNegativeInteger(timestampSeconds, 'timestampSeconds');\n  return Math.floor(timestampSeconds / 60) * 60;\n}\n\nexport { nowUnixTimestampSeconds, floorTimestampToMinuteBucket };\n","/**\n * Primitive value validators (strings, numbers, objects, booleans).\n *\n * @module internal/validation/primitives\n */\n\nimport { ValidationError } from '../../errors/index.js';\nimport { HDNodeWallet, Wallet } from '../../adapters/ethers/index.js';\nimport { Mnemonic } from '../../adapters/ethers/index.js';\nimport { normalizeBigInt, normalizeChainId, normalizeMnemonic, normalizeUsername } from '../utils/normalize.js';\nimport { nowUnixTimestampSeconds } from '../utils/time.js';\n\n/**\n * @param {string} value\n * @param {string} [name]\n */\nexport function requireString(value, name = 'string') {\n  if (!value || typeof value !== 'string' || value.trim() === '') {\n    throw new ValidationError(`${name} is required and must be a non-empty string`, name, value);\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} [name]\n * @returns {string}\n */\nexport function requireNormalizedUsername(value, name = 'username') {\n  const normalized = normalizeUsername(value);\n  if (normalized === undefined) {\n    throw new ValidationError(`${name} is required and must be a non-empty string`, name, value);\n  }\n  return normalized;\n}\n\n/**\n * @param {Mnemonic} value\n * @param {string} [name]\n */\nexport function requireMnemonic(value, name = 'mnemonic') {\n  requireString(value, name);\n\n  const normalized = normalizeMnemonic(value);\n  if (!normalized) {\n    throw new ValidationError(`${name} is required and must be a non-empty string`, name, value);\n  }\n\n  const words = normalized.split(' ').filter(word => word.length > 0);\n\n  if (words.length !== 12 && words.length !== 24) {\n    throw new ValidationError(\n      `${name} must be a valid BIP39 mnemonic with 12 or 24 words (got ${words.length} words)`,\n      name,\n      value\n    );\n  }\n\n  if (!Mnemonic.isValidMnemonic(normalized)) {\n    throw new ValidationError(\n      `${name} is not a valid BIP39 mnemonic (invalid words, length, or checksum)`,\n      name,\n      value\n    );\n  }\n}\n\n/**\n * @param {number | bigint} value\n * @param {string} [name]\n * @param {{ allowZero?: boolean, allowNegative?: boolean, requireInteger?: boolean }} [options]\n */\nexport function requireNumber(value, name = 'number', options = {}) {\n  const { allowZero = true, allowNegative = false, requireInteger = false } = options;\n\n  if (value === undefined || value === null) {\n    throw new ValidationError(`${name} is required`, name, value);\n  }\n\n  const isNumber = typeof value === 'number';\n  const isBigInt = typeof value === 'bigint';\n\n  if (!isNumber && !isBigInt) {\n    throw new ValidationError(`${name} is required and must be a number or BigInt`, name, value);\n  }\n\n  const numValue = isBigInt ? Number(value) : value;\n\n  if (!allowZero && numValue === 0) {\n    throw new ValidationError(`${name} must be non-zero`, name, value);\n  }\n\n  if (!allowNegative && numValue < 0) {\n    throw new ValidationError(`${name} must be non-negative`, name, value);\n  }\n\n  if (requireInteger) {\n    if (isBigInt) {\n      return;\n    }\n    if (!Number.isInteger(numValue)) {\n      throw new ValidationError(`${name} must be an integer`, name, value);\n    }\n  }\n}\n\n/**\n * @param {number | bigint} value\n * @param {string} [name]\n */\nexport function requireNonNegativeInteger(value, name = 'number') {\n  requireNumber(value, name, { allowZero: true, allowNegative: false, requireInteger: true });\n}\n\n/**\n * @param {number | bigint} value\n * @param {string} [name]\n */\nexport function requirePositiveInteger(value, name = 'number') {\n  requireNumber(value, name, { allowZero: false, allowNegative: false, requireInteger: true });\n}\n\n/**\n * @param {Array} value\n * @param {string} [name]\n */\nexport function requireArray(value, name = 'array') {\n  if (!Array.isArray(value)) {\n    throw new ValidationError(`${name} is required and must be an array`, name, value);\n  }\n  if (value.length === 0) {\n    throw new ValidationError(`${name} must be a non-empty array`, name, value);\n  }\n}\n\n/**\n * @param {Wallet | HDNodeWallet} value\n * @param {string} [name]\n */\nexport function requireWalletOrHdNode(value, name = 'signer') {\n  if (!value || !(value instanceof Wallet || value instanceof HDNodeWallet)) {\n    throw new ValidationError(`${name} is required and must be a Wallet or HDNodeWallet`, name, value);\n  }\n}\n\n/**\n * @param {string | number} value\n * @param {string} [name]\n */\nexport function requireStringOrNumber(value, name = 'string or number') {\n  if (!value || typeof value !== 'string' && typeof value !== 'number') {\n    throw new ValidationError(`${name} is required and must be a string or number`, name, value);\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} [name]\n * @returns {ChainId}\n */\nexport function requireChainId(value, name = 'chainId') {\n  if (value === undefined || value === null) {\n    throw new ValidationError(`${name} is required and must be a chain id`, name, value);\n  }\n  const normalized = normalizeChainId(value);\n  if (normalized === undefined) {\n    throw new ValidationError(\n      `${name} must be a finite chain id (number, bigint, decimal string, or hex string)`,\n      name,\n      value\n    );\n  }\n  return normalized;\n}\n\n/**\n * @param {unknown} value\n * @param {string} [name]\n * @param {{ allowNegative?: boolean }} [options]\n * @returns {bigint}\n */\nexport function requireBigInt(value, name = 'value', options = {}) {\n  const { allowNegative = true } = options;\n\n  if (value === undefined || value === null) {\n    throw new ValidationError(`${name} is required and must be a bigint`, name, value);\n  }\n\n  const b = normalizeBigInt(value);\n  if (b === undefined) {\n    throw new ValidationError(\n      `${name} must be a bigint, finite integer number, or decimal/hex string`,\n      name,\n      value\n    );\n  }\n\n  if (!allowNegative && b < 0n) {\n    throw new ValidationError(`${name} must be non-negative`, name, value);\n  }\n\n  return b;\n}\n\n/**\n * @param {number} value\n * @param {string} [name]\n */\nexport function isInFuture(value, name = 'date') {\n  const nowInSeconds = nowUnixTimestampSeconds();\n  if (value < nowInSeconds) {\n    throw new ValidationError(`${name} must be in the future`, name, value);\n  }\n}\n\n/**\n * @param {boolean} value\n * @param {string} [name]\n */\nexport function requireBoolean(value, name = 'boolean') {\n  if (typeof value !== 'boolean') {\n    throw new ValidationError(`${name} is required and must be a boolean`, name, value);\n  }\n}\n\n/**\n * @param {unknown} value\n * @returns {boolean}\n */\nexport function isPlainObject(value) {\n  return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * @param {unknown} value\n * @param {string} [name]\n */\nexport function requireDefined(value, name = 'value') {\n  if (value === undefined || value === null) {\n    throw new ValidationError(`${name} is required`, name, value);\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} [name]\n * @param {{ requireNonEmpty?: boolean, message?: string }} [options]\n */\nexport function requirePlainObject(value, name = 'object', options = {}) {\n  const { requireNonEmpty = false, message } = options;\n\n  if (!isPlainObject(value)) {\n    throw new ValidationError(\n      message ?? `${name} is required and must be a plain object`,\n      name,\n      value\n    );\n  }\n\n  if (requireNonEmpty && Object.keys(value).length === 0) {\n    throw new ValidationError(`${name} must be a non-empty plain object`, name, value);\n  }\n}\n\n/**\n * @param {unknown} value\n * @param {string} [name]\n */\nexport function requireNonEmptyObject(value, name = 'object') {\n  requirePlainObject(value, name, { requireNonEmpty: true });\n}\n","/**\n * EVM address validators.\n *\n * @module internal/validation/address\n */\n\nimport { ValidationError } from '../../errors/index.js';\nimport { isAddress as ethersIsAddress } from '../../adapters/ethers/addresses.js';\nimport { requireString } from './primitives.js';\n\n/**\n * @param {unknown} value\n * @returns {boolean}\n */\nexport function isAddress(value) {\n  return typeof value === 'string' && ethersIsAddress(value);\n}\n\n/**\n * @param {string} value\n * @param {string} [name]\n */\nexport function requireAddress(value, name = 'address') {\n  requireString(value, name);\n  if (!isAddress(value)) {\n    throw new ValidationError(`${name} must be a valid Ethereum address`, name, value);\n  }\n}\n","/**\n * Bytes and hex validators.\n *\n * @module internal/validation/bytes\n */\n\nimport { ValidationError } from '../../errors/index.js';\nimport { isHexString as ethersIsHexString } from '../../adapters/ethers/addresses.js';\nimport { requireString } from './primitives.js';\n\n/**\n * @param {string | Uint8Array} value\n * @param {string} [name]\n */\nexport function requireBytes(value, name = 'bytes') {\n  if (value === undefined || value === null) {\n    throw new ValidationError(`${name} is required`, name, value);\n  }\n\n  if (value instanceof Uint8Array) {\n    return;\n  }\n\n  if (typeof value === 'string') {\n    if (!/^0x[a-fA-F0-9]*$/.test(value)) {\n      throw new ValidationError(`${name} must be a valid hex string (0x...) or Uint8Array`, name, value);\n    }\n    return;\n  }\n\n  throw new ValidationError(`${name} must be a string (hex) or Uint8Array`, name, value);\n}\n\n/**\n * @param {string | Uint8Array} value\n * @param {string} [name]\n */\nexport function requireNonEmptyBytes(value, name = 'bytes') {\n  requireBytes(value, name);\n  if (value instanceof Uint8Array) {\n    if (value.length === 0) {\n      throw new ValidationError(`${name} must be non-empty bytes`, name, value);\n    }\n    return;\n  }\n  if (typeof value === 'string' && value === '0x') {\n    throw new ValidationError(`${name} must be non-empty bytes`, name, value);\n  }\n}\n\n/**\n * @param {string} value\n * @param {string} [name]\n */\nexport function requireBytes32(value, name = 'bytes32') {\n  requireString(value, name);\n  if (!ethersIsHexString(value, 32)) {\n    throw new ValidationError(`${name} must be a 32-byte hex string value`, name, value);\n  }\n}\n\n/**\n * @param {Uint8Array} value\n * @param {string} [name]\n */\nexport function requireUtf8Bytes(value, name = 'utf8Bytes') {\n  if (!(value instanceof Uint8Array)) {\n    throw new ValidationError(`${name} is required and must be a Uint8Array`, name, value);\n  }\n  if (value.length === 0) {\n    throw new ValidationError(`${name} must be a non-empty Uint8Array`, name, value);\n  }\n}\n\n/**\n * @param {string} value\n * @param {string} [name]\n */\nexport function requireBytes4(value, name = 'bytes4') {\n  requireString(value, name);\n  if (!ethersIsHexString(value, 4)) {\n    throw new ValidationError(`${name} must be a 4-byte hex string`, name, value);\n  }\n}\n","/**\n * Provider capability validators.\n *\n * @module internal/validation/provider\n */\n\nimport { ValidationError } from '../../errors/index.js';\n\n/**\n * @param {unknown} provider\n * @param {string} method\n * @param {string} [name]\n * @param {{ message?: string }} [options]\n */\nexport function requireProviderMethod(provider, method, name = 'provider', options = {}) {\n  const { message } = options;\n\n  if (!provider || typeof /** @type {Record<string, unknown>} */ (provider)[method] !== 'function') {\n    throw new ValidationError(\n      message ?? `${name} must expose ${method}()`,\n      name,\n      provider\n    );\n  }\n}\n","/**\n * Validation helpers for the resolved {@link NetworkConfig} and its contract address map.\n *\n * Used by {@code MonsteraConfig.resolveBaseConfig} (during connect) and exported for tests.\n *\n * @module internal/validators/networkConfig\n */\n\nimport { ConfigError, ValidationError } from '../../errors/index.js';\nimport { isAddress, requireArray } from '../validation/assert.js';\nimport {\n  requireConfigChainId,\n  requireConfigPlainObject,\n  requireConfigString\n} from './configAssert.js';\n\n/**\n * Ordered list of contract address keys that must resolve before the SDK can be used.\n *\n * @description Single source of truth re-exported by {@link MonsteraConfig.requiredAddresses};\n * also consumed by {@link validateContractAddresses}.\n *\n * @public\n * @readonly\n * @type {RequiredContractAddressKeys}\n */\nconst REQUIRED_CONTRACT_ADDRESS_KEYS = Object.freeze([\n  'factory',\n  'passwordAuth',\n  'walletSignatureAuth',\n  'dualFactorAuth',\n  'passwordMinuteSignatureAuth',\n  'apiKeySessionAuth',\n  'multiAuthenticator',\n  'passwordOrWalletSigAuth'\n]);\n\n/**\n * Assert that a contract address map has every required key and that every value is a valid\n * EVM address.\n *\n * @public\n * @param {Partial<ContractAddresses>} addresses - Address map to validate\n * @param {RequiredContractAddressKeys} required - Ordered list of keys that must be present\n * @returns {void}\n * @throws {ValidationError} If {@code required} is not a non-empty array (raised by\n *   {@link requireArray}) or any present address fails {@link isAddress}\n * @throws {ConfigError} If any key from {@code required} is missing from {@code addresses}\n */\nfunction validateContractAddresses(addresses, required) {\n  requireArray(required, 'required');\n\n  const missing = required.filter(key => !addresses[key]);\n\n  if (missing.length > 0) {\n    throw new ConfigError(\n      `Missing required contract addresses: ${missing.join(', ')}. ` +\n        `Please provide addresses in config or set defaults.`,\n      missing.join(', ')\n    );\n  }\n\n  for (const [key, address] of Object.entries(addresses)) {\n    if (address && !isAddress(address)) {\n      throw new ValidationError(`Invalid address format for ${key}: ${address}`, key, address);\n    }\n  }\n}\n\n/**\n * Assert that a fully resolved {@link NetworkConfig} object is internally consistent.\n *\n * @description Checks the top-level shape ({@code rpcUrl}, {@code chainId}, {@code network},\n * {@code addresses}) and then defers to {@link validateContractAddresses} for the contract\n * address map.\n *\n * @public\n * @param {NetworkConfig | Record<string, unknown>} config - Candidate config object\n * @returns {void}\n * @throws {ConfigError} If {@code config} is missing or any required field\n *   ({@code rpcUrl}, {@code chainId}, {@code network}, {@code addresses}) is absent / wrong type\n * @throws {ValidationError} Forwarded from {@link validateContractAddresses} on bad address format\n */\nfunction assertValidResolvedConfig(config) {\n  requireConfigPlainObject(config, 'config', 'SDK configuration is required');\n  requireConfigString(config.rpcUrl, 'rpcUrl', 'RPC URL is required');\n  requireConfigChainId(config.chainId, 'chainId', {\n    missing: 'chainId is required',\n    invalid: 'chainId must be a valid chain id'\n  });\n  requireConfigString(config.network, 'network', 'network is required');\n  requireConfigPlainObject(config.addresses, 'addresses', 'contract addresses are required');\n  validateContractAddresses(config.addresses, REQUIRED_CONTRACT_ADDRESS_KEYS);\n}\n\nexport {\n  REQUIRED_CONTRACT_ADDRESS_KEYS,\n  validateContractAddresses,\n  assertValidResolvedConfig,\n};\n","/**\n * Connect-time option parsing and validation helpers.\n * \n * @module internal/validators/connectOptions\n */\n\nimport { ValidationError } from '../../errors/index.js';\nimport { requireNormalizedUsername, requirePlainObject, requireString, requireBytes32 } from '../validation/assert.js';\n\n/**\n * Validate connect-time credentials and return a normalised input object.\n *\n * @public\n * @param {unknown} credentials\n * @returns {ConnectCredentials | null}\n * @throws {ValidationError}\n * \n * @remarks\n * This function is used to validate the credentials input from the user.\n * - username's job is address resolution\n * - password's job is proof material for password-based authentication\n * - apiKey's job is proof material for API key-based authentication\n */\nexport function parseConnectCredentials(credentials) {\n  if (credentials == null) return null;\n  \n  requirePlainObject(credentials, 'credentials', {\n    message: 'credentials must be a plain object with username and at least one auth secret'\n  });\n\n  const { username, password, apiKey } = credentials;\n  const normalizedUsername = requireNormalizedUsername(username, 'credentials.username');\n\n  const hasPassword = password != null && String(password).trim() !== '';\n  const hasApiKey = apiKey != null && String(apiKey).trim() !== '';\n\n  if (!hasPassword && !hasApiKey) {\n    throw new ValidationError(\n      'credentials must include at least one of password or apiKey',\n      'credentials',\n      credentials\n    );\n  }\n\n  const result = { username: normalizedUsername };\n  if (hasPassword) {\n    requireString(password, 'credentials.password');\n    result.password = password;\n  }\n  if (hasApiKey) {\n    requireBytes32(apiKey, 'credentials.apiKey');\n    result.apiKey = apiKey;\n  }\n  return result;\n}\n\n/**\n * @param {Record<string, unknown>} options\n * @returns {{ signer: unknown; credentials: ConnectCredentials | null }}\n */\nexport function parseConnectInputs(options) {\n  const signer = options.signer;\n  return {\n    signer: signer != null && signer !== '' ? signer : null,\n    credentials: parseConnectCredentials(options.credentials)\n  };\n}\n","/**\n * Static SDK configuration container.\n *\n * Centralises a small set of facts that callers (and the {@code Monstera} facade) need before any\n * contracts are wired up:\n * - the running SDK version (read from {@code package.json} in Node, or injected via the\n *   {@code __MONSTERA_VERSION__} build-time global in bundlers)\n * - the built-in network metadata and contract address presets\n * - the canonical list of required {@link ContractAddresses} keys\n * - the resolver that merges user-supplied connect options with those presets and validates them\n *\n * All members are static; this class is never instantiated.\n *\n * @module config/monstera\n */\n\nimport { DEFAULT_ADDRESSES, NETWORKS, buildNetworkConfig } from './networks.js';\nimport { requireBoolean } from '../internal/validation/assert.js';\nimport log from '../internal/logger.js';\nimport { SENSITIVE_PARAM_NAMES } from '../internal/sanitization/index.js';\nimport {\n  REQUIRED_CONTRACT_ADDRESS_KEYS,\n  validateContractAddresses,\n} from '../internal/validators/networkConfig.js';\nimport { parseConnectInputs } from '../internal/validators/connectOptions.js';\nimport { createRequire } from 'module';\n\nconst require = createRequire(import.meta.url);\n\n/**\n   * @param {Record<string, unknown>} [options]\n   * @returns {{ logLevel: string; provider: EthersProvider | null; checkVersion: boolean | undefined }}\n */\nfunction _resolveConnectExtension(options = {}) {\n  const logLevel = options.logLevel ?? (options.debug === true ? 'debug' : 'error');\n  log.setLevel(logLevel);\n\n  return {\n    logLevel,\n    provider: options.provider ?? null,\n    checkVersion: options.checkVersion\n  };\n}\n\n/**\n * Static accessor for SDK configuration constants and the connect-time config resolver.\n *\n * @public\n */\nclass MonsteraConfig {\n  /**\n   * Resolve the SDK semver version string.\n   *\n   * @description Prefers the {@code __MONSTERA_VERSION__} global injected at build time (used by\n   * browser bundlers); falls back to reading {@code package.json} relative to this module in\n   * Node.js. Used by the version-check utility and by error context emitted from the facade.\n   *\n   * @remarks Catches and warns (in non-production) on any read failure, returning the literal\n   * {@code \"unknown\"} so this getter never throws.\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {string} SDK version string ({@code \"unknown\"} if it cannot be resolved)\n   */\n  static get version() {\n    // @ts-ignore\n    if (typeof __MONSTERA_VERSION__ !== 'undefined') {\n      // @ts-ignore\n      return __MONSTERA_VERSION__;\n    }\n    try {\n      if (typeof process !== 'undefined' && process?.versions?.node) {\n        const packageJson = require('../../package.json');\n        return packageJson?.version || 'unknown';\n      }\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn('Failed to load SDK version from package.json:', e.message);\n      }\n    }\n    return 'unknown';\n  }\n  \n  /**\n   * Built-in network metadata presets ({@code testnet} and {@code mainnet}).\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {NetworkPresets} Network configuration presets\n   */\n  static get networks() {\n    return NETWORKS;\n  }\n\n  /**\n   * Built-in contract address defaults shipped with the SDK.\n   *\n   * @remarks Pure data — no network I/O. Per-network factory + authenticator addresses.\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {DefaultContractAddresses} Static defaults by network\n   */\n  static get defaultAddresses() {\n    return DEFAULT_ADDRESSES;\n  }\n\n  /**\n   * Ordered list of {@link ContractAddresses} keys that must be present after merging.\n   *\n   * @description Returned as a fresh array copy so callers cannot mutate the internal constant.\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {RequiredContractAddressKeys} Ordered list of required {@link ContractAddresses} keys\n   */\n  static get requiredAddresses() {\n    return [...REQUIRED_CONTRACT_ADDRESS_KEYS];\n  }\n\n  /**\n   * Resolve and validate the network/address configuration for a {@code Monstera} instance.\n   *\n   * @description Used by the {@code Monstera} constructor. Coerces the boolean {@code mainnet}\n   * flag to a preset key, runs {@link buildNetworkConfig} to merge presets with caller overrides,\n   * and finally validates that every key in {@link REQUIRED_CONTRACT_ADDRESS_KEYS} resolves to a\n   * non-empty checksum-able address.\n   *\n   * @public\n   * @static\n   * @param {BaseConnectNetworkOptions} options - Connect-time network options ({@code mainnet},\n   *   {@code rpcUrl}, {@code chainId}, {@code addresses})\n   * @returns {NetworkConfig} Fully merged + validated network configuration\n   * @throws {ValidationError} If {@code mainnet} is missing or not a boolean\n   *   (raised by {@link requireBoolean})\n   * @throws {ConfigError} If {@code addresses} is missing any required key, or any provided\n   *   address is not a valid EVM address (raised by {@link validateContractAddresses})\n   */\n  static resolveBaseConfig(options) {\n    const { mainnet, rpcUrl, addresses, chainId } = options || {};\n\n    requireBoolean(mainnet, 'mainnet');\n\n    const network = mainnet ? 'mainnet' : 'testnet';\n\n    const networkConfig = buildNetworkConfig({ network, rpcUrl, chainId, addresses });\n\n    log.debug('resolveBaseConfig', { mainnet, network });\n\n    validateContractAddresses(networkConfig.addresses, REQUIRED_CONTRACT_ADDRESS_KEYS);\n\n    return networkConfig;\n  }\n\n  /**\n   * Resolve connect options into a full {@link MonsteraConfigOptions} object.\n   *\n   * @description Merges {@link MonsteraConfig.resolveBaseConfig} with optional {@code signer},\n   * {@code credentials}, logging, provider, and version-check settings.\n   *\n   * @public\n   * @static\n   * @param {ConnectOptions} [options]\n   * @returns {MonsteraConfigOptions}\n   * @throws {ValidationError} If {@code mainnet}, {@code credentials}, or network addresses are invalid\n   * @throws {ConfigError} If required contract addresses are missing\n   */\n  static resolveConnectConfig(options = {}) {\n    const extension = _resolveConnectExtension(options);\n    const base = MonsteraConfig.resolveBaseConfig(options);\n    const { signer, credentials } = parseConnectInputs(options);\n\n    return {\n      ...base,\n      ...(signer ? { signer } : {}),\n      ...(credentials ? { credentials } : {}),\n      ...extension\n    };\n  }\n\n  /**\n   * Snapshot of parameter names that the sanitizer considers sensitive.\n   *\n   * @description Returned as a fresh array copy so callers (e.g. tests) cannot mutate the\n   * underlying constant. Used to filter secrets out of error context, logs and debug output.\n   *\n   * @private\n   * @static\n   * @readonly\n   * @returns {string[]} Array of sensitive parameter names\n   */\n  static get SENSITIVE_PARAMS() {\n    return [...SENSITIVE_PARAM_NAMES];\n  }\n}\n\nexport default MonsteraConfig;\n","/**\n * Pure semver helpers used by the optional npm version-check flow.\n *\n * Implements just enough of the semver spec for our needs:\n * - {@link parseVersion} — split a {@code MAJOR.MINOR.PATCH[-PRE][+BUILD]} string\n * - {@link compareVersions} — three-way compare two semver strings\n * - {@link getVersionType} — classify the difference ({@code major}/{@code minor}/...)\n * - {@link satisfiesRange} — minimal range-matcher (caret, tilde, comparison ops, dash range)\n *\n * @module internal/utils/version\n */\n\nimport { requireString } from '../validation/assert.js';\n\n/**\n * Parse a semver string into structured components.\n *\n * @public\n * @param {string} version - Semver string like {@code \"1.2.3-rc.1+build5\"}\n * @returns {{ major: number, minor: number, patch: number, prerelease: string | null, build: string | null, raw: string }}\n *   Parsed components with the original {@code raw} string preserved\n * @throws {ValidationError} If {@code version} fails {@link requireString}\n * @throws {Error} If {@code version} does not match the semver pattern\n */\nexport function parseVersion(version) {\n    requireString(version, 'version');\n\n    // Match semantic version pattern: major.minor.patch[-prerelease][+build]\n    const semverRegex = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([\\w.-]+))?(?:\\+([\\w.-]+))?$/;\n    const match = version.match(semverRegex);\n  \n    if (!match) {\n      throw new Error(`Invalid semantic version: ${version}`);\n    }\n  \n    return {\n      major: parseInt(match[1], 10),\n      minor: parseInt(match[2], 10),\n      patch: parseInt(match[3], 10),\n      prerelease: match[4] || null,\n      build: match[5] || null,\n      raw: version\n    };\n  }\n  \n  /**\n   * Three-way comparison of two semver strings.\n   *\n   * @description Standard semver precedence: major / minor / patch numerically; prerelease\n   * lexicographic, with a stable version ranked higher than any prerelease.\n   *\n   * @public\n   * @param {string} v1 - Left operand\n   * @param {string} v2 - Right operand\n   * @returns {-1 | 0 | 1} {@code -1} when {@code v1 < v2}, {@code 0} when equal, {@code 1} when\n   *   {@code v1 > v2}\n   * @throws {Error} Forwarded from {@link parseVersion}\n   */\n  export function compareVersions(v1, v2) {\n    const parsed1 = parseVersion(v1);\n    const parsed2 = parseVersion(v2);\n  \n    // Compare major\n    if (parsed1.major !== parsed2.major) {\n      return parsed1.major < parsed2.major ? -1 : 1;\n    }\n  \n    // Compare minor\n    if (parsed1.minor !== parsed2.minor) {\n      return parsed1.minor < parsed2.minor ? -1 : 1;\n    }\n  \n    // Compare patch\n    if (parsed1.patch !== parsed2.patch) {\n      return parsed1.patch < parsed2.patch ? -1 : 1;\n    }\n  \n    // Compare prerelease (version with prerelease is less than version without)\n    if (parsed1.prerelease !== parsed2.prerelease) {\n      if (parsed1.prerelease === null) return 1; // v1 is stable, v2 is prerelease\n      if (parsed2.prerelease === null) return -1; // v2 is stable, v1 is prerelease\n      \n      // Both have prerelease - compare lexicographically\n      return parsed1.prerelease < parsed2.prerelease ? -1 : \n             parsed1.prerelease > parsed2.prerelease ? 1 : 0;\n    }\n  \n    return 0; // Versions are equal\n  }\n  \n  /**\n   * Test whether a version satisfies a range expression.\n   *\n   * @description Recognises the operators {@code ^}, {@code ~}, {@code >=}, {@code <=}, {@code >},\n   * {@code <}, {@code =}, an exact version, and the dash range {@code \"A - B\"}. NOT a full semver\n   * range implementation — does not handle compound ranges, OR clauses ({@code \"||\"}), pre-release\n   * inclusion rules, etc.\n   *\n   * @public\n   * @param {string} version - Concrete version to test\n   * @param {string} range - Range expression\n   * @returns {boolean} {@code true} if {@code version} satisfies {@code range}\n   * @throws {Error} Forwarded from {@link parseVersion} / {@link compareVersions}\n   */\n  export function satisfiesRange(version, range) {\n    const parsedVersion = parseVersion(version);\n  \n    // Handle caret (^) - compatible within same major version\n    if (range.startsWith('^')) {\n      const rangeVersionStr = range.slice(1);  // Get the string version\n      const rangeVersion = parseVersion(rangeVersionStr);  // Parse for comparison\n      if (parsedVersion.major !== rangeVersion.major) return false;\n      return compareVersions(version, rangeVersionStr) >= 0;  // Use string version for comparison\n    }\n  \n    // Handle tilde (~) - compatible within same minor version\n    if (range.startsWith('~')) {\n      const rangeVersionStr = range.slice(1);  // Get the string version\n      const rangeVersion = parseVersion(rangeVersionStr);  // Parse for comparison\n      if (parsedVersion.major !== rangeVersion.major) return false;\n      if (parsedVersion.minor !== rangeVersion.minor) return false;\n      return compareVersions(version, rangeVersionStr) >= 0;  // Use string version for comparison\n    }\n  \n    // Handle >=, <=, >, <, =\n    if (range.startsWith('>=')) {\n      const rangeVersion = range.slice(2).trim();\n      return compareVersions(version, rangeVersion) >= 0;\n    }\n    if (range.startsWith('<=')) {\n      const rangeVersion = range.slice(2).trim();\n      return compareVersions(version, rangeVersion) <= 0;\n    }\n    if (range.startsWith('>')) {\n      const rangeVersion = range.slice(1).trim();\n      return compareVersions(version, rangeVersion) > 0;\n    }\n    if (range.startsWith('<')) {\n      const rangeVersion = range.slice(1).trim();\n      return compareVersions(version, rangeVersion) < 0;\n    }\n    if (range.startsWith('=')) {\n      const rangeVersion = range.slice(1).trim();\n      return compareVersions(version, rangeVersion) === 0;\n    }\n  \n    // Exact match\n    if (compareVersions(version, range) === 0) {\n      return true;\n    }\n  \n    // Range with dash (e.g., \"1.0.0 - 2.0.0\")\n    if (range.includes(' - ')) {\n      const [min, max] = range.split(' - ').map(s => s.trim());\n      return compareVersions(version, min) >= 0 && compareVersions(version, max) <= 0;\n    }\n  \n    return false;\n  }\n  \n  /**\n   * Classify the kind of difference between two versions.\n   *\n   * @description Returns the highest-priority component that differs ({@code \"major\"} > {@code\n   * \"minor\"} > {@code \"patch\"} > {@code \"prerelease\"}), or {@code \"equal\"} when the two versions\n   * are identical.\n   *\n   * @public\n   * @param {string} v1 - Left operand\n   * @param {string} v2 - Right operand\n   * @returns {'major' | 'minor' | 'patch' | 'prerelease' | 'equal'} Difference classification\n   * @throws {Error} Forwarded from {@link parseVersion}\n   */\n  export function getVersionType(v1, v2) {\n    const parsed1 = parseVersion(v1);\n    const parsed2 = parseVersion(v2);\n  \n    if (parsed1.major !== parsed2.major) return 'major';\n    if (parsed1.minor !== parsed2.minor) return 'minor';\n    if (parsed1.patch !== parsed2.patch) return 'patch';\n    if (parsed1.prerelease !== parsed2.prerelease) return 'prerelease';\n    return 'equal';\n  }\n","/**\n * Optional npm-registry version check used by {@link MonsteraUtils.checkVersionOnce}.\n *\n * Three layers:\n * - {@link compareVersions} / {@link getVersionType} (in {@code utils/version.js}) — pure semver\n *   helpers\n * - {@link fetchLatestVersion} — npm registry fetch (Node-only, CORS-safe in browsers)\n * - {@link checkAndWarnVersion} — orchestrates fetch + compare + warn at {@code log.warn} level\n *\n * Failures are swallowed so the SDK never breaks because of registry issues.\n *\n *\n * @module internal/versionCheck\n */\n\nimport { compareVersions, getVersionType } from './utils/version.js';\nimport log from './logger.js';\n\n/**\n * Compare two semver strings and produce a structured outdated / up-to-date / newer result.\n *\n * @public\n * @async\n * @param {string} currentVersion - Currently running SDK version\n * @param {string} latestVersion - Latest available version (e.g. from npm registry)\n * @returns {Promise<VersionCheckResult>} Structured comparison result with a human-readable\n *   {@code recommendation}\n */\nexport async function checkVersion(currentVersion, latestVersion) {\n  log.debug('Checking SDK version', { currentVersion, latestVersion });\n  const comparison = compareVersions(currentVersion, latestVersion);\n  const versionType = getVersionType(currentVersion, latestVersion);\n  \n  return {\n    isOutdated: comparison < 0,\n    isLatest: comparison === 0,\n    isNewer: comparison > 0,\n    versionType,\n    currentVersion,\n    latestVersion,\n    recommendation: comparison < 0 \n      ? `Update to ${latestVersion} (${versionType} update available)`\n      : 'You are using the latest version'\n  };\n}\n\n/**\n * Fetch the latest published version of {@code @monstera_protocol/sdk} from the npm registry.\n *\n * @description Skipped in browser environments where the registry is unreachable via CORS.\n * Always swallows fetch / parse errors and returns {@code null} so callers never see exceptions.\n *\n * @public\n * @async\n * @returns {Promise<string | null>} Latest version string, or {@code null} when the lookup is\n *   skipped or fails\n */\nexport async function fetchLatestVersion() {\n  log.debug('fetchLatestVersion', {});\n  if (typeof window !== 'undefined') {\n    log.debug('fetchLatestVersion skipped: browser environment (npm registry not reachable via CORS)');\n    return null;\n  }\n  try {\n    const response = await fetch('https://registry.npmjs.org/@monstera_protocol/sdk/latest');\n    if (!response.ok) {\n      return null;\n    }\n    const data = await response.json();\n    return data.version;\n  } catch (error) {\n    log.warn('Failed to fetch latest version', { error: error.message });\n    return null;\n  }\n}\n\n/**\n * Compare {@code currentVersion} against the latest published version and {@code log.warn} when\n * a non-patch update is available.\n *\n * @description Skips when {@code currentVersion} is the literal {@code \"unknown\"} (e.g. broken\n * build) or the registry lookup fails. Patch / prerelease updates are intentionally not warned\n * about. Errors are caught upstream by {@link MonsteraUtils.checkVersionOnce}.\n *\n * @public\n * @async\n * @param {string} currentVersion - Currently running SDK version\n * @returns {Promise<void>}\n */\nexport async function checkAndWarnVersion(currentVersion) {\n  if (currentVersion === 'unknown') {\n    return;\n  }\n  \n  const latestVersion = await fetchLatestVersion();\n  \n  if (!latestVersion) {\n    log.debug('checkAndWarnVersion', { skipped: true, reason: 'no latest version' });\n    return;\n  }\n\n  const result = await checkVersion(currentVersion, latestVersion);\n  \n  if (result.isOutdated) {\n    if (result.versionType === 'major' || result.versionType === 'minor') {\n      log.warn('Monstera SDK update available', {\n        currentVersion,\n        latestVersion,\n        versionType: result.versionType,\n        recommendation: 'npm install @monstera_protocol/sdk@latest'\n      });\n    }\n  }\n}\n","/**\n * Cross-cutting SDK utilities that are intentionally kept out of the public instance API\n * and not re-exported from the package entry. Today this is only the optional, deduplicated\n * npm version check.\n *\n * @see {@link checkAndWarnVersion} in `internal/versionCheck.js`\n * @module sdk/MonsteraUtils\n */\n\nimport { checkAndWarnVersion } from '../internal/versionCheck.js';\n\n/**\n * Static-only helper class. Holds module-level state (promise/done flags) for the version check\n * so that it runs at most once per Node process across many {@link Monstera} instances.\n *\n * @public\n */\nclass MonsteraUtils {\n  /**\n   * In-flight version check promise (single shared promise to prevent duplicate npm calls).\n   * @type {Promise<void>|null}\n   * @private\n   */\n  static _versionCheckPromise = null;\n\n  /**\n   * Latched flag indicating whether the version check has already been kicked off this process.\n   * @type {boolean}\n   * @private\n   */\n  static _versionCheckDone = false;\n\n  /**\n   * Run the npm version check at most once per process (best-effort, fire-and-forget).\n   *\n   * Latches {@link MonsteraUtils._versionCheckDone} immediately so that subsequent\n   * {@link Monstera} constructions skip the network call. Failures are swallowed by design —\n   * the version check must never break SDK usage.\n   *\n   * @public\n   * @static\n   * @param {string} currentVersion - Current SDK version (e.g. {@code \"1.2.3\"})\n   * @returns {void}\n   * @remarks Called by the {@link Monstera} constructor only when {@code config.checkVersion === true}.\n   */\n  static checkVersionOnce(currentVersion) {\n    if (MonsteraUtils._versionCheckPromise) {\n      return;\n    }\n\n    MonsteraUtils._versionCheckDone = true;\n\n    MonsteraUtils._versionCheckPromise = checkAndWarnVersion(currentVersion)\n      .catch(() => {\n        // Silently fail - version check should never break SDK usage\n      })\n      .finally(() => {\n        MonsteraUtils._versionCheckPromise = null;\n      });\n  }\n\n  /**\n   * Whether the version check has already been kicked off in this process.\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {boolean} {@code true} once {@link MonsteraUtils.checkVersionOnce} has been called\n   */\n  static get versionCheckDone() {\n    return MonsteraUtils._versionCheckDone;\n  }\n}\n\nexport default MonsteraUtils;\n","/**\n * Stateless factory that hands out read-only and write-capable ethers contract instances\n * to {@link BaseContractClient} subclasses.\n *\n * Validates the supplied address via {@link requireAddress} and enforces the presence of a\n * write signer for write contracts (raising {@link WriteRequiresSignerError} otherwise).\n *\n * @module base/ContractRegistry\n */\n\nimport { requireAddress } from '../internal/validation/assert.js';\nimport { WriteRequiresSignerError } from '../errors/index.js';\nimport log from '../internal/logger.js';\n\n/**\n * @public\n */\nexport default class ContractRegistry {\n  /**\n   * Hold references to the read provider and (optional) write signer for later contract construction.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Provider used by every {@link ContractRegistry#getReadContract} call\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped signer used by {@link ContractRegistry#getWriteContract} ({@code null} for read-only clients)\n   */\n  constructor(readProvider, writeSigner) {\n    this.readProvider = readProvider;\n    this.writeSigner = writeSigner;\n  }\n\n  /**\n   * Build a read-only contract instance via the supplied {@code contractGetter}.\n   *\n   * @public\n   * @template TContract\n   * @param {(provider: EthersProvider, address: string) => TContract} contractGetter - Factory function from {@code src/contracts/*}\n   * @param {Address} contractAddress - Address of the deployed contract\n   * @returns {TContract} Read-bound contract instance\n   * @throws {ValidationError} If {@code contractAddress} is missing or not a valid 20-byte address\n   */\n  getReadContract(contractGetter, contractAddress) {\n    requireAddress(contractAddress, 'address');\n    log.debug('getReadContract', { contractAddress });\n    return contractGetter(this.readProvider, contractAddress);\n  }\n\n  /**\n   * Build a write-capable contract instance via the supplied {@code contractGetter}.\n   *\n   * @public\n   * @template TContract\n   * @param {(signer: WrappedEthersSigner, address: string) => TContract} contractGetter - Factory function from {@code src/contracts/*}\n   * @param {Address} contractAddress - Address of the deployed contract\n   * @returns {TContract} Write-bound contract instance\n   * @throws {ValidationError} If {@code contractAddress} is missing or not a valid 20-byte address\n   * @throws {WriteRequiresSignerError} If the registry was constructed without a {@code writeSigner}\n   */\n  getWriteContract(contractGetter, contractAddress) {\n    requireAddress(contractAddress, 'address');\n    log.debug('getWriteContract', { contractAddress });\n    if (!this.writeSigner) {\n      log.warn('Write signer missing, throwing WriteRequiresSignerError', {});\n      throw new WriteRequiresSignerError('write operation');\n    }\n    return contractGetter(this.writeSigner, contractAddress);\n  }\n}\n","/**\n * Event definition records for the {@code ApiKeySessionAuthenticator} contract.\n *\n * @module events/apiKeySessionAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n    WalletConfigured: {\n      eventName: 'WalletConfigured',\n      fieldMapping: {\n        wallet: 'wallet'\n      },\n      description: 'Emitted when a wallet is configured'\n    },\n  \n    ApiKeyRotated: {\n      eventName: 'ApiKeyRotated',\n      fieldMapping: {\n        wallet: 'wallet'\n      },\n      description: 'Emitted when a wallet API key is rotated'\n    }\n  };\n    ","/**\n * Event definition records for the {@code WalletSignatureAuthenticator} contract.\n *\n * @module events/walletSignatureAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n  AddressAdded: {\n    eventName: 'AddressAdded',\n    fieldMapping: {\n      wallet: 'wallet',\n      added: 'added'\n    },\n    description: 'Emitted when an address is added to the wallet signature authenticator whitelist'\n  },\n\n  AddressRemoved: {\n    eventName: 'AddressRemoved',\n    fieldMapping: {\n      wallet: 'wallet',\n      removed: 'removed'\n    },\n    description: 'Emitted when an address is removed from the wallet signature authenticator whitelist'\n  },\n\n  WalletConfigured: {\n    eventName: 'WalletConfigured',\n    fieldMapping: {\n      wallet: 'wallet',\n      initialWhitelist: 'initialWhitelist'\n    },\n    description: 'Emitted when a wallet signature authenticator is configured'\n  }\n};\n","/**\n * Event definition records for the {@code WalletFactory} contract.\n *\n * Each entry is consumed by {@code parseEventFromReceipt} and projects ABI event args onto\n * SDK-friendly field names (e.g. {@code storage_} → {@code storage}).\n *\n * @module events/walletFactory\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n  WalletCreated: {\n    eventName: 'WalletCreated',\n    fieldMapping: {\n      wallet: 'wallet',\n      keyVault: 'keyVault',\n      storage: 'storage_', // Note: contract uses storage_, we normalize to storage\n      authenticator: 'authenticator'\n    },\n    description: 'Emitted when a new wallet is created by the factory'\n  },\n\n  BeaconUpgraded: {\n    eventName: 'BeaconUpgraded',\n    fieldMapping: {\n      oldImpl: 'oldImpl',\n      newImpl: 'newImpl'\n    },\n    description: 'Emitted when the factory beacon is upgraded'\n  },\n\n  AuthenticatorAllowed: {\n    eventName: 'AuthenticatorAllowed',\n    fieldMapping: {\n      authenticator: 'authenticator',\n      allowed: 'allowed'\n    },\n    description: 'Emitted when an authenticator is allowed'\n  },\n\n  KeyVaultImplementationAllowed: {\n    eventName: 'KeyVaultImplementationAllowed',\n    fieldMapping: {\n      implementation: 'implementation_',\n      allowed: 'allowed'\n    },\n    description: 'Emitted when a key vault implementation is allowed'\n  },\n\n  WalletImplementationAllowed: {\n    eventName: 'WalletImplementationAllowed',\n    fieldMapping: {\n      keyVault: 'keyVault',\n      implementation: 'implementation',\n      allowed: 'allowed'\n    },\n    description: 'Emitted when a wallet implementation is allowed'\n  },\n\n  WalletAuthenticatorAllowed: {\n    eventName: 'WalletAuthenticatorAllowed',\n    fieldMapping: {\n      keyVault: 'keyVault',\n      authenticator: 'authenticator',\n      allowed: 'allowed'\n    },\n    description: 'Emitted when a wallet authenticator is allowed'\n  },\n\n  UsernameRegistered: {\n    eventName: 'UsernameRegistered',\n    fieldMapping: {\n      usernameHash: 'usernameHash',\n      wallet: 'wallet',\n      keyVault: 'keyVault'\n    },\n    description: 'Emitted when a wallet is registered to a normalized username hash'\n  }\n};\n","/**\n * Event definition records for the {@code PasswordAuthenticator} contract.\n *\n * @module events/passwordAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n  PasswordChanged: {\n    eventName: 'PasswordChanged',\n    fieldMapping: {\n      wallet: 'wallet'\n    },\n    description: 'Emitted when a wallet password is changed'\n  },\n  \n  PasswordConfigured: {\n    eventName: 'PasswordConfigured',\n    fieldMapping: {\n      wallet: 'wallet'\n    },\n    description: 'Emitted when a wallet password is configured'\n  }\n};\n","/**\n * Event definition records for the {@code KeyVault} contract.\n *\n * @module events/keyVault\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n  AuthenticatorChanged: {\n    eventName: 'AuthenticatorChanged',\n    fieldMapping: {\n      oldAuth: 'oldAuth',\n      newAuth: 'newAuth'\n    },\n    description: 'Emitted when the authenticator is changed'\n  },\n\n  ImplementationUpgraded: {\n    eventName: 'ImplementationUpgraded',\n    fieldMapping: {\n      oldImpl: 'oldImpl',\n      newImpl: 'newImpl'\n    },\n    description: 'Emitted when the KeyVault implementation is upgraded'\n  },\n\n  CustomImplementationUpgraded: {\n    eventName: 'CustomImplementationUpgraded',\n    fieldMapping: {\n      oldImpl: 'oldImpl',\n      newImpl: 'newImpl',\n      customAckHash: 'customAckHash'\n    },\n    description: 'Emitted when the KeyVault custom implementation is upgraded with a custom action hash'\n  },\n\n  KeyImported: {\n    eventName: 'KeyImported',\n    fieldMapping: {\n      keyId: 'keyId',\n      curve: 'curve',\n      chain: 'chain'\n    },\n    description: 'Emitted when a key is imported'\n  },\n\n  KeyDeactivated: {\n    eventName: 'KeyDeactivated',\n    fieldMapping: {\n      keyId: 'keyId'\n    },\n    description: 'Emitted when a key is deactivated'\n  },\n\n  KeyActivated: {\n    eventName: 'KeyActivated',\n    fieldMapping: {\n      keyId: 'keyId'\n    },\n    description: 'Emitted when a key is activated'\n  },\n\n  ImplementationApprovalChanged: {\n    eventName: 'ImplementationApprovalChanged',\n    fieldMapping: {\n      implementation_: 'implementation_',\n      approved: 'approved'\n    },\n    description: 'Emitted when the KeyVault implementation approval is changed'\n  },\n\n  AuthenticatorApprovalChanged: {\n    eventName: 'AuthenticatorApprovalChanged',\n    fieldMapping: {\n      authenticator_: 'authenticator_',\n      approved: 'approved'\n    },\n    description: 'Emitted when the KeyVault authenticator approval is changed'\n  },\n\n  CustomAuthenticatorChanged: {\n    eventName: 'CustomAuthenticatorChanged',\n    fieldMapping: {\n      oldAuth: 'oldAuth',\n      newAuth: 'newAuth',\n      customAckHash: 'customAckHash'\n    },\n    description: 'Emitted when the KeyVault custom authenticator is changed with a custom action hash'\n  }\n};\n","/**\n * Event definition records for the {@code DualFactorAuthenticator} contract.\n *\n * @module events/dualFactorAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n  PasswordChanged: {\n    eventName: 'PasswordChanged',\n    fieldMapping: {\n      wallet: 'wallet'\n    },\n    description: 'Emitted when a wallet password is changed'\n  },\n\n  WalletConfigured: {\n    eventName: 'WalletConfigured',\n    fieldMapping: {\n      wallet: 'wallet',\n      guardian: 'guardian'\n    },\n    description: 'Emitted when a wallet password is configured'\n  },\n\n  GuardianChanged: {\n    eventName: 'GuardianChanged',\n    fieldMapping: {\n      wallet: 'wallet',\n      newGuardian: 'newGuardian'\n    },\n    description: 'Emitted when a wallet guardian is changed'\n  }\n};\n  ","/**\n * Generic transaction-receipt event decoding utilities.\n *\n * Used by {@code BaseContractClient.executeWrite} (via the {@code expectEvent} option) to extract\n * a single named event out of a {@link TransactionReceipt}. This module holds two layers:\n * - {@link parseEvent} — low-level helper that walks {@code receipt.logs}, decodes each log\n *   against a contract's {@code Interface}, and returns a field-mapped result object\n * - {@link parseEventFromReceipt} — public wrapper that takes a per-event definition record\n *   (produced by the per-contract event modules in this folder) and validates it\n *\n * @module events/decodeReceipt\n */\n\nimport { EventParseError } from '../errors/index.js';\nimport { requireDefined, requirePlainObject, requireString } from '../internal/validation/assert.js';\nimport log from '../internal/logger.js';\nimport { sanitizer } from '../internal/sanitization/index.js';\n\n/**\n * Walk a receipt's logs and return the first matching event mapped onto a result object.\n *\n * @description Uses {@code contract.interface.parseLog} on each log; logs that don't belong to the\n * contract's interface are silently skipped (debug-logged with sanitised data). When a matching\n * log is found, the event {@code args} are projected into a fresh object using\n * {@code fieldMapping}.\n *\n * @public\n * @param {TransactionReceipt} receipt - Transaction receipt\n * @param {EthersContract} contract - Contract instance providing the {@code Interface}\n * @param {string} eventName - Name of the event to look for\n * @param {Record<string, string>} fieldMapping - Map of return-field name → on-chain arg key /\n *   index (e.g. {@code { walletAddr: \"wallet\" }})\n * @returns {Record<string, unknown> | null} Mapped event data or {@code null} if no matching log\n *   is present in {@code receipt.logs}\n * @throws {EventParseError} If a matching log is found but field mapping fails (typically because\n *   {@code fieldMapping} references an arg the ABI does not expose)\n */\nfunction parseEvent(receipt, contract, eventName, fieldMapping) {\n  if (!receipt || !receipt.logs) {\n    return null;\n  }\n\n  const iface = contract.interface;\n\n  let parsedEvent = null;\n  for (const logEntry of receipt.logs) {\n    try {\n      const parsed = iface.parseLog(logEntry);\n      if (parsed?.name === eventName) {\n        parsedEvent = parsed;\n        break;\n      }\n    } catch {\n      log.debug('parseEvent: log does not belong to this interface or does not decode cleanly', { logEntry: sanitizer.forLog(logEntry) });\n    }\n  }\n\n  if (!parsedEvent) {\n    log.debug('parseEvent: event not found in receipt', { eventName, receiptHash: receipt?.hash });\n    return null;\n  }\n\n  try {\n    const result = {};\n    for (const [returnField, contractArg] of Object.entries(fieldMapping)) {\n      result[returnField] = parsedEvent.args?.[contractArg];\n    }\n\n    return result;\n  } catch (error) {\n    log.debug('parseEvent: parse failed', { eventName, receiptHash: receipt?.hash, error: error?.message });\n    throw new EventParseError(\n      eventName,\n      receipt?.hash || null,\n      error\n    );\n  }\n}\n\n/**\n * Decode a single named event from a receipt using a per-event definition record.\n *\n * @description Validates that {@code eventDef} carries the expected {@code eventName} and\n * {@code fieldMapping} keys (the schema used by every {@code …Events.*} record exported from this\n * folder), then defers to {@link parseEvent}.\n *\n * @public\n * @param {Record<string, unknown>} eventDef - Event definition record (e.g.\n *   {@code WalletFactoryEvents.WalletCreated})\n * @param {TransactionReceipt} receipt - Transaction receipt\n * @param {EthersContract} contract - Contract instance providing the {@code Interface}\n * @returns {Record<string, unknown> | null} Mapped event data, or {@code null} if not present\n * @throws {ValidationError} If {@code eventDef} is missing {@code eventName} or {@code fieldMapping}\n * @throws {EventParseError} If the matching log is found but field mapping fails\n *   (forwarded from {@link parseEvent})\n */\nfunction parseEventFromReceipt(eventDef, receipt, contract) {\n  requireDefined(eventDef, 'eventDef');\n  requireString(eventDef.eventName, 'eventDef.eventName');\n  requirePlainObject(eventDef.fieldMapping, 'eventDef.fieldMapping');\n\n  return parseEvent(receipt, contract, eventDef.eventName, eventDef.fieldMapping);\n}\n\nexport {\n  parseEvent,\n  parseEventFromReceipt\n};\n","/**\n * Event definition records for the {@code PasswordMinuteSignatureAuthenticator} contract.\n *\n * @module events/passwordMinuteSignatureAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n    PasswordChanged: {\n      eventName: 'PasswordChanged',\n      fieldMapping: {\n        wallet: 'wallet'\n      },\n      description: 'Emitted when a wallet password is changed'\n    },\n    \n    PasswordConfigured: {\n      eventName: 'PasswordConfigured',\n      fieldMapping: {\n        wallet: 'wallet'\n      },\n      description: 'Emitted when a wallet password is configured'\n    }\n  };\n  ","/**\n * Event definition records for the {@code MultiAuthenticator} contract.\n *\n * @module events/multiAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n    WalletConfigured: {\n      eventName: 'WalletConfigured',\n      fieldMapping: {\n        wallet: 'wallet'\n      },\n      description: 'Emitted when a wallet is configured'\n    },\n  \n    AuthenticatorAdded: {\n      eventName: 'AuthenticatorAdded',\n      fieldMapping: {\n        wallet: 'wallet',\n        child: 'child'\n      },\n      description: 'Emitted when a wallet authenticator is added'\n    },\n    \n    AuthenticatorRemoved: {\n      eventName: 'AuthenticatorRemoved',\n      fieldMapping: {\n        wallet: 'wallet',\n        child: 'child'\n      },\n      description: 'Emitted when a wallet authenticator is removed'\n    }\n  };\n    ","/**\n * Event definition records for the {@code PasswordOrWalletSignatureAuthenticator} contract.\n *\n * @module events/passwordOrWalletSignatureAuthenticator\n */\n\n/**\n * @public\n * @readonly\n * @type {Record<string, { eventName: string, fieldMapping: Record<string, string>, description: string }>}\n */\nexport default {\n    WalletConfigured: {\n      eventName: 'WalletConfigured',\n      fieldMapping: {\n        wallet: 'wallet',\n        initialWhitelist: 'initialWhitelist',\n      },\n      description: 'Emitted when a wallet is configured'\n    },\n  \n    PasswordChanged: {\n      eventName: 'PasswordChanged',\n      fieldMapping: {\n        wallet: 'wallet',\n      },\n      description: 'Emitted when a wallet password is changed'\n    },\n    \n    AddressAdded: {\n      eventName: 'AddressAdded',\n      fieldMapping: {\n        wallet: 'wallet',\n        added: 'added'\n      },\n      description: 'Emitted when a wallet address is added'\n    },\n\n    AddressRemoved: {\n      eventName: 'AddressRemoved',\n      fieldMapping: {\n        wallet: 'wallet',\n        removed: 'removed'\n      },\n      description: 'Emitted when a wallet address is removed'\n    },\n\n    WalletLinkApproved: {\n      eventName: 'WalletLinkApproved',\n      fieldMapping: {\n        wallet: 'wallet',\n        linkedWallet: 'linkedWallet',\n        nonce: 'nonce'\n      },\n      description: 'Emitted when a wallet link is approved'\n    }\n  };\n    ","/**\n * Stateless execution pipeline shared by every {@link BaseContractClient} subclass.\n *\n * Handles three responsibilities:\n *   1. Build sanitised SDK error context (via {@code Sanitizer}) so secrets stay out of thrown errors.\n *   2. Run the Sapphire write flow: tx → receipt → optional event parsing → standardised\n *      {@link BaseTransactionResult} payload.\n *   3. Translate any caught error through {@code sdkErrorPipeline} (custom-error decode, RPC revert\n *      extraction, fallback enrichment for mined-but-failed transactions).\n *\n * @typedef {import('../internal/sanitization/Sanitizer.js').Sanitizer} Sanitizer\n *\n * @module base/ExecutionPipeline\n */\n\nimport { parseEventFromReceipt } from '../events/index.js';\nimport {\n  WalletError,\n  NetworkError,\n  EventNotFoundError,\n  WriteRequiresSignerError\n} from '../errors/index.js';\nimport {\n  applySdkContext,\n  decodeCustomError,\n  extractRpcRevertBytes,\n  sdkErrorPipeline\n} from '../errors/pipeline.js';\nimport log from '../internal/logger.js';\nimport { sanitizer as defaultSanitizer } from '../internal/sanitization/index.js';\n\n/**\n * @public\n */\nexport default class ExecutionPipeline {\n  /**\n   * Construct a pipeline with explicit dependencies (used by every {@link BaseContractClient}).\n   *\n   * @public\n   * @param {object} deps\n   * @param {EthersProvider} deps.readProvider - Read provider, used both for plain reads and for revert enrichment after a failed write\n   * @param {WrappedEthersSigner | null} deps.writeSigner - Sapphire-wrapped signer used for writes ({@code null} for read-only clients)\n   * @param {import('../errors/pipeline.js').ErrorPipeline} [deps.errorPipeline] - Override for the default {@code sdkErrorPipeline}\n   * @param {Sanitizer} [deps.sanitizer] - Override for the default sanitiser (redacts sensitive fields from the error context)\n   * @param {NetworkConfig} deps.config - Resolved network config (used for {@code rpcUrl} in error context)\n   */\n  constructor({ readProvider, writeSigner, errorPipeline, sanitizer, config }) {\n    this._readProvider = readProvider;\n    this._writeSigner = writeSigner;\n    this._errorPipeline = errorPipeline ?? sdkErrorPipeline;\n    this._sanitizer = sanitizer ?? defaultSanitizer;\n    this._config = config;\n  }\n\n  /**\n   * Build a sanitised SDK error context from arbitrary call options.\n   *\n   * The sanitiser strips known sensitive parameters (passwords, mnemonics, raw private keys, etc.)\n   * before the result is attached to thrown {@link WalletError}s.\n   *\n   * @public\n   * @param {Record<string, unknown>} [options] - Method options to redact\n   * @returns {Record<string, unknown>} Sanitised context safe to attach to errors\n   */\n  buildErrorContext(options = {}) {\n    return this._sanitizer.forErrorContext({ ...options });\n  }\n\n  /**\n   * Run a read {@code operation} and translate any thrown error through the SDK error pipeline.\n   *\n   * @public\n   * @async\n   * @template TResult\n   * @param {() => Promise<TResult>} operation - The async ethers read call\n   * @param {Record<string, unknown>} [context] - Method name + extra fields for the error context (sanitised)\n   * @returns {Promise<TResult>} The value returned by {@code operation}\n   * @throws {NetworkError} If the underlying RPC transport fails\n   * @throws {ContractRevertError} If the call reverts (custom error or {@code Error(string)})\n   * @throws {WalletError} For any other failure (after translation)\n   */\n  async executeRead(operation, context = {}) {\n    const { methodName, revertInterface, ...rest } = context;\n    const sdkContext = this.buildErrorContext({ ...rest, methodName });\n\n    log.debug('Executing read', { methodName });\n    try {\n      return await operation();\n    } catch (err) {\n      this._errorPipeline.rethrow(err, {\n        methodName,\n        rpcUrl: this._config?.rpcUrl ?? null,\n        revertInterface: revertInterface ?? undefined,\n        sdkContext\n      });\n    }\n  }\n\n  /**\n   * Run a write {@code operation} (broadcast → wait → parse events) and translate failures.\n   *\n   * @public\n   * @async\n   * @template {BaseTransactionResult} TResult\n   * @param {() => Promise<any>} operation - The async ethers write call (returns a transaction response)\n   * @param {Record<string, unknown>} [options] - {@code methodName}, {@code parseEvents}, {@code requireEvents}, {@code extraData}, {@code revertInterface} plus error-context fields\n   * @returns {Promise<TResult>} {@link BaseTransactionResult} merged with parsed events and {@code extraData}\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If broadcast or receipt fetch fails\n   * @throws {ContractRevertError} If the transaction reverts (decoded via {@code revertInterface} when available)\n   * @throws {EventNotFoundError} If {@code requireEvents !== false} and a required event is missing\n   * @throws {EventParseError} If a matching log fails to decode or map\n   * @throws {WalletError} For any other failure (after translation)\n   */\n  async executeWrite(operation, options = {}) {\n    const {\n      parseEvents,\n      requireEvents,\n      extraData,\n      methodName,\n      revertInterface,\n      ...errorContext\n    } = options;\n    const sdkContext = this.buildErrorContext({ ...errorContext, methodName });\n    \n    log.info('Executing write', { methodName });\n    try {\n      return await this._executeWriteTransaction(operation, {\n        parseEvents,\n        requireEvents,\n        extraData,\n        methodName,\n        revertInterface,\n        sdkContext,\n        writeSigner: this._writeSigner,\n        readProvider: this._readProvider\n      });\n    } catch (error) {\n      this._errorPipeline.rethrow(error, {\n        methodName,\n        rpcUrl: this._config?.rpcUrl ?? null,\n        revertInterface: revertInterface ?? undefined,\n        sdkContext\n      });\n    }\n  }\n\n  /**\n   * Resolve the {@link EthersInterface} used to decode custom Solidity errors.\n   *\n   * Falls back to the first {@code parseEvents} contract's interface when no explicit\n   * {@code revertInterface} is provided.\n   *\n   * @private\n   * @param {ExecuteWriteOptions} options\n   * @returns {EthersInterface | null} ABI interface, or {@code null} when none is available\n   */\n  _getRevertInterface(options) {\n    if (options.revertInterface) {\n      return options.revertInterface;\n    }\n    const first = options.parseEvents?.[0]?.contract;\n    return first?.interface ?? null;\n  }\n\n  /**\n   * Pick the read provider used to enrich revert data after a failed write.\n   *\n   * @private\n   * @param {ExecuteWriteOptions} options\n   * @returns {EthersProvider | null} Provider attached to the call, or the signer's provider, or {@code null}\n   */\n  _getReadProvider(options) {\n    return options.readProvider ?? options.writeSigner?.provider ?? null;\n  }\n\n  /**\n   * Resolve {@code to}/{@code from}/{@code data} for replaying a failed mined tx.\n   *\n   * @private\n   * @async\n   * @param {EthersProvider} readProvider\n   * @param {TransactionReceipt} receipt\n   * @param {string} txHash\n   * @returns {Promise<{ toAddr: string | null | undefined, fromAddr: string | null | undefined, calldata: string | null }>}\n   */\n  async _resolveFailedTxCall(readProvider, receipt, txHash) {\n    let toAddr = receipt.to;\n    let fromAddr = receipt.from;\n    /** @type {string | null} */\n    let calldata = null;\n\n    try {\n      const tx = await readProvider.getTransaction(txHash);\n      if (tx) {\n        if (tx.to) {\n          toAddr = tx.to;\n        }\n        if (tx.from) {\n          fromAddr = tx.from;\n        }\n        calldata = tx.data ?? null;\n      }\n    } catch (e) {\n      log.debug('getTransaction failed while resolving revert data', {\n        message: /** @type {Error} */ (e).message\n      });\n    }\n\n    return { toAddr, fromAddr, calldata };\n  }\n\n  /**\n   * Replay a call at {@code blockTag} and pull revert bytes / reason from the thrown error.\n   *\n   * @private\n   * @async\n   * @param {EthersProvider} readProvider\n   * @param {{ toAddr: string, fromAddr: string, calldata: string }} call\n   * @param {number | string} blockTag\n   * @returns {Promise<{ revertData: string | null, revertReason: string | null }>}\n   */\n  async _replayCallForRevert(readProvider, call, blockTag) {\n    /** @type {string | null} */\n    let revertData = null;\n    /** @type {string | null} */\n    let revertReason = null;\n\n    try {\n      await readProvider.call({\n        to: call.toAddr,\n        data: call.calldata,\n        from: call.fromAddr,\n        blockTag\n      });\n    } catch (callErr) {\n      const extracted = extractRpcRevertBytes(callErr);\n      if (extracted) {\n        revertData = extracted;\n      }\n      const rev = /** @type {{ revert?: { name?: string } }} */ (callErr).revert;\n      if (rev?.name) {\n        revertReason = rev.name;\n      }\n    }\n\n    return { revertData, revertReason };\n  }\n\n  /**\n   * Decode custom-error fields onto an enrichment result when {@code iface} is available.\n   *\n   * @private\n   * @param {{ revertData: string | null, revertReason: string | null, revertArgs: unknown, revertSignature: string | null }} result\n   * @param {EthersInterface | null} iface\n   * @returns {void}\n   */\n  _applyDecodedCustomError(result, iface) {\n    if (!result.revertData || !iface) {\n      return;\n    }\n    const decoded = decodeCustomError(iface, result.revertData);\n    if (decoded.revertReason) {\n      result.revertReason = decoded.revertReason;\n    }\n    if (decoded.revertArgs != null) {\n      result.revertArgs = decoded.revertArgs;\n    }\n    if (decoded.revertSignature) {\n      result.revertSignature = decoded.revertSignature;\n    }\n  }\n\n  /**\n   * Replay a mined-but-failed transaction with {@code eth_call} at the receipt's block to recover\n   * revert data that ethers v6 omits from {@code tx.wait()} failures.\n   *\n   * Best-effort: always returns an object even when enrichment fails.\n   *\n   * @private\n   * @async\n   * @param {EthersProvider} readProvider - Provider used to replay the call (must support {@code call} at a block tag)\n   * @param {TransactionReceipt} receipt - Receipt of the failed transaction\n   * @param {string} txHash - Transaction hash (for {@code getTransaction} lookup)\n   * @param {EthersInterface | null} iface - ABI used to decode custom errors\n   * @returns {Promise<{ revertData: string | null, revertReason: string | null, revertArgs: unknown, revertSignature: string | null }>} Enrichment data (any field may be {@code null})\n   */\n  async _enrichMinedTransactionRevert(readProvider, receipt, txHash, iface) {\n    const result = {\n      revertData: /** @type {string | null} */ (null),\n      revertReason: /** @type {string | null} */ (null),\n      revertArgs: null,\n      revertSignature: /** @type {string | null} */ (null)\n    };\n    if (!readProvider || !txHash || receipt?.blockNumber == null) {\n      return result;\n    }\n\n    const { toAddr, fromAddr, calldata } = await this._resolveFailedTxCall(\n      readProvider,\n      receipt,\n      txHash\n    );\n\n    if (!toAddr || !fromAddr || !calldata || calldata === '0x') {\n      return result;\n    }\n\n    const replayed = await this._replayCallForRevert(\n      readProvider,\n      { toAddr, fromAddr, calldata },\n      receipt.blockNumber\n    );\n    result.revertData = replayed.revertData;\n    result.revertReason = replayed.revertReason;\n    this._applyDecodedCustomError(result, iface);\n\n    return result;\n  }\n\n  /**\n   * Broadcast a write and wait for a mined receipt.\n   *\n   * @private\n   * @async\n   * @param {() => Promise<any>} txFn\n   * @param {{ methodName: string, rpcUrl: string | null, sdkContext: Record<string, unknown> }} ctx\n   * @returns {Promise<{ tx: any, receipt: TransactionReceipt }>}\n   */\n  async _submitAndConfirmWrite(txFn, { methodName, rpcUrl, sdkContext }) {\n    const tx = await txFn();\n    if (tx == null || typeof tx.hash !== 'string') {\n      const err = new NetworkError(\n        `No transaction response from ${methodName} (RPC or signer may have failed before broadcast)`,\n        rpcUrl,\n        null\n      );\n      applySdkContext(err, sdkContext);\n      throw err;\n    }\n    log.debug('tx submitted', { hash: tx.hash });\n\n    const receipt = await tx.wait();\n    if (receipt == null || typeof receipt.hash !== 'string') {\n      const err = new NetworkError(\n        `No receipt returned for ${methodName} (hash ${tx.hash})`,\n        rpcUrl,\n        null\n      );\n      applySdkContext(err, sdkContext);\n      throw err;\n    }\n    log.info('Write succeeded', { methodName, hash: receipt.hash });\n    return { tx, receipt };\n  }\n\n  /**\n   * Parse configured events from a successful write receipt.\n   *\n   * @private\n   * @param {TransactionReceipt} receipt\n   * @param {Array<{ eventDef: object, contract: object }>} parseEvents\n   * @param {boolean} requireEvents\n   * @param {Record<string, unknown>} sdkContext\n   * @returns {Record<string, unknown>}\n   */\n  _collectParsedEvents(receipt, parseEvents, requireEvents, sdkContext) {\n    const parsedEvents = {};\n    if (parseEvents.length === 0) {\n      return parsedEvents;\n    }\n\n    for (const { eventDef, contract } of parseEvents) {\n      const eventName = eventDef.eventName || eventDef.name || 'Unknown';\n      const eventData = parseEventFromReceipt(eventDef, receipt, contract);\n\n      if (requireEvents && !eventData) {\n        log.warn('Expected event not found in receipt', { eventName, receiptHash: receipt.hash });\n        const err = new EventNotFoundError(eventName, receipt.hash);\n        applySdkContext(err, sdkContext);\n        throw err;\n      }\n\n      if (eventData) {\n        Object.assign(parsedEvents, eventData);\n      }\n    }\n\n    return parsedEvents;\n  }\n\n  /**\n   * Best-effort revert enrichment for mined CALL_EXCEPTION / UNPREDICTABLE_GAS_LIMIT failures.\n   *\n   * @private\n   * @async\n   * @param {Error & { code?: string; receipt?: TransactionReceipt }} err\n   * @param {{ readProvider: EthersProvider | null, revertInterface: EthersInterface | null }} deps\n   * @returns {Promise<Record<string, unknown>>}\n   */\n  async _enrichWriteFailure(err, { readProvider, revertInterface }) {\n    const code = err.code || /** @type {any} */ (err).error?.code;\n    const receipt = err.receipt;\n    const txHash = receipt?.hash ?? /** @type {any} */ (err).transactionHash;\n    const failedOnChain =\n      receipt &&\n      txHash &&\n      receipt.status != null &&\n      Number(receipt.status) === 0;\n\n    if (\n      !(code === 'CALL_EXCEPTION' || code === 'UNPREDICTABLE_GAS_LIMIT') ||\n      !failedOnChain ||\n      !readProvider\n    ) {\n      return {};\n    }\n\n    try {\n      return await this._enrichMinedTransactionRevert(\n        readProvider,\n        receipt,\n        txHash,\n        revertInterface\n      );\n    } catch (e) {\n      log.debug('revert enrichment failed', { message: /** @type {Error} */ (e).message });\n      return {};\n    }\n  }\n\n  /**\n   * Execute a single write transaction (broadcast → wait → parse events → build result).\n   *\n   * Most errors are not re-thrown directly: they fall through to the catch block where revert\n   * enrichment runs and the error pipeline produces the final {@link WalletError}.\n   *\n   * @private\n   * @async\n   * @template {BaseTransactionResult} TResult\n   * @param {() => Promise<any>} txFn - Function that returns the ethers tx response\n   * @param {ExecuteWriteOptions} [options] - Resolved options (signer, parseEvents, etc.)\n   * @returns {Promise<TResult>} {@link BaseTransactionResult} with parsed events and {@code extraData} merged\n   * @throws {WriteRequiresSignerError} If no write signer is supplied (defensive — checked again here even after the registry)\n   * @throws {NetworkError} If broadcast returns no tx response or no receipt\n   * @throws {EventNotFoundError} If {@code requireEvents !== false} and a parsed event is missing\n   * @throws {EventParseError} If event decoding/mapping fails after a matching log\n   * @throws {WalletError} Re-thrown after applying SDK context (subclass errors propagate unchanged)\n   *\n   * @remarks\n   * When {@code requireEvents} is {@code false}, an empty {@code eventData} from parsing skips {@link EventNotFoundError};\n   * thrown errors from invalid {@code eventDef} or {@link EventParseError} during decode/mapping still propagate.\n   */\n  async _executeWriteTransaction(txFn, options = {}) {\n    const {\n      writeSigner = this._writeSigner,\n      parseEvents = [],\n      requireEvents = true,\n      extraData = {},\n      methodName = 'execute transaction',\n      rpcUrl = this._config?.rpcUrl ?? null,\n      readProvider: readProviderOpt = null,\n      sdkContext = {}\n    } = options;\n\n    const readProvider = readProviderOpt ?? this._getReadProvider({ writeSigner });\n    const revertInterface = this._getRevertInterface(options);\n\n    if (!writeSigner) {\n      const err = new WriteRequiresSignerError('write transaction');\n      applySdkContext(err, sdkContext);\n      throw err;\n    }\n\n    try {\n      const { receipt } = await this._submitAndConfirmWrite(txFn, {\n        methodName,\n        rpcUrl,\n        sdkContext\n      });\n      const parsedEvents = this._collectParsedEvents(\n        receipt,\n        parseEvents,\n        requireEvents,\n        sdkContext\n      );\n\n      return /** @type {TResult} */ ({\n        success: true,\n        transactionHash: receipt.hash,\n        blockNumber: receipt.blockNumber,\n        gasUsed: receipt.gasUsed.toString(),\n        ...parsedEvents,\n        ...extraData\n      });\n    } catch (error) {\n      log.debug('Write failed before error translation', {\n        methodName,\n        errorName: /** @type {Error} */ (error).name,\n        errorCode:\n          /** @type {Error & { code?: string }} */ (error).code ??\n          /** @type {any} */ (error).error?.code,\n        errorMessage: /** @type {Error} */ (error).message\n      });\n\n      if (error instanceof WalletError) {\n        applySdkContext(/** @type {WalletError} */ (error), sdkContext);\n        throw error;\n      }\n\n      const err = /** @type {Error & { code?: string; receipt?: TransactionReceipt }} */ (error);\n      const receipt = err.receipt;\n      const txHash = receipt?.hash ?? /** @type {any} */ (err).transactionHash;\n      const enrich = await this._enrichWriteFailure(err, { readProvider, revertInterface });\n\n      this._errorPipeline.rethrow(err, {\n        methodName,\n        rpcUrl,\n        revertInterface,\n        sdkContext,\n        receipt: receipt ?? undefined,\n        transactionHash: typeof txHash === 'string' ? txHash : null,\n        ...enrich\n      });\n    }\n  }\n}\n","/**\n * Common base class for every contract client in the SDK\n * ({@code WalletFactoryClient}, {@code KeyVaultClient}, {@code WalletLogicClient}, the four\n * authenticator clients).\n *\n * Composes a {@link ContractRegistry} (lazy contract instance creation, write-signer guards) with an\n * {@link ExecutionPipeline} (Sapphire write flow, revert decoding, error translation through\n * {@code sdkErrorPipeline}). Subclasses call {@link BaseContractClient#executeRead} and\n * {@link BaseContractClient#executeWrite} so that error handling, sanitisation, and event parsing\n * are uniform across the SDK.\n *\n * @module base/BaseContractClient\n */\n\nimport ContractRegistry from './ContractRegistry.js';\nimport ExecutionPipeline from './ExecutionPipeline.js';\n\n/**\n * @public\n */\nclass BaseContractClient {\n  /**\n   * Wire a contract client with its read provider, optional write signer, and resolved network config.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Ethers provider used for {@code executeRead}-backed view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped signer for write operations ({@code null} for read-only clients)\n   * @param {NetworkConfig} config - Resolved network configuration ({@code rpcUrl}, {@code chainId}, {@code addresses})\n   */\n  constructor(readProvider, writeSigner, config) {\n    this.readProvider = readProvider;\n    this.writeSigner = writeSigner;\n    this.config = config;\n    this._registry = new ContractRegistry(readProvider, writeSigner);\n    this._pipeline = new ExecutionPipeline({\n      readProvider,\n      writeSigner,\n      config\n    });\n  }\n\n  /**\n   * Build (or fetch from the registry's cache) a read-only contract instance bound to {@link readProvider}.\n   *\n   * @public\n   * @template TContract\n   * @param {(provider: EthersProvider, address: string) => TContract} contractGetter - Factory function from {@code src/contracts/*}\n   * @param {Address} contractAddress - Address of the deployed contract\n   * @returns {TContract} Read-bound contract instance\n   * @throws {ValidationError} If {@code contractAddress} is missing or not a valid address\n   */\n  getReadContract(contractGetter, contractAddress) {\n    return this._registry.getReadContract(contractGetter, contractAddress);\n  }\n\n  /**\n   * Build (or fetch from the registry's cache) a write-capable contract instance bound to {@link writeSigner}.\n   *\n   * @public\n   * @template TContract\n   * @param {(signer: WrappedEthersSigner, address: string) => TContract} contractGetter - Factory function from {@code src/contracts/*}\n   * @param {Address} contractAddress - Address of the deployed contract\n   * @returns {TContract} Write-bound contract instance\n   * @throws {ValidationError} If {@code contractAddress} is missing or not a valid address\n   * @throws {WriteRequiresSignerError} If no write signer is configured on the client\n   */\n  getWriteContract(contractGetter, contractAddress) {\n    return this._registry.getWriteContract(contractGetter, contractAddress);\n  }\n\n  /**\n   * Execute an ethers contract read inside the SDK's error pipeline.\n   *\n   * Strips {@code operation}, {@code methodName} and {@code revertInterface} from {@code options} and\n   * forwards everything else as sanitised error context. Optional {@code revertInterface} improves decoding\n   * of custom Solidity errors when ethers does not fill {@code err.revert}.\n   *\n   * @public\n   * @async\n   * @template TResult\n   * @param {ExecuteReadInputOptions} options - Read operation, method name, and any extra fields for the error context\n   * @returns {Promise<TResult>} Resolves with whatever {@code operation} returned\n   * @throws {NetworkError} If the underlying RPC transport fails\n   * @throws {ContractRevertError} If the contract reverts (custom error or {@code Error(string)})\n   * @throws {WalletError} For any other failure that is translated through the SDK error pipeline\n   *\n   * @example\n   * return this.executeRead({\n   *   operation: () => contract.method(),\n   *   methodName: 'method name',\n   *   keyVaultAddr: '0x...'\n   * });\n   */\n  async executeRead(options) {\n    const { operation, methodName, revertInterface, ...errorContext } = options;\n    return this._pipeline.executeRead(operation, {\n      methodName,\n      revertInterface,\n      client: this.constructor.name,\n      ...errorContext\n    });\n  }\n\n  /**\n   * Execute an ethers contract write inside the SDK's error pipeline (tx → receipt → events).\n   *\n   * Strips {@code operation}, {@code methodName}, {@code parseEvents}, {@code requireEvents}, {@code extraData}\n   * and {@code revertInterface} from {@code options}; everything else becomes sanitised error context.\n   *\n   * @public\n   * @async\n   * @template {BaseTransactionResult} TResult\n   * @param {ExecuteWriteInputOptions} options - Write operation, method name, parse-event spec, extra fields\n   * @returns {Promise<TResult>} {@link BaseTransactionResult} merged with parsed events and {@code extraData}\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC transport fails (broadcast or receipt fetch)\n   * @throws {ContractRevertError} If the transaction reverts on-chain (revert data is decoded via {@code revertInterface} when supplied)\n   * @throws {EventNotFoundError} If {@code requireEvents !== false} and a required parsed event is missing from the receipt\n   * @throws {EventParseError} If a matching event log is found but cannot be decoded/mapped\n   * @throws {WalletError} For any other failure that is translated through the SDK error pipeline\n   *\n   * @remarks\n   * {@link ExecuteWriteOptions} describes {@code requireEvents}: {@code false} suppresses missing-event failures only;\n   * invalid event definitions and decode/mapping errors after a matching log still throw.\n   *\n   * @example\n   * return this.executeWrite({\n   *   operation: () => contract.method(),\n   *   methodName: 'method name',\n   *   parseEvents: [...],\n   *   extraData: {...},\n   *   walletAddress: '0x...'\n   * });\n   */\n  async executeWrite(options) {\n    const { operation, methodName, parseEvents, requireEvents, extraData, revertInterface, ...errorContext } =\n      options;\n\n    return this._pipeline.executeWrite(operation, {\n      methodName,\n      parseEvents,\n      requireEvents,\n      extraData,\n      revertInterface,\n      client: this.constructor.name,\n      ...errorContext\n    });\n  }\n}\n\nexport default BaseContractClient;\n","/**\n * Solidity ABI for the {@code WalletFactory} contract.\n *\n * Hand-checked subset used by {@link WalletFactoryClient}: every wallet creation entry point,\n * factory administration calls, and all events / custom errors needed by {@code sdkErrorPipeline}\n * to translate reverts.\n *\n * @module contracts/abi/core/walletFactory\n */\n\n/**\n * Frozen ABI fragment array for {@code WalletFactory}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const WALLET_FACTORY_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"constructor\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ERC1167FailedCreateClone\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidAddress\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidSeedLength\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidUsername\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"usernameHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"UsernameAlreadyRegistered\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AuthenticatorAllowed\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"oldImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"BeaconUpgraded\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"KeyVaultImplementationAllowed\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"usernameHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"keyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"UsernameRegistered\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"keyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletAuthenticatorAllowed\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"keyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"storage_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletCreated\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"keyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletImplementationAllowed\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"admin\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"allowedAuthenticators\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"allowedKeyVaultImplementations\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"beacon\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"contract UpgradeableBeacon\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"seed\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"createWallet\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"seed\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"createWalletCore\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"keyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"storage_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"username\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"seed\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"createWalletForUsername\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"usernameHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"seed\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"createWalletForUsernameHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"seed\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"customLogicImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"logicData\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"createWalletWithCustomLogic\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"keyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"seed\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"hook\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"hookData\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"createWalletWithHook\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"username\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"hashUsername\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"implementation\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isAuthenticatorApproved\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isImplementationApproved\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isWallet\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"keyVaultTemplate\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setAuthenticatorAllowed\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setKeyVaultImplementationAllowed\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"walletOrKeyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setWalletAuthenticatorAllowed\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"walletOrKeyVault\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"allowed\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setWalletImplementationAllowed\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAdmin\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"transferAdmin\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newLogic\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"upgradeLogic\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"usernameWallet\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"walletKeyVault\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"usernameHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"walletOfUsername\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"walletSecretVault\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"walletStorage\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"walletUsernameHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"wallets\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code WalletFactory} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call.\n *\n * @module contracts/core/walletFactory\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { WALLET_FACTORY_ABI } from '../abi/core/walletFactory.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code WalletFactory} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} walletFactoryAddress - Deployed WalletFactory contract address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code walletFactoryAddress} is empty/missing\n */\nfunction getWalletFactoryContract(signerOrProvider, walletFactoryAddress) {\n  requireConfigAddress(\n    walletFactoryAddress,\n    'walletFactoryAddress',\n    'Wallet factory address is required'\n  );\n\n  return new Contract(walletFactoryAddress, WALLET_FACTORY_ABI, signerOrProvider);\n}\n\nexport {\n  getWalletFactoryContract,\n};\n","/**\n * BIP-39 mnemonic generation and PBKDF2 seed derivation.\n *\n * Used by the {@code WalletFactoryClient.createWallet*} flows to either generate a fresh seed for\n * the user or derive a deterministic seed from a caller-supplied mnemonic.\n *\n * @module internal/crypto/mnemonic\n */\n\nimport crypto from 'crypto';\nimport { Wallet } from '../../adapters/ethers/index.js';\nimport { requireMnemonic } from '../validation/assert.js';\nimport { normalizeMnemonic } from '../utils/normalize.js';\nimport { ValidationError } from '../../errors/index.js';\nimport log from '../logger.js';\n\n/**\n * Generate a fresh BIP-39 mnemonic.\n *\n * @description Delegates to {@code ethers.Wallet.createRandom()} which uses the platform CSPRNG.\n * Returns a 12-word phrase by default (ethers v6 default entropy).\n *\n * @public\n * @returns {Mnemonic} BIP-39 mnemonic phrase\n */\nfunction generateMnemonic() {\n  const wallet = Wallet.createRandom();\n  log.debug('generateMnemonic', { phraseLength: wallet.mnemonic.phrase.length });\n  return wallet.mnemonic.phrase;\n}\n\n/**\n * Derive a 64-byte BIP-39 seed from a mnemonic via PBKDF2-HMAC-SHA512.\n *\n * @description Validates the mnemonic via {@link requireMnemonic}, normalises whitespace and\n * casing, then runs the standard PBKDF2 iteration count (2048) against the BIP-39 salt prefix\n * {@code \"mnemonic\" + password}.\n *\n * @public\n * @param {Mnemonic} mnemonic - BIP-39 mnemonic phrase\n * @param {string} [password=''] - Optional BIP-39 passphrase\n * @returns {Buffer} Derived seed (64 bytes)\n * @throws {ValidationError} If {@code mnemonic} is not a valid BIP-39 mnemonic\n *   (raised by {@link requireMnemonic})\n */\nfunction deriveSeed(mnemonic, password = '') {\n  requireMnemonic(mnemonic, 'mnemonic');\n  const normalizedMnemonic = normalizeMnemonic(mnemonic);\n  log.debug('deriveSeed', { phraseLength: normalizedMnemonic.length });\n\n  const seed = crypto.pbkdf2Sync(\n    normalizedMnemonic,\n    `mnemonic${password}`,\n    2048,\n    64,\n    'sha512'\n  );\n  log.debug('deriveSeed', { seedLength: seed.length });\n  return seed;\n}\n\nexport { generateMnemonic, deriveSeed };\n","/**\n * Low-level client for the {@code WalletFactory} contract.\n *\n * Handles wallet creation (full stack, core-only, with hook, with custom logic) and admin operations\n * (beacon upgrade, admin transfer). All creation methods accept already-encoded {@link EncodedAuthConfigOptions}\n * — the {@link Monstera} facade uses {@link AuthConfigBuilder} to encode structured input before delegating here.\n *\n * @module clients/factory/WalletFactoryClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getWalletFactoryContract } from '../../contracts/core/walletFactory.js';\nimport { WalletFactoryEvents } from '../../events/index.js';\nimport { generateMnemonic, deriveSeed } from '../../internal/crypto/mnemonic.js';\nimport { requireAddress, requireBoolean, requireBytes, requireBytes32, requireMnemonic, requireNonEmptyBytes, requireNormalizedUsername } from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass WalletFactoryClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Private Helpers\n  // ============================================================================\n\n  /**\n   * Generate a fresh BIP39 mnemonic and derive its seed for wallet creation.\n   *\n   * @private\n   * @returns {{ mnemonic: Mnemonic; seed: Bytes }} Fresh mnemonic phrase and 64-byte seed (hex)\n   * @throws {Error} If the underlying RNG fails (e.g. {@code crypto.randomBytes} unavailable)\n   *\n   * @remarks\n   * The mnemonic string stays reachable while {@link BaseContractClient#executeWrite} runs (submit tx, wait for receipt, parse events).\n   * Callers attach it to the result via {@code extraData} so integrators can back up the phrase — intentional, not accidental exposure through the pipeline.\n   * JavaScript cannot reliably zero-fill string secrets; minimising retention is limited to not holding the result longer than necessary.\n   */\n  _prepareWalletCreation() {\n    const mnemonic = generateMnemonic();\n    const seed = deriveSeed(mnemonic);\n    return { mnemonic, seed };\n  }\n\n  /**\n   * Event parsers used by username wallet creation flows.\n   *\n   * @private\n   * @param {EthersContract} factory - Factory write contract\n   * @returns {Array<{ eventDef: object; contract: EthersContract }>}\n   */\n  _usernameWalletCreateEvents(factory) {\n    return [\n      {\n        eventDef: WalletFactoryEvents.WalletCreated,\n        contract: factory\n      },\n      {\n        eventDef: WalletFactoryEvents.UsernameRegistered,\n        contract: factory\n      }\n    ];\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code walletAddr} was deployed by this factory.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr} (proxy address)\n   * @returns {Promise<boolean>} {@code true} if {@code walletAddr} is a wallet created by this factory\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWallet(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Checking if address is a wallet created by this factory', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.isWallet(walletAddr),\n        methodName: 'check if address is wallet',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the current factory admin address.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} Admin address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAdmin(options = {}) {\n    log.debug('WalletFactory: getAdmin', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.admin(),\n        methodName: 'get admin',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the current WalletLogic implementation address (beacon target).\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} Current WalletLogic implementation\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWalletLogicImplAddr(options = {}) {\n    log.debug('WalletFactory: getWalletLogicImplAddr', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.implementation(),\n        methodName: 'get wallet logic implementation',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Resolve the KeyVault contract for a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<Address>} KeyVault contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultAddr(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting keyVault address for wallet', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.walletKeyVault(walletAddr),\n        methodName: 'get wallet key vault address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Resolve the WalletStorage contract address for a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<Address>} Storage contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getStorageAddr(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting storage address for wallet', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.walletStorage(walletAddr),\n        methodName: 'get storage address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the beacon contract that controls WalletLogic upgrades.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} Beacon address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getBeaconAddr(options = {}) {\n    log.debug('WalletFactory: getBeaconAddr', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.beacon(),\n        methodName: 'get beacon address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Resolve the secret-vault contract address mapped to a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<Address>} Secret vault contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getSecretVaultAddr(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting secretVault address for wallet', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.walletSecretVault(walletAddr),\n        methodName: 'get secret vault address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the KeyVault implementation used as the minimal-proxy clone template.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} KeyVault template implementation address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultTemplate(options = {}) {\n    log.debug('WalletFactory: getKeyVaultTemplate', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.keyVaultTemplate(),\n        methodName: 'get key vault template',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether an authenticator is approved for a wallet via the factory policy registry.\n   *\n   * @public\n   * @async\n   * @param {FactoryAllowedAuthenticatorsOptions} options - {@code authenticatorAddr}\n   * @returns {Promise<boolean>} {@code true} if the authenticator is on the factory allowlist\n   * @throws {ValidationError} If {@code authenticator} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async allowedAuthenticators(options = {}) {\n    const { authenticatorAddr } = options;\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n    log.debug('Checking factory authenticator allowlist', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.allowedAuthenticators(authenticatorAddr),\n        methodName: 'check allowed authenticator',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether a KeyVault implementation is globally recommended for new wallets.\n   *\n   * @public\n   * @async\n   * @param {FactoryAllowedKeyVaultImplementationsOptions} options - {@code implementationAddr}\n   * @returns {Promise<boolean>} {@code true} if the implementation is on the factory allowlist\n   * @throws {ValidationError} If {@code implementationAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async allowedKeyVaultImplementations(options = {}) {\n    const { implementationAddr } = options;\n    requireAddress(implementationAddr, 'implementationAddr');\n    log.debug('Checking factory key vault implementation allowlist', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.allowedKeyVaultImplementations(implementationAddr),\n        methodName: 'check allowed key vault implementation',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether a KeyVault implementation is approved for a wallet via the factory policy registry.\n   *\n   * @public\n   * @async\n   * @param {FactoryIsImplementationApprovedOptions} options - {@code keyVaultAddr}, {@code implementationAddr}\n   * @returns {Promise<boolean>} {@code true} if the factory policy registry approves the implementation for the KeyVault\n   * @throws {ValidationError} If {@code keyVaultAddr} or {@code implementationAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isImplementationApproved(options = {}) {\n    const { keyVaultAddr, implementationAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(implementationAddr, 'implementationAddr');\n    log.debug('Checking factory implementation policy', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.isImplementationApproved(keyVaultAddr, implementationAddr),\n        methodName: 'check factory implementation policy',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether an authenticator is approved for a wallet via the factory policy registry.\n   *\n   * @public\n   * @async\n   * @param {FactoryIsAuthenticatorApprovedOptions} options - {@code keyVaultAddr}, {@code authenticatorAddr}\n   * @returns {Promise<boolean>} {@code true} if the factory policy registry approves the authenticator for the KeyVault\n   * @throws {ValidationError} If {@code keyVaultAddr} or {@code authenticatorAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isAuthenticatorApproved(options = {}) {\n    const { keyVaultAddr, authenticatorAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n    log.debug('Checking factory authenticator policy', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.isAuthenticatorApproved(keyVaultAddr, authenticatorAddr),\n        methodName: 'check factory authenticator policy',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Hash a normalised username the same way the factory does.\n   *\n   * @public\n   * @async\n   * @param {FactoryHashUsernameOptions} options - {@code username} (normalised via trim + lowercase before hashing)\n   * @returns {Promise<Bytes32>} {@code keccak256(bytes(normalizedUsername))}\n   * @throws {ValidationError} If {@code username} is missing or empty after normalisation\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. empty username)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async hashUsername(options = {}) {\n    const { username } = options;\n    const normalized = requireNormalizedUsername(username, 'username');\n    log.debug('Hashing normalized username', sanitizer.forLog({ username: normalized }));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.hashUsername(normalized),\n        methodName: 'hash username',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Resolve a username hash to its registered wallet proxy address.\n   *\n   * @public\n   * @async\n   * @param {FactoryWalletOfUsernameOptions} options - {@code usernameHash}\n   * @returns {Promise<Address>} Wallet proxy address, or the zero address if unregistered\n   * @throws {ValidationError} If {@code usernameHash} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async walletOfUsername(options = {}) {\n    const { usernameHash } = options;\n    requireBytes32(usernameHash, 'usernameHash');\n    log.debug('Resolving wallet for username hash', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.walletOfUsername(usernameHash),\n        methodName: 'resolve wallet for username hash',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Resolve the username hash registered for a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {FactoryWalletUsernameHashOptions} options - {@code walletAddr}\n   * @returns {Promise<Bytes32>} Username hash, or zero bytes32 if none\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWalletUsernameHash(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting username hash for wallet', sanitizer.forLog(options));\n\n    const factory = this.getReadContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeRead(\n      {\n        operation: () => factory.walletUsernameHash(walletAddr),\n        methodName: 'get wallet username hash',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Create a new HD wallet (full stack: WalletStorage + KeyVault + WalletLogic BeaconProxy).\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletBaseOptions} options - {@code authConfig} (encoded), optional {@code authenticatorAddr}\n   * @returns {Promise<WalletCreationResult>} Standard write result plus {@code wallet}, {@code keyVault}, {@code storage}, {@code authenticator}, and the generated {@code mnemonic}\n   * @throws {ValidationError} If {@code authConfig} is missing or not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@link WalletCreationResult.mnemonic} is the generated phrase, returned on purpose for backup (see {@link WalletCreationResult}).\n   * It exists in memory until this write settles and while the caller retains the result; handle and store it as a high-value secret.\n   */\n  async createWallet(options = {}) {\n    const { authConfig } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('WalletFactory: createWallet');\n    log.debug('Creating wallet', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const { mnemonic, seed } = this._prepareWalletCreation();\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n    \n    return this.executeWrite(\n      {\n        operation: () => factory.createWallet(seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletCreated,\n          contract: factory\n        }],\n        extraData: {\n          mnemonic \n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (full stack) deterministically from a caller-supplied mnemonic.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletFromMnemonicOptions} options - {@code authConfig} (encoded), {@code mnemonic}, optional {@code authenticatorAddr}\n   * @returns {Promise<WalletCreationResult>} Standard write result plus addresses and the supplied {@code mnemonic}\n   * @throws {ValidationError} If {@code authConfig} is missing or {@code mnemonic} is not a valid BIP39 phrase\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@link WalletCreationResult.mnemonic} echoes the caller-supplied phrase for a uniform result shape (same security expectations as {@link WalletFactoryClient#createWallet}).\n   */\n  async createWalletFromMnemonic(options = {}) {\n    const { authConfig, mnemonic } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    requireMnemonic(mnemonic, 'mnemonic');\n    log.info('WalletFactory: createWalletFromMnemonic');\n    log.debug('Creating wallet from mnemonic', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const seed = deriveSeed(mnemonic);\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n    \n    return this.executeWrite(\n      {\n        operation: () => factory.createWallet(seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletCreated,\n          contract: factory\n        }],\n        extraData: { \n          mnemonic \n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (full stack) and call a post-creation hook contract.\n   *\n   * The hook contract at {@code hookAddr} must implement {@code IWalletCreationHook}; the SDK does not\n   * enforce that interface — passing a non-conforming address will revert on-chain.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletWithHookOptions} options - {@code authConfig} (encoded), {@code hookAddr}, {@code hookData}, optional {@code authenticatorAddr}\n   * @returns {Promise<WalletCreationResult>} Standard write result plus addresses and generated {@code mnemonic}\n   * @throws {ValidationError} If {@code authConfig}, {@code hookAddr}, or {@code hookData} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction (or the hook itself) reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mnemonic handling: see {@link WalletFactoryClient#createWallet}.\n   */\n  async createWalletWithHook(options = {}) {\n    const { authConfig, hookAddr, hookData } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    requireAddress(hookAddr, 'hookAddr');\n    requireBytes(hookData, 'hookData');\n    log.info('WalletFactory: createWalletWithHook');\n    log.debug('Creating wallet with post-creation hook', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const { mnemonic, seed } = this._prepareWalletCreation();\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n    \n    return this.executeWrite(\n      {\n        operation: () => factory.createWalletWithHook(seed, authenticatorAddr, authConfig, hookAddr, hookData),\n        methodName: 'create wallet with hook',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletCreated,\n          contract: factory\n        }],\n        extraData: { \n          mnemonic \n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (core stack only — WalletStorage + KeyVault, no WalletLogic proxy).\n   *\n   * Use when you intend to interact with KeyVault directly or deploy a custom logic contract later.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletBaseOptions} options - {@code authConfig} (encoded), optional {@code authenticatorAddr}\n   * @returns {Promise<WalletCreationResult>} Standard write result with addresses and generated {@code mnemonic}\n   * @throws {ValidationError} If {@code authConfig} is missing or not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * The returned {@link WalletCreationResult} is parsed from the same {@code WalletCreated} event as full wallet creation.\n   * For this core-only path the factory records the KeyVault address as both {@code wallet} and {@code keyVault};\n   * identical values are intentional (KeyVault is the wallet address here), not an event-parsing mistake.\n   * Mnemonic in the result: see {@link WalletFactoryClient#createWallet}.\n   */\n  async createWalletCore(options = {}) {\n    const { authConfig } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('WalletFactory: createWalletCore');\n    log.debug('Creating wallet core (storage + keyVault only)', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const { mnemonic, seed } = this._prepareWalletCreation();\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n    \n    return this.executeWrite(\n      {\n        operation: () => factory.createWalletCore(seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet core',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletCreated,\n          contract: factory\n        }],\n        extraData: { \n          mnemonic\n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet using a minimal-proxy (clone) of a custom WalletLogic implementation.\n   *\n   * Custom-logic wallets are independent of the factory's beacon — admin upgrades to the default\n   * WalletLogic do not affect them.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletWithCustomLogicOptions} options - {@code authConfig} (encoded), {@code customLogicImplAddr}, {@code logicData}, optional {@code authenticatorAddr}\n   * @returns {Promise<WalletCreationResult>} Standard write result plus addresses and generated {@code mnemonic}\n   * @throws {ValidationError} If {@code authConfig}, {@code customLogicImplAddr}, or {@code logicData} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mnemonic handling: see {@link WalletFactoryClient#createWallet}.\n   */\n  async createWalletWithCustomLogic(options = {}) {\n    const { authConfig, customLogicImplAddr, logicData } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    requireAddress(customLogicImplAddr, 'customLogicImplAddr');\n    requireNonEmptyBytes(logicData, 'logicData');\n    log.info('WalletFactory: createWalletWithCustomLogic');\n    log.debug('Creating wallet with custom logic implementation', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const { mnemonic, seed } = this._prepareWalletCreation();\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite( \n      {\n        operation: () => factory.createWalletWithCustomLogic(seed, authenticatorAddr, authConfig, customLogicImplAddr, logicData),\n        methodName: 'create wallet with custom logic',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletCreated,\n          contract: factory\n        }],\n        extraData: { \n          mnemonic\n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (full stack) and register it to a normalised username.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletForUsernameOptions} options - {@code authConfig} (encoded), {@code username}, optional {@code authenticatorAddr}\n   * @returns {Promise<UsernameWalletCreationResult>} Standard write result plus addresses, generated {@code mnemonic}, and {@code usernameHash}\n   * @throws {ValidationError} If {@code authConfig} or {@code username} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain (e.g. username already registered)\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * Usernames are normalised (trim + lowercase) before being sent on-chain. The factory stores only\n   * the hash, not the plaintext username.\n   */\n  async createWalletForUsername(options = {}) {\n    const { authConfig, username } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    const normalized = requireNormalizedUsername(username, 'username');\n    log.info('WalletFactory: createWalletForUsername');\n    log.debug('Creating wallet for username', sanitizer.forLog({ ...options, username: normalized }));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const { mnemonic, seed } = this._prepareWalletCreation();\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.createWalletForUsername(normalized, seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet for username',\n        parseEvents: this._usernameWalletCreateEvents(factory),\n        extraData: {\n          mnemonic\n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (full stack) for a normalised username from a caller-supplied mnemonic.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletForUsernameFromMnemonicOptions} options - {@code authConfig}, {@code username}, {@code mnemonic}, optional {@code authenticatorAddr}\n   * @returns {Promise<UsernameWalletCreationResult>} Standard write result plus addresses, supplied {@code mnemonic}, and {@code usernameHash}\n   * @throws {ValidationError} If {@code authConfig}, {@code username}, or {@code mnemonic} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async createWalletForUsernameFromMnemonic(options = {}) {\n    const { authConfig, username, mnemonic } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    const normalized = requireNormalizedUsername(username, 'username');\n    requireMnemonic(mnemonic, 'mnemonic');\n    log.info('WalletFactory: createWalletForUsernameFromMnemonic');\n    log.debug('Creating wallet for username from mnemonic', sanitizer.forLog({ ...options, username: normalized }));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const seed = deriveSeed(mnemonic);\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.createWalletForUsername(normalized, seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet for username',\n        parseEvents: this._usernameWalletCreateEvents(factory),\n        extraData: {\n          mnemonic\n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (full stack) and register it to a precomputed username hash.\n   *\n   * Prefer this when the SDK should avoid sending plaintext usernames on-chain.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletForUsernameHashOptions} options - {@code authConfig} (encoded), {@code usernameHash}, optional {@code authenticatorAddr}\n   * @returns {Promise<UsernameWalletCreationResult>} Standard write result plus addresses, generated {@code mnemonic}, and {@code usernameHash}\n   * @throws {ValidationError} If {@code authConfig} or {@code usernameHash} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async createWalletForUsernameHash(options = {}) {\n    const { authConfig, usernameHash } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    requireBytes32(usernameHash, 'usernameHash');\n    log.info('WalletFactory: createWalletForUsernameHash');\n    log.debug('Creating wallet for username hash', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const { mnemonic, seed } = this._prepareWalletCreation();\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.createWalletForUsernameHash(usernameHash, seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet for username hash',\n        parseEvents: this._usernameWalletCreateEvents(factory),\n        extraData: {\n          mnemonic\n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Create a new HD wallet (full stack) for a username hash from a caller-supplied mnemonic.\n   *\n   * @public\n   * @async\n   * @param {FactoryClientCreateWalletForUsernameHashFromMnemonicOptions} options - {@code authConfig}, {@code usernameHash}, {@code mnemonic}, optional {@code authenticatorAddr}\n   * @returns {Promise<UsernameWalletCreationResult>} Standard write result plus addresses, supplied {@code mnemonic}, and {@code usernameHash}\n   * @throws {ValidationError} If required fields are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async createWalletForUsernameHashFromMnemonic(options = {}) {\n    const { authConfig, usernameHash, mnemonic } = options;\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    requireBytes32(usernameHash, 'usernameHash');\n    requireMnemonic(mnemonic, 'mnemonic');\n    log.info('WalletFactory: createWalletForUsernameHashFromMnemonic');\n    log.debug('Creating wallet for username hash from mnemonic', sanitizer.forLog(options));\n\n    const authenticatorAddr = options.authenticatorAddr ?? this.config.addresses.passwordAuth;\n    const seed = deriveSeed(mnemonic);\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.createWalletForUsernameHash(usernameHash, seed, authenticatorAddr, authConfig),\n        methodName: 'create wallet for username hash',\n        parseEvents: this._usernameWalletCreateEvents(factory),\n        extraData: {\n          mnemonic\n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Point the factory beacon at a new WalletLogic implementation (admin-only).\n   *\n   * Affects the orchestration layer of every wallet using the default beacon — not the KeyVault security layer.\n   *\n   * @public\n   * @async\n   * @param {UpdateWalletLogicImplOptions} options - {@code newLogicAddr}\n   * @returns {Promise<UpdateWalletLogicImplAddrResult>} Standard write result with parsed {@code oldImpl}/{@code newImpl}\n   * @throws {ValidationError} If {@code newLogicAddr} is missing or invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not admin)\n   * @throws {EventNotFoundError} If the {@code BeaconUpgraded} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateWalletLogicImplAddr(options = {}) {\n    const { newLogicAddr } = options;\n    requireAddress(newLogicAddr, 'newLogicAddr');\n    log.info('WalletFactory: updateWalletLogicImplAddr');\n    log.debug('Updating wallet logic implementation address', sanitizer.forLog(options));\n    \n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.upgradeLogic(newLogicAddr),\n        methodName: 'update wallet logic',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.BeaconUpgraded,\n          contract: factory\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Transfer the factory admin role (admin-only).\n   *\n   * @public\n   * @async\n   * @param {TransferAdminOptions} options - {@code newAdminAddr}\n   * @returns {Promise<TransferAdminResult>} Standard write result with {@code newAdmin} / {@code factoryAddress}\n   * @throws {ValidationError} If {@code newAdminAddr} is missing or invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the current admin)\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks {@code requireEvents} is set to {@code false}: missing {@code AdminTransferred}-style events do not fail this call.\n   */\n  async transferAdmin(options = {}) {\n    const { newAdminAddr } = options;\n    requireAddress(newAdminAddr, 'newAdminAddr');\n    log.info('WalletFactory: transferAdmin');\n    log.debug('Transferring admin to new address', sanitizer.forLog(options));\n\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.transferAdmin(newAdminAddr),\n        methodName: 'transfer admin',\n        requireEvents: false,\n        extraData: { \n          newAdmin: newAdminAddr, \n          factoryAddress: this.config.addresses.factory \n        },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Allow or disallow an authenticator for new wallet creation (admin-only).\n   *\n   * @public\n   * @async\n   * @param {SetAuthenticatorAllowedOptions} options - {@code authenticator}, {@code allowed}\n   * @returns {Promise<SetAuthenticatorAllowedResult>} Standard write result with parsed allowlist event fields\n   * @throws {ValidationError} If {@code authenticator} is missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not admin)\n   * @throws {EventNotFoundError} If the {@code AuthenticatorAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setAuthenticatorAllowed(options = {}) {\n    const { authenticatorAddr, allowed } = options;\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n    requireBoolean(allowed, 'allowed');\n    log.info('WalletFactory: setAuthenticatorAllowed');\n    log.debug('Updating factory authenticator allowlist', sanitizer.forLog(options));\n\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.setAuthenticatorAllowed(authenticatorAddr, allowed),\n        methodName: 'set authenticator allowed',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.AuthenticatorAllowed,\n          contract: factory\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Allow or disallow a KeyVault implementation for new wallet creation (admin-only).\n   *\n   * @public\n   * @async\n   * @param {SetKeyVaultImplementationAllowedOptions} options - {@code implementation}, {@code allowed}\n   * @returns {Promise<SetKeyVaultImplementationAllowedResult>} Standard write result with parsed allowlist event fields\n   * @throws {ValidationError} If {@code implementation} is missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not admin)\n   * @throws {EventNotFoundError} If the {@code KeyVaultImplementationAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setKeyVaultImplementationAllowed(options = {}) {\n    const { implementationAddr, allowed } = options;\n    requireAddress(implementationAddr, 'implementationAddr');\n    requireBoolean(allowed, 'allowed');\n    log.info('WalletFactory: setKeyVaultImplementationAllowed');\n    log.debug('Updating factory key vault implementation allowlist', sanitizer.forLog(options));\n\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.setKeyVaultImplementationAllowed(implementationAddr, allowed),\n        methodName: 'set key vault implementation allowed',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.KeyVaultImplementationAllowed,\n          contract: factory\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Allow or disallow a KeyVault implementation for a specific wallet via the factory policy registry (admin-only).\n   *\n   * @public\n   * @async\n   * @param {SetWalletImplementationAllowedOptions} options - {@code walletOrKeyVaultAddr}, {@code implementation}, {@code allowed}\n   * @returns {Promise<SetWalletImplementationAllowedResult>} Standard write result with parsed policy event fields\n   * @throws {ValidationError} If addresses are missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not admin)\n   * @throws {EventNotFoundError} If the {@code WalletImplementationAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setWalletImplementationAllowed(options = {}) {\n    const { walletOrKeyVaultAddr, implementationAddr, allowed } = options;\n    requireAddress(walletOrKeyVaultAddr, 'walletOrKeyVaultAddr');\n    requireAddress(implementationAddr, 'implementationAddr');\n    requireBoolean(allowed, 'allowed');\n    log.info('WalletFactory: setWalletImplementationAllowed');\n    log.debug('Updating wallet implementation policy', sanitizer.forLog(options));\n\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.setWalletImplementationAllowed(walletOrKeyVaultAddr, implementationAddr, allowed),\n        methodName: 'set wallet implementation allowed',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletImplementationAllowed,\n          contract: factory\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Allow or disallow an authenticator for a specific wallet via the factory policy registry (admin-only).\n   *\n   * @public\n   * @async\n   * @param {SetWalletAuthenticatorAllowedOptions} options - {@code walletOrKeyVaultAddr}, {@code authenticator}, {@code allowed}\n   * @returns {Promise<SetWalletAuthenticatorAllowedResult>} Standard write result with parsed policy event fields\n   * @throws {ValidationError} If addresses are missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not admin)\n   * @throws {EventNotFoundError} If the {@code WalletAuthenticatorAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setWalletAuthenticatorAllowed(options = {}) {\n    const { walletOrKeyVaultAddr, authenticatorAddr, allowed } = options;\n    requireAddress(walletOrKeyVaultAddr, 'walletOrKeyVaultAddr');\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n    requireBoolean(allowed, 'allowed');\n    log.info('WalletFactory: setWalletAuthenticatorAllowed');\n    log.debug('Updating wallet authenticator policy', sanitizer.forLog(options));\n\n    const factory = this.getWriteContract(getWalletFactoryContract, this.config.addresses.factory);\n\n    return this.executeWrite(\n      {\n        operation: () => factory.setWalletAuthenticatorAllowed(walletOrKeyVaultAddr, authenticatorAddr, allowed),\n        methodName: 'set wallet authenticator allowed',\n        parseEvents: [{\n          eventDef: WalletFactoryEvents.WalletAuthenticatorAllowed,\n          contract: factory\n        }],\n        ...options\n      }\n    );\n  }\n\n}\n\nexport default WalletFactoryClient;\n","/**\n * Solidity ABI for the {@code WalletLogic} contract (wallet proxy).\n *\n * Hand-checked subset used by {@link WalletLogicClient}: proxy reads, KeyVault-forwarded\n * authenticated calls, initialisation, and every relevant event / custom error so the SDK can\n * decode reverts.\n *\n * @module contracts/abi/core/walletLogic\n */\n\n/**\n * Frozen ABI fragment array for {@code WalletLogic}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const WALLET_LOGIC_ABI = [\n  {\n    \"inputs\": [],\n    \"name\": \"AlreadyInitialized\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"InvalidKeyVault\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"NotInitialized\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"authProof\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"newAuthenticator\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"newAuthConfig\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"changeAuthenticator\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"index\",\n        \"type\": \"uint32\"\n      }\n    ],\n    \"name\": \"getAccountAddress\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"fromIndex\",\n        \"type\": \"uint32\"\n      },\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"count\",\n        \"type\": \"uint32\"\n      }\n    ],\n    \"name\": \"getAccountAddresses\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address[]\",\n        \"name\": \"\",\n        \"type\": \"address[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getAuthenticator\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getKeyVault\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_keyVault\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"initialize\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"initialized\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"keyVault\",\n    \"outputs\": [\n      {\n        \"internalType\": \"contract IKeyVault\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"authProof\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"index\",\n        \"type\": \"uint32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"digest\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"sign\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"authProof\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"index\",\n        \"type\": \"uint32\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"message\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"signMessage\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"authProof\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"index\",\n        \"type\": \"uint32\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"nonce\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"gasPrice\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"gasLimit\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"data\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"chainId\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"signTransaction\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"authProof\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"newImplementation\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"upgradeKeyVault\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n];\n","/**\n * Typed contract getter for the {@code WalletLogic} contract (wallet proxy).\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call.\n *\n * @module contracts/core/walletLogic\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { WALLET_LOGIC_ABI } from '../abi/core/walletLogic.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code WalletLogic} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} walletLogicAddress - Deployed WalletLogic proxy address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code walletLogicAddress} is empty/missing\n */\nfunction getWalletLogicContract(signerOrProvider, walletLogicAddress) {\n  requireConfigAddress(\n    walletLogicAddress,\n    'walletLogicAddress',\n    'Wallet logic address is required'\n  );\n\n  return new Contract(walletLogicAddress, WALLET_LOGIC_ABI, signerOrProvider);\n}\n\nexport {\n  getWalletLogicContract,\n};\n","/**\n * Low-level client for the {@code WalletLogic} contract (wallet-proxy orchestration).\n *\n * The WalletLogic contract is the user-facing proxy for full-stack wallets created by the factory.\n * Most signing methods here forward to the wallet's KeyVault under the hood, so the same\n * behaviour is reachable from {@link KeyVaultClient} with one less hop.\n *\n * @remarks\n * Authenticated reads and writes here delegate to KeyVault under the hood. {@link Monstera} exposes the KeyVault-shaped\n * API on the main class ({@code keyVaultAddr}); use this client when you need the WalletLogic contract surface with\n * {@code walletAddr} (proxy address), e.g. {@link WalletLogicClient#initialize} after deployment.\n *\n * @module clients/logic/WalletLogicClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getWalletLogicContract } from '../../contracts/core/walletLogic.js';\nimport { KeyVaultEvents } from '../../events/index.js';\nimport { requireAddress, requireBytes, requireBytes32, requireNonNegativeInteger, requireNonEmptyBytes } from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass WalletLogicClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Resolve the KeyVault contract for a wallet proxy via {@code WalletLogic.getKeyVault()}.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<Address>} KeyVault contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultAddr(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting keyVault address for wallet', sanitizer.forLog(options));\n\n    const logic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => logic.getKeyVault(),\n        methodName: 'get key vault address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Resolve the KeyVault contract for a wallet proxy via the storage slot directly ({@code WalletLogic.keyVault()}).\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<Address>} KeyVault contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mirrors {@link WalletLogicClient#getKeyVaultAddr} but reads the public state variable instead of the getter.\n   */\n  async get_key_vault_addr(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting keyVault address for wallet', sanitizer.forLog(options));\n\n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.keyVault(),\n        methodName: 'get key vault address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the authenticator contract currently bound to a wallet (via WalletLogic).\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<Address>} Authenticator address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAuthenticatorAddr(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Getting authenticator address for wallet', sanitizer.forLog(options));\n\n    const logic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => logic.getAuthenticator(),\n        methodName: 'get authenticator',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether a wallet's WalletLogic proxy has been initialized.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr}\n   * @returns {Promise<boolean>} {@code true} if initialized\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isInitialized(options = {}) {\n    const { walletAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    log.debug('Checking if wallet is initialized', sanitizer.forLog(options));\n\n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.initialized(),\n        methodName: 'check if wallet is initialized',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get an HD account address from a wallet proxy at {@code index}.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyIndexOptions} options - {@code walletAddr} and {@code index}\n   * @returns {Promise<Address>} Account address\n   * @throws {ValidationError} If {@code walletAddr} is invalid or {@code index} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAccountAddr(options = {}) {\n    const { walletAddr, index } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonNegativeInteger(index, 'index');\n    log.debug('Getting account address for wallet at index', sanitizer.forLog(options));\n\n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.getAccountAddress(index),\n        methodName: 'get account address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get a contiguous slice of HD account addresses from a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyAccountSliceOptions} options - {@code walletAddr}, {@code fromIndex}, {@code count}\n   * @returns {Promise<Address[]>} Array of account addresses (length {@code count})\n   * @throws {ValidationError} If {@code walletAddr} is invalid or {@code fromIndex}/{@code count} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAccountAddresses(options = {}) {\n    const { walletAddr, fromIndex, count } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonNegativeInteger(fromIndex, 'fromIndex');\n    requireNonNegativeInteger(count, 'count');\n    log.debug('Getting account addresses for wallet for index range', sanitizer.forLog(options));\n    \n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.getAccountAddresses(fromIndex, count),\n        methodName: 'get account addresses',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign a raw EVM transaction via WalletLogic (forwards to KeyVault, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignTransactionWalletOptions} options - {@code walletAddr}, {@code authProof}, {@code index}, plus tx fields\n   * @returns {Promise<Bytes>} RLP-encoded signed transaction\n   * @throws {ValidationError} If addresses, {@code authProof}, or numeric tx fields are missing/invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signTransaction(options = {}) {\n    const { walletAddr, authProof, index, nonce, gasPrice, gasLimit, to, value, data, chainId } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireNonNegativeInteger(nonce, 'nonce');\n    requireNonNegativeInteger(gasPrice, 'gasPrice');\n    requireNonNegativeInteger(gasLimit, 'gasLimit');\n    requireAddress(to, 'to');\n    requireNonNegativeInteger(value, 'value');\n    requireBytes(data, 'data');\n    requireNonNegativeInteger(chainId, 'chainId');\n    log.info('WalletLogic: signTransaction');\n    log.debug('Signing transaction for wallet at index to address', sanitizer.forLog(options));\n\n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.signTransaction(authProof, index, nonce, gasPrice, gasLimit, to, value, data, chainId),\n        methodName: 'sign transaction',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign an EIP-191 personal message via WalletLogic (forwards to KeyVault, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignMessageWalletOptions} options - {@code walletAddr}, {@code authProof}, {@code index}, {@code message}\n   * @returns {Promise<Bytes>} Signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signMessage(options = {}) {\n    const { walletAddr, authProof, index, message } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireBytes(message, 'message');\n    log.info('WalletLogic: signMessage');\n    log.debug('Signing Ethereum EIP-191 message for wallet at index', sanitizer.forLog(options));\n\n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.signMessage(authProof, index, message),\n        methodName: 'sign message',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign a 32-byte hash via WalletLogic (forwards to KeyVault, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignHashWalletOptions} options - {@code walletAddr}, {@code authProof}, {@code index}, 32-byte {@code hash}\n   * @returns {Promise<Bytes>} Signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async sign(options = {}) {\n    const { walletAddr, authProof, index, hash } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireBytes32(hash, 'hash');\n    log.info('WalletLogic: sign');\n    log.debug('Signing Ethereum hash for wallet at index', sanitizer.forLog(options));\n\n    const walletLogic = this.getReadContract(getWalletLogicContract, walletAddr);\n\n    return this.executeRead(\n      {\n        operation: () => walletLogic.sign(authProof, index, hash),\n        methodName: 'sign hash',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Initialize a freshly deployed WalletLogic proxy by binding it to a {@code keyVaultAddr}.\n   *\n   * @public\n   * @async\n   * @param {InitializeWalletLogicOptions} options - {@code walletAddr} (proxy) and {@code keyVaultAddr}\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If {@code walletAddr} or {@code keyVaultAddr} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. already initialized)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async initialize(options = {}) {\n    const { walletAddr, keyVaultAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.info('WalletLogic: initialize');\n    log.debug('Initializing wallet logic with keyVault', sanitizer.forLog(options));\n\n    const walletLogic = this.getWriteContract(getWalletLogicContract, walletAddr);\n  \n    return this.executeWrite(\n      {\n        operation: () => walletLogic.initialize(keyVaultAddr),\n        methodName: 'initialize wallet logic',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Swap the authenticator via WalletLogic (forwards to KeyVault, authenticated write).\n   *\n   * @public\n   * @async\n   * @param {UpdateAuthenticatorWalletOptions} options - {@code walletAddr}, {@code authProof}, {@code newAuthenticatorAddr}, {@code newAuthConfig}\n   * @returns {Promise<UpdateResult>} Standard write result with parsed authenticator change fields\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code newAuthConfig} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code AuthenticatorChanged} event (KeyVault) is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateAuthenticatorAddr(options = {}) {\n    const { walletAddr, authProof, newAuthenticatorAddr, newAuthConfig } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newAuthenticatorAddr, 'newAuthenticatorAddr');\n    requireNonEmptyBytes(newAuthConfig, 'newAuthConfig');\n    log.info('WalletLogic: updateAuthenticatorAddr');\n    log.debug('Updating authenticator for wallet to new address', sanitizer.forLog(options));\n    \n    const walletLogic = this.getWriteContract(getWalletLogicContract, walletAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => walletLogic.changeAuthenticator(authProof, newAuthenticatorAddr, newAuthConfig),\n        methodName: 'change authenticator',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.AuthenticatorChanged, // Event is emitted by the underlying KeyVault contract\n          contract: walletLogic\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Upgrade the wallet's KeyVault implementation via WalletLogic (forwards to KeyVault, authenticated write).\n   *\n   * @public\n   * @async\n   * @param {WalletLogicUpdateKeyVaultImplOptions} options - {@code walletAddr}, {@code authProof}, {@code newImplAddr}\n   * @returns {Promise<UpdateKeyVaultImplAddrResult>} Standard write result with parsed {@code oldImpl}/{@code newImpl}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code ImplementationUpgraded} event (KeyVault) is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateKeyVaultImplAddr(options = {}) {\n    const { walletAddr, authProof, newImplAddr } = options;\n    requireAddress(walletAddr, 'walletAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newImplAddr, 'newImplAddr');\n    log.info('WalletLogic: updateKeyVaultImplAddr');\n    log.debug('Updating keyVault implementation for wallet', sanitizer.forLog(options));\n\n    const walletLogic = this.getWriteContract(getWalletLogicContract, walletAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => walletLogic.upgradeKeyVault(authProof, newImplAddr),\n        methodName: 'upgrade key vault implementation',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.ImplementationUpgraded, // Event is emitted by the underlying KeyVault contract\n          contract: walletLogic\n        }],\n        ...options\n      }\n    );\n  }\n}\n\nexport default WalletLogicClient;\n","/**\n * Solidity ABI for the {@code KeyVaultV3} contract.\n *\n * Hand-checked subset used by {@link KeyVaultClient}: read methods, authenticated views, write\n * methods (initialise, upgrade, key import / activation), all relevant events, and every custom\n * Solidity error so {@code sdkErrorPipeline} can decode revert reasons.\n *\n * @module contracts/abi/core/keyVault\n */\n\n/**\n * Frozen ABI fragment array for {@code KeyVaultV3}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const KEYVAULT_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyInitialized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AuthenticationFailed\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ChainNotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"DelegateCallFailed\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidAccessToken\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidAddress\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidAuthenticator\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidCallData\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidCustomAcknowledgement\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidImplementation\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"KeyNotFound\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotInitialized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"TargetNotApproved\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"UnauthorizedPolicy\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"approved\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AuthenticatorApprovalChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"oldAuth\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAuth\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AuthenticatorChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"oldAuth\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAuth\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"customAckHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"CustomAuthenticatorChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"oldImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"customAckHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"CustomImplementationUpgraded\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"approved\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ImplementationApprovalChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"oldImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newImpl\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ImplementationUpgraded\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"KeyActivated\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"KeyDeactivated\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"enum WalletStorageV2.CurveType\",\n\t\t\t\t\"name\": \"curve\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"enum WalletStorageV2.ChainType\",\n\t\t\t\t\"name\": \"chain\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"KeyImported\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"activateKey\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"approvedAuthenticators\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"approvedImplementations\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"authenticator\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"contract IAuthenticator\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAuthenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"newAuthConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changeAuthenticator\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAuthenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"newAuthConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"customAckHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changeAuthenticatorCustom\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\"type\": \"bytes4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeActionHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAuthenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"configHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeCustomAuthenticatorAckHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newImplementation\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeCustomImplementationAckHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"deactivateKey\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"implCall\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"executeWithAuth\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"index\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getAccountAddress\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"fromIndex\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"count\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getAccountAddresses\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getImportedKeyAddress\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"addr\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"getImportedKeyIds\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32[]\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getKeyMetadata\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"enum WalletStorageV2.CurveType\",\n\t\t\t\t\t\t\"name\": \"curve\",\n\t\t\t\t\t\t\"type\": \"uint8\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"enum WalletStorageV2.KeySource\",\n\t\t\t\t\t\t\"name\": \"source\",\n\t\t\t\t\t\t\"type\": \"uint8\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"enum WalletStorageV2.ChainType\",\n\t\t\t\t\t\t\"name\": \"chain\",\n\t\t\t\t\t\t\"type\": \"uint8\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"uint64\",\n\t\t\t\t\t\t\"name\": \"createdAt\",\n\t\t\t\t\t\t\"type\": \"uint64\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\t\t\"name\": \"hdIndex\",\n\t\t\t\t\t\t\"type\": \"uint32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\t\t\"name\": \"active\",\n\t\t\t\t\t\t\"type\": \"bool\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"labelHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct WalletStorageV2.KeyMetadata\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"index\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getSolanaAddress\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"pubkey\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"implementation\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"privateKey\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"publicKey\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"enum WalletStorageV2.CurveType\",\n\t\t\t\t\"name\": \"curve\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"enum WalletStorageV2.ChainType\",\n\t\t\t\t\"name\": \"chain\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"label\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"importKey\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_storage\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"accessToken\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_policyRegistry\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"initialize\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_storage\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"_authenticator\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"accessToken\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"initialize\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"initialized\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"keyExists\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"policyRegistry\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"authenticator_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"approved\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setAuthenticatorAllowed\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"enum WalletStorageV2.ChainType\",\n\t\t\t\t\"name\": \"chain\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"basePrivateKey\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"baseChainCode\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setChainBaseKeys\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"implementation_\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"approved\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"setImplementationAllowed\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"index\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"digest\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"sign\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"index\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"message\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"signMessage\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"index\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"message\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"signSolana\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"signature\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint32\",\n\t\t\t\t\"name\": \"index\",\n\t\t\t\t\"type\": \"uint32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"gasPrice\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"gasLimit\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"to\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"value\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"txData\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"chainId\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"signTransaction\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"signedTx\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"keyId\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"digest\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"signWithImportedKey\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"signature\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"storage_\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"contract WalletStorageV2\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newImplementation\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"upgradeImplementation\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newImplementation\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"customAckHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"upgradeImplementationCustom\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code KeyVault} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call.\n *\n * @module contracts/core/keyVault\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { KEYVAULT_ABI } from '../abi/core/keyVault.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code KeyVault} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} keyVaultAddr - Deployed KeyVault contract address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code keyVaultAddr} is empty/missing\n */\nfunction getKeyVaultContract(signerOrProvider, keyVaultAddr) {\n  requireConfigAddress(keyVaultAddr, 'keyVaultAddr', 'KeyVault address is required');\n\n  return new Contract(keyVaultAddr, KEYVAULT_ABI, signerOrProvider);\n}\n\nexport {\n  getKeyVaultContract,\n};\n","/**\n * Low-level client for the {@code KeyVault} contract.\n *\n * KeyVault is the Sapphire-confidential signing and account-management layer of a Monstera wallet:\n * it stores HD seeds, imported keys, and the authenticator binding, and runs all signing operations\n * inside an authenticated context. Most {@link Monstera} read/write methods funnel through this client.\n *\n * @remarks\n * This is the preferred contract surface from {@link Monstera}: signing and account helpers take {@code keyVaultAddr}.\n * WalletLogic exposes parallel proxy methods that forward to KeyVault; using KeyVault directly avoids an extra hop.\n *\n * @module clients/keyVault/KeyVaultClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getKeyVaultContract } from '../../contracts/core/keyVault.js';\nimport { KeyVaultEvents } from '../../events/index.js';\nimport {\n  requireAddress,\n  requireBytes,\n  requireNonEmptyBytes,\n  requireBytes32,\n  requireNonNegativeInteger,\n  requireString,\n  requireBytes4\n} from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass KeyVaultClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Get the {@code WalletStorage} contract bound to a KeyVault (where keys actually live).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address>} Storage contract address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getStorageAddr(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting storage address for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.storage_(),\n        methodName: 'get storage address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the authenticator contract currently bound to a KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address>} Authenticator address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAuthenticatorAddr(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting authenticator address for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.authenticator(),\n        methodName: 'get authenticator',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Compute the canonical {@code actionHash} for a vault-authenticated call.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions & { selector: string; paramsHash: Bytes32 }} options -\n   *   {@code keyVaultAddr}, 4-byte {@code selector}, and {@code paramsHash}\n   * @returns {Promise<Bytes32>} Action hash bound into auth proofs\n   * @throws {ValidationError} If {@code keyVaultAddr}, {@code selector}, or {@code paramsHash} are invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeActionHash(options = {}) {\n    const { keyVaultAddr, selector, paramsHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes4(selector, 'selector');\n    requireBytes32(paramsHash, 'paramsHash');\n    log.debug('Computing action hash for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead({\n      operation: () => keyVault.computeActionHash(selector, paramsHash),\n      methodName: 'compute action hash',\n      ...options\n    });\n  }\n\n  /**\n   * Compute the custom implementation acknowledgement hash for {@code upgradeImplementationCustom}.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientComputeCustomImplementationAckHashOptions} options -\n   *   {@code keyVaultAddr} and {@code newImplementation}\n   * @returns {Promise<Bytes32>}\n   */\n  async computeCustomImplementationAckHash(options = {}) {\n    const { keyVaultAddr, newImplementation } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(newImplementation, 'newImplementation');\n    log.debug('KeyVault: computeCustomImplementationAckHash', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead({\n      operation: () => keyVault.computeCustomImplementationAckHash(newImplementation),\n      methodName: 'compute custom implementation acknowledgement hash',\n      ...options\n    });\n  }\n\n  /**\n   * Compute the custom authenticator acknowledgement hash for {@code changeAuthenticatorCustom}.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientComputeCustomAuthenticatorAckHashOptions} options -\n   *   {@code keyVaultAddr}, {@code newAuthenticator}, and {@code configHash}\n   * @returns {Promise<Bytes32>}\n   */\n  async computeCustomAuthenticatorAckHash(options = {}) {\n    const { keyVaultAddr, newAuthenticator, configHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(newAuthenticator, 'newAuthenticator');\n    requireBytes32(configHash, 'configHash');\n    log.debug('KeyVault: computeCustomAuthenticatorAckHash', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead({\n      operation: () => keyVault.computeCustomAuthenticatorAckHash(newAuthenticator, configHash),\n      methodName: 'compute custom authenticator acknowledgement hash',\n      ...options\n    });\n  }\n\n  /**\n   * Get the current KeyVault implementation address (proxy → impl).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address>} Implementation address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultImplAddr(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting keyVault implementation address for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.implementation(),\n        methodName: 'get key vault implementation',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether a KeyVault has been initialized.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if the KeyVault is initialized\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isInitialized(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is initialized', sanitizer.forLog(options)); \n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.initialized(),\n        methodName: 'check if key vault is initialized',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Read the policy registry address configured for this KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address>}\n   */\n  async getPolicyRegistry(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('KeyVault: getPolicyRegistry', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead({\n      operation: () => keyVault.policyRegistry(),\n      methodName: 'get policy registry',\n      ...options\n    });\n  }\n\n  /**\n   * Check whether an implementation is locally approved on this KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientIsImplementationApprovedOptions} options -\n   *   {@code keyVaultAddr} and {@code implementation}\n   * @returns {Promise<boolean>}\n   */\n  async isImplementationApproved(options = {}) {\n    const { keyVaultAddr, implementation } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(implementation, 'implementation');\n    log.debug('KeyVault: isImplementationApproved', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead({\n      operation: () => keyVault.approvedImplementations(implementation),\n      methodName: 'check if implementation is approved',\n      ...options\n    });\n  }\n\n  /**\n   * Check whether an authenticator is locally approved on this KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientIsAuthenticatorApprovedOptions} options -\n   *   {@code keyVaultAddr} and {@code authenticator}\n   * @returns {Promise<boolean>}\n   */\n  async isAuthenticatorApproved(options = {}) {\n    const { keyVaultAddr, authenticator } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(authenticator, 'authenticator');\n    log.debug('KeyVault: isAuthenticatorApproved', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead({\n      operation: () => keyVault.approvedAuthenticators(authenticator),\n      methodName: 'check if authenticator is approved',\n      ...options\n    });\n  }\n\n  /**\n   * Get the wallet's HD account address at a given index.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrIndexOptions} options - {@code keyVaultAddr} and {@code index}\n   * @returns {Promise<Address>} Account address\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code index} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAccountAddr(options = {}) {\n    const { keyVaultAddr, index } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonNegativeInteger(index, 'index');\n    log.debug('Getting account address for keyVault at index', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.getAccountAddress(index),\n        methodName: 'get account address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get a contiguous slice of HD account addresses from the wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAccountSliceOptions} options - {@code keyVaultAddr}, {@code fromIndex}, {@code count}\n   * @returns {Promise<Address[]>} Array of account addresses (length {@code count})\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code fromIndex}/{@code count} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAccountAddresses(options = {}) {\n    const { keyVaultAddr, fromIndex, count } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonNegativeInteger(fromIndex, 'fromIndex');\n    requireNonNegativeInteger(count, 'count');\n    log.debug('Getting account addresses for keyVault for index range', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n    \n    return this.executeRead(\n      {\n        operation: () => keyVault.getAccountAddresses(fromIndex, count),\n        methodName: 'get account addresses',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign a raw EVM transaction with the wallet's HD account at {@code index} (authenticated view).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientSignTransactionOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, plus tx fields\n   * @returns {Promise<Bytes>} RLP-encoded signed transaction\n   * @throws {ValidationError} If addresses, {@code authProof}, or numeric tx fields are missing/invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signTransaction(options = {}) {\n    const { keyVaultAddr, authProof, index, nonce, gasPrice, gasLimit, to, value, txData, chainId } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireNonNegativeInteger(nonce, 'nonce');\n    requireNonNegativeInteger(gasPrice, 'gasPrice');\n    requireNonNegativeInteger(gasLimit, 'gasLimit');\n    requireAddress(to, 'to');\n    requireNonNegativeInteger(value, 'value');\n    requireBytes(txData, 'txData');\n    requireNonNegativeInteger(chainId, 'chainId');\n    log.info('KeyVault: signTransaction');\n    log.debug('Signing transaction for keyVault at index to address', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.signTransaction(authProof, index, nonce, gasPrice, gasLimit, to, value, txData, chainId),\n        methodName: 'sign transaction',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign an EIP-191 personal message with the wallet's HD account at {@code index} (authenticated view).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientSignMessageOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, {@code message}\n   * @returns {Promise<Bytes>} Signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signMessage(options = {}) {\n    const { keyVaultAddr, authProof, index, message } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireBytes(message, 'message');\n    log.info('KeyVault: signMessage');\n    log.debug('Signing Ethereum EIP-191 message for keyVault at index', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.signMessage(authProof, index, message),\n        methodName: 'sign message',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign a 32-byte hash with the wallet's HD account at {@code index} (authenticated view).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientSignHashOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, 32-byte {@code hash}\n   * @returns {Promise<Bytes>} Signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async sign(options = {}) {\n    const { keyVaultAddr, authProof, index, hash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireBytes32(hash, 'hash');\n    log.info('KeyVault: sign');\n    log.debug('Signing Ethereum hash for keyVault at index', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.sign(authProof, index, hash),\n        methodName: 'sign hash',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Execute an arbitrary KeyVault implementation function gated by an auth proof (authenticated view).\n   *\n   * Used internally by {@link Monstera#signAuthorization}; advanced callers can supply their own\n   * {@code implCall} bytes when extending KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientExecuteWithAuthOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code implCall}\n   * @returns {Promise<Bytes>} Raw return bytes from the implementation function\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof or implementation revert)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async executeWithAuth(options = {}) {\n    const { keyVaultAddr, authProof, implCall } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyBytes(implCall, 'implCall');\n    log.info('KeyVault: executeWithAuth');\n    log.debug('Executing function with auth for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.executeWithAuth(authProof, implCall),\n        methodName: 'execute with auth',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * List the IDs of all keys imported into a KeyVault (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Bytes32[]>} Imported key IDs\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getImportedKeyIds(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting imported key IDs for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.getImportedKeyIds(),\n        methodName: 'get imported key ids',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get metadata for an imported key (V2). Does not return private key material.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultImportedKeyOptions} options - {@code keyVaultAddr} and {@code keyId}\n   * @returns {Promise<KeyMetadataResult>} {@code curve}, {@code chain}, {@code active}, {@code labelHash}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code keyId} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. unknown {@code keyId})\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyMetadata(options = {}) {\n    const { keyVaultAddr, keyId } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(keyId, 'keyId');\n    log.debug('Getting metadata for imported key in keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.getKeyMetadata(keyId),\n        methodName: 'get key metadata',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether an imported key exists in a KeyVault (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultImportedKeyOptions} options - {@code keyVaultAddr} and {@code keyId}\n   * @returns {Promise<boolean>} {@code true} if the key exists\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code keyId} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async keyExists(options = {}) {\n    const { keyVaultAddr, keyId } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(keyId, 'keyId');\n    log.debug('Checking if key exists in keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.keyExists(keyId),\n        methodName: 'check if key exists',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign a digest with an imported key (V2, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientSignWithImportedKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId}, 32-byte {@code digest}\n   * @returns {Promise<Bytes>} Signature bytes (format depends on the imported key's curve)\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signWithImportedKey(options = {}) {\n    const { keyVaultAddr, authProof, keyId, digest } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(keyId, 'keyId');\n    requireBytes32(digest, 'digest');\n    log.info('KeyVault: signWithImportedKey');\n    log.debug('Signing with imported key in keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.signWithImportedKey(authProof, keyId, digest),\n        methodName: 'sign with imported key',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the address (Ethereum address, Solana pubkey, etc.) corresponding to an imported key (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultImportedKeyOptions} options - {@code keyVaultAddr} and {@code keyId}\n   * @returns {Promise<Bytes>} Address bytes (curve/chain-dependent encoding)\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code keyId} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getImportedKeyAddr(options = {}) {\n    const { keyVaultAddr, keyId } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(keyId, 'keyId');\n    log.debug('Getting address for imported key in keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.getImportedKeyAddress(keyId),\n        methodName: 'get imported key address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the Solana public key for an HD account at {@code index} (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrIndexOptions} options - {@code keyVaultAddr} and {@code index}\n   * @returns {Promise<Bytes>} Solana public key bytes\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code index} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. Solana base keys not configured)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getSolanaAddr(options = {}) {\n    const { keyVaultAddr, index } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonNegativeInteger(index, 'index');\n    log.debug('Getting Solana address for keyVault at index', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.getSolanaAddress(index),\n        methodName: 'get solana address',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Sign a Solana message with the HD account at {@code index} (V2, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientSignSolanaOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, {@code message}\n   * @returns {Promise<Bytes>} Solana signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signSolana(options = {}) {\n    const { keyVaultAddr, authProof, index, message } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(index, 'index');\n    requireBytes(message, 'message');\n    log.info('KeyVault: signSolana');\n    log.debug('Signing Solana message for keyVault at index', sanitizer.forLog(options));\n\n    const keyVault = this.getReadContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeRead(\n      {\n        operation: () => keyVault.signSolana(authProof, index, message),\n        methodName: 'sign solana',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Initialize a freshly deployed KeyVault (policy registry defaults to {@code msg.sender} on-chain).\n   *\n   * @public\n   * @async\n   * @param {InitializeOptions} options - {@code keyVaultAddr}, {@code storageAddr}, {@code authenticatorAddr}, {@code accessToken}, {@code authConfig}\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If any address is invalid, {@code authConfig} is missing, or {@code accessToken} is not a 32-byte hex string\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. already initialized)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async initialize(options = {}) {\n    const { keyVaultAddr, storageAddr, authenticatorAddr, accessToken, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(storageAddr, 'storageAddr');\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n    requireBytes32(accessToken, 'accessToken');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('KeyVault: initialize');\n    log.debug('Initializing keyVault with storage and authenticator addresses', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite({\n      operation: () => keyVault.initialize(storageAddr, authenticatorAddr, accessToken, authConfig),\n      methodName: 'initialize key vault',\n      ...options\n    });\n  }\n\n  /**\n   * Initialize a KeyVault with an explicit policy registry address.\n   *\n   * @public\n   * @async\n   * @param {InitializeExplicitOptions} options - Same as {@link KeyVaultClient#initialize} plus required {@code policyRegistry}\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If any address is invalid, {@code authConfig} is missing, or {@code accessToken} is not a 32-byte hex string\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. already initialized)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async initializeExplicit(options = {}) {\n    const { keyVaultAddr, storageAddr, authenticatorAddr, accessToken, authConfig, policyRegistry } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(storageAddr, 'storageAddr');\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n    requireBytes32(accessToken, 'accessToken');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    requireAddress(policyRegistry, 'policyRegistry');\n    log.info('KeyVault: initializeExplicit');\n    log.debug('Initializing keyVault with explicit policy registry', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite({\n      operation: () => keyVault.initialize(\n        storageAddr,\n        authenticatorAddr,\n        accessToken,\n        authConfig,\n        policyRegistry\n      ),\n      methodName: 'initialize key vault with explicit policy registry',\n      ...options\n    });\n  }\n\n  /**\n   * Upgrade a KeyVault proxy to a new implementation (authenticated write).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientUpdateKeyVaultImplOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newImplAddr}\n   * @returns {Promise<UpdateKeyVaultImplAddrResult>} Standard write result with parsed {@code oldImpl}/{@code newImpl}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code ImplementationUpgraded} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateKeyVaultImplAddr(options = {}) {\n    const { keyVaultAddr, authProof, newImplAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newImplAddr, 'newImplAddr');\n    log.info('KeyVault: updateKeyVaultImplAddr');\n    log.debug('Updating keyVault implementation address', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => keyVault.upgradeImplementation(authProof, newImplAddr),\n        methodName: 'upgrade key vault implementation',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.ImplementationUpgraded,\n          contract: keyVault\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Upgrade a KeyVault implementation via the custom acknowledgement path.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientUpdateKeyVaultImplCustomOptions} options -\n   *   {@code keyVaultAddr}, {@code authProof}, {@code newImplAddr}, {@code customAckHash}\n   * @returns {Promise<UpdateKeyVaultImplAddrCustomResult>}\n   */\n  async updateKeyVaultImplAddrCustom(options = {}) {\n    const { keyVaultAddr, authProof, newImplAddr, customAckHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newImplAddr, 'newImplAddr');\n    requireBytes32(customAckHash, 'customAckHash');\n    log.info('KeyVault: updateKeyVaultImplAddrCustom');\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite({\n      operation: () => keyVault.upgradeImplementationCustom(authProof, newImplAddr, customAckHash),\n      methodName: 'upgrade key vault implementation (custom)',\n      parseEvents: [{\n        eventDef: KeyVaultEvents.CustomImplementationUpgraded,\n        contract: keyVault\n      }],\n      ...options\n    });\n  }\n\n  /**\n   * Swap the authenticator contract bound to a KeyVault (authenticated write).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientUpdateAuthenticatorOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newAuthenticatorAddr}, {@code newAuthConfig}\n   * @returns {Promise<UpdateAuthenticatorAddrResult>} Standard write result with parsed {@code oldAuth}/{@code newAuth}\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code newAuthConfig} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code AuthenticatorChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateAuthenticatorAddr(options = {}) {\n    const { keyVaultAddr, authProof, newAuthenticatorAddr, newAuthConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newAuthenticatorAddr, 'newAuthenticatorAddr');\n    requireNonEmptyBytes(newAuthConfig, 'newAuthConfig');\n    log.info('KeyVault: updateAuthenticatorAddr');\n    log.debug('Updating authenticator address for keyVault', sanitizer.forLog(options));\n    \n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => keyVault.changeAuthenticator(authProof, newAuthenticatorAddr, newAuthConfig),\n        methodName: 'change authenticator',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.AuthenticatorChanged,\n          contract: keyVault\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Swap the authenticator via the custom acknowledgement path.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientUpdateAuthenticatorCustomOptions} options -\n   *   {@code keyVaultAddr}, {@code authProof}, {@code newAuthenticatorAddr}, {@code newAuthConfig}, {@code customAckHash}\n   * @returns {Promise<UpdateAuthenticatorAddrCustomResult>}\n   */\n  async updateAuthenticatorAddrCustom(options = {}) {\n    const { keyVaultAddr, authProof, newAuthenticatorAddr, newAuthConfig, customAckHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newAuthenticatorAddr, 'newAuthenticatorAddr');\n    requireNonEmptyBytes(newAuthConfig, 'newAuthConfig');\n    requireBytes32(customAckHash, 'customAckHash');\n    log.info('KeyVault: updateAuthenticatorAddrCustom');\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite({\n      operation: () => keyVault.changeAuthenticatorCustom(\n        authProof,\n        newAuthenticatorAddr,\n        newAuthConfig,\n        customAckHash\n      ),\n      methodName: 'change authenticator (custom)',\n      parseEvents: [{\n        eventDef: KeyVaultEvents.CustomAuthenticatorChanged,\n        contract: keyVault\n      }],\n      ...options\n    });\n  }\n\n  /**\n   * Import an external private key into the KeyVault (V2, authenticated write).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientImportKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId}, {@code privateKey}, optional {@code publicKey}, {@code curve}, {@code chain}, {@code label}\n   * @returns {Promise<ImportKeyResult>} Standard write result with parsed {@code keyId}/{@code curve}/{@code chain}\n   * @throws {ValidationError} If addresses, {@code authProof}, key material, or metadata fields are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or duplicate key)\n   * @throws {EventNotFoundError} If the {@code KeyImported} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async importKey(options = {}) {\n    const { keyVaultAddr, authProof, keyId, privateKey, publicKey, curve, chain, label } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(keyId, 'keyId');\n    requireNonEmptyBytes(privateKey, 'privateKey');\n    requireBytes(publicKey ?? '0x', 'publicKey');\n    requireNonNegativeInteger(curve, 'curve');\n    requireNonNegativeInteger(chain, 'chain');\n    requireString(label, 'label');\n    log.info('KeyVault: importKey');\n    log.debug('Importing key into keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => keyVault.importKey(authProof, keyId, privateKey, publicKey ?? '0x', curve, chain, label),\n        methodName: 'import key',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.KeyImported,\n          contract: keyVault\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Deactivate an imported key (V2, soft delete; authenticated write).\n   *\n   * The key is preserved on-chain but cannot sign until reactivated via {@link KeyVaultClient#activateKey}.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientDeactivateActivateKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId}\n   * @returns {Promise<DeactivateKeyResult>} Standard write result with parsed {@code keyId}\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code keyId} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or unknown {@code keyId})\n   * @throws {EventNotFoundError} If the {@code KeyDeactivated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async deactivateKey(options = {}) {\n    const { keyVaultAddr, authProof, keyId } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(keyId, 'keyId');\n    log.info('KeyVault: deactivateKey');\n    log.debug('Deactivating key in keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => keyVault.deactivateKey(authProof, keyId),\n        methodName: 'deactivate key',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.KeyDeactivated,\n          contract: keyVault\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Reactivate a previously deactivated imported key (V2, authenticated write).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientDeactivateActivateKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId}\n   * @returns {Promise<ActivateKeyResult>} Standard write result with parsed {@code keyId}\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code keyId} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or unknown {@code keyId})\n   * @throws {EventNotFoundError} If the {@code KeyActivated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async activateKey(options = {}) {\n    const { keyVaultAddr, authProof, keyId } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(keyId, 'keyId');\n    log.info('KeyVault: activateKey');\n    log.debug('Activating key in keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => keyVault.activateKey(authProof, keyId),\n        methodName: 'activate key',\n        parseEvents: [{\n          eventDef: KeyVaultEvents.KeyActivated,\n          contract: keyVault\n        }],\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Provision HD base keys for a chain (V2, authenticated write).\n   *\n   * Used to install deterministic Ed25519 / EVM base keys for chains that derive accounts via index.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultClientSetChainBaseKeysOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code chain}, {@code basePrivateKey}, {@code baseChainCode}\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If addresses, {@code authProof}, {@code chain}, or seed material are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or already provisioned)\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks {@code requireEvents} is set to {@code false}: missing events do not fail this call.\n   */\n  async setChainBaseKeys(options = {}) {\n    const { keyVaultAddr, authProof, chain, basePrivateKey, baseChainCode } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonNegativeInteger(chain, 'chain');\n    requireNonEmptyBytes(basePrivateKey, 'basePrivateKey');\n    requireNonEmptyBytes(baseChainCode, 'baseChainCode');\n    log.info('KeyVault: setChainBaseKeys');\n    log.debug('Setting chain base keys for keyVault', sanitizer.forLog(options));\n\n    const keyVault = this.getWriteContract(getKeyVaultContract, keyVaultAddr);\n\n    return this.executeWrite(\n      {\n        operation: () => keyVault.setChainBaseKeys(authProof, chain, basePrivateKey, baseChainCode),\n        methodName: 'set chain base keys',\n        requireEvents: false,\n        ...options\n      }\n    );\n  }\n}\n\nexport default KeyVaultClient;\n","/**\n * Solidity ABI for the {@code ApiKeySessionAuthenticator} contract.\n *\n * Used by {@link ApiKeySessionAuthenticatorClient};\n *\n * @module contracts/abi/authenticators/apiKeySessionAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code ApiKeySessionAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const API_KEY_SESSION_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidSecret\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"Unauthorized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ApiKeyRotated\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ACTION_DOMAIN\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"BIT_EXECUTE_WITH_AUTH\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"BIT_SIGN\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"BIT_SIGN_IMPORTED\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"BIT_SIGN_MESSAGE\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"BIT_SIGN_SOLANA\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"BIT_SIGN_TRANSACTION\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"MODE_ACTION\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"MODE_TOKEN\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"SCOPE_ALL\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"SCOPE_SIGN_ALL\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"TOKEN_DOMAIN\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"mac\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"buildActionAuthProof\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"expiry\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"scopeMask\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"mac\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"buildTokenAuthProof\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"secret\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeActionMac\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"secret\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"chainId\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"expiry\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"scopeMask\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeTokenMac\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"newSecret\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"rotateApiKey\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\"type\": \"bytes4\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"selectorBit\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"ok\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"bit\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code ApiKeySessionAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link ApiKeySessionAuthenticator}.\n *\n * @module contracts/authenticators/ApiKeySessionAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { API_KEY_SESSION_AUTHENTICATOR_ABI } from '../abi/authenticators/apiKeySessionAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code ApiKeySessionAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} apiKeySessionAuthenticatorAddress - Deployed ApiKeySessionAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code apiKeySessionAuthenticatorAddress} is empty/missing\n */\nfunction getApiKeySessionAuthenticatorContract(signerOrProvider, apiKeySessionAuthenticatorAddress) {\n  requireConfigAddress(\n    apiKeySessionAuthenticatorAddress,\n    'apiKeySessionAuthenticatorAddress',\n    'API key session authenticator address is required'\n  );\n\n  return new Contract(apiKeySessionAuthenticatorAddress, API_KEY_SESSION_AUTHENTICATOR_ABI, signerOrProvider);\n}\n\nexport {\n  getApiKeySessionAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code ApiKeySessionAuthenticator} contract.\n *\n * @module clients/auth/ApiKeySessionAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getApiKeySessionAuthenticatorContract } from '../../contracts/authenticators/ApiKeySessionAuthenticator.js';\nimport { ApiKeySessionAuthenticatorEvents } from '../../events/index.js';\nimport {\n  requireAddress,\n  requireNonEmptyBytes,\n  requireBytes32,\n  requireNonEmptyObject,\n  requireChainId,\n  requireNumber,\n  requireBytes4\n} from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass ApiKeySessionAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code ApiKeySessionAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.isConfigured(keyVaultAddr),\n        methodName: 'check if wallet is configured',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Verify an API key session proof ({@code IAuthenticator.verify}).\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and ABI-encoded {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if the token or action MAC verifies for the given context\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, {@code action} is missing or invalid, or {@code authProof} is not non-empty bytes\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(uint8 mode, bytes modeProof)}.\n   * TOKEN mode ({@code mode = 1}): {@code modeProof = abi.encode(uint256 expiry, uint256 scopeMask, bytes32 mac)}.\n   * ACTION mode ({@code mode = 2}): {@code modeProof = abi.encode(bytes32 mac)}.\n   */\n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying auth proof for keyVault', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.verify(keyVaultAddr, action, authProof),\n        methodName: 'verify auth proof',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Recompute a TOKEN-mode MAC ({@code computeTokenMac} on-chain helper).\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientComputeTokenMacOptions} options - {@code keyVaultAddr}, {@code apiKeySecret}, {@code chainId}, {@code expiry}, {@code scopeMask}\n   * @returns {Promise<Bytes32>} Token MAC\n   */\n  async computeTokenMac(options = {}) {\n    const { keyVaultAddr, apiKeySecret, chainId, expiry, scopeMask } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(apiKeySecret, 'apiKeySecret');\n    const normalizedChainId = requireChainId(chainId, 'chainId');\n    requireNumber(expiry, 'expiry', { allowNegative: false });\n    requireNumber(scopeMask, 'scopeMask', { allowNegative: false });\n    log.debug('Computing token MAC for keyVault', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.computeTokenMac(apiKeySecret, normalizedChainId, keyVaultAddr, expiry, scopeMask),\n        methodName: 'compute token MAC',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Recompute an ACTION-mode MAC ({@code computeActionMac} on-chain helper).\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientComputeActionMacOptions} options - {@code apiKeySecret} and {@code actionHash}\n   * @returns {Promise<Bytes32>} Action MAC\n   */\n  async computeActionMac(options = {}) {\n    const { apiKeySecret, actionHash } = options;\n    requireBytes32(apiKeySecret, 'apiKeySecret');\n    requireBytes32(actionHash, 'actionHash');\n    log.debug('Computing action MAC', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.computeActionMac(apiKeySecret, actionHash),\n        methodName: 'compute action MAC',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Encode a TOKEN-mode auth proof ({@code buildTokenAuthProof} on-chain helper).\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientBuildTokenAuthProofOptions} options - {@code expiry}, {@code scopeMask}, {@code mac}\n   * @returns {Promise<string>} ABI-encoded auth proof bytes\n   */\n  async buildTokenAuthProof(options = {}) {\n    const { expiry, scopeMask, mac } = options;\n    requireNumber(expiry, 'expiry', { allowNegative: false });\n    requireNumber(scopeMask, 'scopeMask', { allowNegative: false });\n    requireBytes32(mac, 'mac');\n    log.debug('Building token auth proof', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.buildTokenAuthProof(expiry, scopeMask, mac),\n        methodName: 'build token auth proof',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Encode an ACTION-mode auth proof ({@code buildActionAuthProof} on-chain helper).\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientBuildActionAuthProofOptions} options - {@code mac}\n   * @returns {Promise<string>} ABI-encoded auth proof bytes\n   */\n  async buildActionAuthProof(options = {}) {\n    const { mac } = options;\n    requireBytes32(mac, 'mac');\n    log.debug('Building action auth proof', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.buildActionAuthProof(mac),\n        methodName: 'build action auth proof',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Map a KeyVault selector to its bearer scope bit.\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientSelectorBitOptions} options - 4-byte {@code selector}\n   * @returns {Promise<SelectorBitResult>} {@code ok} and {@code bit}\n   */\n  async selectorBit(options = {}) {\n    const { selector } = options;\n    requireBytes4(selector, 'selector');\n    log.debug('Getting selector bit', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getReadContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeRead(\n      {\n        operation: () => apiKeySessionAuth.selectorBit(selector),\n        methodName: 'get selector bit',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Configure the API key session authenticator with ABI-encoded {@code bytes32 apiKeySecret}.\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientConfigureOptions} options - {@code keyVaultAddr} and {@code authConfig}\n   * @returns {Promise<ConfigureApiKeySessionResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks {@code authConfig = abi.encode(bytes32 apiKeySecret)} where {@code apiKeySecret == keccak256(apiKey)}.\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('ApiKeySessionAuthenticator: configure');\n    log.debug('Configuring API key session for keyVault', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getWriteContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => apiKeySessionAuth.configure(keyVaultAddr, authConfig),\n        methodName: 'configure API key session',\n        parseEvents: [{\n          eventDef: ApiKeySessionAuthenticatorEvents.WalletConfigured,\n          contract: apiKeySessionAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.apiKeySessionAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Rotate the stored secret, invalidating every outstanding bearer token.\n   *\n   * @public\n   * @async\n   * @param {ApiKeySessionClientRotateApiKeyOptions} options - {@code keyVaultAddr}, ACTION-mode {@code authProof}, {@code newApiKeySecret}\n   * @returns {Promise<RotateApiKeyResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code ApiKeyRotated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(MODE_ACTION, abi.encode(bytes32 mac))}.\n   * {@code newApiKeySecret = keccak256(newApiKey)}; must be non-zero.\n   */\n  async rotateApiKey(options = {}) {\n    const { keyVaultAddr, authProof, newApiKeySecret } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(newApiKeySecret, 'newApiKeySecret');\n    log.info('ApiKeySessionAuthenticator: rotateApiKey');\n    log.debug('Rotating API key for keyVault', sanitizer.forLog(options));\n\n    const apiKeySessionAuth = this.getWriteContract(getApiKeySessionAuthenticatorContract, this.config.addresses.apiKeySessionAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => apiKeySessionAuth.rotateApiKey(keyVaultAddr, authProof, newApiKeySecret),\n        methodName: 'rotate API key',\n        parseEvents: [{\n          eventDef: ApiKeySessionAuthenticatorEvents.ApiKeyRotated,\n          contract: apiKeySessionAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.apiKeySessionAuth },\n        ...options\n      }\n    );\n  }\n}\n\nexport default ApiKeySessionAuthenticatorClient;\n","/**\n * Solidity ABI for the {@code PasswordAuthenticator} contract.\n *\n * Used by {@link PasswordAuthenticatorClient}; covers configure / verify / changePassword and the\n * full set of events and custom errors needed by {@code sdkErrorPipeline}.\n *\n * @module contracts/abi/authenticators/passwordAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code PasswordAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const PASSWORD_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidPassword\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"PasswordChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"PasswordConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"currentPassword\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"newPasswordHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changePassword\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code PasswordAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link PasswordAuthenticatorClient}.\n *\n * @module contracts/authenticators/PasswordAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { PASSWORD_AUTHENTICATOR_ABI } from '../abi/authenticators/passwordAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code PasswordAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} passwordAuthenticatorAddress - Deployed PasswordAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code passwordAuthenticatorAddress} is empty/missing\n */\nfunction getPasswordAuthenticatorContract(signerOrProvider, passwordAuthenticatorAddress) {\n  requireConfigAddress(\n    passwordAuthenticatorAddress,\n    'passwordAuthenticatorAddress',\n    'Password authenticator address is required'\n  );\n\n  return new Contract(passwordAuthenticatorAddress, PASSWORD_AUTHENTICATOR_ABI, signerOrProvider);\n}\n\nexport {\n  getPasswordAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code PasswordAuthenticator} contract.\n *\n * Stores a {@code keccak256(utf8(password))} hash on-chain and verifies action-bound proofs of the\n * form {@code abi.encode(bytes password, bytes32 actionHash)}. {@link Monstera} talks to this\n * client via {@code monstera.auth.password}.\n *\n * @module clients/auth/PasswordAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getPasswordAuthenticatorContract } from '../../contracts/authenticators/PasswordAuthenticator.js';\nimport { PasswordAuthenticatorEvents } from '../../events/index.js';\nimport { requireAddress, requireBytes32, requireNonEmptyBytes, requireNonEmptyObject } from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass PasswordAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether the {@code PasswordAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const passwordAuth = this.getReadContract(getPasswordAuthenticatorContract, this.config.addresses.passwordAuth);\n\n    return this.executeRead(\n      {\n        operation: () => passwordAuth.isConfigured(keyVaultAddr),\n        methodName: 'check if wallet is configured',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Verify an action-bound password proof ({@code IAuthenticator.verify}).\n   *\n   * @public\n   * @async\n   * @param {PasswordClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and ABI-encoded {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if the password matches and {@code actionHash} binds\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(bytes password, bytes32 actionHash)}.\n   */\n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying password for keyVault', sanitizer.forLog(options));\n\n    const passwordAuth = this.getReadContract(getPasswordAuthenticatorContract, this.config.addresses.passwordAuth);\n\n    return this.executeRead(\n      {\n        operation: () => passwordAuth.verify(keyVaultAddr, action, authProof),\n        methodName: 'verify password',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Replace the stored password hash. Caller must supply the current action-bound password proof.\n   *\n   * @public\n   * @async\n   * @param {UpdatePasswordOptions} options - {@code keyVaultAddr}, encoded {@code currentPassword}, {@code newPasswordHash}\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If addresses, {@code currentPassword} or {@code newPasswordHash} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. wrong current password)\n   * @throws {EventNotFoundError} If the {@code PasswordChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updatePassword(options = {}) {\n    const { keyVaultAddr, currentPassword, newPasswordHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(currentPassword, 'currentPassword');\n    requireBytes32(newPasswordHash, 'newPasswordHash');\n    log.info('PasswordAuthenticator: updatePassword');\n    log.debug('Updating password for keyVault', sanitizer.forLog(options));\n\n    const passwordAuth = this.getWriteContract(getPasswordAuthenticatorContract, this.config.addresses.passwordAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => passwordAuth.changePassword(keyVaultAddr, currentPassword, newPasswordHash),\n        methodName: 'change password',\n        parseEvents: [{\n          eventDef: PasswordAuthenticatorEvents.PasswordChanged,\n          contract: passwordAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.passwordAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Configure the password hash on the authenticator ({@code IAuthenticator.configure}).\n   *\n   * @public\n   * @async\n   * @param {PasswordClientConfigureOptions} options - {@code keyVaultAddr} and 32-byte {@code authConfig} (password hash)\n   * @returns {Promise<ConfigurePasswordResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not exactly 32 bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code PasswordConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Contract stores {@code bytes32(config)}: {@code authConfig} must be exactly 32 bytes\n   * ({@code keccak256} of UTF-8 password bytes).\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(authConfig, 'authConfig');\n    log.info('PasswordAuthenticator: configure');\n    log.debug('Configuring password for keyVault', sanitizer.forLog(options));\n\n    const passwordAuth = this.getWriteContract(getPasswordAuthenticatorContract, this.config.addresses.passwordAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => passwordAuth.configure(keyVaultAddr, authConfig),\n        methodName: 'configure password',\n        parseEvents: [{\n          eventDef: PasswordAuthenticatorEvents.PasswordConfigured,\n          contract: passwordAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.passwordAuth },\n        ...options\n      }\n    );\n  }\n}\n\nexport default PasswordAuthenticatorClient;\n","/**\n * Solidity ABI for the {@code WalletSignatureAuthenticator} contract.\n *\n * Used by {@link WalletSignatureAuthenticatorClient}; covers configure / verify, whitelist\n * administration, EIP-712 domain reads, and all relevant events / custom errors.\n *\n * @module contracts/abi/authenticators/walletSignatureAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code WalletSignatureAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const WALLET_SIGNATURE_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"constructor\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ECDSAInvalidSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"length\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureLength\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"s\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureS\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"EmptyWhitelist\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ExpiredSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidShortString\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotWhitelisted\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"str\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"StringTooLong\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"Unauthorized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"added\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AddressAdded\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"removed\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AddressRemoved\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [],\n\t\t\"name\": \"EIP712DomainChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"initialWhitelist\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AUTH_TYPEHASH\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAddress\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"addToWhitelist\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"domainSeparator\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"eip712Domain\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes1\",\n\t\t\t\t\"name\": \"fields\",\n\t\t\t\t\"type\": \"bytes1\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"name\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"version\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"chainId\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"verifyingContract\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"salt\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256[]\",\n\t\t\t\t\"name\": \"extensions\",\n\t\t\t\t\"type\": \"uint256[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getWhitelist\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"addr\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isWhitelisted\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"addressToRemove\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"removeFromWhitelist\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code WalletSignatureAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link WalletSignatureAuthenticatorClient}.\n *\n * @module contracts/authenticators/WalletSignatureAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { WALLET_SIGNATURE_AUTHENTICATOR_ABI } from '../abi/authenticators/walletSignatureAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code WalletSignatureAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} walletSignatureAuthenticatorAddress - Deployed WalletSignatureAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code walletSignatureAuthenticatorAddress} is empty/missing\n */\nfunction getWalletSignatureAuthenticatorContract(signerOrProvider, walletSignatureAuthenticatorAddress) {\n  requireConfigAddress(\n    walletSignatureAuthenticatorAddress,\n    'walletSignatureAuthenticatorAddress',\n    'Wallet signature authenticator address is required'\n  );\n\n  return new Contract(walletSignatureAuthenticatorAddress, WALLET_SIGNATURE_AUTHENTICATOR_ABI, signerOrProvider);\n}\n\nexport {\n  getWalletSignatureAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code WalletSignatureAuthenticator} contract.\n *\n * Backs the wallet-signature flow: an EIP-712 {@code WalletAuth(wallet, actionHash, deadline)} signature from\n * a whitelisted address proves identity for KeyVault calls and whitelist administration.\n * {@link Monstera} talks to this client via {@code monstera.auth.walletSignature}.\n *\n * @module clients/auth/WalletSignatureAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getWalletSignatureAuthenticatorContract } from '../../contracts/authenticators/WalletSignatureAuthenticator.js';\nimport { WalletSignatureAuthenticatorEvents } from '../../events/index.js';\nimport { requireAddress, requireNonEmptyBytes, requireNonEmptyObject } from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass WalletSignatureAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code WalletSignatureAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getReadContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n    \n    return this.executeRead(\n      {\n        operation: () => walletSigAuth.isConfigured(keyVaultAddr),\n        methodName: 'check if wallet is configured',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether an address is on a wallet's whitelist.\n   *\n   * @public\n   * @async\n   * @param {WhitelistCheckOptions} options - {@code keyVaultAddr} and {@code addressToCheck}\n   * @returns {Promise<boolean>} {@code true} if {@code addressToCheck} is whitelisted\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWhitelisted(options = {}) {\n    const { keyVaultAddr, addressToCheck } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(addressToCheck, 'addressToCheck');\n    log.debug('Checking if address is whitelisted for keyVault', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getReadContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeRead(\n      {\n        operation: () => walletSigAuth.isWhitelisted(keyVaultAddr, addressToCheck),\n        methodName: 'check if address is whitelisted',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get all whitelisted addresses for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address[]>} Whitelisted addresses\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWhitelist(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting whitelist for keyVault', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getReadContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeRead(\n      {\n        operation: () => walletSigAuth.getWhitelist(keyVaultAddr),\n        methodName: 'get whitelist',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Read the EIP-712 domain separator advertised by the authenticator contract.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Bytes32>} 32-byte domain separator\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getDomainSeparator(options = {}) {\n    log.debug('WalletSignatureAuthenticator: getDomainSeparator', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getReadContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeRead( \n      {\n        operation: () => walletSigAuth.domainSeparator(),\n        methodName: 'get domain separator',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Verify an ABI-encoded {@code (uint256 deadline, bytes signature)} proof bound to an action.\n   *\n   * @public\n   * @async\n   * @param {WalletSignatureClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if the proof is accepted (recovered signer is whitelisted, {@code actionHash} matches, and {@code deadline} not expired)\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, {@code action} is missing, or {@code authProof} is not non-empty bytes\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */ \n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying auth proof for keyVault', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getReadContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeRead(\n      {\n        operation: () => walletSigAuth.verify(keyVaultAddr, action, authProof),\n        methodName: 'verify signature',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Add an address to the wallet's whitelist (authenticated by an existing whitelist signature).\n   *\n   * @public\n   * @async\n   * @param {WalletSignatureClientAddToWhitelistOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code addressToAdd}\n   * @returns {Promise<AddToWhitelistResult>} Standard write result with parsed {@code added} and {@code wallet}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or address already whitelisted)\n   * @throws {EventNotFoundError} If the {@code AddressAdded} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async addToWhitelist(options = {}) {\n    const { keyVaultAddr, authProof, addressToAdd } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(addressToAdd, 'addressToAdd');\n    log.info('WalletSignatureAuthenticator: addToWhitelist');\n    log.debug('Adding address to whitelist for keyVault', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getWriteContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => walletSigAuth.addToWhitelist(keyVaultAddr, authProof, addressToAdd),\n        methodName: 'add to whitelist',\n        parseEvents: [{\n          eventDef: WalletSignatureAuthenticatorEvents.AddressAdded,\n          contract: walletSigAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.walletSignatureAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Configure the authenticator with an ABI-encoded initial whitelist ({@code abi.encode(address[])}).\n   *\n   * @public\n   * @async\n   * @param {WalletSignatureClientConfigureOptions} options - {@code keyVaultAddr} and {@code authConfig}\n   * @returns {Promise<ConfigureWalletSignatureResult>} Standard write result with parsed {@code wallet} and {@code initialWhitelist}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('WalletSignatureAuthenticator: configure');\n    log.debug('Configuring wallet signature authenticator for keyVault', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getWriteContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => walletSigAuth.configure(keyVaultAddr, authConfig),\n        methodName: 'configure wallet signature authenticator',\n        parseEvents: [{\n          eventDef: WalletSignatureAuthenticatorEvents.WalletConfigured,\n          contract: walletSigAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.walletSignatureAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Remove an address from the wallet's whitelist (authenticated by an existing whitelist signature).\n   *\n   * @public\n   * @async\n   * @param {WalletSignatureClientRemoveFromWhitelistOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code addressToRemove}\n   * @returns {Promise<RemoveFromWhitelistResult>} Standard write result with parsed {@code removed} and {@code wallet}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof, last whitelisted address)\n   * @throws {EventNotFoundError} If the {@code AddressRemoved} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async removeFromWhitelist(options = {}) {\n    const { keyVaultAddr, authProof, addressToRemove } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(addressToRemove, 'addressToRemove');\n    log.info('WalletSignatureAuthenticator: removeFromWhitelist');\n    log.debug('Removing address from whitelist for keyVault', sanitizer.forLog(options));\n\n    const walletSigAuth = this.getWriteContract(getWalletSignatureAuthenticatorContract, this.config.addresses.walletSignatureAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => walletSigAuth.removeFromWhitelist(keyVaultAddr, authProof, addressToRemove),\n        methodName: 'remove from whitelist',\n        parseEvents: [{\n          eventDef: WalletSignatureAuthenticatorEvents.AddressRemoved,\n          contract: walletSigAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.walletSignatureAuth },\n        ...options\n      }\n    );\n  }\n}\n\nexport default WalletSignatureAuthenticatorClient;\n","/**\n * Solidity ABI for the {@code DualFactorAuthenticator} contract.\n *\n * Used by {@link DualFactorAuthenticatorClient}; covers configure / verify, password change,\n * guardian update, EIP-712 domain reads, and every relevant event / custom error.\n *\n * @module contracts/abi/authenticators/dualFactorAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code DualFactorAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const DUAL_FACTOR_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"constructor\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ECDSAInvalidSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"length\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureLength\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"s\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureS\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ExpiredSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidConfig\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidGuardian\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidPassword\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidPublicKey\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidShortString\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ModexpFailed\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"str\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"StringTooLong\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"Unauthorized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [],\n\t\t\"name\": \"EIP712DomainChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newGuardian\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"GuardianChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"PasswordChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"guardian\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AUTH_TYPEHASH\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newGuardian\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changeGuardian\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"newPasswordHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changePassword\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"domainSeparator\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"eip712Domain\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes1\",\n\t\t\t\t\"name\": \"fields\",\n\t\t\t\t\"type\": \"bytes1\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"name\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"version\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"chainId\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"verifyingContract\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"salt\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256[]\",\n\t\t\t\t\"name\": \"extensions\",\n\t\t\t\t\"type\": \"uint256[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getGuardian\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code DualFactorAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link DualFactorAuthenticatorClient}.\n *\n * @module contracts/authenticators/DualFactorAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { DUAL_FACTOR_AUTHENTICATOR_ABI } from '../abi/authenticators/dualFactorAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code DualFactorAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} dualFactorAuthenticatorAddress - Deployed DualFactorAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code dualFactorAuthenticatorAddress} is empty/missing\n */\nfunction getDualFactorAuthenticatorContract(signerOrProvider, dualFactorAuthenticatorAddress) {\n  requireConfigAddress(\n    dualFactorAuthenticatorAddress,\n    'dualFactorAuthenticatorAddress',\n    'Dual factor authenticator address is required'\n  );\n\n  return new Contract(dualFactorAuthenticatorAddress, DUAL_FACTOR_AUTHENTICATOR_ABI, signerOrProvider);\n}\n\nexport {\n  getDualFactorAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code DualFactorAuthenticator} contract.\n *\n * Combines a minute-bucket ECDSA proof (derived from the password hash via Sapphire) with a\n * guardian EIP-712 signature over {@code DualFactorAuth(wallet, actionHash, deadline)}. {@link Monstera} talks\n * to this client via {@code monstera.auth.dualFactor}.\n *\n * @module clients/auth/DualFactorAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getDualFactorAuthenticatorContract } from '../../contracts/authenticators/DualFactorAuthenticator.js';\nimport { DualFactorAuthenticatorEvents } from '../../events/index.js';\nimport { requireAddress, requireNonEmptyBytes, requireBytes32, requireNonEmptyObject } from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass DualFactorAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code DualFactorAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getReadContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n\n    return this.executeRead(\n      {\n        operation: () => dualFactorAuth.isConfigured(keyVaultAddr),\n        methodName: 'check if wallet is configured',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Verify a dual-factor proof ({@code IAuthenticator.verify}).\n   *\n   * @public\n   * @async\n   * @param {DualFactorClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and ABI-encoded {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if both the minute-bucket signature and guardian EIP-712 signature verify\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, {@code action} is missing or invalid, or {@code authProof} is not non-empty bytes\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(bytes minutePasswordSignature, uint256 deadline, bytes guardianSignature)}.\n   * {@code minutePasswordSignature} is a 65-byte ECDSA signature over the EIP-191 digest for the current minute bucket;\n   * the guardian signs EIP-712 typed data with struct hash\n   * {@code keccak256(abi.encode(AUTH_TYPEHASH, wallet, actionHash, deadline))}\n   * and {@code deadline} must not be expired.\n   */\n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying auth proof for keyVault', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getReadContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n\n    return this.executeRead(\n      {\n        operation: () => dualFactorAuth.verify(keyVaultAddr, action, authProof),\n        methodName: 'verify auth proof',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Read the configured guardian address for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address>} Guardian address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getGuardian(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting guardian for keyVault', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getReadContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n\n    return this.executeRead(\n      {\n        operation: () => dualFactorAuth.getGuardian(keyVaultAddr),\n        methodName: 'get guardian',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Read the EIP-712 domain separator for {@code DualFactorAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Bytes32>} 32-byte domain separator\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getDomainSeparator(options = {}) {\n    log.debug('DualFactorAuthenticator: getDomainSeparator', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getReadContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n\n    return this.executeRead(\n      {\n        operation: () => dualFactorAuth.domainSeparator(),\n        methodName: 'get domain separator',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Replace the stored password hash using a dual-factor proof.\n   *\n   * @public\n   * @async\n   * @param {DualFactorClientUpdatePasswordOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newPasswordHash}\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If addresses, {@code authProof} or {@code newPasswordHash} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code PasswordChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updatePassword(options = {}) {\n    const { keyVaultAddr, authProof, newPasswordHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(newPasswordHash, 'newPasswordHash');\n    log.info('DualFactorAuthenticator: updatePassword');\n    log.debug('Updating password for keyVault', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getWriteContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => dualFactorAuth.changePassword(keyVaultAddr, authProof, newPasswordHash),\n        methodName: 'change password dual factor',\n        parseEvents: [{\n          eventDef: DualFactorAuthenticatorEvents.PasswordChanged,\n          contract: dualFactorAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.dualFactorAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Configure the dual-factor authenticator with ABI-encoded {@code (passwordHash, guardianAddr)}.\n   *\n   * @public\n   * @async\n   * @param {DualFactorClientConfigureOptions} options - {@code keyVaultAddr} and {@code authConfig}\n   * @returns {Promise<ConfigurePasswordDualFactorResult>} Standard write result with parsed {@code wallet} and {@code guardian}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('DualFactorAuthenticator: configure');\n    log.debug('Configuring password dual factor for keyVault', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getWriteContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n    \n    return this.executeWrite(\n      {\n        operation: () => dualFactorAuth.configure(keyVaultAddr, authConfig),\n        methodName: 'configure password dual factor',\n        parseEvents: [{\n          eventDef: DualFactorAuthenticatorEvents.WalletConfigured,\n          contract: dualFactorAuth\n        }],  \n        extraData: { authenticatorAddress: this.config.addresses.dualFactorAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Replace the guardian address using a dual-factor proof.\n   *\n   * @public\n   * @async\n   * @param {DualFactorClientUpdateGuardianOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newGuardian}\n   * @returns {Promise<UpdateGuardianResult>} Standard write result with parsed {@code wallet} and {@code newGuardian}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code GuardianChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateGuardian(options = {}) {\n    const { keyVaultAddr, authProof, newGuardian } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(newGuardian, 'newGuardian');\n    log.info('DualFactorAuthenticator: updateGuardian');\n    log.debug('Updating guardian for keyVault to new address', sanitizer.forLog(options));\n\n    const dualFactorAuth = this.getWriteContract(getDualFactorAuthenticatorContract, this.config.addresses.dualFactorAuth);\n    \n    return this.executeWrite(\n      {\n        operation: () => dualFactorAuth.changeGuardian(keyVaultAddr, authProof, newGuardian),\n        methodName: 'update guardian',\n        parseEvents: [{\n          eventDef: DualFactorAuthenticatorEvents.GuardianChanged,\n          contract: dualFactorAuth\n        }],  \n        extraData: { authenticatorAddress: this.config.addresses.dualFactorAuth },\n        ...options\n      }\n    );\n  }\n}\n\nexport default DualFactorAuthenticatorClient;\n","/**\n * Solidity ABI for the {@code PasswordMinuteSignatureAuthenticator} contract.\n *\n * Used by {@link PasswordMinuteSignatureAuthenticatorClient}; covers configure / verify, password\n * change, and every relevant event / custom error.\n *\n * @module contracts/abi/authenticators/passwordMinuteSignatureAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code PasswordMinuteSignatureAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const PASSWORD_MINUTE_SIGNATURE_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ECDSAInvalidSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"length\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureLength\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"s\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureS\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidPassword\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidProof\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidPublicKey\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ModexpFailed\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"PasswordChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"PasswordConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"currentPassword\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"newPasswordHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changePassword\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code PasswordMinuteSignatureAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link PasswordMinuteSignatureAuthenticatorClient}.\n *\n * @module contracts/authenticators/PasswordMinuteSignatureAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { PASSWORD_MINUTE_SIGNATURE_AUTHENTICATOR_ABI } from '../abi/authenticators/passwordMinuteSignatureAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code PasswordMinuteSignatureAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} passwordMinuteSignatureAuthenticatorAddress - Deployed PasswordMinuteSignatureAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code passwordMinuteSignatureAuthenticatorAddress} is empty/missing\n */\nfunction getPasswordMinuteSignatureAuthenticatorContract(signerOrProvider, passwordMinuteSignatureAuthenticatorAddress) {\n  requireConfigAddress(\n    passwordMinuteSignatureAuthenticatorAddress,\n    'passwordMinuteSignatureAuthenticatorAddress',\n    'Password minute signature authenticator address is required'\n  );\n\n  return new Contract(\n    passwordMinuteSignatureAuthenticatorAddress,\n    PASSWORD_MINUTE_SIGNATURE_AUTHENTICATOR_ABI,\n    signerOrProvider\n  );\n}\n\nexport {\n  getPasswordMinuteSignatureAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code PasswordMinuteSignatureAuthenticator} contract.\n *\n * Stores a {@code keccak256(utf8(password))} hash on-chain and verifies an ABI-encoded ECDSA\n * signature over the per-minute EIP-191 digest. {@link Monstera} talks to this client via\n * {@code monstera.auth.passwordMinuteSignature}.\n *\n * @module clients/auth/PasswordMinuteSignatureAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getPasswordMinuteSignatureAuthenticatorContract } from '../../contracts/authenticators/PasswordMinuteSignatureAuthenticator.js';\nimport { PasswordMinuteSignatureAuthenticatorEvents } from '../../events/index.js';\nimport { requireAddress, requireBytes32, requireNonEmptyBytes, requireNonEmptyObject } from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass PasswordMinuteSignatureAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code PasswordMinuteSignatureAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const passwordAuth = this.getReadContract(getPasswordMinuteSignatureAuthenticatorContract, this.config.addresses.passwordMinuteSignatureAuth);\n\n    return this.executeRead(\n      {\n        operation: () => passwordAuth.isConfigured(keyVaultAddr),\n        methodName: 'check if wallet is configured',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Verify a minute-bucket ECDSA signature bound to an action.\n   *\n   * @public\n   * @async\n   * @param {PasswordMinuteClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and ABI-encoded {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if the signature is valid for the current minute bucket and action\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, {@code action} is missing, or {@code authProof} is not non-empty bytes\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * Contract expects {@code authProof = abi.encode(bytes signature)} where {@code signature} is a\n   * 65-byte secp256k1 signature. The contract hashes\n   * {@code keccak256(abi.encodePacked(wallet, address(this), chainId, minuteBucket, actionHash))},\n   * applies EIP-191, derives a deterministic signing key from {@code (passwordHash, minuteBucket)} via\n   * Sapphire, and checks {@code recover(digest, signature)} matches that derived address.\n   */\n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying minute signature for keyVault', sanitizer.forLog(options));\n\n    const passwordAuth = this.getReadContract(getPasswordMinuteSignatureAuthenticatorContract, this.config.addresses.passwordMinuteSignatureAuth);\n\n    return this.executeRead(\n      {\n        operation: () => passwordAuth.verify(keyVaultAddr, action, authProof),\n        methodName: 'verify minute signature',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Replace the stored password hash. Caller must supply the current action-bound password proof.\n   *\n   * @public\n   * @async\n   * @param {UpdatePasswordOptions} options - {@code keyVaultAddr}, encoded {@code currentPassword}, {@code newPasswordHash}\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If addresses, {@code currentPassword} or {@code newPasswordHash} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. wrong current password)\n   * @throws {EventNotFoundError} If the {@code PasswordChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updatePassword(options = {}) {\n    const { keyVaultAddr, currentPassword, newPasswordHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(currentPassword, 'currentPassword');\n    requireBytes32(newPasswordHash, 'newPasswordHash');\n    log.info('PasswordMinuteSignatureAuthenticator: updatePassword');\n    log.debug('Updating password for keyVault', sanitizer.forLog(options));\n\n    const passwordAuth = this.getWriteContract(getPasswordMinuteSignatureAuthenticatorContract, this.config.addresses.passwordMinuteSignatureAuth);\n\n    return this.executeWrite(\n      {\n        operation: () => passwordAuth.changePassword(keyVaultAddr, currentPassword, newPasswordHash),\n        methodName: 'change password',\n        parseEvents: [{\n          eventDef: PasswordMinuteSignatureAuthenticatorEvents.PasswordChanged,\n          contract: passwordAuth\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.passwordMinuteSignatureAuth },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Configure the password hash on the authenticator ({@code IAuthenticator.configure}).\n   *\n   * @public\n   * @async\n   * @param {PasswordMinuteClientConfigureOptions} options - {@code keyVaultAddr} and 32-byte {@code authConfig} (password hash)\n   * @returns {Promise<ConfigurePasswordResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not exactly 32 bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code PasswordConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Contract stores {@code bytes32(config)}: {@code authConfig} must be exactly 32 bytes,\n   * the keccak256 hash of the UTF-8 password ({@code keccak256(utf8Bytes(password))}).\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(authConfig, 'authConfig');\n    log.info('PasswordMinuteSignatureAuthenticator: configure');\n    log.debug('Configuring password for keyVault', sanitizer.forLog(options));\n\n    const passwordAuth = this.getWriteContract(getPasswordMinuteSignatureAuthenticatorContract, this.config.addresses.passwordMinuteSignatureAuth);\n    \n    return this.executeWrite(\n      {\n        operation: () => passwordAuth.configure(keyVaultAddr, authConfig),\n        methodName: 'configure password',\n        parseEvents: [{\n          eventDef: PasswordMinuteSignatureAuthenticatorEvents.PasswordConfigured,\n          contract: passwordAuth\n        }],  \n        extraData: { authenticatorAddress: this.config.addresses.passwordMinuteSignatureAuth },\n        ...options\n      }\n    );\n  }\n}\n\nexport default PasswordMinuteSignatureAuthenticatorClient;\n","/**\n * Solidity ABI for the {@code MultiAuthenticator} contract.\n *\n * Used by {@link MultiAuthenticatorClient};\n *\n * @module contracts/abi/authenticators/multiAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code MultiAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const MULTI_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyEnabled\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ChildNotEnabled\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidChild\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidConfig\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"LastAuthenticator\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"Unauthorized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"child\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AuthenticatorAdded\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"child\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AuthenticatorRemoved\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"children\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"child\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"childConfig\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"addAuthenticator\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\"type\": \"bytes4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeActionHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getAuthenticators\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"child\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isEnabled\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"child\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"removeAuthenticator\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code MultiAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link MultiAuthenticator}.\n *\n * @module contracts/authenticators/MultiAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { MULTI_AUTHENTICATOR_ABI } from '../abi/authenticators/multiAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code MultiAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} multiAuthenticatorAddress - Deployed MultiAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code multiAuthenticatorAddress} is empty/missing\n */\nfunction getMultiAuthenticatorContract(signerOrProvider, multiAuthenticatorAddress) {\n  requireConfigAddress(\n    multiAuthenticatorAddress,\n    'multiAuthenticatorAddress',\n    'MultiAuthenticator address is required'\n  );\n\n  return new Contract(multiAuthenticatorAddress, MULTI_AUTHENTICATOR_ABI, signerOrProvider);\n}\n\nexport {\n  getMultiAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code MultiAuthenticator} contract.\n *\n * @module clients/auth/MultiAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getMultiAuthenticatorContract } from '../../contracts/authenticators/MultiAuthenticator.js';\nimport { MultiAuthenticatorEvents } from '../../events/index.js';\nimport {\n  requireAddress,\n  requireNonEmptyBytes,\n  requireBytes32,\n  requireNonEmptyObject,\n  requireBytes4\n} from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass MultiAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code MultiAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getReadContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeRead(\n      {\n        operation: () => multiAuthenticator.isConfigured(keyVaultAddr),\n        methodName: 'check if wallet is configured',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Verify a routed child proof ({@code IAuthenticator.verify}).\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and ABI-encoded {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if the routed child proof verifies for the given context\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, {@code action} is missing or invalid, or {@code authProof} is not non-empty bytes\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(address child, bytes childProof)}.\n   */\n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying auth proof for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getReadContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeRead(\n      {\n        operation: () => multiAuthenticator.verify(keyVaultAddr, action, authProof),\n        methodName: 'verify auth proof',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Check whether a child authenticator is enabled for a wallet.\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientIsEnabledOptions} options - {@code keyVaultAddr} and {@code child}\n   * @returns {Promise<boolean>} {@code true} if the child is enabled\n   * @throws {ValidationError} If {@code keyVaultAddr} or {@code child} is invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isEnabled(options = {}) {\n    const { keyVaultAddr, child } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(child, 'child');\n    log.debug('Checking if child is enabled for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getReadContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeRead(\n      {\n        operation: () => multiAuthenticator.isEnabled(keyVaultAddr, child),\n        methodName: 'check if child is enabled',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Get the list of enabled child authenticators for a wallet.\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientGetAuthenticatorsOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<address[]>} List of enabled child authenticators\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAuthenticators(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting authenticators for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getReadContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeRead(\n      {\n        operation: () => multiAuthenticator.getAuthenticators(keyVaultAddr),\n        methodName: 'get authenticators',\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Compute the hash of an action for a wallet.\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientComputeActionHashOptions} options - {@code keyVaultAddr}, {@code selector}, and {@code paramsHash}\n   * @returns {Promise<Bytes32>} Hash of the action\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, {@code selector} is invalid, or {@code paramsHash} is invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeActionHash(options = {}) {\n    const { keyVaultAddr, selector, paramsHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes4(selector, 'selector');\n    requireBytes32(paramsHash, 'paramsHash');\n    log.debug('Computing action hash for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getReadContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeRead(\n      {\n        operation: () => multiAuthenticator.computeActionHash(keyVaultAddr, selector, paramsHash),\n        methodName: 'compute action hash',\n        ...options\n      }\n    );\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Configure a wallet with ABI-encoded multi-authenticator config bytes.\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientConfigureOptions} options - {@code keyVaultAddr} and {@code authConfig}\n   * @returns {Promise<ConfigureMultiAuthenticatorResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authConfig = abi.encode(address[] children, bytes[] childConfigs)}.\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('MultiAuthenticator: configure');\n    log.debug('Configuring multi authenticator for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getWriteContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeWrite(\n      {\n        operation: () => multiAuthenticator.configure(keyVaultAddr, authConfig),\n        methodName: 'configure multi authenticator',\n        parseEvents: [{\n          eventDef: MultiAuthenticatorEvents.WalletConfigured,\n          contract: multiAuthenticator\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.multiAuthenticator },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Enable an additional child authenticator for a wallet.\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientAddAuthenticatorOptions} options - {@code keyVaultAddr}, routed {@code authProof}, {@code child}, and {@code childConfig}\n   * @returns {Promise<AddMultiAuthenticatorResult>} Standard write result with parsed {@code wallet} and {@code child}\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code AuthenticatorAdded} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(address viaChild, bytes childProof)} for a currently enabled child.\n   */\n  async addAuthenticator(options = {}) {\n    const { keyVaultAddr, authProof, child, childConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(child, 'child');\n    requireNonEmptyBytes(childConfig, 'childConfig');\n    log.info('MultiAuthenticator: addAuthenticator');\n    log.debug('Adding authenticator for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getWriteContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeWrite(\n      {\n        operation: () => multiAuthenticator.addAuthenticator(keyVaultAddr, authProof, child, childConfig),\n        methodName: 'add authenticator',\n        parseEvents: [{\n          eventDef: MultiAuthenticatorEvents.AuthenticatorAdded,\n          contract: multiAuthenticator\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.multiAuthenticator },\n        ...options\n      }\n    );\n  }\n\n  /**\n   * Disable a child authenticator for a wallet.\n   *\n   * @public\n   * @async\n   * @param {MultiAuthenticatorClientRemoveAuthenticatorOptions} options - {@code keyVaultAddr}, routed {@code authProof}, and {@code child}\n   * @returns {Promise<RemoveMultiAuthenticatorResult>} Standard write result with parsed {@code wallet} and {@code child}\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code AuthenticatorRemoved} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async removeAuthenticator(options = {}) {\n    const { keyVaultAddr, authProof, child } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(child, 'child');\n    log.info('MultiAuthenticator: removeAuthenticator');\n    log.debug('Removing authenticator for keyVault', sanitizer.forLog(options));\n\n    const multiAuthenticator = this.getWriteContract(getMultiAuthenticatorContract, this.config.addresses.multiAuthenticator);\n\n    return this.executeWrite(\n      {\n        operation: () => multiAuthenticator.removeAuthenticator(keyVaultAddr, authProof, child),\n        methodName: 'remove authenticator',\n        parseEvents: [{\n          eventDef: MultiAuthenticatorEvents.AuthenticatorRemoved,\n          contract: multiAuthenticator\n        }],\n        extraData: { authenticatorAddress: this.config.addresses.multiAuthenticator },\n        ...options\n      }\n    );\n  }\n}\n\nexport default MultiAuthenticatorClient;\n","/**\n * Solidity ABI for the {@code PasswordOrWalletSignatureAuthenticator} contract.\n *\n * Used by {@link PasswordOrWalletSignatureAuthenticatorClient};\n *\n * @module contracts/abi/authenticators/passwordOrWalletSignatureAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code PasswordOrWalletSignatureAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI = [\n\t{\n\t\t\"inputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"constructor\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AlreadyConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ECDSAInvalidSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"length\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureLength\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"s\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"ECDSAInvalidSignatureS\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"EmptyWhitelist\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"ExpiredSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidConfig\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidLinkSignature\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidMethod\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidPassword\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"InvalidShortString\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"LinkNonceAlreadyUsed\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"NotConfigured\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"str\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"StringTooLong\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"Unauthorized\",\n\t\t\"type\": \"error\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"added\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AddressAdded\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"removed\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"AddressRemoved\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [],\n\t\t\"name\": \"EIP712DomainChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"PasswordChanged\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"initialWhitelist\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletConfigured\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"anonymous\": false,\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": true,\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"linkedWallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"indexed\": false,\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"WalletLinkApproved\",\n\t\t\"type\": \"event\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"AUTH_TYPEHASH\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"LINK_TYPEHASH\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"METHOD_PASSWORD\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"METHOD_WALLET_SIGNATURE\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint8\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"uint8\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAddress\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"addToWhitelist\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAddress\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"deadline\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"newWalletSignature\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"addToWhitelistWithProof\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"newPasswordHash\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"changePassword\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAddress\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"deadline\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeLinkActionHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"newAddress\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"deadline\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"computeLinkParamsHash\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"pure\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"config\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"configure\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"domainSeparator\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [],\n\t\t\"name\": \"eip712Domain\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes1\",\n\t\t\t\t\"name\": \"fields\",\n\t\t\t\t\"type\": \"bytes1\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"name\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"string\",\n\t\t\t\t\"name\": \"version\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\"name\": \"chainId\",\n\t\t\t\t\"type\": \"uint256\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"verifyingContract\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"salt\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"uint256[]\",\n\t\t\t\t\"name\": \"extensions\",\n\t\t\t\t\"type\": \"uint256[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"getWhitelist\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address[]\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"address[]\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isConfigured\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\"type\": \"bytes32\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isLinkNonceUsed\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"candidate\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"isWhitelisted\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"addressToRemove\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"removeFromWhitelist\",\n\t\t\"outputs\": [],\n\t\t\"stateMutability\": \"nonpayable\",\n\t\t\"type\": \"function\"\n\t},\n\t{\n\t\t\"inputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\"name\": \"wallet\",\n\t\t\t\t\"type\": \"address\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"components\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"address\",\n\t\t\t\t\t\t\"name\": \"target\",\n\t\t\t\t\t\t\"type\": \"address\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes4\",\n\t\t\t\t\t\t\"name\": \"selector\",\n\t\t\t\t\t\t\"type\": \"bytes4\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"paramsHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"internalType\": \"bytes32\",\n\t\t\t\t\t\t\"name\": \"actionHash\",\n\t\t\t\t\t\t\"type\": \"bytes32\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t\"internalType\": \"struct IAuthenticator.AuthContext\",\n\t\t\t\t\"name\": \"context\",\n\t\t\t\t\"type\": \"tuple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"internalType\": \"bytes\",\n\t\t\t\t\"name\": \"authProof\",\n\t\t\t\t\"type\": \"bytes\"\n\t\t\t}\n\t\t],\n\t\t\"name\": \"verify\",\n\t\t\"outputs\": [\n\t\t\t{\n\t\t\t\t\"internalType\": \"bool\",\n\t\t\t\t\"name\": \"\",\n\t\t\t\t\"type\": \"bool\"\n\t\t\t}\n\t\t],\n\t\t\"stateMutability\": \"view\",\n\t\t\"type\": \"function\"\n\t}\n];\n","/**\n * Typed contract getter for the {@code PasswordOrWalletSignatureAuthenticator} contract.\n *\n * Returns a freshly instantiated ethers {@link EthersContract} bound to either a Sapphire-wrapped\n * signer (for writes) or a plain provider (for reads). Used by {@link ContractRegistry} on every\n * read/write call from {@link PasswordOrWalletSignatureAuthenticator}.\n *\n * @module contracts/authenticators/PasswordOrWalletSignatureAuthenticator\n */\n\nimport { Contract } from '../../adapters/ethers/index.js';\nimport { requireConfigAddress } from '../../internal/validators/configAssert.js';\nimport { PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI } from '../abi/authenticators/passwordOrWalletSignatureAuthenticator.js';\n\n/**\n * Build a typed ethers {@link EthersContract} for {@code PasswordOrWalletSignatureAuthenticator} bound to the given signer/provider.\n *\n * @public\n * @param {WrappedEthersSigner | EthersProvider} signerOrProvider - Sapphire-wrapped signer (for writes) or provider (for reads)\n * @param {Address} passwordOrWalletSignatureAuthenticatorAddress - Deployed PasswordOrWalletSignatureAuthenticator address\n * @returns {EthersContract} Ethers contract instance\n * @throws {ConfigError} If {@code passwordOrWalletSignatureAuthenticatorAddress} is empty/missing\n */\nfunction getPasswordOrWalletSignatureAuthenticatorContract(signerOrProvider, passwordOrWalletSignatureAuthenticatorAddress) {\n  requireConfigAddress(\n    passwordOrWalletSignatureAuthenticatorAddress,\n    'passwordOrWalletSignatureAuthenticatorAddress',\n    'Password or wallet signature authenticator address is required'\n  );\n\n  return new Contract(passwordOrWalletSignatureAuthenticatorAddress, PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI, signerOrProvider);\n}\n\nexport {\n  getPasswordOrWalletSignatureAuthenticatorContract,\n};\n","/**\n * Low-level client for the {@code PasswordOrWalletSignatureAuthenticator} contract.\n *\n * Supports password OR wallet-signature proofs via a unified {@code abi.encode(uint8 method, bytes methodProof)}\n * envelope. Password method uses {@code abi.encode(bytes password, bytes32 actionHash)}; wallet-signature method\n * uses {@code abi.encode(uint256 deadline, bytes signature)} over EIP-712 {@code WalletAuth}. Also supports\n * whitelist administration and wallet linking via {@code addToWhitelistWithProof}.\n * {@link Monstera} talks to this client via {@code monstera.auth.passwordOrWalletSignature}.\n *\n * @module clients/auth/PasswordOrWalletSignatureAuthenticatorClient\n */\n\nimport BaseContractClient from '../../base/BaseContractClient.js';\nimport { getPasswordOrWalletSignatureAuthenticatorContract } from '../../contracts/authenticators/PasswordOrWalletSignatureAuthenticator.js';\nimport { PasswordOrWalletSignatureAuthenticatorEvents } from '../../events/index.js';\nimport {\n  requireAddress,\n  requireBytes32,\n  requireNonEmptyBytes,\n  requireNonEmptyObject,\n  requireNumber,\n} from '../../internal/validation/assert.js';\nimport log from '../../internal/logger.js';\nimport { sanitizer } from '../../internal/sanitization/index.js';\n\n/**\n * @public\n */\nclass PasswordOrWalletSignatureAuthenticatorClient extends BaseContractClient {\n  /**\n   * Forward provider/signer/config to {@link BaseContractClient}.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider for view calls\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network configuration\n   */\n  constructor(readProvider, writeSigner, config) {\n    super(readProvider, writeSigner, config);\n  }\n\n  /**\n   * @private\n   * @returns {Address}\n   */\n  get _contractAddress() {\n    return this.config.addresses.passwordOrWalletSigAuth;\n  }\n\n  // ============================================================================\n  // Read Methods\n  // ============================================================================\n\n  /**\n   * Check whether {@code PasswordOrWalletSignatureAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isConfigured(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Checking if keyVault is configured', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.isConfigured(keyVaultAddr),\n      methodName: 'check if wallet is configured',\n      ...options,\n    });\n  }\n\n  /**\n   * Check whether an address is on a wallet's whitelist.\n   *\n   * @public\n   * @async\n   * @param {WhitelistCheckOptions} options - {@code keyVaultAddr} and {@code addressToCheck}\n   * @returns {Promise<boolean>} {@code true} if {@code addressToCheck} is whitelisted\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWhitelisted(options = {}) {\n    const { keyVaultAddr, addressToCheck } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(addressToCheck, 'addressToCheck');\n    log.debug('Checking if address is whitelisted for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.isWhitelisted(keyVaultAddr, addressToCheck),\n      methodName: 'check if address is whitelisted',\n      ...options,\n    });\n  }\n\n  /**\n   * Get all whitelisted addresses for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr}\n   * @returns {Promise<Address[]>} Whitelisted addresses\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWhitelist(options = {}) {\n    const { keyVaultAddr } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    log.debug('Getting whitelist for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.getWhitelist(keyVaultAddr),\n      methodName: 'get whitelist',\n      ...options,\n    });\n  }\n\n  /**\n   * Check whether a wallet-link nonce has already been consumed.\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientIsLinkNonceUsedOptions} options - {@code keyVaultAddr} and {@code nonce}\n   * @returns {Promise<boolean>} {@code true} if the nonce was already used\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isLinkNonceUsed(options = {}) {\n    const { keyVaultAddr, nonce } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireBytes32(nonce, 'nonce');\n    log.debug('Checking if link nonce is used', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.isLinkNonceUsed(keyVaultAddr, nonce),\n      methodName: 'check if link nonce is used',\n      ...options,\n    });\n  }\n\n  /**\n   * Read the EIP-712 domain separator advertised by the authenticator contract.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Bytes32>} 32-byte domain separator\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getDomainSeparator(options = {}) {\n    log.debug('PasswordOrWalletSignatureAuthenticator: getDomainSeparator', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.domainSeparator(),\n      methodName: 'get domain separator',\n      ...options,\n    });\n  }\n\n  /**\n   * Compute the params hash for wallet-link operations ({@code keccak256(abi.encode(newAddress, nonce, deadline))}).\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientComputeLinkParamsHashOptions} options - {@code addressToAdd}, {@code nonce}, {@code deadline}\n   * @returns {Promise<Bytes32>} Params hash used in link action context\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeLinkParamsHash(options = {}) {\n    const { addressToAdd, nonce, deadline } = options;\n    requireAddress(addressToAdd, 'addressToAdd');\n    requireBytes32(nonce, 'nonce');\n    requireNumber(deadline, 'deadline', { allowBigInt: true });\n    log.debug('Computing link params hash', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.computeLinkParamsHash(addressToAdd, nonce, deadline),\n      methodName: 'compute link params hash',\n      ...options,\n    });\n  }\n\n  /**\n   * Compute the action hash for {@code addToWhitelistWithProof} given link parameters.\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientComputeLinkActionHashOptions} options - {@code keyVaultAddr}, {@code addressToAdd}, {@code nonce}, {@code deadline}\n   * @returns {Promise<Bytes32>} Action hash to sign for the new wallet link\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeLinkActionHash(options = {}) {\n    const { keyVaultAddr, addressToAdd, nonce, deadline } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireAddress(addressToAdd, 'addressToAdd');\n    requireBytes32(nonce, 'nonce');\n    requireNumber(deadline, 'deadline', { allowBigInt: true });\n    log.debug('Computing link action hash', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.computeLinkActionHash(keyVaultAddr, addressToAdd, nonce, deadline),\n      methodName: 'compute link action hash',\n      ...options,\n    });\n  }\n\n  /**\n   * Verify a unified password-or-wallet-signature proof ({@code IAuthenticator.verify}).\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientVerifyOptions} options - {@code keyVaultAddr}, {@code action}, and ABI-encoded {@code authProof}\n   * @returns {Promise<boolean>} {@code true} if the proof is accepted for the given action\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authProof = abi.encode(uint8 method, bytes methodProof)} where {@code method} is\n   * {@code 1} (password) or {@code 2} (wallet signature).\n   */\n  async verify(options = {}) {\n    const { keyVaultAddr, authProof, action } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireNonEmptyObject(action, 'action');\n    log.debug('Verifying auth proof for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getReadContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeRead({\n      operation: () => auth.verify(keyVaultAddr, action, authProof),\n      methodName: 'verify auth proof',\n      ...options,\n    });\n  }\n\n  // ============================================================================\n  // Write Methods\n  // ============================================================================\n\n  /**\n   * Configure the authenticator with password hash and initial whitelist ({@code IAuthenticator.configure}).\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientConfigureOptions} options - {@code keyVaultAddr} and {@code authConfig}\n   * @returns {Promise<ConfigurePasswordOrWalletSignatureResult>} Standard write result with parsed {@code wallet} and {@code initialWhitelist}\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code authConfig} is not non-empty bytes\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * {@code authConfig = abi.encode(bytes32 passwordHash, address[] initialWhitelist)}.\n   */\n  async configure(options = {}) {\n    const { keyVaultAddr, authConfig } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authConfig, 'authConfig');\n    log.info('PasswordOrWalletSignatureAuthenticator: configure');\n    log.debug('Configuring password-or-wallet-signature authenticator for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getWriteContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeWrite({\n      operation: () => auth.configure(keyVaultAddr, authConfig),\n      methodName: 'configure password-or-wallet-signature authenticator',\n      parseEvents: [{\n        eventDef: PasswordOrWalletSignatureAuthenticatorEvents.WalletConfigured,\n        contract: auth,\n      }],\n      extraData: { authenticatorAddress: this._contractAddress },\n      ...options,\n    });\n  }\n\n  /**\n   * Replace the stored password hash. Caller must supply a valid unified {@code authProof} (password or wallet signature).\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientChangePasswordOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newPasswordHash}\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet}\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code newPasswordHash} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code PasswordChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   * \n   * @remarks \n   * {@code authProof = abi.encode(uint8 method, bytes methodProof)} where {@code method} is\n   * {@code 1} (password) or {@code 2} (wallet signature). \n   * methodProof is 1} {@code abi.encode(bytes, bytes32)} for password \n   * or 2} {@code abi.encode(unit256, bytes)} for wallet signature.\n   */\n  async changePassword(options = {}) {\n    const { keyVaultAddr, authProof, newPasswordHash } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireBytes32(newPasswordHash, 'newPasswordHash');\n    log.info('PasswordOrWalletSignatureAuthenticator: changePassword');\n    log.debug('Changing password for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getWriteContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeWrite({\n      operation: () => auth.changePassword(keyVaultAddr, authProof, newPasswordHash),\n      methodName: 'change password',\n      parseEvents: [{\n        eventDef: PasswordOrWalletSignatureAuthenticatorEvents.PasswordChanged,\n        contract: auth,\n      }],\n      extraData: { authenticatorAddress: this._contractAddress },\n      ...options,\n    });\n  }\n\n  /**\n   * Add an address to the wallet's whitelist (authenticated by password or wallet signature).\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientAddToWhitelistOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code addressToAdd}\n   * @returns {Promise<AddToWhitelistResult>} Standard write result with parsed {@code added} and {@code wallet}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts\n   * @throws {EventNotFoundError} If the {@code AddressAdded} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   * \n   * @remarks \n   * {@code authProof = abi.encode(uint8 method, bytes methodProof)} where {@code method} is\n   * {@code 1} (password) or {@code 2} (wallet signature). \n   * methodProof is 1} {@code abi.encode(bytes, bytes32)} for password \n   * or 2} {@code abi.encode(unit256, bytes)} for wallet signature.\n   */\n  async addToWhitelist(options = {}) {\n    const { keyVaultAddr, authProof, addressToAdd } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(addressToAdd, 'addressToAdd');\n    log.info('PasswordOrWalletSignatureAuthenticator: addToWhitelist');\n    log.debug('Adding address to whitelist for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getWriteContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeWrite({\n      operation: () => auth.addToWhitelist(keyVaultAddr, authProof, addressToAdd),\n      methodName: 'add to whitelist',\n      parseEvents: [{\n        eventDef: PasswordOrWalletSignatureAuthenticatorEvents.AddressAdded,\n        contract: auth,\n      }],\n      extraData: { authenticatorAddress: this._contractAddress },\n      ...options,\n    });\n  }\n\n  /**\n   * Remove an address from the wallet's whitelist (authenticated by password or wallet signature).\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientRemoveFromWhitelistOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code addressToRemove}\n   * @returns {Promise<RemoveFromWhitelistResult>} Standard write result with parsed {@code removed} and {@code wallet}\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. last whitelisted address)\n   * @throws {EventNotFoundError} If the {@code AddressRemoved} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   * \n   * @remarks \n   * {@code authProof = abi.encode(uint8 method, bytes methodProof)} where {@code method} is\n   * {@code 1} (password) or {@code 2} (wallet signature). \n   * methodProof is 1} {@code abi.encode(bytes, bytes32)} for password \n   * or 2} {@code abi.encode(unit256, bytes)} for wallet signature.\n   * \n   */\n  async removeFromWhitelist(options = {}) {\n    const { keyVaultAddr, authProof, addressToRemove } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(addressToRemove, 'addressToRemove');\n    log.info('PasswordOrWalletSignatureAuthenticator: removeFromWhitelist');\n    log.debug('Removing address from whitelist for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getWriteContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeWrite({\n      operation: () => auth.removeFromWhitelist(keyVaultAddr, authProof, addressToRemove),\n      methodName: 'remove from whitelist',\n      parseEvents: [{\n        eventDef: PasswordOrWalletSignatureAuthenticatorEvents.AddressRemoved,\n        contract: auth,\n      }],\n      extraData: { authenticatorAddress: this._contractAddress },\n      ...options,\n    });\n  }\n\n  /**\n   * Add a new wallet to the whitelist using a link signature from the new wallet plus admin auth proof.\n   *\n   * @public\n   * @async\n   * @param {PasswordOrWalletSignatureClientAddToWhitelistWithProofOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code addressToAdd}, {@code nonce}, {@code deadline}, {@code newWalletSignature}\n   * @returns {Promise<AddToWhitelistWithProofResult>} Standard write result with parsed {@code wallet}, {@code linkedWallet}, and {@code nonce}\n   * @throws {ValidationError} If inputs are missing or invalid\n   * @throws {WriteRequiresSignerError} If no write signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. expired or invalid link signature)\n   * @throws {EventNotFoundError} If the {@code WalletLinkApproved} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   * \n   * @remarks \n   * {@code authProof = abi.encode(uint8 method, bytes methodProof)} where {@code method} is\n   * {@code 1} (password) or {@code 2} (wallet signature). \n   * {@code methodProof} is 1} {@code abi.encode(bytes, bytes32)} for password \n   * or 2} {@code abi.encode(unit256, bytes)} for wallet signature.\n   */\n  async addToWhitelistWithProof(options = {}) {\n    const { keyVaultAddr, authProof, addressToAdd, nonce, deadline, newWalletSignature } = options;\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    requireNonEmptyBytes(authProof, 'authProof');\n    requireAddress(addressToAdd, 'addressToAdd');\n    requireBytes32(nonce, 'nonce');\n    requireNumber(deadline, 'deadline', { allowBigInt: true });\n    requireNonEmptyBytes(newWalletSignature, 'newWalletSignature');\n    log.info('PasswordOrWalletSignatureAuthenticator: addToWhitelistWithProof');\n    log.debug('Adding address to whitelist with link proof for keyVault', sanitizer.forLog(options));\n\n    const auth = this.getWriteContract(getPasswordOrWalletSignatureAuthenticatorContract, this._contractAddress);\n\n    return this.executeWrite({\n      operation: () => auth.addToWhitelistWithProof(\n        keyVaultAddr,\n        authProof,\n        addressToAdd,\n        nonce,\n        deadline,\n        newWalletSignature,\n      ),\n      methodName: 'add to whitelist with proof',\n      parseEvents: [{\n        eventDef: PasswordOrWalletSignatureAuthenticatorEvents.WalletLinkApproved,\n        contract: auth,\n      }],\n      extraData: { authenticatorAddress: this._contractAddress },\n      ...options,\n    });\n  }\n}\n\nexport default PasswordOrWalletSignatureAuthenticatorClient;\n","/**\n * Authenticator registry exposed to the {@link Monstera} facade as {@code monstera.auth}.\n *\n * Eagerly instantiates one client per built-in authenticator type ({@code password},\n * {@code walletSignature}, {@code dualFactor}, {@code passwordMinuteSignature}) and exposes them as\n * named properties as well as via {@link AuthenticatorClient#getClient}. Add a new authenticator\n * by importing its client and assigning it on a new property in the constructor.\n *\n * @module clients/auth/AuthenticatorClient\n */\n\nimport ApiKeySessionAuthenticatorClient from './ApiKeySessionAuthenticatorClient.js';\nimport PasswordAuthenticatorClient from './PasswordAuthenticatorClient.js';\nimport WalletSignatureAuthenticatorClient from './WalletSignatureAuthenticatorClient.js';\nimport DualFactorAuthenticatorClient from './DualFactorAuthenticatorClient.js';\nimport PasswordMinuteSignatureAuthenticatorClient from './PasswordMinuteSignatureAuthenticatorClient.js';\nimport MultiAuthenticatorClient from './MultiAuthenticatorClient.js';\nimport PasswordOrWalletSignatureAuthenticatorClient from './PasswordOrWalletSignatureAuthenticatorClient.js';\nimport { ValidationError } from '../../errors/index.js';\nimport log from '../../internal/logger.js';\nimport { requireString } from '../../internal/validation/assert.js';\n\n/**\n * @public\n */\nclass AuthenticatorClient {\n  /**\n   * Wire one client per built-in authenticator type.\n   *\n   * @public\n   * @param {EthersProvider} readProvider - Read provider shared with each child client\n   * @param {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped write signer ({@code null} for read-only)\n   * @param {NetworkConfig} config - Resolved network config (must include all authenticator addresses)\n   */\n  constructor(readProvider, writeSigner, config) {\n    this.readProvider = readProvider;\n    this.writeSigner = writeSigner;\n    this.config = config;\n\n    this.apiKeySession = new ApiKeySessionAuthenticatorClient(readProvider, writeSigner, config);\n    this.walletSignature = new WalletSignatureAuthenticatorClient(readProvider, writeSigner, config);\n    this.password = new PasswordAuthenticatorClient(readProvider, writeSigner, config);\n    this.dualFactor = new DualFactorAuthenticatorClient(readProvider, writeSigner, config);\n    this.passwordMinuteSignature = new PasswordMinuteSignatureAuthenticatorClient(readProvider, writeSigner, config);\n    this.multi = new MultiAuthenticatorClient(readProvider, writeSigner, config);\n    this.passwordOrWalletSignature = new PasswordOrWalletSignatureAuthenticatorClient(readProvider, writeSigner, config);\n  }\n\n  /**\n   * Resolve a registered authenticator client by string key.\n   *\n   * @public\n   * @param {string} type - Authenticator type ({@code 'walletSignature'}, {@code 'password'}, {@code 'dualFactor'}, {@code 'passwordMinuteSignature'}), etc.\n   * @returns {AuthenticatorClientInstance} The matching client instance\n   * @throws {ValidationError} If {@code type} is missing, not a string, or not a registered authenticator type\n   */\n  getClient(type) {\n    requireString(type, 'type');\n    log.debug('AuthenticatorClient: getClient', { type });\n    const available = this.getAvailableTypes();\n    if (!available.includes(type)) {\n      throw new ValidationError(\n        `Authenticator client type '${type}' not found. Available types: ${available.join(', ')}`,\n        'type',\n        type\n      );\n    }\n    return this[type];\n  }\n\n  /**\n   * List the registered authenticator type names.\n   *\n   * @public\n   * @returns {string[]} Names suitable for {@link AuthenticatorClient#getClient}\n   * @remarks Filters out the constructor-stored {@code readProvider}, {@code writeSigner}, {@code config} keys.\n   */\n  getAvailableTypes() {\n    return Object.keys(this).filter(key => !['readProvider', 'writeSigner', 'config'].includes(key));\n  }\n}\n\nexport default AuthenticatorClient;\n","const typeofs = [\n  'string',\n  'number',\n  'bigint',\n  'symbol'\n];\nconst objectTypeNames = [\n  'Function',\n  'Generator',\n  'AsyncGenerator',\n  'GeneratorFunction',\n  'AsyncGeneratorFunction',\n  'AsyncFunction',\n  'Observable',\n  'Array',\n  'Buffer',\n  'Object',\n  'RegExp',\n  'Date',\n  'Error',\n  'Map',\n  'Set',\n  'WeakMap',\n  'WeakSet',\n  'ArrayBuffer',\n  'SharedArrayBuffer',\n  'DataView',\n  'Promise',\n  'URL',\n  'HTMLElement',\n  'Int8Array',\n  'Uint8Array',\n  'Uint8ClampedArray',\n  'Int16Array',\n  'Uint16Array',\n  'Int32Array',\n  'Uint32Array',\n  'Float32Array',\n  'Float64Array',\n  'BigInt64Array',\n  'BigUint64Array'\n];\nexport function is(value) {\n  if (value === null) {\n    return 'null';\n  }\n  if (value === undefined) {\n    return 'undefined';\n  }\n  if (value === true || value === false) {\n    return 'boolean';\n  }\n  const typeOf = typeof value;\n  if (typeofs.includes(typeOf)) {\n    return typeOf;\n  }\n  if (typeOf === 'function') {\n    return 'Function';\n  }\n  if (Array.isArray(value)) {\n    return 'Array';\n  }\n  if (isBuffer(value)) {\n    return 'Buffer';\n  }\n  const objectType = getObjectType(value);\n  if (objectType) {\n    return objectType;\n  }\n  return 'Object';\n}\nfunction isBuffer(value) {\n  return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value);\n}\nfunction getObjectType(value) {\n  const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n  if (objectTypeNames.includes(objectTypeName)) {\n    return objectTypeName;\n  }\n  return undefined;\n}","class Type {\n  constructor(major, name, terminal) {\n    this.major = major;\n    this.majorEncoded = major << 5;\n    this.name = name;\n    this.terminal = terminal;\n  }\n  toString() {\n    return `Type[${ this.major }].${ this.name }`;\n  }\n  compare(typ) {\n    return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0;\n  }\n}\nType.uint = new Type(0, 'uint', true);\nType.negint = new Type(1, 'negint', true);\nType.bytes = new Type(2, 'bytes', true);\nType.string = new Type(3, 'string', true);\nType.array = new Type(4, 'array', false);\nType.map = new Type(5, 'map', false);\nType.tag = new Type(6, 'tag', false);\nType.float = new Type(7, 'float', true);\nType.false = new Type(7, 'false', true);\nType.true = new Type(7, 'true', true);\nType.null = new Type(7, 'null', true);\nType.undefined = new Type(7, 'undefined', true);\nType.break = new Type(7, 'break', true);\nclass Token {\n  constructor(type, value, encodedLength) {\n    this.type = type;\n    this.value = value;\n    this.encodedLength = encodedLength;\n    this.encodedBytes = undefined;\n    this.byteValue = undefined;\n  }\n  toString() {\n    return `Token[${ this.type }].${ this.value }`;\n  }\n}\nexport {\n  Type,\n  Token\n};","export const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === 'function';\nconst textDecoder = new TextDecoder();\nconst textEncoder = new TextEncoder();\nfunction isBuffer(buf) {\n  return useBuffer && globalThis.Buffer.isBuffer(buf);\n}\nexport function asU8A(buf) {\n  if (!(buf instanceof Uint8Array)) {\n    return Uint8Array.from(buf);\n  }\n  return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf;\n}\nexport const toString = useBuffer ? (bytes, start, end) => {\n  return end - start > 64 ? globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8') : utf8Slice(bytes, start, end);\n} : (bytes, start, end) => {\n  return end - start > 64 ? textDecoder.decode(bytes.subarray(start, end)) : utf8Slice(bytes, start, end);\n};\nexport const fromString = useBuffer ? string => {\n  return string.length > 64 ? globalThis.Buffer.from(string) : utf8ToBytes(string);\n} : string => {\n  return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string);\n};\nexport const fromArray = arr => {\n  return Uint8Array.from(arr);\n};\nexport const slice = useBuffer ? (bytes, start, end) => {\n  if (isBuffer(bytes)) {\n    return new Uint8Array(bytes.subarray(start, end));\n  }\n  return bytes.slice(start, end);\n} : (bytes, start, end) => {\n  return bytes.slice(start, end);\n};\nexport const concat = useBuffer ? (chunks, length) => {\n  chunks = chunks.map(c => c instanceof Uint8Array ? c : globalThis.Buffer.from(c));\n  return asU8A(globalThis.Buffer.concat(chunks, length));\n} : (chunks, length) => {\n  const out = new Uint8Array(length);\n  let off = 0;\n  for (let b of chunks) {\n    if (off + b.length > out.length) {\n      b = b.subarray(0, out.length - off);\n    }\n    out.set(b, off);\n    off += b.length;\n  }\n  return out;\n};\nexport const alloc = useBuffer ? size => {\n  return globalThis.Buffer.allocUnsafe(size);\n} : size => {\n  return new Uint8Array(size);\n};\nexport const toHex = useBuffer ? d => {\n  if (typeof d === 'string') {\n    return d;\n  }\n  return globalThis.Buffer.from(toBytes(d)).toString('hex');\n} : d => {\n  if (typeof d === 'string') {\n    return d;\n  }\n  return Array.prototype.reduce.call(toBytes(d), (p, c) => `${ p }${ c.toString(16).padStart(2, '0') }`, '');\n};\nexport const fromHex = useBuffer ? hex => {\n  if (hex instanceof Uint8Array) {\n    return hex;\n  }\n  return globalThis.Buffer.from(hex, 'hex');\n} : hex => {\n  if (hex instanceof Uint8Array) {\n    return hex;\n  }\n  if (!hex.length) {\n    return new Uint8Array(0);\n  }\n  return new Uint8Array(hex.split('').map((c, i, d) => i % 2 === 0 ? `0x${ c }${ d[i + 1] }` : '').filter(Boolean).map(e => parseInt(e, 16)));\n};\nfunction toBytes(obj) {\n  if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n    return obj;\n  }\n  if (obj instanceof ArrayBuffer) {\n    return new Uint8Array(obj);\n  }\n  if (ArrayBuffer.isView(obj)) {\n    return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n}\nexport function compare(b1, b2) {\n  if (isBuffer(b1) && isBuffer(b2)) {\n    return b1.compare(b2);\n  }\n  for (let i = 0; i < b1.length; i++) {\n    if (b1[i] === b2[i]) {\n      continue;\n    }\n    return b1[i] < b2[i] ? -1 : 1;\n  }\n  return 0;\n}\nfunction utf8ToBytes(string, units = Infinity) {\n  let codePoint;\n  const length = string.length;\n  let leadSurrogate = null;\n  const bytes = [];\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i);\n    if (codePoint > 55295 && codePoint < 57344) {\n      if (!leadSurrogate) {\n        if (codePoint > 56319) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        } else if (i + 1 === length) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        }\n        leadSurrogate = codePoint;\n        continue;\n      }\n      if (codePoint < 56320) {\n        if ((units -= 3) > -1)\n          bytes.push(239, 191, 189);\n        leadSurrogate = codePoint;\n        continue;\n      }\n      codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n    } else if (leadSurrogate) {\n      if ((units -= 3) > -1)\n        bytes.push(239, 191, 189);\n    }\n    leadSurrogate = null;\n    if (codePoint < 128) {\n      if ((units -= 1) < 0)\n        break;\n      bytes.push(codePoint);\n    } else if (codePoint < 2048) {\n      if ((units -= 2) < 0)\n        break;\n      bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n    } else if (codePoint < 65536) {\n      if ((units -= 3) < 0)\n        break;\n      bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else if (codePoint < 1114112) {\n      if ((units -= 4) < 0)\n        break;\n      bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else {\n      throw new Error('Invalid code point');\n    }\n  }\n  return bytes;\n}\nfunction utf8Slice(buf, offset, end) {\n  const res = [];\n  while (offset < end) {\n    const firstByte = buf[offset];\n    let codePoint = null;\n    let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n    if (offset + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint;\n      switch (bytesPerSequence) {\n      case 1:\n        if (firstByte < 128) {\n          codePoint = firstByte;\n        }\n        break;\n      case 2:\n        secondByte = buf[offset + 1];\n        if ((secondByte & 192) === 128) {\n          tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n          if (tempCodePoint > 127) {\n            codePoint = tempCodePoint;\n          }\n        }\n        break;\n      case 3:\n        secondByte = buf[offset + 1];\n        thirdByte = buf[offset + 2];\n        if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n          tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n          if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n            codePoint = tempCodePoint;\n          }\n        }\n        break;\n      case 4:\n        secondByte = buf[offset + 1];\n        thirdByte = buf[offset + 2];\n        fourthByte = buf[offset + 3];\n        if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n          tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n          if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n            codePoint = tempCodePoint;\n          }\n        }\n      }\n    }\n    if (codePoint === null) {\n      codePoint = 65533;\n      bytesPerSequence = 1;\n    } else if (codePoint > 65535) {\n      codePoint -= 65536;\n      res.push(codePoint >>> 10 & 1023 | 55296);\n      codePoint = 56320 | codePoint & 1023;\n    }\n    res.push(codePoint);\n    offset += bytesPerSequence;\n  }\n  return decodeCodePointsArray(res);\n}\nconst MAX_ARGUMENTS_LENGTH = 4096;\nexport function decodeCodePointsArray(codePoints) {\n  const len = codePoints.length;\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints);\n  }\n  let res = '';\n  let i = 0;\n  while (i < len) {\n    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n  }\n  return res;\n}","import {\n  alloc,\n  concat,\n  slice\n} from './byte-utils.js';\nconst defaultChunkSize = 256;\nexport class Bl {\n  constructor(chunkSize = defaultChunkSize) {\n    this.chunkSize = chunkSize;\n    this.cursor = 0;\n    this.maxCursor = -1;\n    this.chunks = [];\n    this._initReuseChunk = null;\n  }\n  reset() {\n    this.cursor = 0;\n    this.maxCursor = -1;\n    if (this.chunks.length) {\n      this.chunks = [];\n    }\n    if (this._initReuseChunk !== null) {\n      this.chunks.push(this._initReuseChunk);\n      this.maxCursor = this._initReuseChunk.length - 1;\n    }\n  }\n  push(bytes) {\n    let topChunk = this.chunks[this.chunks.length - 1];\n    const newMax = this.cursor + bytes.length;\n    if (newMax <= this.maxCursor + 1) {\n      const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n      topChunk.set(bytes, chunkPos);\n    } else {\n      if (topChunk) {\n        const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n        if (chunkPos < topChunk.length) {\n          this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos);\n          this.maxCursor = this.cursor - 1;\n        }\n      }\n      if (bytes.length < 64 && bytes.length < this.chunkSize) {\n        topChunk = alloc(this.chunkSize);\n        this.chunks.push(topChunk);\n        this.maxCursor += topChunk.length;\n        if (this._initReuseChunk === null) {\n          this._initReuseChunk = topChunk;\n        }\n        topChunk.set(bytes, 0);\n      } else {\n        this.chunks.push(bytes);\n        this.maxCursor += bytes.length;\n      }\n    }\n    this.cursor += bytes.length;\n  }\n  toBytes(reset = false) {\n    let byts;\n    if (this.chunks.length === 1) {\n      const chunk = this.chunks[0];\n      if (reset && this.cursor > chunk.length / 2) {\n        byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor);\n        this._initReuseChunk = null;\n        this.chunks = [];\n      } else {\n        byts = slice(chunk, 0, this.cursor);\n      }\n    } else {\n      byts = concat(this.chunks, this.cursor);\n    }\n    if (reset) {\n      this.reset();\n    }\n    return byts;\n  }\n}","const decodeErrPrefix = 'CBOR decode error:';\nconst encodeErrPrefix = 'CBOR encode error:';\nconst uintMinorPrefixBytes = [];\nuintMinorPrefixBytes[23] = 1;\nuintMinorPrefixBytes[24] = 2;\nuintMinorPrefixBytes[25] = 3;\nuintMinorPrefixBytes[26] = 5;\nuintMinorPrefixBytes[27] = 9;\nfunction assertEnoughData(data, pos, need) {\n  if (data.length - pos < need) {\n    throw new Error(`${ decodeErrPrefix } not enough data for type`);\n  }\n}\nexport {\n  decodeErrPrefix,\n  encodeErrPrefix,\n  uintMinorPrefixBytes,\n  assertEnoughData\n};","import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  decodeErrPrefix,\n  assertEnoughData\n} from './common.js';\nexport const uintBoundaries = [\n  24,\n  256,\n  65536,\n  4294967296,\n  BigInt('18446744073709551616')\n];\nexport function readUint8(data, offset, options) {\n  assertEnoughData(data, offset, 1);\n  const value = data[offset];\n  if (options.strict === true && value < uintBoundaries[0]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint16(data, offset, options) {\n  assertEnoughData(data, offset, 2);\n  const value = data[offset] << 8 | data[offset + 1];\n  if (options.strict === true && value < uintBoundaries[1]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint32(data, offset, options) {\n  assertEnoughData(data, offset, 4);\n  const value = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n  if (options.strict === true && value < uintBoundaries[2]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  return value;\n}\nexport function readUint64(data, offset, options) {\n  assertEnoughData(data, offset, 8);\n  const hi = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n  const lo = data[offset + 4] * 16777216 + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7];\n  const value = (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  if (options.strict === true && value < uintBoundaries[3]) {\n    throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n  }\n  if (value <= Number.MAX_SAFE_INTEGER) {\n    return Number(value);\n  }\n  if (options.allowBigInt === true) {\n    return value;\n  }\n  throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n}\nexport function decodeUint8(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint8(data, pos + 1, options), 2);\n}\nexport function decodeUint16(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint16(data, pos + 1, options), 3);\n}\nexport function decodeUint32(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint32(data, pos + 1, options), 5);\n}\nexport function decodeUint64(data, pos, _minor, options) {\n  return new Token(Type.uint, readUint64(data, pos + 1, options), 9);\n}\nexport function encodeUint(buf, token) {\n  return encodeUintValue(buf, 0, token.value);\n}\nexport function encodeUintValue(buf, major, uint) {\n  if (uint < uintBoundaries[0]) {\n    const nuint = Number(uint);\n    buf.push([major | nuint]);\n  } else if (uint < uintBoundaries[1]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 24,\n      nuint\n    ]);\n  } else if (uint < uintBoundaries[2]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 25,\n      nuint >>> 8,\n      nuint & 255\n    ]);\n  } else if (uint < uintBoundaries[3]) {\n    const nuint = Number(uint);\n    buf.push([\n      major | 26,\n      nuint >>> 24 & 255,\n      nuint >>> 16 & 255,\n      nuint >>> 8 & 255,\n      nuint & 255\n    ]);\n  } else {\n    const buint = BigInt(uint);\n    if (buint < uintBoundaries[4]) {\n      const set = [\n        major | 27,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0,\n        0\n      ];\n      let lo = Number(buint & BigInt(4294967295));\n      let hi = Number(buint >> BigInt(32) & BigInt(4294967295));\n      set[8] = lo & 255;\n      lo = lo >> 8;\n      set[7] = lo & 255;\n      lo = lo >> 8;\n      set[6] = lo & 255;\n      lo = lo >> 8;\n      set[5] = lo & 255;\n      set[4] = hi & 255;\n      hi = hi >> 8;\n      set[3] = hi & 255;\n      hi = hi >> 8;\n      set[2] = hi & 255;\n      hi = hi >> 8;\n      set[1] = hi & 255;\n      buf.push(set);\n    } else {\n      throw new Error(`${ decodeErrPrefix } encountered BigInt larger than allowable range`);\n    }\n  }\n}\nencodeUint.encodedSize = function encodedSize(token) {\n  return encodeUintValue.encodedSize(token.value);\n};\nencodeUintValue.encodedSize = function encodedSize(uint) {\n  if (uint < uintBoundaries[0]) {\n    return 1;\n  }\n  if (uint < uintBoundaries[1]) {\n    return 2;\n  }\n  if (uint < uintBoundaries[2]) {\n    return 3;\n  }\n  if (uint < uintBoundaries[3]) {\n    return 5;\n  }\n  return 9;\n};\nencodeUint.compareTokens = function compareTokens(tok1, tok2) {\n  return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : 0;\n};","import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nexport function decodeNegint8(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeNegint16(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeNegint32(data, pos, _minor, options) {\n  return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5);\n}\nconst neg1b = BigInt(-1);\nconst pos1b = BigInt(1);\nexport function decodeNegint64(data, pos, _minor, options) {\n  const int = uint.readUint64(data, pos + 1, options);\n  if (typeof int !== 'bigint') {\n    const value = -1 - int;\n    if (value >= Number.MIN_SAFE_INTEGER) {\n      return new Token(Type.negint, value, 9);\n    }\n  }\n  if (options.allowBigInt !== true) {\n    throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n  }\n  return new Token(Type.negint, neg1b - BigInt(int), 9);\n}\nexport function encodeNegint(buf, token) {\n  const negint = token.value;\n  const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n  uint.encodeUintValue(buf, token.type.majorEncoded, unsigned);\n}\nencodeNegint.encodedSize = function encodedSize(token) {\n  const negint = token.value;\n  const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n  if (unsigned < uint.uintBoundaries[0]) {\n    return 1;\n  }\n  if (unsigned < uint.uintBoundaries[1]) {\n    return 2;\n  }\n  if (unsigned < uint.uintBoundaries[2]) {\n    return 3;\n  }\n  if (unsigned < uint.uintBoundaries[3]) {\n    return 5;\n  }\n  return 9;\n};\nencodeNegint.compareTokens = function compareTokens(tok1, tok2) {\n  return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : 0;\n};","import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  assertEnoughData,\n  decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport {\n  compare,\n  fromString,\n  slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length) {\n  assertEnoughData(data, pos, prefix + length);\n  const buf = slice(data, pos + prefix, pos + prefix + length);\n  return new Token(Type.bytes, buf, prefix + length);\n}\nexport function decodeBytesCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeBytes8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeBytes16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeBytes32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeBytes64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer bytes lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nfunction tokenBytes(token) {\n  if (token.encodedBytes === undefined) {\n    token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value;\n  }\n  return token.encodedBytes;\n}\nexport function encodeBytes(buf, token) {\n  const bytes = tokenBytes(token);\n  uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length);\n  buf.push(bytes);\n}\nencodeBytes.encodedSize = function encodedSize(token) {\n  const bytes = tokenBytes(token);\n  return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length;\n};\nencodeBytes.compareTokens = function compareTokens(tok1, tok2) {\n  return compareBytes(tokenBytes(tok1), tokenBytes(tok2));\n};\nexport function compareBytes(b1, b2) {\n  return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2);\n}","import {\n  Token,\n  Type\n} from './token.js';\nimport {\n  assertEnoughData,\n  decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport { encodeBytes } from './2bytes.js';\nimport {\n  toString,\n  slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length, options) {\n  const totLength = prefix + length;\n  assertEnoughData(data, pos, totLength);\n  const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength);\n  if (options.retainStringBytes === true) {\n    tok.byteValue = slice(data, pos + prefix, pos + totLength);\n  }\n  return tok;\n}\nexport function decodeStringCompact(data, pos, minor, options) {\n  return toToken(data, pos, 1, minor, options);\n}\nexport function decodeString8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options);\n}\nexport function decodeString16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options);\n}\nexport function decodeString32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options);\n}\nexport function decodeString64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer string lengths not supported`);\n  }\n  return toToken(data, pos, 9, l, options);\n}\nexport const encodeString = encodeBytes;","import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n  return new Token(Type.array, length, prefix);\n}\nexport function decodeArrayCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeArray8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeArray16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeArray32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeArray64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer array lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nexport function decodeArrayIndefinite(data, pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return toToken(data, pos, 1, Infinity);\n}\nexport function encodeArray(buf, token) {\n  uint.encodeUintValue(buf, Type.array.majorEncoded, token.value);\n}\nencodeArray.compareTokens = uint.encodeUint.compareTokens;\nencodeArray.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};","import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n  return new Token(Type.map, length, prefix);\n}\nexport function decodeMapCompact(data, pos, minor, _options) {\n  return toToken(data, pos, 1, minor);\n}\nexport function decodeMap8(data, pos, _minor, options) {\n  return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeMap16(data, pos, _minor, options) {\n  return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeMap32(data, pos, _minor, options) {\n  return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeMap64(data, pos, _minor, options) {\n  const l = uint.readUint64(data, pos + 1, options);\n  if (typeof l === 'bigint') {\n    throw new Error(`${ decodeErrPrefix } 64-bit integer map lengths not supported`);\n  }\n  return toToken(data, pos, 9, l);\n}\nexport function decodeMapIndefinite(data, pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return toToken(data, pos, 1, Infinity);\n}\nexport function encodeMap(buf, token) {\n  uint.encodeUintValue(buf, Type.map.majorEncoded, token.value);\n}\nencodeMap.compareTokens = uint.encodeUint.compareTokens;\nencodeMap.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};","import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nexport function decodeTagCompact(_data, _pos, minor, _options) {\n  return new Token(Type.tag, minor, 1);\n}\nexport function decodeTag8(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeTag16(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeTag32(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5);\n}\nexport function decodeTag64(data, pos, _minor, options) {\n  return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9);\n}\nexport function encodeTag(buf, token) {\n  uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value);\n}\nencodeTag.compareTokens = uint.encodeUint.compareTokens;\nencodeTag.encodedSize = function encodedSize(token) {\n  return uint.encodeUintValue.encodedSize(token.value);\n};","import {\n  Token,\n  Type\n} from './token.js';\nimport { decodeErrPrefix } from './common.js';\nimport { encodeUint } from './0uint.js';\nconst MINOR_FALSE = 20;\nconst MINOR_TRUE = 21;\nconst MINOR_NULL = 22;\nconst MINOR_UNDEFINED = 23;\nexport function decodeUndefined(_data, _pos, _minor, options) {\n  if (options.allowUndefined === false) {\n    throw new Error(`${ decodeErrPrefix } undefined values are not supported`);\n  } else if (options.coerceUndefinedToNull === true) {\n    return new Token(Type.null, null, 1);\n  }\n  return new Token(Type.undefined, undefined, 1);\n}\nexport function decodeBreak(_data, _pos, _minor, options) {\n  if (options.allowIndefinite === false) {\n    throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n  }\n  return new Token(Type.break, undefined, 1);\n}\nfunction createToken(value, bytes, options) {\n  if (options) {\n    if (options.allowNaN === false && Number.isNaN(value)) {\n      throw new Error(`${ decodeErrPrefix } NaN values are not supported`);\n    }\n    if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n      throw new Error(`${ decodeErrPrefix } Infinity values are not supported`);\n    }\n  }\n  return new Token(Type.float, value, bytes);\n}\nexport function decodeFloat16(data, pos, _minor, options) {\n  return createToken(readFloat16(data, pos + 1), 3, options);\n}\nexport function decodeFloat32(data, pos, _minor, options) {\n  return createToken(readFloat32(data, pos + 1), 5, options);\n}\nexport function decodeFloat64(data, pos, _minor, options) {\n  return createToken(readFloat64(data, pos + 1), 9, options);\n}\nexport function encodeFloat(buf, token, options) {\n  const float = token.value;\n  if (float === false) {\n    buf.push([Type.float.majorEncoded | MINOR_FALSE]);\n  } else if (float === true) {\n    buf.push([Type.float.majorEncoded | MINOR_TRUE]);\n  } else if (float === null) {\n    buf.push([Type.float.majorEncoded | MINOR_NULL]);\n  } else if (float === undefined) {\n    buf.push([Type.float.majorEncoded | MINOR_UNDEFINED]);\n  } else {\n    let decoded;\n    let success = false;\n    if (!options || options.float64 !== true) {\n      encodeFloat16(float);\n      decoded = readFloat16(ui8a, 1);\n      if (float === decoded || Number.isNaN(float)) {\n        ui8a[0] = 249;\n        buf.push(ui8a.slice(0, 3));\n        success = true;\n      } else {\n        encodeFloat32(float);\n        decoded = readFloat32(ui8a, 1);\n        if (float === decoded) {\n          ui8a[0] = 250;\n          buf.push(ui8a.slice(0, 5));\n          success = true;\n        }\n      }\n    }\n    if (!success) {\n      encodeFloat64(float);\n      decoded = readFloat64(ui8a, 1);\n      ui8a[0] = 251;\n      buf.push(ui8a.slice(0, 9));\n    }\n  }\n}\nencodeFloat.encodedSize = function encodedSize(token, options) {\n  const float = token.value;\n  if (float === false || float === true || float === null || float === undefined) {\n    return 1;\n  }\n  if (!options || options.float64 !== true) {\n    encodeFloat16(float);\n    let decoded = readFloat16(ui8a, 1);\n    if (float === decoded || Number.isNaN(float)) {\n      return 3;\n    }\n    encodeFloat32(float);\n    decoded = readFloat32(ui8a, 1);\n    if (float === decoded) {\n      return 5;\n    }\n  }\n  return 9;\n};\nconst buffer = new ArrayBuffer(9);\nconst dataView = new DataView(buffer, 1);\nconst ui8a = new Uint8Array(buffer, 0);\nfunction encodeFloat16(inp) {\n  if (inp === Infinity) {\n    dataView.setUint16(0, 31744, false);\n  } else if (inp === -Infinity) {\n    dataView.setUint16(0, 64512, false);\n  } else if (Number.isNaN(inp)) {\n    dataView.setUint16(0, 32256, false);\n  } else {\n    dataView.setFloat32(0, inp);\n    const valu32 = dataView.getUint32(0);\n    const exponent = (valu32 & 2139095040) >> 23;\n    const mantissa = valu32 & 8388607;\n    if (exponent === 255) {\n      dataView.setUint16(0, 31744, false);\n    } else if (exponent === 0) {\n      dataView.setUint16(0, (inp & 2147483648) >> 16 | mantissa >> 13, false);\n    } else {\n      const logicalExponent = exponent - 127;\n      if (logicalExponent < -24) {\n        dataView.setUint16(0, 0);\n      } else if (logicalExponent < -14) {\n        dataView.setUint16(0, (valu32 & 2147483648) >> 16 | 1 << 24 + logicalExponent, false);\n      } else {\n        dataView.setUint16(0, (valu32 & 2147483648) >> 16 | logicalExponent + 15 << 10 | mantissa >> 13, false);\n      }\n    }\n  }\n}\nfunction readFloat16(ui8a, pos) {\n  if (ui8a.length - pos < 2) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float16`);\n  }\n  const half = (ui8a[pos] << 8) + ui8a[pos + 1];\n  if (half === 31744) {\n    return Infinity;\n  }\n  if (half === 64512) {\n    return -Infinity;\n  }\n  if (half === 32256) {\n    return NaN;\n  }\n  const exp = half >> 10 & 31;\n  const mant = half & 1023;\n  let val;\n  if (exp === 0) {\n    val = mant * 2 ** -24;\n  } else if (exp !== 31) {\n    val = (mant + 1024) * 2 ** (exp - 25);\n  } else {\n    val = mant === 0 ? Infinity : NaN;\n  }\n  return half & 32768 ? -val : val;\n}\nfunction encodeFloat32(inp) {\n  dataView.setFloat32(0, inp, false);\n}\nfunction readFloat32(ui8a, pos) {\n  if (ui8a.length - pos < 4) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float32`);\n  }\n  const offset = (ui8a.byteOffset || 0) + pos;\n  return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false);\n}\nfunction encodeFloat64(inp) {\n  dataView.setFloat64(0, inp, false);\n}\nfunction readFloat64(ui8a, pos) {\n  if (ui8a.length - pos < 8) {\n    throw new Error(`${ decodeErrPrefix } not enough data for float64`);\n  }\n  const offset = (ui8a.byteOffset || 0) + pos;\n  return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false);\n}\nencodeFloat.compareTokens = encodeUint.compareTokens;","import {\n  Token,\n  Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport * as negint from './1negint.js';\nimport * as bytes from './2bytes.js';\nimport * as string from './3string.js';\nimport * as array from './4array.js';\nimport * as map from './5map.js';\nimport * as tag from './6tag.js';\nimport * as float from './7float.js';\nimport { decodeErrPrefix } from './common.js';\nimport { fromArray } from './byte-utils.js';\nfunction invalidMinor(data, pos, minor) {\n  throw new Error(`${ decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`);\n}\nfunction errorer(msg) {\n  return () => {\n    throw new Error(`${ decodeErrPrefix } ${ msg }`);\n  };\n}\nexport const jump = [];\nfor (let i = 0; i <= 23; i++) {\n  jump[i] = invalidMinor;\n}\njump[24] = uint.decodeUint8;\njump[25] = uint.decodeUint16;\njump[26] = uint.decodeUint32;\njump[27] = uint.decodeUint64;\njump[28] = invalidMinor;\njump[29] = invalidMinor;\njump[30] = invalidMinor;\njump[31] = invalidMinor;\nfor (let i = 32; i <= 55; i++) {\n  jump[i] = invalidMinor;\n}\njump[56] = negint.decodeNegint8;\njump[57] = negint.decodeNegint16;\njump[58] = negint.decodeNegint32;\njump[59] = negint.decodeNegint64;\njump[60] = invalidMinor;\njump[61] = invalidMinor;\njump[62] = invalidMinor;\njump[63] = invalidMinor;\nfor (let i = 64; i <= 87; i++) {\n  jump[i] = bytes.decodeBytesCompact;\n}\njump[88] = bytes.decodeBytes8;\njump[89] = bytes.decodeBytes16;\njump[90] = bytes.decodeBytes32;\njump[91] = bytes.decodeBytes64;\njump[92] = invalidMinor;\njump[93] = invalidMinor;\njump[94] = invalidMinor;\njump[95] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 96; i <= 119; i++) {\n  jump[i] = string.decodeStringCompact;\n}\njump[120] = string.decodeString8;\njump[121] = string.decodeString16;\njump[122] = string.decodeString32;\njump[123] = string.decodeString64;\njump[124] = invalidMinor;\njump[125] = invalidMinor;\njump[126] = invalidMinor;\njump[127] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 128; i <= 151; i++) {\n  jump[i] = array.decodeArrayCompact;\n}\njump[152] = array.decodeArray8;\njump[153] = array.decodeArray16;\njump[154] = array.decodeArray32;\njump[155] = array.decodeArray64;\njump[156] = invalidMinor;\njump[157] = invalidMinor;\njump[158] = invalidMinor;\njump[159] = array.decodeArrayIndefinite;\nfor (let i = 160; i <= 183; i++) {\n  jump[i] = map.decodeMapCompact;\n}\njump[184] = map.decodeMap8;\njump[185] = map.decodeMap16;\njump[186] = map.decodeMap32;\njump[187] = map.decodeMap64;\njump[188] = invalidMinor;\njump[189] = invalidMinor;\njump[190] = invalidMinor;\njump[191] = map.decodeMapIndefinite;\nfor (let i = 192; i <= 215; i++) {\n  jump[i] = tag.decodeTagCompact;\n}\njump[216] = tag.decodeTag8;\njump[217] = tag.decodeTag16;\njump[218] = tag.decodeTag32;\njump[219] = tag.decodeTag64;\njump[220] = invalidMinor;\njump[221] = invalidMinor;\njump[222] = invalidMinor;\njump[223] = invalidMinor;\nfor (let i = 224; i <= 243; i++) {\n  jump[i] = errorer('simple values are not supported');\n}\njump[244] = invalidMinor;\njump[245] = invalidMinor;\njump[246] = invalidMinor;\njump[247] = float.decodeUndefined;\njump[248] = errorer('simple values are not supported');\njump[249] = float.decodeFloat16;\njump[250] = float.decodeFloat32;\njump[251] = float.decodeFloat64;\njump[252] = invalidMinor;\njump[253] = invalidMinor;\njump[254] = invalidMinor;\njump[255] = float.decodeBreak;\nexport const quick = [];\nfor (let i = 0; i < 24; i++) {\n  quick[i] = new Token(Type.uint, i, 1);\n}\nfor (let i = -1; i >= -24; i--) {\n  quick[31 - i] = new Token(Type.negint, i, 1);\n}\nquick[64] = new Token(Type.bytes, new Uint8Array(0), 1);\nquick[96] = new Token(Type.string, '', 1);\nquick[128] = new Token(Type.array, 0, 1);\nquick[160] = new Token(Type.map, 0, 1);\nquick[244] = new Token(Type.false, false, 1);\nquick[245] = new Token(Type.true, true, 1);\nquick[246] = new Token(Type.null, null, 1);\nexport function quickEncodeToken(token) {\n  switch (token.type) {\n  case Type.false:\n    return fromArray([244]);\n  case Type.true:\n    return fromArray([245]);\n  case Type.null:\n    return fromArray([246]);\n  case Type.bytes:\n    if (!token.value.length) {\n      return fromArray([64]);\n    }\n    return;\n  case Type.string:\n    if (token.value === '') {\n      return fromArray([96]);\n    }\n    return;\n  case Type.array:\n    if (token.value === 0) {\n      return fromArray([128]);\n    }\n    return;\n  case Type.map:\n    if (token.value === 0) {\n      return fromArray([160]);\n    }\n    return;\n  case Type.uint:\n    if (token.value < 24) {\n      return fromArray([Number(token.value)]);\n    }\n    return;\n  case Type.negint:\n    if (token.value >= -24) {\n      return fromArray([31 - Number(token.value)]);\n    }\n  }\n}","import { is } from './is.js';\nimport {\n  Token,\n  Type\n} from './token.js';\nimport { Bl } from './bl.js';\nimport { encodeErrPrefix } from './common.js';\nimport { quickEncodeToken } from './jump.js';\nimport { asU8A } from './byte-utils.js';\nimport { encodeUint } from './0uint.js';\nimport { encodeNegint } from './1negint.js';\nimport { encodeBytes } from './2bytes.js';\nimport { encodeString } from './3string.js';\nimport { encodeArray } from './4array.js';\nimport { encodeMap } from './5map.js';\nimport { encodeTag } from './6tag.js';\nimport { encodeFloat } from './7float.js';\nconst defaultEncodeOptions = {\n  float64: false,\n  mapSorter,\n  quickEncodeToken\n};\nexport function makeCborEncoders() {\n  const encoders = [];\n  encoders[Type.uint.major] = encodeUint;\n  encoders[Type.negint.major] = encodeNegint;\n  encoders[Type.bytes.major] = encodeBytes;\n  encoders[Type.string.major] = encodeString;\n  encoders[Type.array.major] = encodeArray;\n  encoders[Type.map.major] = encodeMap;\n  encoders[Type.tag.major] = encodeTag;\n  encoders[Type.float.major] = encodeFloat;\n  return encoders;\n}\nconst cborEncoders = makeCborEncoders();\nconst buf = new Bl();\nclass Ref {\n  constructor(obj, parent) {\n    this.obj = obj;\n    this.parent = parent;\n  }\n  includes(obj) {\n    let p = this;\n    do {\n      if (p.obj === obj) {\n        return true;\n      }\n    } while (p = p.parent);\n    return false;\n  }\n  static createCheck(stack, obj) {\n    if (stack && stack.includes(obj)) {\n      throw new Error(`${ encodeErrPrefix } object contains circular references`);\n    }\n    return new Ref(obj, stack);\n  }\n}\nconst simpleTokens = {\n  null: new Token(Type.null, null),\n  undefined: new Token(Type.undefined, undefined),\n  true: new Token(Type.true, true),\n  false: new Token(Type.false, false),\n  emptyArray: new Token(Type.array, 0),\n  emptyMap: new Token(Type.map, 0)\n};\nconst typeEncoders = {\n  number(obj, _typ, _options, _refStack) {\n    if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n      return new Token(Type.float, obj);\n    } else if (obj >= 0) {\n      return new Token(Type.uint, obj);\n    } else {\n      return new Token(Type.negint, obj);\n    }\n  },\n  bigint(obj, _typ, _options, _refStack) {\n    if (obj >= BigInt(0)) {\n      return new Token(Type.uint, obj);\n    } else {\n      return new Token(Type.negint, obj);\n    }\n  },\n  Uint8Array(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, obj);\n  },\n  string(obj, _typ, _options, _refStack) {\n    return new Token(Type.string, obj);\n  },\n  boolean(obj, _typ, _options, _refStack) {\n    return obj ? simpleTokens.true : simpleTokens.false;\n  },\n  null(_obj, _typ, _options, _refStack) {\n    return simpleTokens.null;\n  },\n  undefined(_obj, _typ, _options, _refStack) {\n    return simpleTokens.undefined;\n  },\n  ArrayBuffer(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, new Uint8Array(obj));\n  },\n  DataView(obj, _typ, _options, _refStack) {\n    return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength));\n  },\n  Array(obj, _typ, options, refStack) {\n    if (!obj.length) {\n      if (options.addBreakTokens === true) {\n        return [\n          simpleTokens.emptyArray,\n          new Token(Type.break)\n        ];\n      }\n      return simpleTokens.emptyArray;\n    }\n    refStack = Ref.createCheck(refStack, obj);\n    const entries = [];\n    let i = 0;\n    for (const e of obj) {\n      entries[i++] = objectToTokens(e, options, refStack);\n    }\n    if (options.addBreakTokens) {\n      return [\n        new Token(Type.array, obj.length),\n        entries,\n        new Token(Type.break)\n      ];\n    }\n    return [\n      new Token(Type.array, obj.length),\n      entries\n    ];\n  },\n  Object(obj, typ, options, refStack) {\n    const isMap = typ !== 'Object';\n    const keys = isMap ? obj.keys() : Object.keys(obj);\n    const length = isMap ? obj.size : keys.length;\n    if (!length) {\n      if (options.addBreakTokens === true) {\n        return [\n          simpleTokens.emptyMap,\n          new Token(Type.break)\n        ];\n      }\n      return simpleTokens.emptyMap;\n    }\n    refStack = Ref.createCheck(refStack, obj);\n    const entries = [];\n    let i = 0;\n    for (const key of keys) {\n      entries[i++] = [\n        objectToTokens(key, options, refStack),\n        objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n      ];\n    }\n    sortMapEntries(entries, options);\n    if (options.addBreakTokens) {\n      return [\n        new Token(Type.map, length),\n        entries,\n        new Token(Type.break)\n      ];\n    }\n    return [\n      new Token(Type.map, length),\n      entries\n    ];\n  }\n};\ntypeEncoders.Map = typeEncoders.Object;\ntypeEncoders.Buffer = typeEncoders.Uint8Array;\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n  typeEncoders[`${ typ }Array`] = typeEncoders.DataView;\n}\nfunction objectToTokens(obj, options = {}, refStack) {\n  const typ = is(obj);\n  const customTypeEncoder = options && options.typeEncoders && options.typeEncoders[typ] || typeEncoders[typ];\n  if (typeof customTypeEncoder === 'function') {\n    const tokens = customTypeEncoder(obj, typ, options, refStack);\n    if (tokens != null) {\n      return tokens;\n    }\n  }\n  const typeEncoder = typeEncoders[typ];\n  if (!typeEncoder) {\n    throw new Error(`${ encodeErrPrefix } unsupported type: ${ typ }`);\n  }\n  return typeEncoder(obj, typ, options, refStack);\n}\nfunction sortMapEntries(entries, options) {\n  if (options.mapSorter) {\n    entries.sort(options.mapSorter);\n  }\n}\nfunction mapSorter(e1, e2) {\n  const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];\n  const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];\n  if (keyToken1.type !== keyToken2.type) {\n    return keyToken1.type.compare(keyToken2.type);\n  }\n  const major = keyToken1.type.major;\n  const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);\n  if (tcmp === 0) {\n    console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone');\n  }\n  return tcmp;\n}\nfunction tokensToEncoded(buf, tokens, encoders, options) {\n  if (Array.isArray(tokens)) {\n    for (const token of tokens) {\n      tokensToEncoded(buf, token, encoders, options);\n    }\n  } else {\n    encoders[tokens.type.major](buf, tokens, options);\n  }\n}\nfunction encodeCustom(data, encoders, options) {\n  const tokens = objectToTokens(data, options);\n  if (!Array.isArray(tokens) && options.quickEncodeToken) {\n    const quickBytes = options.quickEncodeToken(tokens);\n    if (quickBytes) {\n      return quickBytes;\n    }\n    const encoder = encoders[tokens.type.major];\n    if (encoder.encodedSize) {\n      const size = encoder.encodedSize(tokens, options);\n      const buf = new Bl(size);\n      encoder(buf, tokens, options);\n      if (buf.chunks.length !== 1) {\n        throw new Error(`Unexpected error: pre-calculated length for ${ tokens } was wrong`);\n      }\n      return asU8A(buf.chunks[0]);\n    }\n  }\n  buf.reset();\n  tokensToEncoded(buf, tokens, encoders, options);\n  return buf.toBytes(true);\n}\nfunction encode(data, options) {\n  options = Object.assign({}, defaultEncodeOptions, options);\n  return encodeCustom(data, cborEncoders, options);\n}\nexport {\n  objectToTokens,\n  encode,\n  encodeCustom,\n  Ref\n};","import { decodeErrPrefix } from './common.js';\nimport { Type } from './token.js';\nimport {\n  jump,\n  quick\n} from './jump.js';\nconst defaultDecodeOptions = {\n  strict: false,\n  allowIndefinite: true,\n  allowUndefined: true,\n  allowBigInt: true\n};\nclass Tokeniser {\n  constructor(data, options = {}) {\n    this.pos = 0;\n    this.data = data;\n    this.options = options;\n  }\n  done() {\n    return this.pos >= this.data.length;\n  }\n  next() {\n    const byt = this.data[this.pos];\n    let token = quick[byt];\n    if (token === undefined) {\n      const decoder = jump[byt];\n      if (!decoder) {\n        throw new Error(`${ decodeErrPrefix } no decoder for major type ${ byt >>> 5 } (byte 0x${ byt.toString(16).padStart(2, '0') })`);\n      }\n      const minor = byt & 31;\n      token = decoder(this.data, this.pos, minor, this.options);\n    }\n    this.pos += token.encodedLength;\n    return token;\n  }\n}\nconst DONE = Symbol.for('DONE');\nconst BREAK = Symbol.for('BREAK');\nfunction tokenToArray(token, tokeniser, options) {\n  const arr = [];\n  for (let i = 0; i < token.value; i++) {\n    const value = tokensToObject(tokeniser, options);\n    if (value === BREAK) {\n      if (token.value === Infinity) {\n        break;\n      }\n      throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed array`);\n    }\n    if (value === DONE) {\n      throw new Error(`${ decodeErrPrefix } found array but not enough entries (got ${ i }, expected ${ token.value })`);\n    }\n    arr[i] = value;\n  }\n  return arr;\n}\nfunction tokenToMap(token, tokeniser, options) {\n  const useMaps = options.useMaps === true;\n  const obj = useMaps ? undefined : {};\n  const m = useMaps ? new Map() : undefined;\n  for (let i = 0; i < token.value; i++) {\n    const key = tokensToObject(tokeniser, options);\n    if (key === BREAK) {\n      if (token.value === Infinity) {\n        break;\n      }\n      throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed map`);\n    }\n    if (key === DONE) {\n      throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no key], expected ${ token.value })`);\n    }\n    if (useMaps !== true && typeof key !== 'string') {\n      throw new Error(`${ decodeErrPrefix } non-string keys not supported (got ${ typeof key })`);\n    }\n    if (options.rejectDuplicateMapKeys === true) {\n      if (useMaps && m.has(key) || !useMaps && key in obj) {\n        throw new Error(`${ decodeErrPrefix } found repeat map key \"${ key }\"`);\n      }\n    }\n    const value = tokensToObject(tokeniser, options);\n    if (value === DONE) {\n      throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no value], expected ${ token.value })`);\n    }\n    if (useMaps) {\n      m.set(key, value);\n    } else {\n      obj[key] = value;\n    }\n  }\n  return useMaps ? m : obj;\n}\nfunction tokensToObject(tokeniser, options) {\n  if (tokeniser.done()) {\n    return DONE;\n  }\n  const token = tokeniser.next();\n  if (token.type === Type.break) {\n    return BREAK;\n  }\n  if (token.type.terminal) {\n    return token.value;\n  }\n  if (token.type === Type.array) {\n    return tokenToArray(token, tokeniser, options);\n  }\n  if (token.type === Type.map) {\n    return tokenToMap(token, tokeniser, options);\n  }\n  if (token.type === Type.tag) {\n    if (options.tags && typeof options.tags[token.value] === 'function') {\n      const tagged = tokensToObject(tokeniser, options);\n      return options.tags[token.value](tagged);\n    }\n    throw new Error(`${ decodeErrPrefix } tag not supported (${ token.value })`);\n  }\n  throw new Error('unsupported');\n}\nfunction decode(data, options) {\n  if (!(data instanceof Uint8Array)) {\n    throw new Error(`${ decodeErrPrefix } data to decode must be a Uint8Array`);\n  }\n  options = Object.assign({}, defaultDecodeOptions, options);\n  const tokeniser = options.tokenizer || new Tokeniser(data, options);\n  const decoded = tokensToObject(tokeniser, options);\n  if (decoded === DONE) {\n    throw new Error(`${ decodeErrPrefix } did not find any content to decode`);\n  }\n  if (decoded === BREAK) {\n    throw new Error(`${ decodeErrPrefix } got unexpected break`);\n  }\n  if (!tokeniser.done()) {\n    throw new Error(`${ decodeErrPrefix } too many terminals, data makes no sense`);\n  }\n  return decoded;\n}\nexport {\n  Tokeniser,\n  tokensToObject,\n  decode\n};","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\n\n// src/deoxysii.ts\nvar deoxysii_exports = {};\n__export(deoxysii_exports, {\n  AEAD: () => AEAD,\n  ErrKeySize: () => ErrKeySize,\n  ErrNonceSize: () => ErrNonceSize,\n  ErrOpen: () => ErrOpen,\n  KeySize: () => KeySize,\n  NonceSize: () => NonceSize,\n  TagSize: () => TagSize\n});\n\n// src/uint32.ts\nfunction uint32_fromBytesBigEndian(highByte, secondHighByte, thirdHighByte, lowByte) {\n  return (highByte << 24 | secondHighByte << 16 | thirdHighByte << 8 | lowByte) >>> 0;\n}\nfunction uint32_or(uint32val0, ...argv) {\n  let result = uint32val0;\n  for (const x of argv) {\n    result = result | x;\n  }\n  return result >>> 0;\n}\nfunction uint32_and(uint32val0, ...argv) {\n  let result = uint32val0;\n  for (const x of argv) {\n    result = result & x;\n  }\n  return result >>> 0;\n}\nfunction uint32_xor3(a, b, c) {\n  return (a ^ b ^ c) >>> 0;\n}\nfunction uint32_xor2(a, b) {\n  return (a ^ b) >>> 0;\n}\nfunction uint32_xor(uint32val0, ...argv) {\n  let result = uint32val0;\n  for (const x of argv) {\n    result = result ^ x;\n  }\n  return result >>> 0;\n}\nfunction uint32_not(uint32val) {\n  return ~uint32val >>> 0;\n}\nfunction uint32_shiftLeft(uint32val, numBits) {\n  return uint32val << numBits >>> 0;\n}\nfunction uint32_shiftRight(uint32val, numBits) {\n  return uint32val >>> numBits;\n}\nfunction uint32_rotateRight(uint32val, numBits) {\n  return (uint32val >>> numBits | uint32val << 32 - numBits >>> 0) >>> 0;\n}\n\n// src/aes.ts\nvar oddsMask = uint32_fromBytesBigEndian(85, 85, 85, 85);\nvar evensMask = uint32_fromBytesBigEndian(170, 170, 170, 170);\nvar cl4 = uint32_fromBytesBigEndian(51, 51, 51, 51);\nvar ch4 = uint32_fromBytesBigEndian(204, 204, 204, 204);\nvar cl8 = uint32_fromBytesBigEndian(15, 15, 15, 15);\nvar ch8 = uint32_fromBytesBigEndian(240, 240, 240, 240);\nvar shiftRowsMask0 = uint32_fromBytesBigEndian(0, 0, 0, 255);\nvar shiftRowsMask1 = uint32_fromBytesBigEndian(0, 0, 252, 0);\nvar shiftRowsMask2 = uint32_fromBytesBigEndian(0, 0, 3, 0);\nvar shiftRowsMask3 = uint32_fromBytesBigEndian(0, 240, 0, 0);\nvar shiftRowsMask4 = uint32_fromBytesBigEndian(0, 15, 0, 0);\nvar shiftRowsMask5 = uint32_fromBytesBigEndian(192, 0, 0, 0);\nvar shiftRowsMask6 = uint32_fromBytesBigEndian(63, 0, 0, 0);\nfunction newQ() {\n  return new Uint32Array(8);\n}\nfunction addRoundKey(q, sk) {\n  q[0] = uint32_xor2(q[0], sk[0]);\n  q[1] = uint32_xor2(q[1], sk[1]);\n  q[2] = uint32_xor2(q[2], sk[2]);\n  q[3] = uint32_xor2(q[3], sk[3]);\n  q[4] = uint32_xor2(q[4], sk[4]);\n  q[5] = uint32_xor2(q[5], sk[5]);\n  q[6] = uint32_xor2(q[6], sk[6]);\n  q[7] = uint32_xor2(q[7], sk[7]);\n}\nfunction subBytes(q) {\n  const x0 = q[7];\n  const x1 = q[6];\n  const x2 = q[5];\n  const x3 = q[4];\n  const x4 = q[3];\n  const x5 = q[2];\n  const x6 = q[1];\n  const x7 = q[0];\n  const y14 = uint32_xor2(x3, x5);\n  const y13 = uint32_xor2(x0, x6);\n  const y9 = uint32_xor2(x0, x3);\n  const y8 = uint32_xor2(x0, x5);\n  const t0 = uint32_xor2(x1, x2);\n  const y1 = uint32_xor2(t0, x7);\n  const y4 = uint32_xor2(y1, x3);\n  const y12 = uint32_xor2(y13, y14);\n  const y2 = uint32_xor2(y1, x0);\n  const y5 = uint32_xor2(y1, x6);\n  const y3 = uint32_xor2(y5, y8);\n  const t1 = uint32_xor2(x4, y12);\n  const y15 = uint32_xor2(t1, x5);\n  const y20 = uint32_xor2(t1, x1);\n  const y6 = uint32_xor2(y15, x7);\n  const y10 = uint32_xor2(y15, t0);\n  const y11 = uint32_xor2(y20, y9);\n  const y7 = uint32_xor2(x7, y11);\n  const y17 = uint32_xor2(y10, y11);\n  const y19 = uint32_xor2(y10, y8);\n  const y16 = uint32_xor2(t0, y11);\n  const y21 = uint32_xor2(y13, y16);\n  const y18 = uint32_xor2(x0, y16);\n  const t2 = uint32_and(y12, y15);\n  const t3 = uint32_and(y3, y6);\n  const t4 = uint32_xor2(t3, t2);\n  const t5 = uint32_and(y4, x7);\n  const t6 = uint32_xor2(t5, t2);\n  const t7 = uint32_and(y13, y16);\n  const t8 = uint32_and(y5, y1);\n  const t9 = uint32_xor2(t8, t7);\n  const t10 = uint32_and(y2, y7);\n  const t11 = uint32_xor2(t10, t7);\n  const t12 = uint32_and(y9, y11);\n  const t13 = uint32_and(y14, y17);\n  const t14 = uint32_xor2(t13, t12);\n  const t15 = uint32_and(y8, y10);\n  const t16 = uint32_xor2(t15, t12);\n  const t17 = uint32_xor2(t4, t14);\n  const t18 = uint32_xor2(t6, t16);\n  const t19 = uint32_xor2(t9, t14);\n  const t20 = uint32_xor2(t11, t16);\n  const t21 = uint32_xor2(t17, y20);\n  const t22 = uint32_xor2(t18, y19);\n  const t23 = uint32_xor2(t19, y21);\n  const t24 = uint32_xor2(t20, y18);\n  const t25 = uint32_xor2(t21, t22);\n  const t26 = uint32_and(t21, t23);\n  const t27 = uint32_xor2(t24, t26);\n  const t28 = uint32_and(t25, t27);\n  const t29 = uint32_xor2(t28, t22);\n  const t30 = uint32_xor2(t23, t24);\n  const t31 = uint32_xor2(t22, t26);\n  const t32 = uint32_and(t31, t30);\n  const t33 = uint32_xor2(t32, t24);\n  const t34 = uint32_xor2(t23, t33);\n  const t35 = uint32_xor2(t27, t33);\n  const t36 = uint32_and(t24, t35);\n  const t37 = uint32_xor2(t36, t34);\n  const t38 = uint32_xor2(t27, t36);\n  const t39 = uint32_and(t29, t38);\n  const t40 = uint32_xor2(t25, t39);\n  const t41 = uint32_xor2(t40, t37);\n  const t42 = uint32_xor2(t29, t33);\n  const t43 = uint32_xor2(t29, t40);\n  const t44 = uint32_xor2(t33, t37);\n  const t45 = uint32_xor2(t42, t41);\n  const z0 = uint32_and(t44, y15);\n  const z1 = uint32_and(t37, y6);\n  const z2 = uint32_and(t33, x7);\n  const z3 = uint32_and(t43, y16);\n  const z4 = uint32_and(t40, y1);\n  const z5 = uint32_and(t29, y7);\n  const z6 = uint32_and(t42, y11);\n  const z7 = uint32_and(t45, y17);\n  const z8 = uint32_and(t41, y10);\n  const z9 = uint32_and(t44, y12);\n  const z10 = uint32_and(t37, y3);\n  const z11 = uint32_and(t33, y4);\n  const z12 = uint32_and(t43, y13);\n  const z13 = uint32_and(t40, y5);\n  const z14 = uint32_and(t29, y2);\n  const z15 = uint32_and(t42, y9);\n  const z16 = uint32_and(t45, y14);\n  const z17 = uint32_and(t41, y8);\n  const t46 = uint32_xor2(z15, z16);\n  const t47 = uint32_xor2(z10, z11);\n  const t48 = uint32_xor2(z5, z13);\n  const t49 = uint32_xor2(z9, z10);\n  const t50 = uint32_xor2(z2, z12);\n  const t51 = uint32_xor2(z2, z5);\n  const t52 = uint32_xor2(z7, z8);\n  const t53 = uint32_xor2(z0, z3);\n  const t54 = uint32_xor2(z6, z7);\n  const t55 = uint32_xor2(z16, z17);\n  const t56 = uint32_xor2(z12, t48);\n  const t57 = uint32_xor2(t50, t53);\n  const t58 = uint32_xor2(z4, t46);\n  const t59 = uint32_xor2(z3, t54);\n  const t60 = uint32_xor2(t46, t57);\n  const t61 = uint32_xor2(z14, t57);\n  const t62 = uint32_xor2(t52, t58);\n  const t63 = uint32_xor2(t49, t58);\n  const t64 = uint32_xor2(z4, t59);\n  const t65 = uint32_xor2(t61, t62);\n  const t66 = uint32_xor2(z1, t63);\n  const s0 = uint32_xor2(t59, t63);\n  const s6 = uint32_xor2(t56, uint32_not(t62));\n  const s7 = uint32_xor2(t48, uint32_not(t60));\n  const t67 = uint32_xor2(t64, t65);\n  const s3 = uint32_xor2(t53, t66);\n  const s4 = uint32_xor2(t51, t66);\n  const s5 = uint32_xor2(t47, t65);\n  const s1 = uint32_xor2(t64, uint32_not(s3));\n  const s2 = uint32_xor2(t55, uint32_not(t67));\n  q[7] = s0;\n  q[6] = s1;\n  q[5] = s2;\n  q[4] = s3;\n  q[3] = s4;\n  q[2] = s5;\n  q[1] = s6;\n  q[0] = s7;\n}\nfunction shiftRows(q) {\n  for (let i = 0; i < 8; i++) {\n    const x = q[i];\n    q[i] = uint32_or(\n      uint32_and(x, shiftRowsMask0),\n      uint32_shiftRight(uint32_and(x, shiftRowsMask1), 2),\n      uint32_shiftLeft(uint32_and(x, shiftRowsMask2), 6),\n      uint32_shiftRight(uint32_and(x, shiftRowsMask3), 4),\n      uint32_shiftLeft(uint32_and(x, shiftRowsMask4), 4),\n      uint32_shiftRight(uint32_and(x, shiftRowsMask5), 6),\n      uint32_shiftLeft(uint32_and(x, shiftRowsMask6), 2)\n    );\n  }\n}\nfunction mixColumns(q) {\n  const q0 = q[0];\n  const q1 = q[1];\n  const q2 = q[2];\n  const q3 = q[3];\n  const q4 = q[4];\n  const q5 = q[5];\n  const q6 = q[6];\n  const q7 = q[7];\n  const r0 = uint32_or(uint32_shiftRight(q0, 8), uint32_shiftLeft(q0, 24));\n  const r1 = uint32_or(uint32_shiftRight(q1, 8), uint32_shiftLeft(q1, 24));\n  const r2 = uint32_or(uint32_shiftRight(q2, 8), uint32_shiftLeft(q2, 24));\n  const r3 = uint32_or(uint32_shiftRight(q3, 8), uint32_shiftLeft(q3, 24));\n  const r4 = uint32_or(uint32_shiftRight(q4, 8), uint32_shiftLeft(q4, 24));\n  const r5 = uint32_or(uint32_shiftRight(q5, 8), uint32_shiftLeft(q5, 24));\n  const r6 = uint32_or(uint32_shiftRight(q6, 8), uint32_shiftLeft(q6, 24));\n  const r7 = uint32_or(uint32_shiftRight(q7, 8), uint32_shiftLeft(q7, 24));\n  q[0] = uint32_xor(q7, r7, r0, uint32_rotateRight(uint32_xor2(q0, r0), 16));\n  q[1] = uint32_xor(\n    q0,\n    r0,\n    q7,\n    r7,\n    r1,\n    uint32_rotateRight(uint32_xor2(q1, r1), 16)\n  );\n  q[2] = uint32_xor(q1, r1, r2, uint32_rotateRight(uint32_xor2(q2, r2), 16));\n  q[3] = uint32_xor(\n    q2,\n    r2,\n    q7,\n    r7,\n    r3,\n    uint32_rotateRight(uint32_xor2(q3, r3), 16)\n  );\n  q[4] = uint32_xor(\n    q3,\n    r3,\n    q7,\n    r7,\n    r4,\n    uint32_rotateRight(uint32_xor2(q4, r4), 16)\n  );\n  q[5] = uint32_xor(q4, r4, r5, uint32_rotateRight(uint32_xor2(q5, r5), 16));\n  q[6] = uint32_xor(q5, r5, r6, uint32_rotateRight(uint32_xor2(q6, r6), 16));\n  q[7] = uint32_xor(q6, r6, r7, uint32_rotateRight(uint32_xor2(q7, r7), 16));\n}\nfunction load4xU32(q, src) {\n  const srcView = new DataView(src.buffer);\n  q[0] = srcView.getUint32(0 + src.byteOffset, true);\n  q[2] = srcView.getUint32(4 + src.byteOffset, true);\n  q[4] = srcView.getUint32(8 + src.byteOffset, true);\n  q[6] = srcView.getUint32(12 + src.byteOffset, true);\n  q[1] = 0;\n  q[3] = 0;\n  q[5] = 0;\n  q[7] = 0;\n  ortho(q);\n}\nfunction load8xU32(q, src0, src1) {\n  const src0View = new DataView(src0.buffer);\n  const src1View = new DataView(src1.buffer);\n  q[0] = src0View.getUint32(0 + src0.byteOffset, true);\n  q[2] = src0View.getUint32(4 + src0.byteOffset, true);\n  q[4] = src0View.getUint32(8 + src0.byteOffset, true);\n  q[6] = src0View.getUint32(12 + src0.byteOffset, true);\n  q[1] = src1View.getUint32(0 + src1.byteOffset, true);\n  q[3] = src1View.getUint32(4 + src1.byteOffset, true);\n  q[5] = src1View.getUint32(8 + src1.byteOffset, true);\n  q[7] = src1View.getUint32(12 + src1.byteOffset, true);\n  ortho(q);\n}\nfunction store4xU32(dst, q) {\n  ortho(q);\n  const dstView = new DataView(dst.buffer);\n  dstView.setUint32(0 + dst.byteOffset, q[0], true);\n  dstView.setUint32(4 + dst.byteOffset, q[2], true);\n  dstView.setUint32(8 + dst.byteOffset, q[4], true);\n  dstView.setUint32(12 + dst.byteOffset, q[6], true);\n}\nfunction store8xU32(dst0, dst1, q) {\n  ortho(q);\n  const dst0View = new DataView(dst0.buffer);\n  const dst1View = new DataView(dst1.buffer);\n  dst0View.setUint32(0 + dst0.byteOffset, q[0], true);\n  dst0View.setUint32(4 + dst0.byteOffset, q[2], true);\n  dst0View.setUint32(8 + dst0.byteOffset, q[4], true);\n  dst0View.setUint32(12 + dst0.byteOffset, q[6], true);\n  dst1View.setUint32(0 + dst1.byteOffset, q[1], true);\n  dst1View.setUint32(4 + dst1.byteOffset, q[3], true);\n  dst1View.setUint32(8 + dst1.byteOffset, q[5], true);\n  dst1View.setUint32(12 + dst1.byteOffset, q[7], true);\n}\nfunction ortho(q) {\n  for (let i = 0; i < 8; i += 2) {\n    const q0 = q[i];\n    const q1 = q[i + 1];\n    q[i] = uint32_or(\n      uint32_and(q0, oddsMask),\n      uint32_shiftLeft(uint32_and(q1, oddsMask), 1)\n    );\n    q[i + 1] = uint32_or(\n      uint32_shiftRight(uint32_and(q0, evensMask), 1),\n      uint32_and(q1, evensMask)\n    );\n  }\n  for (let i = 0; i < 8; i += 4) {\n    const q0 = q[i];\n    const q1 = q[i + 1];\n    const q2 = q[i + 2];\n    const q3 = q[i + 3];\n    q[i] = uint32_or(\n      uint32_and(q0, cl4),\n      uint32_shiftLeft(uint32_and(q2, cl4), 2)\n    );\n    q[i + 2] = uint32_or(\n      uint32_shiftRight(uint32_and(q0, ch4), 2),\n      uint32_and(q2, ch4)\n    );\n    q[i + 1] = uint32_or(\n      uint32_and(q1, cl4),\n      uint32_shiftLeft(uint32_and(q3, cl4), 2)\n    );\n    q[i + 3] = uint32_or(\n      uint32_shiftRight(uint32_and(q1, ch4), 2),\n      uint32_and(q3, ch4)\n    );\n  }\n  for (let i = 0; i < 4; i++) {\n    const q0 = q[i];\n    const q4 = q[i + 4];\n    q[i] = uint32_or(\n      uint32_and(q0, cl8),\n      uint32_shiftLeft(uint32_and(q4, cl8), 4)\n    );\n    q[i + 4] = uint32_or(\n      uint32_shiftRight(uint32_and(q0, ch8), 4),\n      uint32_and(q4, ch8)\n    );\n  }\n}\nfunction rkeyOrtho(q, key) {\n  const keyView = new DataView(key.buffer);\n  for (let i = 0; i < 4; i++) {\n    const x = keyView.getUint32(i * 4 + key.byteOffset, true);\n    q[i * 2] = x;\n    q[i * 2 + 1] = x;\n  }\n  ortho(q);\n  for (let i = 0, j = 0; i < 4; i = i + 1, j = j + 2) {\n    let x = uint32_or(\n      uint32_and(q[j + 0], oddsMask),\n      uint32_and(q[j + 1], evensMask)\n    );\n    let y = x;\n    x = uint32_and(x, oddsMask);\n    q[j] = uint32_or(x, uint32_shiftLeft(x, 1));\n    y = uint32_and(y, evensMask);\n    q[j + 1] = uint32_or(y, uint32_shiftRight(y, 1));\n  }\n}\n\n// src/deoxysii.ts\nvar KeySize = 32;\nvar NonceSize = 15;\nvar TagSize = 16;\nvar stkSize = 16;\nvar rounds = 16;\nvar blockSize = 16;\nvar tweakSize = 16;\nvar prefixADBlock = 2;\nvar prefixADFinal = 6;\nvar prefixMsgBlock = 0;\nvar prefixMsgFinal = 4;\nvar prefixTag = 1;\nvar prefixShift = 4;\nfunction xorBytes(dst, a, b, n) {\n  for (let i = 0; i < n; i++) {\n    dst[i] = a[i] ^ b[i];\n  }\n}\nvar rcons = new Uint8Array([\n  47,\n  94,\n  188,\n  99,\n  198,\n  151,\n  53,\n  106,\n  212,\n  179,\n  125,\n  250,\n  239,\n  197,\n  145,\n  57,\n  114\n]);\nfunction h(t) {\n  t.set(\n    new Uint8Array([\n      t[1],\n      t[6],\n      t[11],\n      t[12],\n      t[5],\n      t[10],\n      t[15],\n      t[0],\n      t[9],\n      t[14],\n      t[3],\n      t[4],\n      t[13],\n      t[2],\n      t[7],\n      t[8]\n    ])\n  );\n}\nfunction lfsr2(t) {\n  for (let i = 0; i < stkSize; i++) {\n    const x = t[i];\n    const x7 = x >> 7;\n    const x5 = x >> 5 & 1;\n    t[i] = x << 1 | x7 ^ x5;\n  }\n}\nfunction lfsr3(t) {\n  for (let i = 0; i < stkSize; i++) {\n    const x = t[i];\n    const x0 = x & 1;\n    const x6 = x >> 6 & 1;\n    t[i] = x >> 1 | (x0 ^ x6) << 7;\n  }\n}\nfunction xorRC(t, i) {\n  t[0] ^= 1;\n  t[1] ^= 2;\n  t[2] ^= 4;\n  t[3] ^= 8;\n  t[4] ^= rcons[i];\n  t[5] ^= rcons[i];\n  t[6] ^= rcons[i];\n  t[7] ^= rcons[i];\n}\nfunction stkDeriveK(key, derivedKs) {\n  const tk2 = key.subarray(16, 32);\n  const tk3 = key.subarray(0, 16);\n  xorBytes(derivedKs[0], tk2, tk3, stkSize);\n  xorRC(derivedKs[0], 0);\n  for (let i = 1; i <= rounds; i++) {\n    lfsr2(tk2);\n    h(tk2);\n    lfsr3(tk3);\n    h(tk3);\n    xorBytes(derivedKs[i], tk2, tk3, stkSize);\n    xorRC(derivedKs[i], i);\n  }\n}\nfunction deriveSubTweakKeys(stks, derivedKs, tweak) {\n  const tk1 = new Uint8Array(tweak);\n  xorBytes(stks[0], derivedKs[0], tk1, stkSize);\n  for (let i = 1; i <= rounds; i++) {\n    h(tk1);\n    xorBytes(stks[i], derivedKs[i], tk1, stkSize);\n  }\n}\nfunction newStks() {\n  const stks = [];\n  for (let i = 0; i <= rounds; i++) {\n    stks.push(new Uint8Array(16));\n  }\n  return stks;\n}\nfunction ct32_bcEncrypt(ciphertext, derivedKs, tweak, plaintext) {\n  const stks = newStks();\n  deriveSubTweakKeys(stks, derivedKs, tweak);\n  const q = newQ();\n  const stk = newQ();\n  load4xU32(q, plaintext);\n  load4xU32(stk, stks[0]);\n  addRoundKey(q, stk);\n  for (let i = 1; i <= rounds; i++) {\n    subBytes(q);\n    shiftRows(q);\n    mixColumns(q);\n    load4xU32(stk, stks[i]);\n    addRoundKey(q, stk);\n  }\n  store4xU32(ciphertext, q);\n}\nfunction ct32_bcKeystreamx2(ciphertext, derivedKs, tweaks, nonce) {\n  const stks = [newStks(), newStks()];\n  for (let i = 0; i < 2; i++) {\n    deriveSubTweakKeys(stks[i], derivedKs, tweaks[i]);\n  }\n  const q = newQ();\n  const stk = newQ();\n  rkeyOrtho(q, nonce);\n  load8xU32(stk, stks[0][0], stks[1][0]);\n  addRoundKey(q, stk);\n  for (let i = 1; i <= rounds; i++) {\n    subBytes(q);\n    shiftRows(q);\n    mixColumns(q);\n    load8xU32(stk, stks[0][i], stks[1][i]);\n    addRoundKey(q, stk);\n  }\n  store8xU32(ciphertext.subarray(0, 16), ciphertext.subarray(16, 32), q);\n}\nfunction ct32_bcTagx1(tag, derivedKs, tweak, plaintext) {\n  const stks = newStks();\n  deriveSubTweakKeys(stks, derivedKs, tweak);\n  const q = newQ();\n  const stk = newQ();\n  load4xU32(q, plaintext);\n  load4xU32(stk, stks[0]);\n  addRoundKey(q, stk);\n  for (let i = 1; i <= rounds; i++) {\n    subBytes(q);\n    shiftRows(q);\n    mixColumns(q);\n    load4xU32(stk, stks[i]);\n    addRoundKey(q, stk);\n  }\n  const tagView = new DataView(tag.buffer);\n  let tag0 = tagView.getUint32(0, true);\n  let tag1 = tagView.getUint32(4, true);\n  let tag2 = tagView.getUint32(8, true);\n  let tag3 = tagView.getUint32(12, true);\n  ortho(q);\n  tag0 = uint32_xor2(tag0, q[0]);\n  tag1 = uint32_xor2(tag1, q[2]);\n  tag2 = uint32_xor2(tag2, q[4]);\n  tag3 = uint32_xor2(tag3, q[6]);\n  tagView.setUint32(0, tag0, true);\n  tagView.setUint32(4, tag1, true);\n  tagView.setUint32(8, tag2, true);\n  tagView.setUint32(12, tag3, true);\n}\nfunction ct32_bcTagx2(tag, derivedKs, tweaks, plaintext) {\n  const stks = [newStks(), newStks()];\n  for (let i = 0; i < 2; i++) {\n    deriveSubTweakKeys(stks[i], derivedKs, tweaks[i]);\n  }\n  const q = newQ();\n  const stk = newQ();\n  load8xU32(q, plaintext.subarray(0, 16), plaintext.subarray(16, 32));\n  load8xU32(stk, stks[0][0], stks[1][0]);\n  addRoundKey(q, stk);\n  for (let i = 1; i <= rounds; i++) {\n    subBytes(q);\n    shiftRows(q);\n    mixColumns(q);\n    load8xU32(stk, stks[0][i], stks[1][i]);\n    addRoundKey(q, stk);\n  }\n  const tagView = new DataView(tag.buffer);\n  let tag0 = tagView.getUint32(0, true);\n  let tag1 = tagView.getUint32(4, true);\n  let tag2 = tagView.getUint32(8, true);\n  let tag3 = tagView.getUint32(12, true);\n  ortho(q);\n  tag0 = uint32_xor3(tag0, q[0], q[1]);\n  tag1 = uint32_xor3(tag1, q[2], q[3]);\n  tag2 = uint32_xor3(tag2, q[4], q[5]);\n  tag3 = uint32_xor3(tag3, q[6], q[7]);\n  tagView.setUint32(0, tag0, true);\n  tagView.setUint32(4, tag1, true);\n  tagView.setUint32(8, tag2, true);\n  tagView.setUint32(12, tag3, true);\n}\nfunction encodeTagTweak(out, prefix, blockNr) {\n  out.set(new Uint8Array(12));\n  new DataView(out.buffer).setUint32(12 + out.byteOffset, blockNr, false);\n  out[0] = prefix << prefixShift;\n}\nfunction encodeEncTweak(out, tag, blockNr) {\n  const tmp = new Uint8Array(4);\n  new DataView(tmp.buffer).setUint32(0, blockNr, false);\n  out.set(tag);\n  out[0] |= 128;\n  xorBytes(out.subarray(12, 16), out.subarray(12, 16), tmp, 4);\n}\nfunction newTweaks() {\n  return [new Uint8Array(tweakSize), new Uint8Array(tweakSize)];\n}\nfunction e(derivedKs, nonce, dst, ad, msg) {\n  const tweaks = newTweaks();\n  let i = 0;\n  let j = 0;\n  let adLen = ad.length;\n  const auth = new Uint8Array(TagSize);\n  for (i = 0; adLen >= 2 * blockSize; i += 2) {\n    encodeTagTweak(tweaks[0], prefixADBlock, i);\n    encodeTagTweak(tweaks[1], prefixADBlock, i + 1);\n    ct32_bcTagx2(\n      auth,\n      derivedKs,\n      tweaks,\n      ad.subarray(i * blockSize, (i + 2) * blockSize)\n    );\n    adLen -= 2 * blockSize;\n  }\n  for (; adLen >= blockSize; i++) {\n    encodeTagTweak(tweaks[0], prefixADBlock, i);\n    ct32_bcTagx1(\n      auth,\n      derivedKs,\n      tweaks[0],\n      ad.subarray(i * blockSize, (i + 1) * blockSize)\n    );\n    adLen -= blockSize;\n  }\n  if (adLen > 0) {\n    encodeTagTweak(tweaks[0], prefixADFinal, i);\n    const aStar = new Uint8Array(blockSize);\n    aStar.set(ad.subarray(ad.length - adLen));\n    aStar[adLen] = 128;\n    ct32_bcTagx1(auth, derivedKs, tweaks[0], aStar);\n  }\n  let msgLen = msg.length;\n  for (j = 0; msgLen >= 2 * blockSize; j += 2) {\n    encodeTagTweak(tweaks[0], prefixMsgBlock, j);\n    encodeTagTweak(tweaks[1], prefixMsgBlock, j + 1);\n    ct32_bcTagx2(\n      auth,\n      derivedKs,\n      tweaks,\n      msg.subarray(j * blockSize, (j + 2) * blockSize)\n    );\n    msgLen -= 2 * blockSize;\n  }\n  for (; msgLen >= blockSize; j++) {\n    encodeTagTweak(tweaks[0], prefixMsgBlock, j);\n    ct32_bcTagx1(\n      auth,\n      derivedKs,\n      tweaks[0],\n      msg.subarray(j * blockSize, (j + 1) * blockSize)\n    );\n    msgLen -= blockSize;\n  }\n  if (msgLen > 0) {\n    encodeTagTweak(tweaks[0], prefixMsgFinal, j);\n    const mStar = new Uint8Array(blockSize);\n    mStar.set(msg.subarray(msg.length - msgLen));\n    mStar[msgLen] = 128;\n    ct32_bcTagx1(auth, derivedKs, tweaks[0], mStar);\n  }\n  const encNonce = new Uint8Array(blockSize);\n  encNonce.set(nonce, 1);\n  encNonce[0] = prefixTag << prefixShift;\n  ct32_bcEncrypt(auth, derivedKs, encNonce, auth);\n  encNonce[0] = 0;\n  msgLen = msg.length;\n  const encBlks = new Uint8Array(2 * blockSize);\n  for (j = 0; msgLen >= 2 * blockSize; j += 2) {\n    encodeEncTweak(tweaks[0], auth, j);\n    encodeEncTweak(tweaks[1], auth, j + 1);\n    ct32_bcKeystreamx2(encBlks, derivedKs, tweaks, encNonce);\n    xorBytes(\n      dst.subarray(j * blockSize, (j + 2) * blockSize),\n      msg.subarray(j * blockSize, (j + 2) * blockSize),\n      encBlks,\n      2 * blockSize\n    );\n    msgLen -= 2 * blockSize;\n  }\n  for (; msgLen >= blockSize; j++) {\n    encodeEncTweak(tweaks[0], auth, j);\n    ct32_bcEncrypt(encBlks, derivedKs, tweaks[0], encNonce);\n    xorBytes(\n      dst.subarray(j * blockSize, (j + 1) * blockSize),\n      msg.subarray(j * blockSize, (j + 1) * blockSize),\n      encBlks,\n      blockSize\n    );\n    msgLen -= blockSize;\n  }\n  if (msgLen > 0) {\n    encodeEncTweak(tweaks[0], auth, j);\n    ct32_bcEncrypt(encBlks, derivedKs, tweaks[0], encNonce);\n    xorBytes(\n      dst.subarray(j * blockSize, msg.length),\n      msg.subarray(j * blockSize),\n      encBlks,\n      msgLen\n    );\n  }\n  dst.set(auth, msg.length);\n}\nfunction d(derivedKs, nonce, dst, ad, ct) {\n  let ctLen = ct.length - TagSize;\n  const ciphertext = ct.subarray(0, ctLen);\n  const tag = ct.subarray(ctLen);\n  let j = 0;\n  const decTweaks = newTweaks();\n  const decNonce = new Uint8Array(blockSize);\n  decNonce.set(nonce, 1);\n  const decBlks = new Uint8Array(2 * blockSize);\n  for (j = 0; ctLen >= 2 * blockSize; j += 2) {\n    encodeEncTweak(decTweaks[0], tag, j);\n    encodeEncTweak(decTweaks[1], tag, j + 1);\n    ct32_bcKeystreamx2(decBlks, derivedKs, decTweaks, decNonce);\n    xorBytes(\n      dst.subarray(j * blockSize, (j + 2) * blockSize),\n      ciphertext.subarray(j * blockSize, (j + 2) * blockSize),\n      decBlks,\n      2 * blockSize\n    );\n    ctLen -= 2 * blockSize;\n  }\n  for (; ctLen >= blockSize; j++) {\n    encodeEncTweak(decTweaks[0], tag, j);\n    ct32_bcEncrypt(decBlks, derivedKs, decTweaks[0], decNonce);\n    xorBytes(\n      dst.subarray(j * blockSize, (j + 1) * blockSize),\n      ciphertext.subarray(j * blockSize, (j + 1) * blockSize),\n      decBlks,\n      blockSize\n    );\n    ctLen -= blockSize;\n  }\n  if (ctLen > 0) {\n    encodeEncTweak(decTweaks[0], tag, j);\n    ct32_bcEncrypt(decBlks, derivedKs, decTweaks[0], decNonce);\n    xorBytes(\n      dst.subarray(j * blockSize),\n      ciphertext.subarray(j * blockSize),\n      decBlks,\n      ctLen\n    );\n  }\n  let i = 0;\n  let adLen = ad.length;\n  const tweaks = newTweaks();\n  const auth = new Uint8Array(TagSize);\n  for (i = 0; adLen >= 2 * blockSize; i += 2) {\n    encodeTagTweak(tweaks[0], prefixADBlock, i);\n    encodeTagTweak(tweaks[1], prefixADBlock, i + 1);\n    ct32_bcTagx2(\n      auth,\n      derivedKs,\n      tweaks,\n      ad.subarray(i * blockSize, (i + 2) * blockSize)\n    );\n    adLen -= 2 * blockSize;\n  }\n  for (; adLen >= blockSize; i++) {\n    encodeTagTweak(tweaks[0], prefixADBlock, i);\n    ct32_bcTagx1(\n      auth,\n      derivedKs,\n      tweaks[0],\n      ad.subarray(i * blockSize, (i + 1) * blockSize)\n    );\n    adLen -= blockSize;\n  }\n  if (adLen > 0) {\n    encodeTagTweak(tweaks[0], prefixADFinal, i);\n    const aStar = new Uint8Array(blockSize);\n    aStar.set(ad.subarray(ad.length - adLen));\n    aStar[adLen] = 128;\n    ct32_bcTagx1(auth, derivedKs, tweaks[0], aStar);\n  }\n  let msgLen = dst.length;\n  for (j = 0; msgLen >= 2 * blockSize; j += 2) {\n    encodeTagTweak(tweaks[0], prefixMsgBlock, j);\n    encodeTagTweak(tweaks[1], prefixMsgBlock, j + 1);\n    ct32_bcTagx2(\n      auth,\n      derivedKs,\n      tweaks,\n      dst.subarray(j * blockSize, (j + 2) * blockSize)\n    );\n    msgLen -= 2 * blockSize;\n  }\n  for (; msgLen >= blockSize; j++) {\n    encodeTagTweak(tweaks[0], prefixMsgBlock, j);\n    ct32_bcTagx1(\n      auth,\n      derivedKs,\n      tweaks[0],\n      dst.subarray(j * blockSize, (j + 1) * blockSize)\n    );\n    msgLen -= blockSize;\n  }\n  if (msgLen > 0) {\n    encodeTagTweak(tweaks[0], prefixMsgFinal, j);\n    const mStar = new Uint8Array(blockSize);\n    mStar.set(dst.subarray(dst.length - msgLen));\n    mStar[msgLen] = 128;\n    ct32_bcTagx1(auth, derivedKs, tweaks[0], mStar);\n  }\n  decNonce[0] = prefixTag << prefixShift;\n  ct32_bcEncrypt(auth, derivedKs, decNonce, auth);\n  if (auth.length !== tag.length) {\n    return false;\n  }\n  let eql = true;\n  for (i = 0; i < auth.length; i++) {\n    eql &= !(auth[i] ^ tag[i]);\n  }\n  return eql;\n}\nvar AEAD = class {\n  constructor(key) {\n    __publicField(this, \"derivedKs\");\n    if (key.length !== KeySize) {\n      throw ErrKeySize;\n    }\n    this.derivedKs = newStks();\n    stkDeriveK(key, this.derivedKs);\n  }\n  encrypt(nonce, plaintext = null, associatedData = null) {\n    if (nonce.length !== NonceSize) {\n      throw ErrNonceSize;\n    }\n    if (plaintext == null) {\n      plaintext = zeroBuffer;\n    }\n    if (associatedData == null) {\n      associatedData = zeroBuffer;\n    }\n    const dst = new Uint8Array(plaintext.length + TagSize);\n    e(this.derivedKs, nonce, dst, associatedData, plaintext);\n    return dst;\n  }\n  decrypt(nonce, ciphertext, associatedData = null) {\n    if (nonce.length !== NonceSize) {\n      throw ErrNonceSize;\n    }\n    if (ciphertext.length < TagSize) {\n      throw ErrOpen;\n    }\n    if (associatedData == null) {\n      associatedData = zeroBuffer;\n    }\n    const dst = new Uint8Array(ciphertext.length - TagSize);\n    if (!d(this.derivedKs, nonce, dst, associatedData, ciphertext)) {\n      dst.set(new Uint8Array(dst.length));\n      throw ErrOpen;\n    }\n    return dst;\n  }\n};\nvar zeroBuffer = new Uint8Array(0);\nvar ErrKeySize = \"deoxysii: invalid key size\";\nvar ErrNonceSize = \"deoxysii: invalid nonce size\";\nvar ErrOpen = \"deoxysii: message authentication failure\";\n\n// src/index.ts\nvar src_default = deoxysii_exports;\nexport {\n  AEAD,\n  ErrKeySize,\n  ErrNonceSize,\n  ErrOpen,\n  KeySize,\n  NonceSize,\n  TagSize,\n  src_default as default\n};\n/**\n * @license (c) Franz X Antesberger 2013\n */\n","function number(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error(`Wrong positive integer: ${n}`);\n}\nfunction bool(b) {\n    if (typeof b !== 'boolean')\n        throw new Error(`Expected boolean, not ${b}`);\n}\nfunction bytes(b, ...lengths) {\n    if (!(b instanceof Uint8Array))\n        throw new Error('Expected Uint8Array');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(hash) {\n    if (typeof hash !== 'function' || typeof hash.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.wrapConstructor');\n    number(hash.outputLen);\n    number(hash.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\nfunction output(out, instance) {\n    bytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n    }\n}\nexport { number, bool, bytes, hash, exists, output };\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n//# sourceMappingURL=_assert.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nconst u8a = (a) => a instanceof Uint8Array;\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE)\n    throw new Error('Non little-endian hardware is not supported');\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    if (!u8a(bytes))\n        throw new Error('Uint8Array expected');\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    const len = hex.length;\n    if (len % 2)\n        throw new Error('padded hex string expected, got unpadded hex of length ' + len);\n    const array = new Uint8Array(len / 2);\n    for (let i = 0; i < array.length; i++) {\n        const j = i * 2;\n        const hexByte = hex.slice(j, j + 2);\n        const byte = Number.parseInt(hexByte, 16);\n        if (Number.isNaN(byte) || byte < 0)\n            throw new Error('Invalid byte sequence');\n        array[i] = byte;\n    }\n    return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    if (!u8a(data))\n        throw new Error(`expected Uint8Array, got ${typeof data}`);\n    return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n    const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n    let pad = 0; // walk through each item, ensure they have proper type\n    arrays.forEach((a) => {\n        if (!u8a(a))\n            throw new Error('Uint8Array expected');\n        r.set(a, pad);\n        pad += a.length;\n    });\n    return r;\n}\n// For runtime check if class implements interface\nexport class Hash {\n    // Safe version that clones internal state\n    clone() {\n        return this._cloneInto();\n    }\n}\nconst toStr = {}.toString;\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n        throw new Error('Options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\nexport function wrapConstructor(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { exists, output } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        exists(this);\n        const { view, buffer, blockLen } = this;\n        data = toBytes(data);\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = createView(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        exists(this);\n        output(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        this.buffer.subarray(pos).fill(0);\n        // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = createView(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.length = length;\n        to.pos = pos;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n}\n//# sourceMappingURL=_sha2.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    let Ah = new Uint32Array(lst.length);\n    let Al = new Uint32Array(lst.length);\n    for (let i = 0; i < lst.length; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n    constructor() {\n        super(128, 64, 16, false);\n        // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n        // Also looks cleaner and easier to verify with spec.\n        // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0x6a09e667 | 0;\n        this.Al = 0xf3bcc908 | 0;\n        this.Bh = 0xbb67ae85 | 0;\n        this.Bl = 0x84caa73b | 0;\n        this.Ch = 0x3c6ef372 | 0;\n        this.Cl = 0xfe94f82b | 0;\n        this.Dh = 0xa54ff53a | 0;\n        this.Dl = 0x5f1d36f1 | 0;\n        this.Eh = 0x510e527f | 0;\n        this.El = 0xade682d1 | 0;\n        this.Fh = 0x9b05688c | 0;\n        this.Fl = 0x2b3e6c1f | 0;\n        this.Gh = 0x1f83d9ab | 0;\n        this.Gl = 0xfb41bd6b | 0;\n        this.Hh = 0x5be0cd19 | 0;\n        this.Hl = 0x137e2179 | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        SHA512_W_H.fill(0);\n        SHA512_W_L.fill(0);\n    }\n    destroy() {\n        this.buffer.fill(0);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nclass SHA512_224 extends SHA512 {\n    constructor() {\n        super();\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0x8c3d37c8 | 0;\n        this.Al = 0x19544da2 | 0;\n        this.Bh = 0x73e19966 | 0;\n        this.Bl = 0x89dcd4d6 | 0;\n        this.Ch = 0x1dfab7ae | 0;\n        this.Cl = 0x32ff9c82 | 0;\n        this.Dh = 0x679dd514 | 0;\n        this.Dl = 0x582f9fcf | 0;\n        this.Eh = 0x0f6d2b69 | 0;\n        this.El = 0x7bd44da8 | 0;\n        this.Fh = 0x77e36f73 | 0;\n        this.Fl = 0x04c48942 | 0;\n        this.Gh = 0x3f9d85a8 | 0;\n        this.Gl = 0x6a1d36c8 | 0;\n        this.Hh = 0x1112e6ad | 0;\n        this.Hl = 0x91d692a1 | 0;\n        this.outputLen = 28;\n    }\n}\nclass SHA512_256 extends SHA512 {\n    constructor() {\n        super();\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0x22312194 | 0;\n        this.Al = 0xfc2bf72c | 0;\n        this.Bh = 0x9f555fa3 | 0;\n        this.Bl = 0xc84c64c2 | 0;\n        this.Ch = 0x2393b86b | 0;\n        this.Cl = 0x6f53b151 | 0;\n        this.Dh = 0x96387719 | 0;\n        this.Dl = 0x5940eabd | 0;\n        this.Eh = 0x96283ee2 | 0;\n        this.El = 0xa88effe3 | 0;\n        this.Fh = 0xbe5e1e25 | 0;\n        this.Fl = 0x53863992 | 0;\n        this.Gh = 0x2b0199fc | 0;\n        this.Gl = 0x2c85b8aa | 0;\n        this.Hh = 0x0eb72ddc | 0;\n        this.Hl = 0x81c52ca2 | 0;\n        this.outputLen = 32;\n    }\n}\nclass SHA384 extends SHA512 {\n    constructor() {\n        super();\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = 0xcbbb9d5d | 0;\n        this.Al = 0xc1059ed8 | 0;\n        this.Bh = 0x629a292a | 0;\n        this.Bl = 0x367cd507 | 0;\n        this.Ch = 0x9159015a | 0;\n        this.Cl = 0x3070dd17 | 0;\n        this.Dh = 0x152fecd8 | 0;\n        this.Dl = 0xf70e5939 | 0;\n        this.Eh = 0x67332667 | 0;\n        this.El = 0xffc00b31 | 0;\n        this.Fh = 0x8eb44a87 | 0;\n        this.Fl = 0x68581511 | 0;\n        this.Gh = 0xdb0c2e0d | 0;\n        this.Gl = 0x64f98fa7 | 0;\n        this.Hh = 0x47b5481d | 0;\n        this.Hl = 0xbefa4fa4 | 0;\n        this.outputLen = 48;\n    }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC extends Hash {\n    constructor(hash, _key) {\n        super();\n        this.finished = false;\n        this.destroyed = false;\n        assertHash(hash);\n        const key = toBytes(_key);\n        this.iHash = hash.create();\n        if (typeof this.iHash.update !== 'function')\n            throw new Error('Expected instance of class which extends utils.Hash');\n        this.blockLen = this.iHash.blockLen;\n        this.outputLen = this.iHash.outputLen;\n        const blockLen = this.blockLen;\n        const pad = new Uint8Array(blockLen);\n        // blockLen can be bigger than outputLen\n        pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36;\n        this.iHash.update(pad);\n        // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n        this.oHash = hash.create();\n        // Undo internal XOR && apply outer XOR\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36 ^ 0x5c;\n        this.oHash.update(pad);\n        pad.fill(0);\n    }\n    update(buf) {\n        assertExists(this);\n        this.iHash.update(buf);\n        return this;\n    }\n    digestInto(out) {\n        assertExists(this);\n        assertBytes(out, this.outputLen);\n        this.finished = true;\n        this.iHash.digestInto(out);\n        this.oHash.update(out);\n        this.oHash.digestInto(out);\n        this.destroy();\n    }\n    digest() {\n        const out = new Uint8Array(this.oHash.outputLen);\n        this.digestInto(out);\n        return out;\n    }\n    _cloneInto(to) {\n        // Create new instance without calling constructor since key already in state and we don't know it.\n        to || (to = Object.create(Object.getPrototypeOf(this), {}));\n        const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n        to = to;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        to.blockLen = blockLen;\n        to.outputLen = outputLen;\n        to.oHash = oHash._cloneInto(to.oHash);\n        to.iHash = iHash._cloneInto(to.iHash);\n        return to;\n    }\n    destroy() {\n        this.destroyed = true;\n        this.oHash.destroy();\n        this.iHash.destroy();\n    }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","// SPDX-License-Identifier: Unlicense\n// Minimum necessary functions extracted and made TypeScript compatible from:\n// https://github.com/dchest/tweetnacl-js/blob/fecde6ecf0eb81e31d54ca0509531ab1b825f490/nacl-fast.js\nfunction gf(init) {\n    const r = new Float64Array(16);\n    if (init) {\n        for (let i = 0; i < init.length; i++)\n            r[i] = init[i];\n    }\n    return r;\n}\nexport const crypto_box_SECRETKEYBYTES = 32;\nexport const crypto_box_PUBLICKEYBYTES = 32;\nexport const crypto_scalarmult_BYTES = 32;\nexport const crypto_scalarmult_SCALARBYTES = 32;\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction sel25519(p, q, b) {\n    let t;\n    const c = ~(b - 1);\n    for (let i = 0; i < 16; i++) {\n        t = c & (p[i] ^ q[i]);\n        p[i] ^= t;\n        q[i] ^= t;\n    }\n}\nfunction inv25519(o, i) {\n    const c = gf();\n    let a;\n    for (a = 0; a < 16; a++)\n        c[a] = i[a];\n    for (a = 253; a >= 0; a--) {\n        S(c, c);\n        if (a !== 2 && a !== 4)\n            M(c, c, i);\n    }\n    for (a = 0; a < 16; a++)\n        o[a] = c[a];\n}\nfunction car25519(o) {\n    let v, c = 1;\n    for (let i = 0; i < 16; i++) {\n        v = o[i] + c + 65535;\n        c = Math.floor(v / 65536);\n        o[i] = v - c * 65536;\n    }\n    o[0] += c - 1 + 37 * (c - 1);\n}\nfunction unpack25519(o, n) {\n    for (let i = 0; i < 16; i++)\n        o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n    o[15] &= 0x7fff;\n}\nfunction pack25519(o, n) {\n    let i, j, b;\n    const m = gf(), t = gf();\n    for (i = 0; i < 16; i++)\n        t[i] = n[i];\n    car25519(t);\n    car25519(t);\n    car25519(t);\n    for (j = 0; j < 2; j++) {\n        m[0] = t[0] - 0xffed;\n        for (i = 1; i < 15; i++) {\n            m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n            m[i - 1] &= 0xffff;\n        }\n        m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n        b = (m[15] >> 16) & 1;\n        m[14] &= 0xffff;\n        sel25519(t, m, 1 - b);\n    }\n    for (i = 0; i < 16; i++) {\n        o[2 * i] = t[i] & 0xff;\n        o[2 * i + 1] = t[i] >> 8;\n    }\n}\nfunction A(o, a, b) {\n    for (let i = 0; i < 16; i++)\n        o[i] = a[i] + b[i];\n}\nfunction Z(o, a, b) {\n    for (let i = 0; i < 16; i++)\n        o[i] = a[i] - b[i];\n}\nfunction M(o, a, b) {\n    let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0;\n    const b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n    v = a[0];\n    t0 += v * b0;\n    t1 += v * b1;\n    t2 += v * b2;\n    t3 += v * b3;\n    t4 += v * b4;\n    t5 += v * b5;\n    t6 += v * b6;\n    t7 += v * b7;\n    t8 += v * b8;\n    t9 += v * b9;\n    t10 += v * b10;\n    t11 += v * b11;\n    t12 += v * b12;\n    t13 += v * b13;\n    t14 += v * b14;\n    t15 += v * b15;\n    v = a[1];\n    t1 += v * b0;\n    t2 += v * b1;\n    t3 += v * b2;\n    t4 += v * b3;\n    t5 += v * b4;\n    t6 += v * b5;\n    t7 += v * b6;\n    t8 += v * b7;\n    t9 += v * b8;\n    t10 += v * b9;\n    t11 += v * b10;\n    t12 += v * b11;\n    t13 += v * b12;\n    t14 += v * b13;\n    t15 += v * b14;\n    t16 += v * b15;\n    v = a[2];\n    t2 += v * b0;\n    t3 += v * b1;\n    t4 += v * b2;\n    t5 += v * b3;\n    t6 += v * b4;\n    t7 += v * b5;\n    t8 += v * b6;\n    t9 += v * b7;\n    t10 += v * b8;\n    t11 += v * b9;\n    t12 += v * b10;\n    t13 += v * b11;\n    t14 += v * b12;\n    t15 += v * b13;\n    t16 += v * b14;\n    t17 += v * b15;\n    v = a[3];\n    t3 += v * b0;\n    t4 += v * b1;\n    t5 += v * b2;\n    t6 += v * b3;\n    t7 += v * b4;\n    t8 += v * b5;\n    t9 += v * b6;\n    t10 += v * b7;\n    t11 += v * b8;\n    t12 += v * b9;\n    t13 += v * b10;\n    t14 += v * b11;\n    t15 += v * b12;\n    t16 += v * b13;\n    t17 += v * b14;\n    t18 += v * b15;\n    v = a[4];\n    t4 += v * b0;\n    t5 += v * b1;\n    t6 += v * b2;\n    t7 += v * b3;\n    t8 += v * b4;\n    t9 += v * b5;\n    t10 += v * b6;\n    t11 += v * b7;\n    t12 += v * b8;\n    t13 += v * b9;\n    t14 += v * b10;\n    t15 += v * b11;\n    t16 += v * b12;\n    t17 += v * b13;\n    t18 += v * b14;\n    t19 += v * b15;\n    v = a[5];\n    t5 += v * b0;\n    t6 += v * b1;\n    t7 += v * b2;\n    t8 += v * b3;\n    t9 += v * b4;\n    t10 += v * b5;\n    t11 += v * b6;\n    t12 += v * b7;\n    t13 += v * b8;\n    t14 += v * b9;\n    t15 += v * b10;\n    t16 += v * b11;\n    t17 += v * b12;\n    t18 += v * b13;\n    t19 += v * b14;\n    t20 += v * b15;\n    v = a[6];\n    t6 += v * b0;\n    t7 += v * b1;\n    t8 += v * b2;\n    t9 += v * b3;\n    t10 += v * b4;\n    t11 += v * b5;\n    t12 += v * b6;\n    t13 += v * b7;\n    t14 += v * b8;\n    t15 += v * b9;\n    t16 += v * b10;\n    t17 += v * b11;\n    t18 += v * b12;\n    t19 += v * b13;\n    t20 += v * b14;\n    t21 += v * b15;\n    v = a[7];\n    t7 += v * b0;\n    t8 += v * b1;\n    t9 += v * b2;\n    t10 += v * b3;\n    t11 += v * b4;\n    t12 += v * b5;\n    t13 += v * b6;\n    t14 += v * b7;\n    t15 += v * b8;\n    t16 += v * b9;\n    t17 += v * b10;\n    t18 += v * b11;\n    t19 += v * b12;\n    t20 += v * b13;\n    t21 += v * b14;\n    t22 += v * b15;\n    v = a[8];\n    t8 += v * b0;\n    t9 += v * b1;\n    t10 += v * b2;\n    t11 += v * b3;\n    t12 += v * b4;\n    t13 += v * b5;\n    t14 += v * b6;\n    t15 += v * b7;\n    t16 += v * b8;\n    t17 += v * b9;\n    t18 += v * b10;\n    t19 += v * b11;\n    t20 += v * b12;\n    t21 += v * b13;\n    t22 += v * b14;\n    t23 += v * b15;\n    v = a[9];\n    t9 += v * b0;\n    t10 += v * b1;\n    t11 += v * b2;\n    t12 += v * b3;\n    t13 += v * b4;\n    t14 += v * b5;\n    t15 += v * b6;\n    t16 += v * b7;\n    t17 += v * b8;\n    t18 += v * b9;\n    t19 += v * b10;\n    t20 += v * b11;\n    t21 += v * b12;\n    t22 += v * b13;\n    t23 += v * b14;\n    t24 += v * b15;\n    v = a[10];\n    t10 += v * b0;\n    t11 += v * b1;\n    t12 += v * b2;\n    t13 += v * b3;\n    t14 += v * b4;\n    t15 += v * b5;\n    t16 += v * b6;\n    t17 += v * b7;\n    t18 += v * b8;\n    t19 += v * b9;\n    t20 += v * b10;\n    t21 += v * b11;\n    t22 += v * b12;\n    t23 += v * b13;\n    t24 += v * b14;\n    t25 += v * b15;\n    v = a[11];\n    t11 += v * b0;\n    t12 += v * b1;\n    t13 += v * b2;\n    t14 += v * b3;\n    t15 += v * b4;\n    t16 += v * b5;\n    t17 += v * b6;\n    t18 += v * b7;\n    t19 += v * b8;\n    t20 += v * b9;\n    t21 += v * b10;\n    t22 += v * b11;\n    t23 += v * b12;\n    t24 += v * b13;\n    t25 += v * b14;\n    t26 += v * b15;\n    v = a[12];\n    t12 += v * b0;\n    t13 += v * b1;\n    t14 += v * b2;\n    t15 += v * b3;\n    t16 += v * b4;\n    t17 += v * b5;\n    t18 += v * b6;\n    t19 += v * b7;\n    t20 += v * b8;\n    t21 += v * b9;\n    t22 += v * b10;\n    t23 += v * b11;\n    t24 += v * b12;\n    t25 += v * b13;\n    t26 += v * b14;\n    t27 += v * b15;\n    v = a[13];\n    t13 += v * b0;\n    t14 += v * b1;\n    t15 += v * b2;\n    t16 += v * b3;\n    t17 += v * b4;\n    t18 += v * b5;\n    t19 += v * b6;\n    t20 += v * b7;\n    t21 += v * b8;\n    t22 += v * b9;\n    t23 += v * b10;\n    t24 += v * b11;\n    t25 += v * b12;\n    t26 += v * b13;\n    t27 += v * b14;\n    t28 += v * b15;\n    v = a[14];\n    t14 += v * b0;\n    t15 += v * b1;\n    t16 += v * b2;\n    t17 += v * b3;\n    t18 += v * b4;\n    t19 += v * b5;\n    t20 += v * b6;\n    t21 += v * b7;\n    t22 += v * b8;\n    t23 += v * b9;\n    t24 += v * b10;\n    t25 += v * b11;\n    t26 += v * b12;\n    t27 += v * b13;\n    t28 += v * b14;\n    t29 += v * b15;\n    v = a[15];\n    t15 += v * b0;\n    t16 += v * b1;\n    t17 += v * b2;\n    t18 += v * b3;\n    t19 += v * b4;\n    t20 += v * b5;\n    t21 += v * b6;\n    t22 += v * b7;\n    t23 += v * b8;\n    t24 += v * b9;\n    t25 += v * b10;\n    t26 += v * b11;\n    t27 += v * b12;\n    t28 += v * b13;\n    t29 += v * b14;\n    t30 += v * b15;\n    t0 += 38 * t16;\n    t1 += 38 * t17;\n    t2 += 38 * t18;\n    t3 += 38 * t19;\n    t4 += 38 * t20;\n    t5 += 38 * t21;\n    t6 += 38 * t22;\n    t7 += 38 * t23;\n    t8 += 38 * t24;\n    t9 += 38 * t25;\n    t10 += 38 * t26;\n    t11 += 38 * t27;\n    t12 += 38 * t28;\n    t13 += 38 * t29;\n    t14 += 38 * t30;\n    // t15 left as is\n    // first car\n    c = 1;\n    v = t0 + c + 65535;\n    c = Math.floor(v / 65536);\n    t0 = v - c * 65536;\n    v = t1 + c + 65535;\n    c = Math.floor(v / 65536);\n    t1 = v - c * 65536;\n    v = t2 + c + 65535;\n    c = Math.floor(v / 65536);\n    t2 = v - c * 65536;\n    v = t3 + c + 65535;\n    c = Math.floor(v / 65536);\n    t3 = v - c * 65536;\n    v = t4 + c + 65535;\n    c = Math.floor(v / 65536);\n    t4 = v - c * 65536;\n    v = t5 + c + 65535;\n    c = Math.floor(v / 65536);\n    t5 = v - c * 65536;\n    v = t6 + c + 65535;\n    c = Math.floor(v / 65536);\n    t6 = v - c * 65536;\n    v = t7 + c + 65535;\n    c = Math.floor(v / 65536);\n    t7 = v - c * 65536;\n    v = t8 + c + 65535;\n    c = Math.floor(v / 65536);\n    t8 = v - c * 65536;\n    v = t9 + c + 65535;\n    c = Math.floor(v / 65536);\n    t9 = v - c * 65536;\n    v = t10 + c + 65535;\n    c = Math.floor(v / 65536);\n    t10 = v - c * 65536;\n    v = t11 + c + 65535;\n    c = Math.floor(v / 65536);\n    t11 = v - c * 65536;\n    v = t12 + c + 65535;\n    c = Math.floor(v / 65536);\n    t12 = v - c * 65536;\n    v = t13 + c + 65535;\n    c = Math.floor(v / 65536);\n    t13 = v - c * 65536;\n    v = t14 + c + 65535;\n    c = Math.floor(v / 65536);\n    t14 = v - c * 65536;\n    v = t15 + c + 65535;\n    c = Math.floor(v / 65536);\n    t15 = v - c * 65536;\n    t0 += c - 1 + 37 * (c - 1);\n    // second car\n    c = 1;\n    v = t0 + c + 65535;\n    c = Math.floor(v / 65536);\n    t0 = v - c * 65536;\n    v = t1 + c + 65535;\n    c = Math.floor(v / 65536);\n    t1 = v - c * 65536;\n    v = t2 + c + 65535;\n    c = Math.floor(v / 65536);\n    t2 = v - c * 65536;\n    v = t3 + c + 65535;\n    c = Math.floor(v / 65536);\n    t3 = v - c * 65536;\n    v = t4 + c + 65535;\n    c = Math.floor(v / 65536);\n    t4 = v - c * 65536;\n    v = t5 + c + 65535;\n    c = Math.floor(v / 65536);\n    t5 = v - c * 65536;\n    v = t6 + c + 65535;\n    c = Math.floor(v / 65536);\n    t6 = v - c * 65536;\n    v = t7 + c + 65535;\n    c = Math.floor(v / 65536);\n    t7 = v - c * 65536;\n    v = t8 + c + 65535;\n    c = Math.floor(v / 65536);\n    t8 = v - c * 65536;\n    v = t9 + c + 65535;\n    c = Math.floor(v / 65536);\n    t9 = v - c * 65536;\n    v = t10 + c + 65535;\n    c = Math.floor(v / 65536);\n    t10 = v - c * 65536;\n    v = t11 + c + 65535;\n    c = Math.floor(v / 65536);\n    t11 = v - c * 65536;\n    v = t12 + c + 65535;\n    c = Math.floor(v / 65536);\n    t12 = v - c * 65536;\n    v = t13 + c + 65535;\n    c = Math.floor(v / 65536);\n    t13 = v - c * 65536;\n    v = t14 + c + 65535;\n    c = Math.floor(v / 65536);\n    t14 = v - c * 65536;\n    v = t15 + c + 65535;\n    c = Math.floor(v / 65536);\n    t15 = v - c * 65536;\n    t0 += c - 1 + 37 * (c - 1);\n    o[0] = t0;\n    o[1] = t1;\n    o[2] = t2;\n    o[3] = t3;\n    o[4] = t4;\n    o[5] = t5;\n    o[6] = t6;\n    o[7] = t7;\n    o[8] = t8;\n    o[9] = t9;\n    o[10] = t10;\n    o[11] = t11;\n    o[12] = t12;\n    o[13] = t13;\n    o[14] = t14;\n    o[15] = t15;\n}\nfunction S(o, a) {\n    M(o, a, a);\n}\nfunction crypto_scalarmult(q, n, p) {\n    const z = new Uint8Array(32);\n    const x = new Float64Array(80);\n    let r, i;\n    const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n    for (i = 0; i < 31; i++)\n        z[i] = n[i];\n    z[31] = (n[31] & 127) | 64;\n    z[0] &= 248;\n    unpack25519(x, p);\n    for (i = 0; i < 16; i++) {\n        b[i] = x[i];\n        d[i] = a[i] = c[i] = 0;\n    }\n    a[0] = d[0] = 1;\n    for (i = 254; i >= 0; --i) {\n        r = (z[i >>> 3] >>> (i & 7)) & 1;\n        sel25519(a, b, r);\n        sel25519(c, d, r);\n        A(e, a, c);\n        Z(a, a, c);\n        A(c, b, d);\n        Z(b, b, d);\n        S(d, e);\n        S(f, a);\n        M(a, c, a);\n        M(c, b, e);\n        A(e, a, c);\n        Z(a, a, c);\n        S(b, a);\n        Z(c, d, f);\n        M(a, c, _121665);\n        A(a, a, d);\n        M(c, c, a);\n        M(a, d, f);\n        M(d, b, x);\n        S(b, e);\n        sel25519(a, b, r);\n        sel25519(c, d, r);\n    }\n    for (i = 0; i < 16; i++) {\n        x[i + 16] = a[i];\n        x[i + 32] = c[i];\n        x[i + 48] = b[i];\n        x[i + 64] = d[i];\n    }\n    const x32 = x.subarray(32);\n    const x16 = x.subarray(16);\n    inv25519(x32, x32);\n    M(x16, x16, x32);\n    pack25519(q, x16);\n    return q;\n}\nfunction crypto_scalarmult_base(q, n) {\n    return crypto_scalarmult(q, n, _9);\n}\nexport class MuNaclError extends Error {\n}\nexport function naclScalarMult(n, p) {\n    if (n.length !== crypto_scalarmult_SCALARBYTES) {\n        throw new MuNaclError('bad n size');\n    }\n    if (p.length !== crypto_scalarmult_BYTES) {\n        throw new MuNaclError('bad p size');\n    }\n    return crypto_scalarmult(new Uint8Array(crypto_scalarmult_BYTES), n, p);\n}\nexport function naclScalarMultBase(n) {\n    return naclScalarMult(n, _9);\n}\nexport function boxKeyPairFromSecretKey(secretKey) {\n    if (secretKey.length !== crypto_box_SECRETKEYBYTES) {\n        throw new MuNaclError('bad secret key size');\n    }\n    return {\n        publicKey: crypto_scalarmult_base(new Uint8Array(crypto_box_PUBLICKEYBYTES), secretKey),\n        secretKey: new Uint8Array(secretKey),\n    };\n}\n//# sourceMappingURL=munacl.js.map","// SPDX-License-Identifier: MIT\n// https://github.com/ethers-io/ethers.js/blob/main/LICENSE.md\n// This file avoids importing the Ethers library\n/**\n *  Returns true if %%value%% is a valid [[HexString]].\n *\n *  If %%length%% is ``true`` or a //number//, it also checks that\n *  %%value%% is a valid [[DataHexString]] of %%length%% (if a //number//)\n *  bytes of data (e.g. ``0x1234`` is 2 bytes).\n */\nexport function isHexString(value, length) {\n    if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n        return false;\n    }\n    if (typeof length === 'number' && value.length !== 2 + 2 * length) {\n        return false;\n    }\n    if (length === true && value.length % 2 !== 0) {\n        return false;\n    }\n    return true;\n}\n/**\n *  Returns true if %%value%% is a valid representation of arbitrary\n *  data (i.e. a valid [[DataHexString]] or a Uint8Array).\n */\nexport function isBytesLike(value) {\n    return isHexString(value, true) || value instanceof Uint8Array;\n}\n/**\n *  Get a typed Uint8Array for %%value%%. If already a Uint8Array\n *  the original %%value%% is returned; if a copy is required copy=true\n */\nexport function getBytes(value, name, copy) {\n    if (value instanceof Uint8Array) {\n        if (copy) {\n            return new Uint8Array(value);\n        }\n        return value;\n    }\n    if (typeof value === 'string' && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n        const result = new Uint8Array((value.length - 2) / 2);\n        let offset = 2;\n        for (let i = 0; i < result.length; i++) {\n            result[i] = parseInt(value.substring(offset, offset + 2), 16);\n            offset += 2;\n        }\n        return result;\n    }\n    throw new Error(`invalid BytesLike value ${name !== null && name !== void 0 ? name : ''}`);\n}\nconst HexCharacters = '0123456789abcdef';\n/**\n *  Returns a [[DataHexString]] representation of %%data%%.\n */\nexport function hexlify(data) {\n    const bytes = getBytes(data);\n    let result = '0x';\n    for (let i = 0; i < bytes.length; i++) {\n        const v = bytes[i];\n        result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n    }\n    return result;\n}\n/**\n * A //Quantity// does not have and leading 0 values unless the value is\n * the literal value `0x0`. This is most commonly used for JSSON-RPC\n * numeric values.\n *\n * It will parse '0x' prefixed hex strings, base-10 encoded numbers and numbers.\n *\n * @param quantity\n * @returns Quantity as an integer\n */\nexport function fromQuantity(quantity) {\n    if (typeof quantity === 'string') {\n        if (quantity.startsWith('0x')) {\n            return parseInt(quantity, 16);\n        }\n        return parseInt(quantity); // Assumed to be base 10\n    }\n    return quantity;\n}\n//# sourceMappingURL=ethersutils.js.map","// SPDX-License-Identifier: Apache-2.0\nimport { decode as cborDecode, encode as cborEncode } from 'cborg';\nimport deoxysii from '@oasisprotocol/deoxysii';\nimport { sha512_256 } from '@noble/hashes/sha512';\nimport { hmac } from '@noble/hashes/hmac';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { boxKeyPairFromSecretKey, crypto_box_SECRETKEYBYTES, naclScalarMult, } from './munacl.js';\nimport { isBytesLike, getBytes, hexlify } from './ethersutils.js';\n/**\n * Some Ethereum libraries are picky about hex encoding vs Uint8Array\n *\n * The ethers BytesLike type can be either, if the request came as a hex encoded\n * string we should return hex encoded string, if request came as Uint8Array we\n * should return one.\n *\n * Notably hardhat-ignition doesn't work well with Uint8Array responses\n *\n * @param example Some example data, where we should return the same type\n * @param output Output data\n * @returns Output data, as either hex encoded 0x-prefixed string, or Uint8Array\n */\nfunction asBytesLike(example, output) {\n    if (!isBytesLike(example) || !isBytesLike(output)) {\n        throw new Error('Not byteslike data!');\n    }\n    if (typeof example === 'string') {\n        if (typeof output === 'string') {\n            return output;\n        }\n        return hexlify(output);\n    }\n    if (typeof output === 'string') {\n        return hexlify(output);\n    }\n    return output;\n}\nexport var CipherKind;\n(function (CipherKind) {\n    CipherKind[CipherKind[\"X25519DeoxysII\"] = 1] = \"X25519DeoxysII\";\n})(CipherKind || (CipherKind = {}));\nfunction formatFailure(fail) {\n    if (fail.message)\n        return fail.message;\n    return `Call failed in module '${fail.module}' with code '${fail.code}'`;\n}\nexport class Cipher {\n    /** Encrypts the plaintext and encodes it for sending. */\n    encryptCall(calldata, nonce) {\n        // Txs without data are just balance transfers, and all data in those is public.\n        if (calldata === undefined || calldata === null || calldata.length === 0)\n            return '';\n        if (!isBytesLike(calldata)) {\n            throw new Error('Attempted to sign tx having non-byteslike data.');\n        }\n        const innerEnvelope = cborEncode({ body: getBytes(calldata) });\n        let ciphertext;\n        ({ ciphertext, nonce } = this.encrypt(innerEnvelope, nonce));\n        const envelope = {\n            format: this.kind,\n            body: {\n                pk: this.publicKey,\n                nonce,\n                data: ciphertext,\n                epoch: this.epoch,\n            },\n        };\n        return asBytesLike(calldata, cborEncode(envelope));\n    }\n    decryptCall(envelopeBytes) {\n        const envelope = cborDecode(getBytes(envelopeBytes));\n        if (!isEnvelopeFormatOk(envelope)) {\n            throw new EnvelopeError('Unexpected non-envelope!');\n        }\n        const result = this.decrypt(envelope.body.nonce, envelope.body.data);\n        const inner = cborDecode(result);\n        return asBytesLike(envelopeBytes, inner.body);\n    }\n    encryptResult(ok, innerFail, outerFail) {\n        if (ok || innerFail) {\n            if ((ok && innerFail) || outerFail) {\n                throw new EnvelopeError('Conflicting result envelope', {\n                    ok,\n                    innerFail,\n                    outerFail,\n                });\n            }\n            // Inner envelope is encrypted\n            const inner = cborEncode(innerFail ? { fail: innerFail } : { ok });\n            const { nonce, ciphertext: data } = this.encrypt(inner);\n            // Outer envelope is plaintext\n            const envelope = cborEncode({\n                ok: { nonce, data },\n            });\n            return envelope;\n        }\n        if (outerFail) {\n            // Outer failures are returned in plaintext\n            return cborEncode({ fail: outerFail });\n        }\n        throw new EnvelopeError('Cannot encrypt result with no data or failures!', {\n            ok,\n            innerFail,\n            outerFail,\n        });\n    }\n    /** Decrypts the data contained within a hex-encoded serialized envelope. */\n    decryptResult(callResult) {\n        var _a;\n        const envelope = cborDecode(getBytes(callResult));\n        if (envelope.fail) {\n            throw new EnvelopeError(formatFailure(envelope.fail), envelope.fail);\n        }\n        // Unencrypted results will have `ok` as bytes, not a struct\n        if (envelope.ok &&\n            (typeof envelope.ok === 'string' || envelope.ok instanceof Uint8Array)) {\n            throw new EnvelopeError('Received unencrypted envelope', envelope);\n        }\n        // Encrypted result will have `ok` as a CBOR encoded struct\n        const { nonce, data } = (_a = envelope.ok) !== null && _a !== void 0 ? _a : envelope.unknown;\n        const inner = cborDecode(this.decrypt(nonce, data));\n        if (inner.ok) {\n            return asBytesLike(callResult, getBytes(inner.ok));\n        }\n        if (inner.fail) {\n            throw new EnvelopeError(formatFailure(inner.fail), inner.fail);\n        }\n        throw new EnvelopeError(`Unexpected inner call result: ${JSON.stringify(inner)}`, inner);\n    }\n}\n/**\n * A {@link Cipher} that derives a shared secret using X25519 and then uses DeoxysII for encrypting using that secret.\n *\n * This is the default cipher.\n */\nexport class X25519DeoxysII extends Cipher {\n    /** Creates a new cipher using an ephemeral keypair stored in memory. */\n    static ephemeral(peerPublicKey, epoch) {\n        const keypair = boxKeyPairFromSecretKey(randomBytes(crypto_box_SECRETKEYBYTES));\n        return new X25519DeoxysII(keypair, getBytes(peerPublicKey), epoch);\n    }\n    static fromSecretKey(secretKey, peerPublicKey, epoch) {\n        const keypair = boxKeyPairFromSecretKey(getBytes(secretKey));\n        return new X25519DeoxysII(keypair, getBytes(peerPublicKey), epoch);\n    }\n    constructor(keypair, peerPublicKey, epoch) {\n        super();\n        this.kind = CipherKind.X25519DeoxysII;\n        this.publicKey = keypair.publicKey;\n        this.ephemeralKey = keypair.secretKey;\n        this.epoch = epoch;\n        // Derive a shared secret using X25519 (followed by hashing to remove ECDH bias).\n        const keyBytes = hmac\n            .create(sha512_256, new TextEncoder().encode('MRAE_Box_Deoxys-II-256-128'))\n            .update(naclScalarMult(keypair.secretKey, peerPublicKey))\n            .digest().buffer;\n        this.secretKey = new Uint8Array(keyBytes);\n        this.cipher = new deoxysii.AEAD(new Uint8Array(this.secretKey)); // deoxysii owns the input\n    }\n    encrypt(plaintext, nonce = randomBytes(deoxysii.NonceSize)) {\n        const ciphertext = this.cipher.encrypt(nonce, plaintext);\n        return { nonce, ciphertext };\n    }\n    decrypt(nonce, ciphertext) {\n        return this.cipher.decrypt(nonce, ciphertext);\n    }\n}\n// -----------------------------------------------------------------------------\n// Determine if the CBOR encoded calldata is a signed query or an evelope\nexport class EnvelopeError extends Error {\n    constructor(message, response) {\n        super(message);\n        this.response = response;\n    }\n}\nfunction isEnvelopeFormatOk(envelope) {\n    const { format, body } = envelope;\n    if (!body || !format) {\n        throw new EnvelopeError('No body or format specified', envelope);\n    }\n    if (format !== CipherKind.X25519DeoxysII) {\n        throw new EnvelopeError('Not encrypted format', envelope);\n    }\n    if (isBytesLike(body))\n        throw new EnvelopeError('Requires struct body', envelope);\n    if (!isBytesLike(body.data))\n        throw new EnvelopeError('No body data', envelope);\n    return true;\n}\nexport function isCalldataEnveloped(calldata) {\n    if (calldata === undefined) {\n        return false;\n    }\n    try {\n        const envelope = cborDecode(getBytes(calldata));\n        if (!isEnvelopeFormatOk(envelope)) {\n            throw new EnvelopeError('Bogus Sapphire enveloped data found in transaction!');\n        }\n        return true;\n    }\n    catch (e) {\n        if (e instanceof EnvelopeError)\n            throw e;\n    }\n    return false;\n}\n//# sourceMappingURL=cipher.js.map","// SPDX-License-Identifier: Apache-2.0\nexport const SUBCALL_ADDR = '0x0100000000000000000000000000000000000103';\n// NOTE: we hard-code the eth_call data, as it never changes\n//       It's equivalent to: abi_encode(['string', 'bytes'], ['core.CallDataPublicKey', cborEncode(null)])\nexport const CALLDATAPUBLICKEY_CALLDATA = '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000016636f72652e43616c6c446174615075626c69634b6579000000000000000000000000000000000000000000000000000000000000000000000000000000000001f600000000000000000000000000000000000000000000000000000000000000';\n//# sourceMappingURL=constants.js.map","// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport { decode as cborDecode } from 'cborg';\nimport { fromQuantity, getBytes } from './ethersutils.js';\nimport { SUBCALL_ADDR, CALLDATAPUBLICKEY_CALLDATA } from './constants.js';\nimport { X25519DeoxysII } from './cipher.js';\n/**\n * calldata public keys are cached for this amount of time\n * This prevents frequent unnecessary re-fetches\n * This time is in milliseconds\n */\nconst DEFAULT_PUBKEY_CACHE_EXPIRATION_MS = 60 * 5 * 1000;\nexport class FetchError extends Error {\n    constructor(message, response) {\n        super(message);\n        this.response = response;\n    }\n}\nfunction parseBigIntFromByteArray(bytes) {\n    const eight = BigInt(8);\n    return bytes.reduce((acc, byte) => (acc << eight) | BigInt(byte), BigInt(0));\n}\nclass AbiDecodeError extends Error {\n}\n/// Manual ABI-parsing of ['uint', 'bytes']\nfunction parseAbiEncodedUintBytes(bytes) {\n    if (bytes.length < 32 * 3) {\n        throw new AbiDecodeError('too short');\n    }\n    const status = parseBigIntFromByteArray(bytes.slice(0, 32));\n    const offset = Number(parseBigIntFromByteArray(bytes.slice(32, 64)));\n    if (bytes.length < offset + 32) {\n        throw new AbiDecodeError('too short, offset');\n    }\n    const data_length = Number(parseBigIntFromByteArray(bytes.slice(offset, offset + 32)));\n    if (bytes.length < offset + 32 + data_length) {\n        throw new AbiDecodeError('too short, data');\n    }\n    const data = bytes.slice(offset + 32, offset + 32 + data_length);\n    return [status, data];\n}\n/**\n * Picks the most user-trusted runtime calldata public key source based on what\n * connections are available.\n *\n * NOTE: MetaMask does not support Web3 methods it doesn't know about, so we\n *       have to fall-back to fetch()ing directly via the default chain gateway.\n */\nexport function fetchRuntimePublicKey(args) {\n    return __awaiter(this, void 0, void 0, function* () {\n        let chainId = undefined;\n        const { upstream } = args;\n        chainId = fromQuantity((yield upstream.request({\n            method: 'eth_chainId',\n        })));\n        // NOTE: we hard-code the eth_call data, as it never changes\n        //       It's equivalent to: // abi_encode(['string', 'bytes'], ['core.CallDataPublicKey', cborEncode(null)])\n        const call_resp = (yield upstream.request({\n            method: 'eth_call',\n            params: [\n                {\n                    to: SUBCALL_ADDR,\n                    data: CALLDATAPUBLICKEY_CALLDATA,\n                },\n                'latest',\n            ],\n        }));\n        if (call_resp === '0x') {\n            throw new Error(`fetchRuntimePublicKey - invalid response: ${call_resp}`);\n        }\n        const resp_bytes = getBytes(call_resp);\n        // NOTE: to avoid pulling-in a full ABI decoder dependency, slice it manually\n        const [resp_status, resp_cbor] = parseAbiEncodedUintBytes(resp_bytes);\n        if (resp_status !== BigInt(0)) {\n            throw new Error(`fetchRuntimePublicKey - invalid status: ${resp_status}`);\n        }\n        const response = cborDecode(resp_cbor);\n        return {\n            key: response.public_key.key,\n            checksum: response.public_key.checksum,\n            signature: response.public_key.signature,\n            epoch: response.epoch,\n            chainId,\n            fetched: new Date(),\n        };\n    });\n}\n/**\n * Retrieves calldata public keys from RPC provider\n */\nexport class KeyFetcher {\n    constructor(timeoutMilliseconds = DEFAULT_PUBKEY_CACHE_EXPIRATION_MS) {\n        this.timeoutMilliseconds = timeoutMilliseconds;\n    }\n    /**\n     * Retrieve cached key if possible, otherwise fetch a fresh one\n     *\n     * @param upstream Upstream ETH JSON-RPC provider\n     * @returns calldata public key\n     */\n    fetch(upstream) {\n        return __awaiter(this, void 0, void 0, function* () {\n            if (upstream === undefined) {\n                throw new Error('fetch() Upstream must not be undefined!');\n            }\n            if (this.pubkey) {\n                const pk = this.pubkey;\n                const expiry = Date.now() - this.timeoutMilliseconds;\n                if (pk.fetched && pk.fetched.valueOf() >= expiry) {\n                    // XXX: if provider switch chain, may return cached key for wrong chain\n                    return pk;\n                }\n            }\n            return (this.pubkey = yield fetchRuntimePublicKey({ upstream }));\n        });\n    }\n    cipher(upstream) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const { key, epoch } = yield this.fetch(upstream).catch((error) => {\n                // Log error to help debug: rainbowkit swallowed err if getChainId called this during connectToWallet\n                console.error('KeyFetcher.cipher failed', error);\n                throw error;\n            });\n            return X25519DeoxysII.ephemeral(key, epoch);\n        });\n    }\n    cipherSync() {\n        if (!this.pubkey) {\n            throw new Error('No cached pubkey!');\n        }\n        const { key, epoch } = this.pubkey;\n        return X25519DeoxysII.ephemeral(key, epoch);\n    }\n}\n//# sourceMappingURL=calldatapublickey.js.map","// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport { hexlify } from './ethersutils.js';\nimport { KeyFetcher } from './calldatapublickey.js';\nimport { SUBCALL_ADDR, CALLDATAPUBLICKEY_CALLDATA } from './constants.js';\nexport function isEthereumProvider(p) {\n    return 'request' in p && typeof p.request === 'function';\n}\nexport function isLegacyProvider(p) {\n    return 'send' in p && typeof p.send === 'function';\n}\nexport function fillOptions(options) {\n    if (!options) {\n        options = {};\n    }\n    if (!options.fetcher) {\n        options.fetcher = new KeyFetcher();\n    }\n    return options;\n}\n// -----------------------------------------------------------------------------\n// Wrap an Ethereum compatible provider to expose a consistent request() iface\nconst SAPPHIRE_WRAPPED_ETHEREUMPROVIDER = '#SAPPHIRE_WRAPPED_ETHEREUMPROVIDER';\nexport function isWrappedEthereumProvider(p) {\n    return p && SAPPHIRE_WRAPPED_ETHEREUMPROVIDER in p;\n}\n/**\n * Wrap an EIP-1193 or EIP-2696 compatible provider with Sapphire encryption\n *\n * ```typescript\n * const provider = wrapEthereumProvider(window.ethereum);\n * ```\n *\n * @param upstream Provides a send() or request() function\n * @param options (optional) Re-use parameters from other providers\n * @returns Sapphire wrapped provider\n */\nexport function wrapEthereumProvider(upstream, options) {\n    if (isWrappedEthereumProvider(upstream)) {\n        return upstream;\n    }\n    if (!isEthereumProvider(upstream) && !isLegacyProvider(upstream)) {\n        throw new Error('It is neither an Ethereum nor a Legacy provider');\n    }\n    const filled_options = fillOptions(options);\n    // if upstream provides a send() function but not request function\n    // then derive a request() function from the send() function\n    // if we do this, don't then re-wrap the send() function\n    // only wrap the send() function if there was a request() function\n    const request = makeSapphireRequestFn(upstream, filled_options);\n    const hooks = { request };\n    // We prefer a request() method, but a provider may expose a send() method\n    // Like Hardhat's LazyInitializationProviderAdapter, which is used with Ethers\n    // So, everything gets sent through the Sapphire-wrapped request() function\n    if ('send' in upstream)\n        hooks.send = (method, params) => {\n            return request({ method, params });\n        };\n    // sendAsync implementations vary too widely to be used as a standard\n    if ('sendAsync' in upstream)\n        hooks.sendAsync = () => {\n            throw new Error('sendAsync not supported!');\n        };\n    return makeTaggedProxyObject(upstream, SAPPHIRE_WRAPPED_ETHEREUMPROVIDER, filled_options, hooks);\n}\nconst SAPPHIRE_SNAP_ID = 'npm:@oasisprotocol/sapphire-snap';\nexport function detectSapphireSnap(provider) {\n    return __awaiter(this, void 0, void 0, function* () {\n        try {\n            const installedSnaps = (yield provider.request({\n                method: 'wallet_getSnaps',\n            }));\n            for (const snap of Object.values(installedSnaps)) {\n                if (snap.id === SAPPHIRE_SNAP_ID) {\n                    return snap.id;\n                }\n            }\n        }\n        catch (e) {\n            return undefined;\n        }\n    });\n}\nexport function notifySapphireSnap(snapId, cipher, transactionData, options, provider) {\n    return __awaiter(this, void 0, void 0, function* () {\n        if (cipher.ephemeralKey) {\n            const peerPublicKey = yield options.fetcher.fetch(provider);\n            yield provider.request({\n                method: 'wallet_invokeSnap',\n                params: {\n                    snapId: snapId,\n                    request: {\n                        method: 'setTransactionDecryptKeys',\n                        params: {\n                            id: transactionData,\n                            ephemeralSecretKey: hexlify(cipher.ephemeralKey),\n                            peerPublicKey: hexlify(peerPublicKey.key),\n                            peerPublicKeyEpoch: peerPublicKey.epoch,\n                        },\n                    },\n                },\n            });\n        }\n    });\n}\nconst SAPPHIRE_EIP1193_REQUESTFN = '#SAPPHIRE_EIP1193_REQUESTFN';\nexport function isWrappedRequestFn(p) {\n    return p && SAPPHIRE_EIP1193_REQUESTFN in p;\n}\nexport function isCallDataPublicKeyQuery(params) {\n    return (params &&\n        Array.isArray(params) &&\n        params.length > 0 &&\n        params[0].to === SUBCALL_ADDR &&\n        params[0].data === CALLDATAPUBLICKEY_CALLDATA);\n}\n/**\n * Creates an EIP-1193 compatible request() function\n * @param provider Upstream EIP-1193 provider to forward requests to\n * @param options\n * @returns\n */\nexport function makeSapphireRequestFn(provider, options) {\n    if (isWrappedRequestFn(provider.request)) {\n        return provider.request;\n    }\n    const filled_options = fillOptions(options);\n    const f = (args) => __awaiter(this, void 0, void 0, function* () {\n        const snapId = filled_options.enableSapphireSnap\n            ? yield detectSapphireSnap(provider)\n            : undefined;\n        const { method, params } = args;\n        let transactionData = undefined;\n        // Encrypt requests which can be encrypted\n        if (params &&\n            Array.isArray(params) &&\n            /^eth_((send|sign)Transaction|call|estimateGas)$/.test(method) &&\n            params[0].data // Ignore balance transfers without calldata\n        ) {\n            // TODO: should we attempt to detect `if (not sapphire) throw` instead of\n            // failing to fetch public key in the next line?\n            const cipher = yield filled_options.fetcher.cipher(provider);\n            transactionData = params[0].data = cipher.encryptCall(params[0].data);\n            if (snapId !== undefined && transactionData !== undefined) {\n                // Run in background so as to not delay results\n                notifySapphireSnap(snapId, cipher, transactionData, filled_options, provider);\n            }\n            const res = yield provider.request({\n                method,\n                params: params !== null && params !== void 0 ? params : [],\n            });\n            // Decrypt responses which return encrypted data\n            if (method === 'eth_call') {\n                // If it's an unencrypted core.CallDataPublicKey query, don't attempt to decrypt the response\n                if (!isCallDataPublicKeyQuery(params)) {\n                    return cipher.decryptResult(res);\n                }\n            }\n            return res;\n        }\n        else {\n            const res = yield provider.request({\n                method,\n                params: params !== null && params !== void 0 ? params : [],\n            });\n            return res;\n        }\n    });\n    return makeTaggedProxyObject(f, SAPPHIRE_EIP1193_REQUESTFN, filled_options);\n}\n// -----------------------------------------------------------------------------\nexport function makeTaggedProxyObject(upstream, propname, options, hooks) {\n    return new Proxy(upstream, {\n        has(target, p) {\n            if (p === propname)\n                return true;\n            return Reflect.has(target, p);\n        },\n        get(upstream, prop) {\n            var _a;\n            if (prop === propname)\n                return options;\n            if (hooks && prop in hooks)\n                return Reflect.get(hooks, prop);\n            const value = Reflect.get(upstream, prop);\n            // Brave wallet web3provider properties are read only and throw typeerror\n            // https://github.com/brave/brave-core/blob/74bf470a0291ea3719f1a75af066ee10b7057dbd/components/brave_wallet/resources/ethereum_provider.js#L13-L27\n            // https://github.com/wevm/wagmi/blob/86c42248c2f34260a52ee85183c607315ae63ce8/packages/core/src/connectors/injected.ts#L327-L335\n            const propWritable = ((_a = Object.getOwnPropertyDescriptor(upstream, prop)) === null || _a === void 0 ? void 0 : _a.writable) !== false;\n            if (typeof value === 'function' && propWritable) {\n                return value.bind(upstream);\n            }\n            return value;\n        },\n    });\n}\n//# sourceMappingURL=provider.js.map","// SPDX-License-Identifier: Apache-2.0\nimport { AbstractSigner, hexlify } from \"ethers\";\nimport { fillOptions, isCalldataEnveloped, makeTaggedProxyObject, } from \"@oasisprotocol/sapphire-paratime\";\nexport { NETWORKS } from \"@oasisprotocol/sapphire-paratime\";\n// ----------------------------------------------------------------------------\nfunction isEthersJsonRpcApiProvider(p) {\n    return \"send\" in p && typeof p.send === \"function\";\n}\nfunction hasRequestFunction(p) {\n    return \"request\" in p && typeof p.request === \"function\";\n}\n/// Get a JsonRpcApiProvider compatible provider from a ContractRunner\nfunction getProviderFromContractRunner(r) {\n    if (isEthersJsonRpcApiProvider(r)) {\n        return r;\n    }\n    if (r.provider && isEthersJsonRpcApiProvider(r.provider)) {\n        return r.provider;\n    }\n    return;\n}\n/**\n * Get a EIP-1193 compatible request() function from a ContractRunner\n * @param r Runner or other compatible provider\n * @returns `undefined` if there is no attached provider\n */\nfunction makeEthereumRequestFnFromProvider(r) {\n    if (hasRequestFunction(r)) {\n        return r.request;\n    }\n    const p = getProviderFromContractRunner(r);\n    if (!p)\n        return;\n    return async (request) => {\n        const { method, params } = request;\n        return p.send(method, params ?? []);\n    };\n}\n// ----------------------------------------------------------------------------\nconst SAPPHIRE_WRAPPED_ETHERS_SIGNER = \"#SAPPHIRE_WRAPPED_ETHERS_SIGNER\";\nfunction isWrappedSigner(p) {\n    return SAPPHIRE_WRAPPED_ETHERS_SIGNER in p;\n}\nexport class SignerHasNoProviderError extends Error {\n}\nfunction hookEthersSend(send, options, request) {\n    return (async (tx) => {\n        if (tx.data) {\n            const cipher = await options.fetcher.cipher({ request });\n            tx.data = hexlify(cipher.encryptCall(tx.data));\n        }\n        return send(tx);\n    });\n}\nexport function wrapEthersSigner(upstream, options) {\n    if (isWrappedSigner(upstream)) {\n        return upstream;\n    }\n    const filled_options = fillOptions(options);\n    let signer;\n    if (upstream.provider) {\n        const provider = wrapEthersProvider(upstream.provider, filled_options);\n        try {\n            signer = upstream.connect(provider);\n        }\n        catch (e) {\n            if (e.code !== \"UNSUPPORTED_OPERATION\")\n                throw e;\n            signer = upstream;\n        }\n    }\n    else {\n        signer = upstream;\n    }\n    // The signer must have been connected to a provider\n    const request = makeEthereumRequestFnFromProvider(signer);\n    if (!request) {\n        throw new SignerHasNoProviderError(\"Signer must be connected to a provider!\");\n    }\n    return makeTaggedProxyObject(signer, SAPPHIRE_WRAPPED_ETHERS_SIGNER, filled_options, {\n        sendTransaction: hookEthersSend(signer.sendTransaction.bind(signer), filled_options, request),\n        signTransaction: hookEthersSend(signer.signTransaction.bind(signer), filled_options, request),\n        call: hookEthersCall(signer, \"call\", filled_options, request),\n        estimateGas: hookEthersCall(signer, \"estimateGas\", filled_options, request),\n        connect(provider) {\n            const wp = signer.connect(provider);\n            return wrapEthersSigner(wp, filled_options);\n        },\n        request,\n    });\n}\n// ----------------------------------------------------------------------------\nconst SAPPHIRE_WRAPPED_ETHERS_PROVIDER = \"#SAPPHIRE_WRAPPED_ETHERS_PROVIDER\";\nfunction isWrappedProvider(p) {\n    return SAPPHIRE_WRAPPED_ETHERS_PROVIDER in p;\n}\nexport class ContractRunnerHasNoProviderError extends Error {\n}\nexport function wrapEthersProvider(provider, options) {\n    // Already wrapped, so don't wrap it again.\n    if (isWrappedProvider(provider)) {\n        return provider;\n    }\n    const request = makeEthereumRequestFnFromProvider(provider);\n    if (!request) {\n        throw new Error(\"Couldn't make request function!\");\n    }\n    const filled_options = fillOptions(options);\n    return makeTaggedProxyObject(provider, SAPPHIRE_WRAPPED_ETHERS_PROVIDER, filled_options, {\n        // Calls can be unsigned, but must be enveloped.\n        call: hookEthersCall(provider, \"call\", filled_options, request),\n        estimateGas: hookEthersCall(provider, \"estimateGas\", filled_options, request),\n        request,\n        // TODO: wrap `getSigner()`\n    });\n}\nfunction isEthersSigner(upstream) {\n    return upstream instanceof AbstractSigner;\n}\nasync function sendUnsignedCall(fn, call, is_already_enveloped, cipher) {\n    let call_data = call.data ?? undefined;\n    if (!is_already_enveloped) {\n        call_data = hexlify(cipher.encryptCall(call.data));\n    }\n    return await fn?.({\n        ...call,\n        data: call_data ? hexlify(call_data) : \"0x\",\n    });\n}\nfunction hookEthersCall(runner, method, options, request) {\n    return async (call) => {\n        const cipher = await options.fetcher.cipher({ request });\n        // If the calldata is already enveloped, don't wrap it in another envelope\n        const is_already_enveloped = isCalldataEnveloped(call.data ?? undefined);\n        const f = runner[method];\n        if (!f) {\n            throw new Error(`${method} not found in runner!`);\n        }\n        const res = await sendUnsignedCall(f.bind(runner), isEthersSigner(runner) ? await runner.populateCall(call) : call, is_already_enveloped, cipher);\n        // NOTE: if it's already enveloped, caller will decrypt it (not us)\n        if (!is_already_enveloped && res && typeof res === \"string\") {\n            return cipher.decryptResult(res);\n        }\n        return res;\n    };\n}\n//# sourceMappingURL=index.js.map","/**\n * Sapphire-aware provider / signer construction.\n *\n * The SDK runs on Oasis Sapphire, where every state-changing transaction must be encrypted via\n * {@code wrapEthersSigner} from {@code @oasisprotocol/sapphire-ethers-v6}. This module is the\n * single boundary through which write signers are built: it normalises the user-supplied signer\n * (private key string or {@link EthersSigner} instance), wraps it for confidential calls, and\n * surfaces a uniform {@link SapphireRequiredError} when wrapping fails (e.g. missing peer\n * dependency).\n *\n * Read-only providers do not need to be wrapped and are constructed via the shared\n * {@link createProvider} re-export.\n *\n *\n * @module providers/sapphire\n */\n\nimport { SapphireRequiredError, ValidationError } from '../errors/index.js';\nimport { Wallet } from '../adapters/ethers/index.js';\nimport { createProvider } from '../adapters/ethers/provider.js';\nimport { requireConfigString } from '../internal/validators/configAssert.js';\nimport { wrapEthersSigner } from '@oasisprotocol/sapphire-ethers-v6';\nimport log from '../internal/logger.js';\n\n/**\n * Wrap an ethers signer with the Sapphire confidential transaction wrapper.\n *\n * @description Delegates to {@code wrapEthersSigner}; any failure (typically a missing peer\n * dependency or unsupported signer shape) is logged at {@code warn} level and rethrown as a\n * {@link SapphireRequiredError} so callers see one canonical error type for \"Sapphire is not\n * available\".\n *\n * @public\n * @param {EthersSigner} signer - A standard ethers signer\n * @returns {WrappedEthersSigner} Sapphire-wrapped signer that encrypts transaction calldata\n * @throws {SapphireRequiredError} If {@code wrapEthersSigner} throws (typically because\n *   {@code @oasisprotocol/sapphire-ethers-v6} is not installed or the input is not a usable signer)\n */\nfunction wrapSigner(signer) {\n  try {\n    return wrapEthersSigner(signer);\n  } catch (error) {\n    log.warn('Failed to wrap signer with Sapphire', { error: error?.message });\n    throw new SapphireRequiredError(\n      `Failed to wrap signer with Sapphire: ${error.message}. ` +\n      `Make sure @oasisprotocol/sapphire-ethers-v6 is installed.`\n    );\n  }\n}\n\n/**\n * Build the Sapphire-wrapped signer used for every write call in the SDK.\n *\n * @description Accepts either a private-key hex string or an existing ethers {@link EthersSigner}\n * instance, normalises it into a {@code Wallet}-compatible signer (constructing one against\n * {@code rpcUrl} when given a key), and finally wraps it via {@link wrapSigner}. The\n * {@code role} label is forwarded to the underlying provider only as a log hint.\n *\n * @remarks Detection of \"is this a signer?\" is duck-typed on the presence of {@code signMessage};\n * any other input shape is rejected with {@link ValidationError}. Private-key strings are NOT\n * inspected here — invalid keys surface from the underlying {@code Wallet} constructor.\n *\n * @public\n * @param {string | EthersSigner} providedSigner - Private-key hex string, or an ethers signer\n * @param {string} [rpcUrl] - JSON-RPC URL used only when {@code providedSigner} is a private key\n * @param {string} [role] - Optional log label (defaults to {@code \"write\"})\n * @returns {WrappedEthersSigner} Sapphire-wrapped signer ready for encrypted writes\n * @throws {ConfigError} If a private-key string is provided without {@code rpcUrl}\n * @throws {ValidationError} If {@code providedSigner} is neither a string nor a signer-shaped\n *   object exposing {@code signMessage}\n * @throws {SapphireRequiredError} If Sapphire wrapping fails (see {@link wrapSigner})\n */\nfunction createWriteSigner(providedSigner, rpcUrl, role) {\n  let signer;\n  \n  if (typeof providedSigner === 'string') {\n    requireConfigString(\n      rpcUrl,\n      'rpcUrl',\n      'RPC URL is required when providing private key as string'\n    );\n    const provider = createProvider(rpcUrl, role);\n    signer = new Wallet(providedSigner, provider);\n  } \n  else if (providedSigner && typeof providedSigner.signMessage === 'function') {\n    signer = providedSigner;\n  }\n  else {\n    throw new ValidationError(\n      'Invalid signer. Must be a private key string, or a Signer instance.',\n      'providedSigner',\n      providedSigner\n    );\n  }\n\n  log.debug('createWriteSigner', { role: role ?? 'write' });\n\n  return wrapSigner(signer);\n}\n\nexport {\n  createProvider,\n  wrapSigner,\n  createWriteSigner,\n};\n","/**\n * Address normalisation helpers shared across auth / vault internals.\n *\n * @module internal/crypto/address\n */\n\nimport { getAddress } from '../../adapters/ethers/addresses.js';\nimport { requireAddress } from '../validation/assert.js';\n\n/**\n * Validate and EIP-55 checksum an EVM address (same semantics as {@code ethers.getAddress}).\n *\n * @public\n * @param {Address} address - EVM address (any case)\n * @returns {Address} Checksum-cased address\n * @throws {ValidationError} If {@code address} fails validation (raised by {@link requireAddress})\n */\nexport function toChecksumAddress(address) {\n  requireAddress(address, 'address');\n  return getAddress(address);\n}\n","/**\n * Resolve a 4-byte function selector from a contract ABI fragment list.\n *\n * @module internal/vault/getSelector\n */\n\nimport { Interface } from '../../adapters/ethers/encoding.js';\nimport { ValidationError } from '../../errors/index.js';\n\n/**\n * Look up {@code functionName} in {@code abi} and return its selector.\n *\n * @public\n * @param {ReadonlyArray<object>} abi - Contract ABI fragments\n * @param {string} functionName - Solidity function name (e.g. {@code 'changePassword'})\n * @returns {Bytes4} 4-byte selector hex string\n * @throws {ValidationError} If the function is not present in the ABI\n */\nfunction getSelector(abi, functionName) {\n  const iface = new Interface(abi);\n  const fragment = iface.getFunction(functionName, null);\n  if (!fragment) {\n    throw new ValidationError(\n      `Function \"${functionName}\" not found in ABI`,\n      'functionName',\n      functionName\n    );\n  }\n  return fragment.selector;\n}\n\nexport { getSelector };\n","/**\n * Action-scoped auth context: {@code paramsHash}, {@code actionHash}, and management actions.\n *\n * KeyVault {@code actionHash} is fetched on-chain via {@code computeActionHash}. Authenticator\n * {@code actionHash} is derived off-chain using the same formula as\n * {@code DualFactorAuthenticator._buildContext}.\n *\n * @module internal/auth/context/actionContext\n */\n\nimport { defaultAbiCoder } from '../../../adapters/ethers/encoding.js';\nimport { keccak256, toUtf8Bytes } from '../../../adapters/ethers/hashing.js';\nimport { getKeyVaultContract } from '../../../contracts/core/keyVault.js';\nimport { requireAddress, requireBytes32, requireBytes4, requireChainId, requirePlainObject, requireProviderMethod } from '../../validation/assert.js';\nimport { getSelector } from '../../vault/getSelector.js';\n\n/** @type {Bytes32} */\nconst AUTH_CONTEXT_TYPEHASH = keccak256(toUtf8Bytes('MONSTERA_AUTH_CONTEXT_V1'));\n\n/**\n * Hash user-controlled parameters for a vault / authenticator call (excluding {@code authProof}).\n *\n * @public\n * @param {string[]} types\n * @param {unknown[]} values\n * @returns {Bytes32}\n */\nfunction computeParamsHash(types, values) {\n  return keccak256(defaultAbiCoder.encode(types, values));\n}\n\n/**\n * Validate caller-supplied action input ({@code selector} + {@code paramsHash}, optional {@code target}).\n *\n * @public\n * @param {AuthActionInput} action\n * @throws {ValidationError}\n */\nfunction assertAuthActionInput(action) {\n  requirePlainObject(action, 'action', { message: 'action is required' });\n  requireBytes32(action.paramsHash, 'action.paramsHash');\n  requireBytes4(action.selector, 'action.selector');\n\n  if (action.target != null) {\n    requireAddress(action.target, 'action.target');\n  }\n}\n\n/**\n * Build a management call action ({@code target}, {@code selector}, {@code paramsHash}).\n *\n * @public\n * @param {ReadonlyArray<object>} abi\n * @param {string} functionName\n * @param {string[]} paramTypes\n * @param {unknown[]} paramValues\n * @param {Address} target\n * @returns {AuthActionInput}\n */\nfunction _validateManagementParams(paramTypes, paramValues, paramNames = []) {\n  for (let i = 0; i < paramTypes.length; i++) {\n    const type = paramTypes[i];\n    const value = paramValues[i];\n    const name = paramNames[i] ?? `param${i}`;\n\n    if (type === 'bytes32') {\n      requireBytes32(value, name);\n    } else if (type === 'address') {\n      requireAddress(value, name);\n    }\n  }\n}\n\nfunction buildManagementAction(abi, functionName, paramTypes, paramValues, target, paramNames = []) {\n  _validateManagementParams(paramTypes, paramValues, paramNames);\n  return {\n    target,\n    selector: getSelector(abi, functionName),\n    paramsHash: computeParamsHash(paramTypes, paramValues)\n  };\n}\n\n/**\n * Assemble a full {@link AuthContext} once {@code actionHash} is known.\n *\n * @public\n * @param {Object} params\n * @param {Address} params.target\n * @param {Bytes4} params.selector\n * @param {Bytes32} params.paramsHash\n * @param {Bytes32} params.actionHash\n * @returns {AuthContext}\n */\nfunction buildAuthContext({ target, selector, paramsHash, actionHash }) {\n  requireAddress(target, 'target');\n  requireBytes4(selector, 'selector');\n  requireBytes32(paramsHash, 'paramsHash');\n  requireBytes32(actionHash, 'actionHash');\n  return { target, selector, paramsHash, actionHash };\n}\n\n/**\n * Fetch {@code actionHash} from a KeyVault ({@code target = vault}).\n *\n * @public\n * @async\n * @param {Object} params\n * @param {EthersAbstractProvider} params.readProvider\n * @param {Address} params.keyVaultAddr\n * @param {Bytes4} params.selector\n * @param {Bytes32} params.paramsHash\n * @returns {Promise<Bytes32>}\n */\nasync function fetchKeyVaultActionHash({ readProvider, keyVaultAddr, selector, paramsHash }) {\n  requireAddress(keyVaultAddr, 'keyVaultAddr');\n  requireBytes4(selector, 'selector');\n  requireBytes32(paramsHash, 'paramsHash');\n\n  const keyVault = getKeyVaultContract(readProvider, keyVaultAddr);\n  return keyVault.computeActionHash(selector, paramsHash);\n}\n\n/**\n * Resolve the canonical {@code actionHash} for a vault or authenticator call.\n *\n * @public\n * @async\n * @param {Object} ctx\n * @param {EthersAbstractProvider} ctx.readProvider\n * @param {ChainId} ctx.chainId\n * @param {Address} ctx.keyVaultAddr\n * @param {Object} input\n * @param {AuthActionInput} [input.action]\n * @param {Bytes32} [input.actionHash]\n * @returns {Promise<Bytes32>}\n */\nasync function resolveActionHash(ctx, { action, actionHash }) {\n  if (actionHash != null) {\n    requireBytes32(actionHash, 'actionHash');\n    return actionHash;\n  }\n\n  assertAuthActionInput(action);\n  const target = action.target ?? ctx.keyVaultAddr;\n  const { selector, paramsHash } = action;\n\n  if (target.toLowerCase() === ctx.keyVaultAddr.toLowerCase()) {\n    return fetchKeyVaultActionHash({\n      readProvider: ctx.readProvider,\n      keyVaultAddr: ctx.keyVaultAddr,\n      selector,\n      paramsHash\n    });\n  }\n\n  return computeAuthenticatorActionHash({\n    readProvider: ctx.readProvider,\n    chainId: ctx.chainId,\n    authenticatorAddr: target,\n    keyVaultAddr: ctx.keyVaultAddr,\n    selector,\n    paramsHash\n  });\n}\n\n/**\n * Compute {@code actionHash} for authenticator management calls off-chain.\n *\n * @public\n * @async\n * @param {Object} params\n * @param {EthersAbstractProvider} [params.readProvider]\n * @param {ChainId} [params.chainId]\n * @param {Address} params.authenticatorAddr\n * @param {Address} params.keyVaultAddr\n * @param {Bytes4} params.selector\n * @param {Bytes32} params.paramsHash\n * @returns {Promise<Bytes32>}\n */\nasync function computeAuthenticatorActionHash({\n  readProvider,\n  chainId,\n  authenticatorAddr,\n  keyVaultAddr,\n  selector,\n  paramsHash\n}) {\n  requireAddress(authenticatorAddr, 'authenticatorAddr');\n  requireAddress(keyVaultAddr, 'keyVaultAddr');\n  requireBytes4(selector, 'selector');\n  requireBytes32(paramsHash, 'paramsHash');\n\n  let resolvedChainId = chainId;\n  if (resolvedChainId == null) {\n    requireProviderMethod(readProvider, 'getNetwork', 'chainId', {\n      message: 'chainId or readProvider with getNetwork is required'\n    });\n    const network = await readProvider.getNetwork();\n    resolvedChainId = network.chainId;\n  } else {\n    resolvedChainId = requireChainId(resolvedChainId, 'chainId');\n  }\n\n  return keccak256(\n    defaultAbiCoder.encode(\n      ['bytes32', 'uint256', 'address', 'address', 'bytes4', 'bytes32'],\n      [AUTH_CONTEXT_TYPEHASH, resolvedChainId, keyVaultAddr, authenticatorAddr, selector, paramsHash]\n    )\n  );\n}\n\nexport {\n  AUTH_CONTEXT_TYPEHASH,\n  computeParamsHash,\n  assertAuthActionInput,\n  buildManagementAction,\n  buildAuthContext,\n  fetchKeyVaultActionHash,\n  computeAuthenticatorActionHash,\n  resolveActionHash\n};\n","/**\n * Shared auth-proof pipeline helpers: action-bound encoders, defaults, password hash resolution.\n *\n * @module internal/auth/proof/common\n */\n\nimport { keccak256 } from '../../../adapters/ethers/hashing.js';\nimport { resolveActionHash } from '../context/actionContext.js';\nimport { isPlainObject } from '../../validation/assert.js';\nimport { nowUnixTimestampSeconds } from '../../utils/time.js';\n\n/** @readonly */\nexport const DEFAULT_PROOF_DEADLINE_OFFSET_SEC = 3600;\n\n/**\n * @returns {number}\n */\nexport function defaultProofDeadline() {\n  return nowUnixTimestampSeconds() + DEFAULT_PROOF_DEADLINE_OFFSET_SEC;\n}\n\n/**\n * @param {Record<string, unknown>} options\n * @returns {Record<string, unknown>}\n */\nexport function pickAuthProofPartial(options) {\n  return isPlainObject(options.authProof) ? /** @type {Record<string, unknown>} */ (options.authProof) : {};\n}\n\n/**\n * Resolve password hash from explicit hash, UTF-8 password bytes, or top-level options.\n *\n * @param {Record<string, unknown>} partial\n * @param {Record<string, unknown>} options\n * @returns {Bytes32 | undefined}\n */\nexport function resolvePasswordHashFromProofInput(partial, options) {\n  if (partial.passwordHash != null) {\n    return /** @type {Bytes32} */ (partial.passwordHash);\n  }\n  if (partial.password != null) {\n    return keccak256(/** @type {Uint8Array} */ (partial.password));\n  }\n  if (options.passwordHash != null) {\n    return /** @type {Bytes32} */ (options.passwordHash);\n  }\n  if (options.password != null) {\n    return keccak256(/** @type {Uint8Array} */ (options.password));\n  }\n  return undefined;\n}\n\n/**\n * Build a proof encoder strategy that resolves {@code actionHash} then delegates to {@code createProof}.\n *\n * @public\n * @template TInput\n * @param {Object} spec\n * @param {string} spec.id - Registry identifier\n * @param {(ctx: AuthProofEncodeContext & TInput & { actionHash: Bytes32 }) => Promise<Bytes> | Bytes} spec.createProof\n * @param {boolean} [spec.withDeadline=false] - Default {@code deadline} when omitted\n * @param {(input: TInput) => void} [spec.validateInput] - Optional pre-flight validation\n * @returns {{ id: string, encode: (ctx: AuthProofEncodeContext, input: TInput) => Promise<Bytes> }}\n */\nexport function createActionBoundEncoder({ id, createProof, withDeadline = false, validateInput }) {\n  return {\n    id,\n\n    /**\n     * @param {AuthProofEncodeContext} ctx\n     * @param {TInput} input\n     * @returns {Promise<Bytes>}\n     */\n    async encode(ctx, input) {\n      if (validateInput) {\n        validateInput(input);\n      }\n\n      const actionHash = await resolveActionHash(ctx, {\n        action: input.action,\n        actionHash: input.actionHash\n      });\n\n      const proofInput = { ...ctx, ...input, actionHash };\n      if (withDeadline && proofInput.deadline == null) {\n        proofInput.deadline = defaultProofDeadline();\n      }\n\n      return createProof(proofInput);\n    }\n  };\n}\n","/**\n * Trivial ABI-encoded auth proofs (no signing or provider calls).\n *\n * @module internal/auth/proof/builders/abiProofs\n */\n\nimport { defaultAbiCoder } from '../../../../adapters/ethers/encoding.js';\nimport { requireUtf8Bytes, requireBytes32, requireAddress, requireNonEmptyBytes } from '../../../validation/assert.js';\n\n/**\n * Build {@code authProof} bytes for the {@code PasswordAuthenticator}.\n *\n * @param {Object} options\n * @param {Uint8Array} options.password - UTF-8 password bytes\n * @param {Bytes32} options.actionHash - Canonical action hash\n * @returns {EncodedAuthProofPassword}\n */\nexport function createAuthProofPassword({ password, actionHash }) {\n  requireUtf8Bytes(password, 'password');\n  requireBytes32(actionHash, 'actionHash');\n  return defaultAbiCoder.encode(['bytes', 'bytes32'], [password, actionHash]);\n}\n\n/**\n * Build {@code authProof} bytes for the {@code MultiAuthenticator}.\n *\n * @param {Object} options\n * @param {Address} options.child - Enabled child authenticator address\n * @param {Bytes} options.childProof - Child authenticator proof bytes\n * @returns {EncodedAuthProofMulti}\n */\nexport function createAuthProofMulti({ child, childProof }) {\n  requireAddress(child, 'child');\n  requireNonEmptyBytes(childProof, 'childProof');\n  return defaultAbiCoder.encode(['address', 'bytes'], [child, childProof]);\n}\n","/**\n * Form Template Method for built-in authenticator specs.\n *\n * Builds a complete {@link BuiltinAuthenticatorSpec} from identity + hooks so each\n * authenticator file only declares what differs (session, collect keys, map fields,\n * validation, encoders).\n *\n * @module internal/auth/specs/createAuthenticatorSpec\n */\n\nimport { ValidationError } from '../../../errors/index.js';\nimport { requireAddress } from '../../validation/assert.js';\nimport { defaultProofDeadline, pickAuthProofPartial } from '../proof/common.js';\n\n/**\n * Session hook: keep {@code field} when set; otherwise read it from the credentials session.\n *\n * @param {string} field\n * @param {(session: import('../session/ConnectSession.js').ConnectSession) => unknown} readFromSession\n * @param {string} missingMessage\n * @returns {(session: import('../session/ConnectSession.js').ConnectSession | null, partial: Record<string, unknown>) => Record<string, unknown>}\n */\nexport function requirePartialOrSession(field, readFromSession, missingMessage) {\n  return (session, partial) => {\n    if (partial[field] != null) {\n      return partial;\n    }\n    if (!session) {\n      throw new ValidationError(missingMessage, `authProof.${field}`, partial[field]);\n    }\n    const value = readFromSession(session);\n    if (value == null) {\n      throw new ValidationError(missingMessage, `authProof.${field}`, value);\n    }\n    return { ...partial, [field]: value };\n  };\n}\n\n/**\n * Session hook: require {@code field} on the partial (no session fallback).\n *\n * @param {string} field\n * @param {string} missingMessage\n * @returns {(session: import('../session/ConnectSession.js').ConnectSession | null, partial: Record<string, unknown>) => Record<string, unknown>}\n */\nexport function requirePartialField(field, missingMessage) {\n  return (_session, partial) => {\n    if (partial[field] == null) {\n      throw new ValidationError(missingMessage, `authProof.${field}`, partial[field]);\n    }\n    return partial;\n  };\n}\n\n/**\n * @param {Record<string, unknown>} options\n * @param {string[]} keys\n * @param {Record<string, (partial: Record<string, unknown>, options: Record<string, unknown>) => unknown>} [resolve]\n * @returns {Record<string, unknown>}\n */\nfunction _defaultCollectProofInput(options, keys, resolve = {}) {\n  const partial = pickAuthProofPartial(options);\n  /** @type {Record<string, unknown>} */\n  const out = { ...partial };\n\n  for (const key of keys) {\n    out[key] = partial[key] ?? options[key];\n  }\n\n  for (const [key, resolver] of Object.entries(resolve)) {\n    out[key] = resolver(partial, options);\n  }\n\n  return out;\n}\n\n/**\n * @param {Record<string, unknown>} resolved\n * @param {Address} authenticatorAddr\n * @param {Record<string, true | ((resolved: Record<string, unknown>) => unknown)>} mapFields\n * @returns {Record<string, unknown>}\n */\nfunction _defaultMapSessionResolved(resolved, authenticatorAddr, mapFields) {\n  /** @type {Record<string, unknown>} */\n  const out = {\n    keyVaultAddr: resolved.keyVaultAddr,\n    authenticatorAddr\n  };\n\n  for (const [key, mapper] of Object.entries(mapFields)) {\n    out[key] = typeof mapper === 'function' ? mapper(resolved) : resolved[key];\n  }\n\n  return out;\n}\n\n/**\n * @param {Object} def\n * @param {string} def.id\n * @param {string} def.flowId\n * @param {keyof ContractAddresses} def.addressKey\n * @param {boolean} [def.withDeadline=false]\n * @param {boolean} [def.includeAddresses=false]\n * @param {(session: import('../session/ConnectSession.js').ConnectSession | null, partial: Record<string, unknown>) => Record<string, unknown>} def.applySessionInput\n * @param {string[]} [def.collectKeys=[]]\n * @param {Record<string, (partial: Record<string, unknown>, options: Record<string, unknown>) => unknown>} [def.collectResolve]\n * @param {(options: Record<string, unknown>) => Record<string, unknown>} [def.collectProofInput]\n * @param {Record<string, true | ((resolved: Record<string, unknown>) => unknown)>} [def.mapFields={}]\n * @param {(resolved: Record<string, unknown>, authenticatorAddr: Address) => Record<string, unknown>} [def.mapSessionResolved]\n * @param {(options: Record<string, unknown>) => void} [def.validate]\n * @param {(options: Record<string, unknown>) => void} [def.validatePrepareInput]\n * @param {(config: MonsteraConfigOptions, options: Record<string, unknown>) => Record<string, unknown>} [def.applyConfigDefaults]\n * @param {KeyVaultAuthProofEncoder} def.proofEncoder\n * @param {CreateWalletAuthEncoder | ((authConfig: Record<string, unknown>) => Bytes)} def.configEncoder\n * @param {(encodeCtx: AuthProofEncodeContext, input: Record<string, unknown>) => Promise<unknown>} [def.prepareProofResult]\n * @returns {BuiltinAuthenticatorSpec}\n */\nexport function createAuthenticatorSpec(def) {\n  const {\n    id,\n    flowId,\n    addressKey,\n    withDeadline = false,\n    includeAddresses = false,\n    applySessionInput,\n    collectKeys = [],\n    collectResolve,\n    collectProofInput: collectProofInputOverride,\n    mapFields = {},\n    mapSessionResolved: mapSessionResolvedOverride,\n    validate,\n    validatePrepareInput: validatePrepareInputOverride,\n    applyConfigDefaults: applyConfigDefaultsOverride,\n    proofEncoder,\n    configEncoder,\n    prepareProofResult\n  } = def;\n\n  const normalizedConfigEncoder =\n    typeof configEncoder === 'function'\n      ? { id, encode: configEncoder }\n      : configEncoder;\n\n  /** @type {BuiltinAuthenticatorSpec} */\n  const spec = {\n    id,\n    flowId,\n    addressKey,\n\n    applySessionInput,\n\n    collectProofInput:\n      collectProofInputOverride ??\n      ((options) => _defaultCollectProofInput(options, collectKeys, collectResolve)),\n\n    mapSessionResolved:\n      mapSessionResolvedOverride ??\n      ((resolved, authenticatorAddr) =>\n        _defaultMapSessionResolved(resolved, authenticatorAddr, mapFields)),\n\n    applyConfigDefaults:\n      applyConfigDefaultsOverride ??\n      ((config, options) => ({\n        ...options,\n        ...(includeAddresses\n          ? { addresses: options.addresses ?? config.addresses }\n          : {}),\n        authenticatorAddr: options.authenticatorAddr ?? config.addresses[addressKey],\n        ...(withDeadline ? { deadline: options.deadline ?? defaultProofDeadline() } : {}),\n        chainId: config.chainId\n      })),\n\n    validatePrepareInput:\n      validatePrepareInputOverride ??\n      ((options) => {\n        requireAddress(options.keyVaultAddr, 'keyVaultAddr');\n        validate?.(options);\n      }),\n\n    proofEncoder,\n    configEncoder: normalizedConfigEncoder\n  };\n\n  if (prepareProofResult) {\n    spec.prepareProofResult = prepareProofResult;\n  }\n\n  return spec;\n}\n","/**\n * PasswordAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/password\n */\n\nimport { requireBytes32, requireUtf8Bytes } from '../../validation/assert.js';\nimport { createActionBoundEncoder } from '../proof/common.js';\nimport { createAuthProofPassword } from '../proof/builders/abiProofs.js';\nimport {\n  createAuthenticatorSpec,\n  requirePartialOrSession\n} from './createAuthenticatorSpec.js';\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const passwordAuthenticator = createAuthenticatorSpec({\n  id: 'passwordAuth',\n  flowId: 'password',\n  addressKey: 'passwordAuth',\n\n  applySessionInput: requirePartialOrSession(\n    'password',\n    (session) => session.getPasswordBytes(),\n    'authProof.password is required when no credentials session is active'\n  ),\n\n  collectKeys: ['password'],\n  mapFields: {\n    password: (resolved) => resolved.currentPassword ?? resolved.password\n  },\n  validate: (options) => requireUtf8Bytes(options.password, 'password'),\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'passwordAuth',\n    validateInput: ({ password }) => requireUtf8Bytes(password, 'password'),\n    createProof: ({ password, actionHash }) => createAuthProofPassword({ password, actionHash })\n  }),\n\n  configEncoder: (authConfig) => {\n    const { passwordHash } = authConfig;\n    requireBytes32(passwordHash, 'passwordHash');\n    return passwordHash;\n  }\n});\n","/**\n * Composed validation rules for the auth-proof helpers in {@code internal/auth/proof/}.\n *\n * Holding the rules in one module keeps {@code Monstera}'s public methods, the proof builders,\n * and the underlying crypto helpers aligned — every entry point for a given proof type uses the\n * same assertions, so divergence is impossible.\n *\n * @module internal/validators/authProofOptions\n */\n\nimport {\n  requireAddress,\n  requireBytes32,\n  requireWalletOrHdNode,\n  requireChainId,\n  requirePositiveInteger,\n  requireProviderMethod,\n  isInFuture\n} from '../validation/assert.js';\n\n/**\n * Assert the inputs of {@link createAuthProofWalletSignature}.\n *\n * @public\n * @param {CreateAuthProofWalletSignatureOptions} options - Caller options\n * @returns {{ normalizedChainId: ChainId }} Validated chain id\n * @throws {ValidationError} If {@code signer} is not a {@code Wallet}/{@code HDNodeWallet}\n *   ({@link requireWalletOrHdNode}); {@code chainId} is missing/invalid ({@link requireChainId});\n *   {@code authenticatorAddr} or {@code keyVaultAddr} fail address validation\n *   ({@link requireAddress}); {@code deadline} is not a positive integer\n *   ({@link requirePositiveInteger}); {@code deadline} is in the past ({@link isInFuture}); or\n *   {@code actionHash} is missing\n */\nexport function assertWalletSignatureAuthProofOptions(options) {\n  const { signer, chainId, authenticatorAddr, deadline, keyVaultAddr, actionHash } = options;\n\n  requireWalletOrHdNode(signer, 'signer');\n  const normalizedChainId = requireChainId(chainId, 'chainId');\n  requireAddress(authenticatorAddr, 'authenticatorAddr');\n  requireAddress(keyVaultAddr, 'keyVaultAddr');\n  requirePositiveInteger(deadline, 'deadline');\n  isInFuture(deadline, 'deadline');\n  requireBytes32(actionHash, 'actionHash');\n\n  return { normalizedChainId };\n}\n\n/**\n * Assert the inputs of {@link createAuthProofMinuteSignature}.\n *\n * @public\n * @param {CreateAuthProofMinuteSignatureWithProviderOptions} options - Caller options\n * @returns {{ normalizedChainId: ChainId }} Validated chain id\n * @throws {ValidationError} If {@code provider} does not expose {@code getBlock};\n *   {@code keyVaultAddr} or {@code authenticatorAddr} fail address validation;\n *   {@code chainId} is missing/invalid; {@code passwordHash} is not a 32-byte hex string; or\n *   {@code actionHash} is missing\n */\nexport function assertMinuteSignatureAuthProofOptions(options) {\n  const { provider, keyVaultAddr, authenticatorAddr, chainId, passwordHash, actionHash } = options;\n\n  requireProviderMethod(provider, 'getBlock', 'provider');\n  requireAddress(keyVaultAddr, 'keyVaultAddr');\n  requireAddress(authenticatorAddr, 'authenticatorAddr');\n  const normalizedChainId = requireChainId(chainId, 'chainId');\n  requireBytes32(passwordHash, 'passwordHash');\n  requireBytes32(actionHash, 'actionHash');\n\n  return { normalizedChainId };\n}\n\n/**\n * Assert the inputs of {@link createAuthProofDualFactor}.\n *\n * @description Re-uses {@link assertMinuteSignatureAuthProofOptions} for the shared minute-proof\n * fields, then adds the dual-factor-specific guardian signer + EIP-712 deadline checks.\n *\n * @public\n * @param {CreateAuthProofDualFactorWithProviderOptions} options - Caller options\n * @returns {{ normalizedChainId: ChainId }} Validated chain id\n * @throws {ValidationError} Forwarded from {@link assertMinuteSignatureAuthProofOptions}; plus\n *   thrown if {@code signer} is not a {@code Wallet}/{@code HDNodeWallet}, or {@code deadline} is not\n *   a positive integer or is in the past\n */\nexport function assertDualFactorAuthProofOptions(options) {\n  const { signer, deadline } = options;\n\n  const { normalizedChainId } = assertMinuteSignatureAuthProofOptions(options);\n\n  requireWalletOrHdNode(signer, 'signer');\n  requirePositiveInteger(deadline, 'deadline');\n  isInFuture(deadline, 'deadline');\n\n  return { normalizedChainId };\n}\n","/**\n * PasswordMinuteSignatureAuthenticator auth-proof builder.\n *\n * @module internal/auth/proof/builders/minuteSignature\n */\n\nimport { Wallet } from '../../../../adapters/ethers/index.js';\nimport { defaultAbiCoder } from '../../../../adapters/ethers/encoding.js';\nimport { getBytes, keccak256, solidityPacked } from '../../../../adapters/ethers/hashing.js';\nimport { assertMinuteSignatureAuthProofOptions } from '../../../validators/authProofOptions.js';\nimport { floorTimestampToMinuteBucket } from '../../../utils/time.js';\nimport { NetworkError } from '../../../../errors/index.js';\nimport log from '../../../logger.js';\n\n/**\n * @param {CreateAuthProofMinuteSignatureWithProviderOptions} options\n * @param {ChainId} normalizedChainId\n * @param {Bytes32} actionHash\n * @returns {Promise<CreateAuthProofMinuteSignatureResult>}\n */\nexport async function encodeMinuteSignatureProofPayload(options, normalizedChainId, actionHash) {\n  const { provider, keyVaultAddr, authenticatorAddr, passwordHash } = options;\n\n  const block = await provider.getBlock('latest');\n  if (!block) {\n    throw new NetworkError('Failed to read latest block from provider', null, null);\n  }\n  const minuteBucket = floorTimestampToMinuteBucket(block.timestamp);\n\n  const minuteSeed = keccak256(\n    solidityPacked(['bytes32', 'uint256'], [passwordHash, BigInt(minuteBucket)])\n  );\n\n  const derivedSigner = new Wallet(minuteSeed);\n\n  const payloadHash = keccak256(\n    solidityPacked(\n      ['address', 'address', 'uint256', 'uint256', 'bytes32'],\n      [keyVaultAddr, authenticatorAddr, BigInt(normalizedChainId), BigInt(minuteBucket), actionHash]\n    )\n  );\n\n  const signature = await derivedSigner.signMessage(getBytes(payloadHash));\n  const authProof = defaultAbiCoder.encode(['bytes'], [signature]);\n\n  log.debug('encodeMinuteSignatureProofPayload', { minuteBucket });\n\n  return {\n    authProof,\n    minuteBucket,\n    derivedAddress: derivedSigner.address\n  };\n}\n\n/**\n * @param {CreateAuthProofMinuteSignatureWithProviderOptions} [options={}]\n * @returns {Promise<CreateAuthProofMinuteSignatureResult>}\n */\nexport async function createAuthProofMinuteSignature(options = {}) {\n  const { normalizedChainId } = assertMinuteSignatureAuthProofOptions(options);\n  log.info('Creating minute signature auth proof');\n  return encodeMinuteSignatureProofPayload(options, normalizedChainId, options.actionHash);\n}\n","/**\n * PasswordMinuteSignatureAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/passwordMinuteSignature\n */\n\nimport { requireBytes32 } from '../../validation/assert.js';\nimport {\n  createActionBoundEncoder,\n  resolvePasswordHashFromProofInput\n} from '../proof/common.js';\nimport { createAuthProofMinuteSignature } from '../proof/builders/minuteSignature.js';\nimport {\n  createAuthenticatorSpec,\n  requirePartialOrSession\n} from './createAuthenticatorSpec.js';\nimport { passwordAuthenticator } from './password.js';\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const passwordMinuteSignatureAuthenticator = createAuthenticatorSpec({\n  id: 'passwordMinuteSignatureAuth',\n  flowId: 'minuteSignature',\n  addressKey: 'passwordMinuteSignatureAuth',\n\n  applySessionInput: requirePartialOrSession(\n    'passwordHash',\n    (session) => session.getPasswordHash(),\n    'authProof.passwordHash is required when no credentials session is active'\n  ),\n\n  collectResolve: {\n    passwordHash: resolvePasswordHashFromProofInput\n  },\n  mapFields: {\n    passwordHash: true\n  },\n  validate: (options) => requireBytes32(options.passwordHash, 'passwordHash'),\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'passwordMinuteSignatureAuth',\n    createProof: async ({\n      readProvider,\n      keyVaultAddr,\n      authenticatorAddr,\n      chainId,\n      passwordHash,\n      actionHash\n    }) => {\n      const result = await createAuthProofMinuteSignature({\n        provider: readProvider,\n        keyVaultAddr,\n        authenticatorAddr,\n        chainId,\n        passwordHash,\n        actionHash\n      });\n      return result.authProof;\n    }\n  }),\n\n  configEncoder: {\n    id: 'passwordMinuteSignatureAuth',\n    encode(authConfig) {\n      return passwordAuthenticator.configEncoder.encode(authConfig);\n    }\n  },\n\n  prepareProofResult: (encodeCtx, input) =>\n    createAuthProofMinuteSignature({\n      provider: encodeCtx.readProvider,\n      keyVaultAddr: input.keyVaultAddr,\n      authenticatorAddr: input.authenticatorAddr,\n      chainId: input.chainId,\n      passwordHash: input.passwordHash,\n      actionHash: input.actionHash\n    })\n});\n","/**\n * ABI-encoded {@code authConfig} byte builders for {@code WalletFactory.createWallet*} entry points.\n *\n * Used by per-authenticator modules in {@code internal/auth/specs}.\n *\n * @module internal/auth/config/bytes\n */\n\nimport { defaultAbiCoder } from '../../../adapters/ethers/encoding.js';\nimport { requireAddress, requireArray, requireBytes, requireBytes32 } from '../../validation/assert.js';\n\n/**\n * Build the {@code WalletSignatureAuthenticator} create-wallet config bytes.\n *\n * @public\n * @param {WalletSignatureAuthConfigInputOptions['initialWhitelist'] | Address[]} whitelist\n * @returns {EncodedAuthConfigWalletSignature}\n */\nfunction createWalletSigAuthConfig(whitelist) {\n  requireArray(whitelist, 'whitelist');\n  for (const address of whitelist) {\n    requireAddress(address, 'address');\n  }\n  return defaultAbiCoder.encode(['address[]'], [whitelist]);\n}\n\n/**\n * Build the {@code DualFactorAuthenticator} create-wallet config bytes.\n *\n * @public\n * @param {Bytes32} passwordHash\n * @param {Address} guardianAddr\n * @returns {EncodedAuthConfigDualFactor}\n */\nfunction createDualFactorAuthConfig(passwordHash, guardianAddr) {\n  requireBytes32(passwordHash, 'passwordHash');\n  requireAddress(guardianAddr, 'guardianAddr');\n\n  return defaultAbiCoder.encode(['bytes32', 'address'], [passwordHash, guardianAddr]);\n}\n\n/**\n * Build the {@code ApiKeySessionAuthenticator} create-wallet / configure config bytes.\n *\n * @public\n * @param {Bytes32} apiKeySecret\n * @returns {EncodedAuthConfigApiKeySession}\n */\nfunction createApiKeySessionAuthConfig(apiKeySecret) {\n  requireBytes32(apiKeySecret, 'apiKeySecret');\n  return defaultAbiCoder.encode(['bytes32'], [apiKeySecret]);\n}\n\n/**\n * Build the {@code MultiAuthenticator} create-wallet / configure config bytes.\n *\n * @public\n * @param {Address[]} children\n * @param {Bytes[]} childConfigs\n * @returns {EncodedAuthConfigMulti}\n */\nfunction createMultiAuthConfig(children, childConfigs) {\n  requireArray(children, 'children');\n  requireArray(childConfigs, 'childConfigs');\n  for (const child of children) {\n    requireAddress(child, 'child');\n  }\n  for (const childConfig of childConfigs) {\n    requireBytes(childConfig, 'childConfig');\n  }\n  return defaultAbiCoder.encode(['address[]', 'bytes[]'], [children, childConfigs]);\n}\n\n/**\n * Build the {@code PasswordOrWalletSignatureAuthenticator} create-wallet / configure config bytes.\n *\n * @public\n * @param {Bytes32} passwordHash\n * @param {Address[]} initialWhitelist\n * @returns {EncodedAuthConfigPasswordOrWalletSignature}\n */\nfunction createPasswordOrWalletSigAuthConfig(passwordHash, initialWhitelist) {\n  requireBytes32(passwordHash, 'passwordHash');\n  requireArray(initialWhitelist, 'initialWhitelist');\n  for (const address of initialWhitelist) {\n    requireAddress(address, 'initialWhitelist.address');\n  }\n  return defaultAbiCoder.encode(['bytes32', 'address[]'], [passwordHash, initialWhitelist]);\n}\n\n\nexport {\n  createWalletSigAuthConfig,\n  createDualFactorAuthConfig,\n  createApiKeySessionAuthConfig,\n  createMultiAuthConfig,\n  createPasswordOrWalletSigAuthConfig,\n};\n","/**\n * Pure EIP-712 typed-data signing primitive.\n *\n * Domain-specific structs (auth proofs, etc.) live outside this module and call\n * {@link signTypedData} with their own domain / types / value.\n *\n * @module internal/crypto/eip712\n */\n\n/**\n * Sign EIP-712 typed data with an ethers {@code Wallet} / {@code HDNodeWallet}.\n *\n * @public\n * @param {Object} params\n * @param {EthersWallet | EthersHDNodeWallet} params.signer\n * @param {Record<string, unknown>} params.domain - EIP-712 domain\n * @param {Record<string, Array<{ name: string, type: string }>>} params.types - Primary type map\n * @param {Record<string, unknown>} params.value - Message value\n * @returns {Promise<string>} Hex signature\n */\nexport async function signTypedData({ signer, domain, types, value }) {\n  return signer.signTypedData(domain, types, value);\n}\n","/**\n * Shared EIP-712 signing for action-bound authenticator proofs.\n *\n * Pure typed-data signing lives in {@code internal/crypto/eip712.js}; this module owns the\n * Monstera action-auth struct layout and auth-proof error context.\n *\n * @module internal/auth/proof/signing/eip712\n */\n\nimport { signTypedData } from '../../../crypto/eip712.js';\nimport { sdkErrorPipeline } from '../../../../errors/pipeline.js';\n\n/** Shared EIP-712 field layout for action-bound authenticator proofs. */\nexport const ACTION_AUTH_EIP712_FIELDS = [\n  { name: 'wallet', type: 'address' },\n  { name: 'actionHash', type: 'bytes32' },\n  { name: 'deadline', type: 'uint256' }\n];\n\n/**\n * Sign an EIP-712 action-bound authenticator proof and return encoded output bytes.\n *\n * @param {Object} params\n * @param {EthersWallet | EthersHDNodeWallet} params.signer\n * @param {string} params.contractName - EIP-712 domain {@code name}\n * @param {string} params.structName - Primary typed-data struct name\n * @param {ChainId} params.chainId\n * @param {Address} params.verifyingContract\n * @param {Address} params.keyVaultAddr\n * @param {Bytes32} params.actionHash\n * @param {number | bigint} params.deadline\n * @param {string} params.authProofType - Error pipeline label\n * @param {string} params.functionName - Error pipeline label\n * @param {(signature: string) => Bytes} params.encodeOutput\n * @returns {Promise<Bytes>}\n */\nexport async function signEip712ActionProof({\n  signer,\n  contractName,\n  structName,\n  chainId,\n  verifyingContract,\n  keyVaultAddr,\n  actionHash,\n  deadline,\n  authProofType,\n  functionName,\n  encodeOutput\n}) {\n  const domain = {\n    name: contractName,\n    version: '1',\n    chainId,\n    verifyingContract\n  };\n  const types = {\n    [structName]: ACTION_AUTH_EIP712_FIELDS\n  };\n  const value = { wallet: keyVaultAddr, actionHash, deadline };\n\n  try {\n    const signature = await signTypedData({ signer, domain, types, value });\n    return encodeOutput(signature);\n  } catch (error) {\n    sdkErrorPipeline.rethrow(error, {\n      authProofType,\n      functionName,\n      validationExtra: { deadline }\n    });\n  }\n}\n","/**\n * WalletSignatureAuthenticator auth-proof builder.\n *\n * @module internal/auth/proof/builders/walletSignature\n */\n\nimport { defaultAbiCoder } from '../../../../adapters/ethers/encoding.js';\nimport { assertWalletSignatureAuthProofOptions } from '../../../validators/authProofOptions.js';\nimport log from '../../../logger.js';\nimport { signEip712ActionProof } from '../signing/eip712.js';\n\n/**\n * @param {CreateAuthProofWalletSignatureOptions} [options={}]\n * @returns {Promise<EncodedAuthProofWalletSignature>}\n */\nexport async function createAuthProofWalletSignature(options = {}) {\n  const { signer, authenticatorAddr, deadline, keyVaultAddr, actionHash, eip712ContractName } = options;\n  const { normalizedChainId } = assertWalletSignatureAuthProofOptions(options);\n\n  log.info('Creating wallet signature auth proof');\n  log.debug('createAuthProofWalletSignature', {\n    keyVaultAddr,\n    authenticatorAddr,\n    chainId: normalizedChainId,\n    deadline,\n    actionHash\n  });\n\n  return signEip712ActionProof({\n    signer,\n    contractName: eip712ContractName ?? 'WalletSignatureAuthenticator',\n    structName: 'WalletAuth',\n    chainId: normalizedChainId,\n    verifyingContract: authenticatorAddr,\n    keyVaultAddr,\n    actionHash,\n    deadline,\n    authProofType: 'wallet-signature auth proof',\n    functionName: 'createAuthProofWalletSignature',\n    encodeOutput: (signature) => defaultAbiCoder.encode(['uint256', 'bytes'], [deadline, signature])\n  });\n}\n","/**\n * WalletSignatureAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/walletSignature\n */\n\nimport { requireWalletOrHdNode } from '../../validation/assert.js';\nimport { createWalletSigAuthConfig } from '../config/bytes.js';\nimport { createActionBoundEncoder } from '../proof/common.js';\nimport { createAuthProofWalletSignature } from '../proof/builders/walletSignature.js';\nimport {\n  createAuthenticatorSpec,\n  requirePartialField\n} from './createAuthenticatorSpec.js';\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const walletSignatureAuthenticator = createAuthenticatorSpec({\n  id: 'walletSignatureAuth',\n  flowId: 'walletSignature',\n  addressKey: 'walletSignatureAuth',\n  withDeadline: true,\n\n  applySessionInput: requirePartialField(\n    'signer',\n    'authProof.signer is required for WalletSignatureAuthenticator; pass a whitelisted Wallet or HDNodeWallet'\n  ),\n\n  collectKeys: ['signer', 'deadline'],\n  mapFields: {\n    signer: true,\n    deadline: true\n  },\n  validate: (options) => requireWalletOrHdNode(options.signer, 'signer'),\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'walletSignatureAuth',\n    withDeadline: true,\n    createProof: ({\n      signer,\n      chainId,\n      authenticatorAddr,\n      keyVaultAddr,\n      deadline,\n      actionHash\n    }) =>\n      createAuthProofWalletSignature({\n        signer,\n        chainId,\n        authenticatorAddr,\n        deadline,\n        keyVaultAddr,\n        actionHash\n      })\n  }),\n\n  configEncoder: (authConfig) =>\n    createWalletSigAuthConfig(/** @type {Address[]} */ (authConfig.initialWhitelist))\n});\n","/**\n * DualFactorAuthenticator auth-proof builder.\n *\n * @module internal/auth/proof/builders/dualFactor\n */\n\nimport { defaultAbiCoder } from '../../../../adapters/ethers/encoding.js';\nimport { assertDualFactorAuthProofOptions } from '../../../validators/authProofOptions.js';\nimport log from '../../../logger.js';\nimport { signEip712ActionProof } from '../signing/eip712.js';\nimport { encodeMinuteSignatureProofPayload } from './minuteSignature.js';\n\n/**\n * @param {CreateAuthProofDualFactorWithProviderOptions} [options={}]\n * @returns {Promise<EncodedAuthProofDualFactor>}\n */\nexport async function createAuthProofDualFactor(options = {}) {\n  const { signer, keyVaultAddr, authenticatorAddr, deadline, actionHash } = options;\n\n  const { normalizedChainId } = assertDualFactorAuthProofOptions(options);\n\n  log.info('Creating dual-factor auth proof');\n  log.debug('createAuthProofDualFactor', {\n    keyVaultAddr,\n    authenticatorAddr,\n    chainId: normalizedChainId,\n    deadline,\n    actionHash\n  });\n\n  const minuteProof = await encodeMinuteSignatureProofPayload(\n    options,\n    normalizedChainId,\n    actionHash\n  );\n\n  const [minutePasswordSignature] = defaultAbiCoder.decode(['bytes'], minuteProof.authProof);\n\n  return signEip712ActionProof({\n    signer,\n    contractName: 'DualFactorAuthenticator',\n    structName: 'DualFactorAuth',\n    chainId: normalizedChainId,\n    verifyingContract: authenticatorAddr,\n    keyVaultAddr,\n    actionHash,\n    deadline,\n    authProofType: 'dual-factor auth proof',\n    functionName: 'createAuthProofDualFactor',\n    encodeOutput: (guardianSignature) =>\n      defaultAbiCoder.encode(\n        ['bytes', 'uint256', 'bytes'],\n        [minutePasswordSignature, deadline, guardianSignature]\n      )\n  });\n}\n","/**\n * DualFactorAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/dualFactor\n */\n\nimport { ValidationError } from '../../../errors/index.js';\nimport { requireBytes32, requireWalletOrHdNode } from '../../validation/assert.js';\nimport { createDualFactorAuthConfig } from '../config/bytes.js';\nimport {\n  createActionBoundEncoder,\n  resolvePasswordHashFromProofInput\n} from '../proof/common.js';\nimport { createAuthProofDualFactor } from '../proof/builders/dualFactor.js';\nimport { createAuthenticatorSpec } from './createAuthenticatorSpec.js';\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const dualFactorAuthenticator = createAuthenticatorSpec({\n  id: 'dualFactorAuth',\n  flowId: 'dualFactor',\n  addressKey: 'dualFactorAuth',\n  withDeadline: true,\n\n  applySessionInput(session, partial) {\n    const merged = {\n      ...partial,\n      passwordHash: partial.passwordHash ?? session?.getPasswordHash()\n    };\n\n    if (merged.passwordHash == null) {\n      throw new ValidationError(\n        'authProof.passwordHash is required when no credentials session is active',\n        'authProof.passwordHash',\n        merged.passwordHash\n      );\n    }\n\n    if (merged.signer == null) {\n      throw new ValidationError(\n        'authProof.signer is required for DualFactorAuthenticator; pass the guardian Wallet or HDNodeWallet',\n        'authProof.signer',\n        merged.signer\n      );\n    }\n\n    return merged;\n  },\n\n  collectKeys: ['signer', 'deadline'],\n  collectResolve: {\n    passwordHash: resolvePasswordHashFromProofInput\n  },\n  mapFields: {\n    passwordHash: true,\n    signer: true,\n    deadline: true\n  },\n  validate: (options) => {\n    requireBytes32(options.passwordHash, 'passwordHash');\n    requireWalletOrHdNode(options.signer, 'signer');\n  },\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'dualFactorAuth',\n    withDeadline: true,\n    createProof: ({\n      readProvider,\n      keyVaultAddr,\n      passwordHash,\n      signer,\n      authenticatorAddr,\n      deadline,\n      chainId,\n      actionHash\n    }) =>\n      createAuthProofDualFactor({\n        provider: readProvider,\n        keyVaultAddr,\n        passwordHash,\n        signer,\n        authenticatorAddr,\n        deadline,\n        chainId,\n        actionHash\n      })\n  }),\n\n  configEncoder: (authConfig) =>\n    createDualFactorAuthConfig(\n      /** @type {Bytes32} */ (authConfig.passwordHash),\n      /** @type {Address} */ (authConfig.guardianAddr)\n    )\n});\n","/**\n * ApiKeySessionAuthenticator auth-proof builder via on-chain pure helpers.\n *\n * @module internal/auth/proof/builders/apiKeySession\n */\n\nimport { getApiKeySessionAuthenticatorContract } from '../../../../contracts/authenticators/ApiKeySessionAuthenticator.js';\nimport { requireAddress, requireBytes32 } from '../../../validation/assert.js';\nimport { defaultProofDeadline } from '../common.js';\nimport {\n  isApiKeySessionTokenMode,\n  SCOPE_SIGN_ALL\n} from '../../specs/apiKeySession.js';\n\n/**\n * @param {EthersAbstractProvider} readProvider\n * @param {Address} authenticatorAddr\n * @returns {EthersContract}\n */\nfunction _getReadContract(readProvider, authenticatorAddr) {\n  requireAddress(authenticatorAddr, 'authenticatorAddr');\n  return getApiKeySessionAuthenticatorContract(readProvider, authenticatorAddr);\n}\n\n/**\n * @param {Object} options\n * @returns {Promise<Bytes>}\n */\nexport async function createAuthProofApiKeySession(options) {\n  const {\n    readProvider,\n    authenticatorAddr,\n    apiKeySecret,\n    keyVaultAddr,\n    chainId,\n    actionHash,\n    mode,\n    expiry,\n    scopeMask\n  } = options;\n\n  const contract = _getReadContract(readProvider, authenticatorAddr);\n\n  if (isApiKeySessionTokenMode({ mode, expiry, scopeMask })) {\n    const resolvedExpiry = expiry ?? defaultProofDeadline();\n    const resolvedScopeMask = scopeMask ?? SCOPE_SIGN_ALL;\n    const mac = await contract.computeTokenMac(\n      apiKeySecret,\n      chainId,\n      keyVaultAddr,\n      resolvedExpiry,\n      resolvedScopeMask\n    );\n\n    return contract.buildTokenAuthProof(resolvedExpiry, resolvedScopeMask, mac);\n  }\n\n  requireBytes32(actionHash, 'actionHash');\n  const mac = await contract.computeActionMac(apiKeySecret, actionHash);\n  return contract.buildActionAuthProof(mac);\n}\n","/**\n * ApiKeySessionAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/apiKeySession\n */\n\nimport { requireBytes32 } from '../../validation/assert.js';\nimport { createApiKeySessionAuthConfig } from '../config/bytes.js';\nimport { createAuthProofApiKeySession } from '../proof/builders/apiKeySession.js';\nimport { createActionBoundEncoder } from '../proof/common.js';\nimport {\n  createAuthenticatorSpec,\n  requirePartialOrSession\n} from './createAuthenticatorSpec.js';\n\n/** TOKEN-mode proof ({@code mode = 1}). */\nexport const MODE_TOKEN = 1;\n\n/** ACTION-mode proof ({@code mode = 2}). */\nexport const MODE_ACTION = 2;\n\n/** Bits 0–4: all KeyVault signing ops, excluding {@code executeWithAuth}. */\nexport const SCOPE_SIGN_ALL = 31;\n\n/** Bits 0–5: all signing ops plus {@code executeWithAuth}. */\nexport const SCOPE_ALL = 63;\n\n/**\n * @param {Record<string, unknown>} input\n * @returns {boolean}\n */\nexport function isApiKeySessionTokenMode(input) {\n  if (input.mode === 'action') {\n    return false;\n  }\n  if (input.mode === 'token') {\n    return true;\n  }\n  return input.expiry != null || input.scopeMask != null;\n}\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const apiKeySessionAuthenticator = createAuthenticatorSpec({\n  id: 'apiKeySessionAuth',\n  flowId: 'apiKeySession',\n  addressKey: 'apiKeySessionAuth',\n\n  applySessionInput: requirePartialOrSession(\n    'apiKeySecret',\n    (session) => session.getApiKeySecret(),\n    'authProof.apiKeySecret is required when no credentials session is active'\n  ),\n\n  collectKeys: ['apiKeySecret', 'mode', 'expiry', 'scopeMask'],\n  mapFields: {\n    apiKeySecret: true,\n    mode: true,\n    expiry: true,\n    scopeMask: true\n  },\n  validate: (options) => requireBytes32(options.apiKeySecret, 'apiKeySecret'),\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'apiKeySessionAuth',\n    validateInput: ({ apiKeySecret }) => requireBytes32(apiKeySecret, 'apiKeySecret'),\n    createProof: (input) =>\n      createAuthProofApiKeySession({\n        readProvider: input.readProvider,\n        authenticatorAddr: input.authenticatorAddr,\n        apiKeySecret: input.apiKeySecret,\n        keyVaultAddr: input.keyVaultAddr,\n        chainId: input.chainId,\n        actionHash: input.actionHash,\n        mode: input.mode,\n        expiry: input.expiry,\n        scopeMask: input.scopeMask\n      })\n  }),\n\n  configEncoder: (authConfig) =>\n    createApiKeySessionAuthConfig(/** @type {Bytes32} */ (authConfig.apiKeySecret))\n});\n","/**\n * Resolve a MultiAuthenticator child spec from flow id or on-chain address.\n *\n * Proof routing uses {@code viaChild} / {@code viaChildFlowId} / {@code childFlowId} first.\n * Bare {@code child} is only used when no explicit proof-route fields are set (e.g. vault\n * sign calls). Admin flows such as {@link Monstera#addMultiAuthenticator} also pass\n * {@code child} as the on-chain target; that must not override the authorizing child.\n *\n * @module internal/auth/specs/multiChildResolver\n */\n\nimport { getAddress } from '../../../adapters/ethers/addresses.js';\nimport { ValidationError } from '../../../errors/index.js';\nimport { requireAddress } from '../../validation/assert.js';\nimport { CHILD_AUTHENTICATORS } from './registry.js';\n\n/**\n * Lazy maps — {@link CHILD_AUTHENTICATORS} is defined in {@link ./registry.js}, which imports\n * {@code multi.js}, which imports this module. Access the list only after module init.\n *\n * @type {Map<string, BuiltinAuthenticatorSpec> | null}\n */\nlet childByFlowId = null;\n\n/**\n * @returns {Map<string, BuiltinAuthenticatorSpec>}\n */\nfunction _getChildByFlowId() {\n  if (childByFlowId == null) {\n    childByFlowId = new Map(CHILD_AUTHENTICATORS.map((spec) => [spec.flowId, spec]));\n  }\n  return childByFlowId;\n}\n\n/**\n * @param {ContractAddresses} addresses\n * @returns {Map<string, BuiltinAuthenticatorSpec>}\n */\nfunction _buildAddressLookup(addresses) {\n  /** @type {Map<string, BuiltinAuthenticatorSpec>} */\n  const byAddr = new Map();\n  for (const spec of CHILD_AUTHENTICATORS) {\n    byAddr.set(getAddress(addresses[spec.addressKey]).toLowerCase(), spec);\n  }\n  return byAddr;\n}\n\n/**\n * @param {string} flowId\n * @param {ContractAddresses} addresses\n * @returns {Address}\n */\nfunction _resolveAddrFromFlowId(flowId, addresses) {\n  const spec = _getChildByFlowId().get(flowId);\n  if (!spec) {\n    throw new ValidationError('Unknown child auth proof flow', 'childFlowId', flowId);\n  }\n\n  const addr = addresses[spec.addressKey];\n  if (addr == null) {\n    throw new ValidationError(\n      `Missing contract address for ${spec.addressKey}`,\n      spec.addressKey,\n      addr\n    );\n  }\n\n  return getAddress(addr);\n}\n\n/**\n * Resolve which child authenticator should produce the inner proof bytes.\n *\n * @param {Record<string, unknown>} input\n * @param {ContractAddresses} addresses\n * @returns {Address}\n */\nexport function resolveChildAddr(input, addresses) {\n  if (input.viaChild != null) {\n    requireAddress(input.viaChild, 'viaChild');\n    return getAddress(/** @type {string} */ (input.viaChild));\n  }\n\n  const flowId = input.viaChildFlowId ?? input.childFlowId;\n  if (flowId != null) {\n    return _resolveAddrFromFlowId(/** @type {string} */ (flowId), addresses);\n  }\n\n  if (input.child != null) {\n    requireAddress(input.child, 'child');\n    return getAddress(/** @type {string} */ (input.child));\n  }\n\n  throw new ValidationError(\n    'viaChildFlowId, childFlowId, viaChild, or child is required for multi authenticator proofs',\n    'childFlowId',\n    flowId\n  );\n}\n\n/**\n * @param {Record<string, unknown>} input\n * @param {ContractAddresses} addresses\n * @returns {BuiltinAuthenticatorSpec}\n */\nexport function resolveChildSpec(input, addresses) {\n  const childAddr = resolveChildAddr(input, addresses);\n  const byAddr = _buildAddressLookup(addresses);\n  const spec = byAddr.get(childAddr.toLowerCase());\n\n  if (!spec) {\n    throw new ValidationError(\n      'child is not a built-in Monstera authenticator',\n      'child',\n      childAddr\n    );\n  }\n\n  return spec;\n}\n\n/**\n * @param {string} flowId\n * @returns {BuiltinAuthenticatorSpec | undefined}\n */\nexport function getChildSpecByFlowId(flowId) {\n  return _getChildByFlowId().get(flowId);\n}\n","/**\n * Multi-authenticator child proof delegation.\n *\n * @module internal/auth/proof/builders/multiChildEncode\n */\n\nimport { resolveChildAddr, resolveChildSpec } from '../../specs/multiChildResolver.js';\nimport { createAuthProofMulti } from './abiProofs.js';\n\n/**\n * Encode a child authenticator proof and wrap it for {@code MultiAuthenticator}.\n *\n * @param {AuthProofEncodeContext & Record<string, unknown> & { actionHash: Bytes32 }} proofInput\n * @returns {Promise<Bytes>}\n */\nexport async function encodeMultiChildProof(proofInput) {\n  const addresses = proofInput.addresses;\n  const childAddr = resolveChildAddr(proofInput, addresses);\n  const childSpec = resolveChildSpec(proofInput, addresses);\n\n  const childCtx = { ...proofInput, authenticatorAddr: childAddr, addresses };\n  const childInput = {\n    ...proofInput,\n    authenticatorAddr: childAddr\n  };\n\n  const childProof = await childSpec.proofEncoder.encode(childCtx, childInput);\n  return createAuthProofMulti({ child: childAddr, childProof });\n}\n","/**\n * MultiAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/multi\n */\n\nimport { ValidationError } from '../../../errors/index.js';\nimport { requireAddress, requireArray, requireBytes } from '../../validation/assert.js';\nimport { createMultiAuthConfig } from '../config/bytes.js';\nimport { createActionBoundEncoder, pickAuthProofPartial } from '../proof/common.js';\nimport { encodeMultiChildProof } from '../proof/builders/multiChildEncode.js';\nimport { createAuthenticatorSpec } from './createAuthenticatorSpec.js';\nimport { resolveChildAddr, resolveChildSpec } from './multiChildResolver.js';\n\n/**\n * @param {CreateWalletAuthEncoder} childRegistry\n * @returns {CreateWalletAuthEncoder}\n */\nexport function createMultiConfigEncoder(childRegistry) {\n  return {\n    id: 'multiAuthenticator',\n    encode(authConfig) {\n      if (\n        authConfig.childConfigs != null &&\n        Array.isArray(authConfig.children) &&\n        authConfig.children.length > 0 &&\n        typeof authConfig.children[0] === 'string'\n      ) {\n        return createMultiAuthConfig(\n          /** @type {Address[]} */ (authConfig.children),\n          /** @type {Bytes[]} */ (authConfig.childConfigs)\n        );\n      }\n\n      requireArray(authConfig.children, 'children');\n      /** @type {Address[]} */\n      const children = [];\n      /** @type {Bytes[]} */\n      const childConfigs = [];\n\n      for (const entry of authConfig.children) {\n        requireAddress(entry.authenticatorAddr, 'children[].authenticatorAddr');\n        const encoder = childRegistry.getByAuthenticatorAddr(entry.authenticatorAddr);\n        if (!encoder) {\n          throw new ValidationError(\n            'children[].authenticatorAddr is not a built-in Monstera authenticator',\n            'children[].authenticatorAddr',\n            entry.authenticatorAddr\n          );\n        }\n        children.push(entry.authenticatorAddr);\n        childConfigs.push(encoder.encode(/** @type {AuthConfigInputOptions} */ (entry.authConfig)));\n      }\n\n      return createMultiAuthConfig(children, childConfigs);\n    }\n  };\n}\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const multiAuthenticator = createAuthenticatorSpec({\n  id: 'multiAuthenticator',\n  flowId: 'multi',\n  addressKey: 'multiAuthenticator',\n  includeAddresses: true,\n\n  applySessionInput(session, partial) {\n    const addresses = partial.addresses;\n    const childFlowId = partial.childFlowId ?? partial.viaChildFlowId;\n    if (addresses != null && childFlowId != null) {\n      const childSpec = resolveChildSpec({ childFlowId }, addresses);\n      return childSpec.applySessionInput(session, partial);\n    }\n    return partial;\n  },\n\n  collectProofInput(options) {\n    const partial = pickAuthProofPartial(options);\n    return {\n      ...partial,\n      viaChild: partial.viaChild ?? options.viaChild,\n      child: partial.child ?? options.child,\n      childFlowId: partial.childFlowId ?? options.childFlowId,\n      viaChildFlowId: partial.viaChildFlowId ?? options.viaChildFlowId,\n      apiKeySecret: partial.apiKeySecret ?? options.apiKeySecret,\n      mode: partial.mode ?? options.mode,\n      expiry: partial.expiry ?? options.expiry,\n      scopeMask: partial.scopeMask ?? options.scopeMask,\n      password: partial.password ?? options.password,\n      passwordHash: partial.passwordHash ?? options.passwordHash,\n      signer: partial.signer ?? options.signer,\n      deadline: partial.deadline ?? options.deadline\n    };\n  },\n\n  mapSessionResolved(resolved, authenticatorAddr) {\n    const base = { keyVaultAddr: resolved.keyVaultAddr, authenticatorAddr };\n    const hasExplicitProofRoute =\n      resolved.viaChild != null ||\n      resolved.viaChildFlowId != null ||\n      resolved.childFlowId != null;\n\n    return {\n      ...base,\n      viaChild: resolved.viaChild,\n      viaChildFlowId: resolved.viaChildFlowId,\n      childFlowId: resolved.childFlowId,\n      ...(hasExplicitProofRoute ? {} : { child: resolved.child }),\n      apiKeySecret: resolved.apiKeySecret,\n      password: resolved.currentPassword ?? resolved.password,\n      passwordHash: resolved.passwordHash,\n      signer: resolved.signer,\n      deadline: resolved.deadline,\n      mode: resolved.mode,\n      expiry: resolved.expiry,\n      scopeMask: resolved.scopeMask\n    };\n  },\n\n  validatePrepareInput(options) {\n    requireAddress(options.keyVaultAddr, 'keyVaultAddr');\n    if (options.addresses == null) {\n      throw new ValidationError(\n        'addresses context is required to validate multi authenticator input',\n        'addresses',\n        options.addresses\n      );\n    }\n    const hasProofRoute =\n      options.viaChild != null ||\n      options.viaChildFlowId != null ||\n      options.childFlowId != null ||\n      options.child != null;\n    if (!hasProofRoute) {\n      throw new ValidationError(\n        'viaChildFlowId, childFlowId, viaChild, or child is required for multi authenticator proofs',\n        'childFlowId',\n        options.childFlowId\n      );\n    }\n    const childSpec = resolveChildSpec(options, options.addresses);\n    childSpec.validatePrepareInput({\n      ...options,\n      authenticatorAddr: resolveChildAddr(options, options.addresses)\n    });\n  },\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'multiAuthenticator',\n    createProof: encodeMultiChildProof\n  }),\n\n  configEncoder: (authConfig) => {\n    requireArray(authConfig.children, 'children');\n    requireArray(authConfig.childConfigs, 'childConfigs');\n    for (const child of authConfig.children) {\n      requireAddress(child, 'child');\n    }\n    for (const childConfig of authConfig.childConfigs) {\n      requireBytes(childConfig, 'childConfig');\n    }\n    return createMultiAuthConfig(\n      /** @type {Address[]} */ (authConfig.children),\n      /** @type {Bytes[]} */ (authConfig.childConfigs)\n    );\n  }\n});\n","/**\n * PasswordOrWalletSignatureAuthenticator auth-proof builder.\n *\n * @module internal/auth/proof/builders/passwordOrWalletSignature\n */\n\nimport { defaultAbiCoder } from '../../../../adapters/ethers/encoding.js';\nimport {\n  requireWalletOrHdNode,\n  requireAddress,\n  requireBytes32,\n  requireNumber,\n} from '../../../validation/assert.js';\nimport { signTypedData } from '../../../crypto/eip712.js';\nimport { sdkErrorPipeline } from '../../../../errors/pipeline.js';\nimport { createAuthProofPassword } from './abiProofs.js';\nimport { createAuthProofWalletSignature } from './walletSignature.js';\n\n/** @type {1} */\nconst METHOD_PASSWORD = 1;\n\n/** @type {2} */\nconst METHOD_WALLET_SIGNATURE = 2;\n\nconst LINK_WALLET_EIP712_FIELDS = [\n  { name: 'wallet', type: 'address' },\n  { name: 'newAddress', type: 'address' },\n  { name: 'nonce', type: 'bytes32' },\n  { name: 'deadline', type: 'uint256' },\n  { name: 'actionHash', type: 'bytes32' },\n];\n\n/**\n * @param {'password' | 'walletSignature' | number | undefined} method\n * @returns {'password' | 'walletSignature' | undefined}\n */\nfunction _normalizePasswordOrWalletMethod(method) {\n  if (method === METHOD_PASSWORD || method === 'password') {\n    return 'password';\n  }\n  if (method === METHOD_WALLET_SIGNATURE || method === 'walletSignature') {\n    return 'walletSignature';\n  }\n  return undefined;\n}\n\n/**\n * @param {Object} options\n * @returns {Promise<EncodedAuthProofPasswordOrWalletSignature>}\n */\nexport async function createAuthProofPasswordOrWalletSignature(options = {}) {\n  const method = _normalizePasswordOrWalletMethod(options.method)\n    ?? (options.signer != null ? 'walletSignature' : 'password');\n\n  if (method === 'password') {\n    const methodProof = createAuthProofPassword({\n      password: options.password,\n      actionHash: options.actionHash,\n    });\n    return defaultAbiCoder.encode(['uint8', 'bytes'], [METHOD_PASSWORD, methodProof]);\n  }\n\n  const methodProof = await createAuthProofWalletSignature({\n    ...options,\n    eip712ContractName: 'PasswordOrWalletSignatureAuthenticator',\n  });\n  return defaultAbiCoder.encode(['uint8', 'bytes'], [METHOD_WALLET_SIGNATURE, methodProof]);\n}\n\n/**\n * @param {Object} options\n * @returns {Promise<Bytes>}\n */\nexport async function createLinkWalletSignature(options = {}) {\n  const {\n    linkSigner,\n    keyVaultAddr,\n    newAddress,\n    nonce,\n    deadline,\n    actionHash,\n    authenticatorAddr,\n    chainId,\n  } = options;\n\n  requireWalletOrHdNode(linkSigner, 'linkSigner');\n  requireAddress(keyVaultAddr, 'keyVaultAddr');\n  requireAddress(newAddress, 'newAddress');\n  requireBytes32(nonce, 'nonce');\n  requireNumber(deadline, 'deadline', { allowBigInt: true });\n  requireBytes32(actionHash, 'actionHash');\n  requireAddress(authenticatorAddr, 'authenticatorAddr');\n\n  const domain = {\n    name: 'PasswordOrWalletSignatureAuthenticator',\n    version: '1',\n    chainId,\n    verifyingContract: authenticatorAddr,\n  };\n  const types = { LinkWallet: LINK_WALLET_EIP712_FIELDS };\n  const value = { wallet: keyVaultAddr, newAddress, nonce, deadline, actionHash };\n\n  try {\n    return await signTypedData({ signer: linkSigner, domain, types, value });\n  } catch (error) {\n    sdkErrorPipeline.rethrow(error, {\n      authProofType: 'password-or-wallet link signature',\n      functionName: 'createLinkWalletSignature',\n      validationExtra: { deadline },\n    });\n  }\n}\n","/**\n * PasswordOrWalletSignatureAuthenticator — create-wallet config, proof encoding, and defaults.\n *\n * @module internal/auth/specs/passwordOrWalletSignature\n */\n\nimport { ValidationError } from '../../../errors/index.js';\nimport {\n  requireAddress,\n  requireArray,\n  requireBytes32,\n  requireUtf8Bytes,\n  requireWalletOrHdNode\n} from '../../validation/assert.js';\nimport { createPasswordOrWalletSigAuthConfig } from '../config/bytes.js';\nimport { createActionBoundEncoder, pickAuthProofPartial } from '../proof/common.js';\nimport { createAuthProofPasswordOrWalletSignature } from '../proof/builders/passwordOrWalletSignature.js';\nimport { createAuthenticatorSpec } from './createAuthenticatorSpec.js';\n\n/** @type {1} */\nexport const METHOD_PASSWORD = 1;\n\n/** @type {2} */\nexport const METHOD_WALLET_SIGNATURE = 2;\n\n/**\n * @param {'password' | 'walletSignature' | number | undefined} method\n * @returns {'password' | 'walletSignature'}\n */\nfunction _normalizeMethod(method) {\n  if (method === METHOD_PASSWORD || method === 'password') {\n    return 'password';\n  }\n  if (method === METHOD_WALLET_SIGNATURE || method === 'walletSignature') {\n    return 'walletSignature';\n  }\n  return /** @type {'password' | 'walletSignature' | undefined} */ (method);\n}\n\n/**\n * @param {Record<string, unknown>} input\n * @returns {'password' | 'walletSignature'}\n */\nfunction _resolveMethod(input) {\n  const explicit = _normalizeMethod(\n    /** @type {'password' | 'walletSignature' | number | undefined} */ (input.method)\n  );\n  if (explicit) {\n    return explicit;\n  }\n  if (input.signer != null) {\n    return 'walletSignature';\n  }\n  if (input.password != null) {\n    return 'password';\n  }\n  throw new ValidationError(\n    'authProof.method, authProof.signer, or authProof.password is required for PasswordOrWalletSignatureAuthenticator',\n    'authProof.method',\n    input.method\n  );\n}\n\n/** @type {BuiltinAuthenticatorSpec} */\nexport const passwordOrWalletSignatureAuthenticator = createAuthenticatorSpec({\n  id: 'passwordOrWalletSigAuth',\n  flowId: 'passwordOrWalletSignature',\n  addressKey: 'passwordOrWalletSigAuth',\n  withDeadline: true,\n\n  applySessionInput(session, partial) {\n    const merged = { ...partial };\n\n    if (merged.password == null && session?.hasPassword()) {\n      merged.password = session.getPasswordBytes();\n    }\n\n    if (merged.signer == null && merged.password == null) {\n      throw new ValidationError(\n        'authProof.password or authProof.signer is required for PasswordOrWalletSignatureAuthenticator',\n        'authProof',\n        partial\n      );\n    }\n\n    return merged;\n  },\n\n  collectProofInput(options) {\n    const partial = pickAuthProofPartial(options);\n    return {\n      ...partial,\n      method: partial.method ?? options.method,\n      password: partial.password ?? options.password ?? options.currentPassword,\n      signer: partial.signer ?? options.signer,\n      deadline: partial.deadline ?? options.deadline\n    };\n  },\n\n  mapFields: {\n    method: true,\n    password: (resolved) => resolved.currentPassword ?? resolved.password,\n    signer: true,\n    deadline: true\n  },\n\n  validate: (options) => {\n    const method = _resolveMethod(options);\n    if (method === 'walletSignature') {\n      requireWalletOrHdNode(options.signer, 'signer');\n    } else {\n      requireUtf8Bytes(options.password, 'password');\n    }\n  },\n\n  proofEncoder: createActionBoundEncoder({\n    id: 'passwordOrWalletSigAuth',\n    withDeadline: true,\n    validateInput: (input) => {\n      _resolveMethod(input);\n    },\n    createProof: (input) => createAuthProofPasswordOrWalletSignature(input)\n  }),\n\n  configEncoder: (authConfig) => {\n    const { passwordHash, initialWhitelist } = authConfig;\n    requireBytes32(passwordHash, 'passwordHash');\n    requireArray(initialWhitelist, 'initialWhitelist');\n    for (const address of initialWhitelist) {\n      requireAddress(address, 'initialWhitelist.address');\n    }\n    return createPasswordOrWalletSigAuthConfig(\n      /** @type {Bytes32} */ (passwordHash),\n      /** @type {Address[]} */ (initialWhitelist)\n    );\n  }\n});\n","/**\n * Built-in authenticator registry (address, flow id, and encoder lookups).\n *\n * @module internal/auth/specs/registry\n */\n\nimport { toChecksumAddress } from '../../crypto/address.js';\nimport { passwordAuthenticator } from './password.js';\nimport { passwordMinuteSignatureAuthenticator } from './passwordMinuteSignature.js';\nimport { walletSignatureAuthenticator } from './walletSignature.js';\nimport { dualFactorAuthenticator } from './dualFactor.js';\nimport { apiKeySessionAuthenticator } from './apiKeySession.js';\nimport { multiAuthenticator, createMultiConfigEncoder } from './multi.js';\nimport { passwordOrWalletSignatureAuthenticator } from './passwordOrWalletSignature.js';\n\n/**\n * Build a checksum-keyed encoder registry.\n *\n * @description Normalises every input address to its EIP-55 checksum form via\n * {@link toChecksumAddress} before storing or looking up entries.\n *\n * @template T\n * @param {Array<{ address: Address, encoder: T }>} entries - Address / encoder pairs to register\n * @returns {{ getByAuthenticatorAddr: (authenticatorAddr: Address) => T | undefined }}\n */\nexport function createRegistryByChecksumAddress(entries) {\n  /** @type {Map<string, T>} */\n  const byChecksum = new Map();\n\n  for (const { address, encoder } of entries) {\n    const key = toChecksumAddress(address);\n    byChecksum.set(key, encoder);\n  }\n\n  return {\n    getByAuthenticatorAddr(authenticatorAddr) {\n      const key = toChecksumAddress(authenticatorAddr);\n      return byChecksum.get(key);\n    }\n  };\n}\n\n/** @type {readonly BuiltinAuthenticatorSpec[]} */\nexport const CHILD_AUTHENTICATORS = [\n  apiKeySessionAuthenticator,\n  passwordAuthenticator,\n  passwordMinuteSignatureAuthenticator,\n  walletSignatureAuthenticator,\n  dualFactorAuthenticator,\n  passwordOrWalletSignatureAuthenticator,\n];\n\n/** @type {readonly BuiltinAuthenticatorSpec[]} */\nexport const BUILTIN_AUTHENTICATORS = [\n  ...CHILD_AUTHENTICATORS,\n  multiAuthenticator\n];\n\n/** @type {Map<string, BuiltinAuthenticatorSpec>} */\nconst byFlowId = new Map(BUILTIN_AUTHENTICATORS.map((spec) => [spec.flowId, spec]));\n\n/**\n * @param {ContractAddresses} addresses\n * @returns {{ getByAuthenticatorAddr: (authenticatorAddr: Address) => CreateWalletAuthEncoder | undefined }}\n */\nfunction _createChildConfigEncoderRegistry(addresses) {\n  return createRegistryByChecksumAddress(\n    CHILD_AUTHENTICATORS.map((spec) => ({\n      address: addresses[spec.addressKey],\n      encoder: spec.configEncoder\n    }))\n  );\n}\n\n/**\n * @public\n * @param {ContractAddresses} addresses\n */\nexport function createBuiltinAuthenticatorRegistry(addresses) {\n  const childConfigRegistry = _createChildConfigEncoderRegistry(addresses);\n  const multiConfigEncoder = createMultiConfigEncoder(childConfigRegistry);\n\n  const proofByAddr = createRegistryByChecksumAddress(\n    BUILTIN_AUTHENTICATORS.map((spec) => ({\n      address: addresses[spec.addressKey],\n      encoder: spec.proofEncoder\n    }))\n  );\n\n  const configByAddr = createRegistryByChecksumAddress(\n    BUILTIN_AUTHENTICATORS.map((spec) => ({\n      address: addresses[spec.addressKey],\n      encoder: spec.flowId === 'multi' ? multiConfigEncoder : spec.configEncoder\n    }))\n  );\n\n  return {\n    /**\n     * @param {Address} authenticatorAddr\n     * @returns {BuiltinAuthenticatorSpec | undefined}\n     */\n    getSpecByAuthenticatorAddr(authenticatorAddr) {\n      const encoder = proofByAddr.getByAuthenticatorAddr(authenticatorAddr);\n      if (!encoder) {\n        return undefined;\n      }\n      return BUILTIN_AUTHENTICATORS.find((spec) => spec.proofEncoder === encoder);\n    },\n\n    /**\n     * @param {AuthProofFlowId} flowId\n     * @returns {BuiltinAuthenticatorSpec | undefined}\n     */\n    getSpecByFlowId(flowId) {\n      return byFlowId.get(flowId);\n    },\n\n    getProofEncoderByAuthenticatorAddr: proofByAddr.getByAuthenticatorAddr,\n    getConfigEncoderByAuthenticatorAddr: configByAddr.getByAuthenticatorAddr\n  };\n}\n\n// Re-export individual specs for callers that need direct access.\nexport {\n  apiKeySessionAuthenticator,\n  passwordAuthenticator,\n  passwordMinuteSignatureAuthenticator,\n  walletSignatureAuthenticator,\n  dualFactorAuthenticator,\n  passwordOrWalletSignatureAuthenticator,\n  multiAuthenticator\n};\n","/**\n * Builder for the {@code authConfig} bytes consumed by every {@code WalletFactory.createWallet*}\n * entry point.\n *\n * @description Holds an encoder registry built from the network's authenticator addresses (so the\n * builder can look up the right encoder by address) and exposes a single {@link encode} method\n * that:\n * - accepts already-encoded hex-string {@code authConfig} unchanged (advanced path)\n * - encodes structured per-authenticator objects via the registered encoder\n * - resolves the authenticator address from the caller's options or the default\n *   {@code passwordAuth} preset\n *\n * Used by {@code Monstera.createWallet*} before forwarding to {@code WalletFactoryClient}.\n *\n * @module internal/auth/config/AuthConfigEncoder\n */\n\nimport log from '../../logger.js';\nimport { requireAddress, requireDefined, requirePlainObject } from '../../validation/assert.js';\nimport { ValidationError } from '../../../errors/index.js';\nimport { createBuiltinAuthenticatorRegistry } from '../specs/registry.js';\n\n/**\n * Auth-config encoder façade owned by the {@code Monstera} instance.\n *\n * @public\n */\nexport class AuthConfigEncoder {\n  /**\n   * @public\n   * @param {AuthConfigContext} ctx - Resolved network context (chain id, addresses) used to build\n   *   the address-keyed encoder registry\n   */\n  constructor(ctx) {\n    this._ctx = ctx;\n    const registry = createBuiltinAuthenticatorRegistry(ctx.addresses);\n    this._registry = {\n      getByAuthenticatorAddr: registry.getConfigEncoderByAuthenticatorAddr\n    };\n  }\n\n  /**\n   * Encode public create-wallet options into the shape consumed by {@code WalletFactoryClient}.\n   *\n   * @description Three paths:\n   * 1. {@code options.authConfig} is a hex string → returned as-is (advanced consumers can\n   *    pre-encode their own bytes)\n   * 2. {@code options.authConfig} is a structured object → resolves the authenticator address,\n   *    looks up the matching encoder, and replaces {@code authConfig} with the encoded bytes\n   * 3. Anything else → {@link ValidationError}\n   *\n   * @public\n   * @param {EncodeAuthConfigInputOptions} options - Public create-wallet options\n   * @returns {EncodeAuthConfigOptionsResult} Options with {@code authConfig} as encoded bytes and\n   *   {@code authenticatorAddr} resolved\n   * @throws {ValidationError} If {@code options.authConfig} is missing, not a string and not a\n   *   plain object, or if {@code authenticatorAddr} is not one of the Monstera built-in\n   *   authenticators (use the hex-string path for custom authenticators)\n   * @throws {ValidationError} If the resolved {@code authenticatorAddr} fails address validation\n   *   (raised by {@link requireAddress})\n   * @throws {ValidationError} If the resolved encoder rejects the structured input (per-encoder\n   *   validation rules — see per-authenticator {@code configEncoder} in {@code internal/auth/specs/})\n   */\n  encode(options) {\n    const { authConfig: authInput, ...rest } = options;\n\n    requireDefined(authInput, 'authConfig');\n\n    if (typeof authInput === 'string') {\n      log.info('auth config input is a string, returning options as is');\n      return { ...options };\n    }\n\n    requirePlainObject(authInput, 'authConfig', {\n      message:\n        'authConfig must be a hex-encoded bytes string or a plain object with per-authenticator fields'\n    });\n\n    const authenticatorAddr =\n      options.authenticatorAddr ?? this._ctx.addresses.passwordAuth;\n    requireAddress(authenticatorAddr, 'authenticatorAddr');\n\n    const encoder = this._registry.getByAuthenticatorAddr(authenticatorAddr);\n\n    if (!encoder) {\n      throw new ValidationError(\n        'authenticatorAddr is not a built-in Monstera authenticator; pass authConfig as a hex-encoded bytes string instead',\n        'authenticatorAddr',\n        authenticatorAddr\n      );\n    }\n\n    log.info('encoding auth config', { encoderId: encoder.id });\n    const encoded = encoder.encode(authInput);\n\n    return {\n      ...rest,\n      authenticatorAddr,\n      authConfig: encoded\n    };\n  }\n}\n","/**\n * Minimal ABI for {@code IAuthenticator} ({@code contracts/interfaces/IAuthenticator.sol}).\n *\n * Shared by all built-in authenticator contracts. Use this for interface-level selectors\n * (e.g. {@code verify}) instead of a concrete implementation ABI.\n *\n * @module contracts/abi/interfaces/iAuthenticator\n */\n\n/**\n * Frozen ABI fragment array for {@code IAuthenticator}.\n *\n * @public\n * @readonly\n * @type {ReadonlyArray<object>}\n */\nexport const I_AUTHENTICATOR_ABI = [\n  {\n    inputs: [\n      { internalType: 'address', name: 'wallet', type: 'address' },\n      { internalType: 'bytes', name: 'config', type: 'bytes' }\n    ],\n    name: 'configure',\n    outputs: [],\n    stateMutability: 'nonpayable',\n    type: 'function'\n  },\n  {\n    inputs: [{ internalType: 'address', name: 'wallet', type: 'address' }],\n    name: 'isConfigured',\n    outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n    stateMutability: 'view',\n    type: 'function'\n  },\n  {\n    inputs: [\n      { internalType: 'address', name: 'wallet', type: 'address' },\n      {\n        components: [\n          { internalType: 'address', name: 'target', type: 'address' },\n          { internalType: 'bytes4', name: 'selector', type: 'bytes4' },\n          { internalType: 'bytes32', name: 'paramsHash', type: 'bytes32' },\n          { internalType: 'bytes32', name: 'actionHash', type: 'bytes32' }\n        ],\n        internalType: 'struct IAuthenticator.AuthContext',\n        name: 'context',\n        type: 'tuple'\n      },\n      { internalType: 'bytes', name: 'authProof', type: 'bytes' }\n    ],\n    name: 'verify',\n    outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n    stateMutability: 'view',\n    type: 'function'\n  }\n];\n","/**\n * Canonical action for on-chain authenticator {@code verify} sanity checks.\n *\n * On-chain {@code is*Valid} sanity checks do not authorize a specific KeyVault call. The\n * contracts still require an action-bound proof, so the SDK uses a stable probe action:\n * {@code IAuthenticator.verify} with {@code paramsHash = bytes32(0)} and\n * {@code target = authenticatorAddr}.\n *\n * @module internal/auth/probes/verifyProbe\n */\n\nimport { I_AUTHENTICATOR_ABI } from '../../../contracts/abi/interfaces/iAuthenticator.js';\nimport { getSelector } from '../../vault/getSelector.js';\n\n/** @type {Bytes32} */\nconst VERIFY_PROBE_PARAMS_HASH = `0x${'00'.repeat(32)}`;\n\n/**\n * @public\n * @returns {Bytes4} {@code verify(address,AuthContext,bytes)} selector\n */\nfunction getVerifySelector() {\n  return getSelector(I_AUTHENTICATOR_ABI, 'verify');\n}\n\n/**\n * Build the SDK's canonical verify-only probe action for a wallet authenticator.\n *\n * @public\n * @param {Address} authenticatorAddr - Authenticator contract address ({@code target})\n * @returns {AuthActionInput}\n */\nfunction buildAuthenticatorVerifyProbeAction(authenticatorAddr) {\n  return {\n    target: authenticatorAddr,\n    selector: getVerifySelector(),\n    paramsHash: VERIFY_PROBE_PARAMS_HASH\n  };\n}\n\nexport {\n  VERIFY_PROBE_PARAMS_HASH,\n  getVerifySelector,\n  buildAuthenticatorVerifyProbeAction\n};\n","/**\n * Unified auth-proof pipeline for all built-in authenticators.\n *\n * @description Single entry point for:\n * - Vault-authenticated KeyVault calls (discover authenticator from chain, session defaults)\n * - Explicit proof builders ({@code createAuthProof*}, verify probes, management ops)\n *\n * @typedef {import('../session/ConnectSession.js').ConnectSession} ConnectSession\n *\n * @module internal/auth/proof/AuthProofEncoder\n */\n\nimport { requireAddress, requirePlainObject } from '../../validation/assert.js';\nimport { ValidationError } from '../../../errors/index.js';\nimport log from '../../logger.js';\nimport {\n  assertAuthActionInput,\n  buildAuthContext,\n  resolveActionHash\n} from '../context/actionContext.js';\nimport { buildAuthenticatorVerifyProbeAction } from '../probes/verifyProbe.js';\nimport { isApiKeySessionTokenMode } from '../specs/apiKeySession.js';\nimport { createBuiltinAuthenticatorRegistry } from '../specs/registry.js';\n\n/**\n * @param {unknown} authProof\n * @returns {boolean}\n */\nfunction _isPreEncodedAuthProof(authProof) {\n  return typeof authProof === 'string' || authProof instanceof Uint8Array;\n}\n\n/**\n * @param {string} encoderId\n * @param {Record<string, unknown>} [input]\n * @returns {'token' | 'action' | undefined}\n */\nfunction _resolveApiKeySessionProofMode(encoderId, input) {\n  if (encoderId !== 'apiKeySessionAuth' || input == null) {\n    return undefined;\n  }\n  return isApiKeySessionTokenMode(input) ? 'token' : 'action';\n}\n\n/**\n * @param {Bytes | Uint8Array | undefined} authProof\n * @returns {number | undefined}\n */\nfunction _authProofByteLength(authProof) {\n  if (typeof authProof === 'string') {\n    return Math.max(0, (authProof.length - 2) / 2);\n  }\n  if (authProof instanceof Uint8Array) {\n    return authProof.length;\n  }\n  return undefined;\n}\n\n/**\n * @param {{ keyVaultAddr: Address }} params\n */\nfunction _logVaultAuthPreEncoded({ keyVaultAddr }) {\n  log.info('auth pipeline: vault call', {\n    path: 'vault',\n    encoderId: 'pre-encoded',\n    keyVaultAddr,\n    proofSource: 'caller'\n  });\n}\n\n/**\n * @param {Object} params\n * @param {string} params.encoderId\n * @param {string} params.flowId\n * @param {Address} params.authenticatorAddr\n * @param {Address} params.keyVaultAddr\n * @param {Record<string, unknown>} [params.proofInput]\n */\nfunction _logVaultAuthResolved({ encoderId, flowId, authenticatorAddr, keyVaultAddr, proofInput }) {\n  const proofMode = _resolveApiKeySessionProofMode(encoderId, proofInput);\n\n  log.info('auth pipeline: vault call', {\n    path: 'vault',\n    encoderId,\n    flowId,\n    authenticatorAddr,\n    keyVaultAddr,\n    ...(proofMode && { proofMode })\n  });\n\n  log.debug('auth pipeline: vault call detail', {\n    actionSelector: proofInput?.action?.selector,\n    actionTarget: proofInput?.action?.target,\n    proofMode,\n    sessionApiKey: proofInput?.apiKeySecret != null,\n    tokenExpiry: proofInput?.expiry\n  });\n}\n\n/**\n * @param {Object} params\n * @param {string} params.flowId\n * @param {string} params.encoderId\n * @param {Address} params.authenticatorAddr\n * @param {Address} [params.keyVaultAddr]\n * @param {AuthProofFlowOptions} [params.flowOptions]\n */\nfunction _logExplicitAuthPrepare({ flowId, encoderId, authenticatorAddr, keyVaultAddr, flowOptions }) {\n  log.info('auth pipeline: explicit flow', {\n    path: 'explicit',\n    flowId,\n    encoderId,\n    authenticatorAddr,\n    keyVaultAddr\n  });\n\n  log.debug('auth pipeline: explicit flow detail', {\n    useVerifyProbe: flowOptions?.useVerifyProbe === true,\n    includeAuthContext: flowOptions?.includeAuthContext === true\n  });\n}\n\n/**\n * @param {Object} params\n * @param {string} params.encoderId\n * @param {string} params.flowId\n * @param {Address} params.authenticatorAddr\n * @param {Address} params.keyVaultAddr\n * @param {Record<string, unknown>} [params.proofInput]\n * @param {AuthActionInput} [params.action]\n * @param {Bytes | Uint8Array} [params.authProof]\n */\nfunction _logAuthProofEncoded({\n  encoderId,\n  flowId,\n  authenticatorAddr,\n  keyVaultAddr,\n  proofInput,\n  action,\n  authProof\n}) {\n  const proofMode = _resolveApiKeySessionProofMode(encoderId, proofInput);\n\n  log.debug('auth pipeline: proof encoded', {\n    encoderId,\n    flowId,\n    authenticatorAddr,\n    keyVaultAddr,\n    ...(proofMode && { proofMode }),\n    actionSelector: action?.selector,\n    authProofBytes: _authProofByteLength(authProof)\n  });\n}\n\n/**\n * @public\n */\nexport class AuthProofEncoder {\n  /**\n   * @public\n   * @param {Object} deps\n   * @param {MonsteraConfigOptions} deps.config\n   * @param {EthersAbstractProvider} deps.readProvider\n   * @param {(keyVaultAddr: Address) => Promise<Address>} deps.getAuthenticatorAddr\n   */\n  constructor({ config, readProvider, getAuthenticatorAddr }) {\n    this._config = config;\n    this._readProvider = readProvider;\n    this._getAuthenticatorAddr = getAuthenticatorAddr;\n    this._registry = createBuiltinAuthenticatorRegistry(config.addresses);\n  }\n\n  /**\n   * @public\n   * @async\n   * @param {Address} keyVaultAddr\n   */\n  async resolveByKeyVault(keyVaultAddr) {\n    requireAddress(keyVaultAddr, 'keyVaultAddr');\n    const authenticatorAddr = await this._getAuthenticatorAddr(keyVaultAddr);\n    const spec = this._registry.getSpecByAuthenticatorAddr(authenticatorAddr);\n\n    if (!spec) {\n      throw new ValidationError(\n        'No built-in encoder for this authenticator; pass authProof as hex bytes',\n        'authenticatorAddr',\n        authenticatorAddr\n      );\n    }\n\n    return { authenticatorAddr, spec };\n  }\n\n  /**\n   * @public\n   * @param {AuthProofFlowId} flowId\n   */\n  resolveByFlowId(flowId) {\n    const spec = this._registry.getSpecByFlowId(flowId);\n    if (!spec) {\n      throw new ValidationError('Unknown auth proof flow', 'flowId', flowId);\n    }\n\n    const authenticatorAddr = this._config.addresses[spec.addressKey];\n    return { authenticatorAddr, spec };\n  }\n\n  /**\n   * @private\n   * @param {Address} authenticatorAddr\n   * @param {Address} keyVaultAddr\n   */\n  _buildEncodeContext(authenticatorAddr, keyVaultAddr) {\n    return {\n      addresses: this._config.addresses,\n      chainId: this._config.chainId,\n      readProvider: this._readProvider,\n      getAuthenticatorAddr: this._getAuthenticatorAddr,\n      authenticatorAddr,\n      keyVaultAddr\n    };\n  }\n\n  /**\n   * @private\n   * @async\n   * @param {BuiltinAuthenticatorSpec} spec\n   * @param {Address} authenticatorAddr\n   * @param {Record<string, unknown>} options\n   * @param {AuthProofFlowOptions} flowOptions\n   */\n  async _resolveAction(spec, authenticatorAddr, options, flowOptions = {}) {\n    const { useVerifyProbe = false } = flowOptions;\n    const withConfig = spec.applyConfigDefaults(this._config, options);\n    let action = options.action;\n    let actionHash = options.actionHash;\n\n    if (actionHash == null) {\n      if (action == null && useVerifyProbe) {\n        action = buildAuthenticatorVerifyProbeAction(\n          /** @type {Address} */ (withConfig.authenticatorAddr ?? authenticatorAddr)\n        );\n      }\n      actionHash = await resolveActionHash(\n        {\n          readProvider: this._readProvider,\n          chainId: withConfig.chainId,\n          keyVaultAddr: withConfig.keyVaultAddr\n        },\n        { action, actionHash }\n      );\n    } else if (flowOptions.includeAuthContext && action == null) {\n      assertAuthActionInput(action);\n    }\n\n    return { action, actionHash, withConfig };\n  }\n\n  /**\n   * @private\n   * @async\n   * @param {BuiltinAuthenticatorSpec} spec\n   * @param {Address} authenticatorAddr\n   * @param {Record<string, unknown>} proofInput\n   * @param {AuthActionInput | undefined} action\n   * @param {Bytes32 | undefined} actionHash\n   */\n  async _encodeProofInput(spec, authenticatorAddr, proofInput, action, actionHash) {\n    const withConfig = spec.applyConfigDefaults(this._config, proofInput);\n    const keyVaultAddr = /** @type {Address} */ (withConfig.keyVaultAddr);\n    const encodeCtx = this._buildEncodeContext(authenticatorAddr, keyVaultAddr);\n\n    let resolvedActionHash = actionHash;\n    if (resolvedActionHash == null) {\n      resolvedActionHash = await resolveActionHash(encodeCtx, { action, actionHash });\n    }\n\n    const input = { ...withConfig, action, actionHash: resolvedActionHash };\n\n    if (spec.prepareProofResult) {\n      const result = await spec.prepareProofResult(encodeCtx, input);\n      _logAuthProofEncoded({\n        encoderId: spec.id,\n        flowId: spec.flowId,\n        authenticatorAddr,\n        keyVaultAddr,\n        proofInput: input,\n        action,\n        authProof: typeof result === 'object' && result != null && 'authProof' in result ? result.authProof : result\n      });\n      return result;\n    }\n\n    const authProof = await spec.proofEncoder.encode(encodeCtx, input);\n    _logAuthProofEncoded({\n      encoderId: spec.id,\n      flowId: spec.flowId,\n      authenticatorAddr,\n      keyVaultAddr,\n      proofInput: input,\n      action,\n      authProof\n    });\n    return authProof;\n  }\n\n  /**\n   * Merge structured proof input: collect → session defaults → action from {@code buildAction}.\n   *\n   * @private\n   * @param {BuiltinAuthenticatorSpec} spec\n   * @param {Record<string, unknown>} resolved\n   * @param {ConnectSession | null} session\n   * @param {(resolved: Record<string, unknown>) => AuthActionInput} [buildAction]\n   * @returns {Record<string, unknown>}\n   */\n  _mergeProofInput(spec, resolved, session, buildAction) {\n    let proofInput = spec.collectProofInput(resolved);\n    proofInput = spec.applySessionInput(session, {\n      ...proofInput,\n      addresses: this._config.addresses\n    });\n\n    if (proofInput.action == null && typeof buildAction === 'function') {\n      proofInput = { ...proofInput, action: buildAction(resolved) };\n    } else if (proofInput.action == null && typeof buildAction !== 'function') {\n      throw new ValidationError(\n        'authProof.action is required for structured auth proofs on this call',\n        'authProof',\n        proofInput\n      );\n    }\n\n    return proofInput;\n  }\n\n  /**\n   * Encode vault call options for KeyVault clients (Path: discover authenticator from chain).\n   * \n   * authProof passed in as structured partial input \n   * authentciator is discovered on-chain from keyVaultAddr\n   * session password/signer defaults are merged in\n   * vault operation supplies the action via buildAction\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} resolved - Options after session address merge\n   * @param {ConnectSession | null} session\n   * @param {(resolved: Record<string, unknown>) => AuthActionInput} [buildAction]\n   * @returns {Promise<EncodeAuthProofOptionsResult>}\n   */\n  async encodeForKeyVault(resolved, session, buildAction) {\n    const { authProof, keyVaultAddr } = resolved;\n\n    if (authProof != null && _isPreEncodedAuthProof(authProof)) {\n      _logVaultAuthPreEncoded({ keyVaultAddr: /** @type {Address} */ (keyVaultAddr) });\n      return /** @type {EncodeAuthProofOptionsResult} */ (resolved);\n    }\n\n    if (authProof != null && !_isPreEncodedAuthProof(authProof)) {\n      requirePlainObject(authProof, 'authProof', {\n        message:\n          'authProof must be a hex string, Uint8Array, or a plain object for built-in authenticators'\n      });\n    }\n\n    const { authenticatorAddr, spec } = await this.resolveByKeyVault(\n      /** @type {Address} */ (keyVaultAddr)\n    );\n\n    const proofInput = this._mergeProofInput(spec, resolved, session, buildAction);\n\n    _logVaultAuthResolved({\n      encoderId: spec.id,\n      flowId: spec.flowId,\n      authenticatorAddr,\n      keyVaultAddr: /** @type {Address} */ (keyVaultAddr),\n      proofInput\n    });\n\n    const encoded = await this._encodeProofInput(\n      spec,\n      authenticatorAddr,\n      { keyVaultAddr, ...proofInput },\n      /** @type {AuthActionInput} */ (proofInput.action),\n      undefined\n    );\n\n    const authProofBytes = typeof encoded === 'object' && encoded != null && 'authProof' in encoded\n      ? encoded.authProof\n      : encoded;\n\n    return {\n      ...resolved,\n      keyVaultAddr,\n      authProof: /** @type {Bytes} */ (authProofBytes)\n    };\n  }\n\n  /**\n   * Build a proof for an explicitly named authenticator flow (Path: caller picks flow).\n   *\n   * caller names the flow: password, walletSignature, dualFactor, minuteSignature, etc. \n   * input is validated (validatePrepareInput)\n   * action/actionHash is resolved (resolveAction)\n   * returns proof bytes (and optionally separate action context)\n   * \n   * @public\n   * @async\n   * @param {AuthProofFlowId} flowId\n   * @param {Record<string, unknown>} [options={}]\n   * @param {AuthProofFlowOptions} [flowOptions={}]\n   */\n  async encodeForFlow(flowId, options = {}, flowOptions = {}) {\n    const { includeAuthContext = false } = flowOptions;\n    const { authenticatorAddr, spec } = this.resolveByFlowId(flowId);\n\n    _logExplicitAuthPrepare({\n      flowId,\n      encoderId: spec.id,\n      authenticatorAddr,\n      keyVaultAddr: /** @type {Address | undefined} */ (options.keyVaultAddr),\n      flowOptions\n    });\n\n    const proofInput = spec.collectProofInput(options);\n    const withDefaults = spec.applyConfigDefaults(this._config, { ...options, ...proofInput });\n    spec.validatePrepareInput(withDefaults);\n    const { action, actionHash, withConfig } = await this._resolveAction(\n      spec,\n      authenticatorAddr,\n      withDefaults,\n      flowOptions\n    );\n\n    const proofResult = await this._encodeProofInput(\n      spec,\n      authenticatorAddr,\n      withConfig,\n      action,\n      actionHash\n    );\n\n    const authContext = includeAuthContext\n      ? buildAuthContext({\n          target: action?.target ?? withConfig.keyVaultAddr,\n          selector: action.selector,\n          paramsHash: action.paramsHash,\n          actionHash\n        })\n      : null;\n\n    if (flowId === 'minuteSignature' && typeof proofResult === 'object' && proofResult != null) {\n      return { resolved: withConfig, actionHash, ...proofResult, action: authContext };\n    }\n\n    return {\n      resolved: withConfig,\n      actionHash,\n      authProof: proofResult,\n      action: authContext\n    };\n  }\n}\n","/**\n * Username/password session for Monstera connect.\n *\n * Resolves and caches the wallet proxy and KeyVault addresses for a registered username,\n * and exposes password and/or API key material for vault-authenticated calls.\n *\n * @module internal/auth/session/ConnectSession\n */\n\nimport { ZeroAddress } from '../../../adapters/ethers/addresses.js';\nimport { keccak256, toUtf8Bytes } from '../../../adapters/ethers/hashing.js';\nimport { CredentialsRequiredError, ValidationError } from '../../../errors/index.js';\nimport { requireNormalizedUsername } from '../../validation/assert.js';\n\nexport { parseConnectCredentials } from '../../validators/connectOptions.js';\n\n/**\n * @public\n */\nexport class ConnectSession {\n  /**\n   * @public\n   * @param {ConnectCredentials} credentials\n   * @param {ConnectSessionDeps} deps\n   */\n  constructor(credentials, deps) {\n    this._username = credentials.username;\n    this._passwordBytes = credentials.password ? toUtf8Bytes(credentials.password) : null;\n    this._passwordHash = this._passwordBytes ? keccak256(this._passwordBytes) : null;\n    this._apiKeySecret = credentials.apiKey ? keccak256(credentials.apiKey) : null;\n    this._deps = deps;\n    /** @type {Address | null} */\n    this._walletAddr = null;\n    /** @type {Address | null} */\n    this._keyVaultAddr = null;\n    /** @type {Promise<void> | null} */\n    this._resolvePromise = null;\n  }\n\n  /**\n   * @public\n   * @returns {boolean}\n   */\n  isActive() {\n    return true;\n  }\n\n  /**\n   * @public\n   * @returns {boolean}\n   */\n  hasPassword() {\n    return this._passwordBytes != null;\n  }\n\n  /**\n   * @public\n   * @returns {boolean}\n   */\n  hasApiKey() {\n    return this._apiKeySecret != null;\n  }\n\n  /**\n   * @public\n   * @returns {Bytes32}\n   */\n  getApiKeySecret() {\n    if (!this._apiKeySecret) {\n      throw new ValidationError('credentials.apiKey is required for this operation', 'credentials.apiKey', null);\n    }\n    return this._apiKeySecret;\n  }\n\n  /**\n   * @public\n   * @returns {Uint8Array}\n   */\n  getPasswordBytes() {\n    if (!this._passwordBytes) {\n      throw new ValidationError('credentials.password is required for this operation', 'credentials.password', null);\n    }\n    return this._passwordBytes;\n  }\n\n  /**\n   * @public\n   * @returns {Bytes32}\n   */\n  getPasswordHash() {\n    if (!this._passwordHash) {\n      throw new ValidationError('credentials.password is required for this operation', 'credentials.password', null);\n    }\n    return this._passwordHash;\n  }\n\n  /**\n   * @public\n   * @returns {string}\n   */\n  getUsername() {\n    return this._username;\n  }\n\n  /**\n   * @public\n   * @async\n   * @returns {Promise<Address>}\n   */\n  async getWalletAddr() {\n    await this._ensureResolved();\n    return /** @type {Address} */ (this._walletAddr);\n  }\n\n  /**\n   * @public\n   * @async\n   * @returns {Promise<Address>}\n   */\n  async getKeyVaultAddr() {\n    await this._ensureResolved();\n    return /** @type {Address} */ (this._keyVaultAddr);\n  }\n\n  /**\n   * Merge session defaults into caller options for KeyVault-scoped methods.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}]\n   * @param {ResolveVaultOptionsFlags} [flags={}]\n   * @returns {Promise<Record<string, unknown>>}\n   */\n  async mergeSessionDefaults(options = {}, flags = {}) {\n    const resolved = { ...options };\n\n    if (!resolved.keyVaultAddr) {\n      resolved.keyVaultAddr = await this.getKeyVaultAddr();\n    }\n\n    if (flags.defaultCurrentPassword && resolved.currentPassword == null) {\n      resolved.currentPassword = this._passwordBytes;\n    }\n\n    if (flags.defaultApiKeySecret && resolved.apiKeySecret == null) {\n      resolved.apiKeySecret = this._apiKeySecret;\n    }\n\n    return resolved;\n  }\n\n  /**\n   * Merge session defaults into caller options, or pass through explicit {@code keyVaultAddr}.\n   *\n   * @public\n   * @static\n   * @async\n   * @param {ConnectSession | null} connectSession\n   * @param {Record<string, unknown>} [options={}]\n   * @param {ResolveVaultOptionsFlags} [flags={}]\n   * @returns {Promise<Record<string, unknown>>}\n   * @throws {CredentialsRequiredError}\n   */\n  static async mergeVaultOptions(connectSession, options = {}, flags = {}) {\n    let resolved;\n\n    if (connectSession) {\n      resolved = await connectSession.mergeSessionDefaults(options, flags);\n    } else if (options.keyVaultAddr) {\n      resolved = { ...options };\n    } else {\n      throw new CredentialsRequiredError('vault operation');\n    }\n\n    return resolved;\n  }\n\n  /**\n   * @private\n   * @async\n   * @returns {Promise<void>}\n   */\n  async _ensureResolved() {\n    if (this._keyVaultAddr) {\n      return;\n    }\n\n    if (!this._resolvePromise) {\n      this._resolvePromise = this._resolveAddresses();\n    }\n\n    await this._resolvePromise;\n  }\n\n  /**\n   * @private\n   * @async\n   * @returns {Promise<void>}\n   */\n  async _resolveAddresses() {\n    const normalized = requireNormalizedUsername(this._username, 'credentials.username');\n\n    const usernameHash = await this._deps.hashUsername({ username: normalized });\n    const walletAddr = await this._deps.walletOfUsername({ usernameHash });\n\n    if (!walletAddr || walletAddr === ZeroAddress) {\n      throw new ValidationError(\n        'No wallet is registered for the supplied credentials.username',\n        'credentials.username',\n        this._username\n      );\n    }\n\n    const keyVaultAddr = await this._deps.getKeyVaultAddr({ walletAddr });\n\n    this._walletAddr = walletAddr;\n    this._keyVaultAddr = keyVaultAddr;\n  }\n}\n\n","/**\n * HD account index defaults for KeyVault operations.\n *\n * @module internal/vault/accountIndex\n */\n\n/** @type {number} */\nexport const DEFAULT_ACCOUNT_INDEX = 0;\n\n/**\n * @public\n * @param {Record<string, unknown>} options\n * @returns {Record<string, unknown> & { index: number }}\n */\nexport function withDefaultAccountIndex(options) {\n  return {\n    ...options,\n    index: options.index ?? DEFAULT_ACCOUNT_INDEX\n  };\n}\n","/**\n * End-user vault call pipeline: session merge → auth-proof encoding → client invoke.\n *\n * @typedef {import('../session/ConnectSession.js').ConnectSession} ConnectSession\n * @typedef {import('../proof/AuthProofEncoder.js').AuthProofEncoder} AuthProofEncoder\n *\n * @module internal/auth/pipelines/KeyVaultAuthPipeline\n */\n\nimport { CredentialsRequiredError } from '../../../errors/index.js';\nimport { ConnectSession } from '../session/ConnectSession.js';\nimport { withDefaultAccountIndex } from '../../vault/accountIndex.js';\nimport log from '../../logger.js';\n\n/**\n * Orchestrates credentials-session defaults and KeyVault auth-proof encoding.\n *\n * @public\n */\nexport class KeyVaultAuthPipeline {\n  /**\n   * @public\n   * @param {{ connectSession: ConnectSession | null; authProofEncoder: AuthProofEncoder }} deps\n   */\n  constructor({ connectSession, authProofEncoder }) {\n    this._connectSession = connectSession;\n    this._authProofEncoder = authProofEncoder;\n  }\n\n  /**\n   * @public\n   * @returns {boolean}\n   */\n  hasCredentials() {\n    return this._connectSession != null;\n  }\n\n  /**\n   * @public\n   * @param {ConnectSession | null} session\n   */\n  setConnectSession(session) {\n    this._connectSession = session;\n  }\n\n  /**\n   * @public\n   * @returns {ConnectSession | null}\n   */\n  getConnectSession() {\n    return this._connectSession;\n  }\n\n  /**\n   * @public\n   * @param {string} operation\n   * @throws {CredentialsRequiredError}\n   */\n  requireUserAccess(operation) {\n    if (!this._connectSession) {\n      throw new CredentialsRequiredError(operation);\n    }\n  }\n\n  /**\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}]\n   * @param {ResolveVaultOptionsFlags} [flags={}]\n   * @returns {Promise<Record<string, unknown>>}\n   * @throws {CredentialsRequiredError}\n   */\n  async mergeVaultOptions(options = {}, flags = {}) {\n    return ConnectSession.mergeVaultOptions(this._connectSession, options, flags);\n  }\n\n  /**\n   * @public\n   * @async\n   * @param {EncodeAuthProofInputOptions} options\n   * @param {(resolved: Record<string, unknown>) => AuthActionInput} buildAction\n   * @returns {Promise<EncodeAuthProofOptionsResult>}\n   */\n  async encodeAuthProof(options, buildAction) {\n    const resolved = withDefaultAccountIndex(await this.mergeVaultOptions(options));\n    return this._authProofEncoder.encodeForKeyVault(resolved, this._connectSession, buildAction);\n  }\n\n  /**\n   * @public\n   * @async\n   * @template T\n   * @param {Record<string, unknown>} options\n   * @param {(resolved: Record<string, unknown>) => AuthActionInput} buildAction\n   * @param {(encoded: EncodeAuthProofOptionsResult) => Promise<T>} invoke\n   * @returns {Promise<T>}\n   */\n  async invokeWithAuthProof(options, buildAction, invoke) {\n    const preEncoded =\n      options.authProof != null &&\n      (typeof options.authProof === 'string' || options.authProof instanceof Uint8Array);\n\n    log.debug('vault pipeline: invoke start', { preEncodedAuthProof: preEncoded });\n\n    const encoded = await this.encodeAuthProof(options, buildAction);\n\n    log.debug('vault pipeline: invoke ready', {\n      keyVaultAddr: encoded.keyVaultAddr,\n      preEncodedAuthProof: preEncoded\n    });\n\n    return invoke(encoded);\n  }\n}\n","/**\n * Authenticator management call pipeline: session merge → prepare(flowId) → client invoke.\n *\n * @typedef {import('../session/ConnectSession.js').ConnectSession} ConnectSession\n * @typedef {import('../proof/AuthProofEncoder.js').AuthProofEncoder} AuthProofEncoder\n *\n * @module internal/auth/pipelines/ExplicitAuthPipeline\n */\n\nimport { ConnectSession } from '../session/ConnectSession.js';\nimport log from '../../logger.js';\n\n/**\n * @param {Record<string, unknown>} resolved\n * @param {Address} defaultAddr\n * @param {Address | undefined} overrideAddr\n * @returns {Address}\n */\nfunction _resolveAuthenticatorAddr(resolved, defaultAddr, overrideAddr) {\n  if (resolved.authenticatorAddr != null) {\n    return /** @type {Address} */ (resolved.authenticatorAddr);\n  }\n  if (overrideAddr != null) {\n    return overrideAddr;\n  }\n  return defaultAddr;\n}\n\n/**\n * Orchestrates credentials-session defaults and authenticator auth-proof encoding.\n *\n * @public\n */\nexport class ExplicitAuthPipeline {\n  /**\n   * @public\n   * @param {{ connectSession: ConnectSession | null; authProofEncoder: AuthProofEncoder }} deps\n   */\n  constructor({ connectSession, authProofEncoder }) {\n    this._connectSession = connectSession;\n    this._authProofEncoder = authProofEncoder;\n  }\n\n  /**\n   * @public\n   * @async\n   * @param {AuthProofFlowId} flowId\n   * @param {Record<string, unknown>} [options={}]\n   * @param {AuthenticatorEncodeConfig} [config={}]\n   * @returns {Promise<AuthenticatorEncodeResult>}\n   */\n  async encodeAuthProof(flowId, options = {}, config = {}) {\n    const { flags = {}, buildAction, flowOptions = {}, overrides = {} } = config;\n    const resolved = await ConnectSession.mergeVaultOptions(\n      this._connectSession,\n      options,\n      flags\n    );\n    const { authenticatorAddr: defaultAddr, spec } = this._authProofEncoder.resolveByFlowId(flowId);\n    const authenticatorAddr = _resolveAuthenticatorAddr(\n      resolved,\n      defaultAddr,\n      overrides.authenticatorAddr\n    );\n\n    log.debug('auth pipeline: explicit encode', {\n      flowId,\n      encoderId: spec.id,\n      authenticatorAddr,\n      keyVaultAddr: resolved.keyVaultAddr,\n      sessionFlags: flags,\n      hasBuildAction: typeof buildAction === 'function'\n    });\n\n    const mappedInput = spec.mapSessionResolved(resolved, authenticatorAddr);\n\n    const prepareInput =\n      typeof buildAction === 'function'\n        ? { ...mappedInput, action: buildAction(resolved, authenticatorAddr) }\n        : { ...resolved, ...mappedInput };\n\n    const prepared = await this._authProofEncoder.encodeForFlow(flowId, prepareInput, flowOptions);\n\n    return {\n      ...resolved,\n      ...prepared,\n      authProof: prepared.authProof,\n      authenticatorAddr\n    };\n  }\n\n  /**\n   * @public\n   * @async\n   * @template T\n   * @param {AuthProofFlowId} flowId\n   * @param {Record<string, unknown>} [options={}]\n   * @param {AuthenticatorInvokeConfig<T>} config\n   * @returns {Promise<T>}\n   */\n  async invokeWithAuthProof(flowId, options = {}, config) {\n    const { flags = {}, buildAction, invoke, flowOptions, overrides = {} } = config;\n    const encoded = await this.encodeAuthProof(flowId, options, {\n      flags,\n      buildAction,\n      flowOptions,\n      overrides\n    });\n    return invoke(encoded);\n  }\n}\n","/**\n * Configure call pipeline: session merge → auth config encode → client invoke.\n *\n * Symmetric with {@link KeyVaultAuthPipeline} and {@link ExplicitAuthPipeline} for\n * initial authenticator setup (no auth proof).\n *\n * @typedef {import('./KeyVaultAuthPipeline.js').KeyVaultAuthPipeline} KeyVaultAuthPipeline\n * @typedef {import('../config/AuthConfigEncoder.js').AuthConfigEncoder} AuthConfigEncoder\n *\n * @module internal/auth/pipelines/AuthConfigPipeline\n */\n\n/**\n * @public\n */\nexport class AuthConfigPipeline {\n  /**\n   * @public\n   * @param {{ keyVaultAuthPipeline: KeyVaultAuthPipeline; authConfigEncoder: AuthConfigEncoder }} deps\n   */\n  constructor({ keyVaultAuthPipeline, authConfigEncoder }) {\n    this._keyVaultAuthPipeline = keyVaultAuthPipeline;\n    this._authConfigEncoder = authConfigEncoder;\n  }\n\n  /**\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}]\n   * @param {ConfigureCallDescriptor} descriptor\n   * @returns {Promise<unknown>}\n   */\n  async configure(options = {}, descriptor) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(\n      options,\n      descriptor.resolveFlags ?? {}\n    );\n    const { authConfig } = this._authConfigEncoder.encode({\n      authConfig: descriptor.buildAuthConfigInput(resolved),\n      authenticatorAddr: descriptor.authenticatorAddr\n    });\n    return descriptor.invoke({ keyVaultAddr: resolved.keyVaultAddr, authConfig });\n  }\n}\n","/**\n * Bind {@code this} typing for methods mixed onto {@link Monstera} via {@code Object.assign}.\n *\n * {@code this} is typed as {@link MonsteraInstance} (see {@code Monstera.domain-methods.d.ts})\n * so Cmd+click navigates to recipe and domain methods across files.\n *\n * @module sdk/domains/defineDomainMethods\n */\n\n/// <reference path=\"../Monstera.domain-methods.d.ts\" />\n\n/**\n * @template T\n * @param {T & ThisType<import('../Monstera.domain-methods').MonsteraInstance>} methods\n * @returns {T}\n */\nexport function defineDomainMethods(methods) {\n  return methods;\n}\n","/**\n * Standardized operation recipes for {@link Monstera} domain methods.\n *\n * Mixed onto the prototype before other domain modules so every domain can share\n * the same call patterns. Each recipe accepts a single descriptor object.\n *\n * 1. **Vault-authenticated** — {@link Monstera#_invokeVaultAuthenticated}\n * 2. **Authenticator-managed** — {@link Monstera#_invokeAuthenticatorManaged} / {@link Monstera#_encodeAuthenticatorManaged}\n * 3. **Configure** — {@link Monstera#_configureAuthenticator}\n *\n * @module sdk/domains/MonsteraRecipes\n */\n\nimport { defineDomainMethods } from './defineDomainMethods.js';\n\nexport const monsteraRecipeMethods = defineDomainMethods({\n  /**\n   * Recipe 1: vault-authenticated operation (KeyVault signing, vault admin writes).\n   *\n   * @private\n   * @template T\n   * @param {VaultAuthenticatedCallDescriptor<T>} descriptor\n   * @returns {Promise<T>}\n   */\n  _invokeVaultAuthenticated(descriptor) {\n    const { options = {}, buildAction, invoke } = descriptor;\n    return this._keyVaultAuthPipeline.invokeWithAuthProof(options, buildAction, invoke);\n  },\n\n  /**\n   * Recipe 2a: authenticator-managed invoke (encode proof + client call).\n   *\n   * @private\n   * @template T\n   * @param {AuthenticatorManagedCallDescriptor<T>} descriptor\n   * @returns {Promise<T>}\n   */\n  _invokeAuthenticatorManaged(descriptor) {\n    const { flowId, options = {}, flags, buildAction, invoke, flowOptions, overrides } = descriptor;\n    return this._explicitAuthPipeline.invokeWithAuthProof(flowId, options, {\n      flags,\n      buildAction,\n      invoke,\n      flowOptions,\n      overrides\n    });\n  },\n\n  /**\n   * Recipe 2b: authenticator-managed encode-only (proof building).\n   *\n   * @private\n   * @param {AuthenticatorManagedEncodeDescriptor} descriptor\n   * @returns {Promise<AuthenticatorEncodeResult>}\n   */\n  _encodeAuthenticatorManaged(descriptor) {\n    const { flowId, options = {}, config = {} } = descriptor;\n    return this._explicitAuthPipeline.encodeAuthProof(flowId, options, config);\n  },\n\n  /**\n   * Recipe 3: configure authenticator (resolve vault options + encode auth config + client invoke).\n   *\n   * @private\n   * @param {ConfigureAuthenticatorCallDescriptor} descriptor\n   * @returns {Promise<unknown>}\n   */\n  _configureAuthenticator(descriptor) {\n    const { options = {}, ...configureDescriptor } = descriptor;\n    return this._authConfigPipeline.configure(options, configureDescriptor);\n  }\n});\n","/**\n * MonsteraSession domain methods for {@link Monstera}.\n *\n * @module sdk/domains/MonsteraSession\n */\n\nimport { defineDomainMethods } from './defineDomainMethods.js';\n\nexport const monsteraSessionMethods = defineDomainMethods({\n  // ============================================================================\n  // Utility Methods\n  // ============================================================================\n\n  /**\n   * Whether this SDK instance has a wrapped write signer and can submit transactions.\n   *\n   * @public\n   * @returns {boolean} {@code true} when a Sapphire-wrapped signer is configured\n   */\n  hasWriteAccess() {\n    return this.writeSigner !== null;\n  },\n\n  /**\n   * Get the address of the configured write signer.\n   *\n   * @public\n   * @async\n   * @returns {Promise<Address|null>} Signer address, or {@code null} when no signer is configured\n   * @throws {Error} If the underlying signer's {@code getAddress()} rejects (rare; e.g. hardware-wallet failures)\n   */\n  async getSignerAddr() {\n    if (!this.writeSigner) return null;\n    return await this.writeSigner.getAddress();\n  },\n\n  /**\n   * Whether this SDK instance was connected with end-user credentials.\n   *\n   * @public\n   * @returns {boolean},\n   */\n  hasCredentials() {\n    return this._keyVaultAuthPipeline.hasCredentials();\n  },\n\n  /**\n   * Inject {@code walletAddr} from the credentials session when omitted.\n   *\n   * @private\n   * @async\n   * @param {Record<string, unknown>} options\n   * @returns {Promise<Record<string, unknown>>},\n   */\n  async _resolveWalletProxyOptions(options = {}) {\n    if (options.walletAddr || !this.hasCredentials()) {\n      return options;\n    }\n\n    return {\n      ...options,\n      walletAddr: await this._keyVaultAuthPipeline.getConnectSession().getWalletAddr()\n    };\n  },\n\n  /**\n   * Inject {@code walletOrKeyVaultAddr} from resolved {@code keyVaultAddr} when omitted.\n   *\n   * @private\n   * @async\n   * @param {Record<string, unknown>} options\n   * @returns {Promise<Record<string, unknown>>},\n   */\n  async _resolveWalletOrKeyVaultScope(options = {}) {\n    if (options.walletOrKeyVaultAddr) {\n      return options;\n    }\n\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options);\n    return { ...options, ...resolved, walletOrKeyVaultAddr: resolved.keyVaultAddr };\n  },\n\n  /**\n   * Merge ApiKeySession call options with connect credentials and SDK config defaults.\n   *\n   * @private\n   * @async\n   * @param {Record<string, unknown>} [options={}]\n   * @param {ResolveVaultOptionsFlags} [flags]\n   * @returns {Promise<Record<string, unknown>>},\n   */\n  async _resolveApiKeySessionProofOptions(options = {}, flags = { defaultApiKeySecret: true }) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options, flags);\n    return {\n      ...resolved,\n      chainId: this.config.chainId\n    };\n  },\n\n  /**\n   * Get the wallet proxy address for the connect-time username.\n   * \n   * @returns {Promise<Address>} Wallet proxy address\n   * @throws {CredentialsRequiredError} If no credentials session is configured\n   * @throws {ValidationError} If no wallet is registered for the session username\n   * @throws {NetworkError} If factory lookups fail over RPC\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getSessionWalletAddr() {\n    this._keyVaultAuthPipeline.requireUserAccess('getSessionWalletAddr');\n    return this._keyVaultAuthPipeline.getConnectSession().getWalletAddr();\n  },\n\n  /**\n   * Resolve the cached KeyVault address for the connect-time username.\n   *\n   * Uses the same {@link ConnectSession} → {@link WalletFactoryClient#getKeyVaultAddr} path as\n   * vault-scoped facade methods ({@link KeyVaultAuthPipeline#mergeVaultOptions}).\n   *\n   * @public\n   * @async\n   * @returns {Promise<Address>} KeyVault contract address\n   * @throws {CredentialsRequiredError} If no credentials session is configured\n   * @throws {ValidationError} If no wallet is registered for the session username\n   * @throws {NetworkError} If factory lookups fail over RPC\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getSessionKeyVaultAddr() {\n    const { keyVaultAddr } = await this._keyVaultAuthPipeline.mergeVaultOptions({});\n    return keyVaultAddr;\n  },\n\n  /**\n   * Get a specific authenticator client by type, e.g. {@code 'walletSignature'} or {@code 'password'}.\n   *\n   * @public\n   * @param {string} type - Authenticator type ({@code 'walletSignature'}, {@code 'password'}, {@code 'dualFactor'}, {@code 'passwordMinuteSignature'})\n   * @returns {AuthenticatorClientInstance} The matching authenticator client instance\n   * @throws {ValidationError} If {@code type} is missing, not a string, or not a registered authenticator type\n   */\n  getAuthClient(type) {\n    return this.auth.getClient(type);\n  },\n\n  /**\n   * List the authenticator types registered on this SDK instance.\n   *\n   * @public\n   * @returns {string[]} Array of authenticator type names (suitable for {@link Monstera#getAuthClient})\n   */\n  getAvailableAuthTypes() {\n    return this.auth.getAvailableTypes();\n  }\n});\n","/**\n * PasswordAuthenticator management action builders.\n *\n * @module internal/auth/actions/password\n */\n\nimport { PASSWORD_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/passwordAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * @public\n * @param {Address} target - PasswordAuthenticator address\n * @param {Bytes32} newPasswordHash\n * @returns {AuthActionInput}\n */\nfunction buildChangePasswordAction(target, newPasswordHash) {\n  return buildManagementAction(\n    PASSWORD_AUTHENTICATOR_ABI,\n    'changePassword',\n    ['bytes32'],\n    [newPasswordHash],\n    target,\n    ['newPasswordHash']\n  );\n}\n\nexport { buildChangePasswordAction };\n","/**\n * PasswordMinuteSignatureAuthenticator management action builders.\n *\n * @module internal/auth/actions/passwordMinuteSignature\n */\n\nimport { PASSWORD_MINUTE_SIGNATURE_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/passwordMinuteSignatureAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * @public\n * @param {Address} target - PasswordMinuteSignatureAuthenticator address\n * @param {Bytes32} newPasswordHash\n * @returns {AuthActionInput}\n */\nfunction buildChangePasswordAction(target, newPasswordHash) {\n  return buildManagementAction(\n    PASSWORD_MINUTE_SIGNATURE_AUTHENTICATOR_ABI,\n    'changePassword',\n    ['bytes32'],\n    [newPasswordHash],\n    target,\n    ['newPasswordHash']\n  );\n}\n\nexport { buildChangePasswordAction };\n","/**\n * WalletSignatureAuthenticator management action builders.\n *\n * @module internal/auth/actions/walletSignature\n */\n\nimport { WALLET_SIGNATURE_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/walletSignatureAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * @public\n * @param {Address} target - WalletSignatureAuthenticator address\n * @param {Address} addressToAdd\n * @returns {AuthActionInput}\n */\nfunction buildAddToWhitelistAction(target, addressToAdd) {\n  return buildManagementAction(\n    WALLET_SIGNATURE_AUTHENTICATOR_ABI,\n    'addToWhitelist',\n    ['address'],\n    [addressToAdd],\n    target,\n    ['addressToAdd']\n  );\n}\n\n/**\n * @public\n * @param {Address} target - WalletSignatureAuthenticator address\n * @param {Address} addressToRemove\n * @returns {AuthActionInput}\n */\nfunction buildRemoveFromWhitelistAction(target, addressToRemove) {\n  return buildManagementAction(\n    WALLET_SIGNATURE_AUTHENTICATOR_ABI,\n    'removeFromWhitelist',\n    ['address'],\n    [addressToRemove],\n    target,\n    ['addressToRemove']\n  );\n}\n\nexport { buildAddToWhitelistAction, buildRemoveFromWhitelistAction };\n","/**\n * DualFactorAuthenticator management action builders.\n *\n * @module internal/auth/actions/dualFactor\n */\n\nimport { DUAL_FACTOR_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/dualFactorAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * @public\n * @param {Address} target - DualFactorAuthenticator address\n * @param {Bytes32} newPasswordHash\n * @returns {AuthActionInput}\n */\nfunction buildChangePasswordAction(target, newPasswordHash) {\n  return buildManagementAction(\n    DUAL_FACTOR_AUTHENTICATOR_ABI,\n    'changePassword',\n    ['bytes32'],\n    [newPasswordHash],\n    target,\n    ['newPasswordHash']\n  );\n}\n\n/**\n * @public\n * @param {Address} target - DualFactorAuthenticator address\n * @param {Address} newGuardian\n * @returns {AuthActionInput}\n */\nfunction buildChangeGuardianAction(target, newGuardian) {\n  return buildManagementAction(\n    DUAL_FACTOR_AUTHENTICATOR_ABI,\n    'changeGuardian',\n    ['address'],\n    [newGuardian],\n    target,\n    ['newGuardian']\n  );\n}\n\nexport { buildChangePasswordAction, buildChangeGuardianAction };\n","/**\n * ApiKeySessionAuthenticator management action builders.\n *\n * @module internal/auth/actions/apiKeySession\n */\n\nimport { API_KEY_SESSION_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/apiKeySessionAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * Build the ACTION-bound management action for {@code rotateApiKey(wallet, authProof, newSecret)}.\n *\n * @public\n * @param {Address} target - ApiKeySessionAuthenticator address\n * @param {Bytes32} newApiKeySecret - {@code keccak256(newApiKey)} stored on-chain after rotation\n * @returns {AuthActionInput}\n */\nfunction buildRotateApiKeyAction(target, newApiKeySecret) {\n  return buildManagementAction(\n    API_KEY_SESSION_AUTHENTICATOR_ABI,\n    'rotateApiKey',\n    ['bytes32'],\n    [newApiKeySecret],\n    target,\n    ['newApiKeySecret']\n  );\n}\n\nexport { buildRotateApiKeyAction };\n","/**\n * MultiAuthenticator management action builders.\n *\n * @module internal/auth/actions/multi\n */\n\nimport { keccak256 } from '../../../adapters/ethers/hashing.js';\nimport { MULTI_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/multiAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * Build the ACTION-bound management action for {@code addAuthenticator(wallet, authProof, child, childConfig)}.\n *\n * @public\n * @param {Address} target - MultiAuthenticator address\n * @param {Address} child - Child authenticator to enable\n * @param {Bytes} childConfig - ABI-encoded config forwarded to the child\n * @returns {AuthActionInput}\n */\nfunction buildAddAuthenticatorAction(target, child, childConfig) {\n  return buildManagementAction(\n    MULTI_AUTHENTICATOR_ABI,\n    'addAuthenticator',\n    ['address', 'bytes32'],\n    [child, keccak256(childConfig)],\n    target,\n    ['child', 'childConfig']\n  );\n}\n\n/**\n * Build the ACTION-bound management action for {@code removeAuthenticator(wallet, authProof, child)}.\n *\n * @public\n * @param {Address} target - MultiAuthenticator address\n * @param {Address} child - Child authenticator to disable\n * @returns {AuthActionInput}\n */\nfunction buildRemoveAuthenticatorAction(target, child) {\n  return buildManagementAction(\n    MULTI_AUTHENTICATOR_ABI,\n    'removeAuthenticator',\n    ['address'],\n    [child],\n    target,\n    ['child']\n  );\n}\n\nexport { buildAddAuthenticatorAction, buildRemoveAuthenticatorAction };\n","/**\n * PasswordOrWalletSignatureAuthenticator management action builders.\n *\n * @module internal/auth/actions/passwordOrWalletSignature\n */\n\nimport { PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI } from '../../../contracts/abi/authenticators/passwordOrWalletSignatureAuthenticator.js';\nimport { buildManagementAction } from '../context/actionContext.js';\n\n/**\n * @public\n * @param {Address} target - PasswordOrWalletSignatureAuthenticator address\n * @param {Bytes32} newPasswordHash\n * @returns {AuthActionInput}\n */\nfunction buildPasswordOrWalletChangePasswordAction(target, newPasswordHash) {\n  return buildManagementAction(\n    PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI,\n    'changePassword',\n    ['bytes32'],\n    [newPasswordHash],\n    target,\n    ['newPasswordHash']\n  );\n}\n\n/**\n * @public\n * @param {Address} target - PasswordOrWalletSignatureAuthenticator address\n * @param {Address} addressToAdd\n * @returns {AuthActionInput}\n */\nfunction buildPasswordOrWalletAddToWhitelistAction(target, addressToAdd) {\n  return buildManagementAction(\n    PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI,\n    'addToWhitelist',\n    ['address'],\n    [addressToAdd],\n    target,\n    ['addressToAdd']\n  );\n}\n\n/**\n * @public\n * @param {Address} target - PasswordOrWalletSignatureAuthenticator address\n * @param {Address} addressToRemove\n * @returns {AuthActionInput}\n */\nfunction buildPasswordOrWalletRemoveFromWhitelistAction(target, addressToRemove) {\n  return buildManagementAction(\n    PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI,\n    'removeFromWhitelist',\n    ['address'],\n    [addressToRemove],\n    target,\n    ['addressToRemove']\n  );\n}\n\n/**\n * @public\n * @param {Address} target - PasswordOrWalletSignatureAuthenticator address\n * @param {Address} newAddress\n * @param {Bytes32} nonce\n * @param {number | bigint} deadline\n * @returns {AuthActionInput}\n */\nfunction buildPasswordOrWalletAddToWhitelistWithProofAction(target, newAddress, nonce, deadline) {\n  return buildManagementAction(\n    PASSWORD_OR_WALLET_SIGNATURE_AUTHENTICATOR_ABI,\n    'addToWhitelistWithProof',\n    ['address', 'bytes32', 'uint256'],\n    [newAddress, nonce, deadline],\n    target,\n    ['newAddress', 'nonce', 'deadline']\n  );\n}\n\nexport {\n  buildPasswordOrWalletChangePasswordAction,\n  buildPasswordOrWalletAddToWhitelistAction,\n  buildPasswordOrWalletRemoveFromWhitelistAction,\n  buildPasswordOrWalletAddToWhitelistWithProofAction,\n};\n","/**\n * MonsteraAuth domain methods for {@link Monstera}.\n * Mixed onto {@link Monstera} prototype at construction time.\n *\n * @module sdk/domains/MonsteraAuth\n */\n\nimport { buildAuthenticatorVerifyProbeAction } from '../../internal/auth/probes/verifyProbe.js';\nimport {\n  buildChangePasswordAction,\n  buildDualFactorChangePasswordAction,\n  buildChangeGuardianAction,\n  buildAddToWhitelistAction,\n  buildRemoveFromWhitelistAction,\n  buildMinuteSignatureChangePasswordAction,\n  buildRotateApiKeyAction,\n  buildAddAuthenticatorAction,\n  buildRemoveAuthenticatorAction,\n  buildPasswordOrWalletChangePasswordAction,\n  buildPasswordOrWalletAddToWhitelistAction,\n  buildPasswordOrWalletRemoveFromWhitelistAction,\n  buildPasswordOrWalletAddToWhitelistWithProofAction,\n} from '../../internal/auth/actions/index.js';\nimport { createLinkWalletSignature } from '../../internal/auth/proof/builders/passwordOrWalletSignature.js';\nimport { resolveActionHash } from '../../internal/auth/context/actionContext.js';\nimport { defaultProofDeadline } from '../../internal/auth/proof/common.js';\nimport { SCOPE_SIGN_ALL } from '../../internal/auth/specs/apiKeySession.js';\nimport { hexlify, keccak256, randomBytes } from '../../adapters/ethers/hashing.js';\nimport { defineDomainMethods } from './defineDomainMethods.js';\n\nconst verifyProbeFlowOptions = { includeAuthContext: true };\n\nexport const monsteraAuthMethods = defineDomainMethods({\n  /**\n   * Build the EIP-712 {@code authProof} for {@code WalletSignatureAuthenticator}.\n   *\n   * Signs {@code WalletAuth(wallet, actionHash, deadline)} typed data with the supplied {@code signer} and ABI-encodes\n   * {@code (uint256 deadline, bytes signature)}. {@code authenticatorAddr} and {@code deadline},\n   * default from the SDK config (deadline = now + 1 hour). Sapphire {@code chainId} always comes from SDK config.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofWalletSignatureOptions} options - Inputs for the proof ({@code action} or {@code actionHash} required)\n   * @returns {Promise<EncodedAuthProofWalletSignature>} ABI-encoded auth proof bytes\n   * @throws {ValidationError} If {@code signer} is not a {@link EthersWallet}/{@link EthersHDNodeWallet}, addresses or {@code deadline} are invalid, or neither {@code action} nor {@code actionHash} is supplied\n   * @throws {NetworkError} If the signer's transport fails during typed-data signing\n   * @throws {WalletError} For other unrecognised signing failures\n   */\n  async createAuthProofWalletSignature(options = {}) {\n    const { authProof } = await this._encodeAuthenticatorManaged({ flowId: 'walletSignature', options });\n    return authProof;\n  },\n\n  /**\n   * Build the {@code authProof} for {@code PasswordMinuteSignatureAuthenticator}.\n   *\n   * Reads the latest block from the SDK read provider to derive the current minute bucket,\n   * derives an ephemeral signer from {@code keccak256(passwordHash || minuteBucket)},\n   * signs the EIP-191 digest of {@code keccak256(wallet, authenticator, chainId, minuteBucket, actionHash)},\n   * and ABI-encodes {@code (bytes signature)}.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofMinuteSignatureOptions} options - Inputs ({@code keyVaultAddr}, {@code passwordHash}, {@code action} or {@code actionHash}, optional {@code authenticatorAddr})\n   * @returns {Promise<CreateAuthProofMinuteSignatureResult>} Encoded auth proof, minute bucket, and derived signer address\n   * @throws {ValidationError} If {@code keyVaultAddr}, {@code authenticatorAddr} are missing/invalid, {@code passwordHash} is not a 32-byte hex string, or neither {@code action} nor {@code actionHash} is supplied\n   * @throws {NetworkError} If the read provider fails to return the latest block\n   */\n  async createAuthProofMinuteSignature(options = {}) {\n    const { authProof, minuteBucket, derivedAddress } = await this._encodeAuthenticatorManaged({\n      flowId: 'minuteSignature',\n      options\n    });\n    return { authProof, minuteBucket, derivedAddress };\n  },\n\n  /**\n   * Build the {@code authProof} for {@code DualFactorAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofDualFactorOptions} options\n   * @returns {Promise<EncodedAuthProofDualFactor>},\n   */\n  async createAuthProofDualFactor(options = {}) {\n    const { authProof } = await this._encodeAuthenticatorManaged({ flowId: 'dualFactor', options });\n    return authProof;\n  },\n\n  /**\n   * Build the routed {@code authProof} for {@code MultiAuthenticator}.\n   *\n   * ABI-encodes {@code (address child, bytes childProof)} by delegating proof construction to the\n   * selected child authenticator ({@code childFlowId} or {@code child}). Session password and API\n   * key material are merged when connect credentials are active.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofMultiOptions} options\n   * @returns {Promise<EncodedAuthProofMulti>},\n   */\n  async createAuthProofMulti(options = {}) {\n    const { authProof } = await this._encodeAuthenticatorManaged({\n      flowId: 'multi',\n      options,\n      config: { flags: { defaultCurrentPassword: true, defaultApiKeySecret: true } }\n    });\n    return authProof;\n  },\n\n  /**\n   * Build the unified {@code authProof} for {@code PasswordOrWalletSignatureAuthenticator}.\n   *\n   * ABI-encodes {@code (uint8 method, bytes methodProof)} using password (session default) or a\n   * whitelisted wallet signature. Method is inferred from {@code signer} vs {@code password} when omitted.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofPasswordOrWalletSignatureOptions} options\n   * @returns {Promise<EncodedAuthProofPasswordOrWalletSignature>},\n   */\n  async createAuthProofPasswordOrWalletSignature(options = {}) {\n    const { authProof } = await this._encodeAuthenticatorManaged({\n      flowId: 'passwordOrWalletSignature',\n      options,\n      config: { flags: { defaultCurrentPassword: true } }\n    });\n    return authProof;\n  },\n\n  // /**\n  //  * Build the {@code authProof} for {@code ApiKeySessionAuthenticator}.\n  //  *\n  //  * MAC computation and ABI encoding delegate to the on-chain pure helpers\n  //  * ({@code computeTokenMac}/{@code computeActionMac} + {@code buildTokenAuthProof}/{@code buildActionAuthProof}).\n  //  *\n  //  * ACTION mode (default): binds the proof to {@code action} or {@code actionHash}.\n  //  * TOKEN mode: mint a bearer token when {@code mode === 'token'} or {@code expiry}/{@code scopeMask},\n  //  * are set — {@code expiry} defaults to now + 1 hour, {@code scopeMask} defaults to\n  //  * {@code SCOPE_SIGN_ALL} (0x1F).\n  //  *\n  //  * @public\n  //  * @async\n  //  * @param {CreateAuthProofApiKeySessionOptions} options\n  //  * @returns {Promise<EncodedAuthProofApiKeySession>} ABI-encoded auth proof bytes\n  //  * @throws {ValidationError} If required parameters are missing or invalid\n  //  */\n  // async createAuthProofApiKeySession(options = {}) {\n  //   const { authProof } = await this._explicitAuthPipeline.encodeAuthProof('apiKeySession', options, {\n  //     flags: { defaultApiKeySecret: true }\n  //   });\n  //   return authProof;\n  // },\n\n  // ============================================================================\n  // Configure Methods (Write)\n  // ============================================================================\n\n  /**\n   * Configure {@code PasswordAuthenticator} for a wallet by storing the password hash on-chain.\n   *\n   * The {@code passwordHash} is forwarded directly as the encoded {@code authConfig} (bytes32).\n   * Delegates to {@link PasswordAuthenticatorClient#configure}.\n   *\n   * @public\n   * @async\n   * @param {ConfigurePasswordOptions} options - Optional {@code keyVaultAddr} (resolved from credentials when omitted) and 32-byte {@code passwordHash},\n   * @returns {Promise<ConfigurePasswordResult>} Standard write result with the parsed {@code wallet} field\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code passwordHash} is not a 32-byte hex string\n   * @throws {CredentialsRequiredError} If neither credentials nor {@code keyVaultAddr} is available\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code PasswordConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configurePassword(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.passwordAuth,\n      buildAuthConfigInput: (resolved) => ({ passwordHash: resolved.passwordHash }),\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.password.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n  /**\n   * Configure {@code WalletSignatureAuthenticator} for a wallet by ABI-encoding {@code initialWhitelist}.\n   *\n   * Delegates to {@link WalletSignatureAuthenticatorClient#configure}.\n   *\n   * @public\n   * @async\n   * @param {ConfigureWalletSignatureOptions} options - Optional {@code keyVaultAddr} and {@code initialWhitelist} (at least one address)\n   * @returns {Promise<ConfigureWalletSignatureResult>} Standard write result with parsed {@code wallet} and {@code initialWhitelist},\n   * @throws {ValidationError} If {@code keyVaultAddr} or any whitelist address is invalid, or {@code initialWhitelist} is empty\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configureWalletSignature(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.walletSignatureAuth,\n      buildAuthConfigInput: (resolved) => ({ initialWhitelist: resolved.initialWhitelist }),\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.walletSignature.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n  /**\n   * Configure {@code DualFactorAuthenticator} for a wallet by ABI-encoding {@code (passwordHash, guardianAddr)}.\n   *\n   * Delegates to {@link DualFactorAuthenticatorClient#configure}.\n   *\n   * @public\n   * @async\n   * @param {ConfigureDualFactorOptions} options - Optional {@code keyVaultAddr}, 32-byte {@code passwordHash}, guardian {@code guardianAddr},\n   * @returns {Promise<ConfigurePasswordDualFactorResult>} Standard write result with parsed {@code wallet} and {@code guardian},\n   * @throws {ValidationError} If {@code keyVaultAddr}/{@code guardianAddr} are invalid or {@code passwordHash} is not a 32-byte hex string\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configureDualFactor(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.dualFactorAuth,\n      buildAuthConfigInput: (resolved) => ({\n        passwordHash: resolved.passwordHash,\n        guardianAddr: resolved.guardianAddr\n      }),\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.dualFactor.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n  /**\n   * Configure {@code PasswordMinuteSignatureAuthenticator} for a wallet by storing the password hash on-chain.\n   *\n   * Delegates to {@link PasswordMinuteSignatureAuthenticatorClient#configure}.\n   *\n   * @public\n   * @async\n   * @param {ConfigurePasswordMinuteOptions} options - Optional {@code keyVaultAddr} and 32-byte {@code passwordHash},\n   * @returns {Promise<ConfigurePasswordResult>} Standard write result with the parsed {@code wallet} field\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code passwordHash} is not a 32-byte hex string\n   * @throws {CredentialsRequiredError} If neither credentials nor {@code keyVaultAddr} is available\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code PasswordConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configurePasswordMinuteSignature(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.passwordMinuteSignatureAuth,\n      buildAuthConfigInput: (resolved) => ({ passwordHash: resolved.passwordHash }),\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.passwordMinuteSignature.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n  /**\n   * Configure {@code ApiKeySessionAuthenticator} for a wallet by storing the API key hash on-chain.\n   *\n   * Delegates to {@link ApiKeySessionAuthenticatorClient#configure}.\n   *\n   * @public\n   * @async\n   * @param {ConfigureApiKeySessionOptions} options - Optional {@code keyVaultAddr} and 32-byte {@code apiKeySecret} (defaults from connect credentials when omitted)\n   * @returns {Promise<ConfigureApiKeySessionResult>} Standard write result with the parsed {@code wallet} field\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code apiKeySecret} is not a 32-byte hex string\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code ApiKeySessionConfigured} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async configureApiKeySession(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.apiKeySessionAuth,\n      resolveFlags: { defaultApiKeySecret: true },\n      buildAuthConfigInput: (resolved) => ({ apiKeySecret: resolved.apiKeySecret }),\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.apiKeySession.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n  /**\n   * Configure {@code PasswordOrWalletSignatureAuthenticator} for a wallet.\n   *\n   * Encodes {@code abi.encode(bytes32 passwordHash, address[] initialWhitelist)}. {@code passwordHash},\n   * defaults from connect credentials when omitted.\n   *\n   * @public\n   * @async\n   * @param {ConfigurePasswordOrWalletSignatureOptions} options - Optional {@code keyVaultAddr}, {@code passwordHash}, {@code initialWhitelist},\n   * @returns {Promise<ConfigurePasswordOrWalletSignatureResult>},\n   */\n  async configurePasswordOrWalletSignature(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.passwordOrWalletSigAuth,\n      resolveFlags: { defaultCurrentPassword: true },\n      buildAuthConfigInput: (resolved) => {\n        const passwordHash =\n          resolved.passwordHash ??\n          (resolved.currentPassword ? keccak256(resolved.currentPassword) : undefined) ??\n          (this._connectSession?.hasPassword()\n            ? this._connectSession.getPasswordHash()\n            : undefined);\n\n        return { passwordHash, initialWhitelist: resolved.initialWhitelist };\n      },\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.passwordOrWalletSignature.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n  /**\n   * Configure {@code MultiAuthenticator} for a wallet.\n   *\n   * Encodes structured {@code authConfig.children} entries into\n   * {@code abi.encode(address[] children, bytes[] childConfigs)} before delegating to\n   * {@link MultiAuthenticatorClient#configure}.\n   *\n   * @public\n   * @async\n   * @param {ConfigureMultiAuthenticatorOptions} options - {@code keyVaultAddr} and structured multi {@code authConfig},\n   * @returns {Promise<ConfigureMultiAuthenticatorResult>},\n   */\n  async configureMultiAuthenticator(options = {}) {\n    return this._configureAuthenticator({\n      options,\n      authenticatorAddr: this.config.addresses.multiAuthenticator,\n      buildAuthConfigInput: (resolved) => resolved.authConfig,\n      invoke: ({ keyVaultAddr, authConfig }) =>\n        this.auth.multi.configure({ keyVaultAddr, authConfig })\n    });\n  },\n\n\n  // --- Auth Reads ---\n\n  /**\n   * Check whether {@code PasswordAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isPasswordConfigured(options = {}) {\n    return this.auth.password.isConfigured(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Verify a UTF-8 password buffer against the stored hash via {@code PasswordAuthenticator.verify}.\n   *\n   * @public\n   * @async\n   * @param {VerifyPasswordOptions} options - {@code keyVaultAddr} and {@code currentPassword} (raw UTF-8 {@link Uint8Array})\n   * @returns {Promise<boolean>} {@code true} if the password matches\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code currentPassword} is not a non-empty Uint8Array\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isPasswordValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'password',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.password.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Check whether {@code WalletSignatureAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWalletSignatureConfigured(options = {}) {\n    return this.auth.walletSignature.isConfigured(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether an address is on a wallet's whitelist.\n   *\n   * @public\n   * @async\n   * @param {WhitelistCheckOptions} options - {@code keyVaultAddr} and {@code addressToCheck},\n   * @returns {Promise<boolean>} {@code true} if {@code addressToCheck} is whitelisted\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWhitelisted(options = {}) {\n    return this.auth.walletSignature.isWhitelisted(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get all whitelisted addresses for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Address[]>} Whitelisted addresses\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWhitelist(options = {}) {\n    return this.auth.walletSignature.getWhitelist(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the EIP-712 domain separator for {@code WalletSignatureAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Bytes32>} 32-byte domain separator\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getDomainSeparator(options = {}) {\n    return this.auth.walletSignature.getDomainSeparator(options);\n  },\n\n  /**\n   * Build a wallet-signature auth proof and verify it on-chain.\n   *\n   * Useful as a sanity check that a wallet's authenticator accepts a freshly produced proof.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofWalletSignatureOptions} options - Same inputs as {@link Monstera#createAuthProofWalletSignature},\n   * @returns {Promise<boolean>} {@code true} if the on-chain verifier accepts the proof\n   * @throws {ValidationError} If required parameters are missing or invalid (proof builder)\n   * @throws {NetworkError} If signing or the verify RPC call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWalletSignatureValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'walletSignature',\n      options,\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.walletSignature.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Check whether {@code DualFactorAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isDualFactorConfigured(options = {}) {\n    return this.auth.dualFactor.isConfigured(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Build and verify a dual-factor auth proof (minute password signature + guardian EIP-712).\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofDualFactorOptions} options - Same inputs as {@link Monstera#createAuthProofDualFactor},\n   * @returns {Promise<boolean>} {@code true} if both factors verify\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If provider/signer transports fail or the verify RPC call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isPasswordDualFactorValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'dualFactor',\n      options,\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.dualFactor.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Get the configured guardian address for a dual-factor wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Address>} Guardian address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getGuardian(options = {}) {\n    return this.auth.dualFactor.getGuardian(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the EIP-712 domain separator for {@code DualFactorAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Bytes32>} 32-byte domain separator\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getDomainSeparatorDualFactor(options = {}) {\n    return this.auth.dualFactor.getDomainSeparator(options);\n  },\n\n  /**\n   * Check whether {@code PasswordMinuteSignatureAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isPasswordMinuteSignatureConfigured(options = {}) {\n    return this.auth.passwordMinuteSignature.isConfigured(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Build a minute-bucket ECDSA proof from {@code passwordHash} and verify it on-chain.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofMinuteSignatureOptions} options - Same inputs as {@link Monstera#createAuthProofMinuteSignature},\n   * @returns {Promise<boolean>} {@code true} if the signature matches the derived signer for the current minute bucket and action\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the read provider fails to return the latest block, or the verify RPC call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isPasswordMinuteSignatureValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'minuteSignature',\n      options,\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.passwordMinuteSignature.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Check whether {@code ApiKeySessionAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<boolean>} {@code true} if configured\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isApiKeySessionConfigured(options = {}) {\n    return this.auth.apiKeySession.isConfigured(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether {@code MultiAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options\n   * @returns {Promise<boolean>},\n   */\n  async isMultiAuthenticatorConfigured(options = {}) {\n    return this.auth.multi.isConfigured(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * List enabled child authenticators for a multi-authenticated wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options\n   * @returns {Promise<Address[]>},\n   */\n  async getMultiAuthenticators(options = {}) {\n    return this.auth.multi.getAuthenticators(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether a child authenticator is enabled for a multi-authenticated wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions & { child: Address }} options\n   * @returns {Promise<boolean>},\n   */\n  async isMultiAuthenticatorChildEnabled(options = {}) {\n    return this.auth.multi.isEnabled(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Build a routed multi-authenticator proof and verify it on-chain.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofMultiOptions} [options={}] - {@code childFlowId} or {@code child} required; session password/API key defaults apply\n   * @returns {Promise<boolean>} {@code true} if the on-chain verifier accepts the routed child proof\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the read provider fails to return the latest block, or the verify RPC call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isMultiValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'multi',\n      options,\n      flags: { defaultCurrentPassword: true, defaultApiKeySecret: true },\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.multi.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Check whether {@code PasswordOrWalletSignatureAuthenticator} has been configured for a wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options\n   * @returns {Promise<boolean>},\n   */\n  async isPasswordOrWalletSignatureConfigured(options = {}) {\n    return this.auth.passwordOrWalletSignature.isConfigured(\n      await this._keyVaultAuthPipeline.mergeVaultOptions(options)\n    );\n  },\n\n  /**\n   * Check whether an address is whitelisted on a password-or-wallet-signature wallet.\n   *\n   * @public\n   * @async\n   * @param {WhitelistCheckOptions} options\n   * @returns {Promise<boolean>},\n   */\n  async isPasswordOrWalletSignatureWhitelisted(options = {}) {\n    return this.auth.passwordOrWalletSignature.isWhitelisted(\n      await this._keyVaultAuthPipeline.mergeVaultOptions(options)\n    );\n  },\n\n  /**\n   * Get all whitelisted addresses for a password-or-wallet-signature wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options\n   * @returns {Promise<Address[]>},\n   */\n  async getPasswordOrWalletSignatureWhitelist(options = {}) {\n    return this.auth.passwordOrWalletSignature.getWhitelist(\n      await this._keyVaultAuthPipeline.mergeVaultOptions(options)\n    );\n  },\n\n  /**\n   * Check whether a wallet-link nonce has already been consumed.\n   *\n   * @public\n   * @async\n   * @param {IsPasswordOrWalletSignatureLinkNonceUsedOptions} options\n   * @returns {Promise<boolean>},\n   */\n  async isPasswordOrWalletSignatureLinkNonceUsed(options = {}) {\n    return this.auth.passwordOrWalletSignature.isLinkNonceUsed(\n      await this._keyVaultAuthPipeline.mergeVaultOptions(options)\n    );\n  },\n\n  /**\n   * Get the EIP-712 domain separator for {@code PasswordOrWalletSignatureAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}]\n   * @returns {Promise<Bytes32>},\n   */\n  async getPasswordOrWalletSignatureDomainSeparator(options = {}) {\n    return this.auth.passwordOrWalletSignature.getDomainSeparator(options);\n  },\n\n  /**\n   * Compute the params hash for wallet-link operations on {@code PasswordOrWalletSignatureAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {ComputePasswordOrWalletSignatureLinkParamsHashOptions} options - {@code deadline} defaults to now + 1 hour\n   * @returns {Promise<Bytes32>},\n   */\n  async computePasswordOrWalletSignatureLinkParamsHash(options = {}) {\n    const { addressToAdd, nonce, deadline = defaultProofDeadline() } = options;\n    return this.auth.passwordOrWalletSignature.computeLinkParamsHash({\n      addressToAdd,\n      nonce,\n      deadline,\n    });\n  },\n\n  /**\n   * Compute the action hash for {@code addToWhitelistWithProof} on {@code PasswordOrWalletSignatureAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {ComputePasswordOrWalletSignatureLinkActionHashOptions} options - {@code keyVaultAddr} defaults from session; {@code deadline} defaults to now + 1 hour\n   * @returns {Promise<Bytes32>},\n   */\n  async computePasswordOrWalletSignatureLinkActionHash(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options);\n    const { keyVaultAddr, addressToAdd, nonce, deadline = defaultProofDeadline() } = resolved;\n    return this.auth.passwordOrWalletSignature.computeLinkActionHash({\n      keyVaultAddr,\n      addressToAdd,\n      nonce,\n      deadline,\n    });\n  },\n\n  /**\n   * Build a password-or-wallet-signature auth proof and verify it on-chain.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofPasswordOrWalletSignatureOptions} [options={}]\n   * @returns {Promise<boolean>},\n   */\n  async isPasswordOrWalletSignatureValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'passwordOrWalletSignature',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.passwordOrWalletSignature.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Build and verify an API key session auth proof and verify it on-chain.\n   *\n   * @public\n   * @async\n   * @param {CreateAuthProofApiKeySessionVerifyOptions} [options={}] - Optional overrides; defaults from connect credentials and SDK config\n   * @returns {Promise<boolean>} {@code true} if the on-chain verifier accepts the proof\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the read provider fails to return the latest block, or the verify RPC call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isApiKeySessionValid(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'apiKeySession',\n      options,\n      flags: { defaultApiKeySecret: true },\n      buildAction: (_, authenticatorAddr) => buildAuthenticatorVerifyProbeAction(authenticatorAddr),\n      flowOptions: verifyProbeFlowOptions,\n      invoke: ({ keyVaultAddr, authProof, action }) =>\n        this.auth.apiKeySession.verify({ keyVaultAddr, authProof, action })\n    });\n  },\n\n  /**\n   * Compute a TOKEN-mode MAC for an API key session via the on-chain pure helper.\n   *\n   * @public\n   * @async\n   * @param {ComputeTokenMacOptions} [options={}] - {@code keyVaultAddr} and {@code apiKeySecret} default from connect credentials; {@code chainId} from SDK config; {@code expiry} now + 1h; {@code scopeMask} {@code SCOPE_SIGN_ALL},\n   * @returns {Promise<Bytes32>} Token MAC\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code apiKeySecret} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   */\n  async computeTokenMac(options = {}) {\n    const resolved = await this._resolveApiKeySessionProofOptions(options);\n    const expiry = resolved.expiry ?? defaultProofDeadline();\n    const scopeMask = resolved.scopeMask ?? SCOPE_SIGN_ALL;\n\n    return this.auth.apiKeySession.computeTokenMac({\n      keyVaultAddr: /** @type {Address} */ (resolved.keyVaultAddr),\n      apiKeySecret: /** @type {Bytes32} */ (resolved.apiKeySecret),\n      chainId: /** @type {ChainId} */ (resolved.chainId),\n      expiry,\n      scopeMask\n    });\n  },\n\n  /**\n   * Compute an ACTION-mode MAC for an API key session via the on-chain pure helper.\n   *\n   * @public\n   * @async\n   * @param {ComputeActionMacOptions} [options={}] - {@code apiKeySecret} defaults from connect credentials; supply {@code action} or {@code actionHash},\n   * @returns {Promise<Bytes32>} Action MAC\n   * @throws {ValidationError} If {@code apiKeySecret} is not a 32-byte hex string or neither {@code action} nor {@code actionHash} is supplied\n   * @throws {NetworkError} If the read call fails over RPC\n   */\n  async computeActionMac(options = {}) {\n    const resolved = await this._resolveApiKeySessionProofOptions(options);\n    const actionHash = await resolveActionHash(\n      {\n        readProvider: this.readProvider,\n        chainId: /** @type {ChainId} */ (resolved.chainId),\n        keyVaultAddr: /** @type {Address} */ (resolved.keyVaultAddr)\n      },\n      { action: resolved.action, actionHash: resolved.actionHash }\n    );\n\n    return this.auth.apiKeySession.computeActionMac({\n      apiKeySecret: /** @type {Bytes32} */ (resolved.apiKeySecret),\n      actionHash\n    });\n  },\n\n  /**\n   * Build a TOKEN-mode auth proof via on-chain {@code computeTokenMac} + {@code buildTokenAuthProof}.\n   *\n   * @public\n   * @async\n   * @param {BuildTokenAuthProofOptions} [options={}]\n   * @returns {Promise<EncodedAuthProofApiKeySession>} ABI-encoded auth proof bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   */\n  async buildTokenAuthProof(options = {}) {\n    const resolved = await this._resolveApiKeySessionProofOptions(options);\n    const expiry = resolved.expiry ?? defaultProofDeadline();\n    const scopeMask = resolved.scopeMask ?? SCOPE_SIGN_ALL;\n    const mac = await this.computeTokenMac({ ...resolved, expiry, scopeMask });\n\n    return this.auth.apiKeySession.buildTokenAuthProof({\n      expiry,\n      scopeMask,\n      mac\n    });\n  },\n\n  /**\n   * Build an ACTION-mode auth proof via on-chain {@code computeActionMac} + {@code buildActionAuthProof}.\n   *\n   * @public\n   * @async\n   * @param {BuildActionAuthProofOptions} [options={}] - Supply {@code action} or {@code actionHash},\n   * @returns {Promise<EncodedAuthProofApiKeySession>} ABI-encoded auth proof bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   */\n  async buildActionAuthProof(options = {}) {\n    const resolved = await this._resolveApiKeySessionProofOptions(options);\n    const actionHash = await resolveActionHash(\n      {\n        readProvider: this.readProvider,\n        chainId: /** @type {ChainId} */ (resolved.chainId),\n        keyVaultAddr: /** @type {Address} */ (resolved.keyVaultAddr)\n      },\n      { action: resolved.action, actionHash: resolved.actionHash }\n    );\n    const mac = await this.auth.apiKeySession.computeActionMac({\n      apiKeySecret: /** @type {Bytes32} */ (resolved.apiKeySecret),\n      actionHash\n    });\n\n    return this.auth.apiKeySession.buildActionAuthProof({ mac });\n  },\n\n  /**\n   * Get the selector bit for an API key session.\n   *\n   * @public\n   * @async\n   * @param {SelectorBitOptions} options - {@code selector},\n   * @returns {Promise<SelectorBitResult>} {@code ok} and {@code bit},\n   * @throws {ValidationError} If {@code selector} is not a 4-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async selectorBit(options = {}) {\n    return this.auth.apiKeySession.selectorBit(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  // --- Auth Writes ---\n\n  /**\n   * Replace the password hash on {@code PasswordAuthenticator} (current password bytes must match the stored hash).\n   *\n   * @public\n   * @async\n   * @param {UpdatePasswordOptions} options - {@code keyVaultAddr}, {@code currentPassword} (UTF-8 {@link Uint8Array}), {@code newPasswordHash},\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet},\n   * @throws {ValidationError} If {@code keyVaultAddr}/{@code newPasswordHash} are invalid or {@code currentPassword} is not a non-empty Uint8Array\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. wrong current password)\n   * @throws {EventNotFoundError} If the {@code PasswordUpdated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updatePassword(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'password',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (resolved, authenticatorAddr) =>\n        buildChangePasswordAction(authenticatorAddr, resolved.newPasswordHash),\n      invoke: ({ keyVaultAddr, authProof, newPasswordHash }) =>\n        this.auth.password.updatePassword({\n          keyVaultAddr,\n          currentPassword: authProof,\n          newPasswordHash\n        })\n    });\n  },\n\n  /**\n   * Add an address to a wallet's whitelist using a freshly built wallet-signature proof.\n   *\n   * Internally calls {@link Monstera#createAuthProofWalletSignature} with the same {@code options}, then forwards\n   * to {@link WalletSignatureAuthenticatorClient#addToWhitelist}.\n   *\n   * @public\n   * @async\n   * @param {AddWhitelistOptions} options - {@code keyVaultAddr}, {@code signer} (whitelisted), {@code addressToAdd}, optional EIP-712 fields\n   * @returns {Promise<AddToWhitelistResult>} Standard write result with parsed {@code addedAddress},\n   * @throws {ValidationError} If addresses, {@code signer}, or proof inputs are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured for broadcasting\n   * @throws {NetworkError} If proof signing or the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or address already whitelisted)\n   * @throws {EventNotFoundError} If the {@code AddressAddedToWhitelist} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async addToWhitelist(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'walletSignature',\n      options,\n      buildAction: (resolved, authenticatorAddr) =>\n        buildAddToWhitelistAction(authenticatorAddr, resolved.addressToAdd),\n      invoke: ({ keyVaultAddr, authProof, addressToAdd }) =>\n        this.auth.walletSignature.addToWhitelist({ keyVaultAddr, authProof, addressToAdd })\n    });\n  },\n\n  /**\n   * Remove an address from a wallet's whitelist using a freshly built wallet-signature proof.\n   *\n   * @public\n   * @async\n   * @param {RemoveWhitelistOptions} options - {@code keyVaultAddr}, {@code signer} (whitelisted), {@code addressToRemove}, optional EIP-712 fields\n   * @returns {Promise<RemoveFromWhitelistResult>} Standard write result with parsed {@code removedAddress},\n   * @throws {ValidationError} If addresses, {@code signer}, or proof inputs are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured for broadcasting\n   * @throws {NetworkError} If proof signing or the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof, last whitelisted address)\n   * @throws {EventNotFoundError} If the {@code AddressRemovedFromWhitelist} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async removeFromWhitelist(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'walletSignature',\n      options,\n      buildAction: (resolved, authenticatorAddr) =>\n        buildRemoveFromWhitelistAction(authenticatorAddr, resolved.addressToRemove),\n      invoke: ({ keyVaultAddr, authProof, addressToRemove }) =>\n        this.auth.walletSignature.removeFromWhitelist({ keyVaultAddr, authProof, addressToRemove })\n    });\n  },\n\n  /**\n   * Replace the password hash on {@code DualFactorAuthenticator} (dual-factor auth required).\n   *\n   * Internally calls {@link Monstera#createAuthProofDualFactor} with the same {@code options}, then forwards\n   * to {@link DualFactorAuthenticatorClient#updatePassword}.\n   *\n   * @public\n   * @async\n   * @param {UpdatePasswordDualFactorOptions} options - {@code keyVaultAddr}, {@code passwordHash} (current), {@code newPasswordHash}, guardian {@code signer}, optional {@code deadline}/{@code authenticatorAddr},\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet},\n   * @throws {ValidationError} If addresses, password hashes, {@code signer}, or {@code deadline} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured for broadcasting\n   * @throws {NetworkError} If proof signing or the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code PasswordUpdated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updatePasswordDualFactor(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'dualFactor',\n      options,\n      buildAction: (resolved, authenticatorAddr) =>\n        buildDualFactorChangePasswordAction(authenticatorAddr, resolved.newPasswordHash),\n      invoke: ({ keyVaultAddr, authProof, newPasswordHash }) =>\n        this.auth.dualFactor.updatePassword({ keyVaultAddr, authProof, newPasswordHash })\n    });\n  },\n\n  /**\n   * Replace the guardian address on {@code DualFactorAuthenticator} (dual-factor auth required).\n   *\n   * @public\n   * @async\n   * @param {UpdateGuardianOptions} options - {@code keyVaultAddr}, {@code passwordHash} (current), {@code newGuardian}, current guardian {@code signer}, optional {@code deadline}/{@code authenticatorAddr},\n   * @returns {Promise<UpdateGuardianResult>} Standard write result with parsed {@code newGuardian},\n   * @throws {ValidationError} If addresses, {@code passwordHash}, {@code signer}, or {@code deadline} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured for broadcasting\n   * @throws {NetworkError} If proof signing or the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code GuardianUpdated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateGuardian(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'dualFactor',\n      options,\n      buildAction: (resolved, authenticatorAddr) =>\n        buildChangeGuardianAction(authenticatorAddr, resolved.newGuardian),\n      invoke: ({ keyVaultAddr, authProof, newGuardian }) =>\n        this.auth.dualFactor.updateGuardian({ keyVaultAddr, authProof, newGuardian })\n    });\n  },\n\n  /**\n   * Replace the password hash on {@code PasswordMinuteSignatureAuthenticator},\n   * (current password bytes must match the stored hash).\n   *\n   * @public\n   * @async\n   * @param {UpdatePasswordOptions} options - {@code keyVaultAddr}, {@code currentPassword} (UTF-8 {@link Uint8Array}), {@code newPasswordHash},\n   * @returns {Promise<UpdatePasswordResult>} Standard write result with parsed {@code wallet},\n   * @throws {ValidationError} If {@code keyVaultAddr}/{@code newPasswordHash} are invalid or {@code currentPassword} is not a non-empty Uint8Array\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. wrong current password)\n   * @throws {EventNotFoundError} If the {@code PasswordUpdated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updatePasswordMinuteSignature(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'minuteSignature',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (resolved, authenticatorAddr) =>\n        buildMinuteSignatureChangePasswordAction(authenticatorAddr, resolved.newPasswordHash),\n      invoke: ({ keyVaultAddr, authProof, newPasswordHash }) =>\n        this.auth.passwordMinuteSignature.updatePassword({\n          keyVaultAddr,\n          currentPassword: authProof,\n          newPasswordHash\n        }),\n      overrides: { authenticatorAddr: this.config.addresses.passwordMinuteSignatureAuth }\n    });\n  },\n\n  /**\n   * Rotate the API key for an API key session.\n   *\n   * @public\n   * @async\n   * @param {RotateApiKeyOptions} options - {@code newApiKeySecret} required; {@code keyVaultAddr} and current {@code apiKeySecret} default from connect credentials; ACTION-mode {@code authProof} built internally\n   * @returns {Promise<RotateApiKeyResult>} Standard write result with parsed {@code wallet},\n   * @throws {ValidationError} If addresses or {@code newApiKeySecret} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or new API key hash is zero)\n   * @throws {EventNotFoundError} If the {@code ApiKeyRotated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async rotateApiKey(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'apiKeySession',\n      options,\n      flags: { defaultApiKeySecret: true },\n      buildAction: (resolved, authenticatorAddr) =>\n        buildRotateApiKeyAction(authenticatorAddr, resolved.newApiKeySecret),\n      invoke: ({ keyVaultAddr, authProof, newApiKeySecret }) =>\n        this.auth.apiKeySession.rotateApiKey({\n          keyVaultAddr,\n          authProof,\n          newApiKeySecret\n        })\n    });\n  },\n\n  /**\n   * Enable an additional child authenticator on a multi-authenticated wallet.\n   *\n   * Builds an action-bound routed proof via an existing child ({@code viaChildFlowId}) and calls\n   * {@link MultiAuthenticatorClient#addAuthenticator}.\n   *\n   * @public\n   * @async\n   * @param {AddMultiAuthenticatorOptions} options\n   * @returns {Promise<AddMultiAuthenticatorResult>},\n   */\n  async addMultiAuthenticator(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options, {\n      defaultCurrentPassword: true,\n      defaultApiKeySecret: true\n    });\n    const { child, childAuthConfig } = resolved;\n    const { authConfig: childConfig } = this._authConfigEncoder.encode({\n      authConfig: childAuthConfig,\n      authenticatorAddr: child\n    });\n\n    const {\n      keyVaultAddr: _kv,\n      child: _contractChild,\n      childAuthConfig: _childAuthConfig,\n      ...proofOptions\n    } = options;\n\n    return this._invokeAuthenticatorManaged({\n      flowId: 'multi',\n      options: {\n        ...proofOptions,\n        keyVaultAddr: resolved.keyVaultAddr,\n        viaChildFlowId: options.viaChildFlowId ?? options.childFlowId\n      },\n      flags: { defaultCurrentPassword: true, defaultApiKeySecret: true },\n      buildAction: (_, authenticatorAddr) => buildAddAuthenticatorAction(authenticatorAddr, child, childConfig),\n      invoke: ({ keyVaultAddr: vaultAddr, authProof }) =>\n        this.auth.multi.addAuthenticator({\n          keyVaultAddr: vaultAddr,\n          authProof,\n          child,\n          childConfig\n        }),\n      overrides: { authenticatorAddr: this.config.addresses.multiAuthenticator }\n    });\n  },\n\n  /**\n   * Replace the password hash on {@code PasswordOrWalletSignatureAuthenticator}.\n   *\n   * Builds a unified password-or-wallet-signature admin proof internally.\n   *\n   * @public\n   * @async\n   * @param {UpdatePasswordOrWalletSignatureOptions} options\n   * @returns {Promise<UpdatePasswordResult>},\n   */\n  async updatePasswordOrWalletSignature(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'passwordOrWalletSignature',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (resolved, authenticatorAddr) =>\n        buildPasswordOrWalletChangePasswordAction(authenticatorAddr, resolved.newPasswordHash),\n      invoke: ({ keyVaultAddr, authProof, newPasswordHash }) =>\n        this.auth.passwordOrWalletSignature.changePassword({\n          keyVaultAddr,\n          authProof,\n          newPasswordHash,\n        })\n    });\n  },\n\n  /**\n   * Add an address to a password-or-wallet-signature wallet whitelist.\n   *\n   * @public\n   * @async\n   * @param {AddPasswordOrWalletSignatureWhitelistOptions} options\n   * @returns {Promise<AddToWhitelistResult>},\n   */\n  async addToPasswordOrWalletSignatureWhitelist(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'passwordOrWalletSignature',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (resolved, authenticatorAddr) =>\n        buildPasswordOrWalletAddToWhitelistAction(authenticatorAddr, resolved.addressToAdd),\n      invoke: ({ keyVaultAddr, authProof, addressToAdd }) =>\n        this.auth.passwordOrWalletSignature.addToWhitelist({\n          keyVaultAddr,\n          authProof,\n          addressToAdd,\n        })\n    });\n  },\n\n  /**\n   * Remove an address from a password-or-wallet-signature wallet whitelist.\n   *\n   * @public\n   * @async\n   * @param {RemovePasswordOrWalletSignatureWhitelistOptions} options\n   * @returns {Promise<RemoveFromWhitelistResult>},\n   */\n  async removeFromPasswordOrWalletSignatureWhitelist(options = {}) {\n    return this._invokeAuthenticatorManaged({\n      flowId: 'passwordOrWalletSignature',\n      options,\n      flags: { defaultCurrentPassword: true },\n      buildAction: (resolved, authenticatorAddr) =>\n        buildPasswordOrWalletRemoveFromWhitelistAction(authenticatorAddr, resolved.addressToRemove),\n      invoke: ({ keyVaultAddr, authProof, addressToRemove }) =>\n        this.auth.passwordOrWalletSignature.removeFromWhitelist({\n          keyVaultAddr,\n          authProof,\n          addressToRemove,\n        })\n    });\n  },\n\n  /**\n   * Add a wallet to the whitelist using a link signature from the new wallet.\n   *\n   * Generates {@code nonce} and {@code deadline} when omitted, computes the link action hash\n   * on-chain, signs {@code LinkWallet} when {@code newWalletSignature} is omitted, and builds the\n   * admin auth proof via password (session default) or wallet signature.\n   *\n   * @public\n   * @async\n   * @param {AddPasswordOrWalletSignatureWhitelistWithProofOptions} options\n   * @returns {Promise<AddToWhitelistWithProofResult>},\n   */\n  async addToPasswordOrWalletSignatureWhitelistWithProof(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options, {\n      defaultCurrentPassword: true,\n    });\n    const nonce = resolved.nonce ?? hexlify(randomBytes(32));\n    const deadline = resolved.deadline ?? defaultProofDeadline();\n    const { keyVaultAddr, addressToAdd } = resolved;\n\n    const actionHash = await this.auth.passwordOrWalletSignature.computeLinkActionHash({\n      keyVaultAddr,\n      addressToAdd,\n      nonce,\n      deadline,\n    });\n\n    let newWalletSignature = resolved.newWalletSignature;\n    if (!newWalletSignature) {\n      newWalletSignature = await createLinkWalletSignature({\n        linkSigner: resolved.linkSigner,\n        keyVaultAddr,\n        newAddress: addressToAdd,\n        nonce,\n        deadline,\n        actionHash,\n        authenticatorAddr: this.config.addresses.passwordOrWalletSigAuth,\n        chainId: this.config.chainId,\n      });\n    }\n\n    return this._invokeAuthenticatorManaged({\n      flowId: 'passwordOrWalletSignature',\n      options: {\n        ...options,\n        keyVaultAddr,\n        addressToAdd,\n        nonce,\n        deadline,\n      },\n      flags: { defaultCurrentPassword: true },\n      buildAction: (_, authenticatorAddr) =>\n        buildPasswordOrWalletAddToWhitelistWithProofAction(\n          authenticatorAddr,\n          addressToAdd,\n          nonce,\n          deadline\n        ),\n      invoke: ({ keyVaultAddr: vaultAddr, authProof }) =>\n        this.auth.passwordOrWalletSignature.addToWhitelistWithProof({\n          keyVaultAddr: vaultAddr,\n          authProof,\n          addressToAdd,\n          nonce,\n          deadline,\n          newWalletSignature,\n        })\n    });\n  },\n\n  /**\n   * Disable a child authenticator on a multi-authenticated wallet.\n   *\n   * @public\n   * @async\n   * @param {RemoveMultiAuthenticatorOptions} options\n   * @returns {Promise<RemoveMultiAuthenticatorResult>},\n   */\n  async removeMultiAuthenticator(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options, {\n      defaultCurrentPassword: true,\n      defaultApiKeySecret: true\n    });\n    const { child, keyVaultAddr } = resolved;\n    const {\n      child: _contractChild,\n      keyVaultAddr: _kv,\n      ...proofOptions\n    } = options;\n\n    return this._invokeAuthenticatorManaged({\n      flowId: 'multi',\n      options: {\n        ...proofOptions,\n        keyVaultAddr,\n        viaChildFlowId: options.viaChildFlowId ?? options.childFlowId\n      },\n      flags: { defaultCurrentPassword: true, defaultApiKeySecret: true },\n      buildAction: (_, authenticatorAddr) => buildRemoveAuthenticatorAction(authenticatorAddr, child),\n      invoke: ({ keyVaultAddr: vaultAddr, authProof }) =>\n        this.auth.multi.removeAuthenticator({ keyVaultAddr: vaultAddr, authProof, child }),\n      overrides: { authenticatorAddr: this.config.addresses.multiAuthenticator }\n    });\n  }\n});\n","/**\n * MonsteraFactory domain methods for {@link Monstera}.\n * Mixed onto {@link Monstera} prototype at construction time.\n *\n * @module sdk/domains/MonsteraFactory\n */\n\nimport { defineDomainMethods } from './defineDomainMethods.js';\n\nexport const monsteraFactoryMethods = defineDomainMethods({\n  // ============================================================================\n  // Create Methods (Write)\n  // ============================================================================\n\n  /**\n   * Create a new HD wallet (full stack) and store its mnemonic on the result.\n   *\n   * Deploys WalletStorage, KeyVault, and a WalletLogic BeaconProxy. Encodes structured {@code authConfig},\n   * via {@link AuthConfigBuilder} before delegating to {@link WalletFactoryClient#createWallet}.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletBaseOptions} options - {@code authConfig} (structured or pre-encoded) and optional {@code authenticatorAddr},\n   * @returns {Promise<WalletCreationResult>} Write result plus addresses ({@code wallet}, {@code keyVault}, {@code storage}, {@code authenticator}) and the generated {@code mnemonic},\n   * @throws {ValidationError} If {@code authConfig} is missing/invalid for the resolved authenticator, or {@code authenticatorAddr} is set but not a built-in authenticator\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * Mnemonic memory handling: see {@link WalletFactoryClient#createWallet}. Treat {@link WalletCreationResult.mnemonic} as a high-value secret.\n   */\n  async createWallet(options = {}) {\n    return this.factory.createWallet(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (full stack) deterministically from a caller-supplied mnemonic.\n   *\n   * Same deployment shape as {@link Monstera#createWallet}; the seed is derived from {@code options.mnemonic},\n   * via PBKDF2-SHA512 instead of being generated. The mnemonic is echoed back on the result.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletFromMnemonicOptions} options - {@code authConfig}, {@code mnemonic}, optional {@code authenticatorAddr},\n   * @returns {Promise<WalletCreationResult>} Write result plus addresses and the supplied {@code mnemonic},\n   * @throws {ValidationError} If {@code authConfig} is invalid or {@code mnemonic} is not a valid BIP39 phrase\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mnemonic on the result: see {@link WalletFactoryClient#createWalletFromMnemonic}.\n   */\n  async createWalletFromMnemonic(options = {}) {\n    return this.factory.createWalletFromMnemonic(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (full stack) and execute a post-creation hook.\n   *\n   * The hook contract at {@code hookAddr} must implement {@code IWalletCreationHook}; the SDK does not\n   * enforce that interface — passing a non-conforming address will revert on-chain.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletWithHookOptions} options - {@code authConfig}, {@code hookAddr}, {@code hookData}, optional {@code authenticatorAddr},\n   * @returns {Promise<WalletCreationResult>} Write result plus addresses and generated {@code mnemonic},\n   * @throws {ValidationError} If {@code authConfig}, {@code hookAddr}, or {@code hookData} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction (or the hook itself) reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mnemonic handling: see {@link WalletFactoryClient#createWallet}.\n   */\n  async createWalletWithHook(options = {}) {\n    return this.factory.createWalletWithHook(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (core stack only — WalletStorage + KeyVault, no WalletLogic proxy).\n   *\n   * Use when you intend to interact with KeyVault directly or deploy a custom logic contract later.\n   * In the returned event, {@code wallet} and {@code keyVault} are the same address by design.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletBaseOptions} options - {@code authConfig} (structured or pre-encoded) and optional {@code authenticatorAddr},\n   * @returns {Promise<WalletCreationResult>} Write result with addresses ({@code wallet} === {@code keyVault}) and generated {@code mnemonic},\n   * @throws {ValidationError} If {@code authConfig} is invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mnemonic handling: see {@link WalletFactoryClient#createWallet}.\n   */\n  async createWalletCore(options = {}) {\n    return this.factory.createWalletCore(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet using a minimal-proxy (clone) of a custom WalletLogic implementation.\n   *\n   * Custom-logic wallets are independent of the factory's beacon — admin upgrades to the default\n   * WalletLogic do not affect them.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletWithCustomLogicOptions} options - {@code authConfig}, {@code customLogicImplAddr}, {@code logicData}, optional {@code authenticatorAddr},\n   * @returns {Promise<WalletCreationResult>} Write result plus addresses and generated {@code mnemonic},\n   * @throws {ValidationError} If {@code authConfig}, {@code customLogicImplAddr}, or {@code logicData} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If the {@code WalletCreated} event is missing\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Mnemonic handling: see {@link WalletFactoryClient#createWallet}.\n   */\n  async createWalletWithCustomLogic(options = {}) {\n    return this.factory.createWalletWithCustomLogic(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (full stack) and register it to a normalised username.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletForUsernameOptions} options - {@code authConfig}, {@code username}, optional {@code authenticatorAddr},\n   * @returns {Promise<UsernameWalletCreationResult>} Write result plus addresses, generated {@code mnemonic}, and {@code usernameHash},\n   * @throws {ValidationError} If {@code authConfig} or {@code username} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Usernames are normalised (trim + lowercase) before hashing. The factory stores only the hash.\n   */\n  async createWalletForUsername(options = {}) {\n    return this.factory.createWalletForUsername(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (full stack) for a normalised username from a caller-supplied mnemonic.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletForUsernameFromMnemonicOptions} options - {@code authConfig}, {@code username}, {@code mnemonic}, optional {@code authenticatorAddr},\n   * @returns {Promise<UsernameWalletCreationResult>} Write result plus addresses, supplied {@code mnemonic}, and {@code usernameHash},\n   * @throws {ValidationError} If required fields are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async createWalletForUsernameFromMnemonic(options = {}) {\n    return this.factory.createWalletForUsernameFromMnemonic(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (full stack) and register it to a precomputed username hash.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletForUsernameHashOptions} options - {@code authConfig}, {@code usernameHash}, optional {@code authenticatorAddr},\n   * @returns {Promise<UsernameWalletCreationResult>} Write result plus addresses, generated {@code mnemonic}, and {@code usernameHash},\n   * @throws {ValidationError} If required fields are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async createWalletForUsernameHash(options = {}) {\n    return this.factory.createWalletForUsernameHash(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Create a new HD wallet (full stack) for a username hash from a caller-supplied mnemonic.\n   *\n   * @public\n   * @async\n   * @param {CreateWalletForUsernameHashFromMnemonicOptions} options - {@code authConfig}, {@code usernameHash}, {@code mnemonic}, optional {@code authenticatorAddr},\n   * @returns {Promise<UsernameWalletCreationResult>} Write result plus addresses, supplied {@code mnemonic}, and {@code usernameHash},\n   * @throws {ValidationError} If required fields are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {EventNotFoundError} If a required event is missing from the receipt\n   * @throws {EventParseError} If an event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async createWalletForUsernameHashFromMnemonic(options = {}) {\n    return this.factory.createWalletForUsernameHashFromMnemonic(\n      this._authConfigEncoder.encode(options)\n    );\n  },\n\n  /**\n   * Initialize a freshly deployed WalletLogic proxy by binding it to a {@code keyVaultAddr}.\n   *\n   * Delegates to {@link WalletLogicClient#initialize}.\n   *\n   * @public\n   * @async\n   * @param {InitializeWalletLogicOptions} options - {@code walletAddr} (proxy) and {@code keyVaultAddr},\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If {@code walletAddr} or {@code keyVaultAddr} is missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async initializeWalletLogic(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options);\n    if (!resolved.walletAddr) {\n      Object.assign(resolved, await this._resolveWalletProxyOptions(options));\n    }\n    return this.logic.initialize(resolved);\n  },\n\n // --- Factory Reads ---\n\n  /**\n   * Check whether a given address was deployed by the configured factory.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr} (proxy address)\n   * @returns {Promise<boolean>} {@code true} if the address is a wallet created by this factory\n   * @throws {ValidationError} If {@code walletAddr} is missing or not a valid address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isWallet(options = {}) {\n    return this.factory.isWallet(await this._resolveWalletProxyOptions(options));\n  },\n\n  /**\n   * Get the current factory admin address.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context (no required fields)\n   * @returns {Promise<Address>} Admin address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAdmin(options = {}) {\n    return this.factory.getAdmin(options);\n  },\n\n  /**\n   * Get the current WalletLogic implementation address (the contract behind the beacon).\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} Current WalletLogic implementation\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWalletLogicImplAddr(options = {}) {\n    return this.factory.getWalletLogicImplAddr(options);\n  },\n\n  /**\n   * Resolve the KeyVault contract for a wallet proxy via the factory mapping.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr},\n   * @returns {Promise<Address>} KeyVault contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultAddr(options = {}) {\n    return this.factory.getKeyVaultAddr(await this._resolveWalletProxyOptions(options));\n  },\n\n  /**\n   * Resolve the WalletStorage contract address for a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr},\n   * @returns {Promise<Address>} Storage contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getStorageAddr(options = {}) {\n    return this.factory.getStorageAddr(await this._resolveWalletProxyOptions(options));\n  },\n\n  /**\n   * Get the beacon contract address that controls WalletLogic upgrades.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} Beacon address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getBeaconAddr(options = {}) {\n    return this.factory.getBeaconAddr(options);\n  },\n\n  /**\n   * Resolve the secret-vault contract address mapped to a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {WalletProxyOptions} options - {@code walletAddr},\n   * @returns {Promise<Address>} Secret vault contract address\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getSecretVaultAddr(options = {}) {\n    return this.factory.getSecretVaultAddr(await this._resolveWalletProxyOptions(options));\n  },\n\n  /**\n   * Get the KeyVault implementation used as the minimal-proxy clone template.\n   *\n   * @public\n   * @async\n   * @param {Record<string, unknown>} [options={}] - Reserved for forwarding to error context\n   * @returns {Promise<Address>} KeyVault template implementation address\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultTemplate(options = {}) {\n    return this.factory.getKeyVaultTemplate(options);\n  },\n\n  /**\n   * Check whether an authenticator is globally allowed for new wallet creation.\n   *\n   * @public\n   * @async\n   * @param {FactoryAllowedAuthenticatorsOptions} options - {@code authenticatorAddr},\n   * @returns {Promise<boolean>} {@code true} if the authenticator is on the factory allowlist\n   * @throws {ValidationError} If {@code authenticatorAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async allowedAuthenticators(options = {}) {\n    return this.factory.allowedAuthenticators(options);\n  },\n\n  /**\n   * Check whether a KeyVault implementation is globally recommended for new wallets.\n   *\n   * @public\n   * @async\n   * @param {FactoryAllowedKeyVaultImplementationsOptions} options - {@code implementationAddr},\n   * @returns {Promise<boolean>} {@code true} if the implementation is on the factory allowlist\n   * @throws {ValidationError} If {@code implementationAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async allowedKeyVaultImplementations(options = {}) {\n    return this.factory.allowedKeyVaultImplementations(options);\n  },\n\n  /**\n   * Check whether a KeyVault implementation is approved via the factory policy registry.\n   *\n   * Distinct from {@link Monstera#isImplementationApproved}, which reads the KeyVault's local allowlist.\n   * Equivalent to {@link WalletFactoryClient#isImplementationApproved}.\n   *\n   * @public\n   * @async\n   * @param {FactoryIsImplementationApprovedOptions} options - {@code keyVaultAddr}, {@code implementationAddr},\n   * @returns {Promise<boolean>},\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isFactoryImplementationApproved(options = {}) {\n    return this.factory.isImplementationApproved(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether an authenticator is approved via the factory policy registry.\n   *\n   * Distinct from {@link Monstera#isAuthenticatorApproved}, which reads the KeyVault's local allowlist.\n   * Equivalent to {@link WalletFactoryClient#isAuthenticatorApproved}.\n   *\n   * @public\n   * @async\n   * @param {FactoryIsAuthenticatorApprovedOptions} options - {@code keyVaultAddr}, {@code authenticatorAddr},\n   * @returns {Promise<boolean>},\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isFactoryAuthenticatorApproved(options = {}) {\n    return this.factory.isAuthenticatorApproved(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Hash a normalised username the same way the factory does.\n   *\n   * @public\n   * @async\n   * @param {FactoryHashUsernameOptions} options - {@code username},\n   * @returns {Promise<Bytes32>} {@code keccak256(bytes(normalizedUsername))},\n   * @throws {ValidationError} If {@code username} is missing or empty after normalisation\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async hashUsername(options = {}) {\n    return this.factory.hashUsername(options);\n  },\n\n  /**\n   * Resolve a username hash to its registered wallet proxy address.\n   *\n   * @public\n   * @async\n   * @param {FactoryWalletOfUsernameOptions} options - {@code usernameHash},\n   * @returns {Promise<Address>} Wallet proxy address, or the zero address if unregistered\n   * @throws {ValidationError} If {@code usernameHash} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async walletOfUsername(options = {}) {\n    return this.factory.walletOfUsername(options);\n  },\n\n  /**\n   * Resolve the username hash registered for a wallet proxy.\n   *\n   * @public\n   * @async\n   * @param {FactoryWalletUsernameHashOptions} options - {@code walletAddr},\n   * @returns {Promise<Bytes32>} Username hash, or zero bytes32 if none\n   * @throws {ValidationError} If {@code walletAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getWalletUsernameHash(options = {}) {\n    return this.factory.getWalletUsernameHash(await this._resolveWalletProxyOptions(options));\n  },\n\n  // --- Factory Writes ---\n\n  /**\n   * Point the factory beacon at a new WalletLogic implementation (admin only).\n   *\n   * Affects the orchestration layer of every wallet that uses the default beacon — not the\n   * KeyVault security layer.\n   *\n   * @public\n   * @async\n   * @param {UpdateWalletLogicImplOptions} options - {@code newLogicAddr},\n   * @returns {Promise<UpdateWalletLogicImplAddrResult>} Standard write result with parsed {@code newImplAddr},\n   * @throws {ValidationError} If {@code newLogicAddr} is missing or invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the factory admin)\n   * @throws {EventNotFoundError} If the implementation-update event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Wallets created via {@link Monstera#createWalletWithCustomLogic} do not follow this beacon.\n   */\n  async updateWalletLogicImplAddr(options = {}) {\n    return this.factory.updateWalletLogicImplAddr(options);\n  },\n\n  /**\n   * Transfer the factory admin role to a new address (admin only).\n   *\n   * @public\n   * @async\n   * @param {TransferAdminOptions} options - {@code newAdminAddr},\n   * @returns {Promise<TransferAdminResult>} Standard write result with parsed {@code newAdminAddr},\n   * @throws {ValidationError} If {@code newAdminAddr} is missing or invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the current admin)\n   * @throws {EventNotFoundError} If the {@code AdminTransferred} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async transferAdmin(options = {}) {\n    return this.factory.transferAdmin(options);\n  },\n\n  /**\n   * Allow or disallow an authenticator for new wallet creation (factory admin only).\n   *\n   * @public\n   * @async\n   * @param {SetAuthenticatorAllowedOptions} options - {@code authenticatorAddr}, {@code allowed},\n   * @returns {Promise<SetAuthenticatorAllowedResult>},\n   * @throws {ValidationError} If {@code authenticatorAddr} is missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the factory admin)\n   * @throws {EventNotFoundError} If the {@code AuthenticatorAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setAuthenticatorAllowed(options = {}) {\n    return this.factory.setAuthenticatorAllowed(options);\n  },\n\n  /**\n   * Allow or disallow a KeyVault implementation for new wallet creation (factory admin only).\n   *\n   * @public\n   * @async\n   * @param {SetKeyVaultImplementationAllowedOptions} options - {@code implementationAddr}, {@code allowed},\n   * @returns {Promise<SetKeyVaultImplementationAllowedResult>},\n   * @throws {ValidationError} If {@code implementationAddr} is missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the factory admin)\n   * @throws {EventNotFoundError} If the {@code KeyVaultImplementationAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setKeyVaultImplementationAllowed(options = {}) {\n    return this.factory.setKeyVaultImplementationAllowed(options);\n  },\n\n  /**\n   * Allow or disallow a KeyVault implementation for a specific wallet via the factory policy registry (factory admin only).\n   *\n   * @public\n   * @async\n   * @param {SetWalletImplementationAllowedOptions} options - {@code walletOrKeyVaultAddr}, {@code implementationAddr}, {@code allowed},\n   * @returns {Promise<SetWalletImplementationAllowedResult>},\n   * @throws {ValidationError} If addresses are missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the factory admin)\n   * @throws {EventNotFoundError} If the {@code WalletImplementationAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setWalletImplementationAllowed(options = {}) {\n    return this.factory.setWalletImplementationAllowed(await this._resolveWalletOrKeyVaultScope(options));\n  },\n\n  /**\n   * Allow or disallow an authenticator for a specific wallet via the factory policy registry (factory admin only).\n   *\n   * @public\n   * @async\n   * @param {SetWalletAuthenticatorAllowedOptions} options - {@code walletOrKeyVaultAddr}, {@code authenticatorAddr}, {@code allowed},\n   * @returns {Promise<SetWalletAuthenticatorAllowedResult>},\n   * @throws {ValidationError} If addresses are missing/invalid or {@code allowed} is not a boolean\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction fails\n   * @throws {ContractRevertError} If the transaction reverts (e.g. caller is not the factory admin)\n   * @throws {EventNotFoundError} If the {@code WalletAuthenticatorAllowed} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setWalletAuthenticatorAllowed(options = {}) {\n    return this.factory.setWalletAuthenticatorAllowed(await this._resolveWalletOrKeyVaultScope(options));\n  }\n});\n","/**\n * KeyVaultV3 action helpers: selectors and {@code paramsHash} builders for authenticated vault calls.\n *\n * Each {@code build*} mirrors the corresponding {@code _buildAuthContext} call in {@code KeyVaultV3.sol}.\n *\n * @module internal/vault/actions/keyVault\n */\n\nimport { keccak256, toUtf8Bytes } from '../../../adapters/ethers/hashing.js';\nimport { KEYVAULT_ABI } from '../../../contracts/abi/core/keyVault.js';\nimport { getSelector } from '../getSelector.js';\nimport { computeParamsHash } from '../../auth/context/actionContext.js';\nimport { requireAddress, requireBytes, requireBytes32, requireNonNegativeInteger, requireString } from '../../validation/assert.js';\n\n/**\n * @private\n * @param {string} functionName\n * @param {Bytes32} paramsHash\n * @returns {AuthActionInput}\n */\nfunction _buildVaultAction(functionName, paramsHash) {\n  return {\n    selector: getSelector(KEYVAULT_ABI, functionName),\n    paramsHash\n  };\n}\n\n/**\n * @private\n * @param {Bytes} bytes\n * @returns {Bytes32}\n */\nfunction _hashBytes(bytes) {\n  requireBytes(bytes, 'bytes');\n  return keccak256(bytes);\n}\n\n/**\n * @public\n * @param {{ index: number; digest: Bytes32 }} params\n * @returns {AuthActionInput}\n */\nfunction buildSignAction({ index, digest }) {\n  requireNonNegativeInteger(index, 'index');\n  requireBytes32(digest, 'digest');\n  return _buildVaultAction('sign', computeParamsHash(['uint32', 'bytes32'], [index, digest]));\n}\n\n/**\n * @public\n * @param {{ index: number; message: Bytes }} params\n * @returns {AuthActionInput}\n */\nfunction buildSignMessageAction({ index, message }) {\n  requireNonNegativeInteger(index, 'index');\n  requireBytes(message, 'message');\n  return _buildVaultAction(\n    'signMessage',\n    computeParamsHash(['uint32', 'bytes32'], [index, _hashBytes(message)])\n  );\n}\n\n/**\n * @public\n * @param {Object} params\n * @param {number} params.index\n * @param {bigint | number} params.nonce\n * @param {bigint | number} params.gasPrice\n * @param {bigint | number} params.gasLimit\n * @param {Address} params.to\n * @param {bigint | number} params.value\n * @param {Bytes} params.txData\n * @param {bigint | number} params.chainId\n * @returns {AuthActionInput}\n */\nfunction buildSignTransactionAction({ index, nonce, gasPrice, gasLimit, to, value, txData, chainId }) {\n  requireNonNegativeInteger(index, 'index');\n  requireBytes(txData, 'txData');\n  return _buildVaultAction(\n    'signTransaction',\n    computeParamsHash(\n      ['uint32', 'uint256', 'uint256', 'uint256', 'address', 'uint256', 'bytes32', 'uint256'],\n      [index, nonce, gasPrice, gasLimit, to, value, _hashBytes(txData), chainId]\n    )\n  );\n}\n\n/**\n * @public\n * @param {{ implCall: Bytes }} params\n * @returns {AuthActionInput}\n */\nfunction buildExecuteWithAuthAction({ implCall }) {\n  requireBytes(implCall, 'implCall');\n  return _buildVaultAction('executeWithAuth', keccak256(implCall));\n}\n\n/**\n * @public\n * @param {{ newImplAddr: Address }} params\n * @returns {AuthActionInput}\n */\nfunction buildUpgradeImplementationAction({ newImplAddr }) {\n  requireAddress(newImplAddr, 'newImplAddr');\n  return _buildVaultAction(\n    'upgradeImplementation',\n    computeParamsHash(['address'], [newImplAddr])\n  );\n}\n\n/**\n * @public\n * @param {{ newImplAddr: Address; customAckHash: Bytes32 }} params\n * @returns {AuthActionInput}\n */\nfunction buildUpgradeImplementationCustomAction({ newImplAddr, customAckHash }) {\n  requireAddress(newImplAddr, 'newImplAddr');\n  requireBytes32(customAckHash, 'customAckHash');\n  return _buildVaultAction(\n    'upgradeImplementationCustom',\n    computeParamsHash(['address', 'bytes32'], [newImplAddr, customAckHash])\n  );\n}\n\n/**\n * @public\n * @param {{ newAuthenticatorAddr: Address; newAuthConfig: Bytes }} params\n * @returns {AuthActionInput}\n */\nfunction buildChangeAuthenticatorAction({ newAuthenticatorAddr, newAuthConfig }) {\n  requireAddress(newAuthenticatorAddr, 'newAuthenticatorAddr');\n  requireBytes(newAuthConfig, 'newAuthConfig');\n  return _buildVaultAction(\n    'changeAuthenticator',\n    computeParamsHash(['address', 'bytes32'], [newAuthenticatorAddr, _hashBytes(newAuthConfig)])\n  );\n}\n\n/**\n * @public\n * @param {{ newAuthenticatorAddr: Address; newAuthConfig: Bytes; customAckHash: Bytes32 }} params\n * @returns {AuthActionInput}\n */\nfunction buildChangeAuthenticatorCustomAction({ newAuthenticatorAddr, newAuthConfig, customAckHash }) {\n  requireAddress(newAuthenticatorAddr, 'newAuthenticatorAddr');\n  requireBytes(newAuthConfig, 'newAuthConfig');\n  requireBytes32(customAckHash, 'customAckHash');\n  const configHash = _hashBytes(newAuthConfig);\n  return _buildVaultAction(\n    'changeAuthenticatorCustom',\n    computeParamsHash(['address', 'bytes32', 'bytes32'], [newAuthenticatorAddr, configHash, customAckHash])\n  );\n}\n\n/**\n * @public\n * @param {Object} params\n * @param {Bytes32} params.keyId\n * @param {Bytes} params.privateKey\n * @param {Bytes} [params.publicKey]\n * @param {number} params.curve\n * @param {number} params.chain\n * @param {string} params.label\n * @returns {AuthActionInput}\n */\nfunction buildImportKeyAction({ keyId, privateKey, publicKey, curve, chain, label }) {\n  requireBytes32(keyId, 'keyId');\n  requireBytes(privateKey, 'privateKey');\n  requireNonNegativeInteger(curve, 'curve');\n  requireNonNegativeInteger(chain, 'chain');\n  requireString(label, 'label');\n  const publicKeyBytes = publicKey ?? '0x';\n  requireBytes(publicKeyBytes, 'publicKey');\n  return _buildVaultAction(\n    'importKey',\n    computeParamsHash(\n      ['bytes32', 'bytes32', 'bytes32', 'uint8', 'uint8', 'bytes32'],\n      [\n        keyId,\n        _hashBytes(privateKey),\n        _hashBytes(publicKeyBytes),\n        curve,\n        chain,\n        keccak256(toUtf8Bytes(label))\n      ]\n    )\n  );\n}\n\n/**\n * @public\n * @param {{ keyId: Bytes32 }} params\n * @returns {AuthActionInput}\n */\nfunction buildDeactivateKeyAction({ keyId }) {\n  requireBytes32(keyId, 'keyId');\n  return _buildVaultAction('deactivateKey', computeParamsHash(['bytes32'], [keyId]));\n}\n\n/**\n * @public\n * @param {{ keyId: Bytes32 }} params\n * @returns {AuthActionInput}\n */\nfunction buildActivateKeyAction({ keyId }) {\n  requireBytes32(keyId, 'keyId');\n  return _buildVaultAction('activateKey', computeParamsHash(['bytes32'], [keyId]));\n}\n\n/**\n * @public\n * @param {{ keyId: Bytes32; digest: Bytes32 }} params\n * @returns {AuthActionInput}\n */\nfunction buildSignWithImportedKeyAction({ keyId, digest }) {\n  requireBytes32(keyId, 'keyId');\n  requireBytes32(digest, 'digest');\n  return _buildVaultAction(\n    'signWithImportedKey',\n    computeParamsHash(['bytes32', 'bytes32'], [keyId, digest])\n  );\n}\n\n/**\n * @public\n * @param {{ index: number; message: Bytes }} params\n * @returns {AuthActionInput}\n */\nfunction buildSignSolanaAction({ index, message }) {\n  requireNonNegativeInteger(index, 'index');\n  requireBytes(message, 'message');\n  return _buildVaultAction(\n    'signSolana',\n    computeParamsHash(['uint32', 'bytes32'], [index, _hashBytes(message)])\n  );\n}\n\n/**\n * @public\n * @param {Object} params\n * @param {number} params.chain\n * @param {Bytes} params.basePrivateKey\n * @param {Bytes} params.baseChainCode\n * @returns {AuthActionInput}\n */\nfunction buildSetChainBaseKeysAction({ chain, basePrivateKey, baseChainCode }) {\n  requireNonNegativeInteger(chain, 'chain');\n  requireBytes(basePrivateKey, 'basePrivateKey');\n  requireBytes(baseChainCode, 'baseChainCode');\n  return _buildVaultAction(\n    'setChainBaseKeys',\n    computeParamsHash(\n      ['uint8', 'bytes32', 'bytes32'],\n      [chain, _hashBytes(basePrivateKey), _hashBytes(baseChainCode)]\n    )\n  );\n}\n\nexport {\n  buildSignAction,\n  buildSignMessageAction,\n  buildSignTransactionAction,\n  buildExecuteWithAuthAction,\n  buildUpgradeImplementationAction,\n  buildUpgradeImplementationCustomAction,\n  buildChangeAuthenticatorAction,\n  buildChangeAuthenticatorCustomAction,\n  buildImportKeyAction,\n  buildDeactivateKeyAction,\n  buildActivateKeyAction,\n  buildSignWithImportedKeyAction,\n  buildSignSolanaAction,\n  buildSetChainBaseKeysAction\n};\n","/**\n * MonsteraKeyVault domain methods for {@link Monstera}.\n * Mixed onto {@link Monstera} prototype at construction time.\n *\n * @module sdk/domains/MonsteraKeyVault\n */\n\nimport {\n  buildUpgradeImplementationAction,\n  buildUpgradeImplementationCustomAction,\n  buildChangeAuthenticatorAction,\n  buildChangeAuthenticatorCustomAction,\n  buildImportKeyAction,\n  buildDeactivateKeyAction,\n  buildActivateKeyAction,\n  buildSetChainBaseKeysAction,\n} from '../../internal/vault/actions/index.js';\nimport { withDefaultAccountIndex } from '../../internal/vault/accountIndex.js';\nimport { defineDomainMethods } from './defineDomainMethods.js';\n\nexport const monsteraKeyVaultMethods = defineDomainMethods({\n  // ============================================================================\n  // Initialize Methods (Write)\n  // ============================================================================\n\n  /**\n   * Initialize a freshly deployed KeyVault contract by wiring its storage, authenticator, and access token.\n   *\n   * Delegates to {@link KeyVaultClient#initialize}.\n   *\n   * @public\n   * @async\n   * @param {InitializeOptions} options - {@code keyVaultAddr}, {@code storageAddr}, {@code authenticatorAddr}, {@code accessToken}, {@code authConfig},\n   * @returns {Promise<BaseTransactionResult>} Standard write result ({@code success}, {@code transactionHash}, {@code blockNumber}, {@code gasUsed})\n   * @throws {ValidationError} If any address is invalid, {@code authConfig} is missing, or {@code accessToken} is not a 32-byte hex string\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC call to broadcast the transaction or fetch its receipt fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks Most callers should use a {@code createWallet*} factory method instead, which wires the KeyVault for you.\n   */\n  async initialize(options = {}) {\n    return this.keyVault.initialize(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Initialize a KeyVault with an explicit policy registry (factory-managed policy).\n   *\n   * Delegates to {@link KeyVaultClient#initializeExplicit}.\n   *\n   * @public\n   * @async\n   * @param {InitializeExplicitOptions} options - Same as {@link Monstera#initialize} plus required {@code policyRegistry},\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If any address is invalid, {@code authConfig} is missing, or {@code accessToken} is not a 32-byte hex string\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC call to broadcast the transaction or fetch its receipt fails\n   * @throws {ContractRevertError} If the transaction reverts on-chain\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async initializeExplicit(options = {}) {\n    return this.keyVault.initializeExplicit(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  // --- KeyVault Reads ---\n\n  /**\n   * Get the WalletStorage contract address bound to a KeyVault (where keys actually live).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Address>} Storage contract address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultStorageAddr(options = {}) {\n    return this.keyVault.getStorageAddr(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the authenticator contract currently bound to a KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Address>} Authenticator address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAuthenticatorAddr(options = {}) {\n    return this.keyVault.getAuthenticatorAddr(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the current KeyVault implementation address (proxy → impl).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Address>} Implementation address\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyVaultImplAddr(options = {}) {\n    return this.keyVault.getKeyVaultImplAddr(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether a KeyVault has been initialized.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<boolean>} {@code true} if the KeyVault is initialized\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isInitialized(options = {}) {\n    return this.keyVault.isInitialized(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Compute the canonical {@code actionHash} for a vault-authenticated call.\n   *\n   * @public\n   * @async\n   * @param {ComputeActionHashOptions} options - {@code keyVaultAddr}, 4-byte {@code selector}, and {@code paramsHash},\n   * @returns {Promise<Bytes32>} Action hash bound into auth proofs\n   * @throws {ValidationError} If {@code keyVaultAddr}, {@code selector}, or {@code paramsHash} are invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeActionHash(options = {}) {\n    return this.keyVault.computeActionHash(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Compute the action hash for a {@code MultiAuthenticator} management call.\n   *\n   * Delegates to {@link MultiAuthenticatorClient#computeActionHash}.\n   *\n   * @public\n   * @async\n   * @param {ComputeMultiAuthenticatorActionHashOptions} options - {@code keyVaultAddr}, 4-byte {@code selector}, and {@code paramsHash},\n   * @returns {Promise<Bytes32>} Action hash bound into routed child auth proofs\n   * @throws {ValidationError} If {@code keyVaultAddr}, {@code selector}, or {@code paramsHash} are invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeMultiAuthenticatorActionHash(options = {}) {\n    return this.auth.multi.computeActionHash(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Compute the custom implementation acknowledgement hash for {@code upgradeImplementationCustom}.\n   *\n   * @public\n   * @async\n   * @param {ComputeCustomImplementationAckHashOptions} options - {@code keyVaultAddr} and {@code newImplementation},\n   * @returns {Promise<Bytes32>},\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeCustomImplementationAckHash(options = {}) {\n    return this.keyVault.computeCustomImplementationAckHash(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Compute the custom authenticator acknowledgement hash for {@code changeAuthenticatorCustom}.\n   *\n   * @public\n   * @async\n   * @param {ComputeCustomAuthenticatorAckHashOptions} options - {@code keyVaultAddr}, {@code newAuthenticator}, {@code configHash},\n   * @returns {Promise<Bytes32>},\n   * @throws {ValidationError} If addresses or {@code configHash} are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async computeCustomAuthenticatorAckHash(options = {}) {\n    return this.keyVault.computeCustomAuthenticatorAckHash(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Read the policy registry address configured for a KeyVault.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Address>},\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getPolicyRegistry(options = {}) {\n    return this.keyVault.getPolicyRegistry(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether an implementation is locally approved on a KeyVault.\n   *\n   * @public\n   * @async\n   * @param {IsImplementationApprovedOptions} options - {@code keyVaultAddr} and {@code implementation},\n   * @returns {Promise<boolean>},\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isImplementationApproved(options = {}) {\n    return this.keyVault.isImplementationApproved(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether an authenticator is locally approved on a KeyVault.\n   *\n   * @public\n   * @async\n   * @param {IsAuthenticatorApprovedOptions} options - {@code keyVaultAddr} and {@code authenticator},\n   * @returns {Promise<boolean>},\n   * @throws {ValidationError} If addresses are missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async isAuthenticatorApproved(options = {}) {\n    return this.keyVault.isAuthenticatorApproved(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the wallet's HD account address at a given index.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrIndexOptions} options - {@code keyVaultAddr} and {@code index},\n   * @returns {Promise<Address>} Account address\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code index} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAccountAddr(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options);\n    return this.keyVault.getAccountAddr(withDefaultAccountIndex(resolved));\n  },\n\n  /**\n   * Get a contiguous slice of HD account addresses from the wallet.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAccountSliceOptions} options - {@code keyVaultAddr}, {@code fromIndex}, {@code count},\n   * @returns {Promise<Address[]>} Array of account addresses (length {@code count})\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid, or {@code fromIndex}/{@code count} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getAccountAddresses(options = {}) {\n    return this.keyVault.getAccountAddresses(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * List the IDs of all keys imported into a KeyVault (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrOptions} options - {@code keyVaultAddr},\n   * @returns {Promise<Bytes32[]>} Imported key IDs\n   * @throws {ValidationError} If {@code keyVaultAddr} is missing or invalid\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getImportedKeyIds(options = {}) {\n    return this.keyVault.getImportedKeyIds(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get metadata for an imported key (V2). Does not return private key material.\n   *\n   * @public\n   * @async\n   * @param {KeyVaultImportedKeyOptions} options - {@code keyVaultAddr} and {@code keyId},\n   * @returns {Promise<KeyMetadataResult>} {@code curve}, {@code chain}, {@code active}, {@code labelHash},\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code keyId} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. unknown {@code keyId})\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getKeyMetadata(options = {}) {\n    return this.keyVault.getKeyMetadata(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Check whether an imported key exists in a KeyVault (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultImportedKeyOptions} options - {@code keyVaultAddr} and {@code keyId},\n   * @returns {Promise<boolean>} {@code true} if the key exists\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code keyId} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async keyExists(options = {}) {\n    return this.keyVault.keyExists(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the address (Ethereum address, Solana pubkey, etc.) corresponding to an imported key (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultImportedKeyOptions} options - {@code keyVaultAddr} and {@code keyId},\n   * @returns {Promise<Bytes>} Address bytes (curve/chain-dependent encoding)\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code keyId} is not a 32-byte hex string\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getImportedKeyAddr(options = {}) {\n    return this.keyVault.getImportedKeyAddr(await this._keyVaultAuthPipeline.mergeVaultOptions(options));\n  },\n\n  /**\n   * Get the Solana public key for an HD account at {@code index} (V2).\n   *\n   * @public\n   * @async\n   * @param {KeyVaultAddrIndexOptions} options - {@code keyVaultAddr} and {@code index},\n   * @returns {Promise<Bytes>} Solana public key bytes\n   * @throws {ValidationError} If {@code keyVaultAddr} is invalid or {@code index} is not a non-negative integer\n   * @throws {NetworkError} If the read call fails over RPC\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. Solana base keys not configured)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async getSolanaAddr(options = {}) {\n    const resolved = await this._keyVaultAuthPipeline.mergeVaultOptions(options);\n    return this.keyVault.getSolanaAddr(withDefaultAccountIndex(resolved));\n  },\n\n  /**\n   * Upgrade a KeyVault proxy to a new implementation address (authenticated write).\n   *\n   * @public\n   * @async\n   * @param {UpdateKeyVaultImplOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newKeyVaultImplAddr},\n   * @returns {Promise<UpdateKeyVaultImplAddrResult>} Standard write result with parsed {@code newImplAddr},\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code KeyVaultImplUpdated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateKeyVaultImplAddr(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildUpgradeImplementationAction({ newImplAddr: o.newImplAddr }),\n      invoke: (encoded) => this.keyVault.updateKeyVaultImplAddr(encoded)\n    });\n  },\n\n  /**\n   * Upgrade a KeyVault implementation via the custom acknowledgement path.\n   *\n   * @public\n   * @async\n   * @param {UpdateKeyVaultImplCustomOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newImplAddr}, {@code customAckHash},\n   * @returns {Promise<UpdateKeyVaultImplAddrCustomResult>},\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code customAckHash} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code CustomImplementationUpgraded} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateKeyVaultImplAddrCustom(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) =>\n        buildUpgradeImplementationCustomAction({\n          newImplAddr: o.newImplAddr,\n          customAckHash: o.customAckHash\n        }),\n      invoke: (encoded) => this.keyVault.updateKeyVaultImplAddrCustom(encoded)\n    });\n  },\n\n  /**\n   * Swap the authenticator contract bound to a KeyVault (authenticated write).\n   *\n   * @public\n   * @async\n   * @param {UpdateAuthenticatorOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newAuthenticatorAddr},\n   * @returns {Promise<UpdateAuthenticatorAddrResult>} Standard write result with parsed {@code newAuthenticator},\n   * @throws {ValidationError} If addresses or {@code authProof} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code AuthenticatorUpdated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateAuthenticatorAddr(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) =>\n        buildChangeAuthenticatorAction({\n          newAuthenticatorAddr: o.newAuthenticatorAddr,\n          newAuthConfig: o.newAuthConfig\n        }),\n      invoke: (encoded) => this.keyVault.updateAuthenticatorAddr(encoded)\n    });\n  },\n\n  /**\n   * Swap the authenticator via the custom acknowledgement path.\n   *\n   * @public\n   * @async\n   * @param {UpdateAuthenticatorCustomOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code newAuthenticatorAddr}, {@code newAuthConfig}, {@code customAckHash},\n   * @returns {Promise<UpdateAuthenticatorAddrCustomResult>},\n   * @throws {ValidationError} If addresses, {@code authProof}, {@code newAuthConfig}, or {@code customAckHash} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof)\n   * @throws {EventNotFoundError} If the {@code CustomAuthenticatorChanged} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async updateAuthenticatorAddrCustom(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) =>\n        buildChangeAuthenticatorCustomAction({\n          newAuthenticatorAddr: o.newAuthenticatorAddr,\n          newAuthConfig: o.newAuthConfig,\n          customAckHash: o.customAckHash\n        }),\n      invoke: (encoded) => this.keyVault.updateAuthenticatorAddrCustom(encoded)\n    });\n  },\n\n  /**\n   * Import an external private key into the KeyVault (V2, authenticated write).\n   *\n   * @public\n   * @async\n   * @param {ImportKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code privateKey}, {@code curve}, {@code chain}, {@code labelHash},\n   * @returns {Promise<ImportKeyResult>} Standard write result with parsed {@code keyId},\n   * @throws {ValidationError} If addresses, {@code authProof}, {@code privateKey}, or metadata fields are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or duplicate key)\n   * @throws {EventNotFoundError} If the {@code KeyImported} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async importKey(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) =>\n        buildImportKeyAction({\n          keyId: o.keyId,\n          privateKey: o.privateKey,\n          publicKey: o.publicKey,\n          curve: o.curve,\n          chain: o.chain,\n          label: o.label\n        }),\n      invoke: (encoded) => this.keyVault.importKey(encoded)\n    });\n  },\n\n  /**\n   * Deactivate an imported key (V2, soft delete; authenticated write).\n   *\n   * The key remains stored but cannot sign until reactivated via {@link Monstera#activateKey}.\n   *\n   * @public\n   * @async\n   * @param {DeactivateActivateKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId},\n   * @returns {Promise<DeactivateKeyResult>} Standard write result with parsed {@code keyId},\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code keyId} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or unknown {@code keyId})\n   * @throws {EventNotFoundError} If the {@code KeyDeactivated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async deactivateKey(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildDeactivateKeyAction({ keyId: o.keyId }),\n      invoke: (encoded) => this.keyVault.deactivateKey(encoded)\n    });\n  },\n\n  /**\n   * Reactivate a previously deactivated key (V2, authenticated write).\n   *\n   * @public\n   * @async\n   * @param {DeactivateActivateKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId},\n   * @returns {Promise<ActivateKeyResult>} Standard write result with parsed {@code keyId},\n   * @throws {ValidationError} If addresses, {@code authProof}, or {@code keyId} are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or unknown {@code keyId})\n   * @throws {EventNotFoundError} If the {@code KeyActivated} event is missing from the receipt\n   * @throws {EventParseError} If the event log decodes but mapping fails\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async activateKey(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildActivateKeyAction({ keyId: o.keyId }),\n      invoke: (encoded) => this.keyVault.activateKey(encoded)\n    });\n  },\n\n  /**\n   * Set HD base keys for a chain (V2, authenticated write).\n   *\n   * Used to provision deterministic Ed25519 / EVM base keys for chains that derive accounts via index.\n   *\n   * @public\n   * @async\n   * @param {SetChainBaseKeysOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code chain}, {@code privateKey} / chain-specific seed material\n   * @returns {Promise<BaseTransactionResult>} Standard write result\n   * @throws {ValidationError} If addresses, {@code authProof}, {@code chain}, or seed material are missing/invalid\n   * @throws {WriteRequiresSignerError} If no signer is configured\n   * @throws {NetworkError} If the RPC interaction or proof builder transports fail\n   * @throws {ContractRevertError} If the transaction reverts (e.g. invalid auth proof or already provisioned)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async setChainBaseKeys(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) =>\n        buildSetChainBaseKeysAction({\n          chain: o.chain,\n          basePrivateKey: o.basePrivateKey,\n          baseChainCode: o.baseChainCode\n        }),\n      invoke: (encoded) => this.keyVault.setChainBaseKeys(encoded)\n    });\n  }\n});\n","/**\n * Pure EIP-7702 authorization primitives (no KeyVault coupling).\n *\n * KeyVault-specific calldata encode/decode lives in {@code internal/vault/eip7702.js}.\n *\n * @module internal/crypto/eip7702\n */\n\nimport { getAddress } from '../../adapters/ethers/addresses.js';\nimport {\n  hashAuthorization as etherHashAuthorizationTuple,\n  verifyAuthorization as etherVerifyAuthorizationTuple\n} from '../../adapters/ethers/signing.js';\nimport {\n  requireAddress,\n  requireNonEmptyObject,\n  requireProviderMethod\n} from '../validation/assert.js';\n\n/**\n * Normalise caller input into an ethers authorization tuple.\n *\n * @description Accepts either {@code address} or {@code delegateAddr} as the target field name\n * (the SDK uses {@code delegateAddr} elsewhere; ethers uses {@code address}). Performs full\n * validation and EIP-55 checksumming.\n *\n * @public\n * @param {{ address?: Address, delegateAddr?: Address, chainId: number | bigint, nonce: number | bigint }} auth -\n *   Authorization tuple (one of {@code address} / {@code delegateAddr} required)\n * @returns {AuthorizationTupleInput} Normalised tuple ({@code chainId} / {@code nonce} as\n *   {@code bigint}, {@code address} checksummed)\n * @throws {ValidationError} If {@code auth} is not an object, or the address fails validation\n */\nexport function normalizeAuthorizationTuple(auth) {\n  requireNonEmptyObject(auth, 'auth');\n  const rawAddr = auth.address ?? auth.delegateAddr;\n  requireAddress(rawAddr, 'address');\n  const address = getAddress(rawAddr);\n  const chainId = BigInt(auth.chainId);\n  const nonce = BigInt(auth.nonce);\n  return { chainId, address, nonce };\n}\n\n/**\n * Compute the EIP-7702 authorization digest.\n *\n * @description {@code keccak256(0x05 || rlp([chainId, address, nonce]))} — delegated to\n * {@code ethers.hashAuthorization} via the adapter.\n *\n * @public\n * @param {{ address?: Address, delegateAddr?: Address, chainId: number | bigint, nonce: number | bigint }} auth -\n *   Authorization tuple\n * @returns {Bytes32} 32-byte digest hex string\n * @throws {ValidationError} Forwarded from {@link normalizeAuthorizationTuple}\n */\nexport function hashAuthorization(auth) {\n  return etherHashAuthorizationTuple(normalizeAuthorizationTuple(auth));\n}\n\n/**\n * Recover the signer of an EIP-7702 authorization.\n *\n * @public\n * @param {{ address?: Address, delegateAddr?: Address, chainId: number | bigint, nonce: number | bigint }} auth -\n *   Authorization tuple\n * @param {AuthorizationSplitSignature} signature - Split signature ({@code r}, {@code s},\n *   {@code yParity})\n * @returns {Address} Recovered signer address (EIP-55 checksum)\n * @throws {ValidationError} Forwarded from {@link normalizeAuthorizationTuple}\n */\nexport function verifyAuthorization(auth, signature) {\n  return etherVerifyAuthorizationTuple(normalizeAuthorizationTuple(auth), signature);\n}\n\n/**\n * Read the EIP-155 chain id from a provider's current network.\n *\n * @public\n * @async\n * @param {EthersAbstractProvider} provider - Ethers provider exposing {@code getNetwork}\n * @returns {Promise<bigint>} Chain id as {@code bigint}\n * @throws {ValidationError} If {@code provider} does not expose {@code getNetwork}\n */\nexport async function fetchAuthorizationChainId(provider) {\n  requireProviderMethod(provider, 'getNetwork', 'provider');\n  const net = await provider.getNetwork();\n  return BigInt(net.chainId);\n}\n\n/**\n * Read the EIP-7702 authorization {@code nonce} for an authority address.\n *\n * @description Returns the authority's latest transaction count on the target chain — the value\n * that goes into the authorization tuple's {@code nonce} slot.\n *\n * @public\n * @async\n * @param {EthersAbstractProvider} provider - Ethers provider exposing {@code getTransactionCount}\n * @param {Address} authorityAddress - EOA acting as authority\n * @returns {Promise<bigint>} Latest nonce as {@code bigint}\n * @throws {ValidationError} If {@code provider} does not expose {@code getTransactionCount}, or\n *   {@code authorityAddress} fails address validation\n */\nexport async function fetchAuthorizationNonce(provider, authorityAddress) {\n  requireProviderMethod(provider, 'getTransactionCount', 'provider');\n  requireAddress(authorityAddress, 'authorityAddress');\n  const count = await provider.getTransactionCount(authorityAddress);\n  return BigInt(count);\n}\n","/**\n * KeyVault-specific EIP-7702 helpers (calldata encode/decode for {@code signAuthorizationImpl}).\n *\n * Pure authorization hash/verify/normalize/provider reads live in {@code internal/crypto/eip7702.js}.\n *\n * @module internal/vault/eip7702\n */\n\nimport { ZeroHash } from '../../adapters/ethers/addresses.js';\nimport { defaultAbiCoder, Interface } from '../../adapters/ethers/encoding.js';\nimport { requireAddress, requireBigInt, requireNonNegativeInteger, requireNonEmptyBytes } from '../validation/assert.js';\nimport { ValidationError } from '../../errors/index.js';\n\n/**\n * Minimal ABI fragment for KeyVault's {@code signAuthorizationImpl} entry point.\n *\n * @see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7702.md\n *\n * @private\n * @readonly\n */\nconst SIGN_AUTHORIZATION_IMPL_ABI = [\n  'function signAuthorizationImpl(bytes32 baseKey, bytes32 baseChain, uint32 index, address delegate, uint64 authNonce, uint256 chainId) view returns (bytes32 r, bytes32 s, uint8 yParity)'\n];\n\n/**\n * Cached ethers {@link Interface} for {@link SIGN_AUTHORIZATION_IMPL_ABI}.\n *\n * @private\n * @readonly\n */\nconst signAuthorizationImplInterface = new Interface(SIGN_AUTHORIZATION_IMPL_ABI);\n\n/** @private @readonly */\nconst UINT64_MAX = (1n << 64n) - 1n;\n/** @private @readonly */\nconst UINT32_MAX = (1n << 32n) - 1n;\n\n/**\n * Encode {@code signAuthorizationImpl} calldata for {@code KeyVaultClient.executeWithAuth}.\n *\n * @description Validates {@code index} / {@code nonce} / {@code chainId} fit their on-chain widths\n * (uint32 / uint64 / non-negative respectively) and encodes them with two zero placeholders for\n * {@code baseKey} and {@code baseChain}.\n *\n * @public\n * @param {CreateImplCallOptions} [options={}] - {@code index}, {@code delegateAddr},\n *   {@code nonce}, {@code chainId}\n * @returns {Bytes} ABI-encoded calldata (hex)\n * @throws {ValidationError} If {@code index} is missing/negative/non-integer (raised by\n *   {@link requireNonNegativeInteger}), if {@code delegateAddr} fails address validation, if\n *   {@code index} > uint32 max, if {@code nonce} is outside [0, uint64 max], or if\n *   {@code chainId} is negative\n */\nexport function encodeSignAuthorizationImplCalldata(options = {}) {\n  const { index, delegateAddr, nonce, chainId } = options;\n  requireNonNegativeInteger(index, 'index');\n  requireAddress(delegateAddr, 'delegateAddr');\n\n  const idx = BigInt(index);\n  if (idx > UINT32_MAX) {\n    throw new ValidationError('index must fit uint32', 'index', index);\n  }\n\n  const nonceBn = BigInt(nonce);\n  if (nonceBn < 0n || nonceBn > UINT64_MAX) {\n    throw new ValidationError('nonce must fit uint64', 'nonce', nonce);\n  }\n\n  const chainBn = requireBigInt(chainId, 'chainId', { allowNegative: false });\n\n  return signAuthorizationImplInterface.encodeFunctionData('signAuthorizationImpl', [\n    ZeroHash,\n    ZeroHash,\n    Number(idx),\n    delegateAddr,\n    nonceBn,\n    chainBn\n  ]);\n}\n\n/**\n * Decode the {@code (bytes32 r, bytes32 s, uint8 yParity)} tuple returned by KeyVault's\n * {@code signAuthorizationImpl}.\n *\n * @public\n * @param {Bytes} returnData - Raw return data from {@code executeWithAuth}\n * @returns {AuthorizationSplitSignature} Split signature\n * @throws {ValidationError} If {@code returnData} is empty (raised by {@link requireNonEmptyBytes})\n *   or {@code yParity} is not exactly 0 / 1\n */\nexport function decodeSignAuthorizationResult(returnData) {\n  requireNonEmptyBytes(returnData, 'returnData');\n  const decoded = defaultAbiCoder.decode(['bytes32', 'bytes32', 'uint8'], returnData);\n  const yParityNum = Number(decoded[2]);\n  if (yParityNum !== 0 && yParityNum !== 1) {\n    throw new ValidationError('invalid yParity from KeyVault', 'signature.yParity', decoded[2]);\n  }\n  return {\n    r: decoded[0],\n    s: decoded[1],\n    yParity: /** @type {0|1} */ (yParityNum)\n  };\n}\n\n/**\n * Assemble the public {@link SignedAuthorizationResult} from resolved fields and the raw KeyVault\n * return blob.\n *\n * @public\n * @param {{ delegateAddr: Address, nonce: bigint, chainId: bigint, raw: Bytes }} params - Pre-resolved\n *   fields (delegate / nonce / chain id) plus the raw return data from {@code executeWithAuth}\n * @returns {SignedAuthorizationResult} Authorization tuple + decoded split signature\n * @throws {ValidationError} Forwarded from {@link decodeSignAuthorizationResult}\n */\nexport function finalizeSignedAuthorizationResult(params) {\n  const { delegateAddr, nonce, chainId, raw } = params;\n  return {\n    address: delegateAddr,\n    nonce,\n    chainId,\n    signature: decodeSignAuthorizationResult(raw)\n  };\n}\n","/**\n * High-level orchestration for {@code Monstera.signAuthorization}.\n *\n * Keeps the Monstera facade thin: validation and ethers usage live here and in\n * {@link ./authorization.js}. The flow is:\n * 1. Validate caller options and apply defaults\n * 2. Resolve any missing {@code chainId} / authority {@code nonce} via the read provider\n * 3. Encode the {@code implCall} bytes for KeyVault\n * 4. Encode an action-bound {@code authProof} for {@code executeWithAuth}\n * 5. Call {@code KeyVaultClient.executeWithAuth} with the encoded auth proof\n * 6. Decode the {@code (r, s, yParity)} return blob and assemble the public result\n *\n * @module internal/vault/signEip7702Authorization\n */\n\nimport { ValidationError } from '../../errors/index.js';\nimport { requireAddress, requireBigInt, requireChainId, requireNonNegativeInteger } from '../validation/assert.js';\nimport { ConnectSession } from '../auth/session/ConnectSession.js';\nimport { toChecksumAddress } from '../crypto/address.js';\nimport {\n  fetchAuthorizationChainId,\n  fetchAuthorizationNonce\n} from '../crypto/eip7702.js';\nimport {\n  encodeSignAuthorizationImplCalldata,\n  finalizeSignedAuthorizationResult\n} from './eip7702.js';\nimport { withDefaultAccountIndex } from './accountIndex.js';\nimport { log } from '../logger.js';\n\n/**\n * Validate the caller options and resolve every input needed to call\n * {@code KeyVaultClient.executeWithAuth}.\n *\n * @description Pulls {@code authorityAddr} from {@code keyVault.getAccountAddr} for the requested\n * {@code index}; reads {@code chainId} / {@code nonce} from the provider when the caller did not\n * supply them; encodes the {@code signAuthorizationImpl} calldata.\n *\n * @private\n * @async\n * @param {SignAuthorizationDeps} deps - Injected dependencies\n * @param {SignAuthorizationOptions} [options={}] - Caller options ({@code keyVaultAddr},\n *   {@code delegateAddr}, optional {@code index}, {@code chainId}, {@code nonce}, {@code provider})\n * @returns {Promise<ResolvedSignAuthorizationInputs>} Fully resolved inputs ready to feed into\n *   {@code executeWithAuth}\n * @throws {ValidationError} If {@code keyVaultAddr} / {@code delegateAddr} are missing/invalid,\n *   {@code index} is not a non-negative integer, {@code chainId} is invalid, {@code nonce} is\n *   negative, or {@code provider} is required (chain id / nonce missing) but not available\n * @throws {CredentialsRequiredError} If {@code keyVaultAddr} is omitted and no credentials session is active\n * @throws {WalletError} Forwarded from {@link fetchAuthorizationChainId},\n *   {@link fetchAuthorizationNonce}, or {@code keyVault.getAccountAddr} (e.g.\n *   {@link NetworkError}, {@link ContractRevertError})\n */\nasync function resolveSignAuthorizationInputs(deps, options = {}) {\n  const { keyVault, fallbackProvider, connectSession } = deps;\n  const resolved = await ConnectSession.mergeVaultOptions(connectSession, options);\n  const { keyVaultAddr, delegateAddr, provider } = resolved;\n\n  requireAddress(keyVaultAddr, 'keyVaultAddr');\n  requireAddress(delegateAddr, 'delegateAddr');\n  const checksummedDelegateAddr = toChecksumAddress(delegateAddr);\n\n  const { index } = withDefaultAccountIndex(resolved);\n  requireNonNegativeInteger(index, 'index');\n\n  const needsChainId = resolved.chainId === undefined || resolved.chainId === null;\n  const needsNonce = resolved.nonce === undefined || resolved.nonce === null;\n  const targetProvider = provider ?? fallbackProvider ?? null;\n\n  if ((needsChainId || needsNonce) && !targetProvider) {\n    throw new ValidationError(\n      'provider is required to resolve chainId and/or nonce (pass options.provider, or construct Monstera with rpcUrl/readProvider / signer.provider)',\n      'provider',\n      targetProvider\n    );\n  }\n\n  const chainId = needsChainId\n    ? await fetchAuthorizationChainId(targetProvider)\n    : BigInt(requireChainId(resolved.chainId, 'chainId'));\n\n  const authorityAddr = await keyVault.getAccountAddr({ keyVaultAddr, index });\n\n  const nonce = needsNonce\n    ? await fetchAuthorizationNonce(targetProvider, authorityAddr)\n    : requireBigInt(resolved.nonce, 'nonce', { allowNegative: false });\n\n  const implCall = encodeSignAuthorizationImplCalldata({\n    index,\n    delegateAddr: checksummedDelegateAddr,\n    nonce,\n    chainId\n  });\n\n  return {\n    keyVaultAddr,\n    implCall,\n    delegateAddr: checksummedDelegateAddr,\n    nonce,\n    chainId\n  };\n}\n\n/**\n * End-to-end orchestration for {@code Monstera.signAuthorization}.\n *\n * @description Resolves {@code implCall} first, encodes an action-bound auth proof for\n * {@code executeWithAuth}, calls {@code KeyVaultClient.executeWithAuth}, and assembles the public\n * {@link SignedAuthorizationResult} from the raw return blob.\n *\n * @public\n * @async\n * @param {SignAuthorizationDeps} deps - Injected dependencies (KeyVault client, fallback provider, encode helper)\n * @param {SignAuthorizationOptions} [options={}] - Caller options\n * @param {(options: SignAuthorizationOptions & { implCall: Bytes }) => AuthActionInput} buildExecuteWithAuthAction -\n *   Builds the vault action for {@code executeWithAuth}\n * @returns {Promise<SignedAuthorizationResult>} Authorization tuple + decoded split signature\n * @throws {ValidationError} Forwarded from {@link resolveSignAuthorizationInputs}\n * @throws {WalletError} Forwarded from any underlying read / write call (e.g.\n *   {@link NetworkError}, {@link ContractRevertError}, {@link WriteRequiresSignerError})\n */\nasync function executeSignAuthorization(deps, options = {}, buildExecuteWithAuthAction) {\n  const { keyVault, encodeVaultAuthProof } = deps;\n  const resolved = await resolveSignAuthorizationInputs(deps, options);\n\n  log.debug('Build implementation call, about to encode auth proof and execute with auth');\n\n  const encoded = await encodeVaultAuthProof(\n    { ...options, implCall: resolved.implCall },\n    buildExecuteWithAuthAction\n  );\n\n  const raw = await keyVault.executeWithAuth({\n    keyVaultAddr: resolved.keyVaultAddr,\n    authProof: encoded.authProof,\n    implCall: resolved.implCall\n  });\n\n  return finalizeSignedAuthorizationResult({\n    delegateAddr: resolved.delegateAddr,\n    nonce: resolved.nonce,\n    chainId: resolved.chainId,\n    raw\n  });\n}\n\nexport { executeSignAuthorization, resolveSignAuthorizationInputs };\n","/**\n * MonsteraSigning domain methods for {@link Monstera}.\n * Mixed onto {@link Monstera} prototype at construction time.\n *\n * @module sdk/domains/MonsteraSigning\n */\n\nimport {\n  buildSignAction,\n  buildSignMessageAction,\n  buildSignTransactionAction,\n  buildExecuteWithAuthAction,\n  buildSignWithImportedKeyAction,\n  buildSignSolanaAction,\n} from '../../internal/vault/actions/index.js';\nimport { executeSignAuthorization } from '../../internal/vault/signEip7702Authorization.js';\nimport { defineDomainMethods } from './defineDomainMethods.js';\n\nexport const monsteraSigningMethods = defineDomainMethods({\n  // --- Signing Reads ---\n\n  /**\n   * Sign a raw EVM transaction with the wallet's HD account at {@code index} (authenticated view).\n   *\n   * Encodes the structured {@code authProof} via {@link AuthProofBuilder} when needed, then delegates to\n   * {@link KeyVaultClient#signTransaction}.\n   *\n   * @public\n   * @async\n   * @param {SignTransactionOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, plus EVM tx fields\n   * @returns {Promise<Bytes>} RLP-encoded signed transaction\n   * @throws {ValidationError} If addresses, {@code authProof}, or numeric tx fields are missing/invalid\n   * @throws {NetworkError} If the RPC view call fails (e.g. provider failure during minute-bucket leg)\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signTransaction(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) =>\n        buildSignTransactionAction({\n          index: o.index,\n          nonce: o.nonce,\n          gasPrice: o.gasPrice,\n          gasLimit: o.gasLimit,\n          to: o.to,\n          value: o.value,\n          txData: o.txData,\n          chainId: o.chainId\n        }),\n      invoke: (encoded) => this.keyVault.signTransaction(encoded)\n    });\n  },\n\n  /**\n   * Sign an EIP-191 personal message with the wallet's HD account at {@code index} (authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignMessageOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, {@code message},\n   * @returns {Promise<Bytes>} Signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signMessage(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildSignMessageAction({ index: o.index, message: o.message }),\n      invoke: (encoded) => this.keyVault.signMessage(encoded)\n    });\n  },\n\n  /**\n   * Sign an arbitrary 32-byte hash with the wallet's HD account at {@code index} (authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignHashOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, 32-byte {@code hash},\n   * @returns {Promise<Bytes>} Signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async sign(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildSignAction({ index: o.index, digest: o.hash }),\n      invoke: (encoded) => this.keyVault.sign(encoded)\n    });\n  },\n\n\n  /**\n   * Sign an EIP-7702-style authorization tuple via KeyVault (same digest as ethers {@code hashAuthorization}).\n   *\n   * Resolves missing {@code chainId} / {@code nonce} from {@code options.provider} (preferred), the SDK\n   * {@code readProvider}, or the signer's provider. The internal {@code implCall} is built and forwarded to\n   * {@link KeyVaultClient#executeWithAuth}; the raw return is decoded into an ethers-style split signature.\n   *\n   * @public\n   * @async\n   * @param {SignAuthorizationOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code delegateAddr}, optional {@code index}/{@code chainId}/{@code nonce}/{@code provider},\n   * @returns {Promise<SignedAuthorizationResult>} Ethers-compatible signed authorization\n   * @throws {ValidationError} If required addresses are invalid, {@code chainId} or {@code nonce} can't be resolved (no provider), or numeric values are out of range\n   * @throws {NetworkError} If chain id / nonce resolution or the underlying RPC call fails\n   * @throws {ContractRevertError} If the underlying view call reverts (e.g. invalid auth proof or yParity)\n   * @throws {WalletError} For other unrecognised failures\n   *\n   * @remarks\n   * For an authorization targeting a chain different from the SDK's RPC, pass {@code provider} connected to that chain\n   * so nonce and chain id stay consistent.\n   * Orchestration lives in {@code internal/vault/signEip7702Authorization.js}; pure EIP-7702\n   * helpers in {@code internal/crypto/eip7702.js}; KeyVault calldata encode/decode in\n   * {@code internal/vault/eip7702.js}.\n   */\n  async signAuthorization(options = {}) {\n    return executeSignAuthorization(\n      {\n        keyVault: this.keyVault,\n        fallbackProvider: this.readProvider ?? this.writeSigner?.provider ?? null,\n        connectSession: this._keyVaultAuthPipeline.getConnectSession(),\n        encodeVaultAuthProof: (opts, buildAction) => this._keyVaultAuthPipeline.encodeAuthProof(opts, buildAction)\n      },\n      options,\n      buildExecuteWithAuthAction\n    );\n  },\n\n  /**\n   * Execute an arbitrary KeyVault implementation function gated by an auth proof (authenticated view).\n   *\n   * Used internally by {@link Monstera#signAuthorization}; advanced callers can supply their own\n   * {@code implCall} bytes when extending KeyVault.\n   *\n   * @public\n   * @async\n   * @param {ExecuteWithAuthOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code implCall},\n   * @returns {Promise<Bytes>} Raw return bytes from the implementation function\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts (e.g. invalid auth proof or implementation revert)\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async executeWithAuth(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildExecuteWithAuthAction({ implCall: o.implCall }),\n      invoke: (encoded) => this.keyVault.executeWithAuth(encoded)\n    });\n  },\n\n  /**\n   * Sign a digest with an imported key (V2, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignWithImportedKeyOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code keyId}, 32-byte {@code digest},\n   * @returns {Promise<Bytes>} Signature bytes (format depends on the imported key's curve)\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signWithImportedKey(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildSignWithImportedKeyAction({ keyId: o.keyId, digest: o.digest }),\n      invoke: (encoded) => this.keyVault.signWithImportedKey(encoded)\n    });\n  },\n\n  /**\n   * Sign a Solana message with the HD account at {@code index} (V2, authenticated view).\n   *\n   * @public\n   * @async\n   * @param {SignSolanaOptions} options - {@code keyVaultAddr}, {@code authProof}, {@code index}, {@code message},\n   * @returns {Promise<Bytes>} Solana signature bytes\n   * @throws {ValidationError} If required parameters are missing or invalid\n   * @throws {NetworkError} If the RPC view call fails\n   * @throws {ContractRevertError} If the underlying call reverts\n   * @throws {WalletError} For other unrecognised failures\n   */\n  async signSolana(options = {}) {\n    return this._invokeVaultAuthenticated({\n      options,\n      buildAction: (o) => buildSignSolanaAction({ index: o.index, message: o.message }),\n      invoke: (encoded) => this.keyVault.signSolana(encoded)\n    });\n  }\n});\n","/**\n * Monstera Wallet SDK — top-level facade ({@link Monstera}).\n *\n * Public entry point that wires the read provider and Sapphire-wrapped write signer to the\n * four domain clients and offers high-level helpers that accept structured options.\n *\n * Domain methods live in {@code src/sdk/domains/} and are composed onto this class at load time.\n * Operation recipes ({@code MonsteraRecipes}) are mixed first so all domains share the same call patterns.\n * See {@code docs/architecture.md} for the execution map.\n *\n * @module sdk/Monstera\n */\n\n/// <reference path=\"./Monstera.domain-methods.d.ts\" />\n\nimport MonsteraConfig from '../config/monstera.js';\nimport MonsteraUtils from './MonsteraUtils.js';\nimport log from '../internal/logger.js';\nimport WalletFactoryClient from '../clients/factory/index.js';\nimport WalletLogicClient from '../clients/logic/index.js';\nimport KeyVaultClient from '../clients/keyVault/index.js';\nimport { AuthenticatorClient } from '../clients/auth/index.js';\nimport { createProvider, createWriteSigner } from '../providers/sapphire.js';\nimport { assertValidResolvedConfig } from '../internal/validators/networkConfig.js';\nimport { AuthConfigEncoder } from '../internal/auth/config/AuthConfigEncoder.js';\nimport { AuthProofEncoder } from '../internal/auth/proof/AuthProofEncoder.js';\nimport { ConnectSession } from '../internal/auth/session/ConnectSession.js';\nimport { parseConnectCredentials } from '../internal/validators/connectOptions.js';\nimport { KeyVaultAuthPipeline } from '../internal/auth/pipelines/KeyVaultAuthPipeline.js';\nimport { ExplicitAuthPipeline } from '../internal/auth/pipelines/ExplicitAuthPipeline.js';\nimport { AuthConfigPipeline } from '../internal/auth/pipelines/AuthConfigPipeline.js';\nimport { SCOPE_ALL, SCOPE_SIGN_ALL } from '../internal/auth/specs/apiKeySession.js';\nimport { monsteraRecipeMethods } from './domains/MonsteraRecipes.js';\nimport { monsteraSessionMethods } from './domains/MonsteraSession.js';\nimport { monsteraAuthMethods } from './domains/MonsteraAuth.js';\nimport { monsteraFactoryMethods } from './domains/MonsteraFactory.js';\nimport { monsteraKeyVaultMethods } from './domains/MonsteraKeyVault.js';\nimport { monsteraSigningMethods } from './domains/MonsteraSigning.js';\n\n/**\n * Main entry point for Monstera wallet operations on Oasis Sapphire.\n *\n * Domain methods are mixed onto the prototype from {@code src/sdk/domains/} at load time.\n *\n * @public\n * @property {MonsteraConfigOptions} config - Resolved network and contract configuration\n * @property {string} version - SDK version string\n * @property {EthersAbstractProvider} readProvider - Provider for read-only RPC calls\n * @property {WrappedEthersSigner | null} writeSigner - Sapphire-wrapped signer for writes, or null\n * @property {WalletFactoryClient} factory - WalletFactory client\n * @property {WalletLogicClient} logic - WalletLogic client\n * @property {KeyVaultClient} keyVault - KeyVault client\n * @property {AuthenticatorClient} auth - Authenticator client\n * @property {ConnectSession | null} _connectSession - End-user credentials session, if connected with credentials\n * @property {AuthProofEncoder} _authProofEncoder - Auth-proof encoding\n * @property {KeyVaultAuthPipeline} _keyVaultAuthPipeline - Vault-authenticated write pipeline\n * @property {ExplicitAuthPipeline} _explicitAuthPipeline - Authenticator management write pipeline\n * @property {AuthConfigPipeline} _authConfigPipeline - Authenticator configure pipeline\n * @property {AuthConfigEncoder} _authConfigEncoder - Auth config encoder\n */\nclass Monstera {\n  constructor(config) {\n    const parsedCredentials = parseConnectCredentials(config?.credentials);\n    const { credentials: _credentials, ...resolvedConfig } = config ?? {};\n\n    assertValidResolvedConfig(resolvedConfig);\n    /** @type {MonsteraConfigOptions} */\n    this.config = resolvedConfig;\n    /** @type {string} */\n    this.version = MonsteraConfig.version;\n\n    // Initialize read provider (for read operations)\n    /** @type {EthersAbstractProvider} */\n    this.readProvider = resolvedConfig.provider ?? createProvider(resolvedConfig.rpcUrl, 'read');\n    \n    // Initialize write signer (for write operations with Sapphire wrapper)\n    /** @type {WrappedEthersSigner | null} */\n    this.writeSigner = resolvedConfig.signer ? createWriteSigner(resolvedConfig.signer, resolvedConfig.rpcUrl, 'write') : null;\n\n    // Wire domain clients\n    /** @type {WalletFactoryClient} */\n    this.factory = new WalletFactoryClient(this.readProvider, this.writeSigner, resolvedConfig);\n    /** @type {WalletLogicClient} */\n    this.logic = new WalletLogicClient(this.readProvider, this.writeSigner, resolvedConfig);\n    /** @type {KeyVaultClient} */\n    this.keyVault = new KeyVaultClient(this.readProvider, this.writeSigner, resolvedConfig);\n    /** @type {AuthenticatorClient} */\n    this.auth = new AuthenticatorClient(this.readProvider, this.writeSigner, resolvedConfig);\n\n    /** @type {ConnectSession | null} */\n    this._connectSession = parsedCredentials\n      ? new ConnectSession(parsedCredentials, {\n          hashUsername: (opts) => this.factory.hashUsername(opts),\n          walletOfUsername: (opts) => this.factory.walletOfUsername(opts),\n          getKeyVaultAddr: (opts) => this.factory.getKeyVaultAddr(opts)\n        })\n      : null;\n\n    /** @type {AuthProofEncoder} */\n    this._authProofEncoder = new AuthProofEncoder({\n      config: resolvedConfig,\n      readProvider: this.readProvider,\n      getAuthenticatorAddr: (keyVaultAddr) => this.getAuthenticatorAddr({ keyVaultAddr })\n    });\n\n    /** @type {KeyVaultAuthPipeline} */\n    this._keyVaultAuthPipeline = new KeyVaultAuthPipeline({\n      connectSession: this._connectSession,\n      authProofEncoder: this._authProofEncoder\n    });\n\n    /** @type {ExplicitAuthPipeline} */\n    this._explicitAuthPipeline = new ExplicitAuthPipeline({\n      connectSession: this._connectSession,\n      authProofEncoder: this._authProofEncoder\n    });\n    /** @type {AuthConfigEncoder} */\n    this._authConfigEncoder = new AuthConfigEncoder({ addresses: resolvedConfig.addresses });\n    \n    /** @type {AuthConfigPipeline} */\n    this._authConfigPipeline = new AuthConfigPipeline({\n      keyVaultAuthPipeline: this._keyVaultAuthPipeline,\n      authConfigEncoder: this._authConfigEncoder\n    });\n\n    // Check version in background only when explicitly enabled.\n    if (resolvedConfig?.checkVersion === true && !MonsteraUtils.versionCheckDone) {\n      MonsteraUtils.checkVersionOnce(this.version);\n    }\n  }\n\n  // ============================================================================\n  // Static methods\n  // ============================================================================\n\n  /**\n   * Connect to Monstera.\n   *\n   * Pass an optional {@code signer} for on-chain writes and optional {@code credentials} for\n   * vault-authenticated operations. Omit both for read-only factory/network queries.\n   *\n   * Vault operations require {@code credentials} or an explicit {@code keyVaultAddr} on each call.\n   * Write operations require a {@code signer}.\n   *\n   * @public\n   * @static\n   * @param {ConnectOptions} options\n   * @returns {Monstera}\n   */\n  static connect(options) {\n    return new Monstera(MonsteraConfig.resolveConnectConfig(options));\n  }\n\n  /**\n   * Set the SDK log level. Affects the shared logger used by all Monstera code.\n   *\n   * @public\n   * @param {'error' | 'warn' | 'info' | 'debug'} level - Minimum level to emit (error < warn < info < debug)\n   * @returns {void}\n   * @throws {Error} If {@code level} is not one of the four supported levels\n   */\n  setLogLevel(level) {\n    log.setLevel(level);\n  }\n\n  // ============================================================================\n  // Instance Properties (Convenience Getters)\n  // ============================================================================\n\n  /** @returns {string} Network name */\n  get network() { return this.config.network; }\n\n  /** @returns {ChainId} Chain ID */\n  get chainId() { return this.config.chainId; }\n\n  /** @returns {string} RPC URL */\n  get rpcUrl() { return this.config.rpcUrl; }\n\n  /** @returns {ContractAddresses} Contract addresses */\n  get addresses() { return this.config.addresses; }\n\n  /** @returns {EthersProvider|null} Provider instance or null */\n  get provider() { return this.config.provider; }\n\n  // ============================================================================\n  // Static Properties (Class-Level Constants)\n  // ============================================================================\n\n  /**\n   * SDK version string (e.g. {@code \"1.2.3\"}).\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {string} SDK version string, or {@code \"unknown\"} if it cannot be resolved\n   */\n  static get version() {\n    return MonsteraConfig.version;\n  }\n  \n  /**\n   * Network presets for testnet and mainnet (chain id, RPC URL, explorer URL, etc.).\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {NetworkPresets} Network configuration presets\n   */\n  static get networks() {\n    return MonsteraConfig.networks;\n  }\n\n  /**\n   * Built-in contract address defaults shipped with the SDK (no network I/O).\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {DefaultContractAddresses} Static defaults keyed by network ({@code testnet} / {@code mainnet})\n   */\n  static get defaultAddresses() {\n    return MonsteraConfig.defaultAddresses;\n  }\n\n  /**\n   * ApiKeySession TOKEN-mode scope: all KeyVault signing ops (bits 0–4), excluding {@code executeWithAuth}.\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {number}\n   */\n  static get API_KEY_SESSION_SCOPE_SIGN_ALL() {\n    return SCOPE_SIGN_ALL;\n  }\n\n  /**\n   * ApiKeySession TOKEN-mode scope: all signing ops plus {@code executeWithAuth} (bits 0–5).\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {number}\n   */\n  static get API_KEY_SESSION_SCOPE_ALL() {\n    return SCOPE_ALL;\n  }\n\n  /**\n   * Ordered list of {@link ContractAddresses} keys that must be present after config is resolved.\n   *\n   * @public\n   * @static\n   * @readonly\n   * @returns {RequiredContractAddressKeys} Ordered list of required {@link ContractAddresses} keys\n   */\n  static get requiredAddresses() {\n    return MonsteraConfig.requiredAddresses;\n  }\n}\n\nObject.assign(\n  Monstera.prototype,\n  monsteraRecipeMethods,\n  monsteraSessionMethods,\n  monsteraAuthMethods,\n  monsteraFactoryMethods,\n  monsteraKeyVaultMethods,\n  monsteraSigningMethods\n);\n\nexport default Monstera;\n","/**\n * Monstera SDK - Public package entry point.\n *\n * Re-exports the {@link Monstera} class as both the default export and a named export,\n * and re-exports every {@link WalletError} subclass plus the error pipeline helpers\n * from `./errors/index.js` (single source of truth) so consumers can `instanceof`-check\n * thrown errors without importing from a deep path.\n *\n * @module @monstera_protocol/sdk\n */\n\nimport Monstera from './sdk/Monstera.js';\n\n// Re-export all error classes\nexport * from './errors/index.js';\n\n// Export Monstera as the default export (main entry point)\nexport default Monstera;\n\n// Also export as named export for flexibility\nexport { Monstera };\n"],"names":["ethersIsAddress","ethersIsHexString","sanitizer","defaultSanitizer","crypto","isBuffer","utf8ToBytes","uint.readUint8","uint.readUint16","uint.readUint32","uint.readUint64","uint.encodeUintValue","uint.uintBoundaries","toToken","uint.encodeUint","uint.decodeUint8","uint.decodeUint16","uint.decodeUint32","uint.decodeUint64","negint.decodeNegint8","negint.decodeNegint16","negint.decodeNegint32","negint.decodeNegint64","bytes.decodeBytesCompact","bytes.decodeBytes8","bytes.decodeBytes16","bytes.decodeBytes32","bytes.decodeBytes64","string.decodeStringCompact","string.decodeString8","string.decodeString16","string.decodeString32","string.decodeString64","array.decodeArrayCompact","array.decodeArray8","array.decodeArray16","array.decodeArray32","array.decodeArray64","array.decodeArrayIndefinite","map.decodeMapCompact","map.decodeMap8","map.decodeMap16","map.decodeMap32","map.decodeMap64","map.decodeMapIndefinite","tag.decodeTagCompact","tag.decodeTag8","tag.decodeTag16","tag.decodeTag32","tag.decodeTag64","float.decodeUndefined","float.decodeFloat16","float.decodeFloat32","float.decodeFloat64","float.decodeBreak","hash","assertHash","assertExists","assertBytes","cborEncode","cborDecode","deoxysii","this","hexlify","getBytes","METHOD_PASSWORD","METHOD_WALLET_SIGNATURE","buildChangePasswordAction","buildDualFactorChangePasswordAction","buildMinuteSignatureChangePasswordAction","randomBytes"],"mappings":"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M,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AAChC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AAChC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AAChC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AAChC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AAClC,EAAE,MAAM,EAAE,GAAG,WAAW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G;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;AAChB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG;AAClB,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG;AACnB,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG;AACnB,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG;AACnB,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG;AACnB,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG;AACnB;AACA;AACA,IAAI,CAAC,GAAG,CAAC;AACT,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,IAAI,CAAC,GAAG,CAAC;AACT,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAA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","x_google_ignoreList":[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102]}