{"version":3,"sources":["../../core/src/branding.ts","../../core/src/dvt.ts","../../core/src/abis/Registry.json","../../core/src/abis/GToken.json","../../core/src/abis/GTokenAuthorization.json","../../core/src/abis/GTokenStaking.json","../../core/src/abis/SuperPaymaster.json","../../core/src/abis/PaymasterFactory.json","../../core/src/abis/Paymaster.json","../../core/src/abis/LivenessRegistry.json","../../core/src/abis/AAStarGlobalGuard.json","../../core/src/abis/RailgunParser.json","../../core/src/abis/UniswapV3Parser.json","../../core/src/abis/EntryPoint.json","../../core/src/abis/SimpleAccount.json","../../core/src/abis/SimpleAccountFactory.json","../../core/src/abis/AAStarAirAccountV7.json","../../core/src/abis/xPNTsToken.json","../../core/src/abis/xPNTsFactory.json","../../core/src/abis/MySBT.json","../../core/src/abis/MicroPaymentChannel.json","../../core/src/abis/ReputationSystem.json","../../core/src/abis/DVTValidator.json","../../core/src/abis/BLSAggregator.json","../../core/src/abis/BLSValidator.json","../../core/src/abis/PolicyRegistry.json","../../core/src/abis/TimelockController.json","../../core/src/abis/X402Facilitator.json","../../core/src/abis/AAStarAirAccountFactoryV7.json","../../core/src/abis/AgentRegistry.json","../../core/src/abis/SessionKeyValidator.json","../../core/src/abis/ForceExitModule.json","../../core/src/abis/AirAccountDelegate.json","../../core/src/abis/AAStarValidator.json","../../core/src/abis/AAStarBLSAlgorithm.json","../../core/src/abis/AAStarCommitteeValidator.json","../../core/src/abis/AAStarBLSAggregator.json","../../core/src/abis/CalldataParserRegistry.json","../../core/src/abis/AirAccountExtension.json","../../core/src/abis/ERC20.json","../../core/src/abis/SaleContractV2.json","../../core/src/abis/APNTsSaleContract.json","../../core/src/abis/BuyHelper.json","../../core/src/abis/index.ts","../../core/src/guard-client.ts","../../core/src/contracts.ts","../../core/src/contract-versions.ts","../../core/src/networks.ts","../../core/src/communities.ts","../../core/src/clients.ts","../../core/src/clients/BaseClient.ts","../../core/src/errors/index.ts","../../core/src/clients/BundlerClient.ts","../../core/src/validators/index.ts","../../core/src/actions/registry.ts","../../core/src/actions/staking.ts","../../core/src/actions/sbt.ts","../../core/src/actions/superPaymaster.ts","../../core/src/actions/paymaster.ts","../../core/src/actions/reputation.ts","../../core/src/actions/tokens.ts","../../core/src/actions/entryPoint.ts","../../core/src/actions/StateValidator.ts","../../core/src/actions/dvt.ts","../../core/src/actions/factory.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/cryptoNode.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/utils.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/_md.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/_u64.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/sha2.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/utils.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/modular.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/hash-to-curve.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/curve.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/weierstrass.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/bls.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/abstract/tower.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/bls12-381.ts","../../core/src/crypto/blsSigner.ts","../../core/src/actions/aggregator.ts","../../core/src/actions/blsAlgorithm.ts","../../core/src/crypto/hashToField.ts","../../core/src/crypto/dvtWire.ts","../../core/src/crypto/dvtPop.ts","../../core/src/actions/dvtOperator.ts","../../core/src/actions/policyRegistry.ts","../../core/src/actions/timelockController.ts","../../core/src/actions/account.ts","../../core/src/actions/faucet.ts","../../core/src/actions/x402.ts","../../core/src/actions/agent.ts","../../core/src/actions/channel.ts","../../core/src/actions/gTokenAuthorization.ts","../../core/src/actions/airAccount.ts","../../core/src/actions/airAccountFactory.ts","../../core/src/actions/airAccountExtension.ts","../../core/src/actions/validatorRouter.ts","../../core/src/actions/initConfig.ts","../../core/src/actions/agentRegistry.ts","../../core/src/actions/sessionKeyValidator.ts","../../core/src/actions/forceExit.ts","../../core/src/actions/committee.ts","../../core/src/crypto/dvtNodes.ts","../../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/src/hmac.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/_shortw_utils.ts","../../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/src/nist.ts","../../core/src/crypto/p256Guardian.ts","../../core/src/roles.ts","../../core/src/requirementChecker.ts","../../core/src/config/ContractConfigManager.ts","../../core/src/transports/helios.ts","../../core/src/utils/ens.ts"],"names":["encodeFunctionData","CORE_ADDRESSES","TOKEN_ADDRESSES","TEST_TOKEN_ADDRESSES","TEST_ACCOUNT_ADDRESSES","PAYMASTER_ADDRESSES","MONITORING_ADDRESSES","OFFICIAL_ADDRESSES","COMMUNITY_OWNERS","NodeType","TEST_COMMUNITIES","sepolia","createPublicClient","http","isAddress","encodeAbiParameters","keccak256","toBytes","decodeFunctionData","decodeAbiParameters","zeroAddress","abi","EntryPointVersion","erc20Abi","formatEther","parseEther","nc","pad","_32n","isBytes","abytes","concatBytes","utf8ToBytes","_0n","_1n","Fp","bitLen","createHasher","wbits","size","_2n","_3n","_4n","endo","a","randomBytes","isHex","tv5","c1","c2","Fr","Fp2","Fp6","Fp12","msg","G2psi","G2psi2","Fp4Square","x","encodePacked","parseAbiParameters","SlashLevel","toHex","numberToHex","concat","p256","FP_BYTES","writeFp","ABI","PolicyDecision","hash","AuthorizationState","ZERO_BYTES32","ZERO_ADDRESS","isAddressEqual","P256_GUARDIAN_SENTINEL","ib","sha256","RolePermissionLevel","parseAbi","custom","getEnsAddress","normalize","getEnsName","mainnet"],"mappings":"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","file":"chunk-AVRRHDW4.cjs","sourcesContent":["/**\n * AAStar Community Branding Configuration\n */\n\nexport const BRANDING = {\n  logo: \"https://raw.githubusercontent.com/jhfnetboy/MarkDownImg/main/img/202505031325963.png\",\n  icon: \"https://www.aastar.io/favicon.ico\",\n  colors: {\n    primary: \"#FF6B35\",\n    primaryLight: \"#FF8C42\",\n    secondary: \"#4A90E2\",\n    secondaryDark: \"#357ABD\",\n    success: \"#4CAF50\",\n    warning: \"#FFC107\",\n    error: \"#F44336\",\n    gray50: \"#F9FAFB\",\n    gray100: \"#F3F4F6\",\n    gray700: \"#374151\",\n    gray800: \"#1F2937\",\n    gray900: \"#111827\",\n  },\n} as const;\n\nexport const LINKS = {\n  main: \"https://aastar.io\",\n  airAccount: \"https://airAccount.aastar.io\",\n  superPaymaster: \"https://superpaymaster.aastar.io\",\n  demo: \"https://aastar.io/demo\",\n  github: \"https://github.com/AAStarCommunity\",\n  discord: \"https://discord.gg/aastar\",\n  twitter: \"https://twitter.com/AAStarCommunity\",\n} as const;\n","/**\n * DVT node configuration — the AAStar decentralized validator/relay/keeper nodes.\n *\n * Each node provides three capabilities behind one base URL:\n *  - BLS co-signing  (`POST /signature/sign`)\n *  - gasless relay   (`POST /v3/relay`)        — see {@link LaunchSaleAddresses.relayerUrls}\n *  - price keeper    (server-side, no client API)\n *\n * Config is grouped by environment so mainnet is a zero-code switch: fill `environments.mainnet`\n * and flip `active`. The SDK reads `environments[active]` for the node URLs + contract addresses.\n * Source of truth mirrors the DVT repo `deploy/sdk-dvt-config.testnet.json` (aastar-sdk#153).\n */\n\nexport interface DvtNode {\n  /** Base URL (no trailing slash); endpoints are appended (`/signature/sign`, `/v3/relay`, `/health`). */\n  url: string;\n  /** Node identity (bytes32); cross-checked against `GET /node/info`. */\n  nodeId: string;\n}\n\nexport interface DvtEnvironment {\n  chainId: number;\n  /** AAStarBLSAlgorithm validator. */\n  validator: `0x${string}`;\n  entryPoint: `0x${string}`;\n  dvtNodes: DvtNode[];\n  capabilities: { dvtSigning: boolean; relay: boolean; keeper: boolean };\n}\n\nexport interface DvtConfig {\n  /** Active environment key into {@link DvtConfig.environments}. */\n  active: string;\n  environments: Record<string, DvtEnvironment | null>;\n}\n\n/** Default DVT config. Testnet (Sepolia) is live; mainnet is a placeholder to fill + flip `active`. */\nexport const DVT_CONFIG: DvtConfig = {\n  active: \"sepolia\",\n  environments: {\n    sepolia: {\n      chainId: 11155111,\n      // v0.27.0 DVT-unification validator (algId 0x01; router.getAlgorithm(0x01) on-chain verified). #274/CC-12.\n      validator: \"0x539B9681aFd5BFbCaa655Fe4c6BdcFe1fa7864bC\",\n      entryPoint: \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\n      // NOTE: these are v0.20 fallback nodeIds. Under v0.27.0 operators re-register on 0x539B with\n      // nodeId=keccak256(EIP-2537 G1 pubkey); the live co-sign path reads nodeIds DYNAMICALLY, so these\n      // fallbacks refresh once operator re-registration completes (tracked in CC-12; DVT sign endpoint\n      // was mid-migration / 403 at sync time). Do NOT hand-guess the new ids — read them from the nodes.\n      dvtNodes: [\n        { url: \"https://dvt1.aastar.io\", nodeId: \"0x1f5e41c69465733eeb19341d95853ee6d9295a9e6698f5398d70e509be8f326d\" },\n        { url: \"https://dvt2.aastar.io\", nodeId: \"0xe3a4a3af3973b65bc95dd962e767e17592dfb331f3544209676271b188fd9f80\" },\n        { url: \"https://dvt3.aastar.io\", nodeId: \"0x96d64ba8240694153c757707732a11ff175380065ddacb6406094c9d5fa5cfce\" },\n      ],\n      capabilities: { dvtSigning: true, relay: true, keeper: true },\n    },\n    /**\n     * Local mirror of the Sepolia nodes, for running DVT-dependent E2E when the public tunnels\n     * are down (dvt1/2/3.aastar.io returned HTTP 530 on 2026-08-18 — the cloudflared tunnel, not\n     * the nodes: the services bind 127.0.0.1:3001-3003 and the tunnel container forwards to them).\n     *\n     * The `nodeId`s are IDENTICAL to `sepolia` ON PURPOSE, and that is the whole point: on-chain\n     * verification checks the aggregate against the PUBLIC KEYS REGISTERED ON THE VALIDATOR, so a\n     * local instance must sign with the ALREADY-REGISTERED BLS private keys. Freshly generated\n     * \"test\" keys would need registering on 0x539B — which is the shared production whole-set\n     * validator, so that would enlarge its node set for everyone. Reuse, never mint.\n     *\n     * Same key signing in two places does not conflict: BLS is deterministic over (key, message),\n     * so both produce byte-identical partials.\n     *\n     * Bring the nodes up (DVT repo, no tunnel/autoheal):\n     *   docker compose -f docker-compose.testnet.yml up dvt-node-1 dvt-node-2 dvt-node-3\n     * Then point the SDK at them for the run:\n     *   AASTAR_DVT_ENV=testnet-local pnpm exec tsx tests/regression/onchain-evidence/tier3-composite-e2e.ts\n     *\n     * Mirrors the DVT repo's `deploy/sdk-dvt-config.testnet.json` `environments` block.\n     */\n    \"testnet-local\": {\n      chainId: 11155111,\n      validator: \"0x539B9681aFd5BFbCaa655Fe4c6BdcFe1fa7864bC\",\n      entryPoint: \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\n      dvtNodes: [\n        { url: \"http://127.0.0.1:3001\", nodeId: \"0x1f5e41c69465733eeb19341d95853ee6d9295a9e6698f5398d70e509be8f326d\" },\n        { url: \"http://127.0.0.1:3002\", nodeId: \"0xe3a4a3af3973b65bc95dd962e767e17592dfb331f3544209676271b188fd9f80\" },\n        { url: \"http://127.0.0.1:3003\", nodeId: \"0x96d64ba8240694153c757707732a11ff175380065ddacb6406094c9d5fa5cfce\" },\n      ],\n      // relay:false — this environment exists for local co-signing only. Leaving it true would let\n      // getDvtRelayerUrlsForChain hand localhost URLs to the gasless relay pool for chain 11155111.\n      capabilities: { dvtSigning: true, relay: false, keeper: false },\n    },\n    // Mainnet not yet deployed — fill this block + set `active: \"mainnet\"` for a zero-code switch.\n    mainnet: null,\n  },\n};\n\n/**\n * Resolve the active (or named) DVT environment. Throws if that environment isn't configured.\n * Precedence: explicit `active` arg > `AASTAR_DVT_ENV` env var > `DVT_CONFIG.active` default.\n * The env var makes switching the DEFAULT a zero-release change (no need to pass `active` everywhere).\n */\nexport function getDvtConfig(active?: string): DvtEnvironment {\n  const envOverride = typeof process !== 'undefined' ? process.env?.AASTAR_DVT_ENV : undefined;\n  const key = active ?? envOverride ?? DVT_CONFIG.active;\n  const env = DVT_CONFIG.environments[key];\n  if (!env) throw new Error(`DVT config: environment \"${key}\" is not configured`);\n  return env;\n}\n\n/** Convenience: the relay base URLs for the active (or named) environment. */\nexport function getDvtRelayerUrls(active?: string): string[] {\n  return getDvtConfig(active).dvtNodes.map((n) => n.url);\n}\n\n/**\n * Relay base URLs for a specific chainId (the relay-capable DVT environment matching it).\n * Single source of truth for the gasless-relay pool — `TokenSaleClient` reads this instead of\n * duplicating URLs. Returns `[]` if no relay-capable environment matches the chain.\n */\nexport function getDvtRelayerUrlsForChain(chainId: number): string[] {\n  for (const env of Object.values(DVT_CONFIG.environments)) {\n    if (env && env.chainId === chainId && env.capabilities.relay) {\n      return env.dvtNodes.map((n) => n.url);\n    }\n  }\n  return [];\n}\n\n/** Per-node result of {@link checkDvtConnectivity}. */\nexport interface DvtNodeHealth {\n  url: string;\n  nodeId: string;\n  /** All three checks passed. */\n  ok: boolean;\n  reachable: boolean;\n  healthOk: boolean;\n  relayOk: boolean;\n  nodeIdMatch: boolean;\n  capabilities?: Record<string, boolean>;\n  errors: string[];\n}\n\n/**\n * Startup connectivity self-test (aastar-sdk#153): for each node verify `GET /health` (status ok +\n * capabilities), `GET /node/info` (nodeId matches config), and `GET /relay/health` (status ok).\n * Never throws — returns one result per node so the caller can warn / fail over.\n *\n * @param env the environment object, an environment key, or undefined (active).\n * @param fetchImpl optional fetch (for tests); defaults to global fetch.\n */\nexport async function checkDvtConnectivity(\n  env?: DvtEnvironment | string,\n  fetchImpl: typeof fetch = fetch,\n): Promise<DvtNodeHealth[]> {\n  const e = typeof env === \"object\" ? env : getDvtConfig(env);\n  const getJson = async (url: string) => {\n    const res = await fetchImpl(url);\n    return res.json() as Promise<any>;\n  };\n  return Promise.all(\n    e.dvtNodes.map(async (node): Promise<DvtNodeHealth> => {\n      const base = node.url.replace(/\\/$/, \"\");\n      const r: DvtNodeHealth = {\n        url: node.url, nodeId: node.nodeId, ok: false,\n        reachable: false, healthOk: false, relayOk: false, nodeIdMatch: false, errors: [],\n      };\n      try {\n        const h = await getJson(`${base}/health`);\n        r.reachable = true;\n        r.capabilities = Object.fromEntries((h.capabilities ?? []).map((c: any) => [c.name, !!c.enabled]));\n        r.healthOk = h.status === \"ok\";\n        if (!r.healthOk) r.errors.push(`/health status=${h.status}`);\n        if (e.capabilities.relay && !r.capabilities.relay) r.errors.push(\"/health: relay capability disabled\");\n      } catch (err: any) {\n        r.errors.push(`/health unreachable: ${err?.message ?? err}`);\n        return r; // node down — skip the rest\n      }\n      try {\n        const info = await getJson(`${base}/node/info`);\n        r.nodeIdMatch = String(info.nodeId ?? \"\").toLowerCase() === node.nodeId.toLowerCase();\n        if (!r.nodeIdMatch) r.errors.push(`/node/info nodeId mismatch (got ${info.nodeId})`);\n      } catch (err: any) {\n        r.errors.push(`/node/info: ${err?.message ?? err}`);\n      }\n      try {\n        const rh = await getJson(`${base}/relay/health`);\n        r.relayOk = rh.status === \"ok\";\n        if (!r.relayOk) r.errors.push(`/relay/health status=${rh.status}`);\n      } catch (err: any) {\n        r.errors.push(`/relay/health: ${err?.message ?? err}`);\n      }\n      r.ok = r.healthOk && r.relayOk && r.nodeIdMatch;\n      return r;\n    }),\n  );\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"GTOKEN_STAKING\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IGTokenStaking\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MYSBT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IMySBT\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SUPER_PAYMASTER\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"UPGRADE_INTERFACE_VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"batchUpdateGlobalReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"users\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"newScores\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"blacklistNonce\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"blsAggregator\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"configureRole\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IRegistry.RoleConfig\",\n          \"components\": [\n            {\n              \"name\": \"minStake\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"ticketPrice\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"slashThreshold\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashBase\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashInc\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashMax\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"exitFeePercent\",\n              \"type\": \"uint16\",\n              \"internalType\": \"uint16\"\n            },\n            {\n              \"name\": \"isActive\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"minExitFee\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"description\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            },\n            {\n              \"name\": \"owner\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"roleLockDuration\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"creditTierConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"exitRole\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getCommunityByENS\",\n      \"inputs\": [\n        {\n          \"name\": \"ensName\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getCommunityByName\",\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getCreditLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getEffectiveStake\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRoleConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IRegistry.RoleConfig\",\n          \"components\": [\n            {\n              \"name\": \"minStake\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"ticketPrice\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"slashThreshold\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashBase\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashInc\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashMax\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"exitFeePercent\",\n              \"type\": \"uint16\",\n              \"internalType\": \"uint16\"\n            },\n            {\n              \"name\": \"isActive\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"minExitFee\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"description\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            },\n            {\n              \"name\": \"owner\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"roleLockDuration\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRoleStake\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRoleUserCount\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getUserRoles\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"globalReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hasRole\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initialize\",\n      \"inputs\": [\n        {\n          \"name\": \"_owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_gtokenStaking\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_mysbt\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isReputationSource\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"levelThresholds\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"markProposalExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proxiableUUID\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerRole\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"safeMintForRole\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setBLSAggregator\",\n      \"inputs\": [\n        {\n          \"name\": \"_aggregator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setCreditTier\",\n      \"inputs\": [\n        {\n          \"name\": \"level\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"limit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setLevelThresholds\",\n      \"inputs\": [\n        {\n          \"name\": \"thresholds\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMySBT\",\n      \"inputs\": [\n        {\n          \"name\": \"_mysbt\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setReputationSource\",\n      \"inputs\": [\n        {\n          \"name\": \"source\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"active\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setStaking\",\n      \"inputs\": [\n        {\n          \"name\": \"_staking\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSuperPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"_sp\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"syncExitFees\",\n      \"inputs\": [\n        {\n          \"name\": \"roles\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"syncStakeFromStaking\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"newAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateOperatorBlacklist\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"users\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"statuses\",\n          \"type\": \"bool[]\",\n          \"internalType\": \"bool[]\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"upgradeToAndCall\",\n      \"inputs\": [\n        {\n          \"name\": \"newImplementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSAggregatorUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAgg\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAgg\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BurnExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CreditTierUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"level\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"creditLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GlobalReputationUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newScore\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MySBTContractUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldMySBT\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newMySBT\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProposalMarkedExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"by\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ReputationSourceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"source\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"isActive\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RoleConfigured\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct IRegistry.RoleConfig\",\n          \"components\": [\n            {\n              \"name\": \"minStake\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"ticketPrice\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"slashThreshold\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashBase\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashInc\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"slashMax\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"exitFeePercent\",\n              \"type\": \"uint16\",\n              \"internalType\": \"uint16\"\n            },\n            {\n              \"name\": \"isActive\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"minExitFee\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"description\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            },\n            {\n              \"name\": \"owner\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"roleLockDuration\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RoleExited\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"exitFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RoleGranted\",\n      \"inputs\": [\n        {\n          \"name\": \"role\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RoleRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"burnAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RoleRevoked\",\n      \"inputs\": [\n        {\n          \"name\": \"role\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SBTBurnFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SBTStatusSyncFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakingContractUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldStaking\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newStaking\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SuperPaymasterUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldSP\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newSP\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SyncFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"role\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Upgraded\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BLSFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BLSNotConfigured\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BLSProofRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BatchTooLarge\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CallerNotCommunity\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1967InvalidImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1967NonPayable\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedInnerCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FeeTooHigh\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientConsensus\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientStake\",\n      \"inputs\": [\n        {\n          \"name\": \"provided\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddr\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidParam\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidProposalId\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"LenMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"LockNotMet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ProposalAlreadyExecuted\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RoleAlreadyGranted\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RoleNotConfigured\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"isActive\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RoleNotGranted\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SPNotSet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ThreshNotAscending\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TooManyLevels\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UUPSUnauthorizedCallContext\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UUPSUnsupportedProxiableUUID\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Unauthorized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnauthorizedSource\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"cap_\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"allowance\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approve\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"balanceOf\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"burn\",\n      \"inputs\": [\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"burnFrom\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cap\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"decimals\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"mint\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"name\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"remainingMintableSupply\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"symbol\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalSupply\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transfer\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferFrom\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Approval\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Transfer\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20ExceededCap\",\n      \"inputs\": [\n        {\n          \"name\": \"increasedSupply\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"cap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InsufficientAllowance\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"allowance\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"needed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"balance\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"needed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidApprover\",\n      \"inputs\": [\n        {\n          \"name\": \"approver\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidCap\",\n      \"inputs\": [\n        {\n          \"name\": \"cap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidReceiver\",\n      \"inputs\": [\n        {\n          \"name\": \"receiver\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidSender\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidSpender\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    }\n  ],\n  \"bytecode\": \"0x60a0604052346103c657610e076020813803918261001c816103ca565b9384928339810103126103c6575161003460406103ca565b90601082526f23b7bb32b93730b731b2902a37b5b2b760811b602083015261005c60406103ca565b600681526523aa37b5b2b760d11b602082015282519091906001600160401b0381116102cc57600354600181811c911680156103bc575b60208210146102ae57601f811161034e575b506020601f82116001146102eb57819293945f926102e0575b50508160011b915f199060031b1c1916176003555b81516001600160401b0381116102cc57600454600181811c911680156102c2575b60208210146102ae57601f8111610240575b50602092601f82116001146101df57928192935f926101d4575b50508160011b915f199060031b1c1916176004555b80156101c15760805233156101ae5760058054336001600160a01b03198216811790925560405191906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3610a1790816103f082396080518181816104db01528181610559015261058e0152f35b631e4fbdf760e01b5f525f60045260245ffd5b63392e1e2760e01b5f525f60045260245ffd5b015190505f80610120565b601f1982169360045f52805f20915f5b8681106102285750836001959610610210575b505050811b01600455610135565b01515f1960f88460031b161c191690555f8080610202565b919260206001819286850151815501940192016101ef565b818111156101065760045f52601f820160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b602084106102a6575b81601f9101920160051c03905f5b828110610299575050610106565b5f8282015560010161028b565b5f915061027d565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100f4565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100be565b601f1982169060035f52805f20915f5b8181106103365750958360019596971061031e575b505050811b016003556100d3565b01515f1960f88460031b161c191690555f8080610310565b9192602060018192868b0151815501940192016102fb565b818111156100a55760035f52601f820160051c7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b602084106103b4575b81601f9101920160051c03905f5b8281106103a75750506100a5565b5f82820155600101610399565b5f915061038b565b90607f1690610093565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102cc5760405256fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146106dc57508063095ea7b31461063457806318160ddd1461061757806323b872dd146105df578063313ce567146105c4578063349f0b901461057c578063355274ea1461054257806340c10f191461045657806342966c681461043957806354fd4d50146103ce57806370a0823114610397578063715018a61461034557806379cc6790146103135780638da5cb5b146102ed57806395d89b41146101e9578063a9059cbb146101b8578063dd62ed3e146101645763f2fde38b146100e2575f80fd5b34610160576020366003190112610160576001600160a01b036101036107be565b61010b61095f565b16801561014d576001600160a01b03600554828219821617600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b346101605760403660031901126101605761017d6107be565b6001600160a01b0361018d6107d4565b91165f5260016020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b34610160576040366003190112610160576101de6101d46107be565b60243590336108b5565b602060405160018152f35b34610160575f366003190112610160576040515f6004548060011c906001811680156102e3575b6020831081146102cf578285529081156102ab575060011461024d575b6102498361023d818503826107ea565b60405191829182610794565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106102915750909150810160200161023d61022d565b919260018160209254838588010152019101909291610279565b60ff191660208086019190915291151560051b8401909101915061023d905061022d565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610210565b34610160575f3660031901126101605760206001600160a01b0360055416604051908152f35b346101605760403660031901126101605761034361032f6107be565b6024359061033e82338361080c565b610986565b005b34610160575f3660031901126101605761035d61095f565b5f6001600160a01b0360055481198116600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610160576020366003190112610160576001600160a01b036103b86107be565b165f525f602052602060405f2054604051908152f35b34610160575f36600319011261016057604051604081019080821067ffffffffffffffff8311176104255761024991604052600c81526b23aa37b5b2b716991718971960a11b602082015260405191829182610794565b634e487b7160e01b5f52604160045260245ffd5b346101605760203660031901126101605761034360043533610986565b346101605760403660031901126101605761046f6107be565b6001600160a01b036024359161048361095f565b1690811561052f576002549080820180921161051b5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a37f000000000000000000000000000000000000000000000000000000000000000060025481811161050657005b63279e7e1560e21b5f5260045260245260445ffd5b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b34610160575f3660031901126101605760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610160575f366003190112610160577f0000000000000000000000000000000000000000000000000000000000000000600254810390811161051b57602090604051908152f35b34610160575f36600319011261016057602060405160128152f35b34610160576060366003190112610160576101de6105fb6107be565b6106036107d4565b6044359161061283338361080c565b6108b5565b34610160575f366003190112610160576020600254604051908152f35b346101605760403660031901126101605761064d6107be565b6024359033156106c9576001600160a01b03169081156106b657335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b34610160575f366003190112610160575f6003548060011c9060018116801561078a575b6020831081146102cf578285529081156102ab575060011461072c576102498361023d818503826107ea565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b8082106107705750909150810160200161023d61022d565b919260018160209254838588010152019101909291610758565b91607f1691610700565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361016057565b602435906001600160a01b038216820361016057565b90601f8019910116810190811067ffffffffffffffff82111761042557604052565b6001600160a01b03909291921691825f52600160205260405f206001600160a01b0382165f5260205260405f2054925f19840361084a575b50505050565b8284106108915780156106c9576001600160a01b038216156106b6575f5260016020526001600160a01b0360405f2091165f5260205260405f20910390555f808080610844565b506001600160a01b038391637dc7a0d960e11b5f521660045260245260445260645ffd5b6001600160a01b031690811561094c576001600160a01b031691821561052f57815f525f60205260405f205481811061093357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b6001600160a01b0360055416330361097357565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561094c57805f525f60205260405f20548381106109f0576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffdfea164736f6c6343000821000a\"\n}\n","[\n  {\n    \"type\": \"constructor\",\n    \"inputs\": [\n      {\n        \"name\": \"cap_\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"factory_\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"CANCEL_AUTHORIZATION_TYPEHASH\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"DOMAIN_SEPARATOR\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MAX_AUTH_VALIDITY\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"allowance\",\n    \"inputs\": [\n      {\n        \"name\": \"owner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"spender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"approve\",\n    \"inputs\": [\n      {\n        \"name\": \"spender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"authorizationState\",\n    \"inputs\": [\n      {\n        \"name\": \"authorizer\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"nonce\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\",\n        \"internalType\": \"enum GTokenAuthorization.AuthorizationState\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"balanceOf\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"burn\",\n    \"inputs\": [\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"burnFrom\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelAuthorization\",\n    \"inputs\": [\n      {\n        \"name\": \"authorizer\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"nonce\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"signature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cap\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"decimals\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"eip712Domain\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"fields\",\n        \"type\": \"bytes1\",\n        \"internalType\": \"bytes1\"\n      },\n      {\n        \"name\": \"name\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      },\n      {\n        \"name\": \"version\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      },\n      {\n        \"name\": \"chainId\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"verifyingContract\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"extensions\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"factory\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"contract IxPNTsFactory\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"mint\",\n    \"inputs\": [\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"amount\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"mySBT\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"contract ISBT\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"name\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"owner\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"receiveWithAuthorization\",\n    \"inputs\": [\n      {\n        \"name\": \"from\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"validAfter\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"validBefore\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"nonce\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"xPNTsToken\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"signature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"remainingMintableSupply\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"renounceOwnership\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"setMySBT\",\n    \"inputs\": [\n      {\n        \"name\": \"mySBT_\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"symbol\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"totalSupply\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transfer\",\n    \"inputs\": [\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferFrom\",\n    \"inputs\": [\n      {\n        \"name\": \"from\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferOwnership\",\n    \"inputs\": [\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferWithAuthorization\",\n    \"inputs\": [\n      {\n        \"name\": \"from\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"validAfter\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"validBefore\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"nonce\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"xPNTsToken\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"signature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"version\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"pure\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"Approval\",\n    \"inputs\": [\n      {\n        \"name\": \"owner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"spender\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"AuthorizationCanceled\",\n    \"inputs\": [\n      {\n        \"name\": \"authorizer\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"nonce\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"AuthorizationUsed\",\n    \"inputs\": [\n      {\n        \"name\": \"authorizer\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"nonce\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"EIP712DomainChanged\",\n    \"inputs\": [],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"OwnershipTransferred\",\n    \"inputs\": [\n      {\n        \"name\": \"previousOwner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"newOwner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"Transfer\",\n    \"inputs\": [\n      {\n        \"name\": \"from\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AuthorizationExpired\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AuthorizationNotYetValid\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AuthorizationUsedOrCanceled\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AuthorizationWindowInvalid\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AuthorizationWindowTooLong\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CallerMustBeRecipient\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20ExceededCap\",\n    \"inputs\": [\n      {\n        \"name\": \"increasedSupply\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"cap\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InsufficientAllowance\",\n    \"inputs\": [\n      {\n        \"name\": \"spender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"allowance\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"needed\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InsufficientBalance\",\n    \"inputs\": [\n      {\n        \"name\": \"sender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"balance\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"needed\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InvalidApprover\",\n    \"inputs\": [\n      {\n        \"name\": \"approver\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InvalidCap\",\n    \"inputs\": [\n      {\n        \"name\": \"cap\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InvalidReceiver\",\n    \"inputs\": [\n      {\n        \"name\": \"receiver\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InvalidSender\",\n    \"inputs\": [\n      {\n        \"name\": \"sender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ERC20InvalidSpender\",\n    \"inputs\": [\n      {\n        \"name\": \"spender\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidShortString\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"OwnableInvalidOwner\",\n    \"inputs\": [\n      {\n        \"name\": \"owner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"OwnableUnauthorizedAccount\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"RecipientNotInProtocol\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SBTAlreadySet\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"StringTooLong\",\n    \"inputs\": [\n      {\n        \"name\": \"str\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ]\n  }\n]","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_gtoken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"GTOKEN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IERC20\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_TOTAL_STAKE\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"authorizedSlashers\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"availableBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"balanceOf\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getLockedStake\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getStakeInfo\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IGTokenStaking.StakeInfo\",\n          \"components\": [\n            {\n              \"name\": \"amount\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"slashedAmount\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"stakedAt\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"unstakeRequestedAt\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getUserRoleLocks\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct IGTokenStaking.RoleLock[]\",\n          \"components\": [\n            {\n              \"name\": \"amount\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"ticketPrice\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"lockedAt\",\n              \"type\": \"uint48\",\n              \"internalType\": \"uint48\"\n            },\n            {\n              \"name\": \"roleId\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"metadata\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hasRoleLock\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"lockStakeWithTicket\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"stakeAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"ticketPrice\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"payer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"lockId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"previewExitFee\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"fee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"netAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"roleExitConfigs\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"feePercent\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minFee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"roleLocks\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"ticketPrice\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"lockedAt\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"metadata\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAuthorizedSlasher\",\n      \"inputs\": [\n        {\n          \"name\": \"slasher\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"authorized\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRoleExitFee\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"feePercent\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minFee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTreasury\",\n      \"inputs\": [\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slash\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"slashedAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slashByDVT\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"penaltyAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"stakes\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"slashedAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"stakedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"unstakeRequestedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"topUpStake\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"stakeAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"payer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalStaked\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"treasury\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unlockAndTransfer\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"netAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"userActiveRoles\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RoleExitFeeUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"feePercent\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlasherAuthorizationUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"slasher\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"authorized\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakeLocked\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"ticketPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakeSlashed\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakeUnlocked\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"grossAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"exitFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"netAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SyncFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"registry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TicketBurned\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ticketPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"payer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TreasuryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"UserSlashed\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressInsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AmountExceedsUint128\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedInnerCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FeeTooHigh\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientStake\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoLockFound\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotAuthorizedSlasher\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyRegistry\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyRegistryOrAuthorized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RoleAlreadyLocked\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RoleNotLocked\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TotalStakeExceedsCap\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Unauthorized\",\n      \"inputs\": []\n    }\n  ],\n  \"bytecode\": \"0x60c03461019e57601f61253038819003918201601f19168301916001600160401b038311848410176101a25780849260609460405283398101031261019e57610047816101b6565b906100606040610059602084016101b6565b92016101b6565b9060015f55331561018b5760018054336001600160a01b0319821681179092556040519491906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36001600160a01b031690811561017c576001600160a01b031690811561017c576001600160a01b0383161561017c57608052600280546001600160a01b03191691909117905560a05261236590816101cb82396080518181816109c701528181610abb01528181610edb0152818161127f015281816115530152818161158e01528181611bef0152611c58015260a0518181816103c9015281816105ca01528181610cab0152818161121e015281816113b2015281816117c0015281816120e101526121b40152f35b63e6c4247b60e01b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361019e5756fe6080806040526004361015610012575f80fd5b5f3560e01c90816306433b1b146117a35750806316934fc41461173d57806330b039ee146116aa57806336cb2b821461162c578063374e4d73146113845780634bcb80a2146111d957806354fd4d501461118657806361d027b314611160578063678b3ee214610c5a5780636d265c1114610c0b5780636da12d0c14610bb657806370a0823114610b7e578063715018a614610b2c5780637c50309f14610adf5780637f6b337b14610a9c578063817b1cd214610a7f57806384747ba814610a5a5780638da5cb5b14610a345780638f7648481461087f57806391b65cd61461065657806394e2b21e146106235780639e9093da1461058b578063a0821be314610567578063aed2d9081461052a578063b4d81fb314610476578063d64c66aa146103a5578063f0f4426014610317578063f2fde38b146102995763f50102c01461015b575f80fd5b346102955760403660031901126102955760806001600160a01b0361017e6117e4565b5f606060405161018d8161187e565b828152826020820152826040820152015216805f52600460205260405f206024355f5260205260405f2090604051906101c582611862565b82546001600160801b0381168352841c6020830152610204600365ffffffffffff600186015416946040850195865260028101546060860152016118bc565b848301525f52600360205265ffffffffffff6001600160801b0360405f209260405161022f8161187e565b8454815260606003600187015496876020850152600281015460408501520154910152511692511660606040516102658161187e565b848152602081019384526040810192835201915f8352604051938452516020840152516040830152516060820152f35b5f80fd5b34610295576020366003190112610295576001600160a01b036102ba6117e4565b6102c2611f60565b168015610304576001600160a01b03600154828219821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b34610295576020366003190112610295576001600160a01b036103386117e4565b610340611f60565b16801561039657600254816001600160a01b0382167f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a5f80a373ffffffffffffffffffffffffffffffffffffffff191617600255005b63e6c4247b60e01b5f5260045ffd5b34610295576060366003190112610295576004356024356044356001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580610461575b610453576107d08211610444577fc80e6b66eb58558814d2cbd504bae3d3ed4eb316287800124c793081728599ad91604091845f526006602052806001845f20848155015582519182526020820152a2005b63cd4e616760e01b5f5260045ffd5b6282b42960e81b5f5260045ffd5b506001600160a01b03600154163314156103f2565b346102955760403660031901126102955760406104916117e4565b6001600160a01b0360243591165f526004602052815f20815f526020526001600160801b03825f205416905f526006602052815f20906127106104f08451936104d985611832565b6020600182549283885201549501948552836119f2565b049151808310610522575b5080821161051a575b8161050e91611a05565b82519182526020820152f35b905080610504565b9150836104fb565b34610295576020366003190112610295576001600160a01b0361054b6117e4565b165f526008602052602060ff60405f2054166040519015158152f35b34610295576020366003190112610295576105806117e4565b5060206040515f8152f35b346102955760a0366003190112610295576105a46117e4565b608435906001600160a01b0382168203610295576105c0611f87565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036106145760209161060891606435906044359060243590611a9e565b60015f55604051908152f35b6310f5403960e31b5f5260045ffd5b34610295576020366003190112610295576004355f5260066020526040805f206001815491015482519182526020820152f35b34610295576020366003190112610295576001600160a01b036106776117e4565b16805f52600560205260405f2090604051808360208295549384815201905f5260205f20925f5b8181106108665750506106b39250038361189a565b8151916106bf83611a1f565b926106cd604051948561189a565b8084526106dc601f1991611a1f565b015f5b8181106108305750505f5b815181101561078057600190835f52600460205260405f2061070c8285611a57565b515f5260205260405f2061075f60036040519261072884611862565b80546001600160801b038116855260801c602085015265ffffffffffff8682015416604085015260028101546060850152016118bc565b608082015261076e8287611a57565b526107798186611a57565b50016106ea565b836040518091602082016020835281518091526040830190602060408260051b8601019301915f905b8282106107b857505050500390f35b919360019193955060206108208192603f198a820301865260a060808a516001600160801b0381511684526001600160801b0386820151168685015265ffffffffffff604082015116604085015260608101516060850152015191816080820152019061195c565b96019201920185949391926107a9565b60209060405161083f81611862565b5f81525f838201525f60408201525f606082015260606080820152828288010152016106df565b845483526001948501948794506020909301920161069e565b34610295576080366003190112610295576108986117e4565b60443560243560643567ffffffffffffffff8111610295576108be903690600401611980565b6108c9949194611f87565b335f52600860205260ff60405f20541615610a25576001600160a01b03821690815f52600460205260405f20845f5260205260405f20906001600160801b03825416868110610a16576109276001600160801b039182891690611a37565b166001600160801b0319835416178255825f52600360205260405f2096875497878910610a16576001600160801b037f6951689eba99e77d7e3b622f276c0ad8e36126c3c510f181b86d05d685eaa074948261099a8b610a019d60016109f99701610993838254611a12565b9055611a05565b90556109a88a600754611a05565b6007555416978815610a07575b6109eb816001600160a01b03600254167f000000000000000000000000000000000000000000000000000000000000000061205c565b604051938493429285611a6b565b0390a26121a8565b60015f55005b610a118888611fe0565b6109b5565b6378de4a6960e11b5f5260045ffd5b63a4bc77a760e01b5f5260045ffd5b34610295575f3660031901126102955760206001600160a01b0360015416604051908152f35b34610295575f3660031901126102955760206040516a115eec47f6cf7e350000008152f35b34610295575f366003190112610295576020600754604051908152f35b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610295576040366003190112610295576001600160a01b03610b006117e4565b165f52600460205260405f206024355f5260205260206001600160801b0360405f205416604051908152f35b34610295575f36600319011261029557610b44611f60565b5f6001600160a01b0360015481198116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610295576020366003190112610295576001600160a01b03610b9f6117e4565b165f526003602052602060405f2054604051908152f35b3461029557604036600319011261029557610bcf6117e4565b6001600160a01b0360243591165f52600560205260405f20805482101561029557602091610bfc916119ae565b90549060031b1c604051908152f35b34610295576040366003190112610295576001600160a01b03610c2c6117e4565b165f52600460205260405f206024355f5260205260206001600160801b0360405f2054161515604051908152f35b3461029557606036600319011261029557610c736117e4565b60243560443567ffffffffffffffff811161029557610c96903690600401611980565b610ca1939193611f87565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580611149575b61113a576001600160a01b03821691825f52600360205260405f20908154948581115f146111345750845b85610d4e575b5050506020937f6951689eba99e77d7e3b622f276c0ad8e36126c3c510f181b86d05d685eaa07491610d3f60405192839242918885611a6b565b0390a260015f55604051908152f35b85610d6791600185989796949501610993838254611a12565b8555610d7584600754611a05565b600755825f526005602052610d8f8460405f209654611a12565b855490610d9b82611a1f565b96610da9604051988961189a565b828852601f19610db884611a1f565b013660208a0137610dc883611a1f565b92610dd6604051948561189a565b808452610de5601f1991611a1f565b0136602085013781158015610f66575b505050835f52600560205260405f20955f955b875480881015610ebf57865f52600460205260405f20610e28898b6119ae565b90549060031b1c5f526020526001600160801b0360405f205416155f14610eac575f198101908111610e9857610e5e90896119ae565b90549060031b1c610e88610e72898b6119ae565b819391549060031b91821b915f19901b19161790565b9055610e9388611fa5565b610e08565b634e487b7160e01b5f52601160045260245ffd5b50955f198114610e985760010195610e08565b50939791955093919550610eff836001600160a01b03600254167f000000000000000000000000000000000000000000000000000000000000000061205c565b5f5b8451811015610f335780610f2d610f1a60019388611a57565b51610f25838a611a57565b51908b6121a8565b01610f01565b50955090939092509050837f6951689eba99e77d7e3b622f276c0ad8e36126c3c510f181b86d05d685eaa0746020610d05565b9296989791949590935f965f5b8654811015611043578b90845f52600460205260405f20610f94828a6119ae565b90549060031b1c5f5260205260405f2099610fba6001600160801b038c541693846119f2565b8861102f576001936001600160801b03928d8d610ff7940492808411611027575b610fe9869182861690611a37565b168519825416179055611a12565b9a611002838b6119ae565b90549060031b1c611013848a611a57565b525416611020828d611a57565b5201610f73565b925082610fdb565b634e487b7160e01b5f52601260045260245ffd5b5096909992935061105991955097939782611a05565b9487545b8015158061112b575b1561111857855f52600460205260405f205f19820190828211610e985761108d828c6119ae565b90549060031b1c5f5260205260405f20906001600160801b0382541691826110c1575b5050508015610e98575f190161105d565b906110ff6001600160801b03611105959b93858511155f1461110e57816110ed86975b82891690611a37565b1682198254161781555416918c611a57565b52611a05565b958a80806110b0565b816110ed876110e4565b5093945094909550959095878080610df5565b50861515611066565b94610cff565b6338796dcd60e11b5f5260045ffd5b50335f52600860205260ff60405f20541615610cd4565b34610295575f3660031901126102955760206001600160a01b0360025416604051908152f35b34610295575f366003190112610295576111d56040516111a760408261189a565b600d81526c05374616b696e672d342e322e3609c1b602082015260405191829160208352602083019061195c565b0390f35b34610295576080366003190112610295576111f26117e4565b604435906024356064356001600160a01b038116810361029557611214611f87565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610614576001600160a01b03831690815f52600460205260405f20835f5260205260405f20906001600160801b038254161561137557856112a39130907f0000000000000000000000000000000000000000000000000000000000000000612248565b6112af85600754611a12565b946a115eec47f6cf7e350000008611611366576001600160801b0381166001600160801b0383541601926001600160801b038411610e98577fe4c76dcad70ec0bf6b921afbe6bb7b4950aedf705245ec68942ea9ecf00f8a0c60608693610a01996001600160801b038098168819885416178755845f52600360205260405f2061133a838254611a12565b905560075565ffffffffffff6001870154166040519182525f60208301526040820152a35416916121a8565b6301d0b12b60e11b5f5260045ffd5b63454c458960e11b5f5260045ffd5b346102955760403660031901126102955761139d6117e4565b6024356113a8611f87565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610614576001600160a01b038216805f52600460205260405f20825f5260205260405f209165ffffffffffff6001840154161561161d5760209381610608937f9cadbc33680e22a2f04ed8eb0d7cc7f218ee9231b3473ed05904c7ec5e2d483d6001600160801b03611544975416825f526004895260405f20845f528952600360405f205f81555f60018201555f60028201550161147281546117fa565b90816115db575b50506114858486611fe0565b825f526003895260405f2061149b828254611a05565b9055825f526003895260405f2054156115c6575b6114bb81600754611a05565b600755835f526006895260405f206127106114f2604051926114dc84611832565b8c600182549283875201549401938452846119f2565b0490518082106115be575b508181116115b7575b6115108183611a05565b9889928261157c575b8361154c575b6040519384934292859094939260609260808301968352602083015260408201520152565b0390a36120d7565b61157784897f000000000000000000000000000000000000000000000000000000000000000061205c565b61151f565b6115b2836001600160a01b03600254167f000000000000000000000000000000000000000000000000000000000000000061205c565b611519565b5080611506565b90508a6114fd565b825f52600389525f60016040822001556114af565b81601f5f93116001146115f25750555b8980611479565b8183528b832061160e91601f0160051c841901906001016119d7565b808252818b81209155556115eb565b63f90e998d60e01b5f5260045ffd5b34610295576040366003190112610295576116456117e4565b602435908115158092036102955760206001600160a01b037fe0a56452e1e2337147f048c582bc931e7c341d221b44961f32dec8b73fd669bc92611687611f60565b1692835f526008825260405f2060ff1981541660ff8316179055604051908152a2005b34610295576040366003190112610295576001600160a01b036116cb6117e4565b165f52600460205260405f206024355f5260205260405f2080546111d565ffffffffffff600184015416926117076003600283015492016118bc565b9060405194846001600160801b03879616865260801c60208601526040850152606084015260a0608084015260a083019061195c565b34610295576020366003190112610295576001600160a01b0361175e6117e4565b165f52600360205260405f2080546111d56001830154926003600282015491015490604051948594859094939260609260808301968352602083015260408201520152565b34610295575f366003190112610295576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361029557565b90600182811c92168015611828575b602083101461181457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611809565b6040810190811067ffffffffffffffff82111761184e57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761184e57604052565b6080810190811067ffffffffffffffff82111761184e57604052565b90601f8019910116810190811067ffffffffffffffff82111761184e57604052565b9060405191825f8254926118cf846117fa565b808452936001811690811561193a57506001146118f6575b506118f49250038361189a565b565b90505f9291925260205f20905f915b81831061191e5750509060206118f4928201015f6118e7565b6020919350806001915483858901015201910190918492611905565b9050602092506118f494915060ff191682840152151560051b8201015f6118e7565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f840112156102955782359167ffffffffffffffff8311610295576020838186019501011161029557565b80548210156119c3575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b5f5b8281106119e557505050565b5f828201556001016119d9565b81810292918115918404141715610e9857565b91908203918211610e9857565b91908201809211610e9857565b67ffffffffffffffff811161184e5760051b60200190565b906001600160801b03809116911603906001600160801b038211610e9857565b80518210156119c35760209160051b010190565b94939280604093608093885260606020890152816060890152838801375f828288010152601f8019910116850101930152565b9390809392611aad8482611a12565b93811594851594859182611c81575b80611be4575b5082611b9d575b50611b55575b505050611b1d575b611b1757600754604051916001600160a01b0360208401941684526040830152436060830152608082015260808152611b1160a08261189a565b51902090565b50505f90565b6001600160a01b0383165f52600460205260405f20825f52602052611b506001600160801b0360405f20541683856121a8565b611ad7565b60405191825260208201524260408201527fe4c76dcad70ec0bf6b921afbe6bb7b4950aedf705245ec68942ea9ecf00f8a0c60606001600160a01b03881692a3825f80611acf565b846001600160a01b036040519285845216917ffd8455407fc2a5f2a6f1ea576385d9201fe1b9bd1b3ecb8bdab57d320cfbb47560206001600160a01b038d1692a45f611ac9565b8215611c4457611c177f000000000000000000000000000000000000000000000000000000000000000091308484612248565b8380611c27575b50505b5f611ac2565b611c3d916001600160a01b03600254169061205c565b5f83611c1e565b50611c7c836001600160a01b0360025416837f0000000000000000000000000000000000000000000000000000000000000000612248565b611c21565b915093506001600160a01b038816805f52600460205260405f20885f526020526001600160801b0360405f205416611f51576001600160801b038411611f42576001600160801b038311611f4257611cdb84600754611a12565b6a115eec47f6cf7e35000000811161136657600755805f52600360205260405f20611d07858254611a12565b9055805f526003602052600260405f20015415611f2c575b60405190611d2c82611862565b6001600160801b038516825288600360208401936001600160801b03871685526040810165ffffffffffff42168152606082019084825260209660405195611d74898861189a565b5f808852608086810198895289825260048b526040808320938352928b5291902094519151901b6fffffffffffffffffffffffffffffffff19166001600160801b03919091161783555160018301805465ffffffffffff191665ffffffffffff9290921691909117905551600282015591518051919092019167ffffffffffffffff821161184e57611e0683546117fa565b601f8111611eeb575b508490601f8311600114611e8457600595949392915f9183611e79575b50508160011b915f199060031b1c19161790555b5f525260405f20938454916801000000000000000083101561184e5788611e72610e7285839960018c980181556119ae565b9055611abc565b015190505f80611e2c565b90601f19831691845f52865f20925f5b818110611ed457509160019391856005999897969410611ebc575b505050811b019055611e40565b01515f1960f88460031b161c191690555f8080611eaf565b929388600181928786015181550195019301611e94565b82811115611e0f57611f1e90845f52865f2090601f850160051c90888610611f24575b601f82910160051c0391016119d7565b5f611e0f565b5f9150611f0e565b805f52600360205242600260405f200155611d1f565b6354ada05560e01b5f5260045ffd5b631c9493ab60e31b5f5260045ffd5b6001600160a01b03600154163303611f7457565b63118cdaa760e01b5f523360045260245ffd5b60025f5414611f965760025f55565b633ee5aeb560e01b5f5260045ffd5b80548015611fcc575f190190611fbb82826119ae565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b03165f52600560205260405f20905f5b825480821015612056578261200c83866119ae565b90549060031b1c146120215750600101611ff7565b5f1981019392508311610e985761204f610e726120416118f495856119ae565b90549060031b1c92846119ae565b9055611fa5565b50505050565b6118f4926001600160a01b036040519363a9059cbb60e01b602086015216602484015260448301526044825261209360648361189a565b612289565b3d156120d2573d9067ffffffffffffffff821161184e57604051916120c7601f8201601f19166020018461189a565b82523d5f602084013e565b606090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169182156121a357823b15610295576001600160a01b0360405192637d960e3760e01b845216600483015260248201525f60448201525f8160648183865af19081612193575b50612190577fb095d4d7990b498e886fe544495d08fafb40e2675fd41d78e8abf3778ebcada461218b612177612098565b60405191829160208352602083019061195c565b0390a2565b50565b5f61219d9161189a565b5f612146565b505050565b90916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692831561205657833b15610295576001600160a01b0360405193637d960e3760e01b8552166004840152602483015260448201525f8160648183865af190816121935750612190577fb095d4d7990b498e886fe544495d08fafb40e2675fd41d78e8abf3778ebcada461218b612177612098565b9091926001600160a01b036118f49481604051956323b872dd60e01b602088015216602486015216604484015260648301526064825261209360848361189a565b5f806001600160a01b036122b293169360208151910182865af16122ab612098565b90836122fe565b80519081151591826122da575b50506122c85750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126102955760200151801590811503610295575f806122bf565b90612322575080511561231357805190602001fd5b630a12f52160e11b5f5260045ffd5b8151158061234f575b612333575090565b6001600160a01b0390639996b31560e01b5f521660045260245ffd5b50803b1561232b56fea164736f6c6343000821000a\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        },\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        },\n        {\n          \"name\": \"_ethUsdPriceFeed\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"APNTS_TOKEN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"APNTS_TOKEN_TIMELOCK\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"BLS_AGGREGATOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"EMERGENCY_TIMELOCK\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ETH_USD_PRICE_FEED\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract AggregatorV3Interface\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"UPGRADE_INTERFACE_VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"aPNTsPriceUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addStake\",\n      \"inputs\": [\n        {\n          \"name\": \"unstakeDelaySec\",\n          \"type\": \"uint32\",\n          \"internalType\": \"uint32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"agentIdentityRegistry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"agentReputationRegistry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"applyBLSAggregator\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cachedPrice\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"int256\",\n          \"internalType\": \"int256\"\n        },\n        {\n          \"name\": \"updatedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"roundId\",\n          \"type\": \"uint80\",\n          \"internalType\": \"uint80\"\n        },\n        {\n          \"name\": \"decimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelAPNTsTokenChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelEmergencyPrice\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelSlash\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"clearPendingDebt\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"configureOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"xPNTsToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_opTreasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deposit\",\n      \"inputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deposit\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"depositFor\",\n      \"inputs\": [\n        {\n          \"name\": \"targetOperator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"dryRunValidation\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"maxCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"ok\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"reasonCode\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencyActivatedAt\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencyPendingPrice\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"int256\",\n          \"internalType\": \"int256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencyQueuedAt\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencySetPrice\",\n      \"inputs\": [\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"int256\",\n          \"internalType\": \"int256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeAPNTsTokenChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeEmergencyPrice\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeSlashWithBLS\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAvailableCredit\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDeposit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getLatestSlash\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct ISuperPaymaster.SlashRecord\",\n          \"components\": [\n            {\n              \"name\": \"timestamp\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"amount\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"reputationLoss\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"reason\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            },\n            {\n              \"name\": \"level\",\n              \"type\": \"uint8\",\n              \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSlashCount\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSlashHistory\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct ISuperPaymaster.SlashRecord[]\",\n          \"components\": [\n            {\n              \"name\": \"timestamp\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"amount\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"reputationLoss\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"reason\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            },\n            {\n              \"name\": \"level\",\n              \"type\": \"uint8\",\n              \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initBLSAggregator\",\n      \"inputs\": [\n        {\n          \"name\": \"_bls\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initialize\",\n      \"inputs\": [\n        {\n          \"name\": \"_owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_apntsToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_protocolTreasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_priceStalenessThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isChainlinkStale\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isEligibleForSponsorship\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isRegisteredAgent\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isSlashPending\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"onTransferReceived\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"operators\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"aPNTsBalance\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"isConfigured\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"isPaused\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"xPNTsToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"reputation\",\n          \"type\": \"uint32\",\n          \"internalType\": \"uint32\"\n        },\n        {\n          \"name\": \"minTxInterval\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        },\n        {\n          \"name\": \"treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"totalSpent\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"totalTxSponsored\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingAPNTsToken\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingAPNTsTokenEta\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingBLSAgg\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingBLSAggEta\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingDebts\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"postOp\",\n      \"inputs\": [\n        {\n          \"name\": \"mode\",\n          \"type\": \"uint8\",\n          \"internalType\": \"enum IPaymaster.PostOpMode\"\n        },\n        {\n          \"name\": \"context\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"actualGasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"actualUserOpFeePerGas\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"priceMode\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"priceStalenessThreshold\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"priceValidUntil\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"primeBlsSlashCooldown\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"protocolFeeBPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"protocolRevenue\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proxiableUUID\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"queueBLSAggregator\",\n      \"inputs\": [\n        {\n          \"name\": \"_bls\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"queueSlash\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"retryPendingDebt\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"sbtHolders\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAPNTSPrice\",\n      \"inputs\": [\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAPNTsToken\",\n      \"inputs\": [\n        {\n          \"name\": \"newAPNTsToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAgentRegistries\",\n      \"inputs\": [\n        {\n          \"name\": \"_identity\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_reputation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setOperatorLimits\",\n      \"inputs\": [\n        {\n          \"name\": \"_minTxInterval\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setOperatorPaused\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paused\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setProtocolFee\",\n      \"inputs\": [\n        {\n          \"name\": \"newFeeBPS\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTreasury\",\n      \"inputs\": [\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setXPNTsFactory\",\n      \"inputs\": [\n        {\n          \"name\": \"_factory\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slashHistory\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reputationLoss\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slashOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n        },\n        {\n          \"name\": \"penaltyAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalTrackedBalance\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"treasury\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unlockStake\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateBlockedStatus\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"users\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"statuses\",\n          \"type\": \"bool[]\",\n          \"internalType\": \"bool[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePrice\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePriceDVT\",\n      \"inputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"int256\",\n          \"internalType\": \"int256\"\n        },\n        {\n          \"name\": \"updatedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"chainlinkRecovered\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateSBTStatus\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"status\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"upgradeToAndCall\",\n      \"inputs\": [\n        {\n          \"name\": \"newImplementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"userOpState\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"lastTimestamp\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        },\n        {\n          \"name\": \"isBlocked\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validatePaymasterUserOp\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"maxCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"context\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"validationData\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdraw\",\n      \"inputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawProtocolRevenue\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawStake\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawTo\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"xpntsFactory\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsPriceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsTokenChangeCancelled\",\n      \"inputs\": [\n        {\n          \"name\": \"pendingToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsTokenChangeExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"oldToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"executedAt\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsTokenChangeQueued\",\n      \"inputs\": [\n        {\n          \"name\": \"pendingToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"eta\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsTokenUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentRegistriesUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSAggregatorQueued\",\n      \"inputs\": [\n        {\n          \"name\": \"pending\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"eta\",\n          \"type\": \"uint48\",\n          \"indexed\": false,\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSAggregatorUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAggregator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAggregator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BlsSlashCooldownPrimed\",\n      \"inputs\": [\n        {\n          \"name\": \"floorUntil\",\n          \"type\": \"uint48\",\n          \"indexed\": false,\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DebtRecordFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EmergencyPriceCancelled\",\n      \"inputs\": [\n        {\n          \"name\": \"cancelledPrice\",\n          \"type\": \"int256\",\n          \"indexed\": false,\n          \"internalType\": \"int256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EmergencyPriceExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"int256\",\n          \"indexed\": false,\n          \"internalType\": \"int256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EmergencyPriceQueued\",\n      \"inputs\": [\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"int256\",\n          \"indexed\": false,\n          \"internalType\": \"int256\"\n        },\n        {\n          \"name\": \"eta\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorConfigured\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"xPNTsToken\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"treasury\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorDeposited\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorMinTxIntervalUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"minTxInterval\",\n          \"type\": \"uint48\",\n          \"indexed\": false,\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorPaused\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorSlashed\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorUnpaused\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OperatorWithdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OracleFallbackTriggered\",\n      \"inputs\": [\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PendingDebtCleared\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PendingDebtRetried\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PriceModeChanged\",\n      \"inputs\": [\n        {\n          \"name\": \"oldMode\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"newMode\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PriceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"int256\",\n          \"indexed\": true,\n          \"internalType\": \"int256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProtocolFeeUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProtocolRevenueUnderflow\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"requestedRefund\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"availableRevenue\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProtocolRevenueWithdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ReputationUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newScore\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashCancelled\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashExecutedWithProof\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"enum ISuperPaymaster.SlashLevel\"\n        },\n        {\n          \"name\": \"penalty\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proofHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashQueued\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TransactionSponsored\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"aPNTsCost\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"debtAPNTs\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TreasuryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Upgraded\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"UserBlockedStatusUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"isBlocked\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"UserReputationAccrued\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"aPNTsValue\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ValidationFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"reasonCode\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"XPNTsFactoryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldFactory\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newFactory\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressInsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AmountExceedsUint128\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ChainlinkNotStale\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DepositNotVerified\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1967InvalidImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1967NonPayable\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmergencyExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmergencyPriceOutOfRange\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmergencyTimelockNotElapsed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedInnerCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"available\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientRevenue\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidConfiguration\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidXPNTsToken\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MathOverflowedMulDiv\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoEmergencyPending\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoPendingDebt\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoSlashHistory\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OracleError\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ScoreExceedsUint32\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlashCooldown\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlashPending\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UUPSUnauthorizedCallContext\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UUPSUnsupportedProxiableUUID\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Unauthorized\",\n      \"inputs\": []\n    }\n  ],\n  \"bytecode\": \"0x6101003461029957601f615ee338819003918201601f19168301916001600160401b0383118484101761029d578084926060946040528339810103126102995780516001600160a01b0381169190828103610299576020820151916001600160a01b038316830361029957604001516001600160a01b0381169390849003610299573315610286575f8054336001600160a01b0319821681178355604051939290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3306080521561024f575060a0525f516020615ec35f395f51905f525460ff8160401c16610240576002600160401b03196001600160401b038216016101ea575b506001805566470de4df8200006009556103e8600d5560c05260e052604051615c1190816102b2823960805181818161325a01526133b3015260a051818181610c6301528181610f0701528181610fb5015281816116f401528181611951015281816123a1015281816133010152818161382201526140ca015260c05181818161084c01528181611c0001528181612a4101528181612c8901528181614076015281816153d30152818161551f0152818161569b01526157e5015260e05181818161190d0152818161269a0152818161306001526159da0152f35b6001600160401b0319166001600160401b039081175f516020615ec35f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f61010f565b63f92ee8a960e01b5f5260045ffd5b62461bcd60e51b8152602060048201526012602482015271125b9d985b1a5908115b9d1c9e541bda5b9d60721b6044820152606490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80630396cb601461409a57806306433b1b146140565780630761581514614035578063079d2d42146139d85780630c883112146139b757806313e7c9d8146138fa57806317a18778146138a75780631d2282c914613886578063205c2878146137f55780632e1a7d4d146136e35780632f4f21e21461369357806334fde76a1461367557806339a73403146135fa5780633d63f215146135dc5780634382885d146135b55780634f1ef2861461336257806352b7512c146132b957806352d1902d1461323f57806353afb8be14612fa957806354fd4d5014612f4857806358a2570a14612ed4578063594a6f2314612eb65780635c7c4b5f14612c1e5780635d2e7e5014612b645780635f4cd4fe146129da57806360a9139b146129b357806360d7442b1461299657806361ad446e1461297857806361d027b3146129515780636640431f146128ef57806366c36875146128b7578063673a7e28146126745780636a16e22d146126505780636a4b23b1146125635780636d8a4aff1461253c578063715018a6146124ea57806374f053c4146124c357806375e09b51146124a5578063787dce3d146124455780637af3816c146124275780637b707185146123d95780637c627b21146123545780638041c94a146121f757806382309dd8146121cc57806384450c3d146120eb57806388a7ca5c1461204d5780638da5cb5b146120275780638e0d8ed91461200c5780638e58021314611f6f57806396daa32214611f5157806396ea1e3814611df7578063a0c5018b14611d5d578063a134d63a14611c5a578063a3970ae614611be6578063a4b5328f14611adf578063a98e43a514611aa2578063ad1c98d7146119be578063ad3cb1cc14611975578063b0d691fe14611931578063b0f0abe9146118ed578063b54a8fca1461183c578063b6b55f25146117ee578063b7b76cbe146117c8578063b955bc681461175e578063bb2ddb2714611740578063bb9fe6bf146116d0578063bd111870146116b2578063bfa5a1eb1461110d578063c06f58e8146110e6578063c1d9cb0814611015578063c23a5cea14610f88578063c399ec8814610eda578063cf756fdf14610cca578063d0e30db014610c44578063d20727d714610bae578063dc61ae9014610a71578063ddd595ca14610a53578063de5c62a614610a2c578063e21b38d2146109fe578063e8ade1a914610962578063eafe74b5146107fb578063ec2123f11461072f578063f0f44260146106ac578063f2fde38b1461065b578063f5c91a08146105b5578063f60fdcb31461056e578063f7e8cb0d14610531578063fc34700714610488578063fcc6bd8a146104225763fe719e2f146103f8575f80fd5b3461041f578060031936011261041f57602065ffffffffffff815460a01c16604051908152f35b80fd5b503461041f57602036600319011261041f576001600160a01b03610444614136565b61044c6151ea565b16808252602260205260408220805460ff191690557fd3ca4980136f13cbba649b8d8d400d91e1fb63eb0d304a5074fa99165d3d978e8280a280f35b503461041f57602036600319011261041f5760043565ffffffffffff81169081810361052d576104b661565a565b338352600560205260016040842001907fffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff82549165ffffffffffff60c01b9060c01b1691161790556040519081527f4419a541734858dec04cd4ea31aff7b399a0b82dc61f30cc777c1907dc8102ed60203392a280f35b8280fd5b503461041f57602036600319011261041f5760ff60406020926001600160a01b0361055a614136565b168152600784522054166040519015158152f35b503461041f578060031936011261041f576080600a5460ff600b54600c5490604051938452602084015269ffffffffffffffffffff8116604084015260501c166060820152f35b503461041f57604036600319011261041f576105cf614136565b602435906105db6151ea565b63ffffffff821161064c576001600160a01b03168083526005602090815260408420600101805463ffffffff60a01b191660a085901b63ffffffff60a01b1617905590917ffc577563f1b9a0461e24abef1e1fcc0d33d3d881f20b5df6dda59de4aae2c8219190604051908152a280f35b634163383f60e11b8352600483fd5b503461041f57602036600319011261041f57610675614136565b61067d6151ea565b6001600160a01b0381161561069857610695906156da565b80f35b631e4fbdf760e01b82526004829052602482fd5b503461041f57602036600319011261041f576001600160a01b036106ce614136565b6106d66151ea565b16801561072057600454816001600160a01b0382167f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a8580a36001600160a01b0319161760045580f35b63e6c4247b60e01b8252600482fd5b503461041f57602036600319011261041f5760043561074c6151ea565b66038d7ea4c68000811080156107e9575b6107da5760095490816107a2575b7ffcc60d1b1dedb59d33b8eef97db5a70c8f8f8523c70d6a027dbf676f1290f8d2918160409260095582519182526020820152a180f35b612710612328830204811080156107c9575b1561076b575b63c52a9bd360e01b8352600483fd5b50612710612af883020481116107b4565b63c52a9bd360e01b8252600482fd5b50683635c9adc5dea00000811161075d565b503461041f57604036600319011261041f57610815614136565b9061081e61414c565b916001600160a01b0360405191632c333e2560e01b8352168060048301526020826024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa91821561095757839261091c575b506001600160a01b039360246020926040519687938492634d3c739760e11b84526004840152165afa9081156109115782916108d8575b60209350818111156108d1576108c992506149bc565b604051908152f35b50506108c9565b90506020833d602011610909575b816108f36020938361420c565b810103126109055760209251906108b3565b5f80fd5b3d91506108e6565b6040513d84823e3d90fd5b9091506020813d60201161094f575b816109386020938361420c565b810103126109055751906001600160a01b0361087c565b3d915061092b565b6040513d85823e3d90fd5b503461041f576001600160a01b0361097936614442565b91906109836151ea565b1690818352600560205260408320805460ff60881b83151560881b169060ff60881b19161790555f146109d7577fc5437eb8dd091f69800961953f2bb0bc16ae1ff2d3e52caa96796db65f8271da8280a280f35b7fae02c1bd695006b6d891af37fdeefea45a10ebcc17071e3471787db4f17728858280a280f35b503461041f57602036600319011261041f576020610a22610a1d614136565b615177565b6040519015158152f35b503461041f578060031936011261041f5760206001600160a01b0360175416604051908152f35b503461041f578060031936011261041f57602060405162093a808152f35b503461041f578060031936011261041f576013548015610b9f57610e108101809111610b8b574210610b7c5760145480600a5542600b556a08000000000000000000006affffffffffffffffffffff19600c541617600c5560125460ff81169060018203610b37575b505081601355816014557ffb96594f297e98363f469f68dba1862f6b4e6dbe060a9fd971f41087b2bb21066020604051838152a142907fdb6fb3cf4cc5fb760bcd63b958a53b2396776dff32c063188e864296541e76bd8380a380f35b7f5e5763e2a601dbb21ceae7f64e18f3d572378b373daa8d75a325f22f377f0ecb60406001938151908152846020820152a160ff191617601255426015555f80610ada565b63174b336d60e21b8152600490fd5b634e487b7160e01b82526011600452602482fd5b63a24a147160e01b8252600482fd5b503461041f57602036600319011261041f576001600160a01b03610bd0614136565b610bd86151ea565b16801561072057806001600160a01b0319601d541617601d5562093a804201804211610c30576020817f98f60c65a2b39c6b97ac2ab59944af0f43d99c0d1756339e5c607fd64341971c92601e55604051908152a280f35b634e487b7160e01b83526011600452602483fd5b508060031936011261041f57610c586151ea565b806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610cc757816024916040519283809263b760faf960e01b825230600483015234905af1801561091157610cb65750f35b81610cc09161420c565b61041f5780f35b50fd5b503461041f57608036600319011261041f57610ce4614136565b610cec61414c565b906044356001600160a01b03811691828203610ed657606435925f516020615be55f395f51905f52549460ff8660401c16159567ffffffffffffffff811680159081610ece575b6001149081610ec4575b159081610ebb575b50610eac5767ffffffffffffffff1981166001175f516020615be55f395f51905f525586610e80575b506001600160a01b03831615610e715760ff5f516020615be55f395f51905f525460401c1615610e6257906001600160a01b038392610dae8296956156da565b168419600254161760025515155f14610e5b57505b166001600160a01b031960045416176004558015155f14610e52575b60165566470de4df8200006009556103e8600d55610dfa5780f35b68ff0000000000000000195f516020615be55f395f51905f5254165f516020615be55f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b50610e10610ddf565b9050610dc3565b631afcd79f60e31b8752600487fd5b6349e27cff60e01b8752600487fd5b68ffffffffffffffffff191668010000000000000001175f516020615be55f395f51905f52555f610d6e565b63f92ee8a960e01b8852600488fd5b9050155f610d45565b303b159150610d3d565b889150610d33565b8480fd5b503461041f578060031936011261041f576040516370a0823160e01b8152306004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610f7c5790610f49575b602090604051908152f35b506020813d602011610f74575b81610f636020938361420c565b810103126109055760209051610f3e565b3d9150610f56565b604051903d90823e3d90fd5b503461041f57602036600319011261041f5780610fa3614136565b610fab6151ea565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b15611011576001600160a01b036024849283604051958694859363611d2e7560e11b85521660048401525af1801561091157610cb65750f35b5050fd5b503461041f57602036600319011261041f576001600160a01b03611037614136565b826080604051611046816141d4565b82815282602082015282604082015260608082015201521680825260086020526040822054156110d75780825260086020526040822090825260086020526040822054915f1983019283116110c3576110bf6110ab6110a585856142d5565b5061512c565b6040519182916020835260208301906143fb565b0390f35b634e487b7160e01b81526011600452602490fd5b63e0a1dc3160e01b8252600482fd5b503461041f578060031936011261041f5760206001600160a01b03600e5416604051908152f35b503461041f57608036600319011261041f57611127614136565b602435600381101561052d57604435906064359267ffffffffffffffff8411610ed6576111606001600160a01b03943690600401614176565b94909161116b6151ea565b1693848652602260205261118560ff604088205416614471565b65ffffffffffff4216858752601f60205265ffffffffffff60408820541681106116a357620151800165ffffffffffff811161168f57906111eb9291868852601f60205265ffffffffffff60408920911665ffffffffffff19825416179055369161424a565b9082918486526005602052604086205f9083155f146116725760ff600a5b169161165e5760028414611648575b60ff815460881c1661161e575b60018101958263ffffffff885460a01c16115f1461160b578263ffffffff885460a01c160363ffffffff81116115f757875463ffffffff60a01b191660a09190911b63ffffffff60a01b161787555b80611503575b50508587526008602052604087209160405191611296836141d4565b42835260208301868152604084019182526060840192835260808401946112bd8787615120565b805490680100000000000000008210156114ef57906112e1916001820181556142d5565b9490946114db57518455516001840155516002830155518051600383019167ffffffffffffffff82116114c7576113188354614302565b601f8111611475575b50602090601f831160011461140f576004949392918b9183611404575b50508160011b915f199060031b1c19161790555b01905160038110156113f05793857fa7503227727e36abb7f0ecf24f626347ccc20233c48c554d49d7d2077a1a304060407ffc577563f1b9a0461e24abef1e1fcc0d33d3d881f20b5df6dda59de4aae2c821966113cd60209763ffffffff97869b60ff801983541691161790558351928352888301906143da565ba25460a01c16604051908152a28152602260205260408120805460ff1916905580f35b634e487b7160e01b87526021600452602487fd5b015190505f8061133e565b838b52818b209190601f1984168c5b81811061145d575091600193918560049897969410611445575b505050811b019055611352565b01515f1960f88460031b161c191690555f8080611438565b9293602060018192878601518155019501930161141e565b8281111561132157838b5260208b20601f840160051c90602085106114bf575b81601f9101920160051c03908b5b8281106114b1575050611321565b808d600192840155016114a3565b8c9150611495565b634e487b7160e01b8a52604160045260248afd5b634e487b7160e01b8b5260048b905260248bfd5b634e487b7160e01b8c52604160045260248cfd5b6001600160801b03825416610bb8810290808204610bb814901517156115f75761271090048091116115a8575b5080546001600160801b031685811061158257506001600160801b0361155b8187168284541661499c565b166001600160801b031982541617905561157784601054614574565b6010555b5f8061127a565b9194506001600160801b0319815416905561159f81601054614574565b6010559261157b565b6020919395506010826115f092976040519481869251918291018484015e81016f2028436170706564206174203330252960801b838201520301600f1981018452018261420c565b915f611530565b634e487b7160e01b8a52601160045260248afd5b865463ffffffff60a01b19168755611274565b867fc5437eb8dd091f69800961953f2bb0bc16ae1ff2d3e52caa96796db65f8271da8980a2611225565b805460ff60881b1916600160881b178155611218565b634e487b7160e01b88526021600452602488fd5b879150600184036116865760ff6014611209565b60ff6032611209565b634e487b7160e01b87526011600452602487fd5b63be3963ef60e01b8752600487fd5b503461041f578060031936011261041f576020601654604051908152f35b503461041f578060031936011261041f576116e96151ea565b806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610cc75781809160046040518094819363bb9fe6bf60e01b83525af1801561091157610cb65750f35b503461041f578060031936011261041f576020601e54604051908152f35b503461041f578060031936011261041f576117776151ea565b7f18e257fa1330af492bc6ba2454ed697ff9a225a325b2ba1c8f436508e7b102c2602065ffffffffffff6117ac8142166144bd565b168065ffffffffffff196024541617602455604051908152a180f35b503461041f578060031936011261041f5760206001600160a01b03815416604051908152f35b503461041f57602036600319011261041f5761183560043561180e61546c565b61181661565a565b61182f816001600160a01b036002541630903390615584565b336155c5565b6001805580f35b503461041f57602036600319011261041f576001600160a01b0361185e614136565b6118666151ea565b168015610720576020546201518042018042116118d9576001600160d01b0319909116821760a091821b65ffffffffffff60a01b161760208181556040519190921c65ffffffffffff1681527f0b969f7dbdbaad518bf93d6f72458e8fd633fe345297219a90f56b035d14468d9190a280f35b634e487b7160e01b84526011600452602484fd5b503461041f578060031936011261041f5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461041f578060031936011261041f5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461041f578060031936011261041f57506110bf60405161199860408261420c565b60058152640352e302e360dc1b6020820152604051918291602083526020830190614280565b503461041f57602036600319011261041f576119d8614136565b6001600160a01b0382541633141580611a8d575b611a7f576001600160a01b03600e5416331480611a5e575b611a4f576001600160a01b0316808252602260205260408220805460ff191660011790557f75c311f3c3abe120497595cc3441171c6dcfdc922b816a2f4944f4f4daa679608280a280f35b63be3963ef60e01b8252600482fd5b5065ffffffffffff611a6f82615210565b1665ffffffffffff421610611a04565b6282b42960e81b8252600482fd5b506001600160a01b03600e54163314156119ec565b503461041f57602036600319011261041f5760ff60406020926001600160a01b03611acb614136565b168152602284522054166040519015158152f35b503461041f57604036600319011261041f57611af9614136565b602435611b046151ea565b611b0c61546c565b6001600160a01b038216918215611bd75760105467016345785d8a0000811115611bd15767016345785d89ffff198101818111611bbd575b8311611bae5791611ba081602093611b7d827ff7595c4fd7fa675e456dd9520ac8266c06d237d52900fc573bccc85b7c177c9e976149bc565b601055611b8c82600f546149bc565b600f556001600160a01b036002541661548c565b604051908152a26001805580f35b63b4aa806360e01b8552600485fd5b634e487b7160e01b86526011600452602486fd5b84611b44565b63e6c4247b60e01b8452600484fd5b503461041f57611bf536614442565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303611c4c576001600160a01b031682526007602052604082209060ff80198354169115151617905580f35b6282b42960e81b8352600483fd5b503461041f57602036600319011261041f576001600160a01b03611c7c614136565b168152600860205260408120805467ffffffffffffffff8111611d495760405190611cad60208260051b018361420c565b80825260208201809385526020852085915b838310611d2b57868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210611cfc57505050500390f35b91936001919395506020611d1b8192603f198a820301865288516143fb565b9601920192018594939192611ced565b60056020600192611d3b8561512c565b815201920192019190611cbf565b634e487b7160e01b83526041600452602483fd5b503461041f578060031936011261041f57611d766151ea565b6020546001600160a01b0381169081156107ba5765ffffffffffff8160a01c1665ffffffffffff4216106107ba57600e80546001600160a01b0319811684179091556001600160d01b03199091166020556001600160a01b03167f019f532f6e08ee8944dc2e7ac40f3c97ad4a20618aee847ddf7c502821c7dad48380a380f35b503461041f57602036600319011261041f57600435611e146151ea565b81811315611f4257611e246159c5565b15611f33576015548015159081611f1c575b50611f0d57600a5482811315611efe57611f40810290801591818105611f4014831715611eea57612710900591612ee08202918205612ee01417156118d9576127109005908212908115611ee0575b50611ed1578060145542601355610e104201804211610c30577f028dfa1d2bc951d60682384a066c9424c3829ea5f25cb00a5f659caed927faea9160409182519182526020820152a180f35b636b04933560e01b8252600482fd5b905081135f611e85565b634e487b7160e01b85526011600452602485fd5b63b41b6cb160e01b8352600483fd5b6304a1a56160e41b8252600482fd5b905062093a808101809111610c305742115f611e36565b6304efd15560e41b8252600482fd5b63b41b6cb160e01b8252600482fd5b503461041f578060031936011261041f576020600d54604051908152f35b503461041f57604036600319011261041f57611f89614136565b6001600160a01b0360243591168252600860205260408220805482101561052d57611fb492506142d5565b5080546001820154916110bf61200160028301549260ff6004611fd96003840161433a565b920154169360405196879687526020870152604086015260a0606086015260a0850190614280565b9160808401906143da565b503461041f578060031936011261041f576020610a226159c5565b503461041f578060031936011261041f576001600160a01b036020915416604051908152f35b503461041f57608036600319011261041f57612067614136565b5061207061414c565b9060643567ffffffffffffffff81116120e757612091903690600401614176565b505061209b61546c565b6001600160a01b036002541633036120d9576120c3826120ba816154cd565b604435906155c5565b60018055604051632229f29760e21b8152602090f35b6282b42960e81b8152600490fd5b5080fd5b503461041f578060031936011261041f576121046151ea565b601d546001600160a01b0381169081156107ba57601e5442106107ba57600f54601054809114908115916121ba575b506107ba5760025490826001600160a01b038316926001600160a01b031916176002556001600160a01b031916601d5582601e5581817fbbb759660e3239a80c3b3a0326287b69c8a5388b2ba43876c6b91c7c85f21fb86020604051428152a37f75f4cc3f3f70100dc11e396f47f8af2dec5cf7ec94e06062222be779cf2f3dec8380a380f35b67016345785d8a00009150115f612133565b503461041f578060031936011261041f5760206121e76150fa565b65ffffffffffff60405191168152f35b503461041f57606036600319011261041f57612211614136565b61221961414c565b604435906122256151ea565b61222d61546c565b6001600160a01b03829316918285526011602052604085206001600160a01b0383165f5260205260405f20549081156123455781811591821561233b575b5050612333575b8361227c916149bc565b8285526011602052604085206001600160a01b0383165f5260205260405f2055813b1561232f5760405163fa74542d60e01b81526001600160a01b0382166004820152602481018490528490818160448183885af180156109115761231a575b505060206001600160a01b037f84b561bfeda3b329970b08af25d20086abe657da83a1dbd00fdfaad913e8cfed926040519586521693a36001805580f35b816123249161420c565b61232f57835f6122dc565b8380fd5b925082612272565b119050815f61226b565b630342954b60e21b8652600486fd5b503461041f57608036600319011261041f576003600435101561041f5760243567ffffffffffffffff81116120e757612394611835913690600401614176565b6123c86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146149c9565b6123d061546c565b60443591614ec5565b503461041f57604036600319011261041f576001600160a01b0360406123fd614136565b928261240761414c565b9416815260116020522091165f52602052602060405f2054604051908152f35b503461041f578060031936011261041f576020601054604051908152f35b503461041f57602036600319011261041f576004356124626151ea565b6107d081116107da5760407fb404cac19fb1cbeff98d325795b08886e3cd8fe8cb1a2f193aac66f13fb239c391600d549080600d5582519182526020820152a180f35b503461041f578060031936011261041f576020601354604051908152f35b503461041f578060031936011261041f5760206001600160a01b0360025416604051908152f35b503461041f578060031936011261041f576125036151ea565b806001600160a01b038154811981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461041f578060031936011261041f5760206001600160a01b0360035416604051908152f35b503461041f57604036600319011261041f5761257d614136565b9061258661414c565b61258e6151ea565b6001600160a01b0383169283151580612647575b612638576001600160a01b0382168015158061262f575b611bd7577f92f63be5e4bfac76f996bbbee86c4933f30141307811e42d6977a697dd8fc3ec93946001600160a01b031960175416176017556001600160a01b03196018541617601855612629604051928392839092916001600160a01b0360209181604085019616845216910152565b0390a180f35b50823b156125b9565b63e6c4247b60e01b8352600483fd5b50803b156125a2565b503461041f57602036600319011261041f576020610a2261266f614136565b614e64565b503461041f578060031936011261041f57604051633fabe5a360e21b815260a0816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa82908391818594869361287a575b506126e65763b41b6cb160e01b8552600485fd5b6402540be4008312801561286b575b61285c57612705601654426149bc565b841061285c5769ffffffffffffffffffff9081169116811161284d5769ffffffffffffffffffff906008606060405161273d816141a4565b858152866020820152836040820152015282600a5583600b551669ffffffffffffffffffff19600c541617600c55600c546aff00000000000000000000600860501b16906aff00000000000000000000191617600c5560125460ff81168061280b575b50506013546127d1575b7fdb6fb3cf4cc5fb760bcd63b958a53b2396776dff32c063188e864296541e76bd8380a380f35b7fd1cdd29a2fc16e6ed81266a11c8f7f06897e72e22d1bb9ccf34d63c3583d5df360206014548560135585601455604051908152a16127aa565b60407f5e5763e2a601dbb21ceae7f64e18f3d572378b373daa8d75a325f22f377f0ecb918151908152866020820152a160ff1916601255826015555f806127a0565b63b41b6cb160e01b8452600484fd5b63b41b6cb160e01b8552600485fd5b506509184e72a00083136126f5565b92509350506128a1915060a03d60a0116128b0575b612899818361420c565b810190614da1565b9492915092909293915f6126d2565b503d61288f565b503461041f57602036600319011261041f5760406020916001600160a01b036128de614136565b168152600883522054604051908152f35b503461041f57604036600319011261041f576001600160a01b036040612913614136565b928261291d61414c565b9416815260066020522091165f526020526040805f205460ff82519165ffffffffffff8116835260301c1615156020820152f35b503461041f578060031936011261041f5760206001600160a01b0360045416604051908152f35b503461041f578060031936011261041f576020600f54604051908152f35b503461041f578060031936011261041f576020604051610e108152f35b503461041f578060031936011261041f5760206001600160a01b03601d5416604051908152f35b503461041f57606036600319011261041f576129f4614136565b60243567ffffffffffffffff811161052d57612a149036906004016142a4565b9060443567ffffffffffffffff8111610ed657612a359036906004016142a4565b90926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303612b5657818103612b475791936001600160a01b03169185805b828110612a88575080f35b85857f272958aacfbf07577da4ede62cc7d612dfb0881c6489c961988ef59378d7709f60206001600160a01b03612b33612ade878b8f612afa838e612b2d9360019f60408f918f92612ade878b612ae393614e47565b614e57565b92815260068e52208b612aff612afa878787614e47565b61452d565b165f528c5260405f209066ff000000000000825491151560301b169066ff0000000000001916179055614e47565b98614e47565b9460405195151586521693a3018690612a7d565b63c52a9bd360e01b8652600486fd5b6282b42960e81b8652600486fd5b503461041f57604036600319011261041f57612b7e614136565b6001600160a01b03612b8e61414c565b91612b976151ea565b168083526011602052604083206001600160a01b0383165f5260205260405f2054918215612c0f5760206001600160a01b037fe4ddb9696b79889a2b0002aa61f703666d072c319c0694d71624728605bdd2879284875260118352604087208282165f5283528660405f20556040519586521693a380f35b630342954b60e21b8452600484fd5b503461041f57604036600319011261041f57612c38614136565b612c4061414c565b612c4861565a565b604051632474521560e21b81527fe94d78b6d8fb99b2c21131eb4552924a60f564d8515a3cc90ef300fc9735c07460048201523360248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115612eab578491612e7c575b5015611c4c576001600160a01b03821680158015612e6b575b612e5c576001600160a01b03600354168015612e4d5760206024916040519283809263b8d7b66960e01b82523360048301525afa8015612e425782918691612df6575b506001600160a01b031603612de7577f823c9466affb5a8646bc5f7e6304f72a4622cc01af819ec2f51b1130a725c6d191612de1913386526005602052604086209060018201906001600160a01b0319825416179055600281016001600160a01b0383166001600160a01b031982541617905570010000000000000000000000000000000070ff00000000000000000000000000000000198254161790556040519182913395839092916001600160a01b0360209181604085019616845216910152565b0390a280f35b6367cc8b7560e01b8452600484fd5b9150506020813d602011612e3a575b81612e126020938361420c565b81010312610ed657516001600160a01b0381168103610ed65781906001600160a01b03612d1d565b3d9150612e05565b6040513d87823e3d90fd5b63c52a9bd360e01b8552600485fd5b63c52a9bd360e01b8452600484fd5b506001600160a01b03821615612cda565b612e9e915060203d602011612ea4575b612e96818361420c565b810190614e2f565b5f612cc1565b503d612e8c565b6040513d86823e3d90fd5b503461041f578060031936011261041f576020600954604051908152f35b503461041f57602036600319011261041f576001600160a01b03612ef6614136565b612efe6151ea565b16801561072057600354816001600160a01b0382167f05ba7ce38b27f49ba3b81247ac7a13b30021ce3e90f633a2498fa9d1a09579908580a36001600160a01b0319161760035580f35b503461041f578060031936011261041f57506110bf604051612f6b60408261420c565b601481527f53757065725061796d61737465722d352e342e320000000000000000000000006020820152604051918291602083526020830190614280565b503461041f57608036600319011261041f5760243560043560443567ffffffffffffffff811161232f57612fe1903690600401614176565b505060643560ff811680910361232f576001600160a01b03600e54163314158061322b575b61321d57600b5483111561284d57611c1f194201428111611eea57831061284d57600f4201804211611eea57831161284d576402540be4008212801561320e575b61284d57604051633fabe5a360e21b815260a0816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80869287926131e5575b50613172575b5050600190600860606040516130af816141a4565b85815260208101879052604081018890520152600a839055600b849055600c80546affffffffffffffffffffff19166a08000000000000000000001790551480613164575b61311f577fdb6fb3cf4cc5fb760bcd63b958a53b2396776dff32c063188e864296541e76bd8380a380f35b6012547f5e5763e2a601dbb21ceae7f64e18f3d572378b373daa8d75a325f22f377f0ecb6040805160ff84168152866020820152a160ff1916601255826015556127aa565b5060ff6012541615156130f4565b85821390816131cf575b50613188575b8061309a565b601490808413156131b957806131a96131a46131ae9387614dd3565b614deb565b614e01565b1361284d575f613182565b806131a96131a4866131ca94614dd3565b6131ae565b611c2091506131de90426149bc565b105f61317c565b909250613201915060a03d60a0116128b057612899818361420c565b509392505091905f613094565b506509184e72a0008213613047565b6282b42960e81b8452600484fd5b506001600160a01b03845416331415613006565b503461041f578060031936011261041f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036132aa5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b63703e46dd60e11b8152600490fd5b503461041f57606036600319011261041f576004359067ffffffffffffffff821161041f57610120600319833603011261041f57613358613340836133286001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146149c9565b61333061546c565b6044359060243590600401614a25565b60018055604051928392604084526040840190614280565b9060208301520390f35b50604036600319011261041f57613377614136565b9060243567ffffffffffffffff81116120e757366023820112156120e7576133a990369060248160040135910161424a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803014908115613580575b50613571576133eb6151ea565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa8095859661353d575b5061343057634c9c8ce360e01b84526004839052602484fd5b9091847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc810361352b5750813b1561351957806001600160a01b03197f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a281518390156134ff57808360206134fb95519101845af46134f5615b5b565b91615b8a565b5080f35b5050503461350a5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011613569575b816135596020938361420c565b81010312610ed65751945f613417565b3d915061354c565b63703e46dd60e11b8252600482fd5b90506001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f6133de565b503461041f578060031936011261041f5760206001600160a01b0360185416604051908152f35b503461041f578060031936011261041f576020601554604051908152f35b503461041f57602036600319011261041f57613614614136565b61361c6151ea565b600e54906001600160a01b0382166107ba576001600160a01b0316908115612638576001600160a01b0319168117600e55817f019f532f6e08ee8944dc2e7ac40f3c97ad4a20618aee847ddf7c502821c7dad48180a380f35b503461041f578060031936011261041f576020601454604051908152f35b503461041f57604036600319011261041f576118356136b0614136565b602435906136bc61546c565b6136c5816154cd565b6136de826001600160a01b036002541630903390615584565b6155c5565b503461041f57602036600319011261041f5760043561370061546c565b338252602260205260ff6040832054166137e6573382526005602052806001600160801b03604084205416106137bb573382526005602052604082206001600160801b036137538184168284541661499c565b166001600160801b031982541617905561376f81600f546149bc565b600f5561378881336001600160a01b036002541661548c565b6040519081527f4eea589c35918e3c4d8e0371a062a1d544e41d78fb522381678923b9cd6e6dfa60203392a26001805580f35b3382526005602052604082205463cf47918160e01b83526001600160801b0316600452602452604490fd5b635706422560e01b8252600482fd5b503461041f57604036600319011261041f5780613810614136565b6138186151ea565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b15611011576001600160a01b036044849283604051958694859363040b850f60e31b855216600484015260243560248401525af1801561091157610cb65750f35b503461041f578060031936011261041f5761389f6151ea565b61069561494d565b503461041f57604036600319011261041f576004359067ffffffffffffffff821161041f57610120600319833603011261041f5760406138ec60243560048501614581565b825191151582526020820152f35b503461041f57602036600319011261041f576040610120916001600160a01b03613922614136565b1681526005602052208054906001810154906001600160a01b0360028201541665ffffffffffff600460038401549301549360ff604051966001600160801b0381168852818160801c161515602089015260881c16151560408701526001600160a01b038116606087015263ffffffff8160a01c16608087015260c01c1660a085015260c084015260e0830152610100820152f35b503461041f578060031936011261041f576139d06151ea565b6106956144ee565b503461041f57606036600319011261041f576139f2614136565b60243560038110801561232f5760443567ffffffffffffffff8111610ed657613a1f903690600401614176565b6001600160a01b03600e54163303612b56576001600160a01b038516948587526022602052613a5460ff604089205416614471565b65ffffffffffff613a6781421692615210565b1681106116a357613a77906144bd565b858752602360205265ffffffffffff60408820911665ffffffffffff19825416179055856001851492835f1461400557613ad0915086885260056020526001600160801b03600a8160408b2054160416925b369161424a565b6020815191012092604092835190613ae8858361420c565b600d825260208201926c088aca8408498a640a6d8c2e6d609b1b8452829085938a8c526005602052878c2091159384613ff1578a613fd7575060ff600a5b1693613fc35760028a14613fad575b60ff825460881c16613f83575b60018201958463ffffffff885460a01c16115f14613f70578463ffffffff885460a01c160363ffffffff8111613f5c57875463ffffffff60a01b191660a09190911b63ffffffff60a01b161787555b87613e64575b505050888a526008602052858a2091865190613bb2826141d4565b42825260208201858152888301918252606083019384526080830194613bd88c87615120565b80549068010000000000000000821015613e505790613bfc916001820181556142d5565b939093613e3c5751835551600183015551600282015560038101915191825167ffffffffffffffff8111613e28578c613c358354614302565b601f8111613dd4575b505060208d601f8311600114613d6c579060049583613d61575b50508160011b915f199060031b1c19161790555b0190516003811015613d4d57602063ffffffff87958b7fa7503227727e36abb7f0ecf24f626347ccc20233c48c554d49d7d2077a1a30407fa49f25e6b37dc7492af788d36761dc1b25f8fb6dcc448fb5637dc828725f0d889c9a8f9883987ffc577563f1b9a0461e24abef1e1fcc0d33d3d881f20b5df6dda59de4aae2c8219860809f9d9b5060ff801983541691161790558151908152613d108d888301906143da565ba25460a01c168551908152a2868852602260205281882060ff198154169055613d3b825180956143da565b6020840152820152426060820152a280f35b634e487b7160e01b8a52602160045260248afd5b015190505f80613c58565b91929394601f198416858452828420935b818110613dbc575091600193918560049897969410613da4575b505050811b019055613c6c565b01515f1960f88460031b161c191690555f8080613d97565b92936020600181928786015181550195019301613d7d565b82811115613c3e5783825260208220601f840160051c9060208510613e20575b81601f9101920160051c0391805b838110613e1157509150613c3e565b60019181840155018f90613e02565b839150613df4565b634e487b7160e01b8d52604160045260248dfd5b634e487b7160e01b8e5260048e905260248efd5b634e487b7160e01b8f52604160045260248ffd5b6001600160801b03835416610bb8810290808204610bb81490151715613f5c576127109004808911613f0d575b505081546001600160801b03169050848110613ee757506001600160801b03613ebf8186168284541661499c565b166001600160801b0319825416179055613edb83601054614574565b6010555b5f8080613b97565b9193506001600160801b03198154169055613f0481601054614574565b60105591613edf565b613f53929650601091939450602090968a519485915180918484015e81016f2028436170706564206174203330252960801b838201520301600f1981018452018261420c565b905f8080613e91565b634e487b7160e01b8e52601160045260248efd5b865463ffffffff60a01b19168755613b91565b8a7fc5437eb8dd091f69800961953f2bb0bc16ae1ff2d3e52caa96796db65f8271da8d80a2613b42565b815460ff60881b1916600160881b178255613b35565b634e487b7160e01b8c52602160045260248cfd5b8c945015613fe85760ff6014613b26565b60ff6032613b26565b634e487b7160e01b8d52602160045260248dfd5b60028614614018575b613ad09192613ac9565b868852600560205260408820546001600160801b0316915061400e565b503461041f578060031936011261041f57602060ff60125416604051908152f35b503461041f578060031936011261041f5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5060203660031901126109055760043563ffffffff8116809103610905576140c06151ea565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b15610905575f90602460405180948193621cb65b60e51b8352600483015234905af1801561412b5761411d575080f35b61412991505f9061420c565b005b6040513d5f823e3d90fd5b600435906001600160a01b038216820361090557565b602435906001600160a01b038216820361090557565b35906001600160a01b038216820361090557565b9181601f840112156109055782359167ffffffffffffffff8311610905576020838186019501011161090557565b6080810190811067ffffffffffffffff8211176141c057604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176141c057604052565b6040810190811067ffffffffffffffff8211176141c057604052565b90601f8019910116810190811067ffffffffffffffff8211176141c057604052565b67ffffffffffffffff81116141c057601f01601f191660200190565b9291926142568261422e565b91614264604051938461420c565b829481845281830111610905578281602093845f960137010152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f840112156109055782359167ffffffffffffffff8311610905576020808501948460051b01011161090557565b80548210156142ee575f52600560205f20910201905f90565b634e487b7160e01b5f52603260045260245ffd5b90600182811c92168015614330575b602083101461431c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691614311565b9060405191825f82549261434d84614302565b80845293600181169081156143b85750600114614374575b506143729250038361420c565b565b90505f9291925260205f20905f915b81831061439c575050906020614372928201015f614365565b6020919350806001915483858901015201910190918492614383565b90506020925061437294915060ff191682840152151560051b8201015f614365565b9060038210156143e75752565b634e487b7160e01b5f52602160045260245ffd5b9061443f90825181526020830151602082015260408301516040820152608080614434606086015160a0606086015260a0850190614280565b9401519101906143da565b90565b6040906003190112610905576004356001600160a01b0381168103610905579060243580151581036109055790565b1561447857565b60405162461bcd60e51b815260206004820152601960248201527f53503a206d757374207175657565536c617368206669727374000000000000006044820152606490fd5b65ffffffffffff610e109116019065ffffffffffff82116144da57565b634e487b7160e01b5f52601160045260245ffd5b60135415614372577fd1cdd29a2fc16e6ed81266a11c8f7f06897e72e22d1bb9ccf34d63c3583d5df360206014545f6013555f601455604051908152a1565b356001600160a01b03811681036109055790565b903590601e1981360301821215610905570180359067ffffffffffffffff82116109055760200191813603831361090557565b919082018092116144da57565b6001600160a01b036145928261524b565b1691825f52600560205260405f209283549160ff8360801c16156149225760ff8360881c166148f7576145c761266f8561452d565b156148cc5760e084019160346145dd8487614541565b90501015614874575b5f52600660205260405f206001600160a01b036146028661452d565b165f5260205260405f209460206040519661461c886141f0565b549660ff65ffffffffffff89169889835260301c1615159182910152614858576001015465ffffffffffff8160c01c16801515968761484e575b87614839575b50505f1992606861466d8288614541565b90501015614814575b506001600160a01b031691604051633ba0b9a960e01b8152602081600481875afa90811561412b575f916147e2575b50116147b757600b5480159081156147a1575b50614787576146c69061527c565b91600d549283612710019384612710116144da57612af8018094116144da576001600160801b03936146f791615331565b928391161061475d5761470c6147129361452d565b9061534a565b61473657614721576001905f90565b5f906b1490551157d312535255115160a21b90565b505f907f4352454449545f4558434545444544000000000000000000000000000000000090565b505050505f907f494e53554646494349454e545f42414c414e434500000000000000000000000090565b505f946a5354414c455f505249434560a81b945092505050565b6147af915060165490614574565b42115f6146b8565b50505050505f907f524154455f434f4d4d49544d454e545f56494f4c41544544000000000000000090565b90506020813d60201161480c575b816147fd6020938361420c565b8101031261090557515f6146a5565b3d91506147f0565b61482091935085614541565b6068116109055760480135916001600160a01b03614676565b614844929750614574565b4210945f8061465c565b8015159750614656565b505f956b1554d15497d09313d0d2d15160a21b95509350505050565b61487e8386614541565b603411610905576001600160801b03602462030d4092013560801c1610156145e6575050505050505f907f504f53544f505f4741535f544f4f5f4c4f57000000000000000000000000000090565b50505050505f907f555345525f4e4f545f454c494749424c4500000000000000000000000000000090565b50505050505f907f4f50455241544f525f504155534544000000000000000000000000000000000090565b50505050505f907f4f50455241544f525f4e4f545f434f4e4649475552454400000000000000000090565b601d546001600160a01b038116908115614998576001600160a01b031916601d555f601e557fde82ad51cc1336e141528846e966b9e7f7ae89a78ebb71d1f0da0d851592d8ee5f80a2565b5050565b906001600160801b03809116911603906001600160801b0382116144da57565b919082039182116144da57565b156149d057565b60405162461bcd60e51b815260206004820152602760248201527f426173655061796d61737465723a2063616c6c6572206973206e6f7420456e746044820152661c9e541bda5b9d60ca1b6064820152608490fd5b92916001600160a01b03614a388561524b565b16805f52600560205260405f209283549260ff8460801c1615614d7557614a64600b5460165490614574565b945f9460ff8160881c16614d5e57614a7e61266f8a61452d565b15614d5e5760e08901926034614a94858c614541565b90501015614d1a575b855f52600660205260405f206001600160a01b03614aba8c61452d565b165f5260205260405f2060ff60405191614ad3836141f0565b5465ffffffffffff8116835260301c161515806020830152614c7e579083929160018c9695019485549165ffffffffffff8360c01c169081614cee575b50506068614b20825f1999614541565b90501015614cc9575b506001600160a01b031694604051633ba0b9a960e01b81526020816004818a5afa90811561412b575f91614c97575b5011614c7e57614b679061527c565b600d549081612710019182612710116144da57612af8018092116144da57614b9d91614b9291615331565b809561470c8d61452d565b614c5d576001600160801b0316838110614c5d576001600160a01b03926003614c0b936001600160801b03614bd68795828a169061499c565b166001600160801b031982541617815501614bf2868254614574565b9055614c0085601054614574565b60105554169861452d565b6040519860208a01521660408801526060870152608086015260a085015260a08452614c3860c08561420c565b60a09190911b65ffffffffffff60a01b1660d09190911b6001600160d01b0319161790565b50505050505050509050604051614c7560208261420c565b5f815290600190565b5050505050505050509050604051614c7560208261420c565b90506020813d602011614cc1575b81614cb26020938361420c565b8101031261090557515f614b58565b3d9150614ca5565b614cd59196508c614541565b6068116109055760480135946001600160a01b03614b29565b5165ffffffffffff168015614b1057919a5001955065ffffffffffff86116144da578b95985f80614b10565b614d24848b614541565b603411610905576001600160801b03602462030d4092013560801c161015614a9d5750505050505050509050604051614c7560208261420c565b505050505050509050604051614c7560208261420c565b50505050509050604051614c7560208261420c565b519069ffffffffffffffffffff8216820361090557565b908160a091031261090557614db581614d8a565b9160208201519160408101519161443f608060608401519301614d8a565b81810392915f1380158285131691841216176144da57565b906064820291808305606414901517156144da57565b8115614e1b57600160ff1b81145f198314166144da570590565b634e487b7160e01b5f52601260045260245ffd5b90816020910312610905575180151581036109055790565b91908110156142ee5760051b0190565b3580151581036109055790565b6001600160a01b0381165f52600760205260ff60405f205416908115614e88575090565b61443f9150615177565b818102929181159184041417156144da57565b906001600160801b03809116911601906001600160801b0382116144da57565b919080156150f5578260a0918101031261090557614ee282614162565b91614eef60208201614162565b6040820135906001600160a01b038080614f10608060608801359701614162565b97169216951693845f52600560205265ffffffffffff600160405f20015460c01c166150b8575b835f52602160205260ff60405f2054166150b057835f52602160205260405f20600160ff19825416179055845f526005602052600460405f2001908154915f1983146144da576001614f8b9301905561527c565b92600d546127100180612710116144da57614fa96127109186614e92565b0492808410156150a2577fcde7e91a718e2439d8ff2a679ad52713e82a37b72622fb530c8c41039fdd5bf09492849287614fe860409761504a956149bc565b916001600160801b038311615093575b858b60105480861161505a575b506150109495615717565b865f526005602052845f206001600160801b0361503281841682845416614ea5565b166001600160801b03198254161790556010546149bc565b60105582519182526020820152a3565b847f418c06850785ce4239177091a96c1757ba1d5ba22df98a4cf818e1510fa028cd8c615010988151908152846020820152a294615005565b6001600160801b039250614ff8565b925092509361437294615717565b505050505050565b845f52600660205260405f206001600160a01b0387165f5260205260405f2065ffffffffffff8042161665ffffffffffff19825416179055614f37565b505050565b600b54801561511b5761511765ffffffffffff9160165490614574565b1690565b505f90565b60038210156143e75752565b9061437260405161513c816141d4565b608060ff600483968054855260018101546020860152600281015460408601526151686003820161433a565b60608601520154169101615120565b6001600160a01b03601754169081156151e4576001600160a01b036024602092604051948593849263710d9c6960e11b84521660048301525afa5f91816151c3575b5061443f57505f90565b6151dd91925060203d602011612ea457612e96818361420c565b905f6151b9565b50505f90565b6001600160a01b035f541633036151fd57565b63118cdaa760e01b5f523360045260245ffd5b6001600160a01b03165f52602360205265ffffffffffff60405f20541665ffffffffffff60245416908082115f14615246575090565b905090565b60e08101604861525b8284614541565b9050106151e45761526b91614541565b604811610905576034013560601c90565b60405190615289826141a4565b600a5490818352600b54602084015260ff6060600c549469ffffffffffffffffffff86166040820152019360501c1683525f8213156153225760ff916152ce91614e92565b915116604d81116144da576009546152e891600a0a614e92565b6152fb81670de0b6b3a764000084615a5a565b918115614e1b57670de0b6b3a764000090096153145790565b600181018091116144da5790565b63b41b6cb160e01b5f5260045ffd5b9061271090615341828285615a5a565b92096153145790565b604051634d3c739760e11b81526001600160a01b0392831660048201819052939190921691602081602481865afa90811561412b575f91615438575b506153ab906153b0935f52601160205260405f20855f5260205260405f205490614574565b614574565b60405191632c333e2560e01b835260048301526020826024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa91821561412b575f9261540757501190565b9091506020813d602011615430575b816154236020938361420c565b8101031261090557511090565b3d9150615416565b90506020813d602011615464575b816154536020938361420c565b8101031261090557516153b0615386565b3d9150615446565b60026001541461547d576002600155565b633ee5aeb560e01b5f5260045ffd5b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152614372916154c860648361420c565b615aef565b6001600160a01b0360405191632474521560e21b83527f2024516755f401845808190bb830b0e4523d0df0845503cab52130a794699a0f60048401521660248201526020816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561412b575f91615565575b501561555757565b6282b42960e81b5f5260045ffd5b61557e915060203d602011612ea457612e96818361420c565b5f61554f565b9091926001600160a01b036143729481604051956323b872dd60e01b60208801521660248601521660448401526064830152606482526154c860848361420c565b6001600160801b03821161564b5760206001600160a01b037f06653c045d0a3144153a51ac6909baae43b8d5b67184cb74e988b72858727fe4921692835f526005825260405f206001600160801b0361562381841682845416614ea5565b166001600160801b031982541617905561563f81600f54614574565b600f55604051908152a2565b6354ada05560e01b5f5260045ffd5b604051632474521560e21b81527f2024516755f401845808190bb830b0e4523d0df0845503cab52130a794699a0f60048201523360248201526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561412b575f9161556557501561555757565b6001600160a01b03805f549216918282198216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6001600160a01b031692833b1561090557604051635c1d516f60e11b81526001600160a01b038316600482015260248101849052604481018290525f92908381606481838a5af190816159b0575b506150b057604051634d3c739760e11b81526001600160a01b0382166004820181905296906020816024818a5afa908115612e42578690869261597a575b506153ab6157c8928988526011602052604088208b5f5260205260405f205490614574565b604051632c333e2560e01b815260048101899052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561596f57869261593b575b50116158d95750843b1561052d576040516330f5344160e01b81526001600160a01b0391909116600482015260248101849052604481019190915281808260648183895af191826158c4575b50506158be577f8d05946ad7acf1695cdb2c1c7b76b11a907b33e5224f086eea17d6a23841e17f9160406020925b8581526011845220855f52825260405f206158b3828254614574565b9055604051908152a3565b50505050565b816158ce9161420c565b6120e757815f615869565b7f8d05946ad7acf1695cdb2c1c7b76b11a907b33e5224f086eea17d6a23841e17f94925060409150926001600160a01b0360209416815260068452818120875f528452815f20660100000000000066ff00000000000019825416179055615897565b9091506020813d602011615967575b816159576020938361420c565b810103126109055751905f61581d565b3d915061594a565b6040513d88823e3d90fd5b9150506020813d6020116159a8575b816159966020938361420c565b810103126109055751856153ab6157a3565b3d9150615989565b6159bd9194505f9061420c565b5f925f615765565b604051633fabe5a360e21b815260a0816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa5f9181615a34575b50615a175750600190565b8015615a2e57610e1081018091116144da57421190565b50600190565b615a4e91925060a03d60a0116128b057612899818361420c565b5092505050905f615a0c565b9091828202915f1984820993838086109503948086039514615ae15784831115615ad257829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b63227bc15360e01b5f5260045ffd5b505091508115614e1b570490565b5f806001600160a01b03615b1893169360208151910182865af1615b11615b5b565b9083615b8a565b8051908115159182615b40575b5050615b2e5750565b635274afe760e01b5f5260045260245ffd5b615b539250602080918301019101614e2f565b155f80615b25565b3d15615b85573d90615b6c8261422e565b91615b7a604051938461420c565b82523d5f602084013e565b606090565b90615bae5750805115615b9f57805190602001fd5b630a12f52160e11b5f5260045ffd5b81511580615bdb575b615bbf575090565b6001600160a01b0390639996b31560e01b5f521660045260245ffd5b50803b15615bb756fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000821000af0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"defaultVersion\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deployPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"initData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deployPaymasterDeterministic\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"initData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getOperatorByPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getPaymasterByOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getPaymasterCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getPaymasterInfo\",\n      \"inputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getPaymasterList\",\n      \"inputs\": [\n        {\n          \"name\": \"offset\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"limit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"paymasters\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hasImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hasPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"implementations\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"operatorByPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"paymasterByOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"paymasterList\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"predictPaymasterAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"predicted\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setDefaultVersion\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalDeployed\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"upgradeImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"newImplementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DefaultVersionChanged\",\n      \"inputs\": [\n        {\n          \"name\": \"oldVersion\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"newVersion\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ImplementationAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"indexed\": true,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ImplementationUpgraded\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"indexed\": true,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"oldImplementation\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newImplementation\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PaymasterDeployed\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RegistryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1167FailedCreateClone\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ImplementationNotFound\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InitFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"returnData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitData\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotRegisteredCommunity\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotRegisteredPaymasterAOA\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OperatorAlreadyHasPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnerMismatch\",\n      \"inputs\": [\n        {\n          \"name\": \"expected\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"actual\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"PaymasterNotFound\",\n      \"inputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"VersionAlreadyExists\",\n      \"inputs\": [\n        {\n          \"name\": \"_version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    }\n  ],\n  \"bytecode\": \"0x6080806040523460755733156062575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600180556117cd908161007a8239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80630618f104146112095780630cfb14b0146111ec57806314b1c401146111cf5780631798d482146111a057806341bbe5a814610e3b57806354fd4d501461113d57806364feab6414610f245780636a18943914610ee15780636b68389614610e7c5780636c583e5914610e3b578063715018a614610dd75780637563750514610b7f5780637857bce914610aad5780637b10399914610a87578063821ac3fb14610a4657806385365cbb146108065780638da5cb5b146107e1578063a87d5a7414610785578063a91ee0dc14610725578063ad384a9b146103f9578063bde9cb2a1461030c578063ce47d467146102cb578063d12553131461025f578063dc2a147214610218578063f2fde38b1461019c5763f3bcebbd14610137575f80fd5b346101985760203660031901126101985760043567ffffffffffffffff8111610198576001600160a01b03602080610174819436906004016112a6565b604051928184925191829101835e8101600281520301902054161515604051908152f35b5f80fd5b34610198576020366003190112610198576001600160a01b036101bd6113fd565b6101c561179a565b168015610205576001600160a01b035f548282198216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b34610198576020366003190112610198576001600160a01b036102396113fd565b165f52600460205260406001600160a01b03815f20541681519080825215156020820152f35b346101985760403660031901126101985761027e60243560043561158f565b6040518091602082016020835281518091526020604084019201905f5b8181106102a9575050500390f35b82516001600160a01b031684528594506020938401939092019160010161029b565b34610198576020366003190112610198576001600160a01b036102ec6113fd565b165f52600460205260206001600160a01b0360405f205416604051908152f35b346101985760403660031901126101985760043567ffffffffffffffff81116101985761033d9036906004016112a6565b6001600160a01b03604051602081845180838701835e8101600281520301902054169081156103d05760206055604384604051903060388301526f5af43d82803e903d91602b57fd5bf3ff60248301526014820152733d602d80600a3d3981f3363d3d373d3d3d363d73815260243560588201526037600c820120607882015201206001600160a01b0360405191168152f35b60405163ed4fac3760e01b8152602060048201529081906103f59060248301906113d9565b0390fd5b346101985760603660031901126101985760043567ffffffffffffffff81116101985761042a9036906004016112a6565b60443567ffffffffffffffff81116101985761044a9036906004016112a6565b9061045361165c565b6001600160a01b0360085416806105fa575b50335f5260036020526001600160a01b0360405f2054166105e757604051602081835180838601835e81016002815203019020546001600160a01b038116156105c55780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f526effffffffffffffffffffffffffffff199060781b1617602052602435603760095ff56001600160a01b0381169182156105b657610567839261052360209633836116ab565b335f526003865260405f20846001600160a01b0319825416179055835f526004865260405f206001600160a01b0333166001600160a01b0319825416179055611499565b610572600754611510565b6007557fa1ff1ed230517376e0a7481a00b4dfc8f2f2e212bccebd933d567bf5640494c0604051806105a73394429083611532565b0390a360018055604051908152f35b6330be1a3d60e21b5f5260045ffd5b60405163ed4fac3760e01b815260206004820152806103f560248201856113d9565b6369e496ad60e01b5f523360045260245ffd5b604051632474521560e21b81527fe94d78b6d8fb99b2c21131eb4552924a60f564d8515a3cc90ef300fc9735c0746004820152336024820152602081604481855afa9081156106ec575f91610706575b50156106f757602060449160405192838092632474521560e21b82527ff86d13979a91272f2c54c4147e588ecbeaad32dd1e0a5332a77356847049a70e60048301523360248301525afa9081156106ec575f916106bd575b50156106ae5782610465565b63707fda8f60e11b5f5260045ffd5b6106df915060203d6020116106e5575b6106d78183611268565b810190611481565b836106a2565b503d6106cd565b6040513d5f823e3d90fd5b6317746e1b60e31b5f5260045ffd5b61071f915060203d6020116106e5576106d78183611268565b8461064a565b346101985760203660031901126101985761073e6113fd565b61074661179a565b6001600160a01b0380600854921691828219821617600855167f482b97c53e48ffa324a976e2738053e9aff6eee04d8aac63b10e19411d869b825f80a3005b34610198576020366003190112610198576001600160a01b036107a66113fd565b16805f5260046020526001600160a01b0360405f20541680156107ce57602090604051908152f35b50630a36f2b760e31b5f5260045260245ffd5b34610198575f3660031901126101985760206001600160a01b035f5416604051908152f35b346101985760203660031901126101985760043567ffffffffffffffff8111610198576108379036906004016112a6565b61083f61179a565b6001600160a01b03604051602081845180838701835e810160028152030190205416156103d05761086e611322565b81519167ffffffffffffffff8311610a325761088b6006546112ea565b601f81116109c4575b50602092601f811160011461091c576108fe92918161090c927ff2d0bf91625d9d6f0875b7d42914fd44597c078083d98cb3619c009136be9f6a965f91610911575b508160011b915f199060031b1c1916176006555b6040519384936040855260408501906113d9565b9083820360208501526113d9565b0390a1005b9050820151876108d6565b601f19811660065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f905f5b8181106109ac5750826108fe9594927ff2d0bf91625d9d6f0875b7d42914fd44597c078083d98cb3619c009136be9f6a9761090c9560019410610994575b5050811b016006556108ea565b8401515f1960f88460031b161c191690558780610987565b84870151835560209687019660019093019201610949565b838111156108945760065f52601f840160051c9060208510610a2a575b601f82910160051c03905f5b8281106109fb575050610894565b5f8282017ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01556001016109ed565b5f91506109e1565b634e487b7160e01b5f52604160045260245ffd5b3461019857602036600319011261019857600435600554811015610198576001600160a01b03610a77602092611455565b90549060031b1c16604051908152f35b34610198575f3660031901126101985760206001600160a01b0360085416604051908152f35b3461019857610abb36611413565b90610ac461179a565b6001600160a01b038216918215908115610b75575b50610b6257604051906001600160a01b03815192602081818501958087835e8101600281520301902054169182156105c55790610b3c916020604051809284518091835e81016002815203019020846001600160a01b031982541617905561154e565b7f2255c4b39068cc7208e9c29b0fc9a3d106b3a41ada38999656d54aa44a6dc9e85f80a4005b50630c76093760e01b5f5260045260245ffd5b90503b1583610ad9565b3461019857610b8d36611413565b610b9561179a565b6001600160a01b038116908115908115610dcd575b50610dbb576040516001600160a01b03835191602081818701948086835e810160028152030190205416610d99576020604051809285518091835e81016002815203019020816001600160a01b031982541617905560065491610c0c836112ea565b15610c41575b610c1b9061154e565b7f9aa81ca4174435962ad1571b0a59c4440cf6de4a12ba4ed96d6fdf5d346742785f80a3005b80519267ffffffffffffffff8411610a3257610c5c906112ea565b601f8111610d2b575b50602092601f8111600114610ca85780610c1b93945f91610c9d575b508160011b915f199060031b1c1916176006555b829150610c12565b905082015185610c81565b601f19811660065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f905f5b818110610d13575090610c1b9495836001949310610cfb575b5050811b01600655610c95565b8401515f1960f88460031b161c191690558580610cee565b84870151835560209687019660019093019201610cd5565b83811115610c655760065f52601f840160051c9060208510610d91575b601f82910160051c03905f5b828110610d62575050610c65565b5f8282017ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0155600101610d54565b5f9150610d48565b60405163b94f32dd60e01b815260206004820152806103f560248201866113d9565b630c76093760e01b5f5260045260245ffd5b90503b1583610baa565b34610198575f36600319011261019857610def61179a565b5f805473ffffffffffffffffffffffffffffffffffffffff19811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610198576020366003190112610198576001600160a01b03610e5c6113fd565b165f52600360205260206001600160a01b0360405f205416604051908152f35b346101985760203660031901126101985760043567ffffffffffffffff811161019857610ead9036906004016112a6565b6001600160a01b03604051602081845180838701835e8101600281520301902054169081156103d057602082604051908152f35b34610198576020366003190112610198576001600160a01b03610f026113fd565b165f52600360205260206001600160a01b0360405f2054161515604051908152f35b346101985760403660031901126101985760043567ffffffffffffffff811161019857610f559036906004016112a6565b60243567ffffffffffffffff811161019857610f759036906004016112a6565b90610f7e61165c565b6001600160a01b03600854168061104b575b50335f5260036020526001600160a01b0360405f2054166105e757604051602081835180838601835e81016002815203019020546001600160a01b038116156105c55780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff06001600160a01b0381169182156105b657610567839261052360209633836116ab565b604051632474521560e21b81527fe94d78b6d8fb99b2c21131eb4552924a60f564d8515a3cc90ef300fc9735c0746004820152336024820152602081604481855afa9081156106ec575f9161111e575b50156106f757602060449160405192838092632474521560e21b82527ff86d13979a91272f2c54c4147e588ecbeaad32dd1e0a5332a77356847049a70e60048301523360248301525afa9081156106ec575f916110ff575b50156106ae5782610f90565b611118915060203d6020116106e5576106d78183611268565b836110f3565b611137915060203d6020116106e5576106d78183611268565b8461109b565b34610198575f3660031901126101985761119c60405161115e604082611268565b601681527f5061796d6173746572466163746f72792d312e302e320000000000000000000060208201526040519182916020835260208301906113d9565b0390f35b34610198575f3660031901126101985761119c6111bb611322565b6040519182916020835260208301906113d9565b34610198575f366003190112610198576020600554604051908152f35b34610198575f366003190112610198576020600754604051908152f35b346101985760203660031901126101985760043567ffffffffffffffff8111610198576001600160a01b03602080611246819436906004016112a6565b604051928184925191829101835e810160028152030190205416604051908152f35b90601f8019910116810190811067ffffffffffffffff821117610a3257604052565b67ffffffffffffffff8111610a3257601f01601f191660200190565b81601f82011215610198576020813591016112c08261128a565b926112ce6040519485611268565b8284528282011161019857815f92602092838601378301015290565b90600182811c92168015611318575b602083101461130457565b634e487b7160e01b5f52602260045260245ffd5b91607f16916112f9565b604051905f8260065491611335836112ea565b80835292600181169081156113ba575060011461135b575b61135992500383611268565b565b5060065f90815290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b81831061139e5750509060206113599282010161134d565b6020919350806001915483858901015201910190918492611386565b6020925061135994915060ff191682840152151560051b82010161134d565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361019857565b6040600319820112610198576004359067ffffffffffffffff82116101985761143e916004016112a6565b906024356001600160a01b03811681036101985790565b60055481101561146d5760055f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b90816020910312610198575180151581036101985790565b60055468010000000000000000811015610a32576001810160055560055481101561146d5760055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b5f19811461151e5760010190565b634e487b7160e01b5f52601160045260245ffd5b9291906115496020916040865260408601906113d9565b930152565b602090604051918183925191829101835e81015f815203902090565b67ffffffffffffffff8111610a325760051b60200190565b9190820180921161151e57565b91906005549081841015611640576115a79084611582565b90808211611638575b5082810390811161151e576115c48161156a565b906115d26040519283611268565b808252601f196115e18261156a565b0136602084013781935f5b8281106115f95750505050565b6001600160a01b0361161361160e8385611582565b611455565b90549060031b1c1690845181101561146d5760019160208260051b87010152016115ec565b90505f6115b0565b50509050604051611652602082611268565b5f81525f36813790565b60026001541461166d576002600155565b633ee5aeb560e01b5f5260045ffd5b3d156116a6573d9061168d8261128a565b9161169b6040519384611268565b82523d5f602084013e565b606090565b9091600481511061178b575f816020829351910182855af16116cb61167c565b901561175b57505f80916040516020810190638da5cb5b60e01b8252600481526116f6602482611268565b51915afa61170261167c565b90158015611780575b61175b576020818051810103126101985760200151906001600160a01b038216809203610198576001600160a01b0316808203611746575050565b632767cb4760e11b5f5260045260245260445ffd5b60405163044ba14b60e31b8152602060048201529081906103f59060248301906113d9565b50602081511061170b565b6307ce216360e51b5f5260045ffd5b6001600160a01b035f541633036117ad57565b63118cdaa760e01b5f523360045260245ffdfea164736f6c6343000821000a\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"receive\",\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"CACHED_PRICE_DELTA_BPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"CACHED_PRICE_MAX\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"CACHED_PRICE_MIN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_ETH_USD_PRICE\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"int256\",\n          \"internalType\": \"int256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_GAS_TOKENS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_SBTS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_SERVICE_FEE\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MIN_ETH_USD_PRICE\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"int256\",\n          \"internalType\": \"int256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"TIMESTAMP_GRACE_SECONDS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"activateInRegistry\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addDeposit\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addStake\",\n      \"inputs\": [\n        {\n          \"name\": \"unstakeDelaySec\",\n          \"type\": \"uint32\",\n          \"internalType\": \"uint32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"balances\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cachedPrice\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"uint208\",\n          \"internalType\": \"uint208\"\n        },\n        {\n          \"name\": \"updatedAt\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"calculateCost\",\n      \"inputs\": [\n        {\n          \"name\": \"gasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"useRealtime\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deactivateFromRegistry\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"depositFor\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ethUsdPriceFeed\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract AggregatorV3Interface\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSupportedTokens\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSupportedTokensInfo\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"tokens\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"prices\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"decimalsArr\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initialize\",\n      \"inputs\": [\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_ethUsdPriceFeed\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_serviceFeeRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_maxGasCostCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_priceStalenessThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isActiveInRegistry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isRegistrySet\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isTokenSupported\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"maxGasCostCap\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"oracleDecimals\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pause\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"paused\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"postOp\",\n      \"inputs\": [\n        {\n          \"name\": \"mode\",\n          \"type\": \"uint8\",\n          \"internalType\": \"enum PostOpMode\"\n        },\n        {\n          \"name\": \"context\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"actualGasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"priceStalenessThreshold\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"serviceFeeRate\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setCachedPrice\",\n      \"inputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMaxGasCostCap\",\n      \"inputs\": [\n        {\n          \"name\": \"_maxGasCostCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPriceStalenessThreshold\",\n      \"inputs\": [\n        {\n          \"name\": \"_priceStalenessThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setServiceFeeRate\",\n      \"inputs\": [\n        {\n          \"name\": \"_serviceFeeRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTokenPrice\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"price\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTreasury\",\n      \"inputs\": [\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenDecimals\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenPrices\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"treasury\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unlockStake\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unpause\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePrice\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validatePaymasterUserOp\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"maxCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"context\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"validationData\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdraw\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawStake\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawTo\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ActivatedInRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DeactivatedFromRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FundsDeposited\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FundsWithdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MaxGasCostCapUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Paused\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PostOpProcessed\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"actualGasCostWei\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"tokenCost\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"protocolRevenue\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PriceUpdateFailed\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PriceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"updatedAt\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ServiceFeeUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldRate\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newRate\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StalenessThresholdUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldThreshold\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newThreshold\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokenPriceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"price\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokenRemoved\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TreasuryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Unpaused\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressInsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedInnerCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MathOverflowedMulDiv\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__GasCostExceedsCap\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InsufficientBalance\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InvalidGasCostCap\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InvalidOraclePrice\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InvalidPaymasterData\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InvalidServiceFee\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InvalidStalenessThreshold\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__InvalidTokenBalance\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__MaxTokensReached\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__OnlyEntryPoint\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__Paused\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__PriceNotInitialized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__RegistryNotSet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__TokenDecimalsTooLarge\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__TokenNotInList\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__TokenNotSupported\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Paymaster__ZeroAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"governance\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initialWindow\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_ATTEST_ANCHOR_AGE\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_LIVENESS_WINDOW\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MIN_LIVENESS_WINDOW\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"areOffline\",\n      \"inputs\": [\n        {\n          \"name\": \"operators\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"out\",\n          \"type\": \"bool[]\",\n          \"internalType\": \"bool[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"attestLiveness\",\n      \"inputs\": [\n        {\n          \"name\": \"anchorBlock\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"anchorHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isOffline\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"lastLive\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"livenessWindow\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setLivenessWindow\",\n      \"inputs\": [\n        {\n          \"name\": \"newWindow\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"LivenessAttested\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"atBlock\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"LivenessWindowUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldWindow\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newWindow\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BadAnchorHash\",\n      \"inputs\": [\n        {\n          \"name\": \"anchorBlock\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidWindow\",\n      \"inputs\": [\n        {\n          \"name\": \"window\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RenounceDisabled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StaleAnchor\",\n      \"inputs\": [\n        {\n          \"name\": \"anchorBlock\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_dailyLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_minDailyLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_initialTokens\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"_initialConfigs\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n          \"components\": [\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"account\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addTokenConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarGlobalGuard.TokenConfig\",\n          \"components\": [\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"blockUnconfiguredTokens\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"dailyLimit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"dailySpent\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"decreaseDailyLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"_newLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"decreaseTokenDailyLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"minDailyLimit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recordSpend\",\n      \"inputs\": [\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recordTokenSpend\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"remainingDailyAllowance\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setStrictMode\",\n      \"inputs\": [\n        {\n          \"name\": \"enabled\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"todaySpent\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenConfigs\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"tier1Limit\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"tier2Limit\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenDailySpent\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenTodaySpent\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DailyLimitDecreased\",\n      \"inputs\": [\n        {\n          \"name\": \"oldLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SpendRecorded\",\n      \"inputs\": [\n        {\n          \"name\": \"day\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"totalSpent\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StrictModeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"enabled\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokenConfigAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tier1Limit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"tier2Limit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokenDailyLimitDecreased\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"oldLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokenSpendRecorded\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"day\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"totalSpent\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BelowMinDailyLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minimum\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CanOnlyDecreaseLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"current\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DailyLimitExceeded\",\n      \"inputs\": [\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"remaining\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientTokenTier\",\n      \"inputs\": [\n        {\n          \"name\": \"required\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"provided\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidTokenConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tier1\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"tier2\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"daily\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyAccount\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TierLimitTooLarge\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenAlreadyConfigured\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenCanOnlyDecreaseLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"current\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenConfigLengthMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenDailyLimitExceeded\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"remaining\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenNotConfigured\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"function\",\n      \"name\": \"parseTokenTransfer\",\n      \"inputs\": [\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"tokenIn\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amountIn\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"function\",\n      \"name\": \"parseTokenTransfer\",\n      \"inputs\": [\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"receive\",\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addStake\",\n      \"inputs\": [\n        {\n          \"name\": \"unstakeDelaySec\",\n          \"type\": \"uint32\",\n          \"internalType\": \"uint32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"balanceOf\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"delegateAndRevert\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"depositTo\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"eip712Domain\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"fields\",\n          \"type\": \"bytes1\",\n          \"internalType\": \"bytes1\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"chainId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"verifyingContract\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"extensions\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getCurrentUserOpHash\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDepositInfo\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"info\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IStakeManager.DepositInfo\",\n          \"components\": [\n            {\n              \"name\": \"deposit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"staked\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"stake\",\n              \"type\": \"uint112\",\n              \"internalType\": \"uint112\"\n            },\n            {\n              \"name\": \"unstakeDelaySec\",\n              \"type\": \"uint32\",\n              \"internalType\": \"uint32\"\n            },\n            {\n              \"name\": \"withdrawTime\",\n              \"type\": \"uint48\",\n              \"internalType\": \"uint48\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDomainSeparatorV4\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getNonce\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"key\",\n          \"type\": \"uint192\",\n          \"internalType\": \"uint192\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getPackedUserOpTypeHash\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSenderAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"initCode\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getUserOpHash\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"handleAggregatedOps\",\n      \"inputs\": [\n        {\n          \"name\": \"opsPerAggregator\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct IEntryPoint.UserOpsPerAggregator[]\",\n          \"components\": [\n            {\n              \"name\": \"userOps\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct PackedUserOperation[]\",\n              \"components\": [\n                {\n                  \"name\": \"sender\",\n                  \"type\": \"address\",\n                  \"internalType\": \"address\"\n                },\n                {\n                  \"name\": \"nonce\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"initCode\",\n                  \"type\": \"bytes\",\n                  \"internalType\": \"bytes\"\n                },\n                {\n                  \"name\": \"callData\",\n                  \"type\": \"bytes\",\n                  \"internalType\": \"bytes\"\n                },\n                {\n                  \"name\": \"accountGasLimits\",\n                  \"type\": \"bytes32\",\n                  \"internalType\": \"bytes32\"\n                },\n                {\n                  \"name\": \"preVerificationGas\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"gasFees\",\n                  \"type\": \"bytes32\",\n                  \"internalType\": \"bytes32\"\n                },\n                {\n                  \"name\": \"paymasterAndData\",\n                  \"type\": \"bytes\",\n                  \"internalType\": \"bytes\"\n                },\n                {\n                  \"name\": \"signature\",\n                  \"type\": \"bytes\",\n                  \"internalType\": \"bytes\"\n                }\n              ]\n            },\n            {\n              \"name\": \"aggregator\",\n              \"type\": \"address\",\n              \"internalType\": \"contract IAggregator\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"beneficiary\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"handleOps\",\n      \"inputs\": [\n        {\n          \"name\": \"ops\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct PackedUserOperation[]\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"beneficiary\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"incrementNonce\",\n      \"inputs\": [\n        {\n          \"name\": \"key\",\n          \"type\": \"uint192\",\n          \"internalType\": \"uint192\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"innerHandleOp\",\n      \"inputs\": [\n        {\n          \"name\": \"callData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"opInfo\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct EntryPoint.UserOpInfo\",\n          \"components\": [\n            {\n              \"name\": \"mUserOp\",\n              \"type\": \"tuple\",\n              \"internalType\": \"struct EntryPoint.MemoryUserOp\",\n              \"components\": [\n                {\n                  \"name\": \"sender\",\n                  \"type\": \"address\",\n                  \"internalType\": \"address\"\n                },\n                {\n                  \"name\": \"nonce\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"verificationGasLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"callGasLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"paymasterVerificationGasLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"paymasterPostOpGasLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"preVerificationGas\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"paymaster\",\n                  \"type\": \"address\",\n                  \"internalType\": \"address\"\n                },\n                {\n                  \"name\": \"maxFeePerGas\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                },\n                {\n                  \"name\": \"maxPriorityFeePerGas\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            },\n            {\n              \"name\": \"userOpHash\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"prefund\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"contextOffset\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"preOpGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        },\n        {\n          \"name\": \"context\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"actualGasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nonceSequenceNumber\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint192\",\n          \"internalType\": \"uint192\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"senderCreator\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract ISenderCreator\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"supportsInterface\",\n      \"inputs\": [\n        {\n          \"name\": \"interfaceId\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unlockStake\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawStake\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawTo\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        },\n        {\n          \"name\": \"withdrawAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AccountDeployed\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"factory\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BeforeExecution\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Deposited\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"totalDeposit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EIP712DomainChanged\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EIP7702AccountInitialized\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"delegate\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"IgnoredInitCode\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"unusedFactory\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PostOpRevertReason\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revertReason\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SignatureAggregatorChanged\",\n      \"inputs\": [\n        {\n          \"name\": \"aggregator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakeLocked\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"totalStaked\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"unstakeDelaySec\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakeUnlocked\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"withdrawTime\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"StakeWithdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"UserOperationEvent\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"success\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"actualGasCost\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"actualGasUsed\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"UserOperationPrefundTooLow\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"UserOperationRevertReason\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revertReason\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Withdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DelegateAndRevert\",\n      \"inputs\": [\n        {\n          \"name\": \"success\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"ret\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DepositWithdrawalFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revertReason\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Eip7702SenderNotDelegate\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Eip7702SenderWithoutCode\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedOp\",\n      \"inputs\": [\n        {\n          \"name\": \"opIndex\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedOpWithRevert\",\n      \"inputs\": [\n        {\n          \"name\": \"opIndex\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"inner\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedSendToBeneficiary\",\n      \"inputs\": [\n        {\n          \"name\": \"beneficiary\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revertData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientDeposit\",\n      \"inputs\": [\n        {\n          \"name\": \"currentDeposit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"withdrawAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InternalFunction\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidBeneficiary\",\n      \"inputs\": [\n        {\n          \"name\": \"beneficiary\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"paymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPaymasterData\",\n      \"inputs\": [\n        {\n          \"name\": \"paymasterAndDataLength\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPaymasterSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"dataLength\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"pmSignatureLength\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidShortString\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidStake\",\n      \"inputs\": [\n        {\n          \"name\": \"msgValue\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"currentStake\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidUnstakeDelay\",\n      \"inputs\": [\n        {\n          \"name\": \"newUnstakeDelaySec\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"currentUnstakeDelaySec\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotStaked\",\n      \"inputs\": [\n        {\n          \"name\": \"currentStake\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"unstakeDelaySec\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"staked\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"PostOpReverted\",\n      \"inputs\": [\n        {\n          \"name\": \"returnData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Reentrancy\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SenderAddressResult\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SignatureValidationFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"aggregator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StakeNotUnlocked\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawTime\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"blockTimestamp\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StakeWithdrawalFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revertReason\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StringTooLong\",\n      \"inputs\": [\n        {\n          \"name\": \"str\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WithdrawalNotDue\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawTime\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"blockTimestamp\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    }\n  ],\n  \"bytecode\": \"0x6101806040523461019557604051610018604082610199565b600781526020810190664552433433333760c81b82526040519161003d604084610199565b600183526020830191603160f81b8352610056816101bc565b6101205261006384610363565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526100cc60c082610199565b5190206080523060c0526040516104ee8082016001600160401b038111838210176101815782916150f7833903905ff080156101765761016052604051614c4f90816104a8823960805181612d20015260a05181612ddd015260c05181612cf1015260e05181612d6f01526101005181612d95015261012051816114eb0152610140518161151401526101605181818161137e01528181611b27015281816148670152614aba0152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761018157604052565b908151602081105f14610236575090601f8151116101f65760208151910151602082106101e7571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b03811161018157600254600181811c91168015610359575b602082101461034557601f8111610306575b50602092601f82116001146102a557928192935f9261029a575b50508160011b915f199060031b1c19161760025560ff90565b015190505f80610281565b601f1982169360025f52805f20915f5b8681106102ee57508360019596106102d6575b505050811b0160025560ff90565b01515f1960f88460031b161c191690555f80806102c8565b919260206001819286850151815501940192016102b5565b818111156102675760025f5260205f20601f80840160051c809201920160051c03905f5b828110610338575050610267565b5f8282015560010161032a565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610255565b908151602081105f1461038e575090601f8151116101f65760208151910151602082106101e7571790565b6001600160401b03811161018157600354600181811c9116801561049d575b602082101461034557601f811161045e575b50602092601f82116001146103fd57928192935f926103f2575b50508160011b915f199060031b1c19161760035560ff90565b015190505f806103d9565b601f1982169360035f52805f20915f5b868110610446575083600195961061042e575b505050811b0160035560ff90565b01515f1960f88460031b161c191690555f8080610420565b9192602060018192868501518155019401920161040d565b818111156103bf5760035f5260205f20601f80840160051c809201920160051c03905f5b8281106104905750506103bf565b5f82820155600101610482565b90607f16906103ad56fe6101606040526004361015610024575b3615610019575f80fd5b610022336129fc565b005b5f610140525f3560e01c806242dc5314611ec057806301ffc9a714611d8c5780630396cb6014611b4b57806309ccb88014611b055780630bd28e3b14611a8757806313c65a6e14611a6a578063154e58dc14611a2d5780631b2e01b8146119c2578063205c2878146118ab57806322cdde4c1461186357806335567e1a146117d45780635287ce12146116df57806370a082311461169f578063765e827f146115f257806384b0196e146114d0578063850aaf62146114295780639b249f69146112fd578063b0a398d1146112db578063b760faf9146112bf578063bb9fe6bf14611187578063c23a5cea14610fdf5763dbed18e00361000f5734610d795761012c36612545565b6101005260e05233321480610fd6575b15610fa8576101405190815b60e0518110610db2575061015b8261288b565b61012052610140516080526101405160c0525b60e05160c05110610279577fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9726101405161014051a161014051608081905290815b60e05181106101cc576101c58361010051613f53565b6101405180f35b6102216101dc8260e05185612aaa565b6001600160a01b036101f060208301612b3e565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d6101405161014051a280612aea565b9061014051915b80831061023a575050506001016101af565b90919460019061026761024e88858761293c565b61025d608051610120516129a9565b5190608051613967565b01958160805101608052019190610228565b61028860c05160e05183612aaa565b6001600160a01b036102a9602061029f8480612aea565b60a0529301612b3e565b61014051911691905b60a05181106102d65750505060a05160805101608052600160c0510160c05261016e565b6102e78160805101610120516129a9565b516102f58260a0518561293c565b61014051915a8151926001600160a01b0361030f82612b3e565b168452602081810135908501526fffffffffffffffffffffffffffffffff6080808301358281166060880152811c604087015260a083013560c0808801919091528301359182166101008701521c61012085015261037060e0820182612b52565b9081610ce5575b50506040519361038682612747565b6020850152846040526040810151946effffffffffffffffffffffffffffff8660c08401511760608401511760808401511760a084015117610100840151176101208401511711610c985750604081015160608201510160808201510160a08201510160c082015101610100820151029485604086015284516001600160a01b0360e0818351169261042c898d61042060408b018b612b52565b929091608051016147c5565b0151169661014051978015610c67575b8751604081015190516001600160a01b03169061014051506040519a8b8960208d01519260208301937f19822f7c000000000000000000000000000000000000000000000000000000008552602484019261049693614bd2565b03601f1981018d526104a8908d612465565b61014051908c5190846101405190602095f161014051519a3d602003610c5c575b60405215610b82575015610b1d575b50506001600160a01b03825116602083015190610140515260016020526040610140512077ffffffffffffffffffffffffffffffffffffffffffffffff8260401c165f5260205267ffffffffffffffff60405f2091825492610539846126b0565b90551603610acd575a840311610a7d5760e001516060906001600160a01b03166107c7575b6001600160a01b03949260a0859360809360606105869801520135905a90030191015261453e565b929091168603610777576106d557506105a66001600160a01b039161453e565b92909116610685576105bb57506001016102b2565b6106355760a49060405190631101335b60e11b825260805101600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b60849060405190631101335b60e11b825260805101600482015260406024820152602060448201527f41413337207061796d617374657220696e76616c20626c6f636b2072616e67656064820152fd5b60848360405190631101335b60e11b825260805101600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b8260849161072a5760405190631101335b60e11b825260805101600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b60405190631101335b60e11b825260805101600482015260406024820152601e60448201527f41413237206f7574736964652076616c696420626c6f636b2072616e676500006064820152fd5b60848460405190631101335b60e11b825260805101600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b9897969594505a988351996107ee6001600160a01b0360e08d015116604087015190614bf4565b15610a2d5760807f52b7512c000000000000000000000000000000000000000000000000000000009798999a9b01516040516108518161084360208a015160408b015190602084019d8e528960248501614bd2565b03601f198101835282612465565b865160806001600160a01b0360e08301511691015161014051918b61014051928551926101405191f1983d908161014051843e519482519a604084019b8c5191156109ab5760401490811591610997575b506109125750601f601f199101160191826040525a9003116108c557509461055e565b8088631101335b60e11b6084935260805101600482015260406024820152602060448201527f41413336206f76657220706d566572696669636174696f6e4761734c696d69746064820152fd5b8b61099361091e612cba565b6040519384937f65c8fd4d0000000000000000000000000000000000000000000000000000000085526080510160048501526024840152601d60648401527f41413335206d616c666f726d6564207061796d61737465722064617461000000608484015260a0604484015260a48301906125ad565b0390fd5b601f199150601f011681018214155f6108a2565b828e6109936109b8612cba565b6040519384937f65c8fd4d0000000000000000000000000000000000000000000000000000000085526080510160048501526024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906125ad565b60848760405190631101335b60e11b825260805101600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b60848760405190631101335b60e11b825260805101600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b60848860405190631101335b60e11b825260805101600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b610b2691614bf4565b15610b32578b806104d8565b60848860405190631101335b60e11b825260805101600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b8b903b610bd95760849060405190631101335b60e11b825260805101600482015260406024820152601960448201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006064820152fd5b610be1612cba565b906109936040519283927f65c8fd4d00000000000000000000000000000000000000000000000000000000845260805101600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906125ad565b6101405191506104c9565b6101408051849052516020819052604090205490985081811115610c915750610140515b9761043c565b8103610c8b565b8088631101335b60e11b6084935260805101600482015260406024820152601860448201527f41413934206761732076616c756573206f766572666c6f7700000000000000006064820152fd5b60348210610d805781601411610d795780359160248110610d7957603411610d79576024810135608090811c60a0880152601490910135811c90860152606081901c15610d3b5760601c60e08501528980610377565b6001600160a01b03907fd8ccb29200000000000000000000000000000000000000000000000000000000610140515260601c16600452602461014051fd5b6101405180fd5b507f120aaab5000000000000000000000000000000000000000000000000000000006101405152600452602461014051fd5b610dbf8160e05184612aaa565b92610dca8480612aea565b91906001600160a01b03610de060208801612b3e565b169560018714610f765786610dfd575b5050019250600101610148565b806040610e0b920190612b52565b91873b15610d7957916040519283917f2dd8113300000000000000000000000000000000000000000000000000000000835286604484016040600486015252606483019160648860051b8501019281610140517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee182360301915b8b8210610f1c57505050505081610ead916003198580950301602485015261014051956129dc565b0381610140518a5af19081610f01575b50610ef457847f86a9f750000000000000000000000000000000000000000000000000000000006101405152600452602461014051fd5b929350839260015f610df0565b61014051610f0e91612465565b61014051610d79575f610ebd565b9193967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c90879294969703018552863584811215610d79576020610f6560019385839401612bf3565b980195019201889695949391610e85565b867f86a9f750000000000000000000000000000000000000000000000000000000006101405152600452602461014051fd5b7fab143c06000000000000000000000000000000000000000000000000000000006101405152600461014051fd5b50333b1561013c565b34610d79576020600319360112610d7957610ff86124da565b33610140515261014051602052600160406101405120019081549165ffffffffffff6dffffffffffffffffffffffffffff8460081c169361104960ff821663ffffffff8360781c1687801515612a55565b60981c1680156111525742811161111d575080547fffffffffffffff000000000000000000000000000000000000000000000000ff169055604080516001600160a01b03831681526020810184905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a261014051808080856001600160a01b0386165af16110d96126ea565b90156110e6576101405180f35b610993906040519384937f0dcf087c0000000000000000000000000000000000000000000000000000000085523360048601612719565b7f561d331200000000000000000000000000000000000000000000000000000000610140515260045242602452604461014051fd5b7ffbd021d600000000000000000000000000000000000000000000000000000000610140515260045242602452604461014051fd5b34610d795761014051600319360112610d7957336101405152610140516020526001604061014051200180546111ef63ffffffff8260781c16918260ff6dffffffffffffffffffffffffffff8360081c169216916111e9838383811515612a55565b82612a55565b65ffffffffffff4216019065ffffffffffff821161128c5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609884901b1617905560405165ffffffffffff909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a26101405180f35b7f4e487b710000000000000000000000000000000000000000000000000000000061014051526011600452602461014051fd5b6020600319360112610d79576101c56112d66124da565b6129fc565b34610d795761014051600319360112610d79576020610140515c604051908152f35b34610d79576020600319360112610d795760043567ffffffffffffffff8111610d7957602061133361136e9236906004016124f0565b60405193849283927f570e1a3600000000000000000000000000000000000000000000000000000000845285600485015260248401916129dc565b0381610140516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561141b576001600160a01b039161014051916113ec575b507f6ca7b80600000000000000000000000000000000000000000000000000000000610140515216600452602461014051fd5b61140e915060203d602011611414575b6114068183612465565b8101906129bd565b826113b9565b503d6113fc565b6040513d61014051823e3d90fd5b34610d79576040600319360112610d79576114426124da565b60243567ffffffffffffffff8111610d79576114629036906004016124f0565b604051929181908437820190610140518252610140519280610140519303915af461148b6126ea565b906109936040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906125ad565b34610d795761014051600319360112610d795761159061150f7f0000000000000000000000000000000000000000000000000000000000000000614242565b6115387f00000000000000000000000000000000000000000000000000000000000000006143b8565b6040519060209061159e9061154d8385612465565b6101405184525f3681376040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e08588015260e08701906125ad565b9085820360408701526125ad565b4660608501523060808501526101405160a085015283810360c0850152818084519283815201930191610140515b8281106115db57505050500390f35b8351855286955093810193928101926001016115cc565b34610d795761160036612545565b91909133321480611696575b15610fa85761161a8361288b565b611625818585612f1b565b5061014051927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a161014051915b858310611666576101c58585613f53565b90919360019061168c61167a87898761293c565b61168488866129a9565b519088613967565b0194019190611655565b50333b1561160c565b34610d79576020600319360112610d79576001600160a01b036116c06124da565b1661014051526101405160205260206040610140512054604051908152f35b34610d79576020600319360112610d79576001600160a01b036117006124da565b60405161170c816123e3565b6101405181526101405160208201526101405160408201526101405160608201526080610140519101521661014051526101405160205260a06040610140512065ffffffffffff60405161175f816123e3565b63ffffffff60018454948584520154916dffffffffffffffffffffffffffff6020820160ff8516151581526040830190828660081c1682528660806060860195878960781c168752019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b34610d79576040600319360112610d795760206117ef6124da565b6001600160a01b036117ff61251e565b91166101405152600182526040610140512077ffffffffffffffffffffffffffffffffffffffffffffffff82165f52825260405f20547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b34610d79576020600319360112610d795760043567ffffffffffffffff8111610d79576101206003198236030112610d79576118a3602091600401612747565b604051908152f35b34610d79576040600319360112610d79576118c46124da565b60243590336101405152610140516020526040610140512082815480821161198e57906118f0916126dd565b9055604080516001600160a01b03831681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a261014051808080856001600160a01b0386165af161194a6126ea565b9015611957576101405180f35b610993906040519384937f9f3d69330000000000000000000000000000000000000000000000000000000085523360048601612719565b7f25c3f46e000000000000000000000000000000000000000000000000000000006101405152600452602452604461014051fd5b34610d79576040600319360112610d79576119db6124da565b6001600160a01b036119eb61251e565b91166101405152600160205277ffffffffffffffffffffffffffffffffffffffffffffffff6040610140512091165f52602052602060405f2054604051908152f35b34610d795761014051600319360112610d795760206040517f29a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e8152f35b34610d795761014051600319360112610d795760206118a3612ce7565b34610d79576020600319360112610d795760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610d7957336101405152600160205277ffffffffffffffffffffffffffffffffffffffffffffffff6040610140512091165f5260205260405f20611afc81546126b0565b90556101405180f35b34610d795761014051600319360112610d795760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6020600319360112610d795760043563ffffffff8116808203610d795733610140515261014051602052611d546dffffffffffffffffffffffffffff6040610140512093611bb960018601549163ffffffff8360781c1690611bb082828915156125ec565b818710156125ec565b60081c1692611bf1611bcb348661262d565b94611bd98134881515612667565b346dffffffffffffffffffffffffffff871115612667565b5460405190611bff826123e3565b815265ffffffffffff602082019160018352604081016dffffffffffffffffffffffffffff87168152606082019086825260016080840193610140518552336101405152610140516020526040610140512090518155019451151560ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008754169116178555517fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff6effffffffffffffffffffffffffff008087549360081b16169116178455517fffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffff72ffffffff0000000000000000000000000000008086549360781b1616911617835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b60405191825260208201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a26101405180f35b34610d79576020600319360112610d79576004357fffffffff000000000000000000000000000000000000000000000000000000008116809103610d7957807fd9934b3f0000000000000000000000000000000000000000000000000000000060209214908115611e96575b8115611e6c575b8115611e42575b8115611e18575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611e0d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611e06565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611dff565b7f283f54890000000000000000000000000000000000000000000000000000000081149150611df8565b346122ba576102006003193601126122ba5760043567ffffffffffffffff81116122ba57366023820112156122ba57611f039036906024816004013591016124a4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c081126122ba5761014060405191611f3f836123e3565b126122ba57604051611f508161242c565b6024356001600160a01b03811681036122ba57815260443560208201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c0820152610104356001600160a01b03811681036122ba5760e082015261012435610100820152610144356101208201528152602081019161016435835260408201906101843582526101a435606084015260808301916101c43583526101e43567ffffffffffffffff81116122ba5761200f9036906004016124f0565b955a903033036123bb578651606081015195603f5a0260061c61271060a084015189010111612393575f96815191826122f3575b50505050509061205b915a90038551019636916124a4565b925a93855161010081015161012082015148018082105f146122eb5750975b61209a6001600160a01b0360e08401511694518203606084015190613ff3565b01925f9281612196575050516001600160a01b0316945b5a900301019485029051928184105f1461214f575050600381101561211c576002036120ee57602092816118a392936120e9816140e0565b614012565b7fdeadaa51000000000000000000000000000000000000000000000000000000006101405152602061014051fd5b7f4e487b710000000000000000000000000000000000000000000000000000000061014051526021600452602461014051fd5b8161217892959496939603906001600160a01b03165f525f60205260405f209081540180915590565b50600384101561211c5782612191926020951590614079565b6118a3565b9096918782516121a9575b5050506120b1565b90919293505a9260038810156122be57600288036121df575b505060a06121d6925a900391015190613ff3565b908880806121a1565b60a083015191803b156122ba578b925f928361223b938c8b88604051998a98899788957f7c627b2100000000000000000000000000000000000000000000000000000000875260048701526080602487015260848601906125ad565b9202604484015260648301520393f190816122a5575b5061229b57610993612261612cba565b6040519182917fad7954bc0000000000000000000000000000000000000000000000000000000083526020600484015260248301906125ad565b60a06121d66121c2565b5f6122af91612465565b5f610140528a612251565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90509761207a565b915f929183809360206001600160a01b03885116910192f115612319575b808080612043565b61205b939295506040519161232c612cba565b908151612345575b505050604052600193909188612311565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20190519160206001600160a01b03855116940151612388604051928392836125d2565b0390a3888080612334565b7fdeaddead000000000000000000000000000000000000000000000000000000005f5260205ffd5b7f9fbdaa09000000000000000000000000000000000000000000000000000000005f5260045ffd5b60a0810190811067ffffffffffffffff8211176123ff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610140810190811067ffffffffffffffff8211176123ff57604052565b6060810190811067ffffffffffffffff8211176123ff57604052565b90601f601f19910116810190811067ffffffffffffffff8211176123ff57604052565b67ffffffffffffffff81116123ff57601f01601f191660200190565b9291926124b082612488565b916124be6040519384612465565b8294818452818301116122ba578281602093845f960137010152565b600435906001600160a01b03821682036122ba57565b9181601f840112156122ba5782359167ffffffffffffffff83116122ba57602083818601950101116122ba57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff821682036122ba57565b9060406003198301126122ba5760043567ffffffffffffffff81116122ba5760040182601f820112156122ba5780359267ffffffffffffffff84116122ba576020808301928560051b0101116122ba5791906024356001600160a01b03811681036122ba5790565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040906125e99392815281602082015201906125ad565b90565b156125f5575050565b9063ffffffff80927fe1823bce000000000000000000000000000000000000000000000000000000005f52166004521660245260445ffd5b9190820180921161263a57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15612670575050565b6dffffffffffffffffffffffffffff92507f0e10009c000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461263a5760010190565b9190820391821161263a57565b3d15612714573d906126fb82612488565b916127096040519384612465565b82523d5f602084013e565b606090565b90926001600160a01b03608093816125e99796168452166020830152604082015281606082015201906125ad565b60429061275381612e1b565b61275b612ce7565b9161276581612b3e565b91801561285657905b60c061277d6060830183612b52565b9081604051918237209161279d61279760e0830183612b52565b90614488565b92604051946001600160a01b0360208701977f29a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e895216604087015260208301356060870152608086015260a085015260808101358285015260a081013560e08501520135610100830152610120820152610120815261281e61014082612465565b519020604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b506128646040820182612b52565b9081604051918237209061276e565b67ffffffffffffffff81116123ff5760051b60200190565b9061289582612873565b6128a26040519182612465565b828152601f196128b28294612873565b01905f5b8281106128c257505050565b6020906040516128d1816123e3565b6040516128dd8161242c565b5f81525f848201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f61012082015281525f838201525f60408201525f60608201525f6080820152828285010152016128b6565b919081101561297c5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1813603018212156122ba570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805182101561297c5760209160051b010190565b908160209103126122ba57516001600160a01b03811681036122ba5790565b601f8260209493601f1993818652868601375f8582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206001600160a01b03612a4934856001600160a01b03165f525f60205260405f209081540180915590565b936040519485521692a2565b15612a5f57505050565b906dffffffffffffffffffffffffffff63ffffffff927f8421e8e5000000000000000000000000000000000000000000000000000000005f521660045216602452151560445260645ffd5b919081101561297c5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1813603018212156122ba570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156122ba570180359067ffffffffffffffff82116122ba57602001918160051b360383136122ba57565b356001600160a01b03811681036122ba5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156122ba570180359067ffffffffffffffff82116122ba576020019181360383136122ba57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156122ba57016020813591019167ffffffffffffffff82116122ba5781360383136122ba57565b8035916001600160a01b03831683036122ba576001600160a01b036125e99316815260208201356020820152612cab612c9f612c66612c4b612c386040870187612ba3565b61012060408801526101208701916129dc565b612c586060870187612ba3565b9086830360608801526129dc565b6080850135608085015260a085013560a085015260c085013560c0850152612c9160e0860186612ba3565b9085830360e08701526129dc565b92610100810190612ba3565b916101008185039101526129dc565b3d6108008111612cde575b604051906020818301016040528082525f602083013e90565b50610800612cc5565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480612dda575b15612d42577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152612dd460c082612465565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612d19565b909392938483116122ba5784116122ba578101920390565b612e286040820182612b52565b9091612e348284614123565b15612f1457612e45612e4a91612b3e565b614178565b9160148211612e935750506040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000602082019260601b16825260148152612dd4603482612465565b816014116122ba576020612dd4916040519384917fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008484019760601b16875260147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec83019101603484013781015f838201520301601f198101835282612465565b5050505f90565b92919092835f5b818110612f2f5750505050565b612f3981856129a9565b51612f4582848661293c565b5f915a8151926001600160a01b03612f5c82612b3e565b168452602081013560208501526080810135936fffffffffffffffffffffffffffffffff8560801c951694604082019060608301968752815260c0820160a0840135815260c0840135906fffffffffffffffffffffffffffffffff8260801c92169161012085019061010086019384528152612fdb60e0870187612b52565b90816138aa575b5050604051612ff087612747565b9960208a019a8b528160405285519586855117825117926effffffffffffffffffffffffffffff60808a01948551179560a08b019687511789511790511711613861575051905101905101905101905101905102956040860191878352896001600160a01b0360e089516130788b848351169561307060408d018d612b52565b9290916147c5565b015116985f99801561383a575b8951604081015190516001600160a01b031680916040519d8e808d8b519360208301947f19822f7c00000000000000000000000000000000000000000000000000000000865260248401926130d993614bd2565b03601f19810182526130eb9082612465565b51905f6020948194f15f519c3d602003613832575b604052156137605750156136ff575b50506001600160a01b038451166020850151905f52600160205260405f2077ffffffffffffffffffffffffffffffffffffffffffffffff8260401c165f5260205267ffffffffffffffff60405f209182549261316a846126b0565b905516036136b3575a860311613667576001600160a01b0360e06060940151166133e0575b50506001600160a01b03949260a0859360809360606131b99801520135905a90030191015261453e565b92909116613394576132fa57506131d76001600160a01b039161453e565b929091166132ae576131ec5750600101612f22565b6132625760a49060405190631101335b60e11b8252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b60849060405190631101335b60e11b8252600482015260406024820152602060448201527f41413337207061796d617374657220696e76616c20626c6f636b2072616e67656064820152fd5b60848360405190631101335b60e11b8252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b8260849161334b5760405190631101335b60e11b8252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b60405190631101335b60e11b8252600482015260406024820152601e60448201527f41413237206f7574736964652076616c696420626c6f636b2072616e676500006064820152fd5b60848460405190631101335b60e11b8252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b909c9b9a99989796505a9085519d60e08f01516001600160a01b0316815161340791614bf4565b1561361b5761345a7f52b7512c00000000000000000000000000000000000000000000000000000000999a9b9c9d9e9f608001519261084360405193849251905190602084019d8e528960248501614bd2565b5f8088518b8260806001600160a01b0360e08501511693015192865193f1983d90815f843e519482519a604084019b8c51911561359d5760401490811591613589575b5061350c5750601f601f199101160191826040525a9003116134c35750948260a061318f565b8088631101335b60e11b60849352600482015260406024820152602060448201527f41413336206f76657220706d566572696669636174696f6e4761734c696d69746064820152fd5b8b610993613518612cba565b6040519384937f65c8fd4d00000000000000000000000000000000000000000000000000000000855260048501526024840152601d60648401527f41413335206d616c666f726d6564207061796d61737465722064617461000000608484015260a0604484015260a48301906125ad565b601f199150601f011681018214155f61349d565b828e6109936135aa612cba565b6040519384937f65c8fd4d00000000000000000000000000000000000000000000000000000000855260048501526024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906125ad565b60848960405190631101335b60e11b8252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b60848960405190631101335b60e11b8252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b60848a60405190631101335b60e11b8252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b61370891614bf4565b15613714575f8061310f565b60848a60405190631101335b60e11b8252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b8d903b6137b35760849060405190631101335b60e11b8252600482015260406024820152601960448201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006064820152fd5b6137bb612cba565b906109936040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906125ad565b5f9150613100565b9950815f525f60205260405f20548181115f1461385a57505f5b99613085565b8103613854565b808f631101335b60e11b60849352600482015260406024820152601860448201527f41413934206761732076616c756573206f766572666c6f7700000000000000006064820152fd5b6034821061393b57816014116122ba57803560601c91602481106122ba576014820135906034116122ba576fffffffffffffffffffffffffffffffff60248193013560801c1660a089015260801c16608087015280156139105760e08601525f80612fe2565b7fd8ccb292000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b507f120aaab5000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9092915a6020820180515f5d606083015190604051968761398b6060830183612b52565b5f60038211613f4b575b7fffffffff00000000000000000000000000000000000000000000000000000000167f8dd7712f0000000000000000000000000000000000000000000000000000000003613e15575050505f613a82613b5c613a2e613a4260209587516040519384927f8dd7712f000000000000000000000000000000000000000000000000000000008a850152604060248501526064840190612bf3565b90604483015203601f198101835282612465565b6108436040519384927e42dc53000000000000000000000000000000000000000000000000000000008885015261020060248501526102248401906125ad565b613b2b604484018c60806101a09161012081516001600160a01b038151168652602081015160208701526040810151604087015260608101516060870152838101518487015260a081015160a087015260c081015160c08701526001600160a01b0360e08201511660e087015261010081015161010087015201516101208501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152886125ad565b828151910182305af15f519760405215613b78575b5050505050565b909192939495505f3d602014613e08575b7fdeaddead000000000000000000000000000000000000000000000000000000008103613bfc5760848660405190631101335b60e11b8252600482015260406024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa5100000000000000000000000000000000000000000000000000000000919293949550145f14613c64575050613c48613c3d613c58925a906126dd565b60808401519061262d565b6040830151836120e982956140e0565b905b5f80808080613b71565b91613cc8919260405190518551907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479260206001600160a01b03845116930151613cab612cba565b90613cbb604051928392836125d2565b0390a36040525a906126dd565b613cd8608084019182519061262d565b915f905a92855161010081015161012082015148018082105f14613e005750955b613d196001600160a01b0360e08401511693518203606084015190613ff3565b01925f9280613dd1575050516001600160a01b0316935b5a900301019283026040850151928184105f14613d9257505080613d6557509081613d5f92936120e9816140e0565b90613c5a565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b613dba90828493979503906001600160a01b03165f525f60205260405f209081540180915590565b50613d65575090825f613dcc93614079565b613d5f565b95919051613de0575b50613d30565b93509050613df95a9360a05f955a900391015190613ff3565b905f613dda565b905095613cf9565b5060205f803e5f51613b89565b613f429350613f3491613e5a917e42dc5300000000000000000000000000000000000000000000000000000000602086015261020060248601526102248501916129dc565b613f03604484018960806101a09161012081516001600160a01b038151168652602081015160208701526040810151604087015260608101516060870152838101518487015260a081015160a087015260c081015160c08701526001600160a01b0360e08201511660e087015261010081015161010087015201516101208501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152856125ad565b03601f198101895288612465565b60205f88613b5c565b508135613995565b6001600160a01b03168015613fc8575f805d5f80808085855af1613f756126ea565b9015613f8057505050565b610993906040519384937f40848e61000000000000000000000000000000000000000000000000000000008552600485015260248401526060604484015260648301906125ad565b7f1a3b45fd000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90619c40820181111561400c57606491600a9103020490565b50505f90565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f608060208301519251946001600160a01b038651169460206001600160a01b0360e089015116970151916040519283525f602084015260408301526060820152a4565b9060807f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9160208401519351956001600160a01b038751169560206001600160a01b0360e08a015116980151926040519384521515602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e6020806001600160a01b03855116940151604051908152a3565b9060021161417357357fffffffffffffffffffffffffffffffffffffffff000000000000000000000000167f77020000000000000000000000000000000000000000000000000000000000001490565b505f90565b60175f80833c5f51907fef010000000000000000000000000000000000000000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000008316036141da575060481c6001600160a01b031690565b806001600160a01b03913b15614216577f9f4e4cc9000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b7fe5819b95000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60ff81146142a15760ff811690601f82116142795760405191614266604084612465565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f6002548060011c91600182169182156143ae575b60208410831461438157838552849290811561434457506001146142e5575b6125e992500382612465565b5060025f90815290917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8183106143285750509060206125e9928201016142d9565b6020919350806001915483858801015201910190918392614310565b602092506125e99491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201016142d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926142ba565b60ff81146143dc5760ff811690601f82116142795760405191614266604084612465565b506040515f6003548060011c916001821691821561447e575b602084108314614381578385528492908115614344575060011461441f576125e992500382612465565b5060035f90815290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106144625750509060206125e9928201016142d9565b602091935080600191548385880101520191019091839261444a565b92607f16926143f5565b614492828261462d565b806144a35750816040519182372090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe919203604051927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff682019084377f22e325a2974396560000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6828501015201902090565b8015614624575f6040805161455281612449565b82815282602082015201526001600160a01b0381169065ffffffffffff8160a01c16908115614616575b60409060d01c91815161458e81612449565b84815283602082015265ffffffffffff821692839101526580000000000083101580614606575b156145e957657fffffffffff91501643119081156145d6575b509060019092565b657fffffffffff9150164311155f6145ce565b5042119081156145fb575b50905f9092565b90504211155f6145f4565b50658000000000008210156145b5565b65ffffffffffff915061457c565b505f905f905f90565b603e821061400c577f22e325a2974396560000000000000000000000000000000000000000000000007fffffffffffffffff0000000000000000000000000000000000000000000000006146a5847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff881018186612e03565b903582811691600881106147b0575b5050160361400c57816146eb91817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6810191612e03565b90357fffff0000000000000000000000000000000000000000000000000000000000008116916002811061477b575b505060f01c907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc28101821161474d575090565b7f07b9a191000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fffff0000000000000000000000000000000000000000000000000000000000009250829060020360031b1b16165f8061471a565b839250829060080360031b1b16165f806146b4565b929091925f826147d6575050505050565b8351946001600160a01b03865116956147ef8583614123565b614a96575060148410614a4a5783601411614a4657803560601c93863b614a105761485b9160209160408851015190856040518096819582947f570e1a3600000000000000000000000000000000000000000000000000000000845288600485015260248401916129dc565b03926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690f1918215614a0457916149e5575b506001600160a01b038116801561499957850361494d573b15614901575060407fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d916001600160a01b0360e06020860151955101511682519182526020820152a35f80808080613b71565b60849060405190631101335b60e11b8252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848260405190631101335b60e11b8252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848360405190631101335b60e11b8252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b6149fe915060203d602011611414576114068183612465565b5f614896565b604051903d90823e3d90fd5b50505050906020807fa39bcda08ffd11bafb11c4f170ef24fc6dc1a9d1b0394d90dbd19e0b919050e992015192604051908152a3565b5080fd5b60848360405190631101335b60e11b8252600482015260406024820152601760448201527f4141393920696e6974436f646520746f6f20736d616c6c0000000000000000006064820152fd5b9195949390925060148111614aae575b505050505050565b60406001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016920151816014116122ba57823b156122ba57614b5c935f80946040518097819682957fc09ad0d90000000000000000000000000000000000000000000000000000000084528c60048501526040602485015260147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec60448601930191016129dc565b0393f18015614bc757614bb2575b507f7c9f9ade6a03a0bba484e52df872467a270e798ffc1adab9dfaa8d0e627f05446001600160a01b036020614b9f85614178565b93015192169380a45f8080808080614aa6565b614bbf9193505f90612465565b5f915f614b6a565b6040513d5f823e3d90fd5b614bea60409295949395606083526060830190612bf3565b9460208201520152565b6001600160a01b03165f525f60205260405f20908154818110612f145703905560019056fea264697066735822122042a9122003ddaf427b826536bf23a9cc94c2e0ac6c100a4a9f9a9170c93357a564736f6c6343000821003360a08060405234602f57336080526104ba9081610034823960805181818160c30152818161023701526102cf0152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063570e1a361461025b578063b0d691fe146101ed5763c09ad0d91461003a575f80fd5b346101e95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101e95760043573ffffffffffffffffffffffffffffffffffffffff811681036101e95760243567ffffffffffffffff81116101e957366023820112156101e9575f916100bd8392369060248160040135910161038a565b906101027f0000000000000000000000000000000000000000000000000000000000000000303373ffffffffffffffffffffffffffffffffffffffff8316331461042c565b82602083519301915af11561011357005b3d61080081116101e0575b60c460405160208382010160405282815260208101925f843e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6040519485937f65c8fd4d0000000000000000000000000000000000000000000000000000000085525f6004860152606060248601528260648601527f4141313320454950373730322073656e64657220696e6974206661696c656400608486015260a060448601525180918160a48701528686015e5f85828601015201168101030190fd5b5061080061011e565b5f80fd5b346101e9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101e957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101e95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101e95760043567ffffffffffffffff81116101e957366023820112156101e95780600401359067ffffffffffffffff82116101e95736602483830101116101e9575f9161030e7f0000000000000000000000000000000000000000000000000000000000000000303373ffffffffffffffffffffffffffffffffffffffff8316331461042c565b806014116101e95760209161034b5f927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3691016038840161038a565b90826024858451940192013560601c5af1610382575b60209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b505f51610361565b92919267ffffffffffffffff82116103ff57604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8401160116830183811067ffffffffffffffff8211176103ff576040528294818452818301116101e9578281602093845f960137010152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b1561043657505050565b73ffffffffffffffffffffffffffffffffffffffff92918380927ffe34a6d3000000000000000000000000000000000000000000000000000000005f5216600452166024521660445260645ffdfea2646970667358221220e9e7afecea4a69b36e49284a4d2974b57bbe45ab5f9443377e13e1304ec438ff64736f6c63430008210033\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"anEntryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"receive\",\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"UPGRADE_INTERFACE_VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addDeposit\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"execute\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeBatch\",\n      \"inputs\": [\n        {\n          \"name\": \"calls\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct BaseAccount.Call[]\",\n          \"components\": [\n            {\n              \"name\": \"target\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"value\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"data\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDeposit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getNonce\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initialize\",\n      \"inputs\": [\n        {\n          \"name\": \"anOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"onERC1155BatchReceived\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"onERC1155Received\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"onERC721Received\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proxiableUUID\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"supportsInterface\",\n      \"inputs\": [\n        {\n          \"name\": \"interfaceId\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"upgradeToAndCall\",\n      \"inputs\": [\n        {\n          \"name\": \"newImplementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateUserOp\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"missingAccountFunds\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"validationData\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawDepositTo\",\n      \"inputs\": [\n        {\n          \"name\": \"withdrawAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SimpleAccountInitialized\",\n      \"inputs\": [\n        {\n          \"name\": \"entryPoint\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"contract IEntryPoint\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Upgraded\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"inputs\": [\n        {\n          \"name\": \"s\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1967InvalidImplementation\",\n      \"inputs\": [\n        {\n          \"name\": \"implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1967NonPayable\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExecuteError\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"error\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UUPSUnauthorizedCallContext\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UUPSUnsupportedProxiableUUID\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    }\n  ],\n  \"bytecode\": \"0x60c03461014757601f61183e38819003918201601f19168301916001600160401b0383118484101761014b5780849260209460405283398101031261014757516001600160a01b0381168103610147573060805260a0525f51602061181e5f395f51905f525460ff8160401c16610138576002600160401b03196001600160401b038216016100e2575b6040516116be90816101608239608051818181610798015261086e015260a0518181816101b40152818161034d0152818161051e015281816106b401528181610b8d01528181610c4401528181610e4601526112f70152f35b6001600160401b0319166001600160401b039081175f51602061181e5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f610089565b63f92ee8a960e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a714610f7357508063150b7a0214610f0457806319822f7c14610dfa57806334fcd5be14610cc85780634a58db1914610c215780634d44560d14610b3a5780634f1ef2861461081057806352d1902d146107705780638da5cb5b1461073d578063ad3cb1cc146106d8578063b0d691fe14610687578063b61d27f61461060b578063bc197c8114610557578063c399ec88146104c3578063c4d66de814610231578063d087d288146101535763f23a6e610361000f57346101505760a0600319360112610150576100f8611042565b50610101611065565b5060843567ffffffffffffffff811161014e57610122903690600401611088565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b505b80fd5b5034610150578060031936011261015057604051907f35567e1a00000000000000000000000000000000000000000000000000000000825230600483015280602483015260208260448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561022557906101ee575b602090604051908152f35b506020813d60201161021d575b81610208602093836110e7565b8101031261021957602090516101e3565b5f80fd5b3d91506101fb565b604051903d90823e3d90fd5b50346101505760206003193601126101505761024b611042565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549060ff8260401c16159167ffffffffffffffff8116801590816104bb575b60011490816104b1575b1590816104a8575b506104805790818360017fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000073ffffffffffffffffffffffffffffffffffffffff9516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005561042b575b501690817fffffffffffffffffffffffff00000000000000000000000000000000000000008454161783556040519173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de8580a3610399575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2917fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005560018152a180f35b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00555f610307565b6004847ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f61029d565b303b159150610295565b84915061028b565b5034610150578060031936011261015057604051907f70a0823100000000000000000000000000000000000000000000000000000000825230600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561022557906101ee57602090604051908152f35b50346101505760a060031936011261015057610571611042565b5061057a611065565b5060443567ffffffffffffffff811161014e5761059b9036906004016110b6565b505060643567ffffffffffffffff811161014e576105bd9036906004016110b6565b505060843567ffffffffffffffff811161014e576105df903690600401611088565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b50346101505760606003193601126101505780610626611042565b60443567ffffffffffffffff811161068357829161064b61065e923690600401611088565b92906106556112e0565b5a93369161118f565b916020835193019160243591f1156106735780f35b61067b6113a5565b602081519101fd5b5050fd5b5034610150578060031936011261015057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610150578060031936011261015057506107396040516106fb6040826110e7565b600581527f352e302e3000000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906111c5565b0390f35b503461015057806003193601126101505773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461015057806003193601126101505773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036107e85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b807fe07c8dba0000000000000000000000000000000000000000000000000000000060049252fd5b50604060031936011261015057610825611042565b9060243567ffffffffffffffff811161014e573660238201121561014e5761085790369060248160040135910161118f565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115610af8575b50610ad0576108a66113bf565b73ffffffffffffffffffffffffffffffffffffffff831690604051937f52d1902d000000000000000000000000000000000000000000000000000000008552602085600481865afa80958596610a98575b5061092857602484847f4c9c8ce3000000000000000000000000000000000000000000000000000000008252600452fd5b9091847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8103610a6d5750813b15610a4257807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015610a0f5780836020610a0b95519101845af4610a056112b1565b916115ef565b5080f35b50505034610a1a5780f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000008452600452602483fd5b7faa1d49a4000000000000000000000000000000000000000000000000000000008552600452602484fd5b9095506020813d602011610ac8575b81610ab4602093836110e7565b81010312610ac45751945f6108f7565b8480fd5b3d9150610aa7565b6004827fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610899565b5034610150576040600319360112610150578060043573ffffffffffffffffffffffffffffffffffffffff8116809103610c1e57610b766113bf565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156106835782916044839260405194859384927f205c2878000000000000000000000000000000000000000000000000000000008452600484015260243560248401525af18015610c1357610c025750f35b81610c0c916110e7565b6101505780f35b6040513d84823e3d90fd5b50fd5b505f6003193601126102195773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610219575f602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af18015610cbd57610cb1575080f35b61001a91505f906110e7565b6040513d5f823e3d90fd5b346102195760206003193601126102195760043567ffffffffffffffff811161021957610cf99036906004016110b6565b610d016112e0565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301905b8281101561001a578060051b8401358281121561021957840180359073ffffffffffffffffffffffffffffffffffffffff82168203610219575f9181610d81610d76604086950183611208565b91905a92369161118f565b926020808551950193013591f115610d9b57600101610d29565b60018303610dab5761067b6113a5565b610db36113a5565b90610df66040519283927f5a15467500000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906111c5565b0390fd5b346102195760606003193601126102195760043567ffffffffffffffff81116102195761012060031982360301126102195760443573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610ea657610e7e60209260243590600401611259565b9080610e8e575b50604051908152f35b5f80808093335af150610e9f6112b1565b5082610e85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b3461021957608060031936011261021957610f1d611042565b50610f26611065565b5060643567ffffffffffffffff811161021957610f47903690600401611088565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b3461021957602060031936011261021957600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361021957817f150b7a020000000000000000000000000000000000000000000000000000000060209314908115611018575b8115610fee575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610fe7565b7f4e2312e00000000000000000000000000000000000000000000000000000000081149150610fe0565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361021957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361021957565b9181601f840112156102195782359167ffffffffffffffff8311610219576020838186019501011161021957565b9181601f840112156102195782359167ffffffffffffffff8311610219576020808501948460051b01011161021957565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761112857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161112857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261119b82611155565b916111a960405193846110e7565b829481845281830111610219578281602093845f960137010152565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610219570180359067ffffffffffffffff82116102195760200191813603831361021957565b906112a261129973ffffffffffffffffffffffffffffffffffffffff9261129361128c855f541696610100810190611208565b369161118f565b9061144e565b90929192611488565b16036112ac575f90565b600190565b3d156112db573d906112c282611155565b916112d060405193846110e7565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633148015611385575b1561132757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b5073ffffffffffffffffffffffffffffffffffffffff5f54163314611320565b3d604051906020818301016040528082525f602083013e90565b73ffffffffffffffffffffffffffffffffffffffff5f541633148015611445575b156113e757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b503033146113e0565b815191906041830361147e576114779250602082015190606060408401519301515f1a90611560565b9192909190565b50505f9160029190565b6004811015611533578061149a575050565b600181036114ca577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036114fe57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146115085750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116115e4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610cbd575f5173ffffffffffffffffffffffffffffffffffffffff8116156115da57905f905f90565b505f906001905f90565b5050505f9160039190565b9061162c575080511561160457602081519101fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061167f575b61163d575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561163556fea2646970667358221220b89f331a6d28607c751a074e9d4b888a9c4df5a4e278f75c243676b2102c680264736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"accountImplementation\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract SimpleAccount\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"ret\",\n          \"type\": \"address\",\n          \"internalType\": \"contract SimpleAccount\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"senderCreator\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract ISenderCreator\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotSenderCreator\",\n      \"inputs\": [\n        {\n          \"name\": \"msgSender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"entity\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"senderCreator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    }\n  ],\n  \"bytecode\": \"0x60c0806040523461010d5760208161219d803803809161001f8285610138565b83398101031261010d57516001600160a01b0381169081900361010d576040516117ed808201906001600160401b038211838310176101245760209183916109b083398481520301905ff08015610119576080526040516213997160e71b815290602090829060049082905afa908115610119575f916100d3575b5060a052604051610854908161015c823960805181818160e60152818161037f01526104b6015260a05181818161015201526102b20152f35b90506020813d602011610111575b816100ee60209383610138565b8101031261010d57516001600160a01b038116810361010d575f61009a565b5f80fd5b3d91506100e1565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176101245760405256fe6080806040526004361015610012575f80fd5b5f3560e01c90816309ccb8801461010a5750806311464fbe1461009c5780635fbfb9cf1461008357638cb84e1814610048575f80fd5b3461007f57602061006161005b36610176565b90610422565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b5f80fd5b3461007f57602061006161009636610176565b9061029b565b3461007f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461007f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007f5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261007f5760043573ffffffffffffffffffffffffffffffffffffffff8116810361007f579060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761020857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f8582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036103ef57506102e48282610422565b803b6103d3575073ffffffffffffffffffffffffffffffffffffffff604051917fc4d66de80000000000000000000000000000000000000000000000000000000060208401521660248201526024815261033f6044826101c7565b604051906102a88083019183831067ffffffffffffffff8411176102085783926103a592610577853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610235565b03905ff580156103c85773ffffffffffffffffffffffffffffffffffffffff1690565b6040513d5f823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b7f389b01ec000000000000000000000000000000000000000000000000000000005f52336004523060245260445260645ffd5b600b73ffffffffffffffffffffffffffffffffffffffff926055926102a8906105576040519261045560208201856101c7565b8084526020840190610577823987604051937fc4d66de8000000000000000000000000000000000000000000000000000000006020860152166024840152602483526104a26044846101c7565b602060405193610508856104dc848201938d7f00000000000000000000000000000000000000000000000000000000000000001685610235565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866101c7565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826101c7565b5190209060405191604083015260208201523081520160ff815320169056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea26469706673582212200c98db95f0b67d7beb06faffee42bf478c4cecdac4fc0a07c523783606f410c964736f6c63430008210033a2646970667358221220272909d6b84306f6c9962a98e74da35b4af10b0c4638c973a922a677e8d5d4ab64736f6c6343000821003360c03461014757601f6117ed38819003918201601f19168301916001600160401b0383118484101761014b5780849260209460405283398101031261014757516001600160a01b0381168103610147573060805260a0525f5160206117cd5f395f51905f525460ff8160401c16610138576002600160401b03196001600160401b038216016100e2575b60405161166d90816101608239608051818181610798015261086e015260a0518181816101b40152818161034d0152818161051e015281816106b401528181610b8d01528181610c4401528181610e4601526112ce0152f35b6001600160401b0319166001600160401b039081175f5160206117cd5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f610089565b63f92ee8a960e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a714610f4a57508063150b7a0214610edb57806319822f7c14610dfa57806334fcd5be14610cc85780634a58db1914610c215780634d44560d14610b3a5780634f1ef2861461081057806352d1902d146107705780638da5cb5b1461073d578063ad3cb1cc146106d8578063b0d691fe14610687578063b61d27f61461060b578063bc197c8114610557578063c399ec88146104c3578063c4d66de814610231578063d087d288146101535763f23a6e610361000f57346101505760a0600319360112610150576100f8611019565b5061010161103c565b5060843567ffffffffffffffff811161014e5761012290369060040161105f565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b505b80fd5b5034610150578060031936011261015057604051907f35567e1a00000000000000000000000000000000000000000000000000000000825230600483015280602483015260208260448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561022557906101ee575b602090604051908152f35b506020813d60201161021d575b81610208602093836110be565b8101031261021957602090516101e3565b5f80fd5b3d91506101fb565b604051903d90823e3d90fd5b50346101505760206003193601126101505761024b611019565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549060ff8260401c16159167ffffffffffffffff8116801590816104bb575b60011490816104b1575b1590816104a8575b506104805790818360017fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000073ffffffffffffffffffffffffffffffffffffffff9516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005561042b575b501690817fffffffffffffffffffffffff00000000000000000000000000000000000000008454161783556040519173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de8580a3610399575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2917fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005560018152a180f35b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00555f610307565b6004847ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f61029d565b303b159150610295565b84915061028b565b5034610150578060031936011261015057604051907f70a0823100000000000000000000000000000000000000000000000000000000825230600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561022557906101ee57602090604051908152f35b50346101505760a060031936011261015057610571611019565b5061057a61103c565b5060443567ffffffffffffffff811161014e5761059b90369060040161108d565b505060643567ffffffffffffffff811161014e576105bd90369060040161108d565b505060843567ffffffffffffffff811161014e576105df90369060040161105f565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b50346101505760606003193601126101505780610626611019565b60443567ffffffffffffffff811161068357829161064b61065e92369060040161105f565b92906106556112b7565b5a933691611166565b916020835193019160243591f1156106735780f35b61067b61137d565b602081519101fd5b5050fd5b5034610150578060031936011261015057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610150578060031936011261015057506107396040516106fb6040826110be565b600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015260405191829160208352602083019061119c565b0390f35b503461015057806003193601126101505773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461015057806003193601126101505773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036107e85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b807fe07c8dba0000000000000000000000000000000000000000000000000000000060049252fd5b50604060031936011261015057610825611019565b9060243567ffffffffffffffff811161014e573660238201121561014e57610857903690602481600401359101611166565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115610af8575b50610ad0576108a6611397565b73ffffffffffffffffffffffffffffffffffffffff831690604051937f52d1902d000000000000000000000000000000000000000000000000000000008552602085600481865afa80958596610a98575b5061092857602484847f4c9c8ce3000000000000000000000000000000000000000000000000000000008252600452fd5b9091847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8103610a6d5750813b15610a4257807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015610a0f5780836020610a0b95519101845af4610a05611288565b9161159e565b5080f35b50505034610a1a5780f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000008452600452602483fd5b7faa1d49a4000000000000000000000000000000000000000000000000000000008552600452602484fd5b9095506020813d602011610ac8575b81610ab4602093836110be565b81010312610ac45751945f6108f7565b8480fd5b3d9150610aa7565b6004827fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610899565b5034610150576040600319360112610150578060043573ffffffffffffffffffffffffffffffffffffffff8116809103610c1e57610b76611397565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156106835782916044839260405194859384927f205c2878000000000000000000000000000000000000000000000000000000008452600484015260243560248401525af18015610c1357610c025750f35b81610c0c916110be565b6101505780f35b6040513d84823e3d90fd5b50fd5b505f6003193601126102195773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610219575f602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af18015610cbd57610cb1575080f35b61001a91505f906110be565b6040513d5f823e3d90fd5b346102195760206003193601126102195760043567ffffffffffffffff811161021957610cf990369060040161108d565b610d016112b7565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301905b8281101561001a578060051b8401358281121561021957840180359073ffffffffffffffffffffffffffffffffffffffff82168203610219575f9181610d81610d766040869501836111df565b91905a923691611166565b926020808551950193013591f115610d9b57600101610d29565b60018303610dab5761067b61137d565b610db361137d565b90610df66040519283927f5a154675000000000000000000000000000000000000000000000000000000008452600484015260406024840152604483019061119c565b0390fd5b346102195760606003193601126102195760043567ffffffffffffffff81116102195761012060031982360301126102195760443573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303610ea85750610e8060209260243590600401611230565b9080610e90575b50604051908152f35b5f80808093335af150610ea1611288565b5082610e87565b7ffe34a6d3000000000000000000000000000000000000000000000000000000005f52336004523060245260445260645ffd5b3461021957608060031936011261021957610ef4611019565b50610efd61103c565b5060643567ffffffffffffffff811161021957610f1e90369060040161105f565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b3461021957602060031936011261021957600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361021957817f150b7a020000000000000000000000000000000000000000000000000000000060209314908115610fef575b8115610fc5575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610fbe565b7f4e2312e00000000000000000000000000000000000000000000000000000000081149150610fb7565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361021957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361021957565b9181601f840112156102195782359167ffffffffffffffff8311610219576020838186019501011161021957565b9181601f840112156102195782359167ffffffffffffffff8311610219576020808501948460051b01011161021957565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176110ff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116110ff57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926111728261112c565b9161118060405193846110be565b829481845281830111610219578281602093845f960137010152565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610219570180359067ffffffffffffffff82116102195760200191813603831361021957565b9061127961127073ffffffffffffffffffffffffffffffffffffffff9261126a611263855f5416966101008101906111df565b3691611166565b906113fd565b90929192611437565b1603611283575f90565b600190565b3d156112b2573d906112998261112c565b916112a760405193846110be565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803314801561135d575b73ffffffffffffffffffffffffffffffffffffffff5f5416901561131a575050565b60849250604051917f62018a3100000000000000000000000000000000000000000000000000000000835233600484015230602484015260448301526064820152fd5b5073ffffffffffffffffffffffffffffffffffffffff5f541633146112f8565b3d604051906020818301016040528082525f602083013e90565b73ffffffffffffffffffffffffffffffffffffffff5f541680331480156113f4575b156113c15750565b7fcbce04d8000000000000000000000000000000000000000000000000000000005f52336004523060245260445260645ffd5b503033146113b9565b815191906041830361142d576114269250602082015190606060408401519301515f1a9061150f565b9192909190565b50505f9160029190565b60048110156114e25780611449575050565b60018103611479577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036114ad57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146114b75750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611593579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610cbd575f5173ffffffffffffffffffffffffffffffffffffffff81161561158957905f905f90565b505f906001905f90565b5050505f9160039190565b906115db57508051156115b357602081519101fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061162e575b6115ec575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156115e456fea2646970667358221220ae8b4013efb78cdce9563e5b116833be5bfaac44e3d166825f6faaf42e24670864736f6c63430008210033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_validatorRouter\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"fallback\",\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"receive\",\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ACCOUNT_VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"accountId\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"activeRecovery\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"approvalBitmap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"cancellationBitmap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addDeposit\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"payable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addGuardian\",\n      \"inputs\": [\n        {\n          \"name\": \"_guardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"agentExtension\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approvedAlgorithms\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"execute\",\n      \"inputs\": [\n        {\n          \"name\": \"dest\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"func\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeBatch\",\n      \"inputs\": [\n        {\n          \"name\": \"dest\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"func\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeFromExecutor\",\n      \"inputs\": [\n        {\n          \"name\": \"mode\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"executionCalldata\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"returnData\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeUserOp\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDeposit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRecoveryNonce\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guard\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract AAStarGlobalGuard\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardAddTokenConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarGlobalGuard.TokenConfig\",\n          \"components\": [\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardApproveAlgorithm\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardDecreaseDailyLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardDecreaseTokenDailyLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardSetStrictMode\",\n      \"inputs\": [\n        {\n          \"name\": \"enabled\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardianCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardians\",\n      \"inputs\": [\n        {\n          \"name\": \"i\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initialize\",\n      \"inputs\": [\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"_guardAddr\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_ownerP256X\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"_ownerP256Y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initializeAgentAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"_guardAddr\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isModuleInstalled\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isValidSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"hash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"modifyTierLimitsWithGuardians\",\n      \"inputs\": [\n        {\n          \"name\": \"_tier1\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_tier2\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianSigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"moduleManagementNonce\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"onERC721Received\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"p256KeyX\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"p256KeyY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"parserRegistry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"proposed\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"approvalBitmap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeGuardian\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardianSigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"requiredTier\",\n      \"inputs\": [\n        {\n          \"name\": \"txValue\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setP256Key\",\n      \"inputs\": [\n        {\n          \"name\": \"_x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"_y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setParserRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTierLimits\",\n      \"inputs\": [\n        {\n          \"name\": \"_tier1\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_tier2\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"_validator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"supportsInterface\",\n      \"inputs\": [\n        {\n          \"name\": \"interfaceId\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"supportsModule\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tier1Limit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tier2Limit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateUserOp\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"missingAccountFunds\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"validationData\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validator\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IAAStarValidator\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validatorRouter\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"weightConfig\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"passkeyWeight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"ecdsaWeight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"blsWeight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian0Weight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian1Weight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian2Weight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"_padding\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tier1Threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tier2Threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tier3Threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawDepositTo\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address payable\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentIdentityMinted\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentURI\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentReputationSubmitted\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"int128\",\n          \"indexed\": false,\n          \"internalType\": \"int128\"\n        },\n        {\n          \"name\": \"tag1\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentWalletSet\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentRegistry\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AlgorithmApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ERC8004WalletBound\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardInitialized\",\n      \"inputs\": [\n        {\n          \"name\": \"guard\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianRemoved\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleInstalled\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleUninstalled\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnerChanged\",\n      \"inputs\": [\n        {\n          \"name\": \"oldOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"P256GuardianAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"P256KeySet\",\n      \"inputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ParserRegistrySet\",\n      \"inputs\": [\n        {\n          \"name\": \"registry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approvedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approvalCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianIdx\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryCancelVoted\",\n      \"inputs\": [\n        {\n          \"name\": \"votedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"cancelCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianIdx\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryCancelled\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"oldOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"proposedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardianIdx\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TierLimitsSet\",\n      \"inputs\": [\n        {\n          \"name\": \"tier1\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"tier2\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ValidatorSet\",\n      \"inputs\": [\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"approvedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approvalCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeCancelled\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"oldConfig\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        },\n        {\n          \"name\": \"newConfig\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"proposed\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        },\n        {\n          \"name\": \"proposedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightConfigUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentRegistrationFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentSessionBatchNotSupported\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadyApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadyCancelVoted\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ArrayLengthMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CallFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"returnData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CannotIncreaseTierLimit\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DuplicateGuardianSig\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DuplicateP256GuardianKey\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"inputs\": [\n        {\n          \"name\": \"s\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianAlreadySet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"HookReverted\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"IdentityRegistrationFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsecureWeightConfig\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InstallModuleUnauthorized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientGuardianApprovals\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientTier\",\n      \"inputs\": [\n        {\n          \"name\": \"required\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"provided\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientWeight\",\n      \"inputs\": [\n        {\n          \"name\": \"tier\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"provided\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidGuardianSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidModuleType\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidNewOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidP256GuardianKey\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidP256GuardianSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidP256Key\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidTierConfig\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MaxGuardiansReached\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MinGuardianRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleAlreadyInstalled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallCallbackFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInvalid\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleNotInstalled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoActiveRecovery\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoWeightChangeProposal\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotEntryPoint\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotOwnerOrEntryPoint\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryAlreadyActive\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryNotApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryTimelockNotExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Reentrancy\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReputationRegistryFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SessionScopeViolation\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TierLimitSigExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnauthorizedRegistry\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnsupportedInnerSelector\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UseGuardianConsensus\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ValidatorAlreadySet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeakeningRequiresProposal\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangeAlreadyApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangeNotApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangePending\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangeTimelockNotExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightConfigNotInitialized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addGuardianWithMixedSigs\",\n      \"inputs\": [\n        {\n          \"name\": \"_guardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addP256Guardian\",\n      \"inputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addP256GuardianWithMixedSigs\",\n      \"inputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approveRecovery\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approveRecoveryWithSig\",\n      \"inputs\": [\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approveWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"bindERC8004AgentWallet\",\n      \"inputs\": [\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelModuleInstall\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelRecovery\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelRecoveryWithSig\",\n      \"inputs\": [\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeModuleInstall\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleInitData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeRecovery\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getGuardianP256Key\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"installModule\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"mintAgentIdentity\",\n      \"inputs\": [\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentURI\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"modifyTierLimitsWithMixedGuardians\",\n      \"inputs\": [\n        {\n          \"name\": \"_tier1\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_tier2\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"moduleInstallTimelock\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingModuleInstall\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint40\",\n          \"internalType\": \"uint40\"\n        },\n        {\n          \"name\": \"executeAfter\",\n          \"type\": \"uint40\",\n          \"internalType\": \"uint40\"\n        },\n        {\n          \"name\": \"initDataHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeModuleInstall\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeRecovery\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeRecoveryWithSig\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeWeightChange\",\n      \"inputs\": [\n        {\n          \"name\": \"proposed\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"queryAgentReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"clientAddresses\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"tag1\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"tag2\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        },\n        {\n          \"name\": \"summaryValue\",\n          \"type\": \"int128\",\n          \"internalType\": \"int128\"\n        },\n        {\n          \"name\": \"summaryDecimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeGuardianWithMixedSigs\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAgentWallet\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentWalletSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setModuleInstallTimelock\",\n      \"inputs\": [\n        {\n          \"name\": \"newTimelock\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianSigs\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setWeightConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"submitAgentReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"int128\",\n          \"internalType\": \"int128\"\n        },\n        {\n          \"name\": \"valueDecimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tag1\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"tag2\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"endpoint\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"feedbackURI\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"feedbackHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tierLimitNonce\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"uninstallModule\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"deInitData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isValidOwnerAuth\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ownerAuth\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"enrollInCommitteeValidator\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeGuardianAddition\",\n      \"inputs\": [\n        {\n          \"name\": \"_guardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianAdditionProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"executeAfter\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianAdditionNotProposed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianAdditionTimelockNotExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"P256KeyAlreadySet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SelfCallForbidden\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnparseableGuardedCall\",\n      \"inputs\": [\n        {\n          \"name\": \"dest\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ValidatorNotSet\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"DOMAIN_SEPARATOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"EXCHANGE_RATE_COOLDOWN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"EXCHANGE_RATE_DELTA_BPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"EXCHANGE_RATE_MAX\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"EXCHANGE_RATE_MIN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"FACTORY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_SINGLE_TX_LIMIT_CAP\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SUPERPAYMASTER_ADDRESS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addApprovedFacilitator\",\n      \"inputs\": [\n        {\n          \"name\": \"facilitator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addAutoApprovedSpender\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"allowance\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approve\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approvedFacilitators\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"autoApprovedSpenders\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"backingValueUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"balanceOf\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"burn\",\n      \"inputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"burn\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"burnFromWithOpHash\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amountAPNTs\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityENS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityName\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityOwner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"credibilityScore\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"debts\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"decimals\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"effectiveCapUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"eip712Domain\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"fields\",\n          \"type\": \"bytes1\",\n          \"internalType\": \"bytes1\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"chainId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"verifyingContract\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"extensions\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencyDisabled\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencyRevokePaymaster\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"emergencyRevokedAddress\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"exchangeRate\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"exchangeRateUpdatedAt\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDebt\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getMetadata\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_symbol\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_communityName\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_communityENS\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_communityOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"initialize\",\n      \"inputs\": [\n        {\n          \"name\": \"name_\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"symbol_\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_communityOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_communityName\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_communityENS\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"_exchangeRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isOverIssued\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"issuanceCap\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"issuedValueUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"maxSingleTxLimit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"mint\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"name\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"needsApproval\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nonces\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"permit\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"v\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"r\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"s\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recordDebt\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amountAPNTs\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recordDebtWithOpHash\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amountAPNTs\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"opHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeApprovedFacilitator\",\n      \"inputs\": [\n        {\n          \"name\": \"facilitator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeAutoApprovedSpender\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceFactory\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"repayDebt\",\n      \"inputs\": [\n        {\n          \"name\": \"amountXPNTs\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setIssuanceCap\",\n      \"inputs\": [\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMaxSingleTxLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSpenderDailyCap\",\n      \"inputs\": [\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSpenderDailyCapFor\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSuperPaymasterAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"_spAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"spenderDailyCapOverride\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"spenderDailyCapTokens\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"spenderRateLimit\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"dailyBurnTotal\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"windowStart\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        },\n        {\n          \"name\": \"reserved\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"symbol\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalSupply\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transfer\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferAndCall\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferAndCall\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferCommunityOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferFrom\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unsetEmergencyDisabled\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateExchangeRate\",\n      \"inputs\": [\n        {\n          \"name\": \"_newRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"usedDebtHashes\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"usedOpHashes\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Approval\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AutoApprovedSpenderAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AutoApprovedSpenderRemoved\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CommunityOwnerUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DebtRecorded\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DebtRepaid\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amountRepaid\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"remainingDebt\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EIP712DomainChanged\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EmergencyDisabledCleared\",\n      \"inputs\": [\n        {\n          \"name\": \"by\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EmergencyDisabledSet\",\n      \"inputs\": [\n        {\n          \"name\": \"by\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ExchangeRateUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldRate\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newRate\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FacilitatorApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"facilitator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FacilitatorRemoved\",\n      \"inputs\": [\n        {\n          \"name\": \"facilitator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"IssuanceCapUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MaxSingleTxLimitUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SpenderDailyCapForUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"oldCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SpenderDailyCapUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SpenderRateLimitWindowReset\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newWindowStart\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SuperPaymasterAddressUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"newSuperPaymaster\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Transfer\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BurnExceedsAllowance\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BurnExceedsBalance\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DebtAlreadyRecorded\",\n      \"inputs\": [\n        {\n          \"name\": \"opHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"inputs\": [\n        {\n          \"name\": \"s\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InsufficientAllowance\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"allowance\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"needed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"balance\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"needed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidApprover\",\n      \"inputs\": [\n        {\n          \"name\": \"approver\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidReceiver\",\n      \"inputs\": [\n        {\n          \"name\": \"receiver\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidSender\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC20InvalidSpender\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC2612ExpiredSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC2612InvalidSigner\",\n      \"inputs\": [\n        {\n          \"name\": \"signer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmergencyStop\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExchangeRateCannotBeZero\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExchangeRateCooldownActive\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExchangeRateDeltaTooLarge\",\n      \"inputs\": [\n        {\n          \"name\": \"newRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"oldRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxDeltaBPS\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExchangeRateOutOfRange\",\n      \"inputs\": [\n        {\n          \"name\": \"rate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"min\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"max\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAccountNonce\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"currentNonce\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"addr\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidParam\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidShortString\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MathOverflowedMulDiv\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MustUseBurnFromWithOpHash\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoDebtToRepay\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OperationAlreadyProcessed\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryNotComplete\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RepayExceedsDebt\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SingleTxLimitExceeded\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SpenderDailyCapExceeded\",\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"attempted\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"capRemaining\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StringTooLong\",\n      \"inputs\": [\n        {\n          \"name\": \"str\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SuperPaymasterNotConfigured\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Unauthorized\",\n      \"inputs\": [\n        {\n          \"name\": \"caller\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnauthorizedRecipient\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_superPaymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"APNTS_PRICE_DELTA_BPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"APNTS_PRICE_MAX\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"APNTS_PRICE_MIN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"DEFAULT_SAFETY_FACTOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_INDUSTRY_SCALE_USD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MIN_SUGGESTED_AMOUNT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SUPERPAYMASTER\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"aPNTsPriceUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"capRatioBps\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint16\",\n          \"internalType\": \"uint16\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"categoryRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityToToken\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deployedTokens\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deployxPNTsToken\",\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"symbol\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"communityName\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"communityENS\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"exchangeRate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"paymasterAOA\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAPNTsPrice\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"price\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAllTokens\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"tokens\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDeployedCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getDepositBreakdown\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"dailyCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"monthlyCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"suggestedAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"multiplierUsed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"safetyFactorUsed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getIndustryMultiplier\",\n      \"inputs\": [\n        {\n          \"name\": \"industry\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"multiplier\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getPredictionParams\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"params\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct xPNTsFactory.PredictionParams\",\n          \"components\": [\n            {\n              \"name\": \"avgDailyTx\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"avgGasCost\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"industryMultiplier\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"safetyFactor\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getTokenAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hasToken\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"implementation\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"industryMultipliers\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"industryScaleUSD\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isXPNTs\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"predictDepositAmount\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"suggestedAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"predictions\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"avgDailyTx\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"avgGasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"industryMultiplier\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"safetyFactor\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"propagateSuperPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"start\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"limit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setCapRatioBps\",\n      \"inputs\": [\n        {\n          \"name\": \"bps\",\n          \"type\": \"uint16\",\n          \"internalType\": \"uint16\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setIndustryMultiplier\",\n      \"inputs\": [\n        {\n          \"name\": \"industry\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"multiplier\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setIndustryScaleUSD\",\n      \"inputs\": [\n        {\n          \"name\": \"category\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"scaleUSD\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSuperPaymasterAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"_superPaymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTokenCategory\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"category\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenCategory\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateAPNTsPrice\",\n      \"inputs\": [\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePrediction\",\n      \"inputs\": [\n        {\n          \"name\": \"avgDailyTx\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"avgGasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"industry\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"safetyFactor\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePredictionCustom\",\n      \"inputs\": [\n        {\n          \"name\": \"avgDailyTx\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"avgGasCost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"customMultiplier\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"safetyFactor\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsPriceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CapRatioBpsSet\",\n      \"inputs\": [\n        {\n          \"name\": \"oldBps\",\n          \"type\": \"uint16\",\n          \"indexed\": false,\n          \"internalType\": \"uint16\"\n        },\n        {\n          \"name\": \"newBps\",\n          \"type\": \"uint16\",\n          \"indexed\": false,\n          \"internalType\": \"uint16\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"IndustryMultiplierSet\",\n      \"inputs\": [\n        {\n          \"name\": \"industry\",\n          \"type\": \"string\",\n          \"indexed\": true,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"multiplier\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"IndustryScaleSet\",\n      \"inputs\": [\n        {\n          \"name\": \"category\",\n          \"type\": \"string\",\n          \"indexed\": true,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"scaleUSD\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PredictionUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"suggestedAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SuperPaymasterAddressUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SuperPaymasterPropagated\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newSP\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SuperPaymasterPropagationFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newSP\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokenCategorySet\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"category\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"xPNTsTokenDeployed\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenAddress\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"symbol\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadyDeployed\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CallerNotCommunity\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CategoryNotSeeded\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC1167FailedCreateClone\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"addr\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidCapRatio\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidMultiplier\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidParameters\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPrice\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotFactoryToken\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_g\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_s\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_r\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_d\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"GTOKEN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"GTOKEN_STAKING\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_MEMBERSHIPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"airdropMint\",\n      \"inputs\": [\n        {\n          \"name\": \"u\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"roleData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"tid\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"isNew\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approve\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"balanceOf\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"burnSBT\",\n      \"inputs\": [\n        {\n          \"name\": \"u\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"daoMultisig\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deactivateAllMemberships\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"deactivateMembership\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getActiveMemberships\",\n      \"inputs\": [\n        {\n          \"name\": \"tid\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"active\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getCommunityMembership\",\n      \"inputs\": [\n        {\n          \"name\": \"tid\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"comm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"mem\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct MySBT.CommunityMembership\",\n          \"components\": [\n            {\n              \"name\": \"community\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"joinedAt\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"isActive\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"metadata\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getMemberships\",\n      \"inputs\": [\n        {\n          \"name\": \"tid\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct MySBT.CommunityMembership[]\",\n          \"components\": [\n            {\n              \"name\": \"community\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"joinedAt\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"isActive\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"metadata\",\n              \"type\": \"string\",\n              \"internalType\": \"string\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSBTData\",\n      \"inputs\": [\n        {\n          \"name\": \"tid\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct MySBT.SBTData\",\n          \"components\": [\n            {\n              \"name\": \"holder\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"firstCommunity\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"mintedAt\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"totalCommunities\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getUserSBT\",\n      \"inputs\": [\n        {\n          \"name\": \"u\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isApprovedForAll\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"lastActivityTime\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"leaveCommunity\",\n      \"inputs\": [\n        {\n          \"name\": \"comm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"membershipIndex\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"minLockAmount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"mintFee\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"mintForRole\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"roleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"roleData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"isNewMint\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"name\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nextTokenId\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ownerOf\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pause\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"paused\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recordActivity\",\n      \"inputs\": [\n        {\n          \"name\": \"u\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"reputationCalculator\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"safeTransferFrom\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"safeTransferFrom\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"sbtData\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"holder\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"firstCommunity\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"mintedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"totalCommunities\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setApprovalForAll\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approved\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setBaseURI\",\n      \"inputs\": [\n        {\n          \"name\": \"baseURI\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setDAOMultisig\",\n      \"inputs\": [\n        {\n          \"name\": \"d\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMinLockAmount\",\n      \"inputs\": [\n        {\n          \"name\": \"a\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMintFee\",\n      \"inputs\": [\n        {\n          \"name\": \"f\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setReputationCalculator\",\n      \"inputs\": [\n        {\n          \"name\": \"c\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"supportsInterface\",\n      \"inputs\": [\n        {\n          \"name\": \"interfaceId\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"symbol\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tokenURI\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferFrom\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unpause\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"userToSBT\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"verifyCommunityMembership\",\n      \"inputs\": [\n        {\n          \"name\": \"u\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"comm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ActivityRecorded\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"week\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Approval\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approved\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ApprovalForAll\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approved\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BaseURIUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"newBaseURI\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ContractPaused\",\n      \"inputs\": [\n        {\n          \"name\": \"by\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ContractUnpaused\",\n      \"inputs\": [\n        {\n          \"name\": \"by\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DAOMultisigUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldDAO\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newDAO\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MembershipAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"metadata\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MembershipDeactivated\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MinLockAmountUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MintFeeUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Paused\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ReputationCalculatorUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldCalculator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newCalculator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SBTBurned\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"grossAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"netAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SBTMinted\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"firstCommunity\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Transfer\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Unpaused\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ActivityTooSoon\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CommunityMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721IncorrectOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721InsufficientApproval\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721InvalidApprover\",\n      \"inputs\": [\n        {\n          \"name\": \"approver\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721InvalidOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721InvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721InvalidReceiver\",\n      \"inputs\": [\n        {\n          \"name\": \"receiver\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721InvalidSender\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ERC721NonexistentToken\",\n      \"inputs\": [\n        {\n          \"name\": \"tokenId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EnforcedPause\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExpectedPause\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InactiveMembership\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAmount\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidCommunity\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidIndex\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidUser\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NonTransferable\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyDAO\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyRegistry\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RoleNotHeld\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SBTNotFound\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TooManyMemberships\",\n      \"inputs\": []\n    }\n  ],\n  \"bytecode\": \"0x60e060405234610487576134146080813803918261001c8161048b565b93849283398101031261048757610032816104b0565b9061003f602082016104b0565b6100576060610050604085016104b0565b93016104b0565b92610062604061048b565b601981527f4d7963656c69756d20536f756c20426f756e6420546f6b656e000000000000006020820152610096604061048b565b6005815264135e54d09560da1b6020820152815190916001600160401b038211610386575f5490600182811c9216801561047d575b60208310146103685781601f849311610408575b50602090601f83116001146103a5575f9261039a575b50508160011b915f199060031b1c1916175f555b8051906001600160401b0382116103865760015490600182811c9216801561037c575b60208310146103685781601f8493116102f2575b50602090601f831160011461028c575f92610281575b50508160011b915f199060031b1c1916176001555b600160068190556007805460ff19169055601055670429d069189e000060115567016345785d8a00006012556001600160a01b038116158015610270575b801561025f575b801561024e575b61023f5760805260a05260c052600d80546001600160a01b0319166001600160a01b0392909216919091179055604051612f4f90816104c5823960805181610d88015260a05181610d0d015260c05181818161033a0152818161069c01528181610ffc015281816114e5015281816115470152818161187701528181611cc20152612c240152f35b63e6c4247b60e01b5f5260045ffd5b506001600160a01b038416156101b7565b506001600160a01b038316156101b0565b506001600160a01b038216156101a9565b015190505f80610156565b60015f9081528281209350601f198516905b8181106102da57509084600195949392106102c2575b505050811b0160015561016b565b01515f1960f88460031b161c191690555f80806102b4565b9293602060018192878601518155019501930161029e565b828111156101405760015f52909150601f830160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf660208510610360575b849392601f0160051c82900391015f5b828110610350575050610140565b5f81830155859450600101610342565b5f9150610332565b634e487b7160e01b5f52602260045260245ffd5b91607f169161012c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100f5565b5f8080528281209350601f198516905b8181106103f057509084600195949392106103d8575b505050811b015f55610109565b01515f1960f88460031b161c191690555f80806103cb565b929360206001819287860151815501950193016103b5565b828111156100df575f8052909150601f830160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360208510610475575b849392601f0160051c82900391015f5b8281106104655750506100df565b5f81830155859450600101610457565b5f9150610447565b91607f16916100cb565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761038657604052565b51906001600160a01b03821682036104875756fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611ce65750806306433b1b14611ca357806306fdde0314611c01578063081812fc14611bc45780630880427514611ba7578063095ea7b314611abb5780630f68ae4014611a3457806313966db514611a1757806323b872dd14611a005780632d5a7f4f14610d315780632f7c88f514611785578063374e7fa3146115145780633e3e6842146114bb5780633f4ba83a1461141f57806342842e0e146113f65780634f8cc0651461136c57806354fd4d501461131f578063556697da1461124957806355f804b31461102b5780635afc4b5c14610fd95780635bb5bf0c14610fa35780635c975abb14610f815780636352211e14610f5257806370a0823114610f0157806371eb90a114610e2757806375794a3c14610e0a578063776fafac14610dac5780637f6b337b14610d6957806380f4b8c814610d31578063826600ce14610cee5780638456cb5914610c5f5780638ceebd8f14610ad9578063908c101814610a9457806395d89b41146109ca578063a1141b0714610985578063a22cb465146108e1578063a610965014610861578063a9eb37ba14610846578063b88d4fde146107e6578063bead0513146107ad578063bf1fb0f214610708578063c0d0aa69146106e2578063c580163e14610672578063c87b56dd146103a0578063ccbc10d01461037a578063d977b66b1461030f578063e985e9c5146102b65763eddd0d9c1461022c575f80fd5b346102b25760203660031901126102b2576004356001600160a01b03600d541633036102a3577fd3950a5507479ea19c5c7766f5191546ace60f0a00dc360d52ce083b58f2233190601254908060125561029e6040519283924291846040919493926060820195825260208201520152565b0390a1005b630999802f60e41b5f5260045ffd5b5f80fd5b346102b25760403660031901126102b2576102cf611d75565b6001600160a01b036102df611d8b565b91165f5260056020526001600160a01b0360405f2091165f52602052602060ff60405f2054166040519015158152f35b346102b25760403660031901126102b257610328611d75565b610330611d8b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361036b5761036991612e6f565b005b6310f5403960e31b5f5260045ffd5b346102b2575f3660031901126102b25760206001600160a01b03600e5416604051908152f35b346102b25760203660031901126102b2576004356103bd81612bcc565b50604051600f5490915f836103d184611f33565b9182825260208201946001811690815f1461065657506001146105f7575b6103fb92500384611ebf565b8251156105db578092815f927a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008110156105b0575b50806d04ee2d6d415b85acef8100000000600a921015610595575b662386f26fc10000811015610581575b6305f5e100811015610570575b612710811015610561575b6064811015610553575b1015610549575b6001820193600a60216104aa61049488611ee1565b976104a2604051998a611ebf565b808952611ee1565b602088019590601f19013687378701015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156104f657600a906104bb565b5050602061053192610545956040519586945180918587015e840190838201905f8252519283915e01015f815203601f198101835282611ebf565b604051918291602083526020830190611d51565b0390f35b906001019061047f565b606460029104930192610478565b6127106004910493019261046e565b6305f5e10060089104930192610463565b662386f26fc1000060109104930192610456565b6d04ee2d6d415b85acef810000000060209104930192610446565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a61042b565b5050506105456040516105ef602082611ebf565b5f8152610531565b50600f5f90815290917f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8025b81831061063a5750509060206103fb928201016103ef565b6020919350806001915483858a01015201910190918592610622565b60ff19168652506103fb92151560051b820160200190506103ef565b346102b25761068036611e1d565b915061068a612bff565b610692612ccb565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361036b576106cb92612a2b565b600160065560408051928352901515602083015290f35b346102b2575f3660031901126102b25760206001600160a01b03600d5416604051908152f35b346102b25760203660031901126102b2575f606060405161072881611ea3565b82815282602082015282604082015201526004355f526009602052608060405f2060405161075581611ea3565b6001600160a01b03825416918282526001600160a01b03806001830154166020840190815260606003600285015494604087019586520154940193845260405194855251166020840152516040830152516060820152f35b346102b25760203660031901126102b2576107df6107c9611d75565b6107d1612bff565b6107d9612ccb565b33612e6f565b6001600655005b346102b25760803660031901126102b2576107ff611d75565b610807611d8b565b6064359167ffffffffffffffff83116102b257366023840112156102b25761083c610369933690602481600401359101611efd565b91604435916128f1565b346102b2575f3660031901126102b257602060405160328152f35b346102b25760203660031901126102b25761087a611d75565b6001600160a01b03600d541633036102a3576001600160a01b03600e54911690816001600160a01b0319821617600e557fb71a92720c720f655d24a8ebbeeb4c9875d85189ca58d32cb0e6997aa5e6c29160206001600160a01b03604051934285521692a3005b346102b25760403660031901126102b2576108fa611d75565b60243590811515908183036102b2576001600160a01b03169182156109725761094490335f52600560205260405f20845f5260205260405f209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b82630b61174360e31b5f5260045260245ffd5b346102b25760403660031901126102b25761099e611d8b565b6004355f52600b6020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b346102b2575f3660031901126102b2576040515f6001546109ea81611f33565b8084529060018116908115610a705750600114610a12575b6105458361053181850382611ebf565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210610a5657509091508101602001610531610a02565b919260018160209254838588010152019101909291610a3e565b60ff191660208086019190915291151560051b840190910191506105319050610a02565b346102b25760403660031901126102b257610aad611d8b565b6004355f52600c6020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b346102b25760203660031901126102b2576004355f52600a60205260405f208054610b0381612693565b91610b116040519384611ebf565b81835260208301905f5260205f205f915b838310610c41575f85815b8151811015610b66576040610b4282846128dd565b510151610b52575b600101610b2d565b91610b5e600191612313565b929050610b4a565b50610b89610b7383612693565b92610b816040519485611ebf565b808452612693565b602083019190601f19013683375f5f5b8251811015610bf2576040610bae82856128dd565b510151610bbe575b600101610b99565b90610bea6001916001600160a01b03610bd785876128dd565b515116610be482896128dd565b52612313565b919050610bb6565b50505090604051918291602083019060208452518091526040830191905f5b818110610c1f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c11565b60046020600192610c51856126ab565b815201920192019190610b22565b346102b2575f3660031901126102b2576001600160a01b03600d541633036102a357610c89612bff565b600160ff1960075416176007557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16040514281527f80170b5fcdd2bf1e0660ef4b8851f86685f64d41b1a19de1471947ece8725aac60203392a2005b346102b2575f3660031901126102b25760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b25760203660031901126102b2576001600160a01b03610d52611d75565b165f526008602052602060405f2054604051908152f35b346102b2575f3660031901126102b25760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b25760203660031901126102b2576004355f526009602052608060405f206001600160a01b03815416906001600160a01b03600182015416906003600282015491015491604051938452602084015260408301526060820152f35b346102b2575f3660031901126102b2576020601054604051908152f35b346102b25760403660031901126102b257600435610e43611d8b565b90606080604051610e5381611ea3565b5f81525f60208201525f60408201520152805f52600b60205260405f206001600160a01b0383165f5260205260405f205490805f52600a60205260405f2054821015610ef257610eb791610eb1915f52600a60205260405f20612130565b506126ab565b906001600160a01b0380835116911603610ee35761054590604051918291602083526020830190611e64565b637554bad360e01b5f5260045ffd5b6363df817160e01b5f5260045ffd5b346102b25760203660031901126102b2576001600160a01b03610f22611d75565b168015610f3f575f526003602052602060405f2054604051908152f35b6322718ad960e21b5f525f60045260245ffd5b346102b25760203660031901126102b2576020610f70600435612bcc565b6001600160a01b0360405191168152f35b346102b2575f3660031901126102b257602060ff600754166040519015158152f35b346102b25760403660031901126102b2576020610fcf610fc1611d75565b610fc9611d8b565b90612843565b6040519015158152f35b346102b25760203660031901126102b257610ff2611d75565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361036b576103699061278a565b346102b25760203660031901126102b25760043567ffffffffffffffff81116102b25761105c903690600401611def565b6001600160a01b03600d541633036102a35767ffffffffffffffff811161123557611088600f54611f33565b601f81116111c7575b505f91601f8211600114611123576060906110e383807fce8257866c47f4cae1c27b1b0190cb5d26540e5a908cbf35974d6f300c63e11c965f91611118575b508160011b915f199060031b1c19161790565b600f555b8260405193849260408452816040850152848401375f828201840152426020830152601f01601f19168101030190a1005b9050830135876110d0565b601f198216600f5f527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802905f5b8181106111af5750907fce8257866c47f4cae1c27b1b0190cb5d26540e5a908cbf35974d6f300c63e11c94846060949310611196575b5050600183811b01600f556110e7565b8201355f19600386901b60f8161c191690558480611186565b83860135835560209586019560019093019201611150565b8181111561109157600f5f52601f820160051c7f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8026020841061122d575b81601f9101920160051c03905f5b828110611220575050611091565b5f82820155600101611212565b5f9150611204565b634e487b7160e01b5f52604160045260245ffd5b346102b25760203660031901126102b2576004355f52600a60205260405f2080549061127482612693565b916112826040519384611ebf565b8083526020830180925f5260205f205f915b83831061130157848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106112d257505050500390f35b919360019193955060206112f18192603f198a82030186528851611e64565b96019201920185949391926112c3565b60046020600192611311856126ab565b815201920192019190611294565b346102b2575f3660031901126102b257610545604051611340604082611ebf565b600b81526a04d795342542d332e322e360ac1b6020820152604051918291602083526020830190611d51565b346102b25760203660031901126102b257611385611d75565b600d54906001600160a01b038216908133036102a3576001600160a01b03169182156113e75782906001600160a01b03191617600d557f90de8705b1aaf3966be0e8ec8acf9aed10a6d3d0d572ec8f96112409e2820c616020604051428152a3005b63e6c4247b60e01b5f5260045ffd5b346102b25761036961140736611db5565b9060405192611417602085611ebf565b5f84526128f1565b346102b2575f3660031901126102b2576001600160a01b03600d541633036102a35760075460ff8116156114ac5760ff19166007557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16040514281527f107553d8191d85b405879cf752997865edd48d94e20bda4dd27223c94b31a7cc60203392a2005b638dfc202b60e01b5f5260045ffd5b346102b2576114c936611e1d565b91506114d3612bff565b6114db612ccb565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361036b576106cb9261233d565b346102b25760203660031901126102b25761152d611d75565b611535612bff565b61153d612ccb565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361036b576001600160a01b0316805f52600860205260405f2054908115801561176a575b61175b57815f52600a60205260405f205f5b8154811015611623578060ff60026115b960019486612130565b500154166115c8575b0161159f565b60026115d48285612130565b5001805460ff191690556001600160a01b036115f08285612130565b505416857fee0396c067d25a2fde86b8e1c13e3995b0940b5f98651052d79fada14ea7dba56020604051428152a36115c2565b5050805f5260086020525f6040812055815f5260026020526001600160a01b0360405f205416151580611754575b61174557815f5260026020526001600160a01b0360405f205416801590811561170e575b835f52600260205260405f206001600160a01b03198154169055835f827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4506116fb577f108d98610c6944880c68d31a01ab6252b635e7c7a9728687f31e68a76538c86560606011546040519081525f6020820152426040820152a36001600655005b50637e27328960e01b5f5260045260245ffd5b61172d845f52600460205260405f206001600160a01b03198154169055565b805f52600360205260405f205f198154019055611675565b639cbe235760e01b5f5260045ffd5b505f611651565b6304fc726b60e41b5f5260045ffd5b50806001600160a01b0361177d84612bcc565b16141561158d565b346102b25760203660031901126102b25761179e611d75565b6117a6612bff565b6117af33612c1a565b156119f1576001600160a01b0316805f52600860205260405f205490811561175b57815f52600b60205260405f206001600160a01b0333165f5260205260405f2054825f52600a60205260405f205481108015906119c8575b610ee357600261182560ff92855f52600a60205260405f20612130565b50015416156119b95760405190632474521560e21b82527f0c34ecc75d3bf122e0609d2576e167f53fb42429262ce8c9b33cab91ff670e3a600483015260248201526020816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156119ae575f9161197f575b501561197057805f52600c60205260405f206001600160a01b0333165f5260205260405f20548015159081611946575b5061193857805f52600c60205260405f206001600160a01b0333165f5260205260405f204290556040519062093a80420482524260208301527f0bd2c5444bc0126737809a3970e1c3bc8cf29e5efb7d5448cbaa6a9c1af8120760403393a3005b62b161e760e41b5f5260045ffd5b905061012c810180911161195c574210826118d7565b634e487b7160e01b5f52601160045260245ffd5b6359f1a2a160e01b5f5260045ffd5b6119a1915060203d6020116119a7575b6119998183611ebf565b81019061215d565b826118a7565b503d61198f565b6040513d5f823e3d90fd5b63e44ae7c960e01b5f5260045ffd5b50825f52600a6020526119de8160405f20612130565b50546001600160a01b0316331415611808565b630f95018760e01b5f5260045ffd5b346102b257610369611a1136611db5565b91611f6b565b346102b2575f3660031901126102b2576020601254604051908152f35b346102b25760203660031901126102b2576004356001600160a01b03600d541633036102a3578015611aac577f5d1f56e31e5dc1f29354822b887b1463ececf7edfad7c39216980b7dfd7ea97d90601154908060115561029e6040519283924291846040919493926060820195825260208201520152565b63162908e360e11b5f5260045ffd5b346102b25760403660031901126102b257611ad4611d75565b602435611ae081612bcc565b33151580611b94575b80611b61575b611b4e5781906001600160a01b0380851691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a45f5260046020526001600160a01b0360405f2091166001600160a01b03198254161790555f80f35b63a9fbf51f60e01b5f523360045260245ffd5b506001600160a01b0381165f52600560205260405f206001600160a01b0333165f5260205260ff60405f20541615611aef565b50336001600160a01b0382161415611ae9565b346102b2575f3660031901126102b2576020601154604051908152f35b346102b25760203660031901126102b257600435611be181612bcc565b505f52600460205260206001600160a01b0360405f205416604051908152f35b346102b2575f3660031901126102b2576040515f5f54611c2081611f33565b8084529060018116908115610a705750600114611c47576105458361053181850382611ebf565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210611c8957509091508101602001610531610a02565b919260018160209254838588010152019101909291611c71565b346102b2575f3660031901126102b25760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b25760203660031901126102b2576004359063ffffffff60e01b82168092036102b2576020916380ac58cd60e01b8114908115611d40575b8115611d2f575b5015158152f35b6301ffc9a760e01b14905083611d28565b635b5e139f60e01b81149150611d21565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036102b257565b602435906001600160a01b03821682036102b257565b35906001600160a01b03821682036102b257565b60609060031901126102b2576004356001600160a01b03811681036102b257906024356001600160a01b03811681036102b2579060443590565b9181601f840112156102b25782359167ffffffffffffffff83116102b257602083818601950101116102b257565b60606003198201126102b2576004356001600160a01b03811681036102b25791602435916044359067ffffffffffffffff82116102b257611e6091600401611def565b9091565b9060806060611ea0936001600160a01b038151168452602081015160208501526040810151151560408501520151918160608201520190611d51565b90565b6080810190811067ffffffffffffffff82111761123557604052565b90601f8019910116810190811067ffffffffffffffff82111761123557604052565b67ffffffffffffffff811161123557601f01601f191660200190565b929192611f0982611ee1565b91611f176040519384611ebf565b8294818452818301116102b2578281602093845f960137010152565b90600182811c92168015611f61575b6020831014611f4d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611f42565b91906001600160a01b0316801561211d57815f5260026020526001600160a01b0360405f205416151580612115575b61174557815f5260026020526001600160a01b0360405f20541692823315159283612079575b6001600160a01b03935085612042575b805f52600360205260405f2060018154019055815f52600260205260405f20818519825416179055857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a41680830361202a57505050565b6364283d7b60e01b5f5260045260245260445260645ffd5b612061825f52600460205260405f206001600160a01b03198154169055565b855f52600360205260405f205f198154019055611fd0565b91929050806120be575b1561209057828291611fc0565b82846120a857637e27328960e01b5f5260045260245ffd5b63177e802f60e01b5f523360045260245260445ffd5b5033841480156120ec575b806120835750825f526004602052336001600160a01b0360405f20541614612083565b50835f52600560205260405f206001600160a01b0333165f5260205260ff60405f2054166120c9565b506001611f9a565b633250574960e11b5f525f60045260245ffd5b8054821015612149575f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b908160209103126102b2575180151581036102b25790565b9190918054680100000000000000008110156112355761219a91600182018155612130565b6123005760036060916001600160a01b0380865116166001600160a01b0319825416178155602085015160018201556121e860408601511515600283019060ff801983541691151516179055565b0192015191825167ffffffffffffffff8111611235576122088254611f33565b601f81116122af575b506020601f82116001146122515781906122429394955f92612246575b50508160011b915f199060031b1c19161790565b9055565b015190505f8061222e565b601f19821690835f52805f20915f5b8181106122975750958360019596971061227f575b505050811b019055565b01515f1960f88460031b161c191690555f8080612275565b9192602060018192868b015181550194019201612260565b8181111561221157825f5260205f20601f830160051c90602084106122f8575b81601f9101920160051c03905f5b8281106122eb575050612211565b5f828201556001016122dd565b5f91506122cf565b634e487b7160e01b5f525f60045260245ffd5b5f19811461195c5760010190565b929190612338602091604086526040860190611d51565b930152565b92906001600160a01b0384169283156126845761236790845f52600860205260405f205492612ceb565b9390918061248b57506010549061237d82612313565b60105561245f82809761244260019860405161239881611ea3565b86815260036001600160a01b03602083019a16998a8152604083014281528d6001600160a01b038060608701948386528b5f526009602052818060405f20995116168219895416178855511691860191166001600160a01b031982541617905551600284015551910155855f5260086020528360405f2055835f52600a60205260405f206040519161242983611ea3565b8983524260208401528b60408401526060830152612175565b815f52600b60205260405f20865f526020525f6040812055612d6f565b7ff5491bdb765a4be5a1bdc9bfd09cf61e1b89962ac33ed2e928f11a59a5e723316020604051428152a4565b9450505f92845f52600b60205260405f206001600160a01b0383165f5260205260405f2054855f52600a60205260405f2054811080612653575b6125b55750845f52600a602052603260405f205410156125a657845f52600a60205261252160405f20926001600160a01b036040519161250483611ea3565b169384825242602083015260016040830152836060830152612175565b845f52600a60205260405f2054905f19820191821161195c576125a17fdce074e613075d639af3f726477d52ac48d3fbdb03f4aa8a9b1e6cede312db10918793845f52600b60205260405f20865f5260205260405f2055835f526009602052600360405f20016125918154612313565b9055604051918291429083612321565b0390a3565b633467d59d60e21b5f5260045ffd5b919294935050825f52600a60205260ff60026125d48360405f20612130565b50015416156125e5575b5050905f90565b6125fc600291845f52600a60205260405f20612130565b5001600160ff19825416179055817fdce074e613075d639af3f726477d52ac48d3fbdb03f4aa8a9b1e6cede312db1060606001600160a01b0360405194604086525f60408701524260208701521693a35f806125de565b50855f52600a6020526001600160a01b036126718260405f20612130565b5054166001600160a01b038416146124c5565b63fd684c3b60e01b5f5260045ffd5b67ffffffffffffffff81116112355760051b60200190565b906040516126b881611ea3565b600381936001600160a01b0381541683526001810154602084015260ff60028201541615156040840152019060405180925f908054906126f782611f33565b80855291600181169081156127635750600114612724575b505060609291612720910384611ebf565b0152565b5f908152602081209092505b81831061274757505081016020018161272061270f565b6020919350806001915483858901015201910190918492612730565b60ff191660208681019190915292151560051b85019092019250839150612720905061270f565b6001600160a01b03165f52600860205260405f205490811561283f57815f52600a60205260405f20915f5b8354811015612839578060ff60026127cf60019488612130565b500154166127de575b016127b5565b60026127ea8287612130565b5001805460ff191690556001600160a01b036128068287612130565b505416837fee0396c067d25a2fde86b8e1c13e3995b0940b5f98651052d79fada14ea7dba56020604051428152a36127d8565b50509050565b9050565b6001600160a01b03165f52600860205260405f205480156128d757805f52600b60205260405f206001600160a01b0383165f5260205260405f205490805f52600a60205260405f20548210156128d0576128ab91610eb1915f52600a60205260405f20612130565b906001600160a01b038083511691161490816128c5575090565b604091500151151590565b5050505f90565b50505f90565b80518210156121495760209160051b010190565b906128fd838284611f6b565b803b61290a575b50505050565b6020916129506001600160a01b03809316956040519586948594630a85bd0160e11b86523360048701521660248501526044840152608060648401526084830190611d51565b03815f865af15f91816129e6575b506129b357503d156129ac573d61297481611ee1565b906129826040519283611ebf565b81523d5f602083013e5b805190816129a75782633250574960e11b5f5260045260245ffd5b602001fd5b606061298c565b6001600160e01b03191663757a42ff60e11b016129d457505f808080612904565b633250574960e11b5f5260045260245ffd5b9091506020813d602011612a23575b81612a0260209383611ebf565b810103126102b257516001600160e01b0319811681036102b257905f61295e565b3d91506129f5565b92906001600160a01b03841692831561268457612a5590845f52600860205260405f205492612ceb565b93909180612a6b57506010549061237d82612313565b9450505f92845f52600b60205260405f206001600160a01b0383165f5260205260405f2054855f52600a60205260405f2054811080612b9b575b612ae45750845f52600a602052603260405f205410156125a657845f52600a60205261252160405f20926001600160a01b036040519161250483611ea3565b858095505f969392949652600a60205260ff6002612b058360405f20612130565b50015416612b92577fdce074e613075d639af3f726477d52ac48d3fbdb03f4aa8a9b1e6cede312db1091612b706001600160a01b0392855f52600a6020526002612b528260405f20612130565b5001600160ff19825416179055855f52600a60205260405f20612130565b50600142910155612b8a6040519283921695429083612321565b0390a3905f90565b50505050905f90565b50855f52600a6020526001600160a01b03612bb98260405f20612130565b5054166001600160a01b03841614612aa5565b805f5260026020526001600160a01b0360405f205416908115612bed575090565b637e27328960e01b5f5260045260245ffd5b60ff60075416612c0b57565b63d93c066560e01b5f5260045ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169081156128d7576001600160a01b0360446020926040519485938492632474521560e21b84527fe94d78b6d8fb99b2c21131eb4552924a60f564d8515a3cc90ef300fc9735c07460048501521660248301525afa5f9181612caa575b50611ea057505f90565b612cc491925060203d6020116119a7576119998183611ebf565b905f612ca0565b600260065414612cdc576002600655565b633ee5aeb560e01b5f5260045ffd5b9060606020821115612d4c575081016040828203126102b257612d0d82611da1565b9160208101359067ffffffffffffffff82116102b2570181601f820112156102b2576001600160a01b0391816020612d4793359101611efd565b911691565b919081602091810103126102b257612d6b6001600160a01b0391611da1565b1691565b6001600160a01b031690811561211d57805f5260026020526001600160a01b0360405f205416151580612e67575b61174557805f5260026020526001600160a01b0360405f205416908115159283612e30575b805f52600360205260405f2060018154019055815f52600260205260405f20816001600160a01b0319825416179055827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a450612e1d57565b6339e3563760e11b5f525f60045260245ffd5b612e4f825f52600460205260405f206001600160a01b03198154169055565b825f52600360205260405f205f198154019055612dc2565b506001612d9d565b6001600160a01b03165f52600860205260405f20548015612f3e57805f52600b60205260405f206001600160a01b0383165f5260205260405f2054815f52600a60205260405f2054811015612f3957612ed390825f52600a60205260405f20612130565b506001600160a01b0380825416931680931480612f2b575b612ef457505050565b60020160ff1981541690557fee0396c067d25a2fde86b8e1c13e3995b0940b5f98651052d79fada14ea7dba56020604051428152a3565b5060ff600282015416612eeb565b505050565b505056fea164736f6c6343000821000a\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"initialOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_CLOSE_TIMEOUT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MIN_CLOSE_TIMEOUT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"VOUCHER_TYPEHASH\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"closeChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"cumulativeAmount\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"closeTimeout\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"closedChannels\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"eip712Domain\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"fields\",\n          \"type\": \"bytes1\",\n          \"internalType\": \"bytes1\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"version\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"chainId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"verifyingContract\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"extensions\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct MicroPaymentChannel.Channel\",\n          \"components\": [\n            {\n              \"name\": \"payer\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"payee\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"token\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"authorizedSigner\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"deposit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"settled\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"closeRequestedAt\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            },\n            {\n              \"name\": \"finalized\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"openChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"payee\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"deposit\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"authorizedSigner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"requestCloseChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setCloseTimeout\",\n      \"inputs\": [\n        {\n          \"name\": \"_timeout\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"settleChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"cumulativeAmount\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"topUpChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawChannel\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ChannelClosed\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"finalSettled\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"refund\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ChannelOpened\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"payer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"payee\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"deposit\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ChannelSettled\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"cumulativeAmount\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"delta\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ChannelTopUp\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"newDeposit\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ChannelWithdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"refund\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CloseRequested\",\n      \"inputs\": [\n        {\n          \"name\": \"channelId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"requestedAt\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CloseTimeoutUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldTimeout\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        },\n        {\n          \"name\": \"newTimeout\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressInsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AmountOverflow\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ChannelAlreadyClosed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ChannelAlreadyExists\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ChannelFinalized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ChannelNotFound\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CloseNotRequested\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CloseTimeoutNotElapsed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedInnerCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAmount\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidParameter\",\n      \"inputs\": [\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NonDecreasingSettlement\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyPayee\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyPayer\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SelfChannel\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SettlementExceedsDeposit\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_BOOSTED_COLLECTIONS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"boostedCollections\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"calculateReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"communityScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"globalScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityActiveRules\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityReputations\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"communityRules\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"baseScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"activityBonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxBonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"description\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"computeScore\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"communities\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"ruleIds\",\n          \"type\": \"bytes32[][]\",\n          \"internalType\": \"bytes32[][]\"\n        },\n        {\n          \"name\": \"activities\",\n          \"type\": \"uint256[][]\",\n          \"internalType\": \"uint256[][]\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"totalScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"defaultRule\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"baseScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"activityBonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxBonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"description\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entropyFactors\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getActiveRules\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"ruleIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getReputationBreakdown\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"baseScore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"nftBonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"activityBonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"multiplier\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nftCollectionBoost\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nftHoldStart\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setCommunityReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"score\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setEntropyFactor\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"factor\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setNFTBoost\",\n      \"inputs\": [\n        {\n          \"name\": \"collection\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"boost\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRule\",\n      \"inputs\": [\n        {\n          \"name\": \"ruleId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"base\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"bonus\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"max\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"desc\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"syncToRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"communities\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"ruleIds\",\n          \"type\": \"bytes32[][]\",\n          \"internalType\": \"bytes32[][]\"\n        },\n        {\n          \"name\": \"activities\",\n          \"type\": \"uint256[][]\",\n          \"internalType\": \"uint256[][]\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updateNFTHoldStart\",\n      \"inputs\": [\n        {\n          \"name\": \"collection\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CommunityReputationUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"score\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EntropyFactorUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"factor\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"NFTBoostAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"collection\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"boost\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ReputationComputed\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"score\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RuleUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"community\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"ruleId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"base\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"bonus\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DoesNotHoldNFT\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidCollection\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInput\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MaxBoostedReached\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotAuthorized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Unauthorized\",\n      \"inputs\": []\n    }\n  ],\n  \"bytecode\": \"0x60a0604052346102c557604051601f611e4e38819003918201601f19168301916001600160401b0383118484101761029e578084926020946040528339810103126102c557516001600160a01b038116908190036102c55733156102b2575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360809081526040519081016001600160401b0381118282101761029e57604052600a81526020810160018152604082019060648252604051926040840184811060018060401b0382111761029e576040526007845266111959985d5b1d60ca1b60208501526060810184905251600355516004555160055580516001600160401b03811161029e57600654600181811c91168015610294575b602082101461028057601f8111610212575b50602091601f82116001146101b2579181925f926101a7575b50508160011b915f199060031b1c1916176006555b604051611b8490816102ca823960805181818161094c01528181610c9d015281816113af015261142a0152f35b015190505f80610165565b601f1982169260065f52805f20915f5b8581106101fa575083600195106101e2575b505050811b0160065561017a565b01515f1960f88460031b161c191690555f80806101d4565b919260206001819286850151815501940192016101c2565b8181111561014c5760065f52601f820160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f60208410610278575b81601f9101920160051c03905f5b82811061026b57505061014c565b5f8282015560010161025d565b5f915061024f565b634e487b7160e01b5f52602260045260245ffd5b90607f169061013a565b634e487b7160e01b5f52604160045260245ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816306433b1b1461140d57508063097f6b7c1461130c5780632f4468811461121e57806330cd71a81461110c5780633425bfae146110b85780634a2357b91461105057806354fd4d5014610ff15780635db8b75b14610fd65780636df80b4e14610c16578063715018a614610bb257806374f9924414610b225780638da5cb5b14610afd5780638dbda2eb14610ac55780639172ff45146107fd5780639c4b3436146106bb578063a00e8f8114610659578063a981c9f514610602578063bcd3697c14610512578063ce26b0e01461045d578063cf1c545614610425578063f2fde38b14610392578063fb42a9bf14610344578063fc193b49146103015763ff61c64e14610126575f80fd5b346102fe576101343661147a565b5090916001600160a01b038192168082526002602052604082206040518082602082945493848152019086526020862092865b8181106102e557505061017c92500382611522565b8051156102d757818352600160205261019860408420916117f4565b5183526020526101aa60408320611815565b9260208451940151915b8352600760205260408320549283156102c7575b94856001600160a01b03600b549216965b8281106101fe5750505060809450604051938452602084015260408301526060820152f35b602460206001600160a01b036102138461179b565b90549060031b1c16604051928380926370a0823160e01b82528d60048301525afa839181610290575b5061024b575b506001016101d9565b610256575b5f610242565b926102886001916001600160a01b0361026e8761179b565b90549060031b1c1684526009602052604084205490611875565b939050610250565b9091506020813d82116102bf575b816102ab60209383611522565b810103126102bb5751905f61023c565b5f80fd5b3d915061029e565b670de0b6b3a764000093506101c8565b5060035492600454916101b4565b8454835260019485019486945060209093019201610167565b80fd5b50346102fe5760203660031901126102fe5760043590600b548210156102fe5760206001600160a01b036103348461179b565b90549060031b1c16604051908152f35b50346102fe5760403660031901126102fe576001600160a01b03604061036861144e565b9282610372611464565b9416815260086020522091165f52602052602060405f2054604051908152f35b50346102fe5760203660031901126102fe576001600160a01b036103b461144e565b6103bc611b51565b16801561041157815473ffffffffffffffffffffffffffffffffffffffff198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b50346102fe5760203660031901126102fe5760406020916001600160a01b0361044c61144e565b168152600983522054604051908152f35b50346102fe5760203660031901126102fe576001600160a01b0361047f61144e565b168152600260205260408120604051908160208254918281520190819285526020852090855b8181106104fc57505050826104bb910383611522565b604051928392602084019060208552518091526040840192915b8181106104e3575050500390f35b82518452859450602093840193909201916001016104d5565b82548452602090930192600192830192016104a5565b50346102fe57806003193601126102fe576003546004549160055460405191806006549061053f8261169d565b80865291600181169081156105db575060011461057a575b50509061056a8361057694930383611522565b60405194859485611775565b0390f35b600681527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f94939250905b8082106105bf575091925090820160200161056a83610557565b91929360018160209254838589010152019101909392916105a5565b60ff191660208088019190915292151560051b8601909201925061056a9150849050610557565b50346102fe5760403660031901126102fe5761061c61144e565b6001600160a01b03168152600260205260408120805460243592908310156102fe57602061064a84846117c7565b90549060031b1c604051908152f35b50346102fe5760403660031901126102fe576040906001600160a01b0361067e61144e565b168152600160205281812060243582526020522080546105766001830154926106ae6003600283015492016116d5565b9060405194859485611775565b50346102fe576001600160a01b036106d23661147a565b5091909116918281526002602052604081209260405191826020865491828152019582526020822090825b8181106107e757505050610717836107da95960384611522565b6040948551926107278785611522565b60018452601f1987019261073e8460208701611b35565b85610748866117f4565b52610752856117f4565b508751956107608988611522565b600187526107718560208901611b35565b51905061077d81611544565b9061078a89519283611522565b808252610799601f1991611544565b013660208301376107a9866117f4565b526107b3856117f4565b508651926107c18885611522565b600184523660208501376107d4836117f4565b52611882565b8151908082526020820152f35b82548852602090970196600192830192016106fd565b50346102bb5760c03660031901126102bb5761081761144e565b60243567ffffffffffffffff81116102bb5761083790369060040161155c565b60443567ffffffffffffffff81116102bb576108579036906004016115ca565b60643567ffffffffffffffff81116102bb576108779036906004016115ca565b906084359160a4359067ffffffffffffffff82116102bb576108a06108a99236906004016114d8565b93909587611882565b926040928351926108ba8585611522565b600184526020840192601f19860192833686376001600160a01b036108de876117f4565b99168099528651946108f08887611522565b60018652602086019436863788610906876117f4565b5287516020810190606082526002608082015261525360f01b60a08201528b8a82015283606082015260a0815261093e60c082611522565b519020956001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001696873b156102bb578951631b02e44f60e01b8152600481019190915260a06024820152975160a4890181905288969594939260c4880192915f5b818110610aa35750505060209060031988840301604489015251918281520194905f5b818110610a8a57505050845f969484829589956020956064860152600319858503016084860152818452858401378181018401859052601f01601f1916010301925af18015610a8057610a45575b507fdb8ed69eccdb6ff5105e3934ba9b515bb1b9d366e3a0c25a5f852ee20b6783e29160209151908152a280f35b602091945091610a765f7fdb8ed69eccdb6ff5105e3934ba9b515bb1b9d366e3a0c25a5f852ee20b6783e294611522565b5f94915091610a17565b82513d5f823e3d90fd5b82518752899750602096870196909201916001016109c9565b82516001600160a01b031685528b9950602094850194909201916001016109a6565b346102bb5760203660031901126102bb576001600160a01b03610ae661144e565b165f526007602052602060405f2054604051908152f35b346102bb575f3660031901126102bb5760206001600160a01b035f5416604051908152f35b346102bb5760803660031901126102bb57610b3b61144e565b60243567ffffffffffffffff81116102bb57610b5b90369060040161155c565b9060443567ffffffffffffffff81116102bb57610b7c9036906004016115ca565b906064359167ffffffffffffffff83116102bb57602093610ba4610baa9436906004016115ca565b92611882565b604051908152f35b346102bb575f3660031901126102bb57610bca611b51565b5f805473ffffffffffffffffffffffffffffffffffffffff19811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102bb5760a03660031901126102bb5760043560243560443560643560843567ffffffffffffffff81116102bb57610c539036906004016114d8565b91604051632474521560e21b81527fe94d78b6d8fb99b2c21131eb4552924a60f564d8515a3cc90ef300fc9735c07460048201523360248201526020816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610fcb575f91610f9c575b501580610f88575b610f795761271085118015610f6e575b8015610f62575b610f5357335f52600160205260405f20865f5260205260405f20541580610f4a575b610f03575b60405190610d2082611506565b858252602082018581526040830191825267ffffffffffffffff8511610eef5760405194610d58601f8201601f191660200187611522565b80865236818601116102bb576020815f92600397838a01378701015260608301948552335f52600160205260405f20885f5260205260405f209251835551600183015551600282015501905180519067ffffffffffffffff8211610eef578190610dc2845461169d565b601f8111610e96575b50602090601f8311600114610e33575f92610e28575b50508160011b915f199060031b1c19161790555b60405191825260208201527f868a11f79934bfa7243fd979d39bf00f37050e24b3ffc20a11f12a8b7e48d99560403392a3005b015190508680610de1565b5f8581528281209350601f198516905b818110610e7e5750908460019594939210610e66575b505050811b019055610df5565b01515f1960f88460031b161c19169055868080610e59565b92936020600181928786015181550195019301610e43565b82811115610dcb57909150835f5260205f20601f840160051c9060208510610ee7575b849392601f0160051c82900391015f5b828110610ed7575050610dcb565b5f81830155859450600101610ec9565b5f9150610eb9565b634e487b7160e01b5f52604160045260245ffd5b335f52600260205260405f20805468010000000000000000811015610eef57610f31916001820181556117c7565b81549060031b9088821b915f19901b1916179055610d13565b50841515610d0e565b63b4fa3fb360e01b5f5260045ffd5b50620186a08111610cec565b506127108411610ce5565b63ea8e4eb560e01b5f5260045ffd5b50336001600160a01b035f54161415610cd5565b610fbe915060203d602011610fc4575b610fb68183611522565b8101906117dc565b87610ccd565b503d610fac565b6040513d5f823e3d90fd5b346102bb575f3660031901126102bb57602060405160328152f35b346102bb575f3660031901126102bb57610576604051611012604082611522565b601081527f52657075746174696f6e2d302e332e320000000000000000000000000000000060208201526040519182916020835260208301906114b4565b346102bb5760403660031901126102bb5761106961144e565b7f21281390931aaf470d02c340b1ca10fabd02c8d7cdd1efcdbb3dc3fe5a0d074960206001600160a01b03602435936110a0611b51565b1692835f52600782528060405f2055604051908152a2005b346102bb5760403660031901126102bb576110d161144e565b6001600160a01b036110e1611464565b91165f52600a6020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b346102bb5760403660031901126102bb5761112561144e565b6001600160a01b0360243591611139611b51565b1690811561120f57815f52600960205260405f20541561118e575b60207fcde4878b12c6b6c93c3eb3433ffbfdb24eb29698d8ac6ac98caf5db49d82345791835f52600982528060405f2055604051908152a2005b600b5460328110156112005768010000000000000000811015610eef577fcde4878b12c6b6c93c3eb3433ffbfdb24eb29698d8ac6ac98caf5db49d823457916111df82600160209401600b5561179b565b81549060031b906001600160a01b0387831b921b1916179055915050611154565b6310acf9a960e31b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b346102bb5760203660031901126102bb5761123761144e565b6040516370a0823160e01b81523360048201526020816024816001600160a01b0386165afa5f91816112d8575b506112785763517172a160e11b5f5260045ffd5b156112ca57335f52600a60205260405f206001600160a01b0382165f5260205260405f2054156112a457005b335f52600a6020526001600160a01b0360405f2091165f5260205260405f204290555f80f35b624fa6f360e31b5f5260045ffd5b9091506020813d602011611304575b816112f460209383611522565b810103126102bb57519083611264565b3d91506112e7565b346102bb5761131a3661147a565b916001600160a01b035f541633141580611393575b6113855760206001600160a01b03807f6c1649831c4a2bebf79dfe8a2623ce1f5c65c9ab62903600dc011ee60a11c408931693845f526008835260405f208282165f5283528560405f20556040519586521693a3005b6282b42960e81b5f5260045ffd5b50604051635f9464c560e11b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610fcb575f916113ee575b501561132f565b611407915060203d602011610fc457610fb68183611522565b846113e7565b346102bb575f3660031901126102bb576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b03821682036102bb57565b602435906001600160a01b03821682036102bb57565b60609060031901126102bb576004356001600160a01b03811681036102bb57906024356001600160a01b03811681036102bb579060443590565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f840112156102bb5782359167ffffffffffffffff83116102bb57602083818601950101116102bb57565b6080810190811067ffffffffffffffff821117610eef57604052565b90601f8019910116810190811067ffffffffffffffff821117610eef57604052565b67ffffffffffffffff8111610eef5760051b60200190565b9080601f830112156102bb5781359061157482611544565b926115826040519485611522565b82845260208085019360051b8201019182116102bb57602001915b8183106115aa5750505090565b82356001600160a01b03811681036102bb5781526020928301920161159d565b9080601f830112156102bb578135906115e282611544565b926115f06040519485611522565b82845260208085019360051b820101908282116102bb5760208101935b82851061161c57505050505090565b843567ffffffffffffffff81116102bb57820184603f820112156102bb5760208101359061164982611544565b916116576040519384611522565b8083526020808085019260051b84010101918783116102bb57604001905b82821061168d5750505081526020948501940161160d565b8135815260209182019101611675565b90600182811c921680156116cb575b60208310146116b757565b634e487b7160e01b5f52602260045260245ffd5b91607f16916116ac565b9060405191825f8254926116e88461169d565b8084529360018116908115611753575060011461170f575b5061170d92500383611522565b565b90505f9291925260205f20905f915b81831061173757505090602061170d928201015f611700565b602091935080600191548385890101520191019091849261171e565b90506020925061170d94915060ff191682840152151560051b8201015f611700565b9092608092611798959483526020830152604082015281606082015201906114b4565b90565b600b548110156117b357600b5f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b80548210156117b3575f5260205f2001905f90565b908160209103126102bb575180151581036102bb5790565b8051156117b35760200190565b80518210156117b35760209160051b010190565b9060405161182281611506565b606061184960038395805485526001810154602086015260028101546040860152016116d5565b910152565b8181029291811591840414171561186157565b634e487b7160e01b5f52601160045260245ffd5b9190820180921161186157565b939290935f938351865180911490811591611b29575b50610f5357925f915b8651831015611a11576001600160a01b036118bc8489611801565b5116965f91825b6118cd8686611801565b51518410156119c25761195a6001916118f0866118ea8a8a611801565b51611801565b518c5f528360205260405f20905f526020528561190f60405f20611815565b8a8a825115806119ba575b61196a575b611954936118ea6119339261193f94611801565b5160208301519061184e565b906040810151808311611962575b5051611875565b90611875565b9301926118c3565b91505f61194d565b505050506119548961193f611933896118ea8d60405161198981611506565b6003548152600454602082015260055460408201526119a860066116d5565b6060820152959450925050935061191f565b50831561191a565b600193506119f7670de0b6b3a7640000916119fe949b9a93979a9996995f52600760205260405f2054908115611a095761184e565b0490611875565b9501919390936118a1565b83915061184e565b939495505050505f90600b54915b828110611a2b57505050565b6001600160a01b03611a3c8261179b565b90549060031b1c166001600160a01b038316805f52600a60205260405f206001600160a01b0383165f5260205260405f20548015159081611b11575b50611a88575b5050600101611a1f565b604051906370a0823160e01b82526004820152602081602481855afa5f9181611ade575b5015611a7e57611abd575b80611a7e565b60019195611ad7915f52600960205260405f205490611875565b9490611ab7565b9091506020813d8211611b09575b81611af960209383611522565b810103126102bb5751905f611aac565b3d9150611aec565b905062093a808101809111611861574210155f611a78565b9050835114155f611898565b5f5b828110611b4357505050565b606082820152602001611b37565b6001600160a01b035f54163303611b6457565b63118cdaa760e01b5f523360045260245ffdfea164736f6c6343000821000a\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"BLS_AGGREGATOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"_v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createProposal\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"evidenceHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createProposal\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeWithProof\",\n      \"inputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"repUsers\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"newScores\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"markProposalExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nextProposalId\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposals\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"reason\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"executed\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"evidenceHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pruneValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"queueSlashWithProof\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setBLSAggregator\",\n      \"inputs\": [\n        {\n          \"name\": \"_bls\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSAggregatorUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProposalCreated\",\n      \"inputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProposalExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProposalSigned\",\n      \"inputs\": [\n        {\n          \"name\": \"id\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ValidatorPruned\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"hadRole\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"stakeAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ValidatorRemoved\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadySigned\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotActiveValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotAuthorizedExecutor\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotValidator\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyBLSAggregator\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ProposalDoesNotExist\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ProposalExecutedAlready\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StakingNotConfigured\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ValidatorMissingRole\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ValidatorRoleRevoked\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ValidatorStakeBelowMinimum\",\n      \"inputs\": [\n        {\n          \"name\": \"actual\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ValidatorStillEligible\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_superPaymaster\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_dvtValidator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"DVT_VALIDATOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"MAX_VALIDATORS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SLASH_THRESHOLD_FLOOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SUPERPAYMASTER\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"aggregatedSignatures\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"aggregatedSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"messageHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"verified\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"defaultThreshold\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeGuardianSlash\",\n      \"inputs\": [\n        {\n          \"name\": \"fraudProofId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guiltyGuardians\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"fraudProof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeProposal\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"callData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"requiredThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executedProposals\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"fraudProofVerifier\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getBLSPublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct BLS.G1Point\",\n          \"components\": [\n            {\n              \"name\": \"x_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"x_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            }\n          ]\n        },\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"isActive\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardianSlashed\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"minThreshold\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"permissionlessBLSRegistration\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposalNonces\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposalSignersCommitment\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"queueSlashWithConsensus\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerBLSPublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct BLS.G1Point\",\n          \"components\": [\n            {\n              \"name\": \"x_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"x_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            }\n          ]\n        },\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"popSignature\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct BLS.G2Point\",\n          \"components\": [\n            {\n              \"name\": \"x_c0_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"x_c0_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"x_c1_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"x_c1_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_c0_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_c0_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_c1_a\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"y_c1_b\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"revokeBLSPublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setDVTValidator\",\n      \"inputs\": [\n        {\n          \"name\": \"_dv\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setDefaultThreshold\",\n      \"inputs\": [\n        {\n          \"name\": \"_newThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setFraudProofVerifier\",\n      \"inputs\": [\n        {\n          \"name\": \"verifier\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMinThreshold\",\n      \"inputs\": [\n        {\n          \"name\": \"_newThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPermissionlessBLSRegistration\",\n      \"inputs\": [\n        {\n          \"name\": \"enabled\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSlashPolicyAdmin\",\n      \"inputs\": [\n        {\n          \"name\": \"newAdmin\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSlashThreshold\",\n      \"inputs\": [\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setSuperPaymaster\",\n      \"inputs\": [\n        {\n          \"name\": \"_sp\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slashPolicyAdmin\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slashThresholds\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"usedSlashQueueHashes\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validatorAtSlot\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"verify\",\n      \"inputs\": [\n        {\n          \"name\": \"expectedMessageHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signerMask\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"requiredThreshold\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"sigBytes\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"verifyAndExecute\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"repUsers\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"newScores\",\n          \"type\": \"uint256[]\",\n          \"internalType\": \"uint256[]\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"evidenceHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSPublicKeyRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSPublicKeyRevoked\",\n      \"inputs\": [\n        {\n          \"name\": \"validator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BLSVerificationStatus\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"success\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"DVTValidatorUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FraudProofVerifierUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianSlashSkipped\",\n      \"inputs\": [\n        {\n          \"name\": \"fraudProofId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianSlashed\",\n      \"inputs\": [\n        {\n          \"name\": \"fraudProofId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PermissionlessBLSRegistrationSet\",\n      \"inputs\": [\n        {\n          \"name\": \"enabled\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProposalExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"callDataHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ReputationEpochTriggered\",\n      \"inputs\": [\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"userCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SignatureAggregated\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"aggregatedSignature\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashConsensusReached\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"requiredThreshold\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"evidenceHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"level\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashPolicyAdminUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAdmin\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAdmin\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashPreQueued\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"requiredThreshold\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlashThresholdUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"slashLevel\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"oldThreshold\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"newThreshold\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SuperPaymasterUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newAddr\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ThresholdUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldThreshold\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newThreshold\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmptyGuiltyGuardians\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmptySignerMask\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ForbiddenGenericSelector\",\n      \"inputs\": [\n        {\n          \"name\": \"selector\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FraudProofVerifierNotSet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"addr\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidBLSKey\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidBLSKeyNotInSubgroup\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidBLSKeyNotOnCurve\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidFraudProof\",\n      \"inputs\": [\n        {\n          \"name\": \"fraudProofId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidParameter\",\n      \"inputs\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPoP\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidProposalId\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidSignatureCount\",\n      \"inputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidTarget\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"KeyNotActive\",\n      \"inputs\": [\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotSlashPolicyAdmin\",\n      \"inputs\": [\n        {\n          \"name\": \"caller\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"PermissionlessRegistrationDisabled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ProposalAlreadyExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ProposalExecutionFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"proposalId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"returnData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SignatureVerificationFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlashQueueProofAlreadyUsed\",\n      \"inputs\": [\n        {\n          \"name\": \"queueHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlashThresholdOutOfRange\",\n      \"inputs\": [\n        {\n          \"name\": \"threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlotAlreadyTaken\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlotOutOfRange\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlotValidatorRoleRevoked\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlotValidatorStakeBelowMinimum\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"v\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"actual\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"StakingNotConfigured\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnauthorizedCaller\",\n      \"inputs\": [\n        {\n          \"name\": \"caller\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnknownValidatorSlot\",\n      \"inputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"function\",\n      \"name\": \"verifyProof\",\n      \"inputs\": [\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"message\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    }\n  ],\n  \"bytecode\": \"0x608080604052346015576109b5908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806354fd4d501461009d5763b8e72af61461002f575f80fd5b346100995760403660031901126100995760043567ffffffffffffffff811161009957610060903690600401610110565b6024359067ffffffffffffffff82116100995760209261008761008f933690600401610110565b929091610302565b6040519015158152f35b5f80fd5b34610099575f3660031901126100995760406100b881610193565b906012825260208201917f424c5356616c696461746f722d302e332e32000000000000000000000000000083528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b9181601f840112156100995782359167ffffffffffffffff8311610099576020838186019501011161009957565b60405190610100820182811067ffffffffffffffff82111761015f57604052565b634e487b7160e01b5f52604160045260245ffd5b604051906080820182811067ffffffffffffffff82111761015f57604052565b6040519190601f01601f1916820167ffffffffffffffff81118382101761015f57604052565b92919267ffffffffffffffff821161015f576101de601f8301601f1916602001610193565b938285528282011161009957815f926020928387013784010152565b9080601f8301121561009957816020610215933591016101b9565b90565b90816101009103126100995760e061022e61013e565b91805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c0840152015160e082015290565b610281610173565b905f82525f60208301525f60408301525f6060830152565b6102a161013e565b905f82525f60208301525f60408301525f60608301525f60808301525f60a08301525f60c08301525f60e0830152565b8051156102de5760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156102de5760400190565b93929060c0811061087857811561087857840160808582031261009957843567ffffffffffffffff8111610099578161033c9187016101fa565b94602081013567ffffffffffffffff8111610099578261035d9183016101fa565b91604082013567ffffffffffffffff81116100995761037c92016101fa565b92608086805181010312610099576103e06103d06103e893608061039e610173565b9960208101518b52604081015160208c0152606081015160408c0152015160608a015260208082518301019101610218565b9460208082518301019101610218565b9236916101b9565b6103f0610299565b90604051610100810191604036843761046660678383519361014082019481602001865e518101600160f81b6101408201525f6101428201537f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e61014382015263554c5f2360e01b610163820152030184610880565b9283602052838152610120830193600185536101218401907f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e825261014185019163554c5f2360e01b835260205f60458660025afa60203d141615610099575f51865290916045916101458701919060026020895b8051881889520190808b537f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e835263554c5f2360e01b845260205f878a60025afa60203d141615610099575f51825260010195600987146105405795906020906104db565b5050505050505060406105cc9260206105e496838552525260016101a08401526f1a0111ea397fe69a4b1ba7b6434bacd76101c08401527f64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab6101e08401526105a88382610898565b6105b56040840182610898565b6105c26080840182610898565b60c0830190610898565b6105d683826108b6565b8261010001906080016108b6565b6101008161020081600d5afa6101003d14161561086b5780518251149081610858575b81610845575b81610832575b8161081f575b8161080c575b816107f9575b816107e7575b50156107e05761063b6060610193565b60028152936040925f5b8481106107c957506106576060610193565b93600285525f5b8181106107b25750509061071691610674610279565b6f17f1d3a73197d7942695638c4fa9ac0f81527fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb60208201526f08b3f481e3aaa0f1a09e30ed741d8ae460408201527ffcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e160608201526106f2886102d1565b526106fc876102d1565b50610706856102d1565b52610710846102d1565b506108db565b61071f856102f2565b52610729846102f2565b50610733826102f2565b5261073d816102f2565b508291835192604051948303915f5b8286821461077d5790610100602060019301946080602084610180028c0192828951855e8901015191015e0161074c565b505094602092505f9150846101800290600f5afa9160203d149151141616156107a5575f5190565b634df45e2f5f526004601cfd5b6020906107bd610299565b8282890101520161065e565b6020906107d4610279565b82828a01015201610645565b505f925050565b60e09150015160e0820151145f61062b565b905060c081015160c08301511490610625565b905060a081015160a0830151149061061f565b9050608081015160808301511490610619565b9050606081015160608301511490610613565b905060408101516040830151149061060d565b9050602081015160208301511490610607565b63c55e5e335f526004601cfd5b505f93505050565b6020915f9160025afa60203d141615610099575f5190565b906101006040928383606083015e60055afa60403d14161561009957565b9060806101009260115afa6101003d1416156108ce57565b6389083b915f526004601cfd5b6108e3610279565b506040810180516060830191825191801580610977575b610970577f64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab8311156109685760ff60015b16016f1a0111ea397fe69a4b1ba7b6434bacd70390527f64774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab03905290565b60ff5f61092b565b5050505090565b5082156108fa56fea264697066735822122099a4bef546e35f7f419e6d425305ce27139d0f4e1e6ddc9748f154840fe1abc364736f6c63430008210033\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"timelock_\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardian_\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initialConsumer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"DEFAULT_WINDOW\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ETH_SENTINEL\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"checkPolicy\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"selector\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"decision\",\n          \"type\": \"uint8\",\n          \"internalType\": \"enum IPolicyRegistry.PolicyDecision\"\n        },\n        {\n          \"name\": \"remainingDaily\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"freezeSender\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAssetPolicy\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IPolicyRegistry.AssetPolicy\",\n          \"components\": [\n            {\n              \"name\": \"dvtTriggerAmount\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"perTxHardCap\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"windowSeconds\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            },\n            {\n              \"name\": \"configured\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAssetSpend\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"spentInWindow\",\n          \"type\": \"uint128\",\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"windowStart\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getContractScope\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IPolicyRegistry.ContractScope\",\n          \"components\": [\n            {\n              \"name\": \"allowed\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"requireDVTAlways\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"velocityLimit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"velocityWindow\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            },\n            {\n              \"name\": \"configured\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guardian\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isAuthorizedConsumer\",\n      \"inputs\": [\n        {\n          \"name\": \"consumer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isFrozen\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isSelectorAllowed\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"selector\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recordSpend\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"selector\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAssetPolicy\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"params\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IPolicyRegistry.AssetPolicyInput\",\n          \"components\": [\n            {\n              \"name\": \"dvtTriggerAmount\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"perTxHardCap\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"windowSeconds\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setConsumerAuthorization\",\n      \"inputs\": [\n        {\n          \"name\": \"consumer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"authorized\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setContractScope\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"params\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IPolicyRegistry.ContractScopeInput\",\n          \"components\": [\n            {\n              \"name\": \"allowed\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"requireDVTAlways\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"velocityLimit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"velocityWindow\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            },\n            {\n              \"name\": \"selectorAllowlist\",\n              \"type\": \"bytes4[]\",\n              \"internalType\": \"bytes4[]\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setGuardian\",\n      \"inputs\": [\n        {\n          \"name\": \"newGuardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tightenAssetPolicy\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"params\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IPolicyRegistry.AssetPolicyInput\",\n          \"components\": [\n            {\n              \"name\": \"dvtTriggerAmount\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"perTxHardCap\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"windowSeconds\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tightenContractScope\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"params\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct IPolicyRegistry.ContractScopeInput\",\n          \"components\": [\n            {\n              \"name\": \"allowed\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"requireDVTAlways\",\n              \"type\": \"bool\",\n              \"internalType\": \"bool\"\n            },\n            {\n              \"name\": \"velocityLimit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"velocityWindow\",\n              \"type\": \"uint64\",\n              \"internalType\": \"uint64\"\n            },\n            {\n              \"name\": \"selectorAllowlist\",\n              \"type\": \"bytes4[]\",\n              \"internalType\": \"bytes4[]\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"timelock\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unfreezeSender\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AssetPolicySet\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"dvtTriggerAmount\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"perTxHardCap\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ConsumerAuthorizationSet\",\n      \"inputs\": [\n        {\n          \"name\": \"consumer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"authorized\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ContractScopeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"allowed\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"requireDVTAlways\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"velocityLimit\",\n          \"type\": \"uint128\",\n          \"indexed\": false,\n          \"internalType\": \"uint128\"\n        },\n        {\n          \"name\": \"velocityWindow\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldGuardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newGuardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PolicyTightened\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"actor\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SelectorScopeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"selector\",\n          \"type\": \"bytes4\",\n          \"indexed\": true,\n          \"internalType\": \"bytes4\"\n        },\n        {\n          \"name\": \"allowed\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SenderFrozen\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"actor\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SenderUnfrozen\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SpendRecorded\",\n      \"inputs\": [\n        {\n          \"name\": \"sender\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"selector\",\n          \"type\": \"bytes4\",\n          \"indexed\": false,\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotAuthorizedConsumer\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotGuardianOrTimelock\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotStrictlyTighter\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotTimelock\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeCastOverflowedUintDowncast\",\n      \"inputs\": [\n        {\n          \"name\": \"bits\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SenderIsFrozen\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroAddress\",\n      \"inputs\": []\n    }\n  ],\n  \"bytecode\": \"0x60a03461018957601f611a8338819003918201601f19168301916001600160401b0383118484101761018d5780849260609460405283398101031261018957610047816101a1565b906100606040610059602084016101a1565b92016101a1565b916001600160a01b038116158015610178575b61016957608052600780546001600160a01b0319166001600160a01b0392909216918217905560405191905f7f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9098180a36001600160a01b03169081610123575b6040516118cd90816101b6823960805181818161016001528181610466015281816104a7015281816108630152818161095801528181610a5d01528181610b9d01528181610c6301526112bd0152f35b60207f5f7c8bcc9fe1f59809d268c8cf6b63a36c4aedb54e3a40628113344d5620dd4591835f526006825260405f20600160ff1982541617905560018152a25f806100d3565b63d92e233d60e01b5f5260045ffd5b506001600160a01b03821615610073565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101895756fe60806040526004361015610011575f80fd5b5f3560e01c8063055b8e7b146110b857806329210a4b14610fe357806335cefaa814610f0d5780633ef43aff14610c4957806343a0c39f14610c2c578063452a932014610c0657806353d8cb6814610b7a57806354fd4d5014610ae05780636ef778ee14610a2b578063715904dd146109bd5780637df732ea146109805780637e19482e146108d35780638a0dac4a14610840578063969cb5da146107f9578063a1a4a180146106e4578063b16559191461066d578063b743be941461063f578063be29f4911461048e578063ccd7129f14610184578063d33219b4146101415763e583983614610100575f80fd5b3461013d57602036600319011261013d576001600160a01b036101216112e5565b165f526003602052602060ff60405f2054166040519015158152f35b5f80fd5b3461013d575f36600319011261013d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013d5761019236611356565b906001600160a01b03600754163314158061045b575b61044c576001600160a01b031691821561043d576001600160a01b031691825f52600160205260405f20815f5260205260405f20805460ff8160d01c1615610410576101f38461146f565b80610432575b6104105760ff8160081c168061041f575b6104105760408401906001600160801b038061022584611415565b9260101c16911611610410577f92249bcccf66629d53d2829a1c6769f4d5d74bc9d8bc6aa08ab9f00c7f89fcfc859184936102746102628861146f565b829060ff801983541691151516179055565b610347602088019161029e6102888461146f565b825461ff00191690151560081b61ff0016178255565b6102e06102aa85611415565b825471ffffffffffffffffffffffffffffffff0000191660109190911b71ffffffffffffffffffffffffffffffff000016178255565b67ffffffffffffffff6103046102fe6102f88c61146f565b9561146f565b95611415565b915460901c16906040519485948592936001600160801b0367ffffffffffffffff9296956060946080870198151587521515602087015216604085015216910152565b0390a3608082016103588184611491565b9390505f5b84811061038c5733867f4d156b5f26f59392a109b67021b0a170f0ea10ac562c1538dee681f1727151e65f80a3005b806103ab6103a66001936103a08787611491565b906114c7565b6114eb565b875f52600260205260405f20865f5260205260405f209063ffffffff60e01b1690815f5260205260405f2060ff19815416905585887fdae56faaf89f401e21b133aee83453dde734ae5b8d6d672919900921f1e6278060206040515f8152a40161035d565b63c892292160e01b5f5260045ffd5b5061042c6020850161146f565b1561020a565b5060ff8116156101f9565b63d92e233d60e01b5f5260045ffd5b63954afe2760e01b5f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156101a8565b3461013d5761049c36611311565b916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610630576104d682611779565b6104df83611415565b9160208401936104ee85611415565b936040820135936105016060840161147c565b9161050a611429565b6001600160801b03918216815296811660208089019182526040808a0189815267ffffffffffffffff90961660608b0190815260016080808d019182526001600160a01b039788165f818152808752858120998d16815298909552929096209a51935190911b6fffffffffffffffffffffffffffffffff191692909316919091178855969092516001820155600201915167ffffffffffffffff1682549151151560401b68ff0000000000000000169168ffffffffffffffffff1916171790556105d390611415565b936105dd90611415565b604080516001600160801b039687168152919095166020820152938401919091526001600160a01b0316917f9984473f7cade7b75b6eb54c38d7958684489452a04379c6d91de87da74375fe90606090a3005b63656a6d1560e11b5f5260045ffd5b3461013d575f36600319011261013d57602060405173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8152f35b3461013d57606036600319011261013d576106866112e5565b61068e6112fb565b6044359163ffffffff60e01b831680930361013d576001600160a01b03165f5260026020526001600160a01b0360405f2091165f5260205260405f20905f52602052602060ff60405f2054166040519015158152f35b3461013d576106f2366113b2565b9193929092335f52600660205260ff60405f205416156107ea576001600160a01b03807fc8e3d7812ff5ee9233152255de3b82224861baad07a1550a51ccd7174f1e7f8893816040946107448a611779565b1695865f525f602052845f20838a165f5260205261078a88865f20895f526004602052875f20868d165f5260205267ffffffffffffffff6002895f2092015416906117ce565b865f526001602052845f208383165f526020526107cf88865f20895f526005602052875f208686165f5260205267ffffffffffffffff885f20915460901c16906117ce565b84519788526001600160e01b031916602088015216951693a4005b634b95b20b60e11b5f5260045ffd5b3461013d5761081361080a366113b2565b93929092611521565b60405190600383101561082c5760409282526020820152f35b634e487b7160e01b5f52602160045260245ffd5b3461013d57602036600319011261013d576108596112e5565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610630576001600160a01b0316801561043d576001600160a01b03600754828219821617600755167f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9095f80a3005b3461013d57602036600319011261013d576108ec6112e5565b6001600160a01b03600754163314158061094d575b61044c576001600160a01b0316805f52600360205260405f20600160ff1982541617905533907fbcc778b1735935d8f1de4988aa99c5a443739e2fb826dc7aa3f3bf64bb115fb85f80a3005b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016331415610901565b3461013d57602036600319011261013d576001600160a01b036109a16112e5565b165f526006602052602060ff60405f2054166040519015158152f35b3461013d57604036600319011261013d576109d66112e5565b6001600160a01b036109e66112fb565b91165f5260046020526001600160a01b0360405f2091165f526020526040805f205467ffffffffffffffff8251916001600160801b038116835260801c166020820152f35b3461013d57604036600319011261013d57610a446112e5565b602435908115159081830361013d576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610630576001600160a01b031691821561043d577f5f7c8bcc9fe1f59809d268c8cf6b63a36c4aedb54e3a40628113344d5620dd4591610ad7602092855f526006845260405f209060ff801983541691151516179055565b604051908152a2005b3461013d575f36600319011261013d576040516040810181811067ffffffffffffffff821117610b665760405260148152604060208201917f506f6c69637952656769737472792d312e302e3000000000000000000000000083528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b634e487b7160e01b5f52604160045260245ffd5b3461013d57602036600319011261013d57610b936112e5565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610630576001600160a01b0316805f52600360205260405f2060ff1981541690557ff70670b858d56ee8e00bdc112191de0411959259f47dcbc6977aace0aee117655f80a2005b3461013d575f36600319011261013d5760206001600160a01b0360075416604051908152f35b3461013d575f36600319011261013d576020604051620151808152f35b3461013d57610c5736611356565b91906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610630576001600160a01b031690811561043d5781807f92249bcccf66629d53d2829a1c6769f4d5d74bc9d8bc6aa08ab9f00c7f89fcfc610cc58661146f565b60208701610e72610cd58261146f565b9660408a0193610ce485611415565b9160608c0192610dc46001600160801b03610cfe8661147c565b92610d07611429565b951515865260208601809e1515905281604087019116815267ffffffffffffffff6060870194168452610d8e6001600160a01b03608088019660018852169e8f9d8e5f52600160205260405f20905f52602052610d7760405f2098511515899060ff801983541691151516179055565b51875461ff00191690151560081b61ff0016178755565b51855471ffffffffffffffffffffffffffffffff00001916911660101b71ffffffffffffffffffffffffffffffff000016178455565b51907fffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff79ffffffffffffffff00000000000000000000000000000000000084549260ff60d01b9051151560d01b169360901b16911617179055610e35610e2f6102fe6102f88d61146f565b9161147c565b906040519485948592936001600160801b0367ffffffffffffffff9296956060946080870198151587521515602087015216604085015216910152565b0390a36080830191610e848385611491565b9390505f5b848110610e9257005b80610ea66103a66001936103a0868b611491565b855f52600260205260405f20855f5260205260405f209063ffffffff60e01b1690815f5260205260405f208360ff1982541617905584867fdae56faaf89f401e21b133aee83453dde734ae5b8d6d672919900921f1e627806020604051878152a401610e89565b3461013d57604036600319011261013d57610f266112e5565b6001600160a01b03610f366112fb565b91610f3f611449565b50165f5260016020526001600160a01b0360405f2091165f5260205260a060405f20610f69611429565b905467ffffffffffffffff60ff82161515928381526001600160801b036020820160ff8560081c16151581526040830190828660101c16825260ff60806060860195878960901c168752019660d01c1615158652604051968752511515602087015251166040850152511660608301525115156080820152f35b3461013d57604036600319011261013d57610ffc6112e5565b6001600160a01b0361100c6112fb565b91611015611449565b50165f525f6020526001600160a01b0360405f2091165f5260205260a060405f2061103e611429565b67ffffffffffffffff8254916001600160801b03831693848252602082019360801c84526001600160801b0360026001830154926040850193845201549460ff608060608601958789168752019660401c161515865260405196875251166020860152516040850152511660608301525115156080820152f35b3461013d576110c636611311565b916001600160a01b0360075416331415806112b2575b61044c576001600160a01b03906110f283611779565b1691825f525f60205260405f206001600160a01b0383165f5260205260405f209160ff600284015460401c16156104105782546001600160801b038116806112ad57505f195b6001600160801b0361114985611415565b16611296575f195b11908115611273575b508015611262575b610410576001600160a01b037f9984473f7cade7b75b6eb54c38d7958684489452a04379c6d91de87da74375fe91611237600161120d611207876001600160801b036111ae8c9a611415565b166001600160801b03198b5416178a5560208101996111f86111cf8c611415565b82546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff1916178255565b60408201359485910155611415565b97611415565b6040519485941697846001600160801b036040929594938160608401971683521660208201520152565b0390a333907f4d156b5f26f59392a109b67021b0a170f0ea10ac562c1538dee681f1727151e65f80a3005b506001830154604083013511611162565b90506001600160801b0361128960208501611415565b9160801c9116118561115a565b6001600160801b036112a785611415565b16611151565b611138565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156110dc565b600435906001600160a01b038216820361013d57565b602435906001600160a01b038216820361013d57565b60c060031982011261013d576004356001600160a01b038116810361013d57916024356001600160a01b038116810361013d5760809092604319011261013d57604490565b606060031982011261013d576004356001600160a01b038116810361013d57916024356001600160a01b038116810361013d57916044359067ffffffffffffffff821161013d5760a090829003600319011261013d5760040190565b60a090600319011261013d576004356001600160a01b038116810361013d57906024356001600160a01b038116810361013d57906044356001600160a01b038116810361013d5790606435906084356001600160e01b03198116810361013d5790565b356001600160801b038116810361013d5790565b6040519060a0820182811067ffffffffffffffff821117610b6657604052565b611451611429565b905f82525f60208301525f60408301525f60608301525f6080830152565b35801515810361013d5790565b3567ffffffffffffffff8116810361013d5790565b903590601e198136030182121561013d570180359067ffffffffffffffff821161013d57602001918160051b3603831361013d57565b91908110156114d75760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160e01b03198116810361013d5790565b9190820180921161150d57565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b039095949293919561153985611779565b16805f52600360205260ff60405f20541661176c575f19955f94825f525f60205260405f206001600160a01b0382165f5260205260405f20600281015460ff8160401c166116b5575b505050815f52600160205260405f206001600160a01b0382165f5260205260405f20549360ff8560d01c166115c6575b50505050506115c0575f9190565b60019190565b60ff8516156116a657825f52600260205260405f206001600160a01b0383165f5260205260405f209063ffffffff60e01b165f5260205260ff60405f205416156116985767ffffffffffffffff8460901c169182611640575b5050505060081c60ff16611638575b5f808080806115b2565b50600161162e565b9161166d9161167294935f5260056020526001600160a01b0360405f2091165f5260205260405f20611789565b611500565b6001600160801b038260101c161061168d575f80808061161f565b505090506002905f90565b505050505090506002905f90565b50505050505090506002905f90565b908092995054988960801c861161175b578561166d60019361170193885f5260046020526001600160a01b0360405f2091165f5260205267ffffffffffffffff60405f20911690611789565b9101549081811161174b57810390811161150d57966001600160801b03168015159081611740575b50611737575b5f8080611582565b6001945061172f565b90508310155f611729565b5050505050505090506002905f90565b505050505050505090506002905f90565b5050505090506002905f90565b6001600160a01b03161561043d57565b9067ffffffffffffffff61179f6117b6926118a6565b9254921667ffffffffffffffff8360801c16611500565b4210156117c9576001600160801b031690565b505f90565b916117db61184d926118a6565b6117fe67ffffffffffffffff8554921667ffffffffffffffff8360801c16611500565b4210611898577fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff164260801b77ffffffffffffffff00000000000000000000000000000000161783555f611500565b6001600160801b0381116118815781546fffffffffffffffffffffffffffffffff19166001600160801b0391909116179055565b6306dfcc6560e41b5f52608060045260245260445ffd5b6001600160801b0316611500565b67ffffffffffffffff81166118bd57506201518090565b9056fea164736f6c6343000821000a\"\n}\n","[\n  {\n    \"type\": \"constructor\",\n    \"inputs\": [\n      {\n        \"name\": \"minDelay\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"proposers\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"executors\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"admin\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"receive\",\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"CANCELLER_ROLE\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"DEFAULT_ADMIN_ROLE\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"EXECUTOR_ROLE\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"PROPOSER_ROLE\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancel\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"execute\",\n    \"inputs\": [\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"payload\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeBatch\",\n    \"inputs\": [\n      {\n        \"name\": \"targets\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"values\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"payloads\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getMinDelay\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getOperationState\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\",\n        \"internalType\": \"enum TimelockController.OperationState\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getRoleAdmin\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getTimestamp\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantRole\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"hasRole\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"hashOperation\",\n    \"inputs\": [\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"pure\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"hashOperationBatch\",\n    \"inputs\": [\n      {\n        \"name\": \"targets\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"values\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"payloads\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"pure\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isOperation\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isOperationDone\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isOperationPending\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isOperationReady\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onERC1155BatchReceived\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onERC1155Received\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onERC721Received\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"renounceRole\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"callerConfirmation\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"revokeRole\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"schedule\",\n    \"inputs\": [\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"delay\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"scheduleBatch\",\n    \"inputs\": [\n      {\n        \"name\": \"targets\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"values\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"payloads\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"delay\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"supportsInterface\",\n    \"inputs\": [\n      {\n        \"name\": \"interfaceId\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"updateDelay\",\n    \"inputs\": [\n      {\n        \"name\": \"newDelay\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"CallExecuted\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"index\",\n        \"type\": \"uint256\",\n        \"indexed\": true,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"indexed\": false,\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"CallSalt\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"salt\",\n        \"type\": \"bytes32\",\n        \"indexed\": false,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"CallScheduled\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"index\",\n        \"type\": \"uint256\",\n        \"indexed\": true,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"indexed\": false,\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"predecessor\",\n        \"type\": \"bytes32\",\n        \"indexed\": false,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"delay\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"Cancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"MinDelayChange\",\n    \"inputs\": [\n      {\n        \"name\": \"oldDuration\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"newDuration\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RoleAdminChanged\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"previousAdminRole\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"newAdminRole\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RoleGranted\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sender\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RoleRevoked\",\n    \"inputs\": [\n      {\n        \"name\": \"role\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sender\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AccessControlBadConfirmation\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AccessControlUnauthorizedAccount\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"neededRole\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"FailedInnerCall\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TimelockInsufficientDelay\",\n    \"inputs\": [\n      {\n        \"name\": \"delay\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"minDelay\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TimelockInvalidOperationLength\",\n    \"inputs\": [\n      {\n        \"name\": \"targets\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"payloads\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"values\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TimelockUnauthorizedCaller\",\n    \"inputs\": [\n      {\n        \"name\": \"caller\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TimelockUnexecutedPredecessor\",\n    \"inputs\": [\n      {\n        \"name\": \"predecessorId\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TimelockUnexpectedOperationState\",\n    \"inputs\": [\n      {\n        \"name\": \"operationId\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"expectedStates\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  }\n]\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"registry\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        },\n        {\n          \"name\": \"factory\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IxPNTsFactory\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"REGISTRY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IRegistry\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"XPNTS_FACTORY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IxPNTsFactory\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"facilitatorEarnings\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"facilitatorFeeBPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getEffectiveFacilitatorFee\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"operatorFacilitatorFees\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setFacilitatorFeeBPS\",\n      \"inputs\": [\n        {\n          \"name\": \"_fee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setOperatorFacilitatorFee\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_fee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"settleX402Payment\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxFee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"validAfter\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"validBefore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"settlementId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"settleX402PaymentDirect\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxFee\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"validBefore\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"settlementId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawFacilitatorEarnings\",\n      \"inputs\": [\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"x402NonceKey\",\n      \"inputs\": [\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"x402SettlementNonces\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FacilitatorEarningsWithdrawn\",\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"FacilitatorFeeUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newFee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"X402PaymentSettled\",\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"asset\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"fee\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressEmptyCode\",\n      \"inputs\": [\n        {\n          \"name\": \"target\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AddressInsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedInnerCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"available\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidConfiguration\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidFee\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidX402Signature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidXPNTsToken\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NonceAlreadyUsed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Unauthorized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"X402AmountMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"X402AuthExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"X402FeeExceedsMax\",\n      \"inputs\": []\n    }\n  ],\n  \"bytecode\": \"0x60c03461012457601f61122938819003918201601f19168301916001600160401b038311848410176101285780849260409485528339810103126101245780516001600160a01b038116918282036101245760200151906001600160a01b0382168083036101245760015f5533156101115760018054336001600160a01b0319821681179092556040519591906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a315908115610108575b506100f95760805260a0526110ec908161013d8239608051818181610b270152610cf0015260a05181818161057a015261086e0152f35b63c52a9bd360e01b5f5260045ffd5b9050155f6100c2565b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816306433b1b14610b0a575080632540c47114610aac5780634ee1a3d614610a7d57806354fd4d5014610a07578063715018a6146109b55780637344209c14610678578063761cda33146106495780638670d78d146105fc5780638da5cb5b146105d6578063928624e71461059e578063b08ec5ca1461055b578063bac256d61461053e578063c50cff87146104e8578063d4c38f5214610426578063ef842a46146103d2578063f2fde38b146103545763f3a729da146100d9575f80fd5b346102d9576101203660031901126102d9576100f3610b4b565b906100fc610b61565b610104610b77565b60643590608435926101043567ffffffffffffffff81116102d95761012d903690600401610b8d565b610138979197610c87565b60405160208101906001600160a01b038516825287604082015260e435606082015260608152610169608082610bbb565b5190209761017989878588610ca5565b968711610345576040516370a0823160e01b8152306004820152916001600160a01b0386169190602084602481865afa938415610306575f94610311575b50823b156102d9578a61010489835f9460405196879586946388b7ab6360e01b86526001600160a01b038d166004870152306024870152604486015260a435606486015260c435608486015260a485015260e060c48501528160e4850152848401378181018301859052601f01601f1916810103018183865af18015610306576102f0575b506020602491604051928380926370a0823160e01b82523060048301525afa9081156102e5579086929189916102a8575b509061027891610c3f565b106102995792602096926001959261028f95610e07565b9155604051908152f35b63760a602d60e01b8652600486fd5b919250506020813d6020116102dd575b816102c560209383610bbb565b810103126102d9575185919061027861026d565b5f80fd5b3d91506102b8565b6040513d8a823e3d90fd5b6102fd9198505f90610bbb565b5f96602061023c565b6040513d5f823e3d90fd5b9093506020813d60201161033d575b8161032d60209383610bbb565b810103126102d95751925f6101b7565b3d9150610320565b631fb915a760e31b5f5260045ffd5b346102d95760203660031901126102d9576001600160a01b03610375610b4b565b61037d610c60565b1680156103bf576001600160a01b03600154828219821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b346102d95760403660031901126102d9576103eb610b4b565b6001600160a01b036103fb610b61565b91165f5260056020526001600160a01b0360405f2091165f52602052602060405f2054604051908152f35b346102d95760203660031901126102d95761043f610b4b565b610447610c87565b335f52600560205260405f206001600160a01b0382165f5260205260405f20549081156104d0576001600160a01b0390335f52600560205260405f208282165f526020525f6040812055169061049e813384610e9f565b6040519081527fdd3840d6dd5c33bfa3b3743f47978de59805ce10f5170e1659be2936e489d73e60203392a360015f55005b63cf47918160e01b5f525f600452600160245260445ffd5b346102d95760403660031901126102d957610501610b4b565b6024359061050d610c60565b6101f4821161052f576001600160a01b03165f52600360205260405f20555f80f35b6358d620b360e01b5f5260045ffd5b346102d9575f3660031901126102d9576020600254604051908152f35b346102d9575f3660031901126102d95760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102d95760203660031901126102d9576001600160a01b036105bf610b4b565b165f526003602052602060405f2054604051908152f35b346102d9575f3660031901126102d95760206001600160a01b0360015416604051908152f35b346102d95760203660031901126102d9576001600160a01b0361061d610b4b565b165f90815260036020526040902054801561063e576020905b604051908152f35b506020600254610636565b346102d95760603660031901126102d9576020610636610667610b4b565b61066f610b61565b60443591610c09565b346102d9576101003660031901126102d957610692610b4b565b61069a610b61565b906106a3610b77565b916064356084359060a4359460c4359360e43567ffffffffffffffff81116102d9576106d3903690600401610b8d565b6106de979197610c87565b8842116109a65761083a906040519860208a017f1605d38f16362508f9156040bddd3aeadb19a55923f0d909d03527e49490c0f481526001600160a01b0385169a8b60408201526001600160a01b03871660608201526001600160a01b0388169c8d60808301528960a08301528a60c083015260e08201528a610100820152610100815261076e61012082610bbb565b51902060405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527fcf28fe6d6b103093f66376be2e9d1de0cc43069bc3a973154c752d0d0a98139060408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815261080360c082610bbb565b5190209060405190602082019261190160f01b84526022830152604282015260428152610831606282610bbb565b51902084610ed8565b156109975761084b86858386610ca5565b948511610345576040516312dc51a560e31b8152600481018990526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610306575f91610978575b501561096957604051633b2a7c0560e21b81523360048201526020816024818c5afa908115610306575f9161093a575b501561092c5761091b61092097602099604051916323b872dd60e01b8c840152602483015230604483015286606483015260648252610916608483610bbb565b610fdc565b610e07565b60015f55604051908152f35b6282b42960e81b5f5260045ffd5b61095c915060203d602011610962575b6109548183610bbb565b810190610bf1565b896108d6565b503d61094a565b6367cc8b7560e01b5f5260045ffd5b610991915060203d602011610962576109548183610bbb565b896108a6565b63f9d36a7160e01b5f5260045ffd5b63241d197f60e11b5f5260045ffd5b346102d9575f3660031901126102d9576109cd610c60565b5f6001600160a01b0360015481198116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102d9575f3660031901126102d9576040805190610a268183610bbb565b6015825260208201917f58343032466163696c697461746f722d312e302e30000000000000000000000083528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b346102d95760203660031901126102d9576004355f526004602052602060ff60405f2054166040519015158152f35b346102d95760203660031901126102d957600435610ac8610c60565b6101f4811161052f5760407f9b6bf5a61deb3c460999ea46c3ff444018a6f424eb8807d5e7e7ca031461cb9891600254908060025582519182526020820152a1005b346102d9575f3660031901126102d9576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b03821682036102d957565b602435906001600160a01b03821682036102d957565b604435906001600160a01b03821682036102d957565b9181601f840112156102d95782359167ffffffffffffffff83116102d957602083818601950101116102d957565b90601f8019910116810190811067ffffffffffffffff821117610bdd57604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126102d9575180151581036102d95790565b916001600160a01b0360405192816020850195168552166040830152606082015260608152610c39608082610bbb565b51902090565b91908203918211610c4c57565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03600154163303610c7457565b63118cdaa760e01b5f523360045260245ffd5b60025f5414610c965760025f55565b633ee5aeb560e01b5f5260045ffd5b9392604051632474521560e21b81527f2024516755f401845808190bb830b0e4523d0df0845503cab52130a794699a0f60048201523360248201526020816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610306575f91610de8575b501561092c57805f52600460205260ff60405f205416610dda57610d449185610c09565b805f52600460205260ff60405f205416610dda575f52600460205260405f20600160ff19825416179055335f52600360205260405f2054908115610dd0575b818102918183041490151715610c4c5761271090049182610da15750565b335f5260056020526001600160a01b0360405f2091165f5260205260405f20805490838201809211610c4c5755565b6002549150610d83565b623f613760e71b5f5260045ffd5b610e01915060203d602011610962576109548183610bbb565b5f610d20565b90936080947fecef7698217b345db7161a8d2ffa4e7109c3ca0fe6e64ca6627ee67be3e818fc6001600160a01b0380809997961694610e50610e498689610c3f565b8588610e9f565b1697889216968793604051908682528760208301526040820152876060820152a3604051936020850195865260408501526060840152608083015260a082015260a08152610c3960c082610bbb565b610ed6926001600160a01b036040519363a9059cbb60e01b6020860152166024840152604483015260448252610916606483610bbb565b565b90919392935f906001600160a01b03831615610fd3576040519160048301602484019560448501916064860193873b15610f425750936064938a80948a9b9c9460209b9a9998630b135d3f60e11b8a525260408a52523701915afa9051630b135d3f60e11b141690565b999350509395505080604014610f8f57604114610f5f5750505050565b60408092939496508101355f1a60205281375b5f526020600160805f825afa511860601b3d11915f606052604052565b507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9192939550602081013590601b8260ff1c016020523560405216606052610f72565b505f9450505050565b5f6001600160a01b038192169260208151910182855af13d15611079573d67ffffffffffffffff8111610bdd57604051611036929091611026601f8201601f191660200184610bbb565b82523d5f602084013e5b83611085565b805190811515918261105e575b505061104c5750565b635274afe760e01b5f5260045260245ffd5b6110719250602080918301019101610bf1565b155f80611043565b61103690606090611030565b906110a9575080511561109a57805190602001fd5b630a12f52160e11b5f5260045ffd5b815115806110d6575b6110ba575090565b6001600160a01b0390639996b31560e01b5f521660045260245ffd5b50803b156110b256fea164736f6c6343000821000a\"\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_implementation\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_communityGuardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"defaultTokens\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"defaultConfigs\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n          \"components\": [\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint128\",\n              \"internalType\": \"uint128\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"FACTORY_VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"agentRegistry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            },\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        },\n        {\n          \"name\": \"ownerP256X\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ownerP256Y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"ownerSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createAccountWithDefaults\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardian1\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardian1Sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"guardian2\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardian2Sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createAgentAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"agentKey\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"guardian2\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardian2Sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"agentKeySig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint48\",\n          \"internalType\": \"uint48\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"createNonces\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"defaultCommunityGuardian\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"factoryAdmin\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            },\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        },\n        {\n          \"name\": \"ownerP256X\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ownerP256Y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAddressWithChainId\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            },\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        },\n        {\n          \"name\": \"ownerP256X\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ownerP256Y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"chainQualified\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAddressWithDefaults\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardian1\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardian2\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAgentAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"humanOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentKey\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getChainQualifiedAddress\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getConfigHash\",\n      \"inputs\": [\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            },\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hashCreateAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAirAccountBase.InitConfig\",\n          \"components\": [\n            {\n              \"name\": \"guardians\",\n              \"type\": \"address[3]\",\n              \"internalType\": \"address[3]\"\n            },\n            {\n              \"name\": \"guardianP256X\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"guardianP256Y\",\n              \"type\": \"bytes32[3]\",\n              \"internalType\": \"bytes32[3]\"\n            },\n            {\n              \"name\": \"dailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"approvedAlgIds\",\n              \"type\": \"uint8[]\",\n              \"internalType\": \"uint8[]\"\n            },\n            {\n              \"name\": \"minDailyLimit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initialTokens\",\n              \"type\": \"address[]\",\n              \"internalType\": \"address[]\"\n            },\n            {\n              \"name\": \"initialTokenConfigs\",\n              \"type\": \"tuple[]\",\n              \"internalType\": \"struct AAStarGlobalGuard.TokenConfig[]\",\n              \"components\": [\n                {\n                  \"name\": \"tier1Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"tier2Limit\",\n                  \"type\": \"uint128\",\n                  \"internalType\": \"uint128\"\n                },\n                {\n                  \"name\": \"dailyLimit\",\n                  \"type\": \"uint256\",\n                  \"internalType\": \"uint256\"\n                }\n              ]\n            },\n            {\n              \"name\": \"tier1Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"tier2Limit\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        },\n        {\n          \"name\": \"ownerP256X\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ownerP256Y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"nonce\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"implementation\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAgentRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"_agentRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AccountCreated\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentAccountCreated\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentKey\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"humanOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"guardian2\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"dailyLimit\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentRegistrySet\",\n      \"inputs\": [\n        {\n          \"name\": \"agentRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentKeyCannotBeCommunityGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentKeyCannotBeGuardian2\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentKeyDidNotAccept\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentKeyRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentRegistryAlreadySet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentRegistryMarkValidFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentRegistryNotContract\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CallerCannotBeGuardian2\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DailyLimitRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DeadlineTooFarInFuture\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DefaultTokenAddressZero\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DuplicateDefaultToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DuplicateGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"inputs\": [\n        {\n          \"name\": \"s\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"FailedDeployment\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Guardian2CannotBeCommunityGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Guardian2Required\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianDidNotAccept\",\n      \"inputs\": [\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianSigExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardiansMustBeDistinct\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardiansRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"HumanOwnerCannotBeCommunityGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ImplementationRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientBalance\",\n      \"inputs\": [\n        {\n          \"name\": \"balance\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"needed\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidDefaultTokenConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidOwnerSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NonceMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotFactoryAdmin\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SignatureExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenConfigLengthMismatch\",\n      \"inputs\": []\n    }\n  ]\n}","[\n  {\n    \"type\": \"constructor\",\n    \"inputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"agentWalletOwner\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"balanceOf\",\n    \"inputs\": [\n      {\n        \"name\": \"humanOwner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"bindFactory\",\n    \"inputs\": [\n      {\n        \"name\": \"_factory\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"deployer\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"deregisterAgent\",\n    \"inputs\": [\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"factory\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getAgentByIndex\",\n    \"inputs\": [\n      {\n        \"name\": \"owner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"index\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getAgentCount\",\n    \"inputs\": [\n      {\n        \"name\": \"owner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getAgents\",\n    \"inputs\": [\n      {\n        \"name\": \"humanOwner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getAgentsPage\",\n    \"inputs\": [\n      {\n        \"name\": \"owner\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"start\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"count\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"page\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getHumanOwner\",\n    \"inputs\": [\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isRegisteredAgent\",\n    \"inputs\": [\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isValidAccount\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"markValid\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"ownerAgents\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"ownerOf\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"pure\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"registerAgent\",\n    \"inputs\": [\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"agentWalletSig\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"revokeAgent\",\n    \"inputs\": [\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"AccountMarkedValid\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"AgentDeregistered\",\n    \"inputs\": [\n      {\n        \"name\": \"humanOwner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"AgentRegistered\",\n    \"inputs\": [\n      {\n        \"name\": \"humanOwner\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"agentWallet\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"FactoryBound\",\n    \"inputs\": [\n      {\n        \"name\": \"factory\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AgentAlreadyRegistered\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CallerNotAirAccount\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"FactoryAlreadyBound\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAddress\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAgentSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotAgentOwner\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotDeployer\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotSupported\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"OnlyFactory\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SelfRegistrationForbidden\",\n    \"inputs\": []\n  }\n]\n","[\n  {\n    \"type\": \"function\",\n    \"name\": \"MODULE_VERSION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"buildGrantHash\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"buildP256GrantHash\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyX\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"p256KeyY\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"checkSessionScope\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKeyOrHash\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"sessionType\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      },\n      {\n        \"name\": \"dest\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"selector\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getP256Session\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyHash\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getSession\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantNonces\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantNonces_p256\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantP256Session\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyX\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"p256KeyY\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      },\n      {\n        \"name\": \"ownerSig\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantP256SessionDirect\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyX\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"p256KeyY\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantSession\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      },\n      {\n        \"name\": \"ownerSig\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"grantSessionDirect\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isP256SessionActive\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyX\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"p256KeyY\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isSessionActive\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"recordCallForVelocity\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKeyOrHash\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"sessionType\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"revokeP256Session\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyX\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"p256KeyY\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"revokeSession\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"sessionKeyCount\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"sessionStates\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"windowStart\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      },\n      {\n        \"name\": \"callCount\",\n        \"type\": \"uint32\",\n        \"internalType\": \"uint32\"\n      },\n      {\n        \"name\": \"prevCount\",\n        \"type\": \"uint32\",\n        \"internalType\": \"uint32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"sessionStates_p256\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"windowStart\",\n        \"type\": \"uint48\",\n        \"internalType\": \"uint48\"\n      },\n      {\n        \"name\": \"callCount\",\n        \"type\": \"uint32\",\n        \"internalType\": \"uint32\"\n      },\n      {\n        \"name\": \"prevCount\",\n        \"type\": \"uint32\",\n        \"internalType\": \"uint32\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"validate\",\n    \"inputs\": [\n      {\n        \"name\": \"userOpHash\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"signature\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"validationData\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"P256SessionGranted\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyHash\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"P256SessionRevoked\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"p256KeyHash\",\n        \"type\": \"bytes32\",\n        \"indexed\": true,\n        \"internalType\": \"bytes32\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"SessionGranted\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"cfg\",\n        \"type\": \"tuple\",\n        \"indexed\": false,\n        \"internalType\": \"struct SessionKeyValidator.Session\",\n        \"components\": [\n          {\n            \"name\": \"expiry\",\n            \"type\": \"uint48\",\n            \"internalType\": \"uint48\"\n          },\n          {\n            \"name\": \"contractScope\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"selectorScope\",\n            \"type\": \"bytes4\",\n            \"internalType\": \"bytes4\"\n          },\n          {\n            \"name\": \"revoked\",\n            \"type\": \"bool\",\n            \"internalType\": \"bool\"\n          },\n          {\n            \"name\": \"velocityLimit\",\n            \"type\": \"uint16\",\n            \"internalType\": \"uint16\"\n          },\n          {\n            \"name\": \"velocityWindow\",\n            \"type\": \"uint32\",\n            \"internalType\": \"uint32\"\n          },\n          {\n            \"name\": \"callTargets\",\n            \"type\": \"address[]\",\n            \"internalType\": \"address[]\"\n          },\n          {\n            \"name\": \"selectorAllowlist\",\n            \"type\": \"bytes4[]\",\n            \"internalType\": \"bytes4[]\"\n          }\n        ]\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"SessionRevoked\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"sessionKey\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CallTargetForbidden\",\n    \"inputs\": [\n      {\n        \"name\": \"dest\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ExpiryInPast\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ExpiryTooFar\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidExpiry\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidSessionType\",\n    \"inputs\": [\n      {\n        \"name\": \"sessionType\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidVelocityWindow\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MaxSelectorsExceeded\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"MaxTargetsExceeded\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotAccountOwner\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotAirAccount\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotBoundAccount\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SelectorForbidden\",\n    \"inputs\": [\n      {\n        \"name\": \"selector\",\n        \"type\": \"bytes4\",\n        \"internalType\": \"bytes4\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SessionAlreadyExists\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SessionExpired\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SessionNotFound\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SessionRevoked_\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"TooManySessionKeys\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"VelocityLimitExceeded\",\n    \"inputs\": []\n  }\n]\n","[\n  {\n    \"type\": \"function\",\n    \"name\": \"APPROVAL_THRESHOLD\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"ARB_SYS\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"L2_TO_L1_MESSAGE_PASSER_OP\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"L2_TYPE_ARBITRUM\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"L2_TYPE_OPTIMISM\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"MODULE_VERSION\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\",\n        \"internalType\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"OP_DEFAULT_GAS_LIMIT\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"accountL2Type\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"approveForceExit\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"guardianSig\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelForceExit\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeForceExit\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getPendingExit\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"proposedAt\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"approvalBitmap\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"guardians\",\n        \"type\": \"address[3]\",\n        \"internalType\": \"address[3]\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isInitialized\",\n    \"inputs\": [\n      {\n        \"name\": \"smartAccount\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onInstall\",\n    \"inputs\": [\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"onUninstall\",\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"pendingExit\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"proposedAt\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"approvalBitmap\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"proposeForceExit\",\n    \"inputs\": [\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ExitApproved\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"guardian\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"bitmap\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ExitCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ExitExecuted\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"ExitProposed\",\n    \"inputs\": [\n      {\n        \"name\": \"account\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"target\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AlreadyApproved\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AlreadyProposed\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ApproverNoLongerGuardian\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ForceExitCallFailed\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"IncompatibleAccount\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidGuardianSig\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NoProposal\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotEnoughApprovals\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotInstalled\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotOwner\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"SignerNoLongerGuardian\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"UnsupportedL2Type\",\n    \"inputs\": []\n  }\n]\n","[\n  {\n    \"type\": \"receive\",\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"addDeposit\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"payable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"announceForStealth\",\n    \"inputs\": [\n      {\n        \"name\": \"announcer\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"stealthAddress\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"ephemeralPubKey\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"metadata\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"approveRescue\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"cancelRescue\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"entryPoint\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"pure\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"execute\",\n    \"inputs\": [\n      {\n        \"name\": \"dest\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeBatch\",\n    \"inputs\": [\n      {\n        \"name\": \"dest\",\n        \"type\": \"address[]\",\n        \"internalType\": \"address[]\"\n      },\n      {\n        \"name\": \"value\",\n        \"type\": \"uint256[]\",\n        \"internalType\": \"uint256[]\"\n      },\n      {\n        \"name\": \"data\",\n        \"type\": \"bytes[]\",\n        \"internalType\": \"bytes[]\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"executeRescue\",\n    \"inputs\": [],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getDeposit\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getGuard\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getGuardians\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address[3]\",\n        \"internalType\": \"address[3]\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"getRescueState\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"rescueTo\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"rescueTimestamp\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      },\n      {\n        \"name\": \"rescueApprovals\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      },\n      {\n        \"name\": \"approved\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      },\n      {\n        \"name\": \"cancellations\",\n        \"type\": \"uint8\",\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"initialize\",\n    \"inputs\": [\n      {\n        \"name\": \"guardian1\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"g1Sig\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"guardian2\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"g2Sig\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      },\n      {\n        \"name\": \"dailyLimit\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"initiateRescue\",\n    \"inputs\": [\n      {\n        \"name\": \"rescueTo\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"isInitialized\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\",\n        \"internalType\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"owner\",\n    \"inputs\": [],\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"validateUserOp\",\n    \"inputs\": [\n      {\n        \"name\": \"userOp\",\n        \"type\": \"tuple\",\n        \"internalType\": \"struct PackedUserOperation\",\n        \"components\": [\n          {\n            \"name\": \"sender\",\n            \"type\": \"address\",\n            \"internalType\": \"address\"\n          },\n          {\n            \"name\": \"nonce\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"initCode\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          },\n          {\n            \"name\": \"callData\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          },\n          {\n            \"name\": \"accountGasLimits\",\n            \"type\": \"bytes32\",\n            \"internalType\": \"bytes32\"\n          },\n          {\n            \"name\": \"preVerificationGas\",\n            \"type\": \"uint256\",\n            \"internalType\": \"uint256\"\n          },\n          {\n            \"name\": \"gasFees\",\n            \"type\": \"bytes32\",\n            \"internalType\": \"bytes32\"\n          },\n          {\n            \"name\": \"paymasterAndData\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          },\n          {\n            \"name\": \"signature\",\n            \"type\": \"bytes\",\n            \"internalType\": \"bytes\"\n          }\n        ]\n      },\n      {\n        \"name\": \"userOpHash\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      },\n      {\n        \"name\": \"missingFunds\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [\n      {\n        \"name\": \"validationData\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"withdrawDepositTo\",\n    \"inputs\": [\n      {\n        \"name\": \"to\",\n        \"type\": \"address\",\n        \"internalType\": \"address payable\"\n      },\n      {\n        \"name\": \"amount\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"DelegateInitialized\",\n    \"inputs\": [\n      {\n        \"name\": \"eoa\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"guard\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"g1\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"g2\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RescueApproved\",\n    \"inputs\": [\n      {\n        \"name\": \"eoa\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"guardian\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"approvals\",\n        \"type\": \"uint8\",\n        \"indexed\": false,\n        \"internalType\": \"uint8\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RescueCancelled\",\n    \"inputs\": [\n      {\n        \"name\": \"eoa\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RescueExecuted\",\n    \"inputs\": [\n      {\n        \"name\": \"eoa\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"rescueTo\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"ethAmount\",\n        \"type\": \"uint256\",\n        \"indexed\": false,\n        \"internalType\": \"uint256\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"event\",\n    \"name\": \"RescueInitiated\",\n    \"inputs\": [\n      {\n        \"name\": \"eoa\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"rescueTo\",\n        \"type\": \"address\",\n        \"indexed\": false,\n        \"internalType\": \"address\"\n      },\n      {\n        \"name\": \"initiator\",\n        \"type\": \"address\",\n        \"indexed\": true,\n        \"internalType\": \"address\"\n      }\n    ],\n    \"anonymous\": false\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"AlreadyInitialized\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ArrayLengthMismatch\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"CallFailed\",\n    \"inputs\": [\n      {\n        \"name\": \"reason\",\n        \"type\": \"bytes\",\n        \"internalType\": \"bytes\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignature\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureLength\",\n    \"inputs\": [\n      {\n        \"name\": \"length\",\n        \"type\": \"uint256\",\n        \"internalType\": \"uint256\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"ECDSAInvalidSignatureS\",\n    \"inputs\": [\n      {\n        \"name\": \"s\",\n        \"type\": \"bytes32\",\n        \"internalType\": \"bytes32\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"GuardianAlreadyApproved\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"GuardianAlreadyCancelVoted\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidAddress\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"InvalidGuardianSignature\",\n    \"inputs\": [\n      {\n        \"name\": \"guardian\",\n        \"type\": \"address\",\n        \"internalType\": \"address\"\n      }\n    ]\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NoRescuePending\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"NotInitialized\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"OnlyGuardian\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"OnlySelf\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"OnlySelfOrEntryPoint\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"RescueAlreadyPending\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"RescueNotApproved\",\n    \"inputs\": []\n  },\n  {\n    \"type\": \"error\",\n    \"name\": \"RescueTimelockNotExpired\",\n    \"inputs\": []\n  }\n]\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"TIMELOCK_DURATION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"algorithms\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelProposal\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeProposal\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"finalizeSetup\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAlgorithm\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposals\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"algorithm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeAlgorithm\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"algorithm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerAlgorithm\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"algorithm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setupComplete\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"hash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"validationData\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AlgorithmProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"algorithm\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"executeAfter\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AlgorithmRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"algorithm\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ProposalCancelled\",\n      \"inputs\": [\n        {\n          \"name\": \"algId\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SetupFinalized\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlgorithmAlreadyRegistered\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlgorithmNotRegistered\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmptySignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAlgorithmAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoActiveProposal\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ProposalAlreadyPending\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SetupAlreadyClosed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TimelockNotExpired\",\n      \"inputs\": [\n        {\n          \"name\": \"remaining\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    }\n  ]\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ROLE_DVT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"batchRegisterPublicKeys\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"publicKeys\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getGasEstimate\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeCount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"gasEstimate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRegisteredNodeCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRegisteredNodes\",\n      \"inputs\": [\n        {\n          \"name\": \"offset\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"limit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"publicKeys\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSignatureFormat\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"format\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hashToG2\",\n      \"inputs\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isBootstrap\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"minStake\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nodeOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"operatorNode\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerPublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerWithProof\",\n      \"inputs\": [\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"popPoint\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"popSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registeredKeys\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registeredNodes\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"requireStake\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"revokePublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMinStake\",\n      \"inputs\": [\n        {\n          \"name\": \"_v\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRequireStake\",\n      \"inputs\": [\n        {\n          \"name\": \"_v\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"syncNode\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"newPublicKey\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validate\",\n      \"inputs\": [\n        {\n          \"name\": \"hash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateAggregateSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"messagePoint\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"verifyAggregateSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"messagePoint\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MinStakeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"minStake\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"NodeBound\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"NodeDeactivated\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PublicKeyRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PublicKeyRevoked\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PublicKeyUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"oldKey\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"newKey\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RegistrySet\",\n      \"inputs\": [\n        {\n          \"name\": \"registry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RequireStakeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"requireStake\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SignatureValidated\",\n      \"inputs\": [\n        {\n          \"name\": \"messageHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"publicKeysCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"gasUsed\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    }\n  ]\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"ROLE_DVT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"TREE_DEPTH\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"activeCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"batchRegisterPublicKeys\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"publicKeys\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"committeeActive\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"configVersion\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"countAtBlockStart\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"currentEpoch\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"enroll\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"enrolledAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"epochConfigVersion\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"epochLength\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"epochPinned\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"epochSeed\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"epochSetCount\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"epochSetRoot\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"expectedCommittee\",\n      \"inputs\": [\n        {\n          \"name\": \"n\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"freeSlots\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getGasEstimate\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeCount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"gasEstimate\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getMerkleProof\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"proof\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRegisteredNodeCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getRegisteredNodes\",\n      \"inputs\": [\n        {\n          \"name\": \"offset\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"limit\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"publicKeys\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getSignatureFormat\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"format\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hashToG2\",\n      \"inputs\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isBootstrap\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"lastSetMutationBlock\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"minStake\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nextSlot\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"nodeOperator\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"operatorNode\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"oversampleDen\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"oversampleNum\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerPublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerWithProof\",\n      \"inputs\": [\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"popPoint\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"popSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registeredKeys\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registeredNodes\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"requireStake\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"requiredQuorum\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"revokePublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"rootAtBlockStart\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"runningRoot\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setEpochLength\",\n      \"inputs\": [\n        {\n          \"name\": \"_epochLength\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setMinStake\",\n      \"inputs\": [\n        {\n          \"name\": \"_v\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setOversample\",\n      \"inputs\": [\n        {\n          \"name\": \"num\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"den\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRegistry\",\n      \"inputs\": [\n        {\n          \"name\": \"_registry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setRequireStake\",\n      \"inputs\": [\n        {\n          \"name\": \"_v\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"slotPlusOne\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"snapshotEpoch\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"syncNode\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unenroll\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"updatePublicKey\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"newPublicKey\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validate\",\n      \"inputs\": [\n        {\n          \"name\": \"hash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateAggregateSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"messagePoint\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"verifyAggregateSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeIds\",\n          \"type\": \"bytes32[]\",\n          \"internalType\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"messagePoint\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"zeros\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AccountEnrolled\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AccountUnenrolled\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EpochLengthSet\",\n      \"inputs\": [\n        {\n          \"name\": \"epochLength\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EpochSnapshotted\",\n      \"inputs\": [\n        {\n          \"name\": \"epoch\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"seed\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"setRoot\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"setCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MinStakeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"minStake\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"NodeBound\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"NodeDeactivated\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OversampleSet\",\n      \"inputs\": [\n        {\n          \"name\": \"num\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"den\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PublicKeyRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"publicKey\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PublicKeyRevoked\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PublicKeyUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"oldKey\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"newKey\",\n          \"type\": \"bytes\",\n          \"indexed\": false,\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RegistrySet\",\n      \"inputs\": [\n        {\n          \"name\": \"registry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RequireStakeSet\",\n      \"inputs\": [\n        {\n          \"name\": \"requireStake\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SignatureValidated\",\n      \"inputs\": [\n        {\n          \"name\": \"messageHash\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"publicKeysCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"isValid\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        },\n        {\n          \"name\": \"gasUsed\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlotAssigned\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"SlotCleared\",\n      \"inputs\": [\n        {\n          \"name\": \"nodeId\",\n          \"type\": \"bytes32\",\n          \"indexed\": true,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"slot\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_blsAlgorithm\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_entryPoint\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"aggregateSignatures\",\n      \"inputs\": [\n        {\n          \"name\": \"userOps\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct PackedUserOperation[]\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"aggregatedSignature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"blsAlgorithm\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract AAStarBLSAlgorithm\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IEntryPoint\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateSignatures\",\n      \"inputs\": [\n        {\n          \"name\": \"userOps\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct PackedUserOperation[]\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validateUserOpSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"userOp\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct PackedUserOperation\",\n          \"components\": [\n            {\n              \"name\": \"sender\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"initCode\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"callData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"accountGasLimits\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"preVerificationGas\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"gasFees\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"paymasterAndData\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            },\n            {\n              \"name\": \"signature\",\n              \"type\": \"bytes\",\n              \"internalType\": \"bytes\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"sigForUserOp\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AggregatedSignatureInvalid\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EmptyBatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidSignatureFormat\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NodeSetMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"PairingVerificationFailed\",\n      \"inputs\": []\n    }\n  ]\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getParser\",\n      \"inputs\": [\n        {\n          \"name\": \"dest\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"parserFor\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"registerParser\",\n      \"inputs\": [\n        {\n          \"name\": \"dest\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"parser\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ParserRegistered\",\n      \"inputs\": [\n        {\n          \"name\": \"dest\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"parser\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OnlyOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ParserAlreadyRegistered\",\n      \"inputs\": []\n    }\n  ]\n}\n","{\n  \"abi\": [\n    {\n      \"type\": \"function\",\n      \"name\": \"activeRecovery\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"approvalBitmap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"cancellationBitmap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addGuardianWithMixedSigs\",\n      \"inputs\": [\n        {\n          \"name\": \"_guardian\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addP256Guardian\",\n      \"inputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addP256GuardianWithMixedSigs\",\n      \"inputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approveRecovery\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approveRecoveryWithSig\",\n      \"inputs\": [\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approveWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"approvedAlgorithms\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"bindERC8004AgentWallet\",\n      \"inputs\": [\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelModuleInstall\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelRecovery\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelRecoveryWithSig\",\n      \"inputs\": [\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"cancelWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"entryPoint\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeModuleInstall\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleInitData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeRecovery\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getGuardianP256Key\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"guard\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract AAStarGlobalGuard\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"installModule\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isValidOwnerAuth\",\n      \"inputs\": [\n        {\n          \"name\": \"userOpHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"ownerAuth\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes4\",\n          \"internalType\": \"bytes4\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"mintAgentIdentity\",\n      \"inputs\": [\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentURI\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"modifyTierLimitsWithMixedGuardians\",\n      \"inputs\": [\n        {\n          \"name\": \"_tier1\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_tier2\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"moduleInstallTimelock\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"p256KeyX\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"p256KeyY\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"parserRegistry\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingModuleInstall\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint40\",\n          \"internalType\": \"uint40\"\n        },\n        {\n          \"name\": \"executeAfter\",\n          \"type\": \"uint40\",\n          \"internalType\": \"uint40\"\n        },\n        {\n          \"name\": \"initDataHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pendingWeightChange\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"proposed\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        },\n        {\n          \"name\": \"proposedAt\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"approvalBitmap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeModuleInstall\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeP256GuardianAddition\",\n      \"inputs\": [\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeRecovery\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeRecoveryWithSig\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"sig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"proposeWeightChange\",\n      \"inputs\": [\n        {\n          \"name\": \"proposed\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"queryAgentReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"clientAddresses\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"tag1\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"tag2\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint64\",\n          \"internalType\": \"uint64\"\n        },\n        {\n          \"name\": \"summaryValue\",\n          \"type\": \"int128\",\n          \"internalType\": \"int128\"\n        },\n        {\n          \"name\": \"summaryDecimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeGuardianWithMixedSigs\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"signerIdxs\",\n          \"type\": \"uint8[]\",\n          \"internalType\": \"uint8[]\"\n        },\n        {\n          \"name\": \"sigs\",\n          \"type\": \"bytes[]\",\n          \"internalType\": \"bytes[]\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setAgentWallet\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentWalletSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setModuleInstallTimelock\",\n      \"inputs\": [\n        {\n          \"name\": \"newTimelock\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianSigs\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setWeightConfig\",\n      \"inputs\": [\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"submitAgentReputation\",\n      \"inputs\": [\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"int128\",\n          \"internalType\": \"int128\"\n        },\n        {\n          \"name\": \"valueDecimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tag1\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"tag2\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"endpoint\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"feedbackURI\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        },\n        {\n          \"name\": \"feedbackHash\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tier1Limit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tier2Limit\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tierLimitNonce\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"uninstallModule\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"deInitData\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"validator\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IAAStarValidator\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"weightConfig\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"passkeyWeight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"ecdsaWeight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"blsWeight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian0Weight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian1Weight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian2Weight\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"_padding\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tier1Threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tier2Threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"tier3Threshold\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentIdentityMinted\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentURI\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentReputationSubmitted\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"reputationRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"int128\",\n          \"indexed\": false,\n          \"internalType\": \"int128\"\n        },\n        {\n          \"name\": \"tag1\",\n          \"type\": \"string\",\n          \"indexed\": false,\n          \"internalType\": \"string\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"AgentWalletSet\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"agentRegistry\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ERC8004WalletBound\",\n      \"inputs\": [\n        {\n          \"name\": \"agentId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"agentWallet\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"identityRegistry\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianAdditionProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"executeAfter\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"GuardianRemoved\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"guardian\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Initialized\",\n      \"inputs\": [\n        {\n          \"name\": \"version\",\n          \"type\": \"uint64\",\n          \"indexed\": false,\n          \"internalType\": \"uint64\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleInstallCancelled\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"cancelledBy\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleInstallExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleInstallProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"executeAfter\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleInstallTimelockChanged\",\n      \"inputs\": [\n        {\n          \"name\": \"oldTimelock\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newTimelock\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleInstalled\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"ModuleUninstalled\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnerChanged\",\n      \"inputs\": [\n        {\n          \"name\": \"oldOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"P256GuardianAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint8\",\n          \"indexed\": true,\n          \"internalType\": \"uint8\"\n        },\n        {\n          \"name\": \"x\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        },\n        {\n          \"name\": \"y\",\n          \"type\": \"bytes32\",\n          \"indexed\": false,\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approvedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approvalCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianIdx\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryCancelVoted\",\n      \"inputs\": [\n        {\n          \"name\": \"votedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"cancelCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"guardianIdx\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryCancelled\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"oldOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RecoveryProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"proposedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"guardianIdx\",\n          \"type\": \"uint8\",\n          \"indexed\": false,\n          \"internalType\": \"uint8\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TierLimitsSet\",\n      \"inputs\": [\n        {\n          \"name\": \"tier1\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"tier2\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeApproved\",\n      \"inputs\": [\n        {\n          \"name\": \"approvedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"approvalCount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeCancelled\",\n      \"inputs\": [],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"oldConfig\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        },\n        {\n          \"name\": \"newConfig\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightChangeProposed\",\n      \"inputs\": [\n        {\n          \"name\": \"proposed\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        },\n        {\n          \"name\": \"proposedBy\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WeightConfigUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"config\",\n          \"type\": \"tuple\",\n          \"indexed\": false,\n          \"internalType\": \"struct AAStarAgentStorageLayout.WeightConfig\",\n          \"components\": [\n            {\n              \"name\": \"passkeyWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"ecdsaWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"blsWeight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian0Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian1Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"guardian2Weight\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"_padding\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier1Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier2Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"tier3Threshold\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            }\n          ]\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AgentRegistrationFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadyApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadyCancelVoted\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"CannotIncreaseTierLimit\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DuplicateGuardianSig\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"DuplicateP256GuardianKey\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"inputs\": [\n        {\n          \"name\": \"s\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianAdditionNotProposed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianAdditionTimelockNotExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"GuardianAlreadySet\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"IdentityRegistrationFailed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsecureWeightConfig\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InstallModuleUnauthorized\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientGuardianApprovals\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidAuthenticatorData\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidGuardianSignature\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidInitialization\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidModuleType\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidNewOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidP256GuardianKey\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidP256GuardianSignature\",\n      \"inputs\": [\n        {\n          \"name\": \"gIdx\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidTierConfig\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MaxGuardiansReached\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MinGuardianRequired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleAlreadyInstalled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallAuthChanged\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallCallbackFailed\",\n      \"inputs\": [\n        {\n          \"name\": \"moduleTypeId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"module\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallDataMismatch\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallProposalExists\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallProposalExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallTimelockDisabled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallTimelockNotExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInstallTimelockTooLong\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleInvalid\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ModuleNotInstalled\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoActiveRecovery\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoModuleInstallProposal\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NoWeightChangeProposal\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotGuardian\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotInitializing\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotOwner\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotOwnerOrEntryPoint\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryAlreadyActive\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryAlreadyProposed\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryNotApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"RecoveryTimelockNotExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Reentrancy\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TierLimitSigExpired\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnauthorizedRegistry\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnsupportedChain\",\n      \"inputs\": [\n        {\n          \"name\": \"chainId\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UseGuardianConsensus\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeakeningRequiresProposal\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangeAlreadyApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangeNotApproved\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangePending\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"WeightChangeTimelockNotExpired\",\n      \"inputs\": []\n    }\n  ]\n}","[\n  {\n    \"type\": \"function\",\n    \"name\": \"name\",\n    \"inputs\": [],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"string\" }],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"symbol\",\n    \"inputs\": [],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"string\" }],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"decimals\",\n    \"inputs\": [],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint8\" }],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"totalSupply\",\n    \"inputs\": [],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\" }],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"balanceOf\",\n    \"inputs\": [{ \"name\": \"account\", \"type\": \"address\" }],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\" }],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"allowance\",\n    \"inputs\": [\n      { \"name\": \"owner\", \"type\": \"address\" },\n      { \"name\": \"spender\", \"type\": \"address\" }\n    ],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\" }],\n    \"stateMutability\": \"view\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"approve\",\n    \"inputs\": [\n      { \"name\": \"spender\", \"type\": \"address\" },\n      { \"name\": \"amount\", \"type\": \"uint256\" }\n    ],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"bool\" }],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transfer\",\n    \"inputs\": [\n      { \"name\": \"to\", \"type\": \"address\" },\n      { \"name\": \"amount\", \"type\": \"uint256\" }\n    ],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"bool\" }],\n    \"stateMutability\": \"nonpayable\"\n  },\n  {\n    \"type\": \"function\",\n    \"name\": \"transferFrom\",\n    \"inputs\": [\n      { \"name\": \"from\", \"type\": \"address\" },\n      { \"name\": \"to\", \"type\": \"address\" },\n      { \"name\": \"amount\", \"type\": \"uint256\" }\n    ],\n    \"outputs\": [{ \"name\": \"\", \"type\": \"bool\" }],\n    \"stateMutability\": \"nonpayable\"\n  }\n]\n","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"gTokenAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_initialOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"AUTO_STEP_BPS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint16\",\n          \"internalType\": \"uint16\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"acceptedTokens\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addMilestone\",\n      \"inputs\": [\n        {\n          \"name\": \"priceUSD\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revenueCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addMilestoneAutoStep\",\n      \"inputs\": [\n        {\n          \"name\": \"revenueCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"advanceMilestone\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"availableInventory\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"buyTokens\",\n      \"inputs\": [\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"minTokensOut\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"buyTokensFor\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"minTokensOut\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"capExempt\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"currentMilestone\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"gToken\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract IERC20\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAllMilestones\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"tuple[]\",\n          \"internalType\": \"struct SaleContractV2.Milestone[]\",\n          \"components\": [\n            {\n              \"name\": \"priceUSD\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"revenueCap\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            }\n          ]\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getCurrentPriceUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getMilestone\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"priceUSD\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revenueCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getMilestoneCount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getTokensForUSD\",\n      \"inputs\": [\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isWhitelisted\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"pause\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"paused\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"perPersonCapUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recoverToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setCapExempt\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"exempt\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPaymentToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"accepted\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPerPersonCap\",\n      \"inputs\": [\n        {\n          \"name\": \"capUSD\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTreasury\",\n      \"inputs\": [\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setWhitelistRequired\",\n      \"inputs\": [\n        {\n          \"name\": \"required\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setWhitelisted\",\n      \"inputs\": [\n        {\n          \"name\": \"users\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        },\n        {\n          \"name\": \"status\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalRevenue\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalTokensSold\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"treasury\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"tryAdvanceMilestone\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"unpause\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"userTotalSpent\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"version\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"pure\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"whitelistRequired\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"CapExemptUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"exempt\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MilestoneAdded\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"priceUSD\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"revenueCap\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"MilestoneAdvanced\",\n      \"inputs\": [\n        {\n          \"name\": \"newMilestone\",\n          \"type\": \"uint256\",\n          \"indexed\": true,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newPriceUSD\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Paused\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PaymentTokenSet\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"accepted\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PerPersonCapUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"newCapUSD\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokensPurchased\",\n      \"inputs\": [\n        {\n          \"name\": \"buyer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"gTokenAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"priceUSD\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"milestone\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TokensPurchasedFor\",\n      \"inputs\": [\n        {\n          \"name\": \"buyer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"recipient\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"gTokenAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"priceUSD\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"milestone\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TreasuryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"Unpaused\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"indexed\": false,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WhitelistRequiredUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"required\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"WhitelistUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"status\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"AlreadyAtMaxMilestone\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"EnforcedPause\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExceedsPerPersonCap\",\n      \"inputs\": [\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"remaining\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExpectedPause\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientInventory\",\n      \"inputs\": [\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"available\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidMilestoneCap\",\n      \"inputs\": [\n        {\n          \"name\": \"newCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"lastCap\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidMilestonePrice\",\n      \"inputs\": [\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"lastPrice\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidTokenDecimals\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"decimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MilestoneIndexOOB\",\n      \"inputs\": [\n        {\n          \"name\": \"index\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"MilestoneNotReached\",\n      \"inputs\": [\n        {\n          \"name\": \"currentRevenue\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"required\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotWhitelisted\",\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SlippageExceeded\",\n      \"inputs\": [\n        {\n          \"name\": \"got\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minExpected\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"TokenNotAccepted\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroAmount\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroTokensOut\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"_aPNTsAddress\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_treasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"_initialPriceUSD\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"_initialOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"aPNTs\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"contract ERC20\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"acceptedPaymentTokens\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"availableInventory\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"buyAPNTs\",\n      \"inputs\": [\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"buyAPNTsFor\",\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"buyExactAPNTs\",\n      \"inputs\": [\n        {\n          \"name\": \"aPNTsAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getAPNTsForUSD\",\n      \"inputs\": [\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"aPNTsAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"getUSDForAPNTs\",\n      \"inputs\": [\n        {\n          \"name\": \"aPNTsAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"maxPurchaseAmount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"minPurchaseAmount\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"priceUSD\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"recoverToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPaymentToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"accepted\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPrice\",\n      \"inputs\": [\n        {\n          \"name\": \"newPriceUSD\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setPurchaseLimits\",\n      \"inputs\": [\n        {\n          \"name\": \"minAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxAmount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"setTreasury\",\n      \"inputs\": [\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"totalSold\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"treasury\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawEther\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"withdrawUnsoldAPNTs\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsPurchased\",\n      \"inputs\": [\n        {\n          \"name\": \"buyer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"aPNTsAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"priceUsed\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"APNTsPurchasedFor\",\n      \"inputs\": [\n        {\n          \"name\": \"buyer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"recipient\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"aPNTsAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"usdAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"priceUsed\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"EmergencyWithdraw\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PaymentTokenSet\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"accepted\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PriceUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"newPrice\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"PurchaseLimitsUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"minAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maxAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"TreasuryUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"oldTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newTreasury\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BelowMinPurchase\",\n      \"inputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minimum\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ExceedsMaxPurchase\",\n      \"inputs\": [\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"maximum\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InsufficientInventory\",\n      \"inputs\": [\n        {\n          \"name\": \"requested\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"available\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPaymentTokenDecimals\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"decimals\",\n          \"type\": \"uint8\",\n          \"internalType\": \"uint8\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidPrice\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"PaymentTokenNotAccepted\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroAddress\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroAmount\",\n      \"inputs\": []\n    }\n  ]\n}","{\n  \"abi\": [\n    {\n      \"type\": \"constructor\",\n      \"inputs\": [\n        {\n          \"name\": \"usdc\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"gtoken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"apnts\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"saleGT\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"saleAP\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"initialOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"relayers\",\n          \"type\": \"address[]\",\n          \"internalType\": \"address[]\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"APNTS\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"BUY_INTENT_TYPEHASH\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"DOMAIN_SEPARATOR\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"DOMAIN_TYPEHASH\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"GTOKEN\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"NAME\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SALE_AP\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"SALE_GT\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"USDC\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"VERSION\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\",\n          \"internalType\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"addRelayer\",\n      \"inputs\": [\n        {\n          \"name\": \"relayer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"executeBuy\",\n      \"inputs\": [\n        {\n          \"name\": \"intent\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct BuyHelper.BuyIntent\",\n          \"components\": [\n            {\n              \"name\": \"buyer\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"paymentToken\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"paymentAmount\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"targetToken\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"recipient\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"minOut\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"deadline\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            }\n          ]\n        },\n        {\n          \"name\": \"buyIntentSig\",\n          \"type\": \"bytes\",\n          \"internalType\": \"bytes\"\n        },\n        {\n          \"name\": \"transferAuth\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct BuyHelper.TransferAuthExtras\",\n          \"components\": [\n            {\n              \"name\": \"validAfter\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"v\",\n              \"type\": \"uint8\",\n              \"internalType\": \"uint8\"\n            },\n            {\n              \"name\": \"r\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            },\n            {\n              \"name\": \"s\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"hashBuyIntent\",\n      \"inputs\": [\n        {\n          \"name\": \"intent\",\n          \"type\": \"tuple\",\n          \"internalType\": \"struct BuyHelper.BuyIntent\",\n          \"components\": [\n            {\n              \"name\": \"buyer\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"paymentToken\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"paymentAmount\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"targetToken\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"recipient\",\n              \"type\": \"address\",\n              \"internalType\": \"address\"\n            },\n            {\n              \"name\": \"minOut\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"deadline\",\n              \"type\": \"uint256\",\n              \"internalType\": \"uint256\"\n            },\n            {\n              \"name\": \"nonce\",\n              \"type\": \"bytes32\",\n              \"internalType\": \"bytes32\"\n            }\n          ]\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\",\n          \"internalType\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"isRelayer\",\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\",\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"owner\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"removeRelayer\",\n      \"inputs\": [\n        {\n          \"name\": \"relayer\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"renounceOwnership\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"sweepToken\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"function\",\n      \"name\": \"transferOwnership\",\n      \"inputs\": [\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ],\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\"\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"BuyExecuted\",\n      \"inputs\": [\n        {\n          \"name\": \"buyer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"targetToken\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"recipient\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"paymentAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"receivedAmount\",\n          \"type\": \"uint256\",\n          \"indexed\": false,\n          \"internalType\": \"uint256\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"OwnershipTransferred\",\n      \"inputs\": [\n        {\n          \"name\": \"previousOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"event\",\n      \"name\": \"RelayerUpdated\",\n      \"inputs\": [\n        {\n          \"name\": \"relayer\",\n          \"type\": \"address\",\n          \"indexed\": true,\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"allowed\",\n          \"type\": \"bool\",\n          \"indexed\": false,\n          \"internalType\": \"bool\"\n        }\n      ],\n      \"anonymous\": false\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"BelowMinOut\",\n      \"inputs\": [\n        {\n          \"name\": \"received\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"minOut\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"Expired\",\n      \"inputs\": [\n        {\n          \"name\": \"deadline\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        },\n        {\n          \"name\": \"nowTs\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidBuyIntentSigner\",\n      \"inputs\": [\n        {\n          \"name\": \"recovered\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        },\n        {\n          \"name\": \"expected\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"InvalidSignatureLength\",\n      \"inputs\": [\n        {\n          \"name\": \"length\",\n          \"type\": \"uint256\",\n          \"internalType\": \"uint256\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"NotRelayer\",\n      \"inputs\": [\n        {\n          \"name\": \"caller\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableInvalidOwner\",\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"inputs\": [\n        {\n          \"name\": \"account\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ReentrancyGuardReentrantCall\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"SafeERC20FailedOperation\",\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnsupportedPaymentToken\",\n      \"inputs\": [\n        {\n          \"name\": \"paymentToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"UnsupportedTargetToken\",\n      \"inputs\": [\n        {\n          \"name\": \"targetToken\",\n          \"type\": \"address\",\n          \"internalType\": \"address\"\n        }\n      ]\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroRecipient\",\n      \"inputs\": []\n    },\n    {\n      \"type\": \"error\",\n      \"name\": \"ZeroRelayer\",\n      \"inputs\": []\n    }\n  ]\n}","/**\n * Smart Contract ABIs (Unified Naming)\n * \n * 命名策略：\n * - 文件名：统一无版本号（如 BLSAggregator.json）\n * - 版本信息：通过 ABI 中的 version() 函数获取\n * - 同步时自动去除版本号后缀（V3 等）\n */\n\n// Core System\nimport RegistryABIData from './Registry.json' with { type: 'json' };\nimport GTokenABIData from './GToken.json' with { type: 'json' };\nimport GTokenAuthorizationABIData from './GTokenAuthorization.json' with { type: 'json' };\nimport GTokenStakingABIData from './GTokenStaking.json' with { type: 'json' };\nimport SuperPaymasterABIData from './SuperPaymaster.json' with { type: 'json' };\nimport PaymasterFactoryABIData from './PaymasterFactory.json' with { type: 'json' };\nimport PaymasterABIData from './Paymaster.json' with { type: 'json' };\nimport LivenessRegistryABIData from './LivenessRegistry.json' with { type: 'json' };\nimport AAStarGlobalGuardABIData from './AAStarGlobalGuard.json' with { type: 'json' };\nimport RailgunParserABIData from './RailgunParser.json' with { type: 'json' };\nimport UniswapV3ParserABIData from './UniswapV3Parser.json' with { type: 'json' };\n\n// AA Standard (从 out/ 提取)\nimport EntryPointABIData from './EntryPoint.json' with { type: 'json' };\nimport SimpleAccountABIData from './SimpleAccount.json' with { type: 'json' };\nimport SimpleAccountFactoryABIData from './SimpleAccountFactory.json' with { type: 'json' };\n// AirAccount V7 (diamond-lite) — MERGED full ABI: account + fallback-routed agent/weight\n// functions. Generated by `scripts/build-full-abi.mjs` in airaccount-contract. Do NOT replace\n// with the raw out/AAStarAirAccountV7.json ABI: agent (ERC-8004) + weight-governance functions\n// execute via fallback->delegatecall and are absent from the raw account ABI. See contract repo\n// docs/2026-05-26-diamond-lite-migration-impact.md.\nimport AAStarAirAccountV7ABIData from './AAStarAirAccountV7.json' with { type: 'json' };\n\n// Token System\nimport xPNTsTokenABIData from './xPNTsToken.json' with { type: 'json' };\nimport xPNTsFactoryABIData from './xPNTsFactory.json' with { type: 'json' };\nimport MySBTABIData from './MySBT.json' with { type: 'json' };\n\n// Agent Economy (SP V5.3)\nimport MicroPaymentChannelABIData from './MicroPaymentChannel.json' with { type: 'json' };\n\n// Identity & Reputation\nimport ReputationSystemABIData from './ReputationSystem.json' with { type: 'json' };\n\n// Monitoring System\nimport DVTValidatorABIData from './DVTValidator.json' with { type: 'json' };\nimport BLSAggregatorABIData from './BLSAggregator.json' with { type: 'json' };\nimport BLSValidatorABIData from './BLSValidator.json' with { type: 'json' };\n\n// DVT layer-1 account policy (SuperPaymaster v5.4) — sender-keyed, governance-gated\n// trigger/spend policy read by staked consumers during validation. Asymmetric lifecycle:\n// tighten/freeze are immediate (guardian or timelock); loosen/unfreeze flow through an\n// EXTERNAL OZ TimelockController (2-day minDelay). See actions/policyRegistry.ts.\nimport PolicyRegistryABIData from './PolicyRegistry.json' with { type: 'json' };\n\n// EXTERNAL OZ TimelockController (standard @openzeppelin/contracts). The governance\n// controller that multisig/timelock-gated admin setters (e.g. BLSAggregator\n// setSlashPolicyAdmin / setSlashThreshold) are routed through — schedule() → wait\n// minDelay → execute(). See actions/timelockController.ts + admin SlashGovernance (CC-13).\nimport TimelockControllerABIData from './TimelockController.json' with { type: 'json' };\n\n// x402 settlement facilitator (SuperPaymaster v5.4) — on-chain settle path for the x402\n// micropayment protocol. Verifies EIP-3009 (transferWithAuthorization) / direct-settle\n// authorizations and routes operator/facilitator fees. Sepolia: 0xFe95a77e...\n// See deployments/config.sepolia.json (key `x402Facilitator`) + addresses.ts.\nimport X402FacilitatorABIData from './X402Facilitator.json' with { type: 'json' };\n\n// ========== Re-export ABIs - Core System ==========\nexport const RegistryABI = (RegistryABIData as any).abi || RegistryABIData;\nexport const RegistryArtifact = RegistryABIData;\n\n// LivenessRegistry (SuperPaymaster CC-29 DVT liveness layer). Node heartbeat / liveness-window reads\n// used by DVT peer-failover; exposed as an ABI (no wrapper — reached via viem directly).\nexport const LivenessRegistryABI = (LivenessRegistryABIData as any).abi || LivenessRegistryABIData;\nexport const LivenessRegistryArtifact = LivenessRegistryABIData;\n\nexport const GTokenABI = (GTokenABIData as any).abi || GTokenABIData;\nexport const GTokenArtifact = GTokenABIData;\n\n// GTokenAuthorization v2.2.0 — EIP-3009 gasless transfers (SuperPaymaster main, 2026-05-21)\n// @notice Requires GTokenAuthorization contract deployment. Do NOT use with legacy GToken address.\n// @notice MAX_AUTH_VALIDITY = 5 min — keep validBefore - validAfter < 300s.\n// @notice receiveWithAuthorization: msg.sender must equal `to` (relay cannot submit).\nexport const GTokenAuthorizationABI = (GTokenAuthorizationABIData as any).abi || GTokenAuthorizationABIData;\nexport const GTokenAuthorizationArtifact = GTokenAuthorizationABIData;\n\nexport const GTokenStakingABI = (GTokenStakingABIData as any).abi || GTokenStakingABIData;\nexport const GTokenStakingArtifact = GTokenStakingABIData;\n\nexport const SuperPaymasterABI = (SuperPaymasterABIData as any).abi || SuperPaymasterABIData;\nexport const SuperPaymasterArtifact = SuperPaymasterABIData;\n\nexport const PaymasterFactoryABI = (PaymasterFactoryABIData as any).abi || PaymasterFactoryABIData;\nexport const PaymasterFactoryArtifact = PaymasterFactoryABIData;\nexport const AAStarGlobalGuardABI = (AAStarGlobalGuardABIData as any).abi || AAStarGlobalGuardABIData;\nexport const RailgunParserABI = (RailgunParserABIData as any).abi || RailgunParserABIData;\nexport const UniswapV3ParserABI = (UniswapV3ParserABIData as any).abi || UniswapV3ParserABIData;\n\n// Paymaster V4 (使用 Paymaster.json)\nexport const PaymasterABI = (PaymasterABIData as any).abi || PaymasterABIData;\nexport const PaymasterArtifact = PaymasterABIData;\n\n// ========== AA Standard ==========\nexport const EntryPointABI = (EntryPointABIData as any).abi || EntryPointABIData;\nexport const EntryPointArtifact = EntryPointABIData;\n\nexport const SimpleAccountABI = (SimpleAccountABIData as any).abi || SimpleAccountABIData;\nexport const SimpleAccountArtifact = SimpleAccountABIData;\n\nexport const SimpleAccountFactoryABI = (SimpleAccountFactoryABIData as any).abi || SimpleAccountFactoryABIData;\nexport const SimpleAccountFactoryArtifact = SimpleAccountFactoryABIData;\n\n// AirAccount V7 (diamond-lite). Full ABI includes the fallback-routed agent + weight-governance\n// functions — call them at the ACCOUNT address; the account routes to AirAccountExtension internally.\nexport const AAStarAirAccountV7ABI = (AAStarAirAccountV7ABIData as any).abi || AAStarAirAccountV7ABIData;\nexport const AAStarAirAccountV7Artifact = AAStarAirAccountV7ABIData;\n\n// ========== Token System ==========\nexport const xPNTsTokenABI = (xPNTsTokenABIData as any).abi || xPNTsTokenABIData;\nexport const xPNTsTokenArtifact = xPNTsTokenABIData;\n\nexport const xPNTsFactoryABI = (xPNTsFactoryABIData as any).abi || xPNTsFactoryABIData;\nexport const xPNTsFactoryArtifact = xPNTsFactoryABIData;\n\nexport const MySBTABI = (MySBTABIData as any).abi || MySBTABIData;\nexport const MySBTArtifact = MySBTABIData;\n\n// ========== Agent Economy (SP V5.3) ==========\nexport const MicroPaymentChannelABI = (MicroPaymentChannelABIData as any).abi || MicroPaymentChannelABIData;\nexport const MicroPaymentChannelArtifact = MicroPaymentChannelABIData;\n\n// ========== Identity & Reputation ==========\nexport const ReputationSystemABI = (ReputationSystemABIData as any).abi || ReputationSystemABIData;\nexport const ReputationSystemArtifact = ReputationSystemABIData;\n\n// ========== Monitoring System ==========\nexport const DVTValidatorABI = (DVTValidatorABIData as any).abi || DVTValidatorABIData;\nexport const DVTValidatorArtifact = DVTValidatorABIData;\n\nexport const BLSAggregatorABI = (BLSAggregatorABIData as any).abi || BLSAggregatorABIData;\nexport const BLSAggregatorArtifact = BLSAggregatorABIData;\n\nexport const BLSValidatorABI = (BLSValidatorABIData as any).abi || BLSValidatorABIData;\nexport const BLSValidatorArtifact = BLSValidatorABIData;\n\n// PolicyRegistry (SP v5.4 DVT layer-1). Reads (checkPolicy / getAssetPolicy / getContractScope\n// / getAssetSpend / isSelectorAllowed / isFrozen / isAuthorizedConsumer / guardian / timelock)\n// + asymmetric writes (immediate tighten/freeze; timelocked loosen/unfreeze).\nexport const PolicyRegistryABI = (PolicyRegistryABIData as any).abi || PolicyRegistryABIData;\nexport const PolicyRegistryArtifact = PolicyRegistryABIData;\n\n// EXTERNAL OZ TimelockController — schedule/execute/cancel + getTimestamp/getMinDelay/\n// hashOperation/isOperation* (governance orchestration for policy-admin setters, CC-13).\nexport const TimelockControllerABI = (TimelockControllerABIData as any).abi || TimelockControllerABIData;\n\n// X402Facilitator (SP v5.4). Settlement entrypoint for x402 micropayments: verify +\n// settle EIP-3009 authorizations (USDC-native) and direct xPNTs transfers, with\n// operator/facilitator fee accounting. Sepolia: 0xFe95a77e4Db593E6EA88000Aad9cD1230BAB4512.\nexport const X402FacilitatorABI = (X402FacilitatorABIData as any).abi || X402FacilitatorABIData;\nexport const X402FacilitatorArtifact = X402FacilitatorABIData;\n\n\n// ========== AirAccount v0.18 stack (synced 2026-06-14) ==========\n//\n// Source: github.com/AAStarCommunity/airaccount-contract `main` (v0.18).\n// ABIs copied from `out/<Contract>.sol/<Contract>.json` (per-contract) and the merged\n// `abi/AAStarAirAccountV7.full.json` (account + fallback-routed agent/weight, 153 entries).\n//\n// v0.18 ABI deltas vs beta.4 (see docs/V0.18-SDK-MIGRATION.md):\n//   - AAStarAirAccountFactoryV7: NEW ctor — implementation injected as arg 1 (#82 EIP-3860 fix)\n//   - AAStarBLSAlgorithm: + aggregator() / setAggregator() / acceptOwnership() / pendingOwner() (Ownable2Step, #45)\n//   - AAStarBLSAggregator: NEW ctor (blsAlgorithm, entryPoint)\n//   - AAStarAirAccountV7: + moduleManagementNonce(), pendingModuleInstall() (w/ executeAfter), proposeModuleInstall()\n//   - AirAccountExtension: + module-install-timelock surface + ModuleInstall* errors\n//\n// Sepolia deployment 2026-06-14 (full redeploy — non-upgradable account):\n//   AAStarBLSAlgorithm        0x2869EEb04218ca666c6373c0DC5aCDa04F00adFA\n//   AAStarValidator (router)  0xe785AF830aD33F3E550FfdC0fEB81D42507DA39D\n//   AAStarBLSAggregator       0x9AD55930B77C002dF884F4dac846D2077CDA7C8b\n//   SessionKeyValidator       0x82f16163D0fb9c4dd7507b9999B79527a795291C\n//   ForceExitModule           0x0F6960526acf4cF9123e0aBc82d7a59fA0B6C934\n//   AirAccountDelegate        0x70A8E31c425Ef3F23a2F9E05C48Bd998Aa29085b\n//   CalldataParserRegistry    0x5dEE2c5279eFfC7c7FE711233bE42726EE0d4166\n//   AAStarAirAccountFactoryV7 0xB14a870e4f63CA21a7EB753588CC4eBFb429E163  (NEW ctor — impl arg 1)\n//   AAStarAirAccountV7 (impl) 0x1Bc1119e3Ce4B6D158a6eadb31A06FdcE51992cF\n//   AirAccountExtension       0xB1B3acd47DB89806F8431da3452769f1243b4d56\n//   AgentRegistry             0x118eD73f22e41cb69282c78b216426D2d98A3935\n//\n// NOTE on naming overlap with SuperPaymaster: this repo has BOTH\n//   - BLSAggregator.json + BLSValidator.json (legacy SuperPaymaster exports above)\n//   - AAStarBLSAggregator.json + AAStarBLSAlgorithm.json (THIS section — AirAccount v0.17.2)\n// They are NOT the same — AirAccount uses EIP-2537 BLS12-381 pairing primitives.\n\nimport AAStarAirAccountFactoryV7ABIData from './AAStarAirAccountFactoryV7.json' with { type: 'json' };\nimport AgentRegistryABIData from './AgentRegistry.json' with { type: 'json' };\nimport SessionKeyValidatorABIData from './SessionKeyValidator.json' with { type: 'json' };\nimport ForceExitModuleABIData from './ForceExitModule.json' with { type: 'json' };\nimport AirAccountDelegateABIData from './AirAccountDelegate.json' with { type: 'json' };\nimport AAStarValidatorABIData from './AAStarValidator.json' with { type: 'json' };\nimport AAStarBLSAlgorithmABIData from './AAStarBLSAlgorithm.json' with { type: 'json' };\n// CC-98 / CC-103 per-proposal committee validator (YetAnotherAA-Validator #237). Mounted at\n// algId 0x01 on the v0.31.0 router 0xA15127e8… (on-chain verified). Supersedes the whole-set\n// AAStarBLSAlgorithm for accounts on that router; the two coexist on different routers.\nimport AAStarCommitteeValidatorABIData from './AAStarCommitteeValidator.json' with { type: 'json' };\nimport AAStarBLSAggregatorABIData from './AAStarBLSAggregator.json' with { type: 'json' };\nimport CalldataParserRegistryABIData from './CalldataParserRegistry.json' with { type: 'json' };\nimport AirAccountExtensionABIData from './AirAccountExtension.json' with { type: 'json' };\n\n// Generic ERC-20 (payment tokens: USDC / USDT) + MushroomDAO launch token-sale stack\n// (aPoints + governance-token sale). Source: MushroomDAO/launch contracts/out/*.json.\nimport ERC20ABIData from './ERC20.json' with { type: 'json' };\nimport SaleContractV2ABIData from './SaleContractV2.json' with { type: 'json' };\nimport APNTsSaleContractABIData from './APNTsSaleContract.json' with { type: 'json' };\nimport BuyHelperABIData from './BuyHelper.json' with { type: 'json' };\n\nexport const AAStarAirAccountFactoryV7ABI = (AAStarAirAccountFactoryV7ABIData as any).abi || AAStarAirAccountFactoryV7ABIData;\nexport const AAStarAirAccountFactoryV7Artifact = AAStarAirAccountFactoryV7ABIData;\n\nexport const AgentRegistryABI = (AgentRegistryABIData as any).abi || AgentRegistryABIData;\nexport const AgentRegistryArtifact = AgentRegistryABIData;\n\n// v0.17.2-beta.1 unified Session Key (algId 0x08) — replaces deleted AgentSessionKeyValidator +\n// AirAccountCompositeValidator + TierGuardHook. Carries both classic single-target sessions and\n// agent-grade controls (velocity, callTargets[], selectorAllowlist[]). 19 functions.\nexport const SessionKeyValidatorABI = (SessionKeyValidatorABIData as any).abi || SessionKeyValidatorABIData;\nexport const SessionKeyValidatorArtifact = SessionKeyValidatorABIData;\n\n// v0.17.2-beta.3 ForceExitModule — IncompatibleAccount error + assembly _countBits + MODULE_VERSION.\n// Per-account ERC-7579 Executor (moduleTypeId=2). Errors: SignerNoLongerGuardian, IncompatibleAccount.\nexport const ForceExitModuleABI = (ForceExitModuleABIData as any).abi || ForceExitModuleABIData;\nexport const ForceExitModuleArtifact = ForceExitModuleABIData;\n\n// EIP-7702 delegation target — turns a regular EOA into an AirAccount-managed wallet.\nexport const AirAccountDelegateABI = (AirAccountDelegateABIData as any).abi || AirAccountDelegateABIData;\nexport const AirAccountDelegateArtifact = AirAccountDelegateABIData;\n\n// AAStar validator router — algId → algorithm-contract dispatch. NOT the same as\n// SuperPaymaster's BLSValidator.json above.\nexport const AAStarValidatorABI = (AAStarValidatorABIData as any).abi || AAStarValidatorABIData;\nexport const AAStarValidatorArtifact = AAStarValidatorABIData;\n\n// AirAccount BLS primitives (EIP-2537 pairing). NOT the same as SuperPaymaster's\n// BLSAggregator.json / BLSValidator.json above.\nexport const AAStarBLSAlgorithmABI = (AAStarBLSAlgorithmABIData as any).abi || AAStarBLSAlgorithmABIData;\nexport const AAStarCommitteeValidatorABI =\n    (AAStarCommitteeValidatorABIData as any).abi || AAStarCommitteeValidatorABIData;\nexport const AAStarCommitteeValidatorArtifact = AAStarCommitteeValidatorABIData;\nexport const AAStarBLSAlgorithmArtifact = AAStarBLSAlgorithmABIData;\n\nexport const AAStarBLSAggregatorABI = (AAStarBLSAggregatorABIData as any).abi || AAStarBLSAggregatorABIData;\nexport const AAStarBLSAggregatorArtifact = AAStarBLSAggregatorABIData;\n\n// DeFi calldata parser registry — parsers OPT-IN per account via account.setParserRegistry.\n// v0.17.2-beta.1 KI-14: Railgun + Uniswap parser NOT deployed (fail-open bug); only the\n// registry stub is on-chain.\nexport const CalldataParserRegistryABI = (CalldataParserRegistryABIData as any).abi || CalldataParserRegistryABIData;\nexport const CalldataParserRegistryArtifact = CalldataParserRegistryABIData;\n\n// Diamond-lite fallback target for AAStarAirAccountV7 — agent (ERC-8004) + weighted-signature\n// governance. Reached via account's fallback->delegatecall. Standalone ABI included for tooling\n// that wants to encode calls without going through the merged V7 ABI.\nexport const AirAccountExtensionABI = (AirAccountExtensionABIData as any).abi || AirAccountExtensionABIData;\nexport const AirAccountExtensionArtifact = AirAccountExtensionABIData;\n\n// Generic ERC-20 — used for payment-token (USDC/USDT) balance/allowance/approve in the\n// launch token-sale flow. EIP-3009 gasless transfer is signed via signTypedData (no ABI).\nexport const ERC20ABI = (ERC20ABIData as any).abi || ERC20ABIData;\n\n// MushroomDAO launch token-sale stack (aPoints + governance-token sale).\n// SaleContractV2: sells the constructor-bound GToken (getCurrentPriceUSD/getTokensForUSD/buyTokens,\n//   `gToken()` immutable getter). APNTsSaleContract: sells bound aPNTs (priceUSD/getAPNTsForUSD/\n//   buyAPNTs, `aPNTs()` getter). BuyHelper: gasless EIP-3009 + EIP-712 BuyIntent entrypoint, exposes\n//   USDC/GTOKEN/APNTS/SALE_GT/SALE_AP immutables. The bound payout token is read on-chain (never\n//   duplicated in the address book). Source: MushroomDAO/launch contracts/out/*.json.\nexport const SaleContractV2ABI = (SaleContractV2ABIData as any).abi || SaleContractV2ABIData;\nexport const APNTsSaleContractABI = (APNTsSaleContractABIData as any).abi || APNTsSaleContractABIData;\nexport const BuyHelperABI = (BuyHelperABIData as any).abi || BuyHelperABIData;\n","/**\n * GuardClient — read + manage an account's AAStarGlobalGuard (the per-account spending-limit /\n * tiered-policy contract; see airaccount-contract `src/core/AAStarGlobalGuard.sol`).\n *\n * The Guard's write methods are `onlyAccount` — they CANNOT be called by an EOA directly. So the\n * management methods here return a {@link GuardCall} (`{ to, value, data }`) that the caller wraps\n * in `account.execute(to, value, data)` and submits as a UserOp (e.g. via the AirAccount client).\n * Reads are plain view calls (any caller). Browser-safe (viem-only) — usable from a YAA frontend\n * to build policy management + viewing entry points.\n *\n * Monotonic-by-design: limits can only DECREASE, token configs can only be ADDED (never edited or\n * removed), and ETH daily limit can't go below `minDailyLimit`. The contract enforces this; these\n * wrappers just expose the allowed operations.\n */\nimport { type Address, type Hex, encodeFunctionData } from 'viem';\nimport { AAStarGlobalGuardABI } from './abis/index.js';\n\n/** Per-token tiered limits (tier1 ≤ tier2 ≤ dailyLimit). */\nexport interface GuardTokenConfig {\n  /** Tier-1 (ECDSA single-sig) cumulative cap. */\n  tier1Limit: bigint;\n  /** Tier-2 (P256 + BLS) cumulative cap. */\n  tier2Limit: bigint;\n  /** Per-day total cap. */\n  dailyLimit: bigint;\n}\n\n/** Snapshot of the Guard's ETH-level config + state. */\nexport interface GuardConfig {\n  /** The bound account (immutable). */\n  account: Address;\n  /** Current ETH daily limit (0 = no ETH limit / guard inactive). */\n  dailyLimit: bigint;\n  /** Floor the ETH daily limit can never go below (immutable). */\n  minDailyLimit: bigint;\n  /** ETH spent today. */\n  todaySpent: bigint;\n  /** ETH still spendable today. */\n  remainingDailyAllowance: bigint;\n  /** Strict mode: when true, any token without a config is blocked. */\n  strictMode: boolean;\n}\n\n/** A Guard management call to submit via `account.execute(to, value, data)` (UserOp). */\nexport interface GuardCall {\n  to: Address;\n  value: bigint;\n  data: Hex;\n}\n\n/** Minimal read surface (decouples from viem's PublicClient generic). */\ninterface ReadClient {\n  readContract(args: {\n    address: Address;\n    abi: unknown;\n    functionName: string;\n    args?: readonly unknown[];\n  }): Promise<unknown>;\n}\n\nexport class GuardClient {\n  constructor(\n    private readonly publicClient: ReadClient,\n    public readonly guardAddress: Address,\n  ) {}\n\n  private read(functionName: string, args: readonly unknown[] = []): Promise<unknown> {\n    return this.publicClient.readContract({\n      address: this.guardAddress,\n      abi: AAStarGlobalGuardABI,\n      functionName,\n      args,\n    });\n  }\n\n  // ─── Reads (any caller) ───────────────────────────────────────────────\n\n  /** ETH-level config + live spend state in one batch. */\n  async getConfig(): Promise<GuardConfig> {\n    const [account, dailyLimit, minDailyLimit, todaySpent, remainingDailyAllowance, strictMode] =\n      await Promise.all([\n        this.read('account'),\n        this.read('dailyLimit'),\n        this.read('minDailyLimit'),\n        this.read('todaySpent'),\n        this.read('remainingDailyAllowance'),\n        this.read('blockUnconfiguredTokens'),\n      ]);\n    return {\n      account: account as Address,\n      dailyLimit: BigInt(dailyLimit as bigint),\n      minDailyLimit: BigInt(minDailyLimit as bigint),\n      todaySpent: BigInt(todaySpent as bigint),\n      remainingDailyAllowance: BigInt(remainingDailyAllowance as bigint),\n      strictMode: strictMode as boolean,\n    };\n  }\n\n  /** A token's tiered config (`tier1Limit`/`tier2Limit`/`dailyLimit`). All-zero = unconfigured. */\n  async getTokenConfig(token: Address): Promise<GuardTokenConfig> {\n    // tokenConfigs returns (uint128 tier1, uint128 tier2, uint256 daily) — viem gives an array\n    // (or a named object on some versions); handle both.\n    const r = (await this.read('tokenConfigs', [token])) as any;\n    const t1 = Array.isArray(r) ? r[0] : r.tier1Limit;\n    const t2 = Array.isArray(r) ? r[1] : r.tier2Limit;\n    const dy = Array.isArray(r) ? r[2] : r.dailyLimit;\n    return { tier1Limit: BigInt(t1), tier2Limit: BigInt(t2), dailyLimit: BigInt(dy) };\n  }\n\n  /** A token's amount spent today. */\n  async getTokenTodaySpent(token: Address): Promise<bigint> {\n    return BigInt((await this.read('tokenTodaySpent', [token])) as bigint);\n  }\n\n  // ─── Management (onlyAccount → wrap each in account.execute as a UserOp) ──\n\n  /** Add a token's tiered limit config (add-only; cannot edit/remove an existing one). */\n  encodeAddTokenConfig(token: Address, config: GuardTokenConfig): GuardCall {\n    return this.call('addTokenConfig', [\n      token,\n      { tier1Limit: config.tier1Limit, tier2Limit: config.tier2Limit, dailyLimit: config.dailyLimit },\n    ]);\n  }\n\n  /** Lower the ETH daily limit (can only decrease; not below `minDailyLimit`). */\n  encodeDecreaseDailyLimit(newLimit: bigint): GuardCall {\n    return this.call('decreaseDailyLimit', [newLimit]);\n  }\n\n  /** Lower a token's daily limit (decrease-only). */\n  encodeDecreaseTokenDailyLimit(token: Address, newLimit: bigint): GuardCall {\n    return this.call('decreaseTokenDailyLimit', [token, newLimit]);\n  }\n\n  /** Enable/disable strict mode (block tokens that have no config). */\n  encodeSetStrictMode(enabled: boolean): GuardCall {\n    return this.call('setStrictMode', [enabled]);\n  }\n\n  private call(functionName: string, args: readonly unknown[]): GuardCall {\n    return {\n      to: this.guardAddress,\n      value: 0n,\n      data: encodeFunctionData({ abi: AAStarGlobalGuardABI as never, functionName, args } as never),\n    };\n  }\n}\n","/**\n * AAstar Smart Contract Addresses\n *\n * IMPORTANT: Contract addresses are defined in contract-addresses.ts\n * This file imports and uses those addresses to maintain a single source of truth.\n *\n * For detailed version information (VERSION, VERSION_CODE, features),\n * see contract-versions.ts\n */\n\nimport {\n  CORE_ADDRESSES,\n  TOKEN_ADDRESSES,\n  TEST_TOKEN_ADDRESSES,\n  TEST_ACCOUNT_ADDRESSES,\n  PAYMASTER_ADDRESSES,\n  MONITORING_ADDRESSES,\n  OFFICIAL_ADDRESSES,\n  COMMUNITY_OWNERS,\n} from './contract-addresses.js';\n\n/**\n * Contract category types\n */\nexport type ContractCategory =\n  | 'core'          // SuperPaymaster V2, Registry, GToken, GTokenStaking, PaymasterFactory\n  | 'tokens'        // xPNTsFactory, MySBT\n  | 'testTokens'    // Mock tokens for testing (USDT, aPNTs, bPNTs)\n  | 'testAccounts'  // Test accounts for development (SimpleAccountFactory)\n  | 'paymaster'     // PaymasterV4_1 (AOA mode)\n  | 'monitoring'    // DVT, BLS\n  | 'official'      // EntryPoint\n  | 'communities';  // Registered communities (AAStar, BuilderDAO)\n\n/**\n * Sepolia Testnet Contracts\n */\nexport const SEPOLIA_CONTRACTS = {\n  // ========================================\n  // Core System (AOA+ Mode)\n  // ========================================\n  core: CORE_ADDRESSES,\n\n  // ========================================\n  // Token System\n  // ========================================\n  tokens: TOKEN_ADDRESSES,\n\n  // ========================================\n  // Test Tokens (For Development & Testing)\n  // ========================================\n  testTokens: TEST_TOKEN_ADDRESSES,\n\n  // ========================================\n  // Test Accounts (For Development & Testing)\n  // ========================================\n  testAccounts: TEST_ACCOUNT_ADDRESSES,\n\n  // ========================================\n  // Paymaster V4_1 (AOA Mode - Independent Paymaster)\n  // ========================================\n  paymaster: PAYMASTER_ADDRESSES,\n\n  // ========================================\n  // DVT/BLS Monitoring System\n  // ========================================\n  monitoring: MONITORING_ADDRESSES,\n\n  // ========================================\n  // Official Dependencies\n  // ========================================\n  official: OFFICIAL_ADDRESSES,\n\n  // ========================================\n  // Test Communities (For Development & Testing)\n  // ========================================\n  communities: {\n    /** AAStar Community - Test community for development (registered: 2025-11-01) */\n    aastar: {\n      owner: COMMUNITY_OWNERS.aastarOwner,\n      gasToken: TEST_TOKEN_ADDRESSES.aPNTs,\n      ensName: 'aastar.eth',\n      name: 'AAStar',\n      stake: '50', // 50 GToken staked in Registry\n    },\n\n    /** BreadCommunity - Test community for development (registered: 2025-11-03) */\n    breadCommunity: {\n      owner: COMMUNITY_OWNERS.breadCommunityOwner,\n      gasToken: TEST_TOKEN_ADDRESSES.bPNTs,\n      ensName: 'bread.eth',\n      name: 'BreadCommunity',\n      stake: '50', // 50 GToken staked in Registry\n    },\n  },\n} as const;\n\n/**\n * All supported networks\n */\nexport const CONTRACTS = {\n  sepolia: SEPOLIA_CONTRACTS,\n  // Future networks can be added here:\n  // optimism: OPTIMISM_CONTRACTS,\n  // mainnet: MAINNET_CONTRACTS,\n} as const;\n\n/**\n * Supported network types for contracts\n */\nexport type ContractNetwork = keyof typeof CONTRACTS;\n\n/**\n * Contract addresses for a specific network\n */\nexport type NetworkContracts = typeof SEPOLIA_CONTRACTS;\n\n/**\n * Get all contracts for a specific network\n *\n * @param network - Network name (e.g., 'sepolia')\n * @returns All contract addresses for the network\n *\n * @example\n * ```ts\n * const contracts = getContracts('sepolia');\n * console.log(contracts.core.superPaymaster);\n * ```\n */\nexport function getContracts(network: ContractNetwork): NetworkContracts {\n  const contracts = CONTRACTS[network];\n  if (!contracts) {\n    throw new Error(`Network '${network}' is not supported`);\n  }\n  return contracts;\n}\n\n/**\n * Get a specific contract address\n *\n * @param network - Network name\n * @param category - Contract category\n * @param name - Contract name\n * @returns Contract address\n *\n * @example\n * ```ts\n * const address = getContract('sepolia', 'core', 'superPaymaster');\n * ```\n */\nexport function getContract(\n  network: ContractNetwork,\n  category: ContractCategory,\n  name: string\n): string {\n  const contracts = getContracts(network);\n  const categoryContracts = contracts[category] as Record<string, string>;\n\n  if (!categoryContracts) {\n    throw new Error(`Category '${category}' not found in network '${network}'`);\n  }\n\n  const address = categoryContracts[name];\n  if (!address) {\n    throw new Error(`Contract '${name}' not found in category '${category}' for network '${network}'`);\n  }\n\n  return address;\n}\n\n/**\n * Get core system contracts\n *\n * @param network - Network name\n * @returns Core contract addresses\n *\n * @example\n * ```ts\n * const core = getCoreContracts('sepolia');\n * console.log(core.superPaymaster);\n * console.log(core.registry);\n * ```\n */\nexport function getCoreContracts(network: ContractNetwork) {\n  return getContracts(network).core;\n}\n\n/**\n * Get token system contracts\n *\n * @param network - Network name\n * @returns Token contract addresses\n *\n * @example\n * ```ts\n * const tokens = getTokenContracts('sepolia');\n * console.log(tokens.xPNTsFactory);\n * console.log(tokens.mySBT);\n * ```\n */\nexport function getTokenContracts(network: ContractNetwork) {\n  return getContracts(network).tokens;\n}\n\n/**\n * Get test token contracts (for development & testing)\n *\n * @param network - Network name\n * @returns Test token contract addresses\n *\n * @example\n * ```ts\n * const testTokens = getTestTokenContracts('sepolia');\n * console.log(testTokens.mockUSDT);\n * ```\n */\nexport function getTestTokenContracts(network: ContractNetwork) {\n  return getContracts(network).testTokens;\n}\n\n/**\n * Get PaymasterV4_1 address (AOA mode)\n *\n * @param network - Network name\n * @returns PaymasterV4_1 address\n *\n * @example\n * ```ts\n * const paymaster = getPaymasterV4_1('sepolia');\n * ```\n */\nexport function getPaymasterV4_1(network: ContractNetwork): string {\n  return getContracts(network).paymaster.paymasterV4_1;\n}\n\n/**\n * Get test account contracts (SimpleAccountFactory, etc.)\n *\n * @param network - Network name\n * @returns Test account contract addresses\n *\n * @example\n * ```ts\n * const testAccounts = getTestAccounts('sepolia');\n * console.log(testAccounts.simpleAccountFactory);\n * ```\n */\nexport function getTestAccounts(network: ContractNetwork) {\n  return getContracts(network).testAccounts;\n}\n\n/**\n * Get SimpleAccountFactory address\n *\n * @param network - Network name\n * @returns SimpleAccountFactory address\n *\n * @example\n * ```ts\n * const factory = getSimpleAccountFactory('sepolia');\n * ```\n */\nexport function getSimpleAccountFactory(network: ContractNetwork): string {\n  return getContracts(network).testAccounts.simpleAccountFactory;\n}\n\n/**\n * Get SuperPaymaster V2 address (AOA+ mode)\n *\n * @param network - Network name\n * @returns SuperPaymaster V2 address\n *\n * @example\n * ```ts\n * const superPaymaster = getSuperPaymasterV2('sepolia');\n * ```\n */\nexport function getSuperPaymasterV2(network: ContractNetwork): string {\n  return getContracts(network).core.superPaymaster;\n}\n\n/**\n * Get EntryPoint v0.7 address\n *\n * @param network - Network name\n * @returns EntryPoint address\n *\n * @example\n * ```ts\n * const entryPoint = getEntryPoint('sepolia');\n * ```\n */\nexport function getEntryPoint(network: ContractNetwork): string {\n  return getContracts(network).official.entryPoint;\n}\n\n/**\n * Check if a network is supported for contracts\n *\n * @param network - Network name to check\n * @returns True if network is supported\n *\n * @example\n * ```ts\n * if (isContractNetworkSupported('sepolia')) {\n *   const contracts = getContracts('sepolia');\n * }\n * ```\n */\nexport function isContractNetworkSupported(network: string): network is ContractNetwork {\n  return network in CONTRACTS;\n}\n\n/**\n * Get all supported contract network names\n *\n * @returns Array of supported network names\n *\n * @example\n * ```ts\n * const networks = getContractNetworks();\n * // ['sepolia']\n * ```\n */\nexport function getContractNetworks(): ContractNetwork[] {\n  return Object.keys(CONTRACTS) as ContractNetwork[];\n}\n\n/**\n * Contract deployment metadata\n */\nexport const CONTRACT_METADATA = {\n  sepolia: {\n    lastUpdated: '2025-11-02',\n    networkId: 11155111,\n    deploymentDates: {\n      // Core System\n      gToken: '2025-11-01',            // v2.0.0 with VERSION interface\n      superPaymaster: '2025-11-01',  // v2.0.0 with VERSION interface\n      registry: '2025-11-02',          // v2.1.4 with allowPermissionlessMint default true\n      gTokenStaking: '2025-11-01',     // v2.0.0 with VERSION interface\n\n      // Tokens\n      xPNTsFactory: '2025-11-01',      // v2.0.0 with VERSION interface\n      mySBT: '2025-11-01',             // v2.4.0 with VERSION interface + NFT refactor\n\n      // Paymaster\n      paymasterV4_1: '2025-10-15',\n\n      // Tokens\n      aPNTs: '2025-10-30',\n\n      // Factories\n      paymasterFactory: '2025-11-01',      // v1.0.0\n\n      // Monitoring\n      dvtValidator: '2025-11-01',      // v2.0.0 with VERSION interface\n      blsAggregator: '2025-11-01',     // v2.0.0 with VERSION interface\n    },\n  },\n} as const;\n\n/**\n * Get contract deployment date\n *\n * @param network - Network name\n * @param contractName - Contract name\n * @returns Deployment date string (YYYY-MM-DD)\n *\n * @example\n * ```ts\n * const date = getDeploymentDate('sepolia', 'superPaymaster');\n * // '2025-10-25'\n * ```\n */\nexport function getDeploymentDate(network: ContractNetwork, contractName: string): string | undefined {\n  const metadata = CONTRACT_METADATA[network];\n  if (!metadata) return undefined;\n\n  return (metadata.deploymentDates as Record<string, string>)[contractName];\n}\n\n/**\n * Get registered communities\n *\n * @param network - Network name\n * @returns Communities object\n *\n * @example\n * ```ts\n * const communities = getCommunities('sepolia');\n * console.log(communities.aastar.owner);\n * ```\n */\nexport function getCommunities(network: ContractNetwork) {\n  return getContracts(network).communities;\n}\n\n/**\n * Get a specific community\n *\n * @param network - Network name\n * @param communityName - Community name (aastar, builderDao)\n * @returns Community information\n *\n * @example\n * ```ts\n * const aastar = getCommunity('sepolia', 'aastar');\n * console.log(aastar.gasToken); // aPNTs address\n * ```\n */\nexport function getCommunity(network: ContractNetwork, communityName: 'aastar' | 'breadCommunity') {\n  return getCommunities(network)[communityName];\n}\n","/**\n * AAstar V2 Contract Versions\n *\n * IMPORTANT: Contract addresses are defined in contract-addresses.ts\n * This file imports and uses those addresses to maintain a single source of truth.\n *\n * All V2 contracts implement the VERSION interface:\n * - VERSION: string (e.g., \"2.0.0\")\n * - VERSION_CODE: uint256 (e.g., 20000)\n *\n * Last Updated: 2025-11-01\n */\n\nimport {\n  CORE_ADDRESSES,\n  TOKEN_ADDRESSES,\n  TEST_TOKEN_ADDRESSES,\n  MONITORING_ADDRESSES,\n} from './contract-addresses.js';\n\n/**\n * Contract version information\n */\nexport interface ContractVersion {\n  /** Contract name */\n  name: string;\n  /** Semantic version string (e.g., \"2.0.0\") */\n  version: string;\n  /** Numeric version code (e.g., 20000) */\n  versionCode: number;\n  /** Deployment date (YYYY-MM-DD) */\n  deployedAt: string;\n  /** Contract address on network */\n  address: string;\n  /** Key features in this version */\n  features?: string[];\n}\n\n/**\n * V2 Contract Versions on Sepolia\n */\nexport const SEPOLIA_V2_VERSIONS = {\n  // ========================================\n  // Core System\n  // ========================================\n  core: {\n    gToken: {\n      name: 'GToken',\n      version: '2.0.0',\n      versionCode: 20000,\n      deployedAt: '2025-11-01',\n      address: CORE_ADDRESSES.gToken,\n      features: [\n        'VERSION interface',\n        'ERC20 governance token',\n        'Mintable with cap',\n        'Ownable',\n      ],\n    } as ContractVersion,\n\n    superPaymaster: {\n      name: 'SuperPaymasterV2',\n      version: '2.3.3',\n      versionCode: 20303,\n      deployedAt: '2024-11-24',\n      address: CORE_ADDRESSES.superPaymaster,\n      features: [\n        'VERSION interface',\n        'Unified architecture',\n        'xPNTs gas token support',\n        'Reputation-based pricing',\n        'Multi-operator support',\n        'registerOperatorWithAutoStake (1-step registration)',\n        'CEI pattern fix - state changes before external calls',\n        'nonReentrant protection added',\n        'Price cache auto-update fix (was broken in v2.3.1)',\n        'Storage packing optimization (~800 gas saved)',\n        'Batch state updates (~200-400 gas saved)',\n        'Total gas optimization: ~5.5-11.2k gas vs v2.3.1',\n        'Internal SBT registry - no external balanceOf() calls (~800 gas saved per tx)',\n        'MySBT callback pattern: registerSBTHolder() on mint, removeSBTHolder() on burn',\n      ],\n    } as ContractVersion,\n\n    registry: {\n      name: 'Registry',\n      version: '2.2.1',\n      versionCode: 20201,\n      deployedAt: '2025-11-09',\n      address: CORE_ADDRESSES.registry,\n      features: [\n        'VERSION interface',\n        'allowPermissionlessMint defaults to true',\n        'transferCommunityOwnership',\n        'Community registration',\n        'GToken staking requirement',\n        'Slash mechanism',\n        'Uses new GTokenStaking with GToken v2.0.0',\n        'isRegistered mapping (duplicate prevention)',\n      ],\n    } as ContractVersion,\n\n    gTokenStaking: {\n      name: 'GTokenStaking',\n      version: '2.0.1',\n      versionCode: 20001,\n      deployedAt: '2025-11-05',\n      address: CORE_ADDRESSES.gTokenStaking,\n      features: [\n        'VERSION interface',\n        'User-level slash tracking',\n        '1:1 shares model',\n        'Lock mechanism',\n        'Percentage-based exit fee',\n        'Multiple locker support',\n        'Uses new GToken v2.0.0',\n        'stakeFor() function - stake on behalf of users',\n      ],\n    } as ContractVersion,\n\n    paymasterFactory: {\n      name: 'PaymasterFactory',\n      version: '1.0.0',\n      versionCode: 10000,\n      deployedAt: '2025-11-01',\n      address: CORE_ADDRESSES.paymasterFactory,\n      features: [\n        'EIP-1167 Minimal Proxy',\n        'Version management',\n        'Permissionless Paymaster deployment',\n        'Operator tracking',\n        'Gas-efficient (~100k gas per deployment)',\n      ],\n    } as ContractVersion,\n  },\n\n  // ========================================\n  // Token System\n  // ========================================\n  tokens: {\n    xPNTsFactory: {\n      name: 'xPNTsFactory',\n      version: '2.0.0',\n      versionCode: 20000,\n      deployedAt: '2025-11-01',\n      address: TOKEN_ADDRESSES.xPNTsFactory,\n      features: [\n        'VERSION interface',\n        'Unified architecture',\n        'Gas token creation',\n        'Community-specific tokens',\n        'Auto-approved spenders',\n      ],\n    } as ContractVersion,\n\n    mySBT: {\n      name: 'MySBT',\n      version: '2.4.5',\n      versionCode: 20405,\n      deployedAt: '2024-11-24',\n      address: CORE_ADDRESSES.mySBT,\n      features: [\n        'IVersioned interface: version() returns 2004005, versionString() returns \"v2.4.5\"',\n        'VERSION constants: VERSION=\"2.4.5\", VERSION_CODE=20405',\n        'NFT architecture refactor',\n        'Soulbound token (SBT)',\n        'Time-based reputation',\n        'Membership management',\n        'GToken mint fee (burn)',\n        'safeMint() - DAO-only faucet minting',\n        'mintWithAutoStake() - FIXED: correct token transfer order for stake + burn',\n        'airdropMint() - NEW: Operator-paid batch minting (no user approval needed)',\n        'Operator pays all costs: 0.4 GT per user (0.1 burn + 0.3 stake)',\n        'True airdrop: Uses stakeFor() to stake on behalf of users',\n        'Idempotent: Safe to call multiple times (adds membership if SBT exists)',\n        'Size optimized: 21KB bytecode (-21% vs v2.4.4, under 24KB limit)',\n        'SuperPaymaster V2.3.3 integration: registerSBTHolder() after mint, removeSBTHolder() before burn',\n        'Graceful degradation: try/catch for optional external calls',\n        'Fully tested: 14/14 tests passed including IVersioned interface',\n      ],\n    } as ContractVersion,\n  },\n\n  // ========================================\n  // Test Tokens (For Development & Testing)\n  // ========================================\n  testTokens: {\n    aPNTs: {\n      name: 'aPNTs',\n      version: '2.0.0',\n      versionCode: 20000,\n      deployedAt: '2025-11-01',\n      address: TEST_TOKEN_ADDRESSES.aPNTs,\n      features: [\n        'VERSION interface',\n        'AAStar community gas token',\n        'Test token for development',\n        'Auto-approved spenders',\n      ],\n    } as ContractVersion,\n\n    bPNTs: {\n      name: 'bPNTs',\n      version: '2.0.0',\n      versionCode: 20000,\n      deployedAt: '2025-11-03',\n      address: TEST_TOKEN_ADDRESSES.bPNTs,\n      features: [\n        'VERSION interface',\n        'BreadCommunity gas token',\n        'Test token for development',\n        'Auto-approved spenders',\n      ],\n    } as ContractVersion,\n  },\n\n  // ========================================\n  // Monitoring System\n  // ========================================\n  monitoring: {\n    dvtValidator: {\n      name: 'DVTValidator',\n      version: '2.0.0',\n      versionCode: 20000,\n      deployedAt: '2025-11-01',\n      address: MONITORING_ADDRESSES.dvtValidator,\n      features: [\n        'VERSION interface',\n        'Distributed validator technology',\n        'Validator set management',\n        'Threshold validation',\n      ],\n    } as ContractVersion,\n\n    blsAggregator: {\n      name: 'BLSAggregator',\n      version: '2.0.0',\n      versionCode: 20000,\n      deployedAt: '2025-11-01',\n      address: MONITORING_ADDRESSES.blsAggregator,\n      features: [\n        'VERSION interface',\n        'BLS signature aggregation',\n        'Multi-signature support',\n        'Gas optimization',\n      ],\n    } as ContractVersion,\n  },\n} as const;\n\n/**\n * Get all V2 contracts with VERSION interface\n *\n * @returns Array of all V2 contract versions\n *\n * @example\n * ```ts\n * const allV2Contracts = getAllV2Contracts();\n * for (const contract of allV2Contracts) {\n *   console.log(`${contract.name} v${contract.version} at ${contract.address}`);\n * }\n * ```\n */\nexport function getAllV2Contracts(): ContractVersion[] {\n  const contracts: ContractVersion[] = [];\n\n  // Core system\n  contracts.push(SEPOLIA_V2_VERSIONS.core.gToken);\n  contracts.push(SEPOLIA_V2_VERSIONS.core.superPaymaster);\n  contracts.push(SEPOLIA_V2_VERSIONS.core.registry);\n  contracts.push(SEPOLIA_V2_VERSIONS.core.gTokenStaking);\n  contracts.push(SEPOLIA_V2_VERSIONS.core.paymasterFactory);\n\n  // Token system\n  contracts.push(SEPOLIA_V2_VERSIONS.tokens.xPNTsFactory);\n  contracts.push(SEPOLIA_V2_VERSIONS.tokens.mySBT);\n\n  // Test tokens\n  contracts.push(SEPOLIA_V2_VERSIONS.testTokens.aPNTs);\n  contracts.push(SEPOLIA_V2_VERSIONS.testTokens.bPNTs);\n\n  // Monitoring system\n  contracts.push(SEPOLIA_V2_VERSIONS.monitoring.dvtValidator);\n  contracts.push(SEPOLIA_V2_VERSIONS.monitoring.blsAggregator);\n\n  return contracts;\n}\n\n/**\n * Get V2 contract by name\n *\n * @param name - Contract name\n * @returns Contract version info or undefined\n *\n * @example\n * ```ts\n * const contract = getV2ContractByName('SuperPaymasterV2');\n * if (contract) {\n *   console.log(`Version: ${contract.version}`);\n * }\n * ```\n */\nexport function getV2ContractByName(name: string): ContractVersion | undefined {\n  const all = getAllV2Contracts();\n  return all.find(c => c.name === name);\n}\n\n/**\n * Get V2 contract by address\n *\n * @param address - Contract address (case-insensitive)\n * @returns Contract version info or undefined\n *\n * @example\n * ```ts\n * const contract = getV2ContractByAddress('0xB97A20aca3D6770Deca299a1aD9DAFb12d1e5eCf');\n * if (contract) {\n *   console.log(`Found: ${contract.name} v${contract.version}`);\n * }\n * ```\n */\nexport function getV2ContractByAddress(address: string): ContractVersion | undefined {\n  const all = getAllV2Contracts();\n  return all.find(c => c.address.toLowerCase() === address.toLowerCase());\n}\n\n/**\n * Check if an address is a V2 contract\n *\n * @param address - Contract address to check\n * @returns True if address is a V2 contract\n *\n * @example\n * ```ts\n * if (isV2Contract('0xB97A20aca3D6770Deca299a1aD9DAFb12d1e5eCf')) {\n *   console.log('This is a V2 contract with VERSION interface');\n * }\n * ```\n */\nexport function isV2Contract(address: string): boolean {\n  return getV2ContractByAddress(address) !== undefined;\n}\n\n/**\n * Get all V2 contracts deployed on a specific date\n *\n * @param date - Deployment date (YYYY-MM-DD)\n * @returns Array of contracts deployed on that date\n *\n * @example\n * ```ts\n * const contracts = getV2ContractsByDate('2025-11-01');\n * console.log(`${contracts.length} contracts deployed on 2025-11-01`);\n * ```\n */\nexport function getV2ContractsByDate(date: string): ContractVersion[] {\n  const all = getAllV2Contracts();\n  return all.filter(c => c.deployedAt === date);\n}\n\n/**\n * V2 Contract Summary\n */\nexport const V2_SUMMARY = {\n  totalContracts: 11,\n  categories: {\n    core: 5, // GToken, SuperPaymasterV2, Registry, GTokenStaking, PaymasterFactory\n    tokens: 2, // xPNTsFactory, MySBT\n    testTokens: 2, // aPNTs, bPNTs\n    monitoring: 2, // DVTValidator, BLSAggregator\n  },\n  latestDeployment: '2025-11-09',\n  allContractsHaveVersion: true, // All V2 contracts now have VERSION interface\n} as const;\n","/**\n * Blockchain Network Configuration\n */\n\nexport const NETWORKS = {\n  sepolia: {\n    chainId: 11155111,\n    name: 'Sepolia',\n    rpcUrl: 'https://rpc.sepolia.org',\n    blockExplorer: 'https://sepolia.etherscan.io',\n    nativeCurrency: {\n      name: 'Sepolia ETH',\n      symbol: 'ETH',\n      decimals: 18,\n    },\n  },\n  anvil: {\n    chainId: 31337,\n    name: 'Anvil',\n    rpcUrl: 'http://127.0.0.1:8545',\n    blockExplorer: '',\n    nativeCurrency: {\n      name: 'ETH',\n      symbol: 'ETH',\n      decimals: 18,\n    },\n  },\n  optimism: {\n    chainId: 10,\n    name: 'Optimism',\n    rpcUrl: 'https://mainnet.optimism.io',\n    blockExplorer: 'https://optimistic.etherscan.io',\n    nativeCurrency: {\n      name: 'Ether',\n      symbol: 'ETH',\n      decimals: 18,\n    },\n  },\n  'op-sepolia': {\n    chainId: 11155420,\n    name: 'Optimism Sepolia',\n    rpcUrl: 'https://sepolia.optimism.io',\n    blockExplorer: 'https://sepolia-optimism.etherscan.io',\n    nativeCurrency: {\n      name: 'Sepolia Ether',\n      symbol: 'ETH',\n      decimals: 18,\n    },\n  },\n} as const;\n\nexport type SupportedNetwork = keyof typeof NETWORKS;\n\n/**\n * Get network configuration\n *\n * @param network - Network name\n * @returns Network configuration\n *\n * @example\n * ```ts\n * const network = getNetwork('sepolia');\n * console.log(network.chainId); // 11155111\n * ```\n */\nexport function getNetwork(network: SupportedNetwork) {\n  return NETWORKS[network];\n}\n\n/**\n * Get RPC URL for a network\n *\n * @param network - Network name\n * @returns Public RPC URL\n *\n * @example\n * ```ts\n * const rpcUrl = getRpcUrl('sepolia');\n * ```\n */\nexport function getRpcUrl(network: SupportedNetwork) {\n  return NETWORKS[network].rpcUrl;\n}\n\n/**\n * Get block explorer URL\n *\n * @param network - Network name\n * @returns Block explorer base URL\n *\n * @example\n * ```ts\n * const explorer = getBlockExplorer('sepolia');\n * // 'https://sepolia.etherscan.io'\n * ```\n */\nexport function getBlockExplorer(network: SupportedNetwork) {\n  return NETWORKS[network].blockExplorer;\n}\n\n/**\n * Get transaction URL on block explorer\n *\n * @param network - Network name\n * @param txHash - Transaction hash\n * @returns Full transaction URL\n *\n * @example\n * ```ts\n * const url = getTxUrl('sepolia', '0x123...');\n * // 'https://sepolia.etherscan.io/tx/0x123...'\n * ```\n */\nexport function getTxUrl(network: SupportedNetwork, txHash: string): string {\n  return `${getBlockExplorer(network)}/tx/${txHash}`;\n}\n\n/**\n * Get address URL on block explorer\n *\n * @param network - Network name\n * @param address - Contract or wallet address\n * @returns Full address URL\n *\n * @example\n * ```ts\n * const url = getAddressUrl('sepolia', '0xabc...');\n * // 'https://sepolia.etherscan.io/address/0xabc...'\n * ```\n */\nexport function getAddressUrl(network: SupportedNetwork, address: string): string {\n  return `${getBlockExplorer(network)}/address/${address}`;\n}\n\n/**\n * Get chain ID for a network\n *\n * @param network - Network name\n * @returns Chain ID number\n *\n * @example\n * ```ts\n * const chainId = getChainId('sepolia');\n * // 11155111\n * ```\n */\nexport function getChainId(network: SupportedNetwork): number {\n  return NETWORKS[network].chainId;\n}\n","/**\n * Community Configurations\n * Registry v2.2.0 deployed on 2025-11-08\n */\n\nimport { TEST_COMMUNITIES, TEST_TOKEN_ADDRESSES, CORE_ADDRESSES, TOKEN_ADDRESSES } from './contract-addresses.js';\n\nexport enum NodeType {\n  PAYMASTER_AOA = 0,    // AOA independent Paymaster\n  PAYMASTER_SUPER = 1,  // SuperPaymaster v2 shared mode\n  ANODE = 2,            // Community computation node\n  KMS = 3,              // Key Management Service node\n}\n\nexport interface CommunityConfig {\n  name: string;\n  ensName: string;\n  address: string;\n  xPNTsToken: string;\n  supportedSBTs: string[];\n  nodeType: NodeType;\n  isActive: boolean;\n  allowPermissionlessMint: boolean;\n  stakedAmount: string;\n  registeredAt: number;\n}\n\n/**\n * AAstar Community\n * - SuperPaymaster shared mode (AOA+)\n * - Uses aPNTs for gas payments\n * - MySBT for identity verification\n */\nexport const AASTAR_COMMUNITY: CommunityConfig = {\n  name: 'AAstar Community',\n  ensName: 'aastar.eth',\n  address: TEST_COMMUNITIES.aastar,\n  xPNTsToken: TEST_TOKEN_ADDRESSES.aPNTs,\n  supportedSBTs: [CORE_ADDRESSES.mySBT],\n  nodeType: NodeType.PAYMASTER_SUPER,\n  isActive: true,\n  allowPermissionlessMint: true,\n  stakedAmount: '50', // 50 GT\n  registeredAt: 1762588812, // 2025-11-08\n};\n\n/**\n * Bread Community\n * - Independent AOA Paymaster mode\n * - Uses bPNTs for gas payments\n * - MySBT for identity verification\n */\nexport const BREAD_COMMUNITY: CommunityConfig = {\n  name: 'Bread Community',\n  ensName: 'bread.eth',\n  address: TEST_COMMUNITIES.bread,\n  xPNTsToken: TEST_TOKEN_ADDRESSES.bPNTs,\n  supportedSBTs: [CORE_ADDRESSES.mySBT],\n  nodeType: NodeType.PAYMASTER_AOA,\n  isActive: true,\n  allowPermissionlessMint: false,\n  stakedAmount: '50', // 50 GT\n  registeredAt: 1762588812, // 2025-11-08\n};\n\n/**\n * All communities indexed by address\n */\nexport const COMMUNITIES: Record<string, CommunityConfig> = {\n  [TEST_COMMUNITIES.aastar]: AASTAR_COMMUNITY,\n  [TEST_COMMUNITIES.bread]: BREAD_COMMUNITY,\n};\n\n/**\n * Get community configuration by address\n */\nexport function getCommunityConfig(address: string): CommunityConfig | undefined {\n  return COMMUNITIES[address.toLowerCase()];\n}\n\n/**\n * Get all community configurations\n */\nexport function getAllCommunityConfigs(): CommunityConfig[] {\n  return Object.values(COMMUNITIES);\n}\n\n/**\n * Check if address is a registered community\n */\nexport function isRegisteredCommunity(address: string): boolean {\n  return address.toLowerCase() in COMMUNITIES;\n}\n","import { createPublicClient, http, type Chain } from 'viem';\nimport { type PublicClient } from './clients/doc-types.js';\nimport { sepolia, optimism } from 'viem/chains';\n\n/**\n * Creates a standard AAStar public client for any given chain.\n */\nexport function createAAStarPublicClient(rpcUrl: string, chain: Chain = sepolia): PublicClient {\n    return createPublicClient({\n        chain,\n        transport: http(rpcUrl)\n    }) as unknown as PublicClient;\n}\n","import { type Address, type Chain, type Transport, type Account } from 'viem';\nimport { type PublicClient, type WalletClient } from './doc-types.js';\nimport { type ClientConfig } from './types.js';\n\nexport abstract class BaseClient {\n    public client: WalletClient;\n    public publicClient?: PublicClient;\n    protected registryAddress?: Address;\n    protected gTokenAddress?: Address;\n    protected gTokenStakingAddress?: Address;\n    protected paymasterFactoryAddress?: Address;\n    protected entryPointAddress?: Address;\n\n    constructor(config: ClientConfig) {\n        if (!config.client) {\n            throw new Error('WalletClient is required for Business Clients');\n        }\n        if (!config.client.account) {\n            throw new Error('WalletClient must have an account attached');\n        }\n\n        this.client = config.client;\n        this.publicClient = config.publicClient;\n        this.registryAddress = config.registryAddress;\n        this.gTokenAddress = config.gTokenAddress;\n        this.gTokenStakingAddress = config.gTokenStakingAddress;\n        this.paymasterFactoryAddress = config.paymasterFactoryAddress;\n        this.entryPointAddress = config.entryPointAddress;\n    }\n\n    /**\n     * Get the account address of the connected wallet\n     */\n    public getAddress(): Address {\n        return this.client.account!.address;\n    }\n\n    /**\n     * Helper to ensure public client exists or fallback to wallet client (if it supports read)\n     */\n    public getStartPublicClient(): PublicClient | WalletClient {\n        return this.publicClient || this.client;\n    }\n\n    protected requireRegistry(): Address {\n        if (!this.registryAddress) {\n            throw new Error('Registry address is not configured for this client');\n        }\n        return this.registryAddress;\n    }\n\n    protected requireGToken(): Address {\n        if (!this.gTokenAddress) {\n            throw new Error('GToken address is not configured for this client');\n        }\n        return this.gTokenAddress;\n    }\n\n    protected requireGTokenStaking(): Address {\n        if (!this.gTokenStakingAddress) {\n            throw new Error('GTokenStaking address is not configured for this client');\n        }\n        return this.gTokenStakingAddress;\n    }\n\n    protected requirePaymasterFactory(): Address {\n        if (!this.paymasterFactoryAddress) {\n            throw new Error('PaymasterFactory address is not configured for this client');\n        }\n        return this.paymasterFactoryAddress;\n    }\n\n    protected requireEntryPoint(): Address {\n        if (!this.entryPointAddress) {\n            throw new Error('EntryPoint address is not configured for this client');\n        }\n        return this.entryPointAddress;\n    }\n}\n","/**\n * Error handling utilities for SDK\n * Provides consistent error types and error transformation from viem\n */\n\nexport enum ErrorCode {\n  // Validation Errors (1xxx)\n  INVALID_ADDRESS = 'E1001',\n  INVALID_AMOUNT = 'E1002',\n  INVALID_PARAMETER = 'E1003',\n  REQUIRED_PARAMETER = 'E1004',\n  INVALID_HEX = 'E1005',\n  \n  // Contract Errors (2xxx)\n  CONTRACT_REVERT = 'E2001',\n  INSUFFICIENT_BALANCE = 'E2002',\n  UNAUTHORIZED = 'E2003',\n  PAUSED = 'E2004',\n  ROLE_NOT_CONFIGURED = 'E2005',\n  TOKEN_NOT_FOUND = 'E2006',\n  \n  // Network Errors (3xxx)\n  NETWORK_TIMEOUT = 'E3001',\n  RPC_ERROR = 'E3002',\n  CONNECTION_REFUSED = 'E3003',\n  \n  // SDK Errors (4xxx)\n  NOT_IMPLEMENTED = 'E4001',\n  INTERNAL_ERROR = 'E4002',\n  INVALID_CONFIGURATION = 'E4003',\n  \n  // Bundler & AA Errors (5xxx)\n  BUNDLER_ERROR = 'E5001',\n  BUNDLER_USER_OP_REVERTED = 'E5002',\n  BUNDLER_SIGNATURE_INVALID = 'E5003',\n  BUNDLER_INSUFFICIENT_FUNDS = 'E5004',\n  BUNDLER_NONCE_TOO_LOW = 'E5005',\n  BUNDLER_RATE_LIMIT = 'E5006',\n}\n\n/**\n * Base SDK error class with structured error information\n */\nexport class AAStarError extends Error {\n  constructor(\n    public code: ErrorCode,\n    message: string,\n    public cause?: Error,\n    public data?: unknown\n  ) {\n    super(message);\n    this.name = 'AAStarError';\n    \n    // Maintains proper stack trace\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, AAStarError);\n    }\n  }\n  \n  /**\n   * Convert viem error to AAStarError with appropriate error code\n   */\n  static fromViemError(error: Error, context?: string): AAStarError {\n    const msg = error.message.toLowerCase();\n    \n    // Contract revert patterns\n    if (msg.includes('insufficient balance') || msg.includes('insufficient funds')) {\n      return new AAStarError(\n        ErrorCode.INSUFFICIENT_BALANCE,\n        'Insufficient token balance for this operation',\n        error\n      );\n    }\n    \n    if (msg.includes('paused')) {\n      return new AAStarError(\n        ErrorCode.PAUSED,\n        'Contract is currently paused',\n        error\n      );\n    }\n    \n    if (msg.includes('unauthorized') || msg.includes('not authorized')) {\n      return new AAStarError(\n        ErrorCode.UNAUTHORIZED,\n        'Unauthorized to perform this action',\n        error\n      );\n    }\n    \n    if (msg.includes('role not configured')) {\n      return new AAStarError(\n        ErrorCode.ROLE_NOT_CONFIGURED,\n        'Role has not been configured in registry',\n        error\n      );\n    }\n    \n    // Network errors\n    if (msg.includes('timeout') || msg.includes('etimedout')) {\n      return new AAStarError(\n        ErrorCode.NETWORK_TIMEOUT,\n        'Network request timed out',\n        error\n      );\n    }\n    \n    if (msg.includes('econnrefused') || msg.includes('connection refused')) {\n      return new AAStarError(\n        ErrorCode.CONNECTION_REFUSED,\n        'Could not connect to RPC endpoint',\n        error\n      );\n    }\n    \n    if (msg.includes('rpc')) {\n      return new AAStarError(\n        ErrorCode.RPC_ERROR,\n        'RPC request failed',\n        error\n      );\n    }\n    \n    // Default to contract revert. Preserve the underlying viem detail\n    // (shortMessage / details) in the message — otherwise a transient RPC hiccup\n    // and a genuine on-chain revert both collapse to an opaque \"Contract call failed\",\n    // which is impossible to debug. The original error is still attached as the cause.\n    const detail =\n      (error as { shortMessage?: string }).shortMessage ||\n      (error as { details?: string }).details ||\n      error.message;\n    return new AAStarError(\n      ErrorCode.CONTRACT_REVERT,\n      context\n        ? `Contract call failed: ${context}${detail && detail !== context ? ` — ${detail}` : ''}`\n        : error.message,\n      error\n    );\n  }\n\n  /**\n   * Parse bundler error strings into structured AAStarError\n   */\n  static fromBundlerError(error: any): AAStarError {\n    const message = typeof error === 'string' ? error : (error.message || JSON.stringify(error));\n    const code = error.code;\n    const msgLower = message.toLowerCase();\n\n    // Mapping ERC-4337 Error Codes (AAxx)\n    if (msgLower.includes('aa10') || msgLower.includes('invalid signature')) {\n        return new AAStarError(ErrorCode.BUNDLER_SIGNATURE_INVALID, `AA10: Invalid UserOperation signature`, error);\n    }\n    if (msgLower.includes('aa21') || msgLower.includes('aa25') || msgLower.includes('reverted')) {\n        return new AAStarError(ErrorCode.BUNDLER_USER_OP_REVERTED, `AA2x: UserOperation execution reverted`, error);\n    }\n    if (msgLower.includes('aa31') || msgLower.includes('aa33') || msgLower.includes('paymaster deposit too low')) {\n        return new AAStarError(ErrorCode.BUNDLER_INSUFFICIENT_FUNDS, `AA3x: Paymaster or account insufficient funds`, error);\n    }\n    if (msgLower.includes('aa24') || msgLower.includes('nonce too low')) {\n        return new AAStarError(ErrorCode.BUNDLER_NONCE_TOO_LOW, `AA24: Nonce too low or already used`, error);\n    }\n    if (code === -32604 || msgLower.includes('rate limit')) {\n        return new AAStarError(ErrorCode.BUNDLER_RATE_LIMIT, `Bundler rate limit exceeded (429)`, error);\n    }\n\n    return new AAStarError(ErrorCode.BUNDLER_ERROR, `Bundler error: ${message}`, error);\n  }\n  \n  /**\n   * Convert to JSON for logging/reporting\n   */\n  toJSON() {\n    return {\n      name: this.name,\n      code: this.code,\n      message: this.message,\n      data: this.data,\n      cause: this.cause?.message,\n      stack: this.stack,\n    };\n  }\n}\n","import { type Address, type Hex } from 'viem';\nimport { AAStarError } from '../errors/index.js';\n\nexport interface UserOperationV07 {\n    sender: Address;\n    nonce: bigint;\n    initCode: Hex;\n    callData: Hex;\n    accountGasLimits: Hex;\n    preVerificationGas: bigint;\n    gasFees: Hex;\n    paymasterAndData: Hex;\n    signature: Hex;\n}\n\nexport interface BundlerResponse<T> {\n    jsonrpc: '2.0';\n    id: number;\n    result?: T;\n    error?: {\n        code: number;\n        message: string;\n        data?: any;\n    };\n}\n\n/**\n * BundlerClient\n * Low-level JSON-RPC client for ERC-4337 Bundlers.\n */\nexport class BundlerClient {\n    constructor(\n        public readonly url: string,\n        public readonly entryPoint: Address\n    ) {}\n\n    /**\n     * Standard JSON-RPC call helper\n     */\n    private async rpcCall<T>(method: string, params: any[]): Promise<T> {\n        const payload = {\n            jsonrpc: '2.0',\n            id: Date.now(),\n            method,\n            params\n        };\n\n        return this.executeWithRetry(async () => {\n            const response = await fetch(this.url, {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify(payload, (_, v) => \n                    typeof v === 'bigint' ? '0x' + v.toString(16) : v\n                )\n            });\n\n            if (!response.ok) {\n                const text = await response.text();\n                throw new Error(`HTTP ${response.status}: ${text}`);\n            }\n\n            const data = await response.json() as BundlerResponse<T>;\n            \n            if (data.error) {\n                throw AAStarError.fromBundlerError(data.error);\n            }\n\n            if (data.result === undefined) {\n                throw new AAStarError(\n                    (data as any).code || 'INTERNAL_ERROR' as any,\n                    `Bundler returned empty result for ${method}`\n                );\n            }\n\n            return data.result;\n        });\n    }\n\n    /**\n     * Exponential Backoff with Jitter\n     */\n    private async executeWithRetry<T>(operation: () => Promise<T>, maxRetries = 3): Promise<T> {\n        let lastError: any;\n        for (let attempt = 0; attempt <= maxRetries; attempt++) {\n            try {\n                return await operation();\n            } catch (error: any) {\n                lastError = error;\n                // Only retry on rate limits or network issues\n                const isRetryable = error.code === 'E5006' || // BUNDLER_RATE_LIMIT\n                                  error.code === 'E3001' || // NETWORK_TIMEOUT\n                                  error.code === 'E3003' || // CONNECTION_REFUSED\n                                  error.message?.includes('HTTP 429');\n\n                if (!isRetryable || attempt === maxRetries) break;\n\n                const delay = Math.min(1000 * Math.pow(2, attempt) + Math.random() * 1000, 10000);\n                console.log(`[BundlerClient] 🔄 Retryable error detected. Attempt ${attempt + 1}/${maxRetries}. Retrying in ${Math.round(delay)}ms...`);\n                await new Promise(resolve => setTimeout(resolve, delay));\n            }\n        }\n        throw lastError;\n    }\n\n    /**\n     * eth_sendUserOperation\n     */\n    async sendUserOperation(userOp: UserOperationV07): Promise<Hex> {\n        return this.rpcCall<Hex>('eth_sendUserOperation', [userOp, this.entryPoint]);\n    }\n\n    /**\n     * eth_estimateUserOperationGas\n     */\n    async estimateUserOperationGas(userOp: Partial<UserOperationV07>): Promise<any> {\n        return this.rpcCall<any>('eth_estimateUserOperationGas', [userOp, this.entryPoint]);\n    }\n\n    /**\n     * eth_getUserOperationReceipt (v0.7 support prep)\n     */\n    async getUserOperationReceipt(hash: Hex): Promise<any> {\n        return this.rpcCall<any>('eth_getUserOperationReceipt', [hash]);\n    }\n\n    /**\n     * eth_getUserOperationByHash\n     */\n    async getUserOperationByHash(hash: Hex): Promise<any> {\n        return this.rpcCall<any>('eth_getUserOperationByHash', [hash]);\n    }\n}\n","/**\n * Validation utilities for SDK parameters\n * Provides early error detection before contract calls\n */\n\nimport { isAddress } from 'viem';\nimport type { Address } from 'viem';\n\nexport class ValidationError extends Error {\n  constructor(\n    public field: string,\n    message: string,\n    public code: string = 'VALIDATION_ERROR'\n  ) {\n    super(`Validation failed for ${field}: ${message}`);\n    this.name = 'ValidationError';\n  }\n}\n\n/**\n * Validates Ethereum address format\n * @throws {ValidationError} if address is invalid\n */\nexport function validateAddress(addr: unknown, fieldName: string): asserts addr is Address {\n  if (typeof addr !== 'string' || !isAddress(addr)) {\n    throw new ValidationError(\n      fieldName,\n      `Invalid Ethereum address format. Got: ${addr}`,\n      'INVALID_ADDRESS'\n    );\n  }\n}\n\n/**\n * Validates bigint amount is non-negative\n * @throws {ValidationError} if amount is negative\n */\nexport function validateAmount(amount: bigint, fieldName: string): void {\n  if (amount < 0n) {\n    throw new ValidationError(\n      fieldName,\n      `Amount cannot be negative. Got: ${amount}`,\n      'INVALID_AMOUNT'\n    );\n  }\n}\n\n/**\n * Validates bigint is positive (> 0)\n * @throws {ValidationError} if value is zero or negative\n */\nexport function validatePositive(value: bigint, fieldName: string): void {\n  if (value <= 0n) {\n    throw new ValidationError(\n      fieldName,\n      `Value must be positive. Got: ${value}`,\n      'INVALID_VALUE'\n    );\n  }\n}\n\n/**\n * Validates hex string format\n * @throws {ValidationError} if not valid hex\n */\nexport function validateHex(data: unknown, fieldName: string): asserts data is `0x${string}` {\n  if (typeof data !== 'string' || !data.startsWith('0x')) {\n    throw new ValidationError(\n      fieldName,\n      `Must be a hex string starting with 0x. Got: ${data}`,\n      'INVALID_HEX'\n    );\n  }\n}\n\n/**\n * Validates required parameter is present\n * @throws {ValidationError} if value is null or undefined\n */\nexport function validateRequired<T>(value: T | null | undefined, fieldName: string): asserts value is T {\n  if (value === null || value === undefined) {\n    throw new ValidationError(\n      fieldName,\n      'Required parameter is missing',\n      'REQUIRED_PARAMETER'\n    );\n  }\n}\n\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\n/**\n * Validates that a contract address is not the zero address (i.e. is deployed on this network)\n * @throws {ValidationError} if address is zero\n */\nexport function validateDeployedAddress(address: Address, contractName: string): void {\n  if (address === ZERO_ADDRESS) {\n    throw new ValidationError(\n      contractName,\n      `${contractName} is not deployed on this network`,\n      'CONTRACT_NOT_DEPLOYED'\n    );\n  }\n}\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, type AbiEvent, type BlockNumber, type BlockTag, keccak256, toBytes, decodeFunctionData, decodeAbiParameters, encodeAbiParameters } from 'viem';\nimport { RegistryABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateAmount } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\n// ABI-parameter layout of Registry.sol CommunityRoleData, used to decode the `roleData`\n// recovered from registerRole calldata. This is an abi.encode struct (NOT a contract ABI),\n// so it is defined locally rather than imported from a *.json contract ABI.\nconst COMMUNITY_ROLE_DATA_PARAMS = [{\n    type: 'tuple',\n    components: [\n        { name: 'name', type: 'string' },\n        { name: 'ensName', type: 'string' },\n        { name: 'website', type: 'string' },\n        { name: 'description', type: 'string' },\n        { name: 'logoURI', type: 'string' },\n        { name: 'stakeAmount', type: 'uint256' }\n    ]\n}] as const;\n\n/** The `roleData` payload a ROLE_COMMUNITY registration must carry (abi-encoded into the bytes). */\nexport interface CommunityRoleData {\n    name: string;\n    ensName?: string;\n    website?: string;\n    description?: string;\n    logoURI?: string;\n    /** GToken to lock for the COMMUNITY role (must match the amount actually staked). */\n    stakeAmount: bigint;\n}\n\n/**\n * Encode the `roleData` bytes for `registerRole(ROLE_COMMUNITY, user, roleData)`.\n *\n * The deployed Registry abi-decodes `roleData` into its `CommunityRoleData` struct, so passing `'0x'`\n * (empty) makes that decode revert with NO reason — the bare `execution reverted` seen when a funded\n * EOA tries to self-register (aastar-sdk#169). Always build the bytes with this helper.\n */\nexport function encodeCommunityRoleData(data: CommunityRoleData): Hex {\n    return encodeAbiParameters(COMMUNITY_ROLE_DATA_PARAMS, [{\n        name: data.name,\n        ensName: data.ensName ?? '',\n        website: data.website ?? '',\n        description: data.description ?? '',\n        logoURI: data.logoURI ?? '',\n        stakeAmount: data.stakeAmount,\n    }]);\n}\n\n/**\n * Reconstruct the ACTIVE members of a role via event indexing.\n *\n * The deployed v5 Registry has NO `getRoleMembers` getter (storage was slimmed;\n * members are not enumerable on-chain). Members are recovered from the membership\n * lifecycle events: `RoleRegistered` (join, emitted by both `registerRole` and\n * `safeMintForRole`) minus `RoleExited` (exit). Per user we keep only the LATEST\n * lifecycle event (ordered by blockNumber, then logIndex) so a join -> exit ->\n * re-join sequence — which naive set subtraction would mishandle — resolves to\n * \"active\". (RoleRevoked / RoleGranted are OZ AccessControl events with different\n * arg names and are NOT part of the registerRole/exitRole lifecycle.)\n */\nconst computeActiveRoleMembers = async (\n    client: PublicClient,\n    address: Address,\n    roleId: Hex,\n    fromBlock?: BlockNumber | BlockTag,\n    toBlock?: BlockNumber | BlockTag\n): Promise<Address[]> => {\n    const findEvent = (name: string): AbiEvent => {\n        const ev = (RegistryABI as readonly any[]).find(\n            (item) => item.type === 'event' && item.name === name\n        ) as AbiEvent | undefined;\n        if (!ev) {\n            throw new Error(`${name} event not found in Registry ABI`);\n        }\n        return ev;\n    };\n    const roleRegisteredEvent = findEvent('RoleRegistered');\n    const roleExitedEvent = findEvent('RoleExited');\n\n    const range = {\n        address,\n        fromBlock: fromBlock ?? 'earliest',\n        toBlock: toBlock ?? 'latest'\n    } as const;\n\n    const [joinLogs, exitLogs] = await Promise.all([\n        client.getLogs({ ...range, event: roleRegisteredEvent, args: { roleId } } as any),\n        client.getLogs({ ...range, event: roleExitedEvent, args: { roleId } } as any)\n    ]);\n\n    type Lifecycle = { active: boolean; blockNumber: bigint; logIndex: number };\n    const latest = new Map<string, Lifecycle>();\n    const addressByKey = new Map<string, Address>();\n\n    const ingest = (logs: readonly any[], active: boolean) => {\n        for (const log of logs) {\n            const user = (log.args?.user ?? '') as string;\n            if (!user) continue;\n            const key = user.toLowerCase();\n            // We query a confirmed range (toBlock defaults to 'latest' = last mined\n            // block), so blockNumber/logIndex are always present. The `?? 0n`/`?? 0`\n            // is a defensive fallback that orders any anomalous null entry as OLDEST\n            // (lowest priority), so a real confirmed event always wins the latest-slot.\n            const blockNumber = (log.blockNumber ?? 0n) as bigint;\n            const logIndex = Number(log.logIndex ?? 0);\n            const prev = latest.get(key);\n            if (!prev || blockNumber > prev.blockNumber ||\n                (blockNumber === prev.blockNumber && logIndex >= prev.logIndex)) {\n                latest.set(key, { active, blockNumber, logIndex });\n                addressByKey.set(key, user as Address); // preserve checksummed address\n            }\n        }\n    };\n\n    ingest(joinLogs, true);\n    ingest(exitLogs, false);\n\n    const members: Address[] = [];\n    for (const [key, state] of latest) {\n        if (state.active) {\n            members.push(addressByKey.get(key) as Address);\n        }\n    }\n    return members;\n};\n\nexport type RoleConfigDetailed = {\n    minStake: bigint;\n    ticketPrice: bigint;\n    slashThreshold: number;\n    slashBase: number;\n    slashInc: number;\n    slashMax: number;\n    exitFeePercent: number;\n    isActive: boolean;\n    minExitFee: bigint;\n    description: string;\n    owner: Address;\n    roleLockDuration: bigint;\n};\n\n/**\n * Rich community metadata reconstructed from on-chain data.\n *\n * The deployed v5 Registry stores community `roleData` only in an internal mapping\n * with NO public getter, so this profile is recovered via the event->calldata\n * back-trace pattern: locate the `RoleRegistered(ROLE_COMMUNITY, community)` log,\n * fetch the originating transaction, then decode its `registerRole` calldata to\n * extract the submitted `roleData` struct.\n */\nexport type CommunityProfile = {\n    name: string;\n    ensName: string;\n    website: string;\n    description: string;\n    logoURI: string;\n    stakeAmount: bigint;\n    /** burnAmount from the RoleRegistered event. */\n    burnAmount: bigint;\n    /** Block timestamp recorded in the RoleRegistered event. */\n    registeredAt: bigint;\n    /** Transaction hash that registered the community (calldata source). */\n    txHash: Hash;\n    /** Raw ABI-encoded roleData bytes from the registration calldata. */\n    rawRoleData: Hex;\n};\n\nexport type RegistryActions = {\n    // Role Management\n    configureRole: (args: { roleId: Hex, config: RoleConfigDetailed, account?: Account | Address }) => Promise<Hash>;\n    syncExitFees: (args: { roles: Hex[], account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated The deployed Registry ABI has no `createNewRole` — this wrapper now calls `configureRole(roleId, config)` with `roleOwner` merged into `config.owner`. Prefer {@link configureRole}. */\n    createNewRole: (args: { roleId: Hex, config: RoleConfigDetailed, roleOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    registerRole: (args: { roleId: Hex, user: Address, data: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated The deployed Registry ABI has no `registerRoleSelf` — this wrapper now calls `registerRole(roleId, <caller>, data)` deriving the caller from `account`. Prefer {@link registerRole}. */\n    registerRoleSelf: (args: { roleId: Hex, data: Hex, account?: Account | Address }) => Promise<Hash>;\n    safeMintForRole: (args: { roleId: Hex, user: Address, data: Hex, account?: Account | Address }) => Promise<Hash>;\n    hasRole: (args: { roleId: Hex, user: Address }) => Promise<boolean>;\n    getRoleConfig: (args: { roleId: Hex }) => Promise<RoleConfigDetailed>;\n    /** @deprecated Removed in the v5.x contract refactor — `roleLockDuration` is now a field of the role config. Throws {@link ErrorCode.NOT_IMPLEMENTED}; set it via {@link configureRole} (config.roleLockDuration). */\n    setRoleLockDuration: (args: { roleId: Hex, duration: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — the role owner is now a field of the role config. Throws {@link ErrorCode.NOT_IMPLEMENTED}; set it via {@link configureRole} (config.owner). */\n    setRoleOwner: (args: { roleId: Hex, newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    exitRole: (args: { roleId: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — there is no per-user role-metadata getter. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link getCommunityProfile} (event back-trace) for a community's roleData or {@link getRoleConfig} for role config. */\n    roleMetadata: (args: { roleId: Hex, user: Address }) => Promise<Hex>;\n    \n    // Community Management\n    /** @deprecated The deployed v5 Registry ABI has no `communityByName` function — use {@link getCommunityByName}. This wrapper now delegates to `getCommunityByName` so it no longer reverts on-chain. */\n    communityByName: (args: { name: string }) => Promise<Address>;\n    /** @deprecated The deployed v5 Registry ABI has no `communityByENS` function — use {@link getCommunityByENS}. This wrapper now delegates to `getCommunityByENS` so it no longer reverts on-chain. */\n    communityByENS: (args: { ensName: string }) => Promise<Address>;\n    // On-chain community registry getters (ABI-confirmed: getCommunityByName/getCommunityByENS).\n    getCommunityByName: (args: { name: string }) => Promise<Address>;\n    getCommunityByENS: (args: { ensName: string }) => Promise<Address>;\n    // Stake / membership reads (ABI-confirmed: getRoleStake/getEffectiveStake).\n    getRoleStake: (args: { roleId: Hex, user: Address }) => Promise<bigint>;\n    getEffectiveStake: (args: { user: Address, roleId: Hex }) => Promise<bigint>;\n    // Rich community metadata via event->calldata back-trace (no on-chain getter exists).\n    getCommunityProfile: (args: { community: Address, fromBlock?: BlockNumber | BlockTag, toBlock?: BlockNumber | BlockTag }) => Promise<CommunityProfile | null>;\n    \n    // Credit & Reputation\n    getCreditLimit: (args: { user: Address }) => Promise<bigint>;\n    globalReputation: (args: { user: Address }) => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — there is no append-one `addLevelThreshold` (only the replace-all {@link setLevelThresholds}). Throws {@link ErrorCode.NOT_IMPLEMENTED}; read {@link levelThresholds}, append, and call {@link setLevelThresholds}. */\n    addLevelThreshold: (args: { threshold: bigint, account?: Account | Address }) => Promise<Hash>;\n    batchUpdateGlobalReputation: (args: { proposalId: bigint, users: Address[], newScores: bigint[], epoch: bigint, proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** Set the credit limit for a reputation level/tier (owner-gated). ABI: setCreditTier(uint256 level, uint256 limit). */\n    setCreditTier: (args: { level: bigint, limit: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Replace the full reputation level-threshold array (owner-gated). ABI: setLevelThresholds(uint256[] thresholds). */\n    setLevelThresholds: (args: { thresholds: bigint[], account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Update an operator's per-user blacklist in batch with a proof.\n     * ABI: updateOperatorBlacklist(address operator, address[] users, bool[] statuses, bytes proof).\n     */\n    updateOperatorBlacklist: (args: { operator: Address, users: Address[], statuses: boolean[], proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** Sync a user's role stake from the GTokenStaking contract (staking-gated). ABI: syncStakeFromStaking(address user, bytes32 roleId, uint256 newAmount). */\n    syncStakeFromStaking: (args: { user: Address, roleId: Hex, newAmount: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Monotonic nonce bumped on each operator-blacklist update (view). ABI: blacklistNonce() -> uint256. */\n    blacklistNonce: () => Promise<bigint>;\n    \n    // Contract References\n    setBLSAggregator: (args: { aggregator: Address, account?: Account | Address }) => Promise<Hash>;\n    setMySBT: (args: { sbt: Address, account?: Account | Address }) => Promise<Hash>;\n    setSuperPaymaster: (args: { paymaster: Address, account?: Account | Address }) => Promise<Hash>;\n    setStaking: (args: { staking: Address, account?: Account | Address }) => Promise<Hash>;\n    setReputationSource: (args: { source: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    blsAggregator: () => Promise<Address>;\n    MYSBT: () => Promise<Address>;\n    SUPER_PAYMASTER: () => Promise<Address>;\n    GTOKEN_STAKING: () => Promise<Address>;\n    /** @deprecated Removed in the v5.x contract refactor — there is no single-address `reputationSource` getter (sources are now a set). Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link isReputationSource}({ source }) to test membership. */\n    reputationSource: () => Promise<Address>;\n    isReputationSource: (args: { source: Address }) => Promise<boolean>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed Registry ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    lastReputationEpoch: (args: { user: Address }) => Promise<bigint>;\n\n    // View Functions\n    /** @deprecated The deployed Registry ABI has no `roleConfigs` mapping getter — this wrapper now reads the ABI-confirmed `getRoleConfig(roleId)`. Prefer {@link getRoleConfig}. */\n    roleConfigs: (args: { roleId: Hex }) => Promise<RoleConfigDetailed>;\n    getRoleUserCount: (args: { roleId: Hex }) => Promise<bigint>;\n    /**\n     * Active members of a role, derived by event indexing.\n     *\n     * The deployed v5 Registry slimmed its storage: there is NO `getRoleMembers`\n     * getter in the ABI (members are not enumerable on-chain), so this is reconstructed\n     * from the membership-lifecycle events — `RoleRegistered` (join, emitted by both\n     * `registerRole` and `safeMintForRole`) minus `RoleExited` (exit). For each user we\n     * keep their LATEST lifecycle event (by block number, then log index) so a user who\n     * exited and later re-registered is correctly counted as active.\n     *\n     * ⚠️ The result is only as complete as the underlying `getLogs` response. Many RPC\n     * providers cap the block range or the number of logs returned and may SILENTLY\n     * truncate — in which case the member list will be incomplete with no error. This\n     * helper does NOT paginate. For large histories, pass a bounded `fromBlock`/`toBlock`\n     * window (and page yourself), or use an indexed data source (subgraph/indexer).\n     */\n    getRoleMembers: (args: { roleId: Hex, fromBlock?: BlockNumber | BlockTag, toBlock?: BlockNumber | BlockTag }) => Promise<Address[]>;\n    /**\n     * Count of active members for a role, derived from the same event indexing as\n     * {@link getRoleMembers} (i.e. `getRoleMembers(...).length`).\n     *\n     * NOTE: this differs from {@link getRoleUserCount}, which reads the on-chain\n     * `roleMembers[roleId].length` counter directly. Prefer `getRoleUserCount` when you\n     * only need a count and an authoritative on-chain value is acceptable; use this when\n     * you also need the member addresses or want a count consistent with `getRoleMembers`\n     * over a specific block range. Subject to the same `getLogs` truncation caveat as\n     * {@link getRoleMembers} — prefer `getRoleUserCount` for an authoritative count.\n     */\n    getRoleMemberCount: (args: { roleId: Hex, fromBlock?: BlockNumber | BlockTag, toBlock?: BlockNumber | BlockTag }) => Promise<number>;\n    getUserRoles: (args: { user: Address }) => Promise<Hex[]>;\n    /** @deprecated Removed in the v5.x contract refactor — Registry storage was slimmed and members are not enumerable by index (no `roleMembers(roleId,index)` getter). Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link getRoleMembers} (event-derived) instead. */\n    roleMembers: (args: { roleId: Hex, index: bigint }) => Promise<Address>;\n    /** @deprecated The deployed Registry ABI has no `userRoles(user,index)` indexed getter — this wrapper now reads `getUserRoles(user)` and returns the entry at `index`. Prefer {@link getUserRoles}. */\n    userRoles: (args: { user: Address, index: bigint }) => Promise<Hex>;\n    /** @deprecated The deployed Registry ABI has no `userRoleCount` — this wrapper now returns `getUserRoles(user).length`. Prefer {@link getUserRoles}. (NOTE: distinct from {@link getRoleUserCount}, which counts users of a role.) */\n    userRoleCount: (args: { user: Address }) => Promise<bigint>;\n    creditTierConfig: (args: { tierIndex: bigint }) => Promise<bigint>;\n    levelThresholds: (args: { levelIndex: bigint }) => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — Registry has no exit-fee calculator. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use the GTokenStaking `previewExitFee({ user, roleId })` action instead. */\n    calculateExitFee: (args: { roleId: Hex, amount: bigint }) => Promise<bigint>;\n    /** @deprecated The deployed Registry ABI has no `roleStakes` mapping getter — this wrapper now reads the ABI-confirmed `getRoleStake(roleId, user)`. Prefer {@link getRoleStake}. */\n    roleStakes: (args: { roleId: Hex, user: Address }) => Promise<bigint>;\n    \n    // Constants (Role IDs)\n    ROLE_COMMUNITY: () => Promise<Hex>;\n    ROLE_ENDUSER: () => Promise<Hex>;\n    ROLE_PAYMASTER_SUPER: () => Promise<Hex>;\n    ROLE_PAYMASTER_AOA: () => Promise<Hex>;\n    ROLE_DVT: () => Promise<Hex>;\n    ROLE_KMS: () => Promise<Hex>;\n    ROLE_ANODE: () => Promise<Hex>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // AccessControl\n    /** @deprecated Removed in the v5.x contract refactor — the Registry dropped the OZ AccessControl surface (no `grantRole`). Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link registerRole} to add a user to a role. */\n    grantRole: (args: { roleId: Hex, user: Address, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — the Registry has no admin `revokeRole` (only the caller can self-exit). Throws {@link ErrorCode.NOT_IMPLEMENTED}; a user removes their own role via {@link exitRole}. */\n    revokeRole: (args: { roleId: Hex, user: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n};\n\nexport const registryActions = (address: Address) => (client: PublicClient | WalletClient): RegistryActions => ({\n    // Role Management\n    async configureRole({ roleId, config, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateRequired(config, 'config');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'configureRole',\n                args: [roleId, config],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'configureRole');\n        }\n    },\n\n    async createNewRole({ roleId, config, roleOwner, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateRequired(config, 'config');\n            validateAddress(roleOwner, 'roleOwner');\n            // On-chain fn: configureRole(roleId, config). The legacy `createNewRole` does not\n            // exist; the separate `roleOwner` arg is now the config's `owner` field, so merge it in.\n            const mergedConfig = { ...config, owner: roleOwner };\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'configureRole',\n                args: [roleId, mergedConfig],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createNewRole');\n        }\n    },\n\n    async registerRole({ roleId, user, data, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'registerRole',\n                args: [roleId, user, data],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'registerRole');\n        }\n    },\n\n    async registerRoleSelf({ roleId, data, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            // On-chain fn: registerRole(roleId, user, roleData). The legacy self-register\n            // entrypoint does not exist; \"self\" means the caller registers their own address,\n            // so resolve the caller from `account` (or the wallet client's bound account).\n            const self =\n                typeof account === 'string'\n                    ? account\n                    : (account as any)?.address ?? (client as any).account?.address;\n            validateAddress(self as Address, 'account');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'registerRole',\n                args: [roleId, self, data],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'registerRoleSelf');\n        }\n    },\n\n    async safeMintForRole({ roleId, user, data, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'safeMintForRole',\n                args: [roleId, user, data],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'safeMintForRole');\n        }\n    },\n\n    async hasRole({ roleId, user }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'hasRole',\n                args: [roleId, user]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'hasRole');\n        }\n    },\n\n    async getRoleConfig({ roleId }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getRoleConfig',\n                args: [roleId]\n            }) as any;\n            \n            if (Array.isArray(result)) {\n                return {\n                    minStake: result[0],\n                    ticketPrice: result[1],\n                    slashThreshold: result[2],\n                    slashBase: result[3],\n                    slashInc: result[4],\n                    slashMax: result[5],\n                    exitFeePercent: result[6],\n                    isActive: result[7],\n                    minExitFee: result[8],\n                    description: result[9],\n                    owner: result[10],\n                    roleLockDuration: result[11]\n                };\n            }\n            return result as RoleConfigDetailed;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRoleConfig');\n        }\n    },\n\n    async setRoleLockDuration({ roleId, duration }) {\n        // Removed in the v5.x contract refactor: roleLockDuration is a field of the role config\n        // now, set atomically via configureRole. Validate then throw rather than revert on-chain.\n        validateRequired(roleId, 'roleId');\n        validateRequired(duration, 'duration');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setRoleLockDuration was removed in the v5.x contract refactor; set ' +\n            'config.roleLockDuration via configureRole({ roleId, config }) instead.'\n        );\n    },\n\n    async setRoleOwner({ roleId, newOwner }) {\n        // Removed in the v5.x contract refactor: the role owner is a field of the role config\n        // now, set atomically via configureRole. Validate then throw rather than revert on-chain.\n        validateRequired(roleId, 'roleId');\n        validateAddress(newOwner, 'newOwner');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setRoleOwner was removed in the v5.x contract refactor; set config.owner via ' +\n            'configureRole({ roleId, config }) instead.'\n        );\n    },\n\n    async exitRole({ roleId, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'exitRole',\n                args: [roleId],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'exitRole');\n        }\n    },\n\n    async syncExitFees({ roles, account }) {\n        validateRequired(roles, 'roles');\n        if (roles.length === 0) throw new Error('syncExitFees: roles array must not be empty');\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'syncExitFees',\n                args: [roles],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'syncExitFees');\n        }\n    },\n\n    async roleMetadata({ roleId, user }) {\n        // Removed in the v5.x contract refactor: there is no per-user role-metadata getter\n        // (roleData is no longer stored retrievably). Validate then throw rather than revert.\n        validateRequired(roleId, 'roleId');\n        validateAddress(user, 'user');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'roleMetadata was removed in the v5.x contract refactor; there is no per-user ' +\n            'role-metadata getter. Use getCommunityProfile({ community }) to recover a community\\'s ' +\n            'roleData via event back-trace, or getRoleConfig({ roleId }) for the role config.'\n        );\n    },\n\n    // Community Management\n    /**\n     * @deprecated Legacy alias. `communityByName` does NOT exist in the deployed v5\n     * Registry ABI (it would revert with \"function does not exist\"); the real getter is\n     * `getCommunityByName`. This wrapper now delegates to the ABI-confirmed function so\n     * existing callers keep working. Prefer {@link getCommunityByName} directly.\n     */\n    async communityByName({ name }) {\n        try {\n            validateRequired(name, 'name');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getCommunityByName',\n                args: [name]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'communityByName');\n        }\n    },\n\n    /**\n     * @deprecated Legacy alias. `communityByENS` does NOT exist in the deployed v5\n     * Registry ABI (it would revert with \"function does not exist\"); the real getter is\n     * `getCommunityByENS`. This wrapper now delegates to the ABI-confirmed function so\n     * existing callers keep working. Prefer {@link getCommunityByENS} directly.\n     */\n    async communityByENS({ ensName }) {\n        try {\n            validateRequired(ensName, 'ensName');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getCommunityByENS',\n                args: [ensName]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'communityByENS');\n        }\n    },\n\n    // getCommunityByName / getCommunityByENS are the names that actually exist in the\n    // Registry ABI (the legacy communityByName/communityByENS wrappers above reference\n    // function names that are NOT present in the deployed v5 ABI and would revert).\n    async getCommunityByName({ name }) {\n        try {\n            validateRequired(name, 'name');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getCommunityByName',\n                args: [name]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getCommunityByName');\n        }\n    },\n\n    async getCommunityByENS({ ensName }) {\n        try {\n            validateRequired(ensName, 'ensName');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getCommunityByENS',\n                args: [ensName]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getCommunityByENS');\n        }\n    },\n\n    async getRoleStake({ roleId, user }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getRoleStake',\n                args: [roleId, user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRoleStake');\n        }\n    },\n\n    async getEffectiveStake({ user, roleId }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getEffectiveStake',\n                args: [user, roleId]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getEffectiveStake');\n        }\n    },\n\n    async getCommunityProfile({ community, fromBlock, toBlock }) {\n        try {\n            validateAddress(community, 'community');\n\n            // ROLE_COMMUNITY is a compile-time keccak256(\"COMMUNITY\") constant, not a getter.\n            const roleCommunity = keccak256(toBytes('COMMUNITY'));\n\n            // Pull the RoleRegistered event definition from the centralized @aastar/core ABI.\n            const roleRegisteredEvent = (RegistryABI as readonly any[]).find(\n                (item) => item.type === 'event' && item.name === 'RoleRegistered'\n            ) as AbiEvent | undefined;\n            if (!roleRegisteredEvent) {\n                throw new Error('RoleRegistered event not found in Registry ABI');\n            }\n\n            // Step 1: filter logs by the indexed [roleId=ROLE_COMMUNITY, user=community] topics.\n            const logs = await (client as PublicClient).getLogs({\n                address,\n                event: roleRegisteredEvent,\n                args: { roleId: roleCommunity, user: community },\n                fromBlock: fromBlock ?? 'earliest',\n                toBlock: toBlock ?? 'latest'\n            } as any);\n\n            if (!logs || logs.length === 0) {\n                // No on-chain registration found for this community.\n                return null;\n            }\n\n            // Use the most recent registration log.\n            const log = logs[logs.length - 1] as any;\n            const txHash = log.transactionHash as Hash;\n            const eventArgs = (log.args ?? {}) as { burnAmount?: bigint; timestamp?: bigint };\n            if (!txHash) {\n                return null;\n            }\n\n            // Step 2: fetch the originating transaction to recover its calldata.\n            const tx = await (client as PublicClient).getTransaction({ hash: txHash });\n            const input = (tx as any)?.input as Hex | undefined;\n            if (!input || input === '0x') {\n                return null;\n            }\n\n            // Step 3: decode the registration calldata. roleData lives in the calldata,\n            // never in an event topic, so this back-trace is the only on-chain source.\n            const decoded = decodeFunctionData({ abi: RegistryABI, data: input });\n            // Both registration entrypoints present in the deployed Registry ABI carry\n            // roleData at calldata arg index 2:\n            //   registerRole(roleId, user, roleData)\n            //   safeMintForRole(roleId, user, roleData)\n            let rawRoleData: Hex | undefined;\n            const fnArgs = (decoded.args ?? []) as readonly unknown[];\n            if (decoded.functionName === 'registerRole' || decoded.functionName === 'safeMintForRole') {\n                rawRoleData = fnArgs[2] as Hex;\n            }\n            if (!rawRoleData || rawRoleData === '0x') {\n                return null;\n            }\n\n            // Step 4: decode roleData into the community profile struct. Field layout matches\n            // Registry.sol CommunityRoleData (string name, ensName, website, description,\n            // logoURI, uint256 stakeAmount) — the same encoding the SDK uses to build it.\n            const [profile] = decodeAbiParameters(COMMUNITY_ROLE_DATA_PARAMS, rawRoleData) as [{\n                name: string; ensName: string; website: string; description: string; logoURI: string; stakeAmount: bigint;\n            }];\n\n            return {\n                name: profile.name,\n                ensName: profile.ensName,\n                website: profile.website,\n                description: profile.description,\n                logoURI: profile.logoURI,\n                stakeAmount: profile.stakeAmount,\n                burnAmount: eventArgs.burnAmount ?? 0n,\n                registeredAt: eventArgs.timestamp ?? 0n,\n                txHash,\n                rawRoleData\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getCommunityProfile');\n        }\n    },\n\n    // Credit & Reputation\n    async getCreditLimit({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getCreditLimit',\n                args: [user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getCreditLimit');\n        }\n    },\n\n    async globalReputation({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'globalReputation',\n                args: [user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'globalReputation');\n        }\n    },\n\n    async addLevelThreshold({ threshold }) {\n        // Removed in the v5.x contract refactor: there is no append-one threshold setter, only\n        // the replace-all setLevelThresholds(uint256[]). Renaming this to setLevelThresholds with\n        // a single-element array would DESTRUCTIVELY overwrite all existing thresholds, so we\n        // throw instead. Validate then throw rather than revert on-chain.\n        validateAmount(threshold, 'threshold');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'addLevelThreshold was removed in the v5.x contract refactor; the contract only exposes ' +\n            'the replace-all setLevelThresholds(uint256[]). Read levelThresholds, append your value, ' +\n            'and call setLevelThresholds({ thresholds }).'\n        );\n    },\n\n    async batchUpdateGlobalReputation({ proposalId, users, newScores, epoch, proof, account }) {\n        try {\n            validateAmount(proposalId, 'proposalId');\n            validateRequired(users, 'users');\n            validateRequired(newScores, 'newScores');\n            validateAmount(epoch, 'epoch');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'batchUpdateGlobalReputation',\n                args: [proposalId, users, newScores, epoch, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'batchUpdateGlobalReputation');\n        }\n    },\n\n    // Contract References\n    async setBLSAggregator({ aggregator, account }) {\n        try {\n            validateAddress(aggregator, 'aggregator');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setBLSAggregator',\n                args: [aggregator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setBLSAggregator');\n        }\n    },\n\n    async setMySBT({ sbt, account }) {\n        try {\n            validateAddress(sbt, 'sbt');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setMySBT',\n                args: [sbt],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setMySBT');\n        }\n    },\n\n    async setSuperPaymaster({ paymaster, account }) {\n        try {\n            validateAddress(paymaster, 'paymaster');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setSuperPaymaster',\n                args: [paymaster],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setSuperPaymaster');\n        }\n    },\n\n    async setStaking({ staking, account }) {\n        try {\n            validateAddress(staking, 'staking');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setStaking',\n                args: [staking],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setStaking');\n        }\n    },\n\n    async setReputationSource({ source, account }) {\n        try {\n            validateAddress(source, 'source');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setReputationSource',\n                args: [source],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setReputationSource');\n        }\n    },\n\n    async blsAggregator() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'blsAggregator',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'blsAggregator');\n        }\n    },\n\n    async MYSBT() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'MYSBT',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MYSBT');\n        }\n    },\n\n    async SUPER_PAYMASTER() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'SUPER_PAYMASTER',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'SUPER_PAYMASTER');\n        }\n    },\n\n    async GTOKEN_STAKING() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'GTOKEN_STAKING',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'GTOKEN_STAKING');\n        }\n    },\n\n    async reputationSource() {\n        // Removed in the v5.x contract refactor: reputation sources are now a set, so there is\n        // no single-address `reputationSource` getter. Throw rather than revert on-chain.\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'reputationSource was removed in the v5.x contract refactor; reputation sources are now ' +\n            'a set. Use isReputationSource({ source }) to test whether an address is a source.'\n        );\n    },\n\n    async isReputationSource({ source }) {\n        try {\n            validateAddress(source, 'source');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'isReputationSource',\n                args: [source]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isReputationSource');\n        }\n    },\n\n    async lastReputationEpoch({ user }) {\n        // Removed in the v5.x contract refactor: not in the deployed Registry ABI.\n        validateAddress(user, 'user');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'lastReputationEpoch was removed in the v5.x contract refactor; it is no longer exposed by the Registry.'\n        );\n    },\n\n    // View Functions\n    async roleConfigs({ roleId }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            // On-chain fn: getRoleConfig(roleId) — the legacy `roleConfigs` mapping getter was removed.\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getRoleConfig',\n                args: [roleId]\n            }) as any;\n\n            if (Array.isArray(result)) {\n                return {\n                    minStake: result[0],\n                    ticketPrice: result[1],\n                    slashThreshold: result[2],\n                    slashBase: result[3],\n                    slashInc: result[4],\n                    slashMax: result[5],\n                    exitFeePercent: result[6],\n                    isActive: result[7],\n                    minExitFee: result[8],\n                    description: result[9],\n                    owner: result[10],\n                    roleLockDuration: result[11]\n                };\n            }\n            return result as RoleConfigDetailed;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'roleConfigs');\n        }\n    },\n\n    async getRoleUserCount({ roleId }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getRoleUserCount',\n                args: [roleId]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRoleUserCount');\n        }\n    },\n\n    async getRoleMembers({ roleId, fromBlock, toBlock }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            // No on-chain getter exists — derive ACTIVE members via event indexing.\n            return await computeActiveRoleMembers(client as PublicClient, address, roleId, fromBlock, toBlock);\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRoleMembers');\n        }\n    },\n\n    async getRoleMemberCount({ roleId, fromBlock, toBlock }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            // Event-derived count, consistent with getRoleMembers. For the authoritative\n            // on-chain counter use getRoleUserCount (reads roleMembers[roleId].length).\n            const members = await computeActiveRoleMembers(client as PublicClient, address, roleId, fromBlock, toBlock);\n            return members.length;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRoleMemberCount');\n        }\n    },\n\n    async getUserRoles({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getUserRoles',\n                args: [user]\n            }) as Promise<Hex[]>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getUserRoles');\n        }\n    },\n\n    async roleMembers({ roleId, index }) {\n        // Removed in the v5.x contract refactor: Registry storage was slimmed and members are\n        // NOT enumerable by index (no `roleMembers(roleId,index)` getter). Note: getRoleUserCount\n        // returns a COUNT, not the member at an index, so it is not a substitute. Validate then throw.\n        validateRequired(roleId, 'roleId');\n        validateRequired(index, 'index');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'roleMembers was removed in the v5.x contract refactor; members are not enumerable ' +\n            'on-chain. Use getRoleMembers({ roleId }) (event-derived) to list members.'\n        );\n    },\n\n    async userRoles({ user, index }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(index, 'index');\n            // On-chain fn: getUserRoles(user) -> bytes32[]. The legacy indexed `userRoles(user,index)`\n            // getter was removed, so read the full array and return the requested element.\n            const roles = await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getUserRoles',\n                args: [user]\n            }) as Hex[];\n            const i = Number(index);\n            if (i < 0 || i >= roles.length) {\n                throw new AAStarError(\n                    ErrorCode.INVALID_PARAMETER,\n                    `userRoles: index ${i} out of range (user has ${roles.length} role(s)).`\n                );\n            }\n            return roles[i];\n        } catch (error) {\n            if (error instanceof AAStarError) throw error;\n            throw AAStarError.fromViemError(error as Error, 'userRoles');\n        }\n    },\n\n    async userRoleCount({ user }) {\n        try {\n            validateAddress(user, 'user');\n            // On-chain fn: getUserRoles(user) -> bytes32[]. The legacy `userRoleCount` getter was\n            // removed; this is a user's role count = getUserRoles(user).length. (Distinct from\n            // getRoleUserCount, which counts the USERS of a role.)\n            const roles = await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getUserRoles',\n                args: [user]\n            }) as Hex[];\n            return BigInt(roles.length);\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'userRoleCount');\n        }\n    },\n\n    async creditTierConfig({ tierIndex }) {\n        try {\n            validateAmount(tierIndex, 'tierIndex');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'creditTierConfig',\n                args: [tierIndex]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'creditTierConfig');\n        }\n    },\n\n    async levelThresholds({ levelIndex }) {\n        try {\n            validateAmount(levelIndex, 'levelIndex');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'levelThresholds',\n                args: [levelIndex]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'levelThresholds');\n        }\n    },\n\n    async calculateExitFee({ roleId, amount }) {\n        // Removed in the v5.x contract refactor: the Registry has no exit-fee calculator;\n        // exit-fee math lives in GTokenStaking (previewExitFee). The worklist-suggested\n        // `syncExitFees` is an unrelated WRITE, not a fee getter. Validate then throw.\n        validateRequired(roleId, 'roleId');\n        validateAmount(amount, 'amount');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'calculateExitFee was removed from the Registry in the v5.x contract refactor; use the ' +\n            'GTokenStaking previewExitFee({ user, roleId }) action (returns fee + net amount) instead.'\n        );\n    },\n\n    async roleStakes({ roleId, user }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateAddress(user, 'user');\n            // On-chain fn: getRoleStake(roleId, user) — the legacy `roleStakes` mapping getter was removed.\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'getRoleStake',\n                args: [roleId, user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'roleStakes');\n        }\n    },\n\n    // Role IDs are compile-time constants in the contract — `bytes32 constant ROLE_X =\n    // keccak256(\"X\")` (see IRegistry.sol). They are NOT on-chain getters, so they must be\n    // computed locally; calling them as contract functions reverts (\"execution reverted\").\n    async ROLE_COMMUNITY() {\n        return keccak256(toBytes('COMMUNITY'));\n    },\n\n    async ROLE_ENDUSER() {\n        return keccak256(toBytes('ENDUSER'));\n    },\n\n    async ROLE_PAYMASTER_SUPER() {\n        return keccak256(toBytes('PAYMASTER_SUPER'));\n    },\n\n    async ROLE_PAYMASTER_AOA() {\n        return keccak256(toBytes('PAYMASTER_AOA'));\n    },\n\n    async ROLE_DVT() {\n        return keccak256(toBytes('DVT'));\n    },\n\n    async ROLE_KMS() {\n        return keccak256(toBytes('KMS'));\n    },\n\n    async ROLE_ANODE() {\n        return keccak256(toBytes('ANODE'));\n    },\n\n    // Ownership\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n    \n    // AccessControl\n    async grantRole({ roleId, user }) {\n        // Removed in the v5.x contract refactor: the Registry dropped the OZ AccessControl\n        // surface. Validate then throw rather than revert on-chain.\n        validateRequired(roleId, 'roleId');\n        validateAddress(user, 'user');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'grantRole was removed in the v5.x contract refactor; use registerRole({ roleId, user, data }) ' +\n            'to add a user to a role.'\n        );\n    },\n\n    async revokeRole({ roleId, user }) {\n        // Removed in the v5.x contract refactor: there is no admin role-revocation. A user can\n        // only self-exit via exitRole, so dropping the `user` arg and calling exitRole would\n        // silently change semantics (exit the CALLER's role, not `user`'s). Validate then throw.\n        validateRequired(roleId, 'roleId');\n        validateAddress(user, 'user');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'revokeRole was removed in the v5.x contract refactor; there is no admin revocation. ' +\n            'A user removes their own role via exitRole({ roleId }) (self-exit only).'\n        );\n    },\n\n    // Credit & Reputation (admin)\n    async setCreditTier({ level, limit, account }) {\n        try {\n            validateRequired(level, 'level');\n            validateRequired(limit, 'limit');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setCreditTier',\n                args: [level, limit],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setCreditTier');\n        }\n    },\n\n    async setLevelThresholds({ thresholds, account }) {\n        try {\n            validateRequired(thresholds, 'thresholds');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'setLevelThresholds',\n                args: [thresholds],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setLevelThresholds');\n        }\n    },\n\n    async updateOperatorBlacklist({ operator, users, statuses, proof, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(users, 'users');\n            validateRequired(statuses, 'statuses');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'updateOperatorBlacklist',\n                args: [operator, users, statuses, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updateOperatorBlacklist');\n        }\n    },\n\n    async syncStakeFromStaking({ user, roleId, newAmount, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            validateRequired(newAmount, 'newAmount');\n            return await (client as any).writeContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'syncStakeFromStaking',\n                args: [user, roleId, newAmount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'syncStakeFromStaking');\n        }\n    },\n\n    async blacklistNonce() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'blacklistNonce',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'blacklistNonce');\n        }\n    },\n\n    // Version\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: RegistryABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { GTokenStakingABI } from '../abis/index.js';\nimport { validateAddress, validateAmount, validateRequired } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\nexport type StakingActions = {\n    // Staking Operations\n    /** @deprecated `lockStake` is absent from the deployed ABI (reverts on-chain); use {@link lockStakeWithTicket}. */\n    lockStake: (args: { user: Address, roleId: Hex, stakeAmount: bigint, ticketPrice: bigint, payer: Address, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Lock stake for a role and consume a ticket in one call. ABI:\n     * lockStakeWithTicket(address user, bytes32 roleId, uint256 stakeAmount, uint256 ticketPrice, address payer) -> uint256 lockId.\n     * NOTE: the deployed GTokenStaking ABI exposes ONLY this function; the bare `lockStake` getter no longer exists on-chain.\n     * This is a state-changing tx, so it resolves to the transaction `Hash` — the on-chain\n     * `uint256 lockId` return is NOT recoverable from a write; `simulateContract` the same call if you need it.\n     */\n    lockStakeWithTicket: (args: { user: Address, roleId: Hex, stakeAmount: bigint, ticketPrice: bigint, payer: Address, account?: Account | Address }) => Promise<Hash>;\n    topUpStake: (args: { user: Address, roleId: Hex, stakeAmount: bigint, payer: Address, account?: Account | Address }) => Promise<Hash>;\n    unlockStake: (args: { user: Address, roleId: Hex, account?: Account | Address }) => Promise<Hash>;\n    unlockAndTransfer: (args: { user: Address, roleId: Hex, account?: Account | Address }) => Promise<Hash>;\n    \n    // Slashing\n    slash: (args: { user: Address, amount: bigint, reason: string, account?: Account | Address }) => Promise<Hash>;\n    slashByDVT: (args: { operator: Address, roleId: Hex, penaltyAmount: bigint, reason: string, account?: Account | Address }) => Promise<Hash>;\n    setAuthorizedSlasher: (args: { slasher: Address, authorized: boolean, account?: Account | Address }) => Promise<Hash>;\n    \n    // Query Functions\n    getStakeInfo: (args: { operator: Address, roleId: Hex }) => Promise<{\n        amount: bigint;\n        slashedAmount: bigint;\n        stakedAt: bigint;\n        unstakeRequestedAt: bigint;\n    }>;\n    getStakingBalance: (args: { user: Address }) => Promise<bigint>;\n    getLockedStake: (args: { user: Address, roleId: Hex }) => Promise<bigint>;\n    getUserRoleLocks: (args: { user: Address }) => Promise<Array<{\n        amount: bigint;\n        entryBurn: bigint;\n        lockedAt: number;\n        roleId: Hex;\n        metadata: Hex;\n    }>>;\n    hasRoleLock: (args: { user: Address, roleId: Hex }) => Promise<boolean>;\n    availableBalance: (args: { user: Address }) => Promise<bigint>;\n    previewExitFee: (args: { user: Address, roleId: Hex }) => Promise<{ fee: bigint; netAmount: bigint }>;\n    \n    // Admin Functions\n    /** @deprecated Removed in the v5.x contract refactor — `setRegistry` is absent from the deployed GTokenStaking ABI (REGISTRY is immutable, set at construction). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    setRegistry: (args: { registry: Address, account?: Account | Address }) => Promise<Hash>;\n    setRoleExitFee: (args: { roleId: Hex, feePercent: bigint, minFee: bigint, account?: Account | Address }) => Promise<Hash>;\n    setTreasury: (args: { treasury: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // View Functions\n    stakes: (args: { user: Address }) => Promise<{\n        amount: bigint;\n        slashedAmount: bigint;\n        stakedAt: bigint;\n        unstakeRequestedAt: bigint;\n    }>;\n    roleLocks: (args: { user: Address, roleId: Hex }) => Promise<{\n        amount: bigint;\n        entryBurn: bigint;\n        lockedAt: number;\n        roleId: Hex;\n        metadata: Hex;\n    }>;\n    roleExitConfigs: (args: { roleId: Hex }) => Promise<{ feePercent: bigint; minFee: bigint }>;\n    userActiveRoles: (args: { user: Address, index: bigint }) => Promise<Hex>;\n    authorizedSlashers: (args: { slasher: Address }) => Promise<boolean>;\n    totalStaked: () => Promise<bigint>;\n    getTotalStaked: () => Promise<bigint>;\n    treasury: () => Promise<Address>;\n    owner: () => Promise<Address>;\n    \n    // Ownership\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n    \n    // Constants\n    REGISTRY: () => Promise<Address>;\n    GTOKEN: () => Promise<Address>;\n    /** Protocol-wide cap on total locked stake (view). ABI: MAX_TOTAL_STAKE() -> uint256. */\n    MAX_TOTAL_STAKE: () => Promise<bigint>;\n};\n\nexport const stakingActions = (address: Address) => (client: PublicClient | WalletClient): StakingActions => ({\n    // Staking Operations\n    /**\n     * @deprecated `lockStake` is ABSENT from the deployed GTokenStaking ABI; this wrapper\n     * now calls the ABI-confirmed `lockStakeWithTicket` (identical args) so it no longer\n     * reverts on-chain. Prefer {@link lockStakeWithTicket} directly.\n     * @internal\n     * @warning This is a low-level internal API. Use high-level clients instead.\n     */\n    async lockStake({ user, roleId, stakeAmount, ticketPrice, payer, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(payer, 'payer');\n            validateAmount(stakeAmount, 'stakeAmount');\n            validateAmount(ticketPrice, 'ticketPrice');\n            // On-chain fn: lockStakeWithTicket(user, roleId, stakeAmount, ticketPrice, payer).\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'lockStakeWithTicket',\n                args: [user, roleId, stakeAmount, ticketPrice, payer],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'lockStake');\n        }\n    },\n\n    async lockStakeWithTicket({ user, roleId, stakeAmount, ticketPrice, payer, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            validateAddress(payer, 'payer');\n            validateAmount(stakeAmount, 'stakeAmount');\n            validateAmount(ticketPrice, 'ticketPrice');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'lockStakeWithTicket',\n                args: [user, roleId, stakeAmount, ticketPrice, payer],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'lockStakeWithTicket');\n        }\n    },\n\n    async topUpStake({ user, roleId, stakeAmount, payer, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(payer, 'payer');\n            validateAmount(stakeAmount, 'stakeAmount');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'topUpStake',\n                args: [user, roleId, stakeAmount, payer],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'topUpStake');\n        }\n    },\n\n    async unlockStake({ user, roleId, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'unlockAndTransfer',\n                args: [user, roleId],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unlockStake');\n        }\n    },\n\n    async unlockAndTransfer({ user, roleId, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'unlockAndTransfer',\n                args: [user, roleId],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unlockAndTransfer');\n        }\n    },\n\n    // Slashing\n    async slash({ user, amount, reason, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'slash',\n                args: [user, amount, reason],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'slash');\n        }\n    },\n\n    async slashByDVT({ operator, roleId, penaltyAmount, reason, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(roleId, 'roleId');\n            validateAmount(penaltyAmount, 'penaltyAmount');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'slashByDVT',\n                args: [operator, roleId, penaltyAmount, reason],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'slashByDVT');\n        }\n    },\n\n    async setAuthorizedSlasher({ slasher, authorized, account }) {\n        try {\n            validateAddress(slasher, 'slasher');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'setAuthorizedSlasher',\n                args: [slasher, authorized],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setAuthorizedSlasher');\n        }\n    },\n\n    // Query Functions\n    async getStakeInfo({ operator, roleId }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(roleId, 'roleId');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'getStakeInfo',\n                args: [operator, roleId]\n            }) as any;\n            return {\n                amount: res.amount,\n                slashedAmount: res.slashedAmount,\n                stakedAt: res.stakedAt,\n                unstakeRequestedAt: res.unstakeRequestedAt\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getStakeInfo');\n        }\n    },\n\n    async getStakingBalance({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'balanceOf',\n                args: [user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getStakingBalance');\n        }\n    },\n\n    async getLockedStake({ user, roleId }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'getLockedStake',\n                args: [user, roleId]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getLockedStake');\n        }\n    },\n\n    async getUserRoleLocks({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'getUserRoleLocks',\n                args: [user]\n            }) as Promise<any[]>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getUserRoleLocks');\n        }\n    },\n\n    async hasRoleLock({ user, roleId }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'hasRoleLock',\n                args: [user, roleId]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'hasRoleLock');\n        }\n    },\n\n    async availableBalance({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'availableBalance',\n                args: [user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'availableBalance');\n        }\n    },\n\n    async previewExitFee({ user, roleId }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            const [fee, netAmount] = await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'previewExitFee',\n                args: [user, roleId]\n            }) as [bigint, bigint];\n            return { fee, netAmount };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'previewExitFee');\n        }\n    },\n\n    // Admin Functions\n    async setRegistry({ registry }) {\n        // `setRegistry` was removed in the v5.x contract refactor: the deployed\n        // GTokenStaking ABI has no such function (REGISTRY is immutable, fixed at\n        // construction). Validate then throw rather than issue a call that reverts on-chain.\n        validateAddress(registry, 'registry');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setRegistry was removed in the v5.x contract refactor; GTokenStaking.REGISTRY is ' +\n            'immutable (set at construction) and cannot be changed on-chain.'\n        );\n    },\n\n    async setRoleExitFee({ roleId, feePercent, minFee, account }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            validateAmount(feePercent, 'feePercent');\n            validateAmount(minFee, 'minFee');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'setRoleExitFee',\n                args: [roleId, feePercent, minFee],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setRoleExitFee');\n        }\n    },\n\n    async setTreasury({ treasury, account }) {\n        try {\n            validateAddress(treasury, 'treasury');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'setTreasury',\n                args: [treasury],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setTreasury');\n        }\n    },\n\n    // View Functions\n    async stakes({ user }) {\n        try {\n            validateAddress(user, 'user');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'stakes',\n                args: [user]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    amount: res[0],\n                    slashedAmount: res[1],\n                    stakedAt: res[2],\n                    unstakeRequestedAt: res[3]\n                };\n            }\n            return res as { amount: bigint, slashedAmount: bigint, stakedAt: bigint, unstakeRequestedAt: bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'stakes');\n        }\n    },\n\n    async roleLocks({ user, roleId }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'roleLocks',\n                args: [user, roleId]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    amount: res[0],\n                    entryBurn: res[1],\n                    lockedAt: Number(res[2]),\n                    roleId: res[3],\n                    metadata: res[4]\n                };\n            }\n            return res as { amount: bigint, entryBurn: bigint, lockedAt: number, roleId: Hex, metadata: Hex };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'roleLocks');\n        }\n    },\n\n    async roleExitConfigs({ roleId }) {\n        try {\n            validateRequired(roleId, 'roleId');\n            const [feePercent, minFee] = await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'roleExitConfigs',\n                args: [roleId]\n            }) as [bigint, bigint];\n            return { feePercent, minFee };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'roleExitConfigs');\n        }\n    },\n\n    async userActiveRoles({ user, index }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'userActiveRoles',\n                args: [user, index]\n            }) as Promise<Hex>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'userActiveRoles');\n        }\n    },\n\n    async authorizedSlashers({ slasher }) {\n        try {\n            validateAddress(slasher, 'slasher');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'authorizedSlashers',\n                args: [slasher]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'authorizedSlashers');\n        }\n    },\n\n    async totalStaked() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'totalStaked',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'totalStaked');\n        }\n    },\n\n    async getTotalStaked() {\n        return this.totalStaked();\n    },\n\n    async treasury() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'treasury',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'treasury');\n        }\n    },\n\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    // Ownership\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n\n    // Version\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    },\n\n    // Constants\n    async REGISTRY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'REGISTRY',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n        }\n    },\n\n    async GTOKEN() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'GTOKEN',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'GTOKEN');\n        }\n    },\n\n    async MAX_TOTAL_STAKE() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: GTokenStakingABI,\n                functionName: 'MAX_TOTAL_STAKE',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_TOTAL_STAKE');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { MySBTABI } from '../abis/index.js';\nimport { validateAddress, validateAmount, validateRequired } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\nexport type SBTMembership = {\n    community: Address;\n    joinedAt: bigint;\n    lastActiveTime: bigint;\n    isActive: boolean;\n    metadata: string;\n};\n\nexport type SBTData = {\n    holder: Address;\n    firstCommunity: Address;\n    mintedAt: bigint;\n    totalCommunities: bigint;\n};\n\n/** Per-item outcome of a sequential batch mint. */\nexport type BatchMintResult = {\n    user: Address;\n    ok: boolean;\n    txHash?: Hash;\n    error?: string;\n};\n\n// MySBT (Soul Bound Token + Membership Management)\nexport type SBTActions = {\n    // SBT specific\n    airdropMint: (args: { user: Address, roleId: Hex, roleData: Hex, account?: Account | Address }) => Promise<Hash>;\n    mintForRole: (args: { user: Address, roleId: Hex, roleData: Hex, account?: Account | Address }) => Promise<Hash>;\n    batchAirdropMint: (args: {\n        items: { user: Address, roleId: Hex, roleData: Hex }[],\n        account?: Account | Address,\n        onProgress?: (done: number, total: number, lastResult: BatchMintResult) => void,\n        continueOnError?: boolean\n    }) => Promise<BatchMintResult[]>;\n    mintOrAddMembership: (args: { user: Address, roleId: Hex, roleData: Hex, account?: Account | Address }) => Promise<Hash>;\n    getUserSBT: (args: { user: Address }) => Promise<bigint>;\n    getSBTData: (args: { tokenId: bigint }) => Promise<SBTData>;\n    getCommunityMembership: (args: { tokenId: bigint, community: Address }) => Promise<SBTMembership>;\n    getMemberships: (args: { tokenId: bigint }) => Promise<SBTMembership[]>;\n    getActiveMemberships: (args: { tokenId: bigint }) => Promise<Address[]>;\n    verifyCommunityMembership: (args: { user: Address, community: Address }) => Promise<boolean>;\n    userToSBT: (args: { user: Address }) => Promise<bigint>;\n    sbtData: (args: { tokenId: bigint }) => Promise<SBTData>;\n    membershipIndex: (args: { tokenId: bigint, community: Address }) => Promise<bigint>;\n    \n    // ERC721 Standard\n    balanceOf: (args: { owner: Address }) => Promise<bigint>;\n    ownerOf: (args: { tokenId: bigint }) => Promise<Address>;\n    safeTransferFrom: (args: { from: Address, to: Address, tokenId: bigint, data?: Hex, account?: Account | Address }) => Promise<Hash>;\n    transferFrom: (args: { from: Address, to: Address, tokenId: bigint, account?: Account | Address }) => Promise<Hash>;\n    approve: (args: { to: Address, tokenId: bigint, account?: Account | Address }) => Promise<Hash>;\n    setApprovalForAll: (args: { operator: Address, approved: boolean, account?: Account | Address }) => Promise<Hash>;\n    getApproved: (args: { tokenId: bigint }) => Promise<Address>;\n    isApprovedForAll: (args: { owner: Address, operator: Address }) => Promise<boolean>;\n    \n    // ERC721 Metadata\n    name: () => Promise<string>;\n    symbol: () => Promise<string>;\n    tokenURI: (args: { tokenId: bigint }) => Promise<string>;\n    \n    // View Functions\n    nextTokenId: () => Promise<bigint>;\n    supportsInterface: (args: { interfaceId: Hex }) => Promise<boolean>;\n    \n    // Admin/Minting\n    burnSBT: (args: { user: Address, account?: Account | Address }) => Promise<Hash>;\n    setBaseURI: (args: { baseURI: string, account?: Account | Address }) => Promise<Hash>;\n    \n    // Membership Management\n    leaveCommunity: (args: { community: Address, account?: Account | Address }) => Promise<Hash>;\n    deactivateMembership: (args: { user: Address, community: Address, account?: Account | Address }) => Promise<Hash>;\n    deactivateAllMemberships: (args: { user: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Activity & Reputation\n    recordActivity: (args: { user: Address, account?: Account | Address }) => Promise<Hash>;\n    lastActivityTime: (args: { tokenId: bigint, community: Address }) => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — MySBT no longer tracks per-week activity (no `weeklyActivity` getter). Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link lastActivityTime} and compare against your week window. */\n    weeklyActivity: (args: { tokenId: bigint, community: Address, week: bigint }) => Promise<boolean>;\n    reputationCalculator: () => Promise<Address>;\n    setReputationCalculator: (args: { calculator: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Mint Fee & Lock\n    mintFee: () => Promise<bigint>;\n    setMintFee: (args: { fee: bigint, account?: Account | Address }) => Promise<Hash>;\n    minLockAmount: () => Promise<bigint>;\n    setMinLockAmount: (args: { amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    \n    // Pause\n    pause: (args: { account?: Account | Address }) => Promise<Hash>;\n    unpause: (args: { account?: Account | Address }) => Promise<Hash>;\n    paused: () => Promise<boolean>;\n    \n    // DAO & Config\n    daoMultisig: () => Promise<Address>;\n    setDAOMultisig: (args: { multisig: Address, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — MySBT has no `setRegistry` (REGISTRY is immutable). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    setRegistry: (args: { registry: Address, account?: Account | Address }) => Promise<Hash>;\n\n    // Version\n    version: () => Promise<string>;\n\n    // Constants\n    REGISTRY: () => Promise<Address>;\n    GTOKEN_STAKING: () => Promise<Address>;\n    GTOKEN: () => Promise<Address>;\n\n    // Ownership\n    /** @deprecated MySBT is not Ownable — it is governed by `daoMultisig`. The deployed ABI has no `owner`. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link daoMultisig}. */\n    owner: () => Promise<Address>;\n    /** @deprecated MySBT is not Ownable — there is no `transferOwnership`. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link setDAOMultisig}. */\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated MySBT is not Ownable — there is no `renounceOwnership`. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n};\n\nexport const sbtActions = (address: Address) => (client: PublicClient | WalletClient): SBTActions => ({\n    // SBT specific\n    async airdropMint({ user, roleId, roleData, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            validateRequired(roleData, 'roleData');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'airdropMint',\n                args: [user, roleId, roleData],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'airdropMint');\n        }\n    },\n\n    async mintForRole({ user, roleId, roleData, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            validateRequired(roleData, 'roleData');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'mintForRole',\n                args: [user, roleId, roleData],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'mintForRole');\n        }\n    },\n\n    /**\n     * Airdrop-mint an SBT to many users in one helper call.\n     *\n     * IMPORTANT: this is NOT atomic. MySBT exposes no on-chain batch entrypoint,\n     * so this helper sends N SEPARATE `airdropMint` transactions — one signature\n     * and one gas payment per item — awaited sequentially so account nonces stay\n     * ordered. A failure on item K does not roll back items 0..K-1 that already\n     * landed on-chain. For an all-or-nothing path, a future Multicall3 batch is\n     * planned (deferred).\n     *\n     * @param items          List of { user, roleId, roleData } to mint, in order.\n     * @param account        Sender account / address used for every transaction.\n     * @param onProgress     Invoked after each item with (done, total, lastResult).\n     * @param continueOnError When true, a failing item is recorded as { ok:false, error }\n     *                        and the loop continues; when false (default), the error is\n     *                        recorded then rethrown, aborting the remaining items.\n     * @returns Per-item results in the same order as `items`.\n     */\n    async batchAirdropMint({ items, account, onProgress, continueOnError }) {\n        validateRequired(items, 'items');\n        const results: BatchMintResult[] = [];\n        const total = items.length;\n        for (let i = 0; i < items.length; i++) {\n            const { user, roleId, roleData } = items[i];\n            let result: BatchMintResult;\n            try {\n                validateAddress(user, 'user');\n                validateRequired(roleId, 'roleId');\n                validateRequired(roleData, 'roleData');\n                // Sequential await keeps nonces ordered across the N transactions.\n                const txHash = await (client as any).writeContract({\n                    address,\n                    abi: MySBTABI,\n                    functionName: 'airdropMint',\n                    args: [user, roleId, roleData],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n                // A SUBMITTED tx is not a SUCCESSFUL one — wait for the receipt and\n                // require status 'success'. Otherwise an on-chain revert would be\n                // silently reported as ok:true (false positive).\n                const receipt = await (client as any).waitForTransactionReceipt({ hash: txHash });\n                if (receipt?.status !== 'success') {\n                    throw new Error(`airdropMint reverted on-chain (status=${receipt?.status}) for ${user}, tx ${txHash}`);\n                }\n                result = { user, ok: true, txHash };\n            } catch (error) {\n                const wrapped = AAStarError.fromViemError(error as Error, 'batchAirdropMint');\n                result = { user, ok: false, error: wrapped.message };\n                results.push(result);\n                onProgress?.(i + 1, total, result);\n                if (!continueOnError) throw wrapped;\n                continue;\n            }\n            results.push(result);\n            onProgress?.(i + 1, total, result);\n        }\n        return results;\n    },\n\n    /**\n     * Ensure `user` holds an SBT and is a member of the community encoded in\n     * `roleData`, minting if necessary.\n     *\n     * On-chain reality: MySBT has NO separate add-membership function. Its\n     * `airdropMint` IS the dual-purpose mint-or-add primitive — for a first-time\n     * user (tokenId == 0) it mints a fresh SBT, and for an existing holder it adds\n     * the new community membership (or reactivates a deactivated one). It is\n     * idempotent: if the user is already an ACTIVE member of that community it is a\n     * no-op on-chain (returns without reverting), so calling this when already a\n     * member is safe and simply emits/returns the transaction.\n     *\n     * We read `getUserSBT` first only to surface mint-vs-add intent; the issued\n     * call is `airdropMint` in both branches because it is the correct (and only)\n     * membership-add path the contract provides.\n     */\n    async mintOrAddMembership({ user, roleId, roleData, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(roleId, 'roleId');\n            validateRequired(roleData, 'roleData');\n            // 0n => first-time mint; >0n => existing holder, airdropMint adds/reactivates membership.\n            await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getUserSBT',\n                args: [user]\n            });\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'airdropMint',\n                args: [user, roleId, roleData],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'mintOrAddMembership');\n        }\n    },\n\n    async getUserSBT({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getUserSBT',\n                args: [user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getUserSBT');\n        }\n    },\n\n    async getSBTData({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getSBTData',\n                args: [tokenId]\n            }) as any;\n            \n            if (Array.isArray(res)) {\n                return {\n                    holder: res[0],\n                    firstCommunity: res[1],\n                    mintedAt: res[2],\n                    totalCommunities: res[3]\n                };\n            }\n            return res as { holder: Address, firstCommunity: Address, mintedAt: bigint, totalCommunities: bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getSBTData');\n        }\n    },\n\n    async getCommunityMembership({ tokenId, community }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            validateAddress(community, 'community');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getCommunityMembership',\n                args: [tokenId, community]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    community: res[0],\n                    joinedAt: res[1],\n                    lastActiveTime: res[2],\n                    isActive: res[3],\n                    metadata: res[4]\n                };\n            }\n            return res as { community: Address, joinedAt: bigint, lastActiveTime: bigint, isActive: boolean, metadata: Hex };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getCommunityMembership');\n        }\n    },\n\n    async getMemberships({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getMemberships',\n                args: [tokenId]\n            }) as any[];\n            \n            return res.map(m => {\n                if (Array.isArray(m)) {\n                    return {\n                        community: m[0],\n                        joinedAt: m[1],\n                        lastActiveTime: m[2],\n                        isActive: m[3],\n                        metadata: m[4]\n                    };\n                }\n                return m;\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getMemberships');\n        }\n    },\n\n    async getActiveMemberships({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getActiveMemberships',\n                args: [tokenId]\n            }) as Promise<Address[]>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getActiveMemberships');\n        }\n    },\n\n    async verifyCommunityMembership({ user, community }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(community, 'community');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'verifyCommunityMembership',\n                args: [user, community]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'verifyCommunityMembership');\n        }\n    },\n\n    async userToSBT({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'userToSBT',\n                args: [user]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'userToSBT');\n        }\n    },\n\n    async sbtData({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'sbtData',\n                args: [tokenId]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    holder: res[0],\n                    firstCommunity: res[1],\n                    mintedAt: res[2],\n                    totalCommunities: res[3]\n                };\n            }\n            return res as { holder: Address, firstCommunity: Address, mintedAt: bigint, totalCommunities: bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'sbtData');\n        }\n    },\n\n    async membershipIndex({ tokenId, community }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            validateAddress(community, 'community');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'membershipIndex',\n                args: [tokenId, community]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'membershipIndex');\n        }\n    },\n\n    // ERC721 Standard\n    async balanceOf({ owner }) {\n        try {\n            validateAddress(owner, 'owner');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'balanceOf',\n                args: [owner]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'balanceOf');\n        }\n    },\n\n    async ownerOf({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'ownerOf',\n                args: [tokenId]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'ownerOf');\n        }\n    },\n\n    async safeTransferFrom({ from, to, tokenId, data, account }) {\n        try {\n            validateAddress(from, 'from');\n            validateAddress(to, 'to');\n            validateRequired(tokenId, 'tokenId');\n            const args = data ? [from, to, tokenId, data] : [from, to, tokenId];\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'safeTransferFrom',\n                args,\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'safeTransferFrom');\n        }\n    },\n\n    async transferFrom({ from, to, tokenId, account }) {\n        try {\n            validateAddress(from, 'from');\n            validateAddress(to, 'to');\n            validateRequired(tokenId, 'tokenId');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'transferFrom',\n                args: [from, to, tokenId],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferFrom');\n        }\n    },\n\n    async approve({ to, tokenId, account }) {\n        try {\n            validateAddress(to, 'to');\n            validateRequired(tokenId, 'tokenId');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'approve',\n                args: [to, tokenId],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'approve');\n        }\n    },\n\n    async setApprovalForAll({ operator, approved, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'setApprovalForAll',\n                args: [operator, approved],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setApprovalForAll');\n        }\n    },\n\n    async getApproved({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'getApproved',\n                args: [tokenId]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getApproved');\n        }\n    },\n\n    async isApprovedForAll({ owner, operator }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateAddress(operator, 'operator');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'isApprovedForAll',\n                args: [owner, operator]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isApprovedForAll');\n        }\n    },\n\n    // ERC721 Metadata\n    async name() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'name',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'name');\n        }\n    },\n\n    async symbol() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'symbol',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'symbol');\n        }\n    },\n\n    async tokenURI({ tokenId }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'tokenURI',\n                args: [tokenId]\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'tokenURI');\n        }\n    },\n\n    // View Functions\n    async nextTokenId() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'nextTokenId',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'nextTokenId');\n        }\n    },\n\n    async supportsInterface({ interfaceId }) {\n        try {\n            validateRequired(interfaceId, 'interfaceId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'supportsInterface',\n                args: [interfaceId]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'supportsInterface');\n        }\n    },\n\n    // Admin/Minting\n    async burnSBT({ user, account }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'burnSBT',\n                args: [user],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'burnSBT');\n        }\n    },\n\n    async setBaseURI({ baseURI, account }) {\n        try {\n            validateRequired(baseURI, 'baseURI');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'setBaseURI',\n                args: [baseURI],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setBaseURI');\n        }\n    },\n\n    // Membership Management\n    async leaveCommunity({ community, account }) {\n        try {\n            validateAddress(community, 'community');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'leaveCommunity',\n                args: [community],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'leaveCommunity');\n        }\n    },\n\n    async deactivateMembership({ user, community, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(community, 'community');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'deactivateMembership',\n                args: [user, community],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'deactivateMembership');\n        }\n    },\n\n    async deactivateAllMemberships({ user, account }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'deactivateAllMemberships',\n                args: [user],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'deactivateAllMemberships');\n        }\n    },\n\n    // Activity & Reputation\n    async recordActivity({ user, account }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'recordActivity',\n                args: [user],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'recordActivity');\n        }\n    },\n\n    async lastActivityTime({ tokenId, community }) {\n        try {\n            validateRequired(tokenId, 'tokenId');\n            validateAddress(community, 'community');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'lastActivityTime',\n                args: [tokenId, community]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'lastActivityTime');\n        }\n    },\n\n    async weeklyActivity({ tokenId, community, week }) {\n        // Removed in the v5.x contract refactor: MySBT no longer tracks per-week activity\n        // bitmaps (no `weeklyActivity` getter). Validate inputs then throw rather than revert.\n        validateRequired(tokenId, 'tokenId');\n        validateAddress(community, 'community');\n        validateRequired(week, 'week');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'weeklyActivity was removed in the v5.x contract refactor; MySBT no longer tracks ' +\n            'per-week activity. Use lastActivityTime({ tokenId, community }) and compare the ' +\n            'returned timestamp against your week window instead.'\n        );\n    },\n\n    async reputationCalculator() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'reputationCalculator',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'reputationCalculator');\n        }\n    },\n\n    async setReputationCalculator({ calculator, account }) {\n        try {\n            validateAddress(calculator, 'calculator');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'setReputationCalculator',\n                args: [calculator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setReputationCalculator');\n        }\n    },\n\n    // Mint Fee & Lock\n    async mintFee() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'mintFee',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'mintFee');\n        }\n    },\n\n    async setMintFee({ fee, account }) {\n        try {\n            validateAmount(fee, 'fee');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'setMintFee',\n                args: [fee],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setMintFee');\n        }\n    },\n\n    async minLockAmount() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'minLockAmount',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'minLockAmount');\n        }\n    },\n\n    async setMinLockAmount({ amount, account }) {\n        try {\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'setMinLockAmount',\n                args: [amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setMinLockAmount');\n        }\n    },\n\n    // Pause\n    async pause({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'pause',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pause');\n        }\n    },\n\n    async unpause({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'unpause',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unpause');\n        }\n    },\n\n    async paused() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'paused',\n                args: []\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'paused');\n        }\n    },\n\n    // DAO & Config\n    async daoMultisig() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'daoMultisig',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'daoMultisig');\n        }\n    },\n\n    async setDAOMultisig({ multisig, account }) {\n        try {\n            validateAddress(multisig, 'multisig');\n            return await (client as any).writeContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'setDAOMultisig',\n                args: [multisig],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setDAOMultisig');\n        }\n    },\n\n    async setRegistry({ registry }) {\n        // Removed in the v5.x contract refactor: MySBT has no `setRegistry` (REGISTRY is\n        // immutable, set at construction). Validate then throw rather than revert on-chain.\n        validateAddress(registry, 'registry');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setRegistry was removed in the v5.x contract refactor; MySBT.REGISTRY is immutable ' +\n            '(set at construction) and cannot be changed on-chain.'\n        );\n    },\n\n    // Version\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    },\n\n    // Constants\n    async REGISTRY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'REGISTRY',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n        }\n    },\n\n    async GTOKEN_STAKING() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'GTOKEN_STAKING',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'GTOKEN_STAKING');\n        }\n    },\n\n    async GTOKEN() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: MySBTABI,\n                functionName: 'GTOKEN',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'GTOKEN');\n        }\n    },\n\n    // Ownership — MySBT is NOT Ownable; it is governed by `daoMultisig`. The OZ Ownable\n    // surface (owner/transferOwnership/renounceOwnership) was removed in the v5.x refactor.\n    async owner() {\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'owner was removed in the v5.x contract refactor; MySBT is not Ownable. ' +\n            'Use daoMultisig() to read the governing multisig.'\n        );\n    },\n\n    async transferOwnership({ newOwner }) {\n        validateAddress(newOwner, 'newOwner');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'transferOwnership was removed in the v5.x contract refactor; MySBT is not Ownable. ' +\n            'Use setDAOMultisig({ multisig }) to rotate the governing multisig.'\n        );\n    },\n\n    async renounceOwnership() {\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'renounceOwnership was removed in the v5.x contract refactor; MySBT is not Ownable.'\n        );\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, zeroAddress } from 'viem';\nimport { SuperPaymasterABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateAmount } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\n/**\n * ERC-4337 v0.7 PackedUserOperation tuple, matching the `struct PackedUserOperation`\n * input of `dryRunValidation` / `validatePaymasterUserOp` in the SuperPaymaster ABI.\n * Field order is load-bearing: viem encodes the tuple positionally from this shape.\n */\nexport type PackedUserOperation = {\n    sender: Address;\n    nonce: bigint;\n    initCode: Hex;\n    callData: Hex;\n    accountGasLimits: Hex;\n    preVerificationGas: bigint;\n    gasFees: Hex;\n    paymasterAndData: Hex;\n    signature: Hex;\n};\n\n/**\n * Result of an off-chain `dryRunValidation` pre-flight check.\n * `ok` mirrors whether the paymaster would accept the UserOp; `reasonCode` is a\n * bytes32 machine-readable rejection code (zero when `ok` is true).\n */\nexport type DryRunValidationResult = {\n    ok: boolean;\n    reasonCode: Hex;\n};\n\nexport type SlashRecord = {\n    timestamp: bigint;\n    amount: bigint;\n    reputationLoss: bigint;\n    reason: string;\n    level: number;\n};\n\nexport type OperatorConfig = {\n    aPNTsBalance: bigint;\n    // exchangeRate removed in v5.3.3: read live from xPNTsToken.exchangeRate() at runtime\n    isConfigured: boolean;\n    isPaused: boolean;\n    xPNTsToken: Address;\n    reputation: number;\n    minTxInterval: number;\n    treasury: Address;\n    totalSpent: bigint;\n    totalTxSponsored: bigint;\n};\n\n/**\n * Runtime-resolved aPNTs token state read live from the SuperPaymaster contract.\n *\n * The contract exposes the currently active token via `APNTS_TOKEN()` and an\n * upcoming (timelocked) token via `pendingAPNTsToken()` / `pendingAPNTsTokenEta()`.\n * Consumers should prefer `active` and may surface `pending` to warn about an\n * upcoming migration.\n */\nexport type ResolvedAPNTsToken = {\n    /** Currently active aPNTs token address, read from `APNTS_TOKEN()`. */\n    active: Address;\n    /** aPNTs token queued for migration; `zeroAddress` when none is queued. */\n    pending: Address;\n    /** Unix-second ETA when the pending change becomes executable; `0n` when none is queued. */\n    pendingEta: bigint;\n    /** True only when `active` came from the explicit `fallback` option after a failed chain read. */\n    fallbackUsed: boolean;\n};\n\nexport type SuperPaymasterActions = {\n    // Deposit & Withdrawal (aPNTs / ETH)\n    deposit: (args: { amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    depositETH: (args: { value: bigint, account?: Account | Address }) => Promise<Hash>;\n    depositFor: (args: { targetOperator: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    withdrawTo: (args: { to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    withdraw: (args: { amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    \n    // Staking (for SuperPaymaster role)\n    addStake: (args: { unstakeDelaySec: number, value: bigint, account?: Account | Address }) => Promise<Hash>;\n    unlockStake: (args: { account?: Account | Address }) => Promise<Hash>;\n    withdrawStake: (args: { to: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Operator Management\n    configureOperator: (args: { xPNTsToken: Address, opTreasury: Address, account?: Account | Address }) => Promise<Hash>;\n    setOperatorPaused: (args: { operator: Address, paused: boolean, account?: Account | Address }) => Promise<Hash>;\n    setOperatorLimits: (args: { minTxInterval: number, account?: Account | Address }) => Promise<Hash>;\n    updateReputation: (args: { operator: Address, newScore: bigint, account?: Account | Address }) => Promise<Hash>;\n    executeSlashWithBLS: (args: { operator: Address, level: number, proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    slashOperator: (args: { operator: Address, level: number, penaltyAmount: bigint, reason: string, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Two-step slash guard (v5.4.1-rc.1 #249): queue a pending slash for `operator`.\n     * Both {@link slashOperator} and {@link executeSlashWithBLS} now revert with\n     * `SlashPending()` unless `_pendingSlash[operator]` was set first via this call,\n     * and `withdraw()` reverts while it is set (closes the slash-escape window).\n     * Governance-gated.\n     */\n    queueSlash: (args: { operator: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Cancel a queued slash (governance escape hatch); clears the pending-slash flag. */\n    cancelSlash: (args: { operator: Address, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Authoritative O(1) read of `_pendingSlash[operator]` (SuperPaymaster-5.4.2, #333/#334).\n     * `true` once a slash is queued via {@link queueSlash} and until it is executed or\n     * {@link cancelSlash}ed. Preferred over reconstructing state from slash events — used by\n     * DVT peer-failover to skip re-queuing an already-pending slash (BLS `queueSlash` reverts\n     * `SlashCooldown()` within the 1h cooldown window anyway).\n     */\n    isSlashPending: (args: { operator: Address }) => Promise<boolean>;\n\n    // User & SBT Management\n    updateBlockedStatus: (args: { operator: Address, users: Address[], statuses: boolean[], account?: Account | Address }) => Promise<Hash>;\n    updateSBTStatus: (args: { user: Address, status: boolean, account?: Account | Address }) => Promise<Hash>;\n\n    // Pending-Debt Reconciliation (operator)\n    /** Read the unrecovered debt recorded for a user after a failed burn/recordDebt. */\n    pendingDebts: (args: { token: Address, user: Address }) => Promise<bigint>;\n    /** Operator retries recovering up to `amount` of the user's pending debt. */\n    retryPendingDebt: (args: { token: Address, user: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Operator force-clears the user's pending-debt entry without recording it. */\n    clearPendingDebt: (args: { token: Address, user: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Price Management\n    setAPNTSPrice: (args: { newPrice: bigint, account?: Account | Address }) => Promise<Hash>;\n    updatePrice: (args: { account?: Account | Address }) => Promise<Hash>;\n    updatePriceDVT: (args: { price: bigint, updatedAt: bigint, proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    \n    // Global Config\n    setProtocolFee: (args: { newFeeBPS: bigint, account?: Account | Address }) => Promise<Hash>;\n    setTreasury: (args: { treasury: Address, account?: Account | Address }) => Promise<Hash>;\n    setXPNTsFactory: (args: { factory: Address, account?: Account | Address }) => Promise<Hash>;\n    setAPNTsToken: (args: { token: Address, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated The deployed SuperPaymaster ABI has no direct `setBLSAggregator` — the aggregator change is timelocked via {@link queueBLSAggregator} + {@link applyBLSAggregator}. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    setBLSAggregator: (args: { aggregator: Address, account?: Account | Address }) => Promise<Hash>;\n    withdrawProtocolRevenue: (args: { to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n\n    // Timelocked aPNTs Token Migration (setAPNTsToken queues the change)\n    executeAPNTsTokenChange: (args: { account?: Account | Address }) => Promise<Hash>;\n    cancelAPNTsTokenChange: (args: { account?: Account | Address }) => Promise<Hash>;\n    pendingAPNTsToken: () => Promise<Address>;\n    pendingAPNTsTokenEta: () => Promise<bigint>;\n    /**\n     * Resolve the live aPNTs token address from chain instead of relying on a static constant.\n     *\n     * Reads `APNTS_TOKEN()` (active), `pendingAPNTsToken()` and `pendingAPNTsTokenEta()`\n     * in parallel and returns them as a structured result. Prefer `active` for runtime use.\n     *\n     * If `fallback` is supplied and the chain reads fail, the static `fallback` address is\n     * returned with `fallbackUsed: true` (pending fields zeroed). Without a `fallback` the\n     * underlying error is re-thrown rather than silently masked.\n     */\n    resolveAPNTsToken: (args?: { fallback?: Address }) => Promise<ResolvedAPNTsToken>;\n\n    // Emergency Price (kill switch)\n    emergencySetPrice: (args: { newPrice: bigint, account?: Account | Address }) => Promise<Hash>;\n    executeEmergencyPrice: (args: { account?: Account | Address }) => Promise<Hash>;\n    cancelEmergencyPrice: (args: { account?: Account | Address }) => Promise<Hash>;\n    emergencyPendingPrice: () => Promise<bigint>;\n    emergencyActivatedAt: () => Promise<bigint>;\n    emergencyQueuedAt: () => Promise<bigint>;\n    EMERGENCY_TIMELOCK: () => Promise<bigint>;\n\n    // BLS Aggregator Timelock (setBLSAggregator sets directly; queue/apply is timelocked)\n    queueBLSAggregator: (args: { aggregator: Address, account?: Account | Address }) => Promise<Hash>;\n    applyBLSAggregator: (args: { account?: Account | Address }) => Promise<Hash>;\n    /**\n     * One-time BLS_AGGREGATOR wiring for a fresh deploy (v5.4.1-rc.1 #S3): callable\n     * only while `BLS_AGGREGATOR == address(0)`; `onlyOwner`, no timelock. To change\n     * an already-set aggregator use {@link queueBLSAggregator} + {@link applyBLSAggregator}.\n     */\n    initBLSAggregator: (args: { aggregator: Address, account?: Account | Address }) => Promise<Hash>;\n\n    // Callbacks\n    onTransferReceived: (args: { operator: Address, from: Address, value: bigint, data: Hex }) => Promise<Hex>;\n    \n    // Validation\n    validatePaymasterUserOp: (args: { userOp: any, userOpHash: Hex, maxCost: bigint }) => Promise<{ context: Hex, validationData: bigint }>;\n    /**\n     * Off-chain pre-flight validation of a UserOp against this paymaster.\n     * Returns `{ ok, reasonCode }` so callers can detect AA34-style rejections\n     * before submitting the UserOp on-chain. View call; never mutates state.\n     */\n    dryRunValidation: (args: { userOp: PackedUserOperation, maxCost: bigint }) => Promise<DryRunValidationResult>;\n    \n    // View Functions\n    operators: (args: { operator: Address }) => Promise<OperatorConfig>;\n    getAvailableCredit: (args: { user: Address, token: Address }) => Promise<bigint>;\n    getDeposit: () => Promise<bigint>;\n    getLatestSlash: (args: { operator: Address }) => Promise<SlashRecord>;\n    getSlashCount: (args: { operator: Address }) => Promise<bigint>;\n    getSlashHistory: (args: { operator: Address }) => Promise<SlashRecord[]>;\n    slashHistory: (args: { operator: Address, index: bigint }) => Promise<SlashRecord>;\n    userOpState: (args: { user: Address, operator: Address }) => Promise<{ lastTimestamp: number, isBlocked: boolean }>;\n    cachedPrice: () => Promise<{ price: bigint, updatedAt: bigint, roundId: bigint, decimals: number }>;\n    aPNTsPriceUSD: () => Promise<bigint>;\n    protocolFeeBPS: () => Promise<bigint>;\n    protocolRevenue: () => Promise<bigint>;\n    totalTrackedBalance: () => Promise<bigint>;\n    priceStalenessThreshold: () => Promise<bigint>;\n    sbtHolders: (args: { user: Address }) => Promise<boolean>;\n    /** True when the Chainlink ETH/USD feed is considered stale by the contract. */\n    isChainlinkStale: () => Promise<boolean>;\n    /** Current pricing mode (uint8 enum on the contract). */\n    priceMode: () => Promise<number>;\n    /** Unix-second timestamp until which the cached price remains valid (uint48). */\n    priceValidUntil: () => Promise<bigint>;\n    /** Address of the BLS aggregator pending the timelock (`zeroAddress` if none queued). */\n    pendingBLSAgg: () => Promise<Address>;\n    /** Unix-second ETA at which the pending BLS aggregator change becomes executable (uint48). */\n    pendingBLSAggEta: () => Promise<bigint>;\n    \n    // Constants\n    APNTS_TOKEN: () => Promise<Address>;\n    REGISTRY: () => Promise<Address>;\n    BLS_AGGREGATOR: () => Promise<Address>;\n    ETH_USD_PRICE_FEED: () => Promise<Address>;\n    treasury: () => Promise<Address>;\n    xpntsFactory: () => Promise<Address>;\n    entryPoint: () => Promise<Address>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed SuperPaymaster ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    MAX_PROTOCOL_FEE: () => Promise<bigint>;\n    /** @deprecated Removed from SuperPaymaster in the v5.x refactor (this bound belongs to the standalone Paymaster contract). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    MAX_ETH_USD_PRICE: () => Promise<bigint>;\n    /** @deprecated Removed from SuperPaymaster in the v5.x refactor (this bound belongs to the standalone Paymaster contract). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    MIN_ETH_USD_PRICE: () => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed SuperPaymaster ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    PAYMASTER_DATA_OFFSET: () => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed SuperPaymaster ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    PRICE_CACHE_DURATION: () => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed SuperPaymaster ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    RATE_OFFSET: () => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed SuperPaymaster ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    VALIDATION_BUFFER_BPS: () => Promise<bigint>;\n    /** @deprecated Removed in the v5.x contract refactor — not in the deployed SuperPaymaster ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    BPS_DENOMINATOR: () => Promise<bigint>;\n    /** Duration (seconds) of the aPNTs-token-change timelock. */\n    APNTS_TOKEN_TIMELOCK: () => Promise<bigint>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n};\n\nexport const superPaymasterActions = (address: Address) => (client: PublicClient | WalletClient): SuperPaymasterActions => ({\n    // Deposit & Withdrawal\n    async deposit({ amount, account }) {\n        try {\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'deposit',\n                args: [amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'deposit');\n        }\n    },\n\n    async depositETH({ value, account }) {\n        try {\n            validateAmount(value, 'value');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'deposit',\n                args: [],\n                value,\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'depositETH');\n        }\n    },\n\n    async depositFor({ targetOperator, amount, account }) {\n        try {\n            validateAddress(targetOperator, 'targetOperator');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'depositFor',\n                args: [targetOperator, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'depositFor');\n        }\n    },\n\n    async withdrawTo({ to, amount, account }) {\n        try {\n            validateAddress(to, 'to');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'withdrawTo',\n                args: [to, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawTo');\n        }\n    },\n\n    async withdraw({ amount, account }) {\n        try {\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'withdraw',\n                args: [amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdraw');\n        }\n    },\n\n    // Staking\n    async addStake({ unstakeDelaySec, value, account }) {\n        try {\n            validateRequired(unstakeDelaySec, 'unstakeDelaySec');\n            validateAmount(value, 'value');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'addStake',\n                args: [unstakeDelaySec],\n                value,\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addStake');\n        }\n    },\n\n    async unlockStake({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'unlockStake',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unlockStake');\n        }\n    },\n\n    async withdrawStake({ to, account }) {\n        try {\n            validateAddress(to, 'to');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'withdrawStake',\n                args: [to],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawStake');\n        }\n    },\n\n    // Operator Management\n    async configureOperator({ xPNTsToken, opTreasury, account }) {\n        try {\n            validateAddress(xPNTsToken, 'xPNTsToken');\n            validateAddress(opTreasury, 'opTreasury');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'configureOperator',\n                args: [xPNTsToken, opTreasury],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'configureOperator');\n        }\n    },\n\n    async setOperatorPaused({ operator, paused, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setOperatorPaused',\n                args: [operator, paused],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setOperatorPaused');\n        }\n    },\n\n    async setOperatorLimits({ minTxInterval, account }) {\n        try {\n            validateRequired(minTxInterval, 'minTxInterval');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setOperatorLimits',\n                args: [minTxInterval],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setOperatorLimits');\n        }\n    },\n\n    async updateReputation({ operator, newScore, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateAmount(newScore, 'newScore');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'updateReputation',\n                args: [operator, newScore],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updateReputation');\n        }\n    },\n\n    async executeSlashWithBLS({ operator, level, proof, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(level, 'level');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'executeSlashWithBLS',\n                args: [operator, level, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeSlashWithBLS');\n        }\n    },\n\n    async slashOperator({ operator, level, penaltyAmount, reason, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(level, 'level');\n            validateAmount(penaltyAmount, 'penaltyAmount');\n            validateRequired(reason, 'reason');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'slashOperator',\n                args: [operator, level, penaltyAmount, reason],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'slashOperator');\n        }\n    },\n\n    async queueSlash({ operator, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'queueSlash',\n                args: [operator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'queueSlash');\n        }\n    },\n\n    async cancelSlash({ operator, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'cancelSlash',\n                args: [operator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cancelSlash');\n        }\n    },\n\n    async initBLSAggregator({ aggregator, account }) {\n        try {\n            validateAddress(aggregator, 'aggregator');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'initBLSAggregator',\n                args: [aggregator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'initBLSAggregator');\n        }\n    },\n\n    // User & SBT\n    async updateBlockedStatus({ operator, users, statuses, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(users, 'users');\n            validateRequired(statuses, 'statuses');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'updateBlockedStatus',\n                args: [operator, users, statuses],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updateBlockedStatus');\n        }\n    },\n\n    async updateSBTStatus({ user, status, account }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'updateSBTStatus',\n                args: [user, status],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updateSBTStatus');\n        }\n    },\n\n    // Pending-Debt Reconciliation\n    async pendingDebts({ token, user }) {\n        try {\n            validateAddress(token, 'token');\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'pendingDebts',\n                args: [token, user]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingDebts');\n        }\n    },\n\n    async retryPendingDebt({ token, user, amount, account }) {\n        try {\n            validateAddress(token, 'token');\n            validateAddress(user, 'user');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'retryPendingDebt',\n                args: [token, user, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'retryPendingDebt');\n        }\n    },\n\n    async clearPendingDebt({ token, user, account }) {\n        try {\n            validateAddress(token, 'token');\n            validateAddress(user, 'user');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'clearPendingDebt',\n                args: [token, user],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'clearPendingDebt');\n        }\n    },\n\n    // Price\n    async setAPNTSPrice({ newPrice, account }) {\n        try {\n            validateAmount(newPrice, 'newPrice');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setAPNTSPrice',\n                args: [newPrice],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setAPNTSPrice');\n        }\n    },\n\n    async updatePrice({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'updatePrice',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updatePrice');\n        }\n    },\n\n    async updatePriceDVT({ price, updatedAt, proof, account }) {\n        try {\n            validateRequired(price, 'price');\n            validateRequired(updatedAt, 'updatedAt');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'updatePriceDVT',\n                args: [price, updatedAt, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updatePriceDVT');\n        }\n    },\n\n    // Fees & Admin\n    async setProtocolFee({ newFeeBPS, account }) {\n        try {\n            validateAmount(newFeeBPS, 'newFeeBPS');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setProtocolFee',\n                args: [newFeeBPS],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setProtocolFee');\n        }\n    },\n\n    async setTreasury({ treasury, account }) {\n        try {\n            validateAddress(treasury, 'treasury');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setTreasury',\n                args: [treasury],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setTreasury');\n        }\n    },\n\n    async setXPNTsFactory({ factory, account }) {\n        try {\n            validateAddress(factory, 'factory');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setXPNTsFactory',\n                args: [factory],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setXPNTsFactory');\n        }\n    },\n\n    async setAPNTsToken({ token, account }) {\n        try {\n            validateAddress(token, 'token');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'setAPNTsToken',\n                args: [token],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setAPNTsToken');\n        }\n    },\n\n    async setBLSAggregator({ aggregator }) {\n        // The deployed SuperPaymaster ABI has no direct `setBLSAggregator`: the aggregator\n        // change is timelocked. Validate then throw, pointing callers at the two-step path.\n        validateAddress(aggregator, 'aggregator');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setBLSAggregator is not available on this SuperPaymaster: the aggregator change is ' +\n            'timelocked. Use queueBLSAggregator({ aggregator }) then applyBLSAggregator() after ' +\n            'the timelock elapses.'\n        );\n    },\n\n    async withdrawProtocolRevenue({ to, amount, account }) {\n        try {\n            validateAddress(to, 'to');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'withdrawProtocolRevenue',\n                args: [to, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawProtocolRevenue');\n        }\n    },\n\n    // Timelocked aPNTs Token Migration\n    /** Execute a queued aPNTs token change after the timelock has elapsed. */\n    async executeAPNTsTokenChange({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'executeAPNTsTokenChange',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeAPNTsTokenChange');\n        }\n    },\n\n    /** Cancel a queued aPNTs token change before it is executed. */\n    async cancelAPNTsTokenChange({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'cancelAPNTsTokenChange',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cancelAPNTsTokenChange');\n        }\n    },\n\n    /** Address of the aPNTs token pending migration (zero if none queued). */\n    async pendingAPNTsToken() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'pendingAPNTsToken',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingAPNTsToken');\n        }\n    },\n\n    /** ETA (unix timestamp) at which the pending aPNTs token change becomes executable. */\n    async pendingAPNTsTokenEta() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'pendingAPNTsTokenEta',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingAPNTsTokenEta');\n        }\n    },\n\n    /**\n     * Resolve the live aPNTs token address (active + pending) from chain.\n     * See {@link SuperPaymasterActions.resolveAPNTsToken} for fallback semantics.\n     */\n    async resolveAPNTsToken(args?: { fallback?: Address }) {\n        const pub = client as PublicClient;\n        try {\n            const [active, pending, pendingEta] = await Promise.all([\n                pub.readContract({ address, abi: SuperPaymasterABI, functionName: 'APNTS_TOKEN', args: [] }) as Promise<Address>,\n                pub.readContract({ address, abi: SuperPaymasterABI, functionName: 'pendingAPNTsToken', args: [] }) as Promise<Address>,\n                pub.readContract({ address, abi: SuperPaymasterABI, functionName: 'pendingAPNTsTokenEta', args: [] }) as Promise<bigint>,\n            ]);\n            return { active, pending, pendingEta, fallbackUsed: false };\n        } catch (error) {\n            // Only mask the failure when the caller explicitly opted into a static fallback.\n            if (args?.fallback) {\n                return { active: args.fallback, pending: zeroAddress, pendingEta: 0n, fallbackUsed: true };\n            }\n            throw AAStarError.fromViemError(error as Error, 'resolveAPNTsToken');\n        }\n    },\n\n    // Emergency Price (kill switch)\n    /** Queue an emergency price (int256) subject to the emergency timelock. */\n    async emergencySetPrice({ newPrice, account }) {\n        try {\n            validateRequired(newPrice, 'newPrice');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'emergencySetPrice',\n                args: [newPrice],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'emergencySetPrice');\n        }\n    },\n\n    /** Execute a queued emergency price after the emergency timelock has elapsed. */\n    async executeEmergencyPrice({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'executeEmergencyPrice',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeEmergencyPrice');\n        }\n    },\n\n    /** Cancel a queued emergency price before it is executed. */\n    async cancelEmergencyPrice({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'cancelEmergencyPrice',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cancelEmergencyPrice');\n        }\n    },\n\n    /** Pending emergency price (int256) awaiting execution. */\n    async emergencyPendingPrice() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'emergencyPendingPrice',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'emergencyPendingPrice');\n        }\n    },\n\n    /** Timestamp at which the emergency price was activated (0 if inactive). */\n    async emergencyActivatedAt() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'emergencyActivatedAt',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'emergencyActivatedAt');\n        }\n    },\n\n    /** Timestamp at which the emergency price was queued (0 if none queued). */\n    async emergencyQueuedAt() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'emergencyQueuedAt',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'emergencyQueuedAt');\n        }\n    },\n\n    /** Duration (seconds) of the emergency price timelock. */\n    async EMERGENCY_TIMELOCK() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'EMERGENCY_TIMELOCK',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'EMERGENCY_TIMELOCK');\n        }\n    },\n\n    // BLS Aggregator Timelock\n    /** Queue a new BLS aggregator address subject to the timelock. */\n    async queueBLSAggregator({ aggregator, account }) {\n        try {\n            validateAddress(aggregator, 'aggregator');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'queueBLSAggregator',\n                args: [aggregator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'queueBLSAggregator');\n        }\n    },\n\n    /** Apply a queued BLS aggregator change after the timelock has elapsed. */\n    async applyBLSAggregator({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'applyBLSAggregator',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'applyBLSAggregator');\n        }\n    },\n\n    // Callbacks & Validation\n    async onTransferReceived({ operator, from, value, data }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateAddress(from, 'from');\n            validateAmount(value, 'value');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'onTransferReceived',\n                args: [operator, from, value, data]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'onTransferReceived');\n        }\n    },\n\n    async validatePaymasterUserOp({ userOp, userOpHash, maxCost }) {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'validatePaymasterUserOp',\n                args: [userOp, userOpHash, maxCost]\n            }) as { context: Hex, validationData: bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'validatePaymasterUserOp');\n        }\n    },\n\n    async dryRunValidation({ userOp, maxCost }) {\n        try {\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'dryRunValidation',\n                args: [userOp, maxCost]\n            }) as any;\n\n            // Solidity returns (bool ok, bytes32 reasonCode); viem decodes to a tuple.\n            if (Array.isArray(res)) {\n                return { ok: res[0], reasonCode: res[1] };\n            }\n            return res as DryRunValidationResult;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'dryRunValidation');\n        }\n    },\n\n    // View Functions\n    async operators({ operator }) {\n        try {\n            validateAddress(operator, 'operator');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'operators',\n                args: [operator]\n            }) as any;\n\n            if (Array.isArray(result)) {\n                return {\n                    aPNTsBalance: result[0],\n                    isConfigured: result[1],\n                    isPaused: result[2],\n                    xPNTsToken: result[3],\n                    reputation: result[4],\n                    minTxInterval: result[5],\n                    treasury: result[6],\n                    totalSpent: result[7],\n                    totalTxSponsored: result[8]\n                };\n            }\n            return result as OperatorConfig;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'operators');\n        }\n    },\n\n    async getAvailableCredit({ user, token }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(token, 'token');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'getAvailableCredit',\n                args: [user, token]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAvailableCredit');\n        }\n    },\n\n    async getDeposit() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'getDeposit',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getDeposit');\n        }\n    },\n\n    async getLatestSlash({ operator }) {\n        try {\n            validateAddress(operator, 'operator');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'getLatestSlash',\n                args: [operator]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    timestamp: res[0],\n                    amount: res[1],\n                    reputationLoss: res[2],\n                    reason: res[3],\n                    level: res[4]\n                };\n            }\n            return res as SlashRecord;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getLatestSlash');\n        }\n    },\n\n    async getSlashCount({ operator }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'getSlashCount',\n                args: [operator]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getSlashCount');\n        }\n    },\n\n    async isSlashPending({ operator }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'isSlashPending',\n                args: [operator]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isSlashPending');\n        }\n    },\n\n    async getSlashHistory({ operator }) {\n        try {\n            validateAddress(operator, 'operator');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'getSlashHistory',\n                args: [operator]\n            }) as any[];\n\n            return res.map(r => {\n                if (Array.isArray(r)) {\n                    return {\n                        timestamp: r[0],\n                        amount: r[1],\n                        reputationLoss: r[2],\n                        reason: r[3],\n                        level: r[4]\n                    };\n                }\n                return r as SlashRecord;\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getSlashHistory');\n        }\n    },\n\n    async slashHistory({ operator, index }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(index, 'index');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'slashHistory',\n                args: [operator, index]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    timestamp: res[0],\n                    amount: res[1],\n                    reputationLoss: res[2],\n                    reason: res[3],\n                    level: res[4]\n                };\n            }\n            return res as SlashRecord;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'slashHistory');\n        }\n    },\n\n    async userOpState({ user, operator }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(operator, 'operator');\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'userOpState',\n                args: [user, operator]\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return { lastTimestamp: Number(res[0]), isBlocked: res[1] };\n            }\n            return { lastTimestamp: Number(res.lastTimestamp), isBlocked: res.isBlocked };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'userOpState');\n        }\n    },\n\n    async cachedPrice() {\n        try {\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'cachedPrice',\n                args: []\n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    price: res[0],\n                    updatedAt: res[1],\n                    roundId: res[2],\n                    decimals: res[3]\n                };\n            }\n            return res as { price: bigint, updatedAt: bigint, roundId: bigint, decimals: number };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cachedPrice');\n        }\n    },\n\n    async aPNTsPriceUSD() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'aPNTsPriceUSD',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'aPNTsPriceUSD');\n        }\n    },\n\n    async protocolFeeBPS() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'protocolFeeBPS',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'protocolFeeBPS');\n        }\n    },\n\n    async protocolRevenue() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'protocolRevenue',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'protocolRevenue');\n        }\n    },\n\n    async totalTrackedBalance() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'totalTrackedBalance',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'totalTrackedBalance');\n        }\n    },\n\n    async priceStalenessThreshold() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'priceStalenessThreshold',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'priceStalenessThreshold');\n        }\n    },\n\n    async sbtHolders({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'sbtHolders',\n                args: [user]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'sbtHolders');\n        }\n    },\n\n    /** True when the Chainlink ETH/USD feed is considered stale by the contract. */\n    async isChainlinkStale() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'isChainlinkStale',\n                args: []\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isChainlinkStale');\n        }\n    },\n\n    /** Current pricing mode (uint8 enum). Decoded to a JS number. */\n    async priceMode() {\n        try {\n            const res = await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'priceMode',\n                args: []\n            });\n            return Number(res);\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'priceMode');\n        }\n    },\n\n    /** Unix-second timestamp (uint48) until which the cached price remains valid. */\n    async priceValidUntil() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'priceValidUntil',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'priceValidUntil');\n        }\n    },\n\n    /** Address of the BLS aggregator pending the timelock (zero if none queued). */\n    async pendingBLSAgg() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'pendingBLSAgg',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingBLSAgg');\n        }\n    },\n\n    /** Unix-second ETA (uint48) at which the pending BLS aggregator change becomes executable. */\n    async pendingBLSAggEta() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'pendingBLSAggEta',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingBLSAggEta');\n        }\n    },\n\n    // Constants\n    async APNTS_TOKEN() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'APNTS_TOKEN',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'APNTS_TOKEN');\n        }\n    },\n\n    async REGISTRY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'REGISTRY',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n        }\n    },\n\n    async BLS_AGGREGATOR() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'BLS_AGGREGATOR',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'BLS_AGGREGATOR');\n        }\n    },\n\n    async ETH_USD_PRICE_FEED() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'ETH_USD_PRICE_FEED',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'ETH_USD_PRICE_FEED');\n        }\n    },\n\n    async treasury() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'treasury',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'treasury');\n        }\n    },\n\n    async xpntsFactory() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'xpntsFactory',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'xpntsFactory');\n        }\n    },\n\n    async entryPoint() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'entryPoint',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'entryPoint');\n        }\n    },\n\n    // The following constants were removed from the SuperPaymaster ABI in the v5.x refactor\n    // (MAX_ETH_USD_PRICE / MIN_ETH_USD_PRICE now live only on the standalone Paymaster\n    // contract). Each throws NOT_IMPLEMENTED rather than issuing a call that reverts on-chain.\n    async MAX_PROTOCOL_FEE() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'MAX_PROTOCOL_FEE was removed in the v5.x contract refactor; it is no longer exposed by SuperPaymaster.');\n    },\n\n    async MAX_ETH_USD_PRICE() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'MAX_ETH_USD_PRICE was removed from SuperPaymaster in the v5.x refactor; read it from the standalone Paymaster contract instead.');\n    },\n\n    async MIN_ETH_USD_PRICE() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'MIN_ETH_USD_PRICE was removed from SuperPaymaster in the v5.x refactor; read it from the standalone Paymaster contract instead.');\n    },\n\n    async PAYMASTER_DATA_OFFSET() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'PAYMASTER_DATA_OFFSET was removed in the v5.x contract refactor; it is no longer exposed by SuperPaymaster.');\n    },\n\n    async PRICE_CACHE_DURATION() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'PRICE_CACHE_DURATION was removed in the v5.x contract refactor; it is no longer exposed by SuperPaymaster.');\n    },\n\n    async RATE_OFFSET() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'RATE_OFFSET was removed in the v5.x contract refactor; it is no longer exposed by SuperPaymaster.');\n    },\n\n    async VALIDATION_BUFFER_BPS() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'VALIDATION_BUFFER_BPS was removed in the v5.x contract refactor; it is no longer exposed by SuperPaymaster.');\n    },\n\n    async BPS_DENOMINATOR() {\n        throw new AAStarError(ErrorCode.NOT_IMPLEMENTED,\n            'BPS_DENOMINATOR was removed in the v5.x contract refactor; it is no longer exposed by SuperPaymaster.');\n    },\n\n    /** Duration (seconds) of the aPNTs-token-change timelock. */\n    async APNTS_TOKEN_TIMELOCK() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'APNTS_TOKEN_TIMELOCK',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'APNTS_TOKEN_TIMELOCK');\n        }\n    },\n\n    // Admin\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SuperPaymasterABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { PaymasterABI } from '../abis/index.js';\nimport { validateAddress, validateAmount, validatePositive, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\nexport type PaymasterActions = {\n    // Deposit Management\n    depositFor: (args: { user: Address, token: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    withdraw: (args: { token: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    balances: (args: { user: Address, token: Address }) => Promise<bigint>;\n    \n    // Token Price Management (Operator/Owner only)\n    setTokenPrice: (args: { token: Address, price: bigint, account?: Account | Address }) => Promise<Hash>;\n    setCachedPrice: (args: { price: bigint, timestamp: number, account?: Account | Address }) => Promise<Hash>;\n    tokenPrices: (args: { token: Address }) => Promise<bigint>;\n    \n    // Validation (EntryPoint calls)\n    validatePaymasterUserOp: (args: { userOp: any, userOpHash: Hex, maxCost: bigint }) => Promise<{ context: Hex, validationData: bigint }>;\n    postOp: (args: { mode: number, context: Hex, actualGasCost: bigint, actualUserOpFeePerGas: bigint, account?: Account | Address }) => Promise<Hash>;\n    \n    // Initialization & Configuration\n    initialize: (args: { _entryPoint: Address, _owner: Address, _treasury: Address, _ethUsdPriceFeed: Address, _serviceFeeRate: bigint, _maxGasCostCap: bigint, _priceStalenessThreshold: bigint, account?: Account | Address }) => Promise<Hash>;\n    setTreasury: (args: { treasury: Address, account?: Account | Address }) => Promise<Hash>;\n    setServiceFeeRate: (args: { _serviceFeeRate: bigint, account?: Account | Address }) => Promise<Hash>;\n    setMaxGasCostCap: (args: { _maxGasCostCap: bigint, account?: Account | Address }) => Promise<Hash>;\n    setPriceStalenessThreshold: (args: { _priceStalenessThreshold: bigint, account?: Account | Address }) => Promise<Hash>;\n    \n    // Pause/Unpause\n    pause: (args: { account?: Account | Address }) => Promise<Hash>;\n    unpause: (args: { account?: Account | Address }) => Promise<Hash>;\n    paused: () => Promise<boolean>;\n    \n    // Price Management\n    cachedPrice: () => Promise<{ price: bigint, updatedAt: number }>;\n    updatePrice: (args: { account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated The deployed Paymaster ABI has no `getRealtimeTokenCost` — this wrapper now calls `calculateCost(gasCost, token, true)` (realtime mode). Prefer {@link calculateCost}. */\n    getRealtimeTokenCost: (args: { gasCost: bigint, token: Address }) => Promise<bigint>;\n    calculateCost: (args: { gasCost: bigint, token: Address, useRealtime: boolean }) => Promise<bigint>;\n    \n    // Registry Integration\n    isActiveInRegistry: () => Promise<boolean>;\n    isRegistrySet: () => Promise<boolean>;\n    deactivateFromRegistry: (args: { account?: Account | Address }) => Promise<Hash>;\n    registry: () => Promise<Address>;\n    \n    // Configuration Getters\n    ethUsdPriceFeed: () => Promise<Address>;\n    serviceFeeRate: () => Promise<bigint>;\n    maxGasCostCap: () => Promise<bigint>;\n    priceStalenessThreshold: () => Promise<bigint>;\n    treasury: () => Promise<Address>;\n    oracleDecimals: () => Promise<number>;\n    tokenDecimals: (args: { token: Address }) => Promise<number>;\n    \n    // Constants\n    MAX_ETH_USD_PRICE: () => Promise<bigint>;\n    MIN_ETH_USD_PRICE: () => Promise<bigint>;\n    MAX_GAS_TOKENS: () => Promise<bigint>;\n    MAX_SBTS: () => Promise<bigint>;\n    MAX_SERVICE_FEE: () => Promise<bigint>;\n    \n    // Deposit & Withdrawal (EntryPoint accounting)\n    addDeposit: (args: { account?: Account | Address, value?: bigint }) => Promise<Hash>;\n    withdrawTo: (args: { to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    addStake: (args: { unstakeDelaySec: number, account?: Account | Address, value?: bigint }) => Promise<Hash>;\n    unlockStake: (args: { account?: Account | Address }) => Promise<Hash>;\n    withdrawStake: (args: { to: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // EntryPoint\n    entryPoint: () => Promise<Address>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    version: () => Promise<string>;\n};\n\nexport const paymasterActions = (address: Address) => (client: PublicClient | WalletClient): PaymasterActions => ({\n    // Deposit Management\n    async depositFor({ user, token, amount, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(token, 'token');\n            validatePositive(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'depositFor',\n                args: [user, token, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'depositFor');\n        }\n    },\n\n    async withdraw({ token, amount, account }) {\n        try {\n            validateAddress(token, 'token');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'withdraw',\n                args: [token, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdraw');\n        }\n    },\n\n    async balances({ user, token }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(token, 'token');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'balances',\n                args: [user, token]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'balances');\n        }\n    },\n\n    async setTokenPrice({ token, price, account }) {\n        try {\n            validateAddress(token, 'token');\n            validateAmount(price, 'price');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'setTokenPrice',\n                args: [token, price],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setTokenPrice');\n        }\n    },\n\n    async setCachedPrice({ price, timestamp, account }) {\n        try {\n            validatePositive(price, 'price');\n            validatePositive(BigInt(timestamp), 'timestamp');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'setCachedPrice',\n                args: [price, timestamp],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setCachedPrice');\n        }\n    },\n\n    async tokenPrices({ token }) {\n        try {\n            validateAddress(token, 'token');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'tokenPrices',\n                args: [token]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'tokenPrices');\n        }\n    },\n\n    // Validation\n    async validatePaymasterUserOp({ userOp, userOpHash, maxCost }) {\n        try {\n            validateRequired(userOp, 'userOp');\n            validateRequired(userOpHash, 'userOpHash');\n            validateAmount(maxCost, 'maxCost');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'validatePaymasterUserOp',\n                args: [userOp, userOpHash, maxCost]\n            }) as any;\n            return { context: result[0], validationData: result[1] };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'validatePaymasterUserOp');\n        }\n    },\n\n    async postOp({ mode, context, actualGasCost, actualUserOpFeePerGas, account }) {\n        try {\n            validateRequired(mode, 'mode');\n            validateRequired(context, 'context');\n            validateAmount(actualGasCost, 'actualGasCost');\n            validateAmount(actualUserOpFeePerGas, 'actualUserOpFeePerGas');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'postOp',\n                args: [mode, context, actualGasCost, actualUserOpFeePerGas],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'postOp');\n        }\n    },\n\n    // Deposit & Withdrawal\n    async addDeposit({ account, value }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'addDeposit',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain,\n                value\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addDeposit');\n        }\n    },\n\n    async withdrawTo({ to, amount, account }) {\n        try {\n            validateAddress(to, 'to');\n            validatePositive(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'withdrawTo',\n                args: [to, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawTo');\n        }\n    },\n\n    async addStake({ unstakeDelaySec, account, value }) {\n        try {\n            validateRequired(unstakeDelaySec, 'unstakeDelaySec');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'addStake',\n                args: [unstakeDelaySec],\n                account: account as any,\n                chain: (client as any).chain,\n                value\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addStake');\n        }\n    },\n\n    async unlockStake({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'unlockStake',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unlockStake');\n        }\n    },\n\n    async withdrawStake({ to, account }) {\n        try {\n            validateAddress(to, 'to');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'withdrawStake',\n                args: [to],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawStake');\n        }\n    },\n\n    // EntryPoint\n    async entryPoint() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'entryPoint',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'entryPoint');\n        }\n    },\n\n    // Ownership\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n\n    // Initialization & Configuration\n    async initialize({ _entryPoint, _owner, _treasury, _ethUsdPriceFeed, _serviceFeeRate, _maxGasCostCap, _priceStalenessThreshold, account }) {\n        try {\n            validateAddress(_entryPoint, 'entryPoint');\n            validateAddress(_owner, 'owner');\n            validateAddress(_treasury, 'treasury');\n            validateAddress(_ethUsdPriceFeed, 'ethUsdPriceFeed');\n            validateAmount(_serviceFeeRate, 'serviceFeeRate');\n            validateAmount(_maxGasCostCap, 'maxGasCostCap');\n            validateAmount(_priceStalenessThreshold, 'priceStalenessThreshold');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'initialize',\n                args: [_entryPoint, _owner, _treasury, _ethUsdPriceFeed, _serviceFeeRate, _maxGasCostCap, _priceStalenessThreshold],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'initialize');\n        }\n    },\n\n    async setTreasury({ treasury, account }) {\n        try {\n            validateAddress(treasury, 'treasury');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'setTreasury',\n                args: [treasury],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setTreasury');\n        }\n    },\n\n    async setServiceFeeRate({ _serviceFeeRate, account }) {\n        try {\n            validateAmount(_serviceFeeRate, 'serviceFeeRate');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'setServiceFeeRate',\n                args: [_serviceFeeRate],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setServiceFeeRate');\n        }\n    },\n\n    async setMaxGasCostCap({ _maxGasCostCap, account }) {\n        try {\n            validateAmount(_maxGasCostCap, 'maxGasCostCap');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'setMaxGasCostCap',\n                args: [_maxGasCostCap],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setMaxGasCostCap');\n        }\n    },\n\n    async setPriceStalenessThreshold({ _priceStalenessThreshold, account }) {\n        try {\n            validateAmount(_priceStalenessThreshold, 'priceStalenessThreshold');\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'setPriceStalenessThreshold',\n                args: [_priceStalenessThreshold],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setPriceStalenessThreshold');\n        }\n    },\n\n    // Pause/Unpause\n    async pause({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'pause',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pause');\n        }\n    },\n\n    async unpause({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'unpause',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unpause');\n        }\n    },\n\n    async paused() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'paused',\n                args: []\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'paused');\n        }\n    },\n\n    // Price Management\n    async cachedPrice() {\n        try {\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'cachedPrice',\n                args: []\n            }) as any;\n            \n            if (Array.isArray(result)) {\n                return { price: result[0], updatedAt: Number(result[1]) };\n            }\n            return { \n                price: result.price, \n                updatedAt: Number(result.updatedAt) \n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cachedPrice');\n        }\n    },\n\n    async updatePrice({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'updatePrice',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updatePrice');\n        }\n    },\n\n    async getRealtimeTokenCost({ gasCost, token }) {\n        try {\n            validateAmount(gasCost, 'gasCost');\n            validateAddress(token, 'token');\n            // On-chain fn: calculateCost(gasCost, token, useRealtime). The legacy\n            // getRealtimeTokenCost is the realtime variant, i.e. useRealtime = true.\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'calculateCost',\n                args: [gasCost, token, true]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRealtimeTokenCost');\n        }\n    },\n\n    async calculateCost({ gasCost, token, useRealtime }) {\n        try {\n            validateAmount(gasCost, 'gasCost');\n            validateAddress(token, 'token');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'calculateCost',\n                args: [gasCost, token, useRealtime]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'calculateCost');\n        }\n    },\n\n    // Registry Integration\n    async isActiveInRegistry() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'isActiveInRegistry',\n                args: []\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isActiveInRegistry');\n        }\n    },\n\n    async isRegistrySet() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'isRegistrySet',\n                args: []\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isRegistrySet');\n        }\n    },\n\n    async deactivateFromRegistry({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'deactivateFromRegistry',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'deactivateFromRegistry');\n        }\n    },\n\n    async registry() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'registry',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'registry');\n        }\n    },\n\n    // Configuration Getters\n    async ethUsdPriceFeed() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'ethUsdPriceFeed',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'ethUsdPriceFeed');\n        }\n    },\n\n    async serviceFeeRate() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'serviceFeeRate',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'serviceFeeRate');\n        }\n    },\n\n    async maxGasCostCap() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'maxGasCostCap',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'maxGasCostCap');\n        }\n    },\n\n    async priceStalenessThreshold() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'priceStalenessThreshold',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'priceStalenessThreshold');\n        }\n    },\n\n    async treasury() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'treasury',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'treasury');\n        }\n    },\n\n    async oracleDecimals() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'oracleDecimals',\n                args: []\n            }) as Promise<number>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'oracleDecimals');\n        }\n    },\n\n    async tokenDecimals({ token }) {\n        try {\n            validateAddress(token, 'token');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'tokenDecimals',\n                args: [token]\n            }) as Promise<number>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'tokenDecimals');\n        }\n    },\n\n    // Constants\n    async MAX_ETH_USD_PRICE() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'MAX_ETH_USD_PRICE',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_ETH_USD_PRICE');\n        }\n    },\n\n    async MIN_ETH_USD_PRICE() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'MIN_ETH_USD_PRICE',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MIN_ETH_USD_PRICE');\n        }\n    },\n\n    async MAX_GAS_TOKENS() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'MAX_GAS_TOKENS',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_GAS_TOKENS');\n        }\n    },\n\n    async MAX_SBTS() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'MAX_SBTS',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_SBTS');\n        }\n    },\n\n    async MAX_SERVICE_FEE() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'MAX_SERVICE_FEE',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_SERVICE_FEE');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PaymasterABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { ReputationSystemABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateAmount } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\nexport type ReputationRule = {\n    baseScore: bigint;\n    activityBonus: bigint;\n    maxBonus: bigint;\n    description: string;\n};\n\nexport type ReputationBreakdown = {\n    baseScore: bigint;\n    nftBonus: bigint;\n    activityBonus: bigint;\n    multiplier: bigint;\n};\n\nexport type ReputationActions = {\n    // Rule Configuration\n    /** @deprecated The deployed ReputationSystem ABI has no `setReputationRule` — this wrapper now calls the ABI-confirmed `setRule(ruleId, base, bonus, max, desc)` (the {@link ReputationRule} struct is flattened). Prefer {@link setRule}. */\n    setReputationRule: (args: { ruleId: Hex, rule: ReputationRule, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — no single-rule getter by ruleId. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link communityRules} (per-community) or {@link defaultRule}. */\n    getReputationRule: (args: { ruleId: Hex }) => Promise<ReputationRule>;\n    /** @deprecated Removed in the v5.x contract refactor — rules have no enable/disable toggle. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    enableRule: (args: { ruleId: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — rules have no enable/disable toggle. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    disableRule: (args: { ruleId: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — no `isRuleActive(ruleId)` getter (rule activity is per-community). Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link getActiveRules}({ community }) and test membership. */\n    isRuleActive: (args: { ruleId: Hex }) => Promise<boolean>;\n    getActiveRules: (args: { community: Address }) => Promise<Hex[]>;\n    /** @deprecated Removed in the v5.x contract refactor — no global rule counter. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    getRuleCount: () => Promise<bigint>;\n    setRule: (args: { ruleId: Hex, base: bigint, bonus: bigint, max: bigint, desc: string, account?: Account | Address }) => Promise<Hash>;\n    communityRules: (args: { community: Address, ruleId: Hex }) => Promise<ReputationRule>;\n    communityActiveRules: (args: { community: Address, index: bigint }) => Promise<Hex>;\n    defaultRule: () => Promise<ReputationRule>;\n    \n    // Score Calculation\n    computeScore: (args: { user: Address, communities: Address[], ruleIds: Hex[][], activities: bigint[][] }) => Promise<bigint>;\n    calculateReputation: (args: { user: Address, community: Address, timestamp: bigint }) => Promise<{ communityScore: bigint, globalScore: bigint }>;\n    getReputationBreakdown: (args: { user: Address, community: Address, timestamp: bigint }) => Promise<ReputationBreakdown>;\n    /**\n     * @deprecated NOT available on-chain. `getUserScore` does not exist in the deployed\n     * ReputationSystem ABI (calling it reverts). There is no single-argument global score\n     * getter — use {@link calculateReputation} (returns `globalScore`, requires a community\n     * + timestamp) or read `globalReputation(user)` from the Registry contract instead.\n     * This method now throws a descriptive error rather than reverting on-chain.\n     */\n    getUserScore: (args: { user: Address }) => Promise<bigint>;\n    /**\n     * @deprecated NOT available on-chain. `getCommunityScore` does not exist in the deployed\n     * ReputationSystem ABI (calling it reverts). There is no aggregate per-community score\n     * getter — use {@link communityReputations} (per-user community score) or\n     * {@link calculateReputation} (returns `communityScore` for a given user) instead.\n     * This method now throws a descriptive error rather than reverting on-chain.\n     */\n    getCommunityScore: (args: { community: Address }) => Promise<bigint>;\n    communityReputations: (args: { community: Address, user: Address }) => Promise<bigint>;\n    setCommunityReputation: (args: { community: Address, user: Address, score: bigint, account?: Account | Address }) => Promise<Hash>;\n    \n    // NFT Boost\n    setNFTBoost: (args: { collection: Address, boost: bigint, account?: Account | Address }) => Promise<Hash>;\n    nftCollectionBoost: (args: { collection: Address }) => Promise<bigint>;\n    nftHoldStart: (args: { user: Address, collection: Address }) => Promise<bigint>;\n    updateNFTHoldStart: (args: { collection: Address, account?: Account | Address }) => Promise<Hash>;\n    boostedCollections: (args: { index: bigint }) => Promise<Address>;\n    entropyFactors: (args: { community: Address }) => Promise<bigint>;\n    \n    // Batch Operations\n    /** @deprecated Removed in the v5.x contract refactor — no `batchUpdateScores`. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link setCommunityReputation} per user or {@link syncToRegistry}. */\n    batchUpdateScores: (args: { users: Address[], scores: bigint[], account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — no batch sync variant. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link syncToRegistry} (per-user, with proof). */\n    batchSyncToRegistry: (args: { users: Address[], account?: Account | Address }) => Promise<Hash>;\n    syncToRegistry: (args: { \n        user: Address, \n        communities: Address[], \n        ruleIds: Hex[][], \n        activities: bigint[][], \n        epoch: bigint, \n        proof: Hex, \n        account?: Account | Address \n    }) => Promise<Hash>;\n    \n    // Admin & Config\n    /** @deprecated Removed in the v5.x contract refactor — REGISTRY is immutable (no `setRegistry`). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    setRegistry: (args: { registry: Address, account?: Account | Address }) => Promise<Hash>;\n    setEntropyFactor: (args: { community: Address, factor: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — no no-arg `getEntropyFactor`. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link entropyFactors}({ community }). */\n    getEntropyFactor: () => Promise<bigint>;\n    \n    // Constants\n    REGISTRY: () => Promise<Address>;\n    /** Max number of NFT collections that can grant a reputation boost (view). ABI: MAX_BOOSTED_COLLECTIONS() -> uint256. */\n    MAX_BOOSTED_COLLECTIONS: () => Promise<bigint>;\n\n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n};\n\nexport const reputationActions = (address: Address) => (client: PublicClient | WalletClient): ReputationActions => ({\n    // Rule Configuration\n    async setReputationRule({ ruleId, rule, account }) {\n        try {\n            validateRequired(ruleId, 'ruleId');\n            validateRequired(rule, 'rule');\n            // On-chain fn: setRule(bytes32 ruleId, uint256 base, uint256 bonus, uint256 max, string desc).\n            // The legacy struct-arg `setReputationRule` does not exist; flatten the struct.\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'setRule',\n                args: [ruleId, rule.baseScore, rule.activityBonus, rule.maxBonus, rule.description],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setReputationRule');\n        }\n    },\n\n    async getReputationRule({ ruleId }) {\n        // Removed in the v5.x contract refactor: there is no single-rule getter keyed solely\n        // by ruleId. Validate then throw rather than revert on-chain.\n        validateRequired(ruleId, 'ruleId');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'getReputationRule was removed in the v5.x contract refactor; rules are per-community now. ' +\n            'Use communityRules({ community, ruleId }) or defaultRule() instead.'\n        );\n    },\n\n    async enableRule({ ruleId }) {\n        validateRequired(ruleId, 'ruleId');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'enableRule was removed in the v5.x contract refactor; rules no longer have an ' +\n            'enable/disable toggle. Use setRule(...) to (re)define a rule.'\n        );\n    },\n\n    async disableRule({ ruleId }) {\n        validateRequired(ruleId, 'ruleId');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'disableRule was removed in the v5.x contract refactor; rules no longer have an ' +\n            'enable/disable toggle.'\n        );\n    },\n\n    async isRuleActive({ ruleId }) {\n        // Removed in the v5.x contract refactor: rule activity is per-community, so there is\n        // no `isRuleActive(ruleId)` getter. Validate then throw rather than revert on-chain.\n        validateRequired(ruleId, 'ruleId');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'isRuleActive was removed in the v5.x contract refactor; rule activity is per-community. ' +\n            'Use getActiveRules({ community }) and check whether the ruleId is in the returned set.'\n        );\n    },\n\n    async getActiveRules({ community }) {\n        try {\n            validateAddress(community, 'community');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'getActiveRules',\n                args: [community]\n            }) as Hex[];\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getActiveRules');\n        }\n    },\n\n    async getRuleCount() {\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'getRuleCount was removed in the v5.x contract refactor; there is no global rule ' +\n            'counter. Use getActiveRules({ community }).length for a per-community count.'\n        );\n    },\n\n    // Score Calculation\n    async computeScore({ user, communities, ruleIds, activities }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(communities, 'communities');\n            validateRequired(ruleIds, 'ruleIds');\n            validateRequired(activities, 'activities');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'computeScore',\n                args: [user, communities, ruleIds, activities]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'computeScore');\n        }\n    },\n\n    async calculateReputation({ user, community, timestamp }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(community, 'community');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'calculateReputation',\n                args: [user, community, timestamp]\n            }) as any;\n\n            if (Array.isArray(result)) {\n                return { communityScore: result[0], globalScore: result[1] };\n            }\n            return result as { communityScore: bigint, globalScore: bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'calculateReputation');\n        }\n    },\n\n    async getReputationBreakdown({ user, community, timestamp }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(community, 'community');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'getReputationBreakdown',\n                args: [user, community, timestamp]\n            }) as any;\n\n            if (Array.isArray(result)) {\n                return {\n                    baseScore: result[0],\n                    nftBonus: result[1],\n                    activityBonus: result[2],\n                    multiplier: result[3]\n                };\n            }\n            return result as ReputationBreakdown;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getReputationBreakdown');\n        }\n    },\n\n    /**\n     * @deprecated `getUserScore` is absent from the deployed ReputationSystem ABI — there\n     * is no single-argument global score getter. Throws instead of issuing a call that\n     * would revert on-chain. Use `calculateReputation({ user, community, timestamp })`\n     * (read its `globalScore`) or the Registry's `globalReputation(user)` getter.\n     */\n    async getUserScore({ user }) {\n        validateAddress(user, 'user');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'getUserScore is not available on-chain: the deployed ReputationSystem ABI has ' +\n            'no getUserScore function. Use calculateReputation({ user, community, timestamp }) ' +\n            'and read globalScore, or read globalReputation(user) from the Registry contract.'\n        );\n    },\n\n    /**\n     * @deprecated `getCommunityScore` is absent from the deployed ReputationSystem ABI —\n     * there is no aggregate per-community score getter. Throws instead of issuing a call\n     * that would revert on-chain. Use `communityReputations({ community, user })` for a\n     * per-user community score, or `calculateReputation(...)` and read `communityScore`.\n     */\n    async getCommunityScore({ community }) {\n        validateAddress(community, 'community');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'getCommunityScore is not available on-chain: the deployed ReputationSystem ABI ' +\n            'has no getCommunityScore function. Use communityReputations({ community, user }) ' +\n            'for a per-user community score, or calculateReputation(...) and read communityScore.'\n        );\n    },\n\n    async communityReputations({ community, user }) {\n        try {\n            validateAddress(community, 'community');\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'communityReputations',\n                args: [community, user]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'communityReputations');\n        }\n    },\n\n    async setCommunityReputation({ community, user, score, account }) {\n        try {\n            validateAddress(community, 'community');\n            validateAddress(user, 'user');\n            validateAmount(score, 'score');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'setCommunityReputation',\n                args: [community, user, score],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setCommunityReputation');\n        }\n    },\n\n    async setRule({ ruleId, base, bonus, max, desc, account }) {\n        try {\n            validateRequired(ruleId, 'ruleId');\n            validateAmount(base, 'base');\n            validateAmount(bonus, 'bonus');\n            validateAmount(max, 'max');\n            validateRequired(desc, 'desc');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'setRule',\n                args: [ruleId, base, bonus, max, desc],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setRule');\n        }\n    },\n\n    async communityRules({ community, ruleId }) {\n        try {\n            validateAddress(community, 'community');\n            validateRequired(ruleId, 'ruleId');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'communityRules',\n                args: [community, ruleId]\n            }) as any;\n\n            if (Array.isArray(result)) {\n                return {\n                    baseScore: result[0],\n                    activityBonus: result[1],\n                    maxBonus: result[2],\n                    description: result[3]\n                };\n            }\n            return result as ReputationRule;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'communityRules');\n        }\n    },\n\n    async communityActiveRules({ community, index }) {\n        try {\n            validateAddress(community, 'community');\n            validateRequired(index, 'index');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'communityActiveRules',\n                args: [community, index]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'communityActiveRules');\n        }\n    },\n\n    async defaultRule() {\n        try {\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'defaultRule',\n                args: []\n            }) as any;\n\n            if (Array.isArray(result)) {\n                return {\n                    baseScore: result[0],\n                    activityBonus: result[1],\n                    maxBonus: result[2],\n                    description: result[3]\n                };\n            }\n            return result as ReputationRule;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'defaultRule');\n        }\n    },\n\n    // NFT Boost\n    async setNFTBoost({ collection, boost, account }) {\n        try {\n            validateAddress(collection, 'collection');\n            validateAmount(boost, 'boost');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'setNFTBoost',\n                args: [collection, boost],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setNFTBoost');\n        }\n    },\n\n    async nftCollectionBoost({ collection }) {\n        try {\n            validateAddress(collection, 'collection');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'nftCollectionBoost',\n                args: [collection]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'nftCollectionBoost');\n        }\n    },\n\n    async nftHoldStart({ user, collection }) {\n        try {\n            validateAddress(user, 'user');\n            validateAddress(collection, 'collection');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'nftHoldStart',\n                args: [user, collection]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'nftHoldStart');\n        }\n    },\n\n    async updateNFTHoldStart({ collection, account }) {\n        try {\n            validateAddress(collection, 'collection');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'updateNFTHoldStart',\n                args: [collection],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'updateNFTHoldStart');\n        }\n    },\n\n    async boostedCollections({ index }) {\n        try {\n            validateRequired(index, 'index');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'boostedCollections',\n                args: [index]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'boostedCollections');\n        }\n    },\n\n    async entropyFactors({ community }) {\n        try {\n            validateAddress(community, 'community');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'entropyFactors',\n                args: [community]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'entropyFactors');\n        }\n    },\n\n    // Batch Operations\n    async batchUpdateScores({ users, scores }) {\n        // Removed in the v5.x contract refactor: no batch score setter on ReputationSystem.\n        validateRequired(users, 'users');\n        validateRequired(scores, 'scores');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'batchUpdateScores was removed in the v5.x contract refactor; use ' +\n            'setCommunityReputation({ community, user, score }) per user, or syncToRegistry(...).'\n        );\n    },\n\n    async batchSyncToRegistry({ users }) {\n        // Removed in the v5.x contract refactor: there is no batch sync variant. The ABI\n        // exposes only the per-user syncToRegistry(user, communities, ruleIds, activities, epoch, proof).\n        validateRequired(users, 'users');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'batchSyncToRegistry was removed in the v5.x contract refactor; use ' +\n            'syncToRegistry({ user, communities, ruleIds, activities, epoch, proof }) per user instead.'\n        );\n    },\n\n    async syncToRegistry({ user, communities, ruleIds, activities, epoch, proof, account }) {\n        try {\n            validateAddress(user, 'user');\n            validateRequired(communities, 'communities');\n            validateRequired(ruleIds, 'ruleIds');\n            validateRequired(activities, 'activities');\n            validateAmount(epoch, 'epoch');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'syncToRegistry',\n                args: [user, communities, ruleIds, activities, epoch, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'syncToRegistry');\n        }\n    },\n\n    // Admin & Config\n    async setRegistry({ registry }) {\n        // Removed in the v5.x contract refactor: ReputationSystem.REGISTRY is immutable.\n        validateAddress(registry, 'registry');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setRegistry was removed in the v5.x contract refactor; ReputationSystem.REGISTRY is ' +\n            'immutable (set at construction) and cannot be changed on-chain.'\n        );\n    },\n\n    async setEntropyFactor({ community, factor, account }) {\n        try {\n            validateAddress(community, 'community');\n            validateAmount(factor, 'factor');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'setEntropyFactor',\n                args: [community, factor],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setEntropyFactor');\n        }\n    },\n\n    async getEntropyFactor() {\n        // Removed in the v5.x contract refactor: entropy factors are per-community now, so\n        // there is no no-arg `getEntropyFactor`. Throw rather than revert on-chain.\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'getEntropyFactor was removed in the v5.x contract refactor; entropy factors are ' +\n            'per-community. Use entropyFactors({ community }) instead.'\n        );\n    },\n\n    // Constants\n    async REGISTRY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'REGISTRY',\n                args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n        }\n    },\n\n    async MAX_BOOSTED_COLLECTIONS() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'MAX_BOOSTED_COLLECTIONS',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_BOOSTED_COLLECTIONS');\n        }\n    },\n\n    // Ownership\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: ReputationSystemABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, type BlockTag } from 'viem';\nimport { GTokenABI, xPNTsTokenABI } from '../abis/index.js';\nimport { validateAddress, validateAmount, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n// ERC20 Standard Actions\nexport type ERC20Actions = {\n    totalSupply: (args: { token: Address }) => Promise<bigint>;\n    balanceOf: (args: { token: Address, account: Address }) => Promise<bigint>;\n    transfer: (args: { token: Address, to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    transferFrom: (args: { token: Address, from: Address, to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    approve: (args: { token: Address, spender: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    allowance: (args: { token: Address, owner: Address, spender: Address }) => Promise<bigint>;\n    name: (args: { token: Address }) => Promise<string>;\n    symbol: (args: { token: Address }) => Promise<string>;\n    decimals: (args: { token: Address }) => Promise<number>;\n};\n\n// GToken Actions (extends ERC20)\nexport type GTokenActions = ERC20Actions & {\n    mint: (args: { token: Address, to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    burn: (args: { token: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    burnFrom: (args: { token: Address, from: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    cap: (args: { token: Address }) => Promise<bigint>;\n    remainingMintableSupply: (args: { token: Address }) => Promise<bigint>;\n    version: (args: { token: Address }) => Promise<string>;\n    owner: (args: { token: Address }) => Promise<Address>;\n    transferOwnership: (args: { token: Address, newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { token: Address, account?: Account | Address }) => Promise<Hash>;\n};\n\n/**\n * Optional block pin for credibility reads — supports deterministic / historical reads.\n * Give at most one of `blockNumber` / `blockTag`; omit both to read the latest block.\n */\nexport type BlockPin = { blockNumber?: bigint, blockTag?: BlockTag };\n\n/** Build a viem block-pin read option (at most one of blockNumber/blockTag); empty when neither is given → latest. */\nconst blockPin = (blockNumber?: bigint, blockTag?: BlockTag): BlockPin =>\n    blockNumber !== undefined ? { blockNumber } : blockTag !== undefined ? { blockTag } : {};\n\n/**\n * Economic-credibility snapshot for a community xPNTs token (CC-33).\n *\n * `credibilityScore` is a 0–100 trust score the token contract derives on-chain from\n * backing vs. issuance. The three `*USD` fields are raw on-chain USD accounting integers\n * (uint256) in the xPNTsToken contract's own USD unit — treat them as opaque integers for\n * comparison/ratio; confirm the display decimals against the SuperPaymaster (xPNTsToken)\n * contract before formatting for humans. They are NOT wei — do not `formatEther`.\n */\nexport type Credibility = {\n    /** 0–100 trust score (uint8) derived on-chain from backing vs. issuance. */\n    credibilityScore: number;\n    /** True when circulating (issued) value exceeds backing — the community over-issued its xPNTs. */\n    isOverIssued: boolean;\n    /** Circulating xPNTs value in the contract's USD accounting unit (raw uint256). */\n    issuedValueUSD: bigint;\n    /** Backing/collateral value in the contract's USD accounting unit (raw uint256). */\n    backingValueUSD: bigint;\n    /** Effective issuance cap in the contract's USD accounting unit (raw uint256). */\n    effectiveCapUSD: bigint;\n};\n\n// XPNTsToken Actions (extends ERC20 + aPNTs features + Spending Limits)\nexport type XPNTsTokenActions = ERC20Actions & {\n    // Mint/Burn\n    mint: (args: { token: Address, to: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    burn: (args: { token: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    burnFrom: (args: { token: Address, from: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    burnFromWithOpHash: (args: { token: Address, from: Address, amount: bigint, userOpHash: Hex, account?: Account | Address }) => Promise<Hash>;\n    \n    // aPNTs features\n    exchangeRate: (args: { token: Address }) => Promise<bigint>;\n    updateExchangeRate: (args: { token: Address, newRate: bigint, account?: Account | Address }) => Promise<Hash>;\n    debts: (args: { token: Address, user: Address }) => Promise<bigint>;\n    getDebt: (args: { token: Address, user: Address }) => Promise<bigint>;\n    recordDebt: (args: { token: Address, user: Address, amountXPNTs: bigint, account?: Account | Address }) => Promise<Hash>;\n    repayDebt: (args: { token: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    \n    // Auto Approval\n    addAutoApprovedSpender: (args: { token: Address, spender: Address, account?: Account | Address }) => Promise<Hash>;\n    removeAutoApprovedSpender: (args: { token: Address, spender: Address, account?: Account | Address }) => Promise<Hash>;\n    autoApprovedSpenders: (args: { token: Address, spender: Address }) => Promise<boolean>;\n    emergencyRevokePaymaster: (args: { token: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Constants & View\n    /** @deprecated The deployed xPNTsToken ABI renamed this constant to `MAX_SINGLE_TX_LIMIT_CAP`; this wrapper now reads that. Prefer {@link MAX_SINGLE_TX_LIMIT_CAP}. */\n    MAX_SINGLE_TX_LIMIT: (args: { token: Address }) => Promise<bigint>;\n    needsApproval: (args: { token: Address, owner: Address, spender: Address, amount: bigint }) => Promise<boolean>;\n    \n    // EIP-712 / EIP-2612\n    DOMAIN_SEPARATOR: (args: { token: Address }) => Promise<Hex>;\n    nonces: (args: { token: Address, owner: Address }) => Promise<bigint>;\n    permit: (args: { token: Address, owner: Address, spender: Address, value: bigint, deadline: bigint, v: number, r: Hex, s: Hex, account?: Account | Address }) => Promise<Hash>;\n    eip712Domain: (args: { token: Address }) => Promise<any>;\n    \n    // ERC677\n    transferAndCall: (args: { token: Address, to: Address, amount: bigint, data?: Hex, account?: Account | Address }) => Promise<Hash>;\n    \n    // Metadata & Config\n    communityENS: (args: { token: Address }) => Promise<string>;\n    communityName: (args: { token: Address }) => Promise<string>;\n    communityOwner: (args: { token: Address }) => Promise<Address>;\n    getMetadata: (args: { token: Address }) => Promise<{ name: string, symbol: string, communityName: string, communityENS: string, communityOwner: Address }>;\n    transferCommunityOwnership: (args: { token: Address, newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    setSuperPaymasterAddress: (args: { token: Address, spAddress: Address, account?: Account | Address }) => Promise<Hash>;\n    SUPERPAYMASTER_ADDRESS: (args: { token: Address }) => Promise<Address>;\n    FACTORY: (args: { token: Address }) => Promise<Address>;\n    version: (args: { token: Address }) => Promise<string>;\n    usedOpHashes: (args: { token: Address, opHash: Hex }) => Promise<boolean>;\n\n    // Spending Limits (admin writes)\n    /** Set the per-tx burn ceiling. State-changing tx → resolves to a tx `Hash`. */\n    setMaxSingleTxLimit: (args: { token: Address, newLimit: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Set the per-spender daily burn cap (in whole tokens). State-changing tx → resolves to a tx `Hash`. */\n    setSpenderDailyCap: (args: { token: Address, newCap: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Set a per-spender daily burn-cap OVERRIDE for a specific spender (admin). State-changing tx → resolves to a tx `Hash`. */\n    setSpenderDailyCapFor: (args: { token: Address, spender: Address, newCap: bigint, account?: Account | Address }) => Promise<Hash>;\n    maxSingleTxLimit: (args: { token: Address }) => Promise<bigint>;\n    spenderDailyCapTokens: (args: { token: Address }) => Promise<bigint>;\n    /** Read a spender's daily-cap override (0 = no override; the global `spenderDailyCapTokens` applies). */\n    spenderDailyCapOverride: (args: { token: Address, spender: Address }) => Promise<bigint>;\n    spenderRateLimit: (args: { token: Address, spender: Address }) => Promise<{ dailyBurnTotal: bigint, windowStart: bigint, reserved: bigint }>;\n\n    // Debt with op-hash replay protection\n    /**\n     * Record APNTs-denominated debt for a user, guarded by a unique `opHash` to prevent replay.\n     * ABI: recordDebtWithOpHash(address user, uint256 amountAPNTs, bytes32 opHash). This is a\n     * state-changing tx, so it resolves to the transaction `Hash`; the function has no return value.\n     */\n    recordDebtWithOpHash: (args: { token: Address, user: Address, amountAPNTs: bigint, opHash: Hex, account?: Account | Address }) => Promise<Hash>;\n    usedDebtHashes: (args: { token: Address, opHash: Hex }) => Promise<boolean>;\n\n    // Facilitator allow-list (admin writes)\n    /** Add an approved facilitator. State-changing tx → resolves to a tx `Hash`. */\n    addApprovedFacilitator: (args: { token: Address, facilitator: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Remove an approved facilitator. State-changing tx → resolves to a tx `Hash`. */\n    removeApprovedFacilitator: (args: { token: Address, facilitator: Address, account?: Account | Address }) => Promise<Hash>;\n    approvedFacilitators: (args: { token: Address, facilitator: Address }) => Promise<boolean>;\n\n    // Factory / Emergency lifecycle (admin writes)\n    /** Permanently renounce the factory link. State-changing tx → resolves to a tx `Hash`. */\n    renounceFactory: (args: { token: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Clear the emergency-disabled flag. State-changing tx → resolves to a tx `Hash`. */\n    unsetEmergencyDisabled: (args: { token: Address, account?: Account | Address }) => Promise<Hash>;\n    emergencyDisabled: (args: { token: Address }) => Promise<boolean>;\n    emergencyRevokedAddress: (args: { token: Address }) => Promise<Address>;\n    exchangeRateUpdatedAt: (args: { token: Address }) => Promise<bigint>;\n\n    // Exchange-rate guard constants (views)\n    EXCHANGE_RATE_COOLDOWN: (args: { token: Address }) => Promise<bigint>;\n    EXCHANGE_RATE_DELTA_BPS: (args: { token: Address }) => Promise<bigint>;\n    EXCHANGE_RATE_MAX: (args: { token: Address }) => Promise<bigint>;\n    EXCHANGE_RATE_MIN: (args: { token: Address }) => Promise<bigint>;\n    MAX_SINGLE_TX_LIMIT_CAP: (args: { token: Address }) => Promise<bigint>;\n\n    // --- Economic credibility (CC-33: community xPNTs credibility disclosure) ---\n    /** 0–100 on-chain trust score for a community xPNTs token. */\n    credibilityScore: (args: { token: Address } & BlockPin) => Promise<number>;\n    /** True when the community over-issued (circulating value > backing). */\n    isOverIssued: (args: { token: Address } & BlockPin) => Promise<boolean>;\n    issuedValueUSD: (args: { token: Address } & BlockPin) => Promise<bigint>;\n    backingValueUSD: (args: { token: Address } & BlockPin) => Promise<bigint>;\n    effectiveCapUSD: (args: { token: Address } & BlockPin) => Promise<bigint>;\n    /**\n     * One-shot read of the full economic-credibility snapshot ({@link Credibility}) for a\n     * community xPNTs token — the five credibility views batched at a SINGLE block so a\n     * disclosure UI reads a self-consistent snapshot (score can't drift out of sync with the\n     * USD fields). If the caller pins a block via {@link BlockPin}, all five reads use it;\n     * otherwise the current block number is resolved once and all five reads are pinned to it.\n     * Enumerate community tokens via `xPNTsFactoryActions().getAllTokens()`\n     * (or `deployedTokens`/`getDeployedCount`).\n     */\n    getCredibility: (args: { token: Address } & BlockPin) => Promise<Credibility>;\n};\n\n// Unified TokenActions (deprecated legacy support)\nexport type TokenActions = GTokenActions & XPNTsTokenActions;\n\nexport const gTokenActions = (address?: Address) => (client: PublicClient | WalletClient): GTokenActions => {\n    const abi = GTokenABI;\n    const actions = {\n        async totalSupply({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'totalSupply', args: [] }) as Promise<bigint>;\n        },\n        async balanceOf({ token = address, account }: { token?: Address, account: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(account, 'account');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'balanceOf', args: [account] }) as Promise<bigint>;\n        },\n        async transfer({ token = address, to, amount, account }: { token?: Address, to: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transfer', args: [to, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transfer'); }\n        },\n        async transferFrom({ token = address, from, to, amount, account }: { token?: Address, from: Address, to: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(from, 'from');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transferFrom', args: [from, to, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transferFrom'); }\n        },\n        async approve({ token = address, spender, amount, account }: { token?: Address, spender: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(spender, 'spender');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'approve', args: [spender, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'approve'); }\n        },\n        async allowance({ token = address, owner, spender }: { token?: Address, owner: Address, spender: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(owner, 'owner');\n            validateAddress(spender, 'spender');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'allowance', args: [owner, spender] }) as Promise<bigint>;\n        },\n        async mint({ token = address, to, amount, account }: { token?: Address, to: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'mint', args: [to, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'mint'); }\n        },\n        async burn({ token = address, amount, account }: { token?: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'burn', args: [amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'burn'); }\n        },\n        async burnFrom({ token = address, from, amount, account }: { token?: Address, from: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(from, 'from');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'burnFrom', args: [from, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'burnFrom'); }\n        },\n        async cap({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'cap', args: [] }) as Promise<bigint>;\n        },\n        async remainingMintableSupply({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'remainingMintableSupply', args: [] }) as Promise<bigint>;\n        },\n        async name({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'name', args: [] }) as Promise<string>;\n        },\n        async symbol({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'symbol', args: [] }) as Promise<string>;\n        },\n        async decimals({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'decimals', args: [] }) as Promise<number>;\n        },\n        async version({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'version', args: [] }) as Promise<string>;\n        },\n        async owner({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'owner', args: [] }) as Promise<Address>;\n        },\n        async transferOwnership({ token = address, newOwner, account }: { token?: Address, newOwner: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(newOwner, 'newOwner');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transferOwnership', args: [newOwner], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transferOwnership'); }\n        },\n        async renounceOwnership({ token = address, account }: { token?: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'renounceOwnership', args: [], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'renounceOwnership'); }\n        },\n    };\n    return actions as GTokenActions;\n};\n\nexport const xPNTsTokenActions = (address?: Address) => (client: PublicClient | WalletClient): XPNTsTokenActions => {\n    const abi = xPNTsTokenABI;\n    const actions = {\n        async totalSupply({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'totalSupply', args: [] }) as Promise<bigint>;\n        },\n        async balanceOf({ token = address, account }: { token?: Address, account: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(account, 'account');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'balanceOf', args: [account] }) as Promise<bigint>;\n        },\n        async transfer({ token = address, to, amount, account }: { token?: Address, to: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transfer', args: [to, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transfer'); }\n        },\n        async transferFrom({ token = address, from, to, amount, account }: { token?: Address, from: Address, to: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(from, 'from');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transferFrom', args: [from, to, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transferFrom'); }\n        },\n        async approve({ token = address, spender, amount, account }: { token?: Address, spender: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(spender, 'spender');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'approve', args: [spender, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'approve'); }\n        },\n        async allowance({ token = address, owner, spender }: { token?: Address, owner: Address, spender: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(owner, 'owner');\n            validateAddress(spender, 'spender');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'allowance', args: [owner, spender] }) as Promise<bigint>;\n        },\n        async mint({ token = address, to, amount, account }: { token?: Address, to: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'mint', args: [to, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'mint'); }\n        },\n        async burn({ token = address, amount, account }: { token?: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'burn', args: [amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'burn'); }\n        },\n        async burnFrom({ token = address, from, amount, account }: { token?: Address, from: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(from, 'from');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'burn', args: [from, amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'burnFrom'); }\n        },\n        async burnFromWithOpHash({ token = address, from, amount, userOpHash, account }: { token?: Address, from: Address, amount: bigint, userOpHash: Hex, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(from, 'from');\n                validateAmount(amount, 'amount');\n                validateRequired(userOpHash, 'userOpHash');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'burnFromWithOpHash', args: [from, amount, userOpHash], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'burnFromWithOpHash'); }\n        },\n        async name({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'name', args: [] }) as Promise<string>;\n        },\n        async symbol({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'symbol', args: [] }) as Promise<string>;\n        },\n        async decimals({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'decimals', args: [] }) as Promise<number>;\n        },\n        async version({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'version', args: [] }) as Promise<string>;\n        },\n        async exchangeRate({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'exchangeRate', args: [] }) as Promise<bigint>;\n        },\n        async updateExchangeRate({ token = address, newRate, account }: { token?: Address, newRate: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAmount(newRate, 'newRate');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'updateExchangeRate', args: [newRate], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'updateExchangeRate'); }\n        },\n        async debts({ token = address, user }: { token?: Address, user: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({ \n                address: token!, \n                abi, \n                functionName: 'debts', \n                args: [user] \n            }) as bigint;\n        },\n        async getDebt({ token = address, user }: { token?: Address, user: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(user, 'user');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'getDebt', args: [user] }) as Promise<bigint>;\n        },\n        async recordDebt({ token = address, user, amountXPNTs, account }: { token?: Address, user: Address, amountXPNTs: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(user, 'user');\n                validateAmount(amountXPNTs, 'amountXPNTs');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'recordDebt', args: [user, amountXPNTs], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'recordDebt'); }\n        },\n        async repayDebt({ token = address, amount, account }: { token?: Address, amount: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'repayDebt', args: [amount], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'repayDebt'); }\n        },\n        async MAX_SINGLE_TX_LIMIT({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            // On-chain fn: MAX_SINGLE_TX_LIMIT_CAP() — the bare MAX_SINGLE_TX_LIMIT constant was renamed.\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'MAX_SINGLE_TX_LIMIT_CAP', args: [] }) as Promise<bigint>;\n        },\n        async needsApproval({ token = address, owner, spender, amount }: { token?: Address, owner: Address, spender: Address, amount: bigint }) {\n            validateAddress(token!, 'token');\n            validateAddress(owner, 'owner');\n            validateAddress(spender, 'spender');\n            validateAmount(amount, 'amount');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'needsApproval', args: [owner, spender, amount] }) as Promise<boolean>;\n        },\n        async addAutoApprovedSpender({ token = address, spender, account }: { token?: Address, spender: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(spender, 'spender');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'addAutoApprovedSpender', args: [spender], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'addAutoApprovedSpender'); }\n        },\n        async removeAutoApprovedSpender({ token = address, spender, account }: { token?: Address, spender: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(spender, 'spender');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'removeAutoApprovedSpender', args: [spender], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'removeAutoApprovedSpender'); }\n        },\n        async autoApprovedSpenders({ token = address, spender }: { token?: Address, spender: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(spender, 'spender');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'autoApprovedSpenders', args: [spender] }) as Promise<boolean>;\n        },\n        async emergencyRevokePaymaster({ token = address, account }: { token?: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'emergencyRevokePaymaster', args: [], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'emergencyRevokePaymaster'); }\n        },\n        async DOMAIN_SEPARATOR({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'DOMAIN_SEPARATOR', args: [] }) as Promise<Hex>;\n        },\n        async nonces({ token = address, owner }: { token?: Address, owner: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(owner, 'owner');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'nonces', args: [owner] }) as Promise<bigint>;\n        },\n        async permit({ token = address, owner, spender, value, deadline, v, r, s, account }: { token?: Address, owner: Address, spender: Address, value: bigint, deadline: bigint, v: number, r: Hex, s: Hex, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(owner, 'owner');\n                validateAddress(spender, 'spender');\n                validateAmount(value, 'value');\n                validateRequired(deadline, 'deadline');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'permit', args: [owner, spender, value, deadline, v, r, s], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'permit'); }\n        },\n        async eip712Domain({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'eip712Domain', args: [] }) as Promise<any>;\n        },\n        async transferAndCall({ token = address, to, amount, data = '0x', account }: { token?: Address, to: Address, amount: bigint, data?: Hex, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(to, 'to');\n                validateAmount(amount, 'amount');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transferAndCall', args: [to, amount, data], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transferAndCall'); }\n        },\n        async communityENS({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'communityENS', args: [] }) as Promise<string>;\n        },\n        async communityName({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'communityName', args: [] }) as Promise<string>;\n        },\n        async communityOwner({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'communityOwner', args: [] }) as Promise<Address>;\n        },\n        async getMetadata({ token = address } = {}) {\n            const abi = xPNTsTokenABI;\n            const res = await (client as PublicClient).readContract({ \n                address: token!, \n                abi, \n                functionName: 'getMetadata', \n                args: [] \n            }) as any;\n\n            if (Array.isArray(res)) {\n                return {\n                    name: res[0],\n                    symbol: res[1],\n                    communityName: res[2],\n                    communityENS: res[3],\n                    communityOwner: res[4]\n                };\n            }\n            return res as { name: string, symbol: string, communityName: string, communityENS: string, communityOwner: Address };\n        },\n        async transferCommunityOwnership({ token = address, newOwner, account }: { token?: Address, newOwner: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(newOwner, 'newOwner');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'transferCommunityOwnership', args: [newOwner], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'transferCommunityOwnership'); }\n        },\n        async setSuperPaymasterAddress({ token = address, spAddress, account }: { token?: Address, spAddress: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(spAddress, 'spAddress');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'setSuperPaymasterAddress', args: [spAddress], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'setSuperPaymasterAddress'); }\n        },\n        async SUPERPAYMASTER_ADDRESS({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'SUPERPAYMASTER_ADDRESS', args: [] }) as Promise<Address>;\n        },\n        async FACTORY({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'FACTORY', args: [] }) as Promise<Address>;\n        },\n        async usedOpHashes({ token = address, opHash }: { token?: Address, opHash: Hex }) {\n            validateAddress(token!, 'token');\n            validateRequired(opHash, 'opHash');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'usedOpHashes', args: [opHash] }) as Promise<boolean>;\n        },\n        // --- Spending Limits ---\n        async setMaxSingleTxLimit({ token = address, newLimit, account }: { token?: Address, newLimit: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAmount(newLimit, 'newLimit');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'setMaxSingleTxLimit', args: [newLimit], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'setMaxSingleTxLimit'); }\n        },\n        async setSpenderDailyCap({ token = address, newCap, account }: { token?: Address, newCap: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAmount(newCap, 'newCap');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'setSpenderDailyCap', args: [newCap], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'setSpenderDailyCap'); }\n        },\n        async setSpenderDailyCapFor({ token = address, spender, newCap, account }: { token?: Address, spender: Address, newCap: bigint, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(spender, 'spender');\n                validateAmount(newCap, 'newCap');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'setSpenderDailyCapFor', args: [spender, newCap], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'setSpenderDailyCapFor'); }\n        },\n        async maxSingleTxLimit({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'maxSingleTxLimit', args: [] }) as Promise<bigint>;\n        },\n        async spenderDailyCapTokens({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'spenderDailyCapTokens', args: [] }) as Promise<bigint>;\n        },\n        async spenderDailyCapOverride({ token = address, spender }: { token?: Address, spender: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(spender, 'spender');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'spenderDailyCapOverride', args: [spender] }) as Promise<bigint>;\n        },\n        async spenderRateLimit({ token = address, spender }: { token?: Address, spender: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(spender, 'spender');\n            // ABI: spenderRateLimit(address) -> (uint128 dailyBurnTotal, uint64 windowStart, uint64 reserved)\n            const res = await (client as PublicClient).readContract({ address: token!, abi, functionName: 'spenderRateLimit', args: [spender] }) as any;\n            if (Array.isArray(res)) {\n                return { dailyBurnTotal: res[0] as bigint, windowStart: res[1] as bigint, reserved: res[2] as bigint };\n            }\n            return res as { dailyBurnTotal: bigint, windowStart: bigint, reserved: bigint };\n        },\n        // --- Debt with op-hash replay protection ---\n        async recordDebtWithOpHash({ token = address, user, amountAPNTs, opHash, account }: { token?: Address, user: Address, amountAPNTs: bigint, opHash: Hex, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(user, 'user');\n                validateAmount(amountAPNTs, 'amountAPNTs');\n                validateRequired(opHash, 'opHash');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'recordDebtWithOpHash', args: [user, amountAPNTs, opHash], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'recordDebtWithOpHash'); }\n        },\n        async usedDebtHashes({ token = address, opHash }: { token?: Address, opHash: Hex }) {\n            validateAddress(token!, 'token');\n            validateRequired(opHash, 'opHash');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'usedDebtHashes', args: [opHash] }) as Promise<boolean>;\n        },\n        // --- Facilitator allow-list ---\n        async addApprovedFacilitator({ token = address, facilitator, account }: { token?: Address, facilitator: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(facilitator, 'facilitator');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'addApprovedFacilitator', args: [facilitator], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'addApprovedFacilitator'); }\n        },\n        async removeApprovedFacilitator({ token = address, facilitator, account }: { token?: Address, facilitator: Address, account?: Account | Address }) {\n            try {\n                validateAddress(token!, 'token');\n                validateAddress(facilitator, 'facilitator');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'removeApprovedFacilitator', args: [facilitator], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'removeApprovedFacilitator'); }\n        },\n        async approvedFacilitators({ token = address, facilitator }: { token?: Address, facilitator: Address }) {\n            validateAddress(token!, 'token');\n            validateAddress(facilitator, 'facilitator');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'approvedFacilitators', args: [facilitator] }) as Promise<boolean>;\n        },\n        // --- Factory / Emergency lifecycle ---\n        async renounceFactory({ token = address, account }: { token?: Address, account?: Account | Address } = {}) {\n            try {\n                validateAddress(token!, 'token');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'renounceFactory', args: [], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'renounceFactory'); }\n        },\n        async unsetEmergencyDisabled({ token = address, account }: { token?: Address, account?: Account | Address } = {}) {\n            try {\n                validateAddress(token!, 'token');\n                return await (client as any).writeContract({ address: token!, abi, functionName: 'unsetEmergencyDisabled', args: [], account: account as any, chain: (client as any).chain });\n            } catch (error) { throw AAStarError.fromViemError(error as Error, 'unsetEmergencyDisabled'); }\n        },\n        async emergencyDisabled({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'emergencyDisabled', args: [] }) as Promise<boolean>;\n        },\n        async emergencyRevokedAddress({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'emergencyRevokedAddress', args: [] }) as Promise<Address>;\n        },\n        async exchangeRateUpdatedAt({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'exchangeRateUpdatedAt', args: [] }) as Promise<bigint>;\n        },\n        // --- Exchange-rate guard constants ---\n        async EXCHANGE_RATE_COOLDOWN({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'EXCHANGE_RATE_COOLDOWN', args: [] }) as Promise<bigint>;\n        },\n        async EXCHANGE_RATE_DELTA_BPS({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'EXCHANGE_RATE_DELTA_BPS', args: [] }) as Promise<bigint>;\n        },\n        async EXCHANGE_RATE_MAX({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'EXCHANGE_RATE_MAX', args: [] }) as Promise<bigint>;\n        },\n        async EXCHANGE_RATE_MIN({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'EXCHANGE_RATE_MIN', args: [] }) as Promise<bigint>;\n        },\n        async MAX_SINGLE_TX_LIMIT_CAP({ token = address } = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'MAX_SINGLE_TX_LIMIT_CAP', args: [] }) as Promise<bigint>;\n        },\n\n        // --- Economic credibility (CC-33) ---\n        async credibilityScore({ token = address, blockNumber, blockTag }: { token?: Address } & BlockPin = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'credibilityScore', args: [], ...blockPin(blockNumber, blockTag) }) as Promise<number>;\n        },\n        async isOverIssued({ token = address, blockNumber, blockTag }: { token?: Address } & BlockPin = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'isOverIssued', args: [], ...blockPin(blockNumber, blockTag) }) as Promise<boolean>;\n        },\n        async issuedValueUSD({ token = address, blockNumber, blockTag }: { token?: Address } & BlockPin = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'issuedValueUSD', args: [], ...blockPin(blockNumber, blockTag) }) as Promise<bigint>;\n        },\n        async backingValueUSD({ token = address, blockNumber, blockTag }: { token?: Address } & BlockPin = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'backingValueUSD', args: [], ...blockPin(blockNumber, blockTag) }) as Promise<bigint>;\n        },\n        async effectiveCapUSD({ token = address, blockNumber, blockTag }: { token?: Address } & BlockPin = {}) {\n            validateAddress(token!, 'token');\n            return (client as PublicClient).readContract({ address: token!, abi, functionName: 'effectiveCapUSD', args: [], ...blockPin(blockNumber, blockTag) }) as Promise<bigint>;\n        },\n        async getCredibility({ token = address, blockNumber, blockTag }: { token?: Address } & BlockPin = {}) {\n            validateAddress(token!, 'token');\n            // Pin all five reads to ONE block so the snapshot is self-consistent (score can't\n            // drift out of sync with the USD fields across blocks). If the caller didn't pin a\n            // block, resolve the current block number once and pin every read to it.\n            let at: { blockNumber?: bigint, blockTag?: BlockTag };\n            if (blockNumber !== undefined) at = { blockNumber };\n            else if (blockTag !== undefined) at = { blockTag };\n            else at = { blockNumber: await (client as PublicClient).getBlockNumber() };\n            const [credibilityScore, isOverIssued, issuedValueUSD, backingValueUSD, effectiveCapUSD] = await Promise.all([\n                (client as PublicClient).readContract({ address: token!, abi, functionName: 'credibilityScore', args: [], ...at }) as Promise<number>,\n                (client as PublicClient).readContract({ address: token!, abi, functionName: 'isOverIssued', args: [], ...at }) as Promise<boolean>,\n                (client as PublicClient).readContract({ address: token!, abi, functionName: 'issuedValueUSD', args: [], ...at }) as Promise<bigint>,\n                (client as PublicClient).readContract({ address: token!, abi, functionName: 'backingValueUSD', args: [], ...at }) as Promise<bigint>,\n                (client as PublicClient).readContract({ address: token!, abi, functionName: 'effectiveCapUSD', args: [], ...at }) as Promise<bigint>,\n            ]);\n            return { credibilityScore, isOverIssued, issuedValueUSD, backingValueUSD, effectiveCapUSD };\n        },\n    };\n    return actions as XPNTsTokenActions;\n};\n\n// Legacy compatibility\nexport const tokenActions = (address?: Address) => (client: PublicClient | WalletClient): TokenActions => {\n    // This is essentially xPNTsTokenActions for now as it's the more complex one\n    return xPNTsTokenActions(address)(client) as unknown as TokenActions;\n};\n","import { type Address, type PublicClient, type WalletClient, type Hash, type Account } from 'viem';\nimport { EntryPointABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateAmount } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\nexport enum EntryPointVersion {\n    V06 = '0.6',\n    V07 = '0.7',\n}\n\nexport type EntryPointActions = {\n    balanceOf: (args: { account: Address }) => Promise<bigint>;\n    depositTo: (args: { account: Address, amount: bigint, txAccount?: Account | Address }) => Promise<Hash>;\n    getNonce: (args: { sender: Address, key: bigint }) => Promise<bigint>;\n    getDepositInfo: (args: { account: Address }) => Promise<{ deposit: bigint, staked: boolean, stake: bigint, unstakeDelaySec: number, withdrawTime: number }>;\n    entryPointAddress: Address;\n};\n\nexport const entryPointActions = (address: Address) => (client: PublicClient | WalletClient): EntryPointActions => ({\n    entryPointAddress: address,\n    async balanceOf({ account }) {\n        try {\n            validateAddress(account, 'account');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: EntryPointABI,\n                functionName: 'balanceOf',\n                args: [account]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'balanceOf');\n        }\n    },\n\n    async depositTo({ account, amount, txAccount }) {\n        try {\n            validateAddress(account, 'account');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: EntryPointABI,\n                functionName: 'depositTo',\n                args: [account],\n                value: amount,\n                account: txAccount as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'depositTo');\n        }\n    },\n\n    async getNonce({ sender, key }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateRequired(key, 'key');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: EntryPointABI,\n                functionName: 'getNonce',\n                args: [sender, key]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getNonce');\n        }\n    },\n\n    async getDepositInfo({ account }) {\n        try {\n            validateAddress(account, 'account');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: EntryPointABI,\n                functionName: 'getDepositInfo',\n                args: [account]\n            }) as any;\n\n            return {\n                deposit: result.deposit,\n                staked: result.staked,\n                stake: result.stake,\n                unstakeDelaySec: result.unstakeDelaySec,\n                withdrawTime: result.withdrawTime\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getDepositInfo');\n        }\n    }\n});\n","import { createPublicClient, http, type PublicClient, type Hex, type Address, type Chain, erc20Abi, formatEther } from 'viem';\n\n/**\n * Interface definitions\n */\nexport interface ValidationParams {\n    rpcUrl: string;\n    chain: Chain;\n}\n\nexport interface RoleValidationParams extends ValidationParams {\n    registryAddress: Address;\n    roleId: Hex;\n    userAddress: Address;\n}\n\nexport interface BalanceValidationParams extends ValidationParams {\n    address: Address;\n    minBalance?: string;\n}\n\nexport interface TokenBalanceValidationParams extends BalanceValidationParams {\n    tokenAddress: Address;\n}\n\nexport interface DeploymentValidationParams extends ValidationParams {\n    contractAddress: Address;\n}\n\nexport interface ValidationResult {\n    valid: boolean;\n    message?: string;\n    data?: any;\n}\n\nexport interface AccountBalance {\n    address: Address;\n    eth: bigint;\n    gToken: bigint;\n    aPNTs: bigint;\n    xPNTs: bigint;\n}\n\nexport class StateValidator {\n    /**\n     * Create PublicClient helper\n     */\n    private static createClient(params: ValidationParams): PublicClient {\n        return createPublicClient({\n            chain: params.chain,\n            transport: http(params.rpcUrl)\n        }) as unknown as PublicClient;\n    }\n\n    /**\n     * Batch fetch balances for multiple accounts\n     */\n    static async getAccountBalances(params: {\n        rpcUrl: string;\n        chain: Chain;\n        addresses: Address[];\n        gTokenAddress?: Address;\n        aPNTsAddress?: Address;\n        xPNTsAddress?: Address;\n    }): Promise<AccountBalance[]> {\n        const client = this.createClient({ rpcUrl: params.rpcUrl, chain: params.chain });\n\n        const results = await Promise.all(\n            params.addresses.map(async (address) => {\n                const [eth, gToken, aPNTs, xPNTs] = await Promise.all([\n                    client.getBalance({ address }),\n                    params.gTokenAddress\n                        ? client.readContract({\n                              address: params.gTokenAddress,\n                              abi: erc20Abi,\n                              functionName: 'balanceOf',\n                              args: [address]\n                          }) as Promise<bigint>\n                        : Promise.resolve(0n),\n                    params.aPNTsAddress\n                        ? client.readContract({\n                              address: params.aPNTsAddress,\n                              abi: erc20Abi,\n                              functionName: 'balanceOf',\n                              args: [address]\n                          }) as Promise<bigint>\n                        : Promise.resolve(0n),\n                    params.xPNTsAddress\n                        ? client.readContract({\n                              address: params.xPNTsAddress,\n                              abi: erc20Abi,\n                              functionName: 'balanceOf',\n                              args: [address]\n                          }) as Promise<bigint>\n                        : Promise.resolve(0n)\n                ]);\n\n                return {\n                    address,\n                    eth,\n                    gToken,\n                    aPNTs,\n                    xPNTs\n                };\n            })\n        );\n\n        return results;\n    }\n\n    /**\n     * Role Validation\n     */\n    static async validateRole(params: RoleValidationParams): Promise<ValidationResult> {\n        try {\n            const client = this.createClient(params);\n            \n            const hasRole = await client.readContract({\n                address: params.registryAddress,\n                abi: [{\n                    name: 'hasRole',\n                    type: 'function',\n                    stateMutability: 'view',\n                    inputs: [\n                        { name: 'roleId', type: 'bytes32' },\n                        { name: 'user', type: 'address' }\n                    ],\n                    outputs: [{ name: '', type: 'bool' }]\n                }],\n                functionName: 'hasRole',\n                args: [params.roleId, params.userAddress]\n            }) as boolean;\n\n            return {\n                valid: hasRole,\n                message: hasRole \n                    ? `✅ User ${params.userAddress} has role ${params.roleId}`\n                    : `❌ User ${params.userAddress} does NOT have role ${params.roleId}`,\n                data: { hasRole }\n            };\n        } catch (error) {\n            return {\n                valid: false,\n                message: `❌ Role validation failed: ${(error as Error).message}`,\n                data: { error }\n            };\n        }\n    }\n\n    /**\n     * ETH Balance Validation\n     */\n    static async validateETHBalance(params: BalanceValidationParams): Promise<ValidationResult> {\n        try {\n            const client = this.createClient(params);\n            const balance = await client.getBalance({ address: params.address });\n            const balanceETH = Number(formatEther(balance));\n\n            if (params.minBalance) {\n                const minBalanceWei = BigInt(Math.floor(parseFloat(params.minBalance) * 1e18));\n                const sufficient = balance >= minBalanceWei;\n\n                return {\n                    valid: sufficient,\n                    message: sufficient\n                        ? `✅ ETH balance (${balanceETH.toFixed(4)}) meets minimum (${params.minBalance})`\n                        : `❌ ETH balance (${balanceETH.toFixed(4)}) below minimum (${params.minBalance})`,\n                    data: { balance, balanceETH, minBalance: params.minBalance }\n                };\n            }\n\n            return {\n                valid: true,\n                message: `ℹ️  ETH balance: ${balanceETH.toFixed(4)} ETH`,\n                data: { balance, balanceETH }\n            };\n        } catch (error) {\n            return {\n                valid: false,\n                message: `❌ ETH balance validation failed: ${(error as Error).message}`,\n                data: { error }\n            };\n        }\n    }\n\n    /**\n     * Token Balance Validation\n     */\n    static async validateTokenBalance(params: TokenBalanceValidationParams): Promise<ValidationResult> {\n        try {\n            const client = this.createClient(params);\n            \n            const balance = await client.readContract({\n                address: params.tokenAddress,\n                abi: erc20Abi,\n                functionName: 'balanceOf',\n                args: [params.address]\n            }) as bigint;\n\n            const balanceToken = Number(formatEther(balance));\n\n            if (params.minBalance) {\n                const minBalanceWei = BigInt(Math.floor(parseFloat(params.minBalance) * 1e18));\n                const sufficient = balance >= minBalanceWei;\n\n                return {\n                    valid: sufficient,\n                    message: sufficient\n                        ? `✅ Token balance (${balanceToken.toFixed(4)}) meets minimum (${params.minBalance})`\n                        : `❌ Token balance (${balanceToken.toFixed(4)}) below minimum (${params.minBalance})`,\n                    data: { balance, balanceToken, minBalance: params.minBalance }\n                };\n            }\n\n            return {\n                valid: true,\n                message: `ℹ️  Token balance: ${balanceToken.toFixed(4)}`,\n                data: { balance, balanceToken }\n            };\n        } catch (error) {\n            return {\n                valid: false,\n                message: `❌ Token balance validation failed: ${(error as Error).message}`,\n                data: { error }\n            };\n        }\n    }\n\n    /**\n     * Deployment Validation\n     */\n    static async validateDeployment(params: DeploymentValidationParams): Promise<ValidationResult> {\n        try {\n            const client = this.createClient(params);\n            const code = await client.getBytecode({ address: params.contractAddress });\n            const isDeployed = code !== undefined && code !== '0x';\n\n            return {\n                valid: isDeployed,\n                message: isDeployed\n                    ? `✅ Contract deployed at ${params.contractAddress}`\n                    : `❌ No contract found at ${params.contractAddress}`,\n                data: { code, isDeployed }\n            };\n        } catch (error) {\n            return {\n                valid: false,\n                message: `❌ Deployment validation failed: ${(error as Error).message}`,\n                data: { error }\n            };\n        }\n    }\n}\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { DVTValidatorABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\nexport type DVTActions = {\n    // Proposal Management\n    createSlashProposal: (args: { operator: Address, level: number, reason: string, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — DVT slash signing is off-chain (BLS), there is no `signSlashProposal` in the DVTValidator ABI. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    signSlashProposal: (args: { proposalId: bigint, signature: Hex, account?: Account | Address }) => Promise<Hash>;\n    executeSlashWithProof: (args: { proposalId: bigint, repUsers: Address[], newScores: bigint[], epoch: bigint, proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    markProposalExecuted: (args: { id: bigint, account?: Account | Address }) => Promise<Hash>;\n    proposals: (args: { proposalId: bigint }) => Promise<{ operator: Address, slashLevel: number, reason: string, executed: boolean }>;\n    nextProposalId: () => Promise<bigint>;\n    \n    // Validator Management\n    isValidator: (args: { user: Address }) => Promise<boolean>;\n    addValidator: (args: { v: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Remove a validator from the active set (owner-gated). ABI: removeValidator(address v). */\n    removeValidator: (args: { v: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Prune a validator entry (cleanup of a removed/stale validator). ABI: pruneValidator(address v). */\n    pruneValidator: (args: { v: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // BLS Aggregator Integration\n    setBLSAggregator: (args: { aggregator: Address, account?: Account | Address }) => Promise<Hash>;\n    BLS_AGGREGATOR: () => Promise<Address>;\n    REGISTRY: () => Promise<Address>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n};\n\nexport const dvtActions = (address: Address) => (client: PublicClient | WalletClient): DVTActions => ({\n    // Proposal Management\n    async createSlashProposal({ operator, level, reason, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateRequired(reason, 'reason');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'createProposal',\n                args: [operator, level, reason],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createSlashProposal');\n        }\n    },\n    \n    async signSlashProposal({ proposalId, signature }) {\n        // `signSlashProposal` was removed in the v5.x contract refactor: slash-proposal\n        // co-signing is performed OFF-CHAIN via BLS (signatures are aggregated and submitted\n        // through the BLSAggregator / executeWithProof path), so the DVTValidator ABI exposes\n        // no such function. Validate inputs then throw rather than revert on-chain.\n        validateRequired(proposalId, 'proposalId');\n        validateRequired(signature, 'signature');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'signSlashProposal was removed in the v5.x contract refactor; DVT slash signing is ' +\n            'off-chain (BLS). Aggregate signatures off-chain and submit via the BLSAggregator ' +\n            '(verifyAndExecute) or DVTValidator.executeWithProof instead.'\n        );\n    },\n\n    async executeSlashWithProof({ proposalId, repUsers, newScores, epoch, proof, account }) {\n        try {\n            validateRequired(proposalId, 'proposalId');\n            validateRequired(repUsers, 'repUsers');\n            validateRequired(newScores, 'newScores');\n            validateRequired(epoch, 'epoch');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'executeWithProof',\n                args: [proposalId, repUsers, newScores, epoch, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeSlashWithProof');\n        }\n    },\n\n    async markProposalExecuted({ id, account }) {\n        try {\n            validateRequired(id, 'id');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'markProposalExecuted',\n                args: [id],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'markProposalExecuted');\n        }\n    },\n\n    async proposals({ proposalId }) {\n        try {\n            validateRequired(proposalId, 'proposalId');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'proposals',\n                args: [proposalId]\n            }) as any;\n            return {\n                operator: result[0],\n                slashLevel: Number(result[1]),\n                reason: result[2],\n                executed: result[3]\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'proposals');\n        }\n    },\n\n    async nextProposalId() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'nextProposalId',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'nextProposalId');\n        }\n    },\n\n    // Validator Management\n    async isValidator({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'isValidator',\n                args: [user]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isValidator');\n        }\n    },\n\n    async addValidator({ v, account }) {\n        try {\n            validateAddress(v, 'v');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'addValidator',\n                args: [v],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addValidator');\n        }\n    },\n\n    async removeValidator({ v, account }) {\n        try {\n            validateAddress(v, 'v');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'removeValidator',\n                args: [v],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'removeValidator');\n        }\n    },\n\n    async pruneValidator({ v, account }) {\n        try {\n            validateAddress(v, 'v');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'pruneValidator',\n                args: [v],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pruneValidator');\n        }\n    },\n\n    // BLS Aggregator Integration\n    async setBLSAggregator({ aggregator, account }) {\n        try {\n            validateAddress(aggregator, 'aggregator');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'setBLSAggregator',\n                args: [aggregator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setBLSAggregator');\n        }\n    },\n\n    async BLS_AGGREGATOR() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'BLS_AGGREGATOR',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'BLS_AGGREGATOR');\n        }\n    },\n\n    async REGISTRY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'REGISTRY',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n        }\n    },\n\n    // Ownership\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: DVTValidatorABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, parseEther } from 'viem';\nimport { xPNTsFactoryABI, PaymasterFactoryABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateAmount } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\n// xPNTs Factory Actions (基于地址调用的通用接口)\nexport type XPNTsFactoryActions = {\n    // Token 部署\n    deployxPNTsToken: (args: { name: string, symbol: string, communityName: string, communityENS: string, exchangeRate: bigint, paymasterAOA: Address, account?: Account | Address }) => Promise<Hash>;\n    createToken: (args: { name: string, symbol: string, community: Address, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — xPNTsFactory has no `deployForCommunity` (it cannot derive token name/symbol from a community address). Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link deployxPNTsToken} with full token params. */\n    deployForCommunity: (args: { community: Address, account?: Account | Address }) => Promise<Hash>;\n\n    // 查询\n    getTokenAddress: (args: { community: Address }) => Promise<Address>;\n    /** @deprecated Removed in the v5.x contract refactor — xPNTsFactory exposes no CREATE2 address predictor. Throws {@link ErrorCode.NOT_IMPLEMENTED}; read the deployed address via {@link getTokenAddress}/{@link communityToToken} after deploy. */\n    predictAddress: (args: { community: Address, salt?: bigint }) => Promise<Address>;\n    hasToken: (args: { community: Address }) => Promise<boolean>;\n    isTokenDeployed: (args: { community: Address }) => Promise<boolean>;\n    /** @deprecated Removed in the v5.x contract refactor — xPNTsFactory has no token->community reverse lookup (only community->token via {@link communityToToken}). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    getCommunityByToken: (args: { token: Address }) => Promise<Address>;\n    getAllTokens: () => Promise<Address[]>;\n    getDeployedCount: () => Promise<bigint>;\n    getTokenCount: () => Promise<bigint>;\n    deployedTokens: (args: { index: bigint }) => Promise<Address>;\n    communityToToken: (args: { community: Address }) => Promise<Address>;\n\n    // 配置\n    /** @deprecated Removed in the v5.x contract refactor — xPNTsFactory.REGISTRY is immutable (no `setRegistry`). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    setRegistry: (args: { registry: Address, account?: Account | Address }) => Promise<Hash>;\n    setSuperPaymasterAddress: (args: { paymaster: Address, account?: Account | Address }) => Promise<Hash>;\n    setSuperPaymaster: (args: { paymaster: Address, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated Removed in the v5.x contract refactor — xPNTsFactory has no implementation setter (the token `implementation()` is fixed). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    setImplementation: (args: { impl: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Token implementation address. On-chain fn: `implementation()` (the legacy `getImplementation` getter was removed). */\n    getImplementation: () => Promise<Address>;\n\n    // 常量\n    REGISTRY: () => Promise<Address>;\n    SUPERPAYMASTER: () => Promise<Address>;\n    SUPER_PAYMASTER: () => Promise<Address>;\n    /** Token implementation address. On-chain fn: `implementation()` (the legacy `tokenImplementation` getter was removed). */\n    tokenImplementation: () => Promise<Address>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n};\n\n// Paymaster Factory Actions\nexport type PaymasterFactoryActions = {\n    // Deployment\n    deployPaymaster: (args: { version?: string, initData?: Hex, account?: Account | Address }) => Promise<Hash>;\n    deployPaymasterDeterministic: (args: { version: string, salt: Hex, initData: Hex, account?: Account | Address }) => Promise<Hash>;\n    \n    // Query\n    calculateAddress: (args: { owner: Address }) => Promise<Address>;\n    getPaymaster: (args: { owner: Address }) => Promise<Address>;\n    getPaymasterByOperator: (args: { operator: Address }) => Promise<Address>;\n    getOperatorByPaymaster: (args: { paymaster: Address }) => Promise<Address>;\n    getPaymasterCount: () => Promise<bigint>;\n    getAllPaymasters: () => Promise<Address[]>;\n    hasPaymaster: (args: { owner: Address }) => Promise<boolean>;\n    isPaymasterDeployed: (args: { owner: Address }) => Promise<boolean>;\n    \n    // Config\n    addImplementation: (args: { version: string, impl: Address, account?: Account | Address }) => Promise<Hash>;\n    upgradeImplementation: (args: { version: string, impl: Address, account?: Account | Address }) => Promise<Hash>;\n    setDefaultVersion: (args: { version: string, account?: Account | Address }) => Promise<Hash>;\n    setImplementationV4: (args: { impl: Address, account?: Account | Address }) => Promise<Hash>;\n    getImplementation: (args: { version: string }) => Promise<Address>;\n    getImplementationV4: () => Promise<Address>;\n    setRegistry: (args: { registry: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Constants\n    REGISTRY: () => Promise<Address>;\n    /** @deprecated Removed in the v5.x contract refactor — PaymasterFactory has no `ENTRY_POINT` constant. Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    ENTRY_POINT: () => Promise<Address>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    defaultVersion: () => Promise<string>;\n    totalDeployed: () => Promise<bigint>;\n    version: () => Promise<string>;\n};\n\nexport const xPNTsFactoryActions = (address: Address) => (client: PublicClient | WalletClient): XPNTsFactoryActions => {\n    const actions: XPNTsFactoryActions = {\n        async deployxPNTsToken({ name, symbol, communityName, communityENS, exchangeRate, paymasterAOA, account }) {\n            try {\n                validateRequired(name, 'name');\n                validateRequired(symbol, 'symbol');\n                validateRequired(communityName, 'communityName');\n                validateRequired(communityENS, 'communityENS');\n                validateAmount(exchangeRate, 'exchangeRate');\n                validateAddress(paymasterAOA, 'paymasterAOA');\n                return await (client as any).writeContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'deployxPNTsToken',\n                    args: [name, symbol, communityName, communityENS, exchangeRate, paymasterAOA],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'deployxPNTsToken');\n            }\n        },\n\n        async createToken({ name, symbol, community, account }) {\n            return this.deployxPNTsToken({\n                name,\n                symbol,\n                communityName: name,\n                communityENS: symbol,\n                exchangeRate: parseEther('1'),\n                paymasterAOA: '0x0000000000000000000000000000000000000000',\n                account\n            });\n        },\n\n        async deployForCommunity({ community }) {\n            // Removed in the v5.x contract refactor: xPNTsFactory has no `deployForCommunity`.\n            // The only deploy entrypoint is deployxPNTsToken(name, symbol, communityName,\n            // communityENS, exchangeRate, paymasterAOA), which cannot be derived from just a\n            // community address. Validate then throw rather than revert on-chain.\n            validateAddress(community, 'community');\n            throw new AAStarError(\n                ErrorCode.NOT_IMPLEMENTED,\n                'deployForCommunity was removed in the v5.x contract refactor; use ' +\n                'deployxPNTsToken({ name, symbol, communityName, communityENS, exchangeRate, paymasterAOA }).'\n            );\n        },\n\n        async getTokenAddress({ community }) {\n            try {\n                validateAddress(community, 'community');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'getTokenAddress',\n                    args: [community]\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getTokenAddress');\n            }\n        },\n\n        async predictAddress({ community }) {\n            // Removed in the v5.x contract refactor: xPNTsFactory exposes no CREATE2 address\n            // predictor. Validate then throw rather than revert on-chain.\n            validateAddress(community, 'community');\n            throw new AAStarError(\n                ErrorCode.NOT_IMPLEMENTED,\n                'predictAddress was removed in the v5.x contract refactor; xPNTsFactory has no ' +\n                'address predictor. Read the deployed token via getTokenAddress({ community }) ' +\n                'or communityToToken({ community }) after deployment.'\n            );\n        },\n\n        async hasToken({ community }) {\n            try {\n                validateAddress(community, 'community');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'hasToken',\n                    args: [community]\n                }) as boolean;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'hasToken');\n            }\n        },\n\n        async isTokenDeployed({ community }) {\n            return this.hasToken({ community });\n        },\n\n        async getCommunityByToken({ token }) {\n            // Removed in the v5.x contract refactor: xPNTsFactory has no token->community\n            // reverse lookup (only the forward communityToToken/getTokenAddress mappings).\n            // NOTE: communityToToken is the INVERSE direction and is NOT a substitute here.\n            validateAddress(token, 'token');\n            throw new AAStarError(\n                ErrorCode.NOT_IMPLEMENTED,\n                'getCommunityByToken was removed in the v5.x contract refactor; xPNTsFactory only ' +\n                'maps community->token (communityToToken/getTokenAddress). Use isXPNTs(token) to ' +\n                'check whether an address is a factory-deployed token.'\n            );\n        },\n\n        async getAllTokens() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'getAllTokens',\n                    args: []\n                }) as Address[];\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getAllTokens');\n            }\n        },\n\n        async getDeployedCount() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'getDeployedCount',\n                    args: []\n                }) as bigint;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getDeployedCount');\n            }\n        },\n\n        async getTokenCount() {\n            return this.getDeployedCount();\n        },\n\n        async deployedTokens({ index }) {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'deployedTokens',\n                    args: [index]\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'deployedTokens');\n            }\n        },\n\n        async communityToToken({ community }) {\n            try {\n                validateAddress(community, 'community');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'communityToToken',\n                    args: [community]\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'communityToToken');\n            }\n        },\n\n        async setRegistry({ registry }) {\n            // Removed in the v5.x contract refactor: xPNTsFactory.REGISTRY is immutable\n            // (no `setRegistry` in the deployed ABI). Validate then throw rather than revert.\n            validateAddress(registry, 'registry');\n            throw new AAStarError(\n                ErrorCode.NOT_IMPLEMENTED,\n                'setRegistry was removed in the v5.x contract refactor; xPNTsFactory.REGISTRY is ' +\n                'immutable (set at construction) and cannot be changed on-chain.'\n            );\n        },\n\n        async setSuperPaymasterAddress({ paymaster, account }) {\n            try {\n                validateAddress(paymaster, 'paymaster');\n                return await (client as any).writeContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'setSuperPaymasterAddress',\n                    args: [paymaster],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'setSuperPaymasterAddress');\n            }\n        },\n\n        async setSuperPaymaster({ paymaster, account }) {\n            return this.setSuperPaymasterAddress({ paymaster, account });\n        },\n\n        async setImplementation({ impl }) {\n            // Removed in the v5.x contract refactor: xPNTsFactory has no implementation setter\n            // (the token `implementation()` is fixed). Validate then throw rather than revert.\n            validateAddress(impl, 'impl');\n            throw new AAStarError(\n                ErrorCode.NOT_IMPLEMENTED,\n                'setImplementation was removed in the v5.x contract refactor; xPNTsFactory has no ' +\n                'implementation setter (the token implementation() is fixed at deployment).'\n            );\n        },\n\n        async getImplementation() {\n            try {\n                // On-chain fn: implementation() — the legacy `getImplementation` getter was removed.\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'implementation',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getImplementation');\n            }\n        },\n\n        async REGISTRY() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'REGISTRY',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n            }\n        },\n\n        async SUPERPAYMASTER() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'SUPERPAYMASTER',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'SUPERPAYMASTER');\n            }\n        },\n\n        async SUPER_PAYMASTER() {\n            return this.SUPERPAYMASTER();\n        },\n\n        async tokenImplementation() {\n            try {\n                // On-chain fn: implementation() — the legacy `tokenImplementation` getter was removed.\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'implementation',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'tokenImplementation');\n            }\n        },\n\n        async owner() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'owner',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'owner');\n            }\n        },\n\n        async transferOwnership({ newOwner, account }) {\n            try {\n                validateAddress(newOwner, 'newOwner');\n                return await (client as any).writeContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'transferOwnership',\n                    args: [newOwner],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n            }\n        },\n\n        async renounceOwnership({ account }) {\n            try {\n                return await (client as any).writeContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'renounceOwnership',\n                    args: [],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n            }\n        },\n\n        async version() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: xPNTsFactoryABI,\n                    functionName: 'version',\n                    args: []\n                }) as string;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'version');\n            }\n        }\n    };\n    return actions;\n};\n\nexport const paymasterFactoryActions = (address: Address) => (client: PublicClient | WalletClient): PaymasterFactoryActions => {\n    const actions: PaymasterFactoryActions = {\n        async deployPaymaster({ version, initData, account }) {\n            try {\n                const defaultVer = 'v4.2'; \n                const useVer = version || defaultVer;\n                \n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'deployPaymaster',\n                    args: [useVer, initData || '0x'], \n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'deployPaymaster');\n            }\n        },\n\n        async deployPaymasterDeterministic({ version, salt, initData, account }) {\n            try {\n                validateRequired(version, 'version');\n                validateRequired(salt, 'salt');\n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'deployPaymasterDeterministic',\n                    args: [version, salt, initData || '0x'],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'deployPaymasterDeterministic');\n            }\n        },\n\n        async calculateAddress({ owner }) {\n            throw new Error('Predicting address not supported for standard deploy. Use getPaymaster after deploy.');\n        },\n\n        async getPaymaster({ owner }) {\n            return this.getPaymasterByOperator({ operator: owner });\n        },\n\n        async getPaymasterByOperator({ operator }) {\n            try {\n                validateAddress(operator, 'operator');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'getPaymasterByOperator',\n                    args: [operator]\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getPaymasterByOperator');\n            }\n        },\n\n        async getOperatorByPaymaster({ paymaster }) {\n            try {\n                validateAddress(paymaster, 'paymaster');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'getOperatorByPaymaster',\n                    args: [paymaster]\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getOperatorByPaymaster');\n            }\n        },\n\n        async getPaymasterCount() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'getPaymasterCount',\n                    args: []\n                }) as bigint;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getPaymasterCount');\n            }\n        },\n\n        async getAllPaymasters() {\n            try {\n                const count = await this.getPaymasterCount();\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'getPaymasterList',\n                    args: [0n, count]\n                }) as Address[];\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getAllPaymasters');\n            }\n        },\n\n        async hasPaymaster({ owner }) {\n            try {\n                validateAddress(owner, 'owner');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'hasPaymaster',\n                    args: [owner]\n                }) as boolean;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'hasPaymaster');\n            }\n        },\n\n        async isPaymasterDeployed({ owner }) {\n            return this.hasPaymaster({ owner });\n        },\n\n        async addImplementation({ version, impl, account }) {\n            try {\n                validateRequired(version, 'version');\n                validateAddress(impl, 'impl');\n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'addImplementation',\n                    args: [version, impl],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'addImplementation');\n            }\n        },\n\n        async upgradeImplementation({ version, impl, account }) {\n            try {\n                validateRequired(version, 'version');\n                validateAddress(impl, 'impl');\n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'upgradeImplementation',\n                    args: [version, impl],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'upgradeImplementation');\n            }\n        },\n\n        async setDefaultVersion({ version, account }) {\n            try {\n                validateRequired(version, 'version');\n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'setDefaultVersion',\n                    args: [version],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'setDefaultVersion');\n            }\n        },\n\n        async getImplementation({ version }) {\n            try {\n                validateRequired(version, 'version');\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'getImplementation',\n                    args: [version]\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getImplementation');\n            }\n        },\n\n        async setImplementationV4({ impl, account }) {\n            return this.upgradeImplementation({ version: 'v4', impl, account });\n        },\n\n        async getImplementationV4() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'getImplementation', \n                    args: ['v4'] \n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getImplementationV4');\n            }\n        },\n\n        async setRegistry({ registry, account }) {\n            try {\n                validateAddress(registry, 'registry');\n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'setRegistry',\n                    args: [registry],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'setRegistry');\n            }\n        },\n\n        async REGISTRY() {\n            try {\n                // On-chain fn: registry() (lowercase) — PaymasterFactory has no `REGISTRY` constant.\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'registry',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n            }\n        },\n\n        async ENTRY_POINT() {\n            // Removed in the v5.x contract refactor: PaymasterFactory has no `ENTRY_POINT`\n            // constant. Throw rather than issue a call that reverts on-chain.\n            throw new AAStarError(\n                ErrorCode.NOT_IMPLEMENTED,\n                'ENTRY_POINT was removed in the v5.x contract refactor; PaymasterFactory no longer ' +\n                'exposes the EntryPoint address as a constant.'\n            );\n        },\n\n        async owner() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'owner',\n                    args: []\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'owner');\n            }\n        },\n\n        async transferOwnership({ newOwner, account }) {\n            try {\n                validateAddress(newOwner, 'newOwner');\n                return await (client as any).writeContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'transferOwnership',\n                    args: [newOwner],\n                    account: account as any,\n                    chain: (client as any).chain\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n            }\n        },\n\n        async defaultVersion() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'defaultVersion',\n                    args: []\n                }) as string;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'defaultVersion');\n            }\n        },\n\n        async totalDeployed() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'totalDeployed',\n                    args: []\n                }) as bigint;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'totalDeployed');\n            }\n        },\n\n        async version() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address,\n                    abi: PaymasterFactoryABI,\n                    functionName: 'version',\n                    args: []\n                }) as string;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'version');\n            }\n        }\n    };\n    return actions;\n};\n","/**\n * Internal webcrypto alias.\n * We prefer WebCrypto aka globalThis.crypto, which exists in node.js 16+.\n * Falls back to Node.js built-in crypto for Node.js <=v14.\n * See utils.ts for details.\n * @module\n */\n// @ts-ignore\nimport * as nc from 'node:crypto';\nexport const crypto: any =\n  nc && typeof nc === 'object' && 'webcrypto' in nc\n    ? (nc.webcrypto as any)\n    : nc && typeof nc === 'object' && 'randomBytes' in nc\n      ? nc\n      : undefined;\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\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 (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n  if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n  if (!isBytes(b)) throw new Error('Uint8Array expected');\n  if (lengths.length > 0 && !lengths.includes(b.length))\n    throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n  if (typeof h !== 'function' || typeof h.create !== 'function')\n    throw new Error('Hash should be wrapped by utils.createHasher');\n  anumber(h.outputLen);\n  anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n  if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n  if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n  abytes(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}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n  Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n  return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n  return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n  for (let i = 0; i < arrays.length; i++) {\n    arrays[i].fill(0);\n  }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n  return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n  return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n  return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n  new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n  return (\n    ((word << 24) & 0xff000000) |\n    ((word << 8) & 0xff0000) |\n    ((word >>> 8) & 0xff00) |\n    ((word >>> 24) & 0xff)\n  );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n  ? (n: number) => n\n  : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n  for (let i = 0; i < arr.length; i++) {\n    arr[i] = byteSwap(arr[i]);\n  }\n  return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n  ? (u: Uint32Array) => u\n  : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n  // @ts-ignore\n  typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n  i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n  abytes(bytes);\n  // @ts-ignore\n  if (hasHexBuiltin) return bytes.toHex();\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// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n  if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n  if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n  if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n  return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  // @ts-ignore\n  if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n  const hl = hex.length;\n  const al = hl / 2;\n  if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n  const array = new Uint8Array(al);\n  for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n    const n1 = asciiToBase16(hex.charCodeAt(hi));\n    const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n    if (n1 === undefined || n2 === undefined) {\n      const char = hex[hi] + hex[hi + 1];\n      throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n    }\n    array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n  }\n  return array;\n}\n\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.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n  iters: number,\n  tick: number,\n  cb: (i: number) => void\n): Promise<void> {\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) continue;\n    await nextTick();\n    ts += diff;\n  }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n  if (typeof str !== 'string') throw new Error('string expected');\n  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n  return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\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: Input): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    abytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n  defaults: T1,\n  opts?: T2\n): T1 & T2 {\n  if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n    throw new Error('options should be object or undefined');\n  const merged = Object.assign(defaults, opts);\n  return merged as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n  (data: Uint8Array): Uint8Array;\n  blockLen: number;\n  outputLen: number;\n  create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n  abstract blockLen: number; // Bytes per block\n  abstract outputLen: number; // Bytes in output\n  abstract update(buf: Input): this;\n  // Writes digest into buf\n  abstract digestInto(buf: Uint8Array): void;\n  abstract digest(): Uint8Array;\n  /**\n   * Resets internal state. Makes Hash instance unusable.\n   * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n   * by user, they will need to manually call `destroy()` when zeroing is necessary.\n   */\n  abstract destroy(): void;\n  /**\n   * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n   * when no options are passed.\n   * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n   * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n   * There are no guarantees for clean-up because it's impossible in JS.\n   */\n  abstract _cloneInto(to?: T): T;\n  // Safe version that clones internal state\n  abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n  xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n  xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType<typeof createHasher>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof createOptHasher>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof createXOFer>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher<T extends Hash<T>>(\n  hashCons: () => Hash<T>\n): {\n  (msg: Input): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(): Hash<T>;\n} {\n  const hashC = (msg: Input): Uint8Array => 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}\n\nexport function createOptHasher<H extends Hash<H>, T extends Object>(\n  hashCons: (opts?: T) => Hash<H>\n): {\n  (msg: Input, opts?: T): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(opts?: T): Hash<H>;\n} {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts?: T) => hashCons(opts);\n  return hashC;\n}\n\nexport function createXOFer<H extends HashXOF<H>, T extends Object>(\n  hashCons: (opts?: T) => HashXOF<H>\n): {\n  (msg: Input, opts?: T): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(opts?: T): HashXOF<H>;\n} {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts?: T) => hashCons(opts);\n  return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n  if (crypto && typeof crypto.getRandomValues === 'function') {\n    return crypto.getRandomValues(new Uint8Array(bytesLength));\n  }\n  // Legacy Node.js compatibility\n  if (crypto && typeof crypto.randomBytes === 'function') {\n    return Uint8Array.from(crypto.randomBytes(bytesLength));\n  }\n  throw new Error('crypto.getRandomValues must be defined');\n}\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { type Input, Hash, abytes, aexists, aoutput, clean, createView, toBytes } from './utils.ts';\n\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(\n  view: DataView,\n  byteOffset: number,\n  value: bigint,\n  isLE: boolean\n): void {\n  if (typeof view.setBigUint64 === 'function') 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\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n  return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n  return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> extends Hash<T> {\n  protected abstract process(buf: DataView, offset: number): void;\n  protected abstract get(): number[];\n  protected abstract set(...args: number[]): void;\n  abstract destroy(): void;\n  protected abstract roundClean(): void;\n\n  readonly blockLen: number;\n  readonly outputLen: number;\n  readonly padOffset: number;\n  readonly isLE: boolean;\n\n  // For partial updates less than block size\n  protected buffer: Uint8Array;\n  protected view: DataView;\n  protected finished = false;\n  protected length = 0;\n  protected pos = 0;\n  protected destroyed = false;\n\n  constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n    super();\n    this.blockLen = blockLen;\n    this.outputLen = outputLen;\n    this.padOffset = padOffset;\n    this.isLE = isLE;\n    this.buffer = new Uint8Array(blockLen);\n    this.view = createView(this.buffer);\n  }\n  update(data: Input): this {\n    aexists(this);\n    data = toBytes(data);\n    abytes(data);\n    const { view, buffer, blockLen } = this;\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) 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: Uint8Array): void {\n    aexists(this);\n    aoutput(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    clean(this.buffer.subarray(pos));\n    // we have less than padOffset left in buffer, so we cannot put length in\n    // 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++) 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) 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) throw new Error('_sha2: outputLen bigger than state');\n    for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n  }\n  digest(): Uint8Array {\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?: T): T {\n    to ||= new (this.constructor as any)() as T;\n    to.set(...this.get());\n    const { blockLen, buffer, length, finished, destroyed, pos } = this;\n    to.destroyed = destroyed;\n    to.finished = finished;\n    to.length = length;\n    to.pos = pos;\n    if (length % blockLen) to.buffer.set(buffer);\n    return to;\n  }\n  clone(): T {\n    return this._cloneInto();\n  }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n  0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n  0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n  0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n  0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n  0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n  0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n  n: bigint,\n  le = false\n): {\n  h: number;\n  l: number;\n} {\n  if (le) 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}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n  const len = lst.length;\n  let Ah = new Uint32Array(len);\n  let Al = new Uint32Array(len);\n  for (let i = 0; i < len; i++) {\n    const { h, l } = fromBig(lst[i], le);\n    [Ah[i], Al[i]] = [h, l];\n  }\n  return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\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(\n  Ah: number,\n  Al: number,\n  Bh: number,\n  Bl: number\n): {\n  h: number;\n  l: number;\n} {\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: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n  (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n  (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n  (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n  add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\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","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD<SHA256> {\n  // We cannot use array here since array allows indexing by variable\n  // which means optimizer/compiler cannot use registers.\n  protected A: number = SHA256_IV[0] | 0;\n  protected B: number = SHA256_IV[1] | 0;\n  protected C: number = SHA256_IV[2] | 0;\n  protected D: number = SHA256_IV[3] | 0;\n  protected E: number = SHA256_IV[4] | 0;\n  protected F: number = SHA256_IV[5] | 0;\n  protected G: number = SHA256_IV[6] | 0;\n  protected H: number = SHA256_IV[7] | 0;\n\n  constructor(outputLen: number = 32) {\n    super(64, outputLen, 8, false);\n  }\n  protected get(): [number, number, number, number, number, number, number, number] {\n    const { A, B, C, D, E, F, G, H } = this;\n    return [A, B, C, D, E, F, G, H];\n  }\n  // prettier-ignore\n  protected set(\n    A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n  ): void {\n    this.A = A | 0;\n    this.B = B | 0;\n    this.C = C | 0;\n    this.D = D | 0;\n    this.E = E | 0;\n    this.F = F | 0;\n    this.G = G | 0;\n    this.H = H | 0;\n  }\n  protected process(view: DataView, offset: number): void {\n    // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n    for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n    for (let i = 16; i < 64; i++) {\n      const W15 = SHA256_W[i - 15];\n      const W2 = SHA256_W[i - 2];\n      const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n      const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n      SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n    }\n    // Compression function main loop, 64 rounds\n    let { A, B, C, D, E, F, G, H } = this;\n    for (let i = 0; i < 64; i++) {\n      const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n      const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n      const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n      const T2 = (sigma0 + Maj(A, B, C)) | 0;\n      H = G;\n      G = F;\n      F = E;\n      E = (D + T1) | 0;\n      D = C;\n      C = B;\n      B = A;\n      A = (T1 + T2) | 0;\n    }\n    // Add the compressed chunk to the current hash value\n    A = (A + this.A) | 0;\n    B = (B + this.B) | 0;\n    C = (C + this.C) | 0;\n    D = (D + this.D) | 0;\n    E = (E + this.E) | 0;\n    F = (F + this.F) | 0;\n    G = (G + this.G) | 0;\n    H = (H + this.H) | 0;\n    this.set(A, B, C, D, E, F, G, H);\n  }\n  protected roundClean(): void {\n    clean(SHA256_W);\n  }\n  destroy(): void {\n    this.set(0, 0, 0, 0, 0, 0, 0, 0);\n    clean(this.buffer);\n  }\n}\n\nexport class SHA224 extends SHA256 {\n  protected A: number = SHA224_IV[0] | 0;\n  protected B: number = SHA224_IV[1] | 0;\n  protected C: number = SHA224_IV[2] | 0;\n  protected D: number = SHA224_IV[3] | 0;\n  protected E: number = SHA224_IV[4] | 0;\n  protected F: number = SHA224_IV[5] | 0;\n  protected G: number = SHA224_IV[6] | 0;\n  protected H: number = SHA224_IV[7] | 0;\n  constructor() {\n    super(28);\n  }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__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))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\nexport class SHA512 extends HashMD<SHA512> {\n  // We cannot use array here since array allows indexing by variable\n  // which means optimizer/compiler cannot use registers.\n  // h -- high 32 bits, l -- low 32 bits\n  protected Ah: number = SHA512_IV[0] | 0;\n  protected Al: number = SHA512_IV[1] | 0;\n  protected Bh: number = SHA512_IV[2] | 0;\n  protected Bl: number = SHA512_IV[3] | 0;\n  protected Ch: number = SHA512_IV[4] | 0;\n  protected Cl: number = SHA512_IV[5] | 0;\n  protected Dh: number = SHA512_IV[6] | 0;\n  protected Dl: number = SHA512_IV[7] | 0;\n  protected Eh: number = SHA512_IV[8] | 0;\n  protected El: number = SHA512_IV[9] | 0;\n  protected Fh: number = SHA512_IV[10] | 0;\n  protected Fl: number = SHA512_IV[11] | 0;\n  protected Gh: number = SHA512_IV[12] | 0;\n  protected Gl: number = SHA512_IV[13] | 0;\n  protected Hh: number = SHA512_IV[14] | 0;\n  protected Hl: number = SHA512_IV[15] | 0;\n\n  constructor(outputLen: number = 64) {\n    super(128, outputLen, 16, false);\n  }\n  // prettier-ignore\n  protected get(): [\n    number, number, number, number, number, number, number, number,\n    number, number, number, number, number, number, number, number\n  ] {\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  protected set(\n    Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n    Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n  ): void {\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  protected process(view: DataView, offset: number): void {\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  protected roundClean(): void {\n    clean(SHA512_W_H, SHA512_W_L);\n  }\n  destroy(): void {\n    clean(this.buffer);\n    this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n  }\n}\n\nexport class SHA384 extends SHA512 {\n  protected Ah: number = SHA384_IV[0] | 0;\n  protected Al: number = SHA384_IV[1] | 0;\n  protected Bh: number = SHA384_IV[2] | 0;\n  protected Bl: number = SHA384_IV[3] | 0;\n  protected Ch: number = SHA384_IV[4] | 0;\n  protected Cl: number = SHA384_IV[5] | 0;\n  protected Dh: number = SHA384_IV[6] | 0;\n  protected Dl: number = SHA384_IV[7] | 0;\n  protected Eh: number = SHA384_IV[8] | 0;\n  protected El: number = SHA384_IV[9] | 0;\n  protected Fh: number = SHA384_IV[10] | 0;\n  protected Fl: number = SHA384_IV[11] | 0;\n  protected Gh: number = SHA384_IV[12] | 0;\n  protected Gl: number = SHA384_IV[13] | 0;\n  protected Hh: number = SHA384_IV[14] | 0;\n  protected Hl: number = SHA384_IV[15] | 0;\n\n  constructor() {\n    super(48);\n  }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n  0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n  0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n  0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n  0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\nexport class SHA512_224 extends SHA512 {\n  protected Ah: number = T224_IV[0] | 0;\n  protected Al: number = T224_IV[1] | 0;\n  protected Bh: number = T224_IV[2] | 0;\n  protected Bl: number = T224_IV[3] | 0;\n  protected Ch: number = T224_IV[4] | 0;\n  protected Cl: number = T224_IV[5] | 0;\n  protected Dh: number = T224_IV[6] | 0;\n  protected Dl: number = T224_IV[7] | 0;\n  protected Eh: number = T224_IV[8] | 0;\n  protected El: number = T224_IV[9] | 0;\n  protected Fh: number = T224_IV[10] | 0;\n  protected Fl: number = T224_IV[11] | 0;\n  protected Gh: number = T224_IV[12] | 0;\n  protected Gl: number = T224_IV[13] | 0;\n  protected Hh: number = T224_IV[14] | 0;\n  protected Hl: number = T224_IV[15] | 0;\n\n  constructor() {\n    super(28);\n  }\n}\n\nexport class SHA512_256 extends SHA512 {\n  protected Ah: number = T256_IV[0] | 0;\n  protected Al: number = T256_IV[1] | 0;\n  protected Bh: number = T256_IV[2] | 0;\n  protected Bl: number = T256_IV[3] | 0;\n  protected Ch: number = T256_IV[4] | 0;\n  protected Cl: number = T256_IV[5] | 0;\n  protected Dh: number = T256_IV[6] | 0;\n  protected Dl: number = T256_IV[7] | 0;\n  protected Eh: number = T256_IV[8] | 0;\n  protected El: number = T256_IV[9] | 0;\n  protected Fh: number = T256_IV[10] | 0;\n  protected Fl: number = T256_IV[11] | 0;\n  protected Gh: number = T256_IV[12] | 0;\n  protected Gl: number = T256_IV[13] | 0;\n  protected Hh: number = T256_IV[14] | 0;\n  protected Hl: number = T256_IV[15] | 0;\n\n  constructor() {\n    super(32);\n  }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256: CHash = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash = /* @__PURE__ */ createHasher(() => new SHA224());\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash = /* @__PURE__ */ createHasher(() => new SHA384());\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash = /* @__PURE__ */ createHasher(() => new SHA512_224());\n","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n  (message: Uint8Array | string): Uint8Array;\n  blockLen: number;\n  outputLen: number;\n  create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function isBytes(a: unknown): a is Uint8Array {\n  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\nexport function abytes(item: unknown): void {\n  if (!isBytes(item)) throw new Error('Uint8Array expected');\n}\n\nexport function abool(title: string, value: boolean): void {\n  if (typeof value !== 'boolean') throw new Error(title + ' boolean expected, got ' + value);\n}\n\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num: number | bigint): string {\n  const hex = num.toString(16);\n  return hex.length & 1 ? '0' + hex : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean =\n  // @ts-ignore\n  typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function';\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n  i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n  abytes(bytes);\n  // @ts-ignore\n  if (hasHexBuiltin) return bytes.toHex();\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// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n  if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n  if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n  if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n  return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  // @ts-ignore\n  if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n  const hl = hex.length;\n  const al = hl / 2;\n  if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n  const array = new Uint8Array(al);\n  for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n    const n1 = asciiToBase16(hex.charCodeAt(hi));\n    const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n    if (n1 === undefined || n2 === undefined) {\n      const char = hex[hi] + hex[hi + 1];\n      throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n    }\n    array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n  }\n  return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n  return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n  abytes(bytes);\n  return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n  return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n  return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n  return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n  let res: Uint8Array;\n  if (typeof hex === 'string') {\n    try {\n      res = hexToBytes(hex);\n    } catch (e) {\n      throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n    }\n  } else if (isBytes(hex)) {\n    // Uint8Array.from() instead of hash.slice() because node.js Buffer\n    // is instance of Uint8Array, and its slice() creates **mutable** copy\n    res = Uint8Array.from(hex);\n  } else {\n    throw new Error(title + ' must be hex string or Uint8Array');\n  }\n  const len = res.length;\n  if (typeof expectedLength === 'number' && len !== expectedLength)\n    throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n  return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    abytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n  if (a.length !== b.length) return false;\n  let diff = 0;\n  for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n  return diff === 0;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n  if (typeof str !== 'string') throw new Error('string expected');\n  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Is positive bigint\nconst isPosBig = (n: bigint) => typeof n === 'bigint' && _0n <= n;\n\nexport function inRange(n: bigint, min: bigint, max: bigint): boolean {\n  return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title: string, n: bigint, min: bigint, max: bigint): void {\n  // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n  // consider P=256n, min=0n, max=P\n  // - a for min=0 would require -1:          `inRange('x', x, -1n, P)`\n  // - b would commonly require subtraction:  `inRange('x', x, 0n, P - 1n)`\n  // - our way is the cleanest:               `inRange('x', x, 0n, P)\n  if (!inRange(n, min, max))\n    throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n: bigint): number {\n  let len;\n  for (len = 0; n > _0n; n >>= _1n, len += 1);\n  return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number): bigint {\n  return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n: bigint, pos: number, value: boolean): bigint {\n  return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number): bigint => (_1n << BigInt(n)) - _1n;\n\n// DRBG\n\nconst u8n = (len: number) => new Uint8Array(len); // creates Uint8Array\nconst u8fr = (arr: ArrayLike<number>) => Uint8Array.from(arr); // another shortcut\ntype Pred<T> = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n *   const drbg = createHmacDRBG<Key>(32, 32, hmac);\n *   drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg<T>(\n  hashLen: number,\n  qByteLen: number,\n  hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred<T>) => T {\n  if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n  if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n  if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n  // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n  let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n  let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n  let i = 0; // Iterations counter, will throw when over 1000\n  const reset = () => {\n    v.fill(1);\n    k.fill(0);\n    i = 0;\n  };\n  const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n  const reseed = (seed = u8n(0)) => {\n    // HMAC-DRBG reseed() function. Steps D-G\n    k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n    v = h(); // v = hmac(k || v)\n    if (seed.length === 0) return;\n    k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n    v = h(); // v = hmac(k || v)\n  };\n  const gen = () => {\n    // HMAC-DRBG generate() function\n    if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n    let len = 0;\n    const out: Uint8Array[] = [];\n    while (len < qByteLen) {\n      v = h();\n      const sl = v.slice();\n      out.push(sl);\n      len += v.length;\n    }\n    return concatBytes(...out);\n  };\n  const genUntil = (seed: Uint8Array, pred: Pred<T>): T => {\n    reset();\n    reseed(seed); // Steps D-G\n    let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n    while (!(res = pred(gen()))) reseed();\n    reset();\n    return res;\n  };\n  return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n  bigint: (val: any): boolean => typeof val === 'bigint',\n  function: (val: any): boolean => typeof val === 'function',\n  boolean: (val: any): boolean => typeof val === 'boolean',\n  string: (val: any): boolean => typeof val === 'string',\n  stringOrUint8Array: (val: any): boolean => typeof val === 'string' || isBytes(val),\n  isSafeInteger: (val: any): boolean => Number.isSafeInteger(val),\n  array: (val: any): boolean => Array.isArray(val),\n  field: (val: any, object: any): any => (object as any).Fp.isValid(val),\n  hash: (val: any): boolean => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap<T extends Record<string, any>> = { [K in keyof T]?: Validator };\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\n\nexport function validateObject<T extends Record<string, any>>(\n  object: T,\n  validators: ValMap<T>,\n  optValidators: ValMap<T> = {}\n): T {\n  const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n    const checkVal = validatorFns[type];\n    if (typeof checkVal !== 'function') throw new Error('invalid validator function');\n\n    const val = object[fieldName as keyof typeof object];\n    if (isOptional && val === undefined) return;\n    if (!checkVal(val, object)) {\n      throw new Error(\n        'param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val\n      );\n    }\n  };\n  for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n  for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n  return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n\n/**\n * throws not implemented error\n */\nexport const notImplemented = (): never => {\n  throw new Error('not implemented');\n};\n\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized<T extends object, R, O extends any[]>(\n  fn: (arg: T, ...args: O) => R\n): (arg: T, ...args: O) => R {\n  const map = new WeakMap<T, R>();\n  return (arg: T, ...args: O): R => {\n    const val = map.get(arg);\n    if (val !== undefined) return val;\n    const computed = fn(arg, ...args);\n    map.set(arg, computed);\n    return computed;\n  };\n}\n","/**\n * Utils for modular division and finite fields.\n * A finite field over 11 is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { anumber } from '@noble/hashes/utils';\nimport {\n  bitMask,\n  bytesToNumberBE,\n  bytesToNumberLE,\n  ensureBytes,\n  numberToBytesBE,\n  numberToBytesLE,\n  validateObject,\n} from './utils.ts';\n\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _8n = /* @__PURE__ */ BigInt(8);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n  const result = a % b;\n  return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * TODO: remove.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n  return FpPow(Field(modulo), num, power);\n}\n\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n  let res = x;\n  while (power-- > _0n) {\n    res *= res;\n    res %= modulo;\n  }\n  return res;\n}\n\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number: bigint, modulo: bigint): bigint {\n  if (number === _0n) throw new Error('invert: expected non-zero number');\n  if (modulo <= _0n) throw new Error('invert: expected positive modulus, got ' + modulo);\n  // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n  let a = mod(number, modulo);\n  let b = modulo;\n  // prettier-ignore\n  let x = _0n, y = _1n, u = _1n, v = _0n;\n  while (a !== _0n) {\n    // JIT applies optimization if those two lines follow each other\n    const q = b / a;\n    const r = b % a;\n    const m = x - u * q;\n    const n = y - v * q;\n    // prettier-ignore\n    b = a, a = r, x = u, y = v, u = m, v = n;\n  }\n  const gcd = b;\n  if (gcd !== _1n) throw new Error('invert: does not exist');\n  return mod(x, modulo);\n}\n\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4<T>(Fp: IField<T>, n: T) {\n  const p1div4 = (Fp.ORDER + _1n) / _4n;\n  const root = Fp.pow(n, p1div4);\n  // Throw if root^2 != n\n  if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n  return root;\n}\n\nfunction sqrt5mod8<T>(Fp: IField<T>, n: T) {\n  const p5div8 = (Fp.ORDER - _5n) / _8n;\n  const n2 = Fp.mul(n, _2n);\n  const v = Fp.pow(n2, p5div8);\n  const nv = Fp.mul(n, v);\n  const i = Fp.mul(Fp.mul(nv, _2n), v);\n  const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n  if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n  return root;\n}\n\n// TODO: Commented-out for now. Provide test vectors.\n// Tonelli is too slow for extension fields Fp2.\n// That means we can't use sqrt (c1, c2...) even for initialization constants.\n// if (P % _16n === _9n) return sqrt9mod16;\n// // prettier-ignore\n// function sqrt9mod16<T>(Fp: IField<T>, n: T, p7div16?: bigint) {\n//   if (p7div16 === undefined) p7div16 = (Fp.ORDER + BigInt(7)) / _16n;\n//   const c1 = Fp.sqrt(Fp.neg(Fp.ONE)); //  1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n//   const c2 = Fp.sqrt(c1);             //  2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n//   const c3 = Fp.sqrt(Fp.neg(c1));     //  3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n//   const c4 = p7div16;                 //  4. c4 = (q + 7) / 16        # Integer arithmetic\n//   let tv1 = Fp.pow(n, c4);            //  1. tv1 = x^c4\n//   let tv2 = Fp.mul(c1, tv1);          //  2. tv2 = c1 * tv1\n//   const tv3 = Fp.mul(c2, tv1);        //  3. tv3 = c2 * tv1\n//   let tv4 = Fp.mul(c3, tv1);          //  4. tv4 = c3 * tv1\n//   const e1 = Fp.eql(Fp.sqr(tv2), n);  //  5.  e1 = (tv2^2) == x\n//   const e2 = Fp.eql(Fp.sqr(tv3), n);  //  6.  e2 = (tv3^2) == x\n//   tv1 = Fp.cmov(tv1, tv2, e1); //  7. tv1 = CMOV(tv1, tv2, e1)  # Select tv2 if (tv2^2) == x\n//   tv2 = Fp.cmov(tv4, tv3, e2); //  8. tv2 = CMOV(tv4, tv3, e2)  # Select tv3 if (tv3^2) == x\n//   const e3 = Fp.eql(Fp.sqr(tv2), n);  //  9.  e3 = (tv2^2) == x\n//   return Fp.cmov(tv1, tv2, e3); // 10.  z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n// }\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint): <T>(Fp: IField<T>, n: T) => T {\n  // Initialization (precomputation).\n  if (P < BigInt(3)) throw new Error('sqrt is not defined for small field');\n  // Factor P - 1 = Q * 2^S, where Q is odd\n  let Q = P - _1n;\n  let S = 0;\n  while (Q % _2n === _0n) {\n    Q /= _2n;\n    S++;\n  }\n\n  // Find the first quadratic non-residue Z >= 2\n  let Z = _2n;\n  const _Fp = Field(P);\n  while (FpLegendre(_Fp, Z) === 1) {\n    // Basic primality test for P. After x iterations, chance of\n    // not finding quadratic non-residue is 2^x, so 2^1000.\n    if (Z++ > 1000) throw new Error('Cannot find square root: probably non-prime P');\n  }\n  // Fast-path; usually done before Z, but we do \"primality test\".\n  if (S === 1) return sqrt3mod4;\n\n  // Slow-path\n  // TODO: test on Fp2 and others\n  let cc = _Fp.pow(Z, Q); // c = z^Q\n  const Q1div2 = (Q + _1n) / _2n;\n  return function tonelliSlow<T>(Fp: IField<T>, n: T): T {\n    if (Fp.is0(n)) return n;\n    // Check if n is a quadratic residue using Legendre symbol\n    if (FpLegendre(Fp, n) !== 1) throw new Error('Cannot find square root');\n\n    // Initialize variables for the main loop\n    let M = S;\n    let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n    let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n    let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n\n    // Main loop\n    // while t != 1\n    while (!Fp.eql(t, Fp.ONE)) {\n      if (Fp.is0(t)) return Fp.ZERO; // if t=0 return R=0\n      let i = 1;\n\n      // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n      let t_tmp = Fp.sqr(t); // t^(2^1)\n      while (!Fp.eql(t_tmp, Fp.ONE)) {\n        i++;\n        t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n        if (i === M) throw new Error('Cannot find square root');\n      }\n\n      // Calculate the exponent for b: 2^(M - i - 1)\n      const exponent = _1n << BigInt(M - i - 1); // bigint is important\n      const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n\n      // Update variables\n      M = i;\n      c = Fp.sqr(b); // c = b^2\n      t = Fp.mul(t, c); // t = (t * b^2)\n      R = Fp.mul(R, b); // R = R*b\n    }\n    return R;\n  };\n}\n\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P: bigint): <T>(Fp: IField<T>, n: T) => T {\n  // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n  if (P % _4n === _3n) return sqrt3mod4;\n  // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n  if (P % _8n === _5n) return sqrt5mod8;\n  // P ≡ 9 (mod 16) not implemented, see above\n  // Tonelli-Shanks algorithm\n  return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint): boolean =>\n  (mod(num, modulo) & _1n) === _1n;\n\n/** Field is not always over prime: for example, Fp2 has ORDER(q)=p^m. */\nexport interface IField<T> {\n  ORDER: bigint;\n  isLE: boolean;\n  BYTES: number;\n  BITS: number;\n  MASK: bigint;\n  ZERO: T;\n  ONE: T;\n  // 1-arg\n  create: (num: T) => T;\n  isValid: (num: T) => boolean;\n  is0: (num: T) => boolean;\n  neg(num: T): T;\n  inv(num: T): T;\n  sqrt(num: T): T;\n  sqr(num: T): T;\n  // 2-args\n  eql(lhs: T, rhs: T): boolean;\n  add(lhs: T, rhs: T): T;\n  sub(lhs: T, rhs: T): T;\n  mul(lhs: T, rhs: T | bigint): T;\n  pow(lhs: T, power: bigint): T;\n  div(lhs: T, rhs: T | bigint): T;\n  // N for NonNormalized (for now)\n  addN(lhs: T, rhs: T): T;\n  subN(lhs: T, rhs: T): T;\n  mulN(lhs: T, rhs: T | bigint): T;\n  sqrN(num: T): T;\n\n  // Optional\n  // Should be same as sgn0 function in\n  // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n  // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n  isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n  // legendre?(num: T): T;\n  invertBatch: (lst: T[]) => T[];\n  toBytes(num: T): Uint8Array;\n  fromBytes(bytes: Uint8Array): T;\n  // If c is False, CMOV returns a, otherwise it returns b.\n  cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n  'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n  'eql', 'add', 'sub', 'mul', 'pow', 'div',\n  'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField<T>(field: IField<T>): IField<T> {\n  const initial = {\n    ORDER: 'bigint',\n    MASK: 'bigint',\n    BYTES: 'isSafeInteger',\n    BITS: 'isSafeInteger',\n  } as Record<string, string>;\n  const opts = FIELD_FIELDS.reduce((map, val: string) => {\n    map[val] = 'function';\n    return map;\n  }, initial);\n  return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow<T>(Fp: IField<T>, num: T, power: bigint): T {\n  if (power < _0n) throw new Error('invalid exponent, negatives unsupported');\n  if (power === _0n) return Fp.ONE;\n  if (power === _1n) return num;\n  let p = Fp.ONE;\n  let d = num;\n  while (power > _0n) {\n    if (power & _1n) p = Fp.mul(p, d);\n    d = Fp.sqr(d);\n    power >>= _1n;\n  }\n  return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch<T>(Fp: IField<T>, nums: T[], passZero = false): T[] {\n  const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n  // Walk from first to last, multiply them by each other MOD p\n  const multipliedAcc = nums.reduce((acc, num, i) => {\n    if (Fp.is0(num)) return acc;\n    inverted[i] = acc;\n    return Fp.mul(acc, num);\n  }, Fp.ONE);\n  // Invert last element\n  const invertedAcc = Fp.inv(multipliedAcc);\n  // Walk from last to first, multiply them by inverted each other MOD p\n  nums.reduceRight((acc, num, i) => {\n    if (Fp.is0(num)) return acc;\n    inverted[i] = Fp.mul(acc, inverted[i]);\n    return Fp.mul(acc, num);\n  }, invertedAcc);\n  return inverted;\n}\n\n// TODO: remove\nexport function FpDiv<T>(Fp: IField<T>, lhs: T, rhs: T | bigint): T {\n  return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1    if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1   if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0    if a ≡ 0 (mod p)\n */\nexport function FpLegendre<T>(Fp: IField<T>, n: T): -1 | 0 | 1 {\n  // We can use 3rd argument as optional cache of this value\n  // but seems unneeded for now. The operation is very fast.\n  const p1mod2 = (Fp.ORDER - _1n) / _2n;\n  const powered = Fp.pow(n, p1mod2);\n  const yes = Fp.eql(powered, Fp.ONE);\n  const zero = Fp.eql(powered, Fp.ZERO);\n  const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n  if (!yes && !zero && !no) throw new Error('invalid Legendre symbol result');\n  return yes ? 1 : zero ? 0 : -1;\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare<T>(Fp: IField<T>, n: T): boolean {\n  const l = FpLegendre(Fp, n);\n  return l === 1;\n}\n\n// CURVE.n lengths\nexport function nLength(\n  n: bigint,\n  nBitLength?: number\n): {\n  nBitLength: number;\n  nByteLength: number;\n} {\n  // Bit size, byte size of CURVE.n\n  if (nBitLength !== undefined) anumber(nBitLength);\n  const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n  const nByteLength = Math.ceil(_nBitLength / 8);\n  return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField<bigint> & Required<Pick<IField<bigint>, 'isOdd'>>;\n/**\n * Initializes a finite field over prime.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n  ORDER: bigint,\n  bitLen?: number,\n  isLE = false,\n  redef: Partial<IField<bigint>> = {}\n): Readonly<FpField> {\n  if (ORDER <= _0n) throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n  const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n  if (BYTES > 2048) throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n  let sqrtP: ReturnType<typeof FpSqrt>; // cached sqrtP\n  const f: Readonly<FpField> = Object.freeze({\n    ORDER,\n    isLE,\n    BITS,\n    BYTES,\n    MASK: bitMask(BITS),\n    ZERO: _0n,\n    ONE: _1n,\n    create: (num) => mod(num, ORDER),\n    isValid: (num) => {\n      if (typeof num !== 'bigint')\n        throw new Error('invalid field element: expected bigint, got ' + typeof num);\n      return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n    },\n    is0: (num) => num === _0n,\n    isOdd: (num) => (num & _1n) === _1n,\n    neg: (num) => mod(-num, ORDER),\n    eql: (lhs, rhs) => lhs === rhs,\n\n    sqr: (num) => mod(num * num, ORDER),\n    add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n    sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n    mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n    pow: (num, power) => FpPow(f, num, power),\n    div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n    // Same as above, but doesn't normalize\n    sqrN: (num) => num * num,\n    addN: (lhs, rhs) => lhs + rhs,\n    subN: (lhs, rhs) => lhs - rhs,\n    mulN: (lhs, rhs) => lhs * rhs,\n\n    inv: (num) => invert(num, ORDER),\n    sqrt:\n      redef.sqrt ||\n      ((n) => {\n        if (!sqrtP) sqrtP = FpSqrt(ORDER);\n        return sqrtP(f, n);\n      }),\n    toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n    fromBytes: (bytes) => {\n      if (bytes.length !== BYTES)\n        throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n      return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n    },\n    // TODO: we don't need it here, move out to separate fn\n    invertBatch: (lst) => FpInvertBatch(f, lst),\n    // We can't move this out because Fp6, Fp12 implement it\n    // and it's unclear what to return in there.\n    cmov: (a, b, c) => (c ? b : a),\n  } as FpField);\n  return Object.freeze(f);\n}\n\nexport function FpSqrtOdd<T>(Fp: IField<T>, elm: T): T {\n  if (!Fp.isOdd) throw new Error(\"Field doesn't have isOdd\");\n  const root = Fp.sqrt(elm);\n  return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven<T>(Fp: IField<T>, elm: T): T {\n  if (!Fp.isOdd) throw new Error(\"Field doesn't have isOdd\");\n  const root = Fp.sqrt(elm);\n  return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(\n  hash: string | Uint8Array,\n  groupOrder: bigint,\n  isLE = false\n): bigint {\n  hash = ensureBytes('privateHash', hash);\n  const hashLen = hash.length;\n  const minLen = nLength(groupOrder).nByteLength + 8;\n  if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n    throw new Error(\n      'hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen\n    );\n  const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n  return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n  if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n  const bitLength = fieldOrder.toString(2).length;\n  return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n  const length = getFieldBytesLength(fieldOrder);\n  return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n  const len = key.length;\n  const fieldLen = getFieldBytesLength(fieldOrder);\n  const minLen = getMinHashLength(fieldOrder);\n  // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n  if (len < 16 || len < minLen || len > 1024)\n    throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n  const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n  // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n  const reduced = mod(num, fieldOrder - _1n) + _1n;\n  return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","/**\n * hash-to-curve from RFC 9380.\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * https://www.rfc-editor.org/rfc/rfc9380\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport type { AffinePoint, Group, GroupConstructor } from './curve.ts';\nimport { FpInvertBatch, type IField, mod } from './modular.ts';\nimport type { CHash } from './utils.ts';\nimport { abytes, bytesToNumberBE, concatBytes, utf8ToBytes, validateObject } from './utils.ts';\n\nexport type UnicodeOrBytes = string | Uint8Array;\n\n/**\n * * `DST` is a domain separation tag, defined in section 2.2.5\n * * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m\n * * `m` is extension degree (1 for prime fields)\n * * `k` is the target security target in bits (e.g. 128), from section 5.1\n * * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)\n * * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props\n */\nexport type Opts = {\n  DST: UnicodeOrBytes;\n  p: bigint;\n  m: number;\n  k: number;\n  expand: 'xmd' | 'xof';\n  hash: CHash;\n};\n\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value: number, length: number): Uint8Array {\n  anum(value);\n  anum(length);\n  if (value < 0 || value >= 1 << (8 * length)) throw new Error('invalid I2OSP input: ' + value);\n  const res = Array.from({ length }).fill(0) as number[];\n  for (let i = length - 1; i >= 0; i--) {\n    res[i] = value & 0xff;\n    value >>>= 8;\n  }\n  return new Uint8Array(res);\n}\n\nfunction strxor(a: Uint8Array, b: Uint8Array): Uint8Array {\n  const arr = new Uint8Array(a.length);\n  for (let i = 0; i < a.length; i++) {\n    arr[i] = a[i] ^ b[i];\n  }\n  return arr;\n}\n\nfunction anum(item: unknown): void {\n  if (!Number.isSafeInteger(item)) throw new Error('number expected');\n}\n\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(\n  msg: Uint8Array,\n  DST: Uint8Array,\n  lenInBytes: number,\n  H: CHash\n): Uint8Array {\n  abytes(msg);\n  abytes(DST);\n  anum(lenInBytes);\n  // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n  if (DST.length > 255) DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n  const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n  const ell = Math.ceil(lenInBytes / b_in_bytes);\n  if (lenInBytes > 65535 || ell > 255) throw new Error('expand_message_xmd: invalid lenInBytes');\n  const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n  const Z_pad = i2osp(0, r_in_bytes);\n  const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n  const b = new Array<Uint8Array>(ell);\n  const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n  b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n  for (let i = 1; i <= ell; i++) {\n    const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n    b[i] = H(concatBytes(...args));\n  }\n  const pseudo_random_bytes = concatBytes(...b);\n  return pseudo_random_bytes.slice(0, lenInBytes);\n}\n\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n *    a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(\n  msg: Uint8Array,\n  DST: Uint8Array,\n  lenInBytes: number,\n  k: number,\n  H: CHash\n): Uint8Array {\n  abytes(msg);\n  abytes(DST);\n  anum(lenInBytes);\n  // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n  // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n  if (DST.length > 255) {\n    const dkLen = Math.ceil((2 * k) / 8);\n    DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n  }\n  if (lenInBytes > 65535 || DST.length > 255)\n    throw new Error('expand_message_xof: invalid lenInBytes');\n  return (\n    H.create({ dkLen: lenInBytes })\n      .update(msg)\n      .update(i2osp(lenInBytes, 2))\n      // 2. DST_prime = DST || I2OSP(len(DST), 1)\n      .update(DST)\n      .update(i2osp(DST.length, 1))\n      .digest()\n  );\n}\n\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg: Uint8Array, count: number, options: Opts): bigint[][] {\n  validateObject(options, {\n    DST: 'stringOrUint8Array',\n    p: 'bigint',\n    m: 'isSafeInteger',\n    k: 'isSafeInteger',\n    hash: 'hash',\n  });\n  const { p, k, m, hash, expand, DST: _DST } = options;\n  abytes(msg);\n  anum(count);\n  const DST = typeof _DST === 'string' ? utf8ToBytes(_DST) : _DST;\n  const log2p = p.toString(2).length;\n  const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n  const len_in_bytes = count * m * L;\n  let prb; // pseudo_random_bytes\n  if (expand === 'xmd') {\n    prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n  } else if (expand === 'xof') {\n    prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n  } else if (expand === '_internal_pass') {\n    // for internal tests only\n    prb = msg;\n  } else {\n    throw new Error('expand must be \"xmd\" or \"xof\"');\n  }\n  const u = new Array(count);\n  for (let i = 0; i < count; i++) {\n    const e = new Array(m);\n    for (let j = 0; j < m; j++) {\n      const elm_offset = L * (j + i * m);\n      const tv = prb.subarray(elm_offset, elm_offset + L);\n      e[j] = mod(os2ip(tv), p);\n    }\n    u[i] = e;\n  }\n  return u;\n}\n\nexport type XY<T> = (x: T, y: T) => { x: T; y: T };\nexport type XYRatio<T> = [T[], T[], T[], T[]]; // xn/xd, yn/yd\nexport function isogenyMap<T, F extends IField<T>>(field: F, map: XYRatio<T>): XY<T> {\n  // Make same order as in spec\n  const coeff = map.map((i) => Array.from(i).reverse());\n  return (x: T, y: T) => {\n    const [xn, xd, yn, yd] = coeff.map((val) =>\n      val.reduce((acc, i) => field.add(field.mul(acc, x), i))\n    );\n    // 6.6.3\n    // Exceptional cases of iso_map are inputs that cause the denominator of\n    // either rational function to evaluate to zero; such cases MUST return\n    // the identity point on E.\n    const [xd_inv, yd_inv] = FpInvertBatch(field, [xd, yd], true);\n    x = field.mul(xn, xd_inv); // xNum / xDen\n    y = field.mul(y, field.mul(yn, yd_inv)); // y * (yNum / yDev)\n    return { x, y };\n  };\n}\n\n/** Point interface, which curves must implement to work correctly with the module. */\nexport interface H2CPoint<T> extends Group<H2CPoint<T>> {\n  add(rhs: H2CPoint<T>): H2CPoint<T>;\n  toAffine(iz?: bigint): AffinePoint<T>;\n  clearCofactor(): H2CPoint<T>;\n  assertValidity(): void;\n}\n\nexport interface H2CPointConstructor<T> extends GroupConstructor<H2CPoint<T>> {\n  fromAffine(ap: AffinePoint<T>): H2CPoint<T>;\n}\n\nexport type MapToCurve<T> = (scalar: bigint[]) => AffinePoint<T>;\n\n// Separated from initialization opts, so users won't accidentally change per-curve parameters\n// (changing DST is ok!)\nexport type htfBasicOpts = { DST: UnicodeOrBytes };\nexport type HTFMethod<T> = (msg: Uint8Array, options?: htfBasicOpts) => H2CPoint<T>;\nexport type MapMethod<T> = (scalars: bigint[]) => H2CPoint<T>;\nexport type Hasher<T> = {\n  hashToCurve: HTFMethod<T>;\n  encodeToCurve: HTFMethod<T>;\n  mapToCurve: MapMethod<T>;\n  defaults: Opts & { encodeDST?: UnicodeOrBytes };\n};\n\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. */\nexport function createHasher<T>(\n  Point: H2CPointConstructor<T>,\n  mapToCurve: MapToCurve<T>,\n  defaults: Opts & { encodeDST?: UnicodeOrBytes }\n): Hasher<T> {\n  if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');\n  function map(num: bigint[]) {\n    return Point.fromAffine(mapToCurve(num));\n  }\n  function clear(initial: H2CPoint<T>) {\n    const P = initial.clearCofactor();\n    if (P.equals(Point.ZERO)) return Point.ZERO; // zero will throw in assert\n    P.assertValidity();\n    return P;\n  }\n\n  return {\n    defaults,\n\n    // Encodes byte string to elliptic curve.\n    // hash_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n    hashToCurve(msg: Uint8Array, options?: htfBasicOpts): H2CPoint<T> {\n      const u = hash_to_field(msg, 2, { ...defaults, DST: defaults.DST, ...options } as Opts);\n      const u0 = map(u[0]);\n      const u1 = map(u[1]);\n      return clear(u0.add(u1));\n    },\n\n    // Encodes byte string to elliptic curve.\n    // encode_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n    encodeToCurve(msg: Uint8Array, options?: htfBasicOpts): H2CPoint<T> {\n      const u = hash_to_field(msg, 1, { ...defaults, DST: defaults.encodeDST, ...options } as Opts);\n      return clear(map(u[0]));\n    },\n\n    // Same as encodeToCurve, but without hash\n    mapToCurve(scalars: bigint[]): H2CPoint<T> {\n      if (!Array.isArray(scalars)) throw new Error('expected array of bigints');\n      for (const i of scalars)\n        if (typeof i !== 'bigint') throw new Error('expected array of bigints');\n      return clear(map(scalars));\n    },\n  };\n}\n","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { type IField, nLength, validateField } from './modular.ts';\nimport { bitLen, bitMask, validateObject } from './utils.ts';\n\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint<T> = {\n  x: T;\n  y: T;\n} & { z?: never; t?: never };\n\nexport interface Group<T extends Group<T>> {\n  double(): T;\n  negate(): T;\n  add(other: T): T;\n  subtract(other: T): T;\n  equals(other: T): boolean;\n  multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor<T> = {\n  BASE: T;\n  ZERO: T;\n};\nexport type Mapper<T> = (i: T[]) => T[];\n\nfunction constTimeNegate<T extends Group<T>>(condition: boolean, item: T): T {\n  const neg = item.negate();\n  return condition ? neg : item;\n}\n\nfunction validateW(W: number, bits: number) {\n  if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n    throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\n\n/** Internal wNAF opts for specific W and scalarBits */\nexport type WOpts = {\n  windows: number;\n  windowSize: number;\n  mask: bigint;\n  maxNumber: number;\n  shiftBy: bigint;\n};\n\nfunction calcWOpts(W: number, scalarBits: number): WOpts {\n  validateW(W, scalarBits);\n  const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n  const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n  const maxNumber = 2 ** W; // W=8 256\n  const mask = bitMask(W); // W=8 255 == mask 0b11111111\n  const shiftBy = BigInt(W); // W=8 8\n  return { windows, windowSize, mask, maxNumber, shiftBy };\n}\n\nfunction calcOffsets(n: bigint, window: number, wOpts: WOpts) {\n  const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n  let wbits = Number(n & mask); // extract W bits.\n  let nextN = n >> shiftBy; // shift number by W bits.\n\n  // What actually happens here:\n  // const highestBit = Number(mask ^ (mask >> 1n));\n  // let wbits2 = wbits - 1; // skip zero\n  // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n\n  // split if bits > max: +224 => 256-32\n  if (wbits > windowSize) {\n    // we skip zero, which means instead of `>= size-1`, we do `> size`\n    wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n    nextN += _1n; // +256 (carry)\n  }\n  const offsetStart = window * windowSize;\n  const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n  const isZero = wbits === 0; // is current window slice a 0?\n  const isNeg = wbits < 0; // is current window slice negative?\n  const isNegF = window % 2 !== 0; // fake random statement for noise\n  const offsetF = offsetStart; // fake offset for noise\n  return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\n\nfunction validateMSMPoints(points: any[], c: any) {\n  if (!Array.isArray(points)) throw new Error('array expected');\n  points.forEach((p, i) => {\n    if (!(p instanceof c)) throw new Error('invalid point at index ' + i);\n  });\n}\nfunction validateMSMScalars(scalars: any[], field: any) {\n  if (!Array.isArray(scalars)) throw new Error('array of scalars expected');\n  scalars.forEach((s, i) => {\n    if (!field.isValid(s)) throw new Error('invalid scalar at index ' + i);\n  });\n}\n\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap<any, any[]>();\nconst pointWindowSizes = new WeakMap<any, number>();\n\nfunction getW(P: any): number {\n  return pointWindowSizes.get(P) || 1;\n}\n\nexport type IWNAF<T extends Group<T>> = {\n  constTimeNegate: <T extends Group<T>>(condition: boolean, item: T) => T;\n  hasPrecomputes(elm: T): boolean;\n  unsafeLadder(elm: T, n: bigint, p?: T): T;\n  precomputeWindow(elm: T, W: number): Group<T>[];\n  getPrecomputes(W: number, P: T, transform: Mapper<T>): T[];\n  wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T };\n  wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc?: T): T;\n  wNAFCached(P: T, n: bigint, transform: Mapper<T>): { p: T; f: T };\n  wNAFCachedUnsafe(P: T, n: bigint, transform: Mapper<T>, prev?: T): T;\n  setWindowSize(P: T, W: number): void;\n};\n\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number): IWNAF<T> {\n  return {\n    constTimeNegate,\n\n    hasPrecomputes(elm: T) {\n      return getW(elm) !== 1;\n    },\n\n    // non-const time multiplication ladder\n    unsafeLadder(elm: T, n: bigint, p = c.ZERO) {\n      let d: T = elm;\n      while (n > _0n) {\n        if (n & _1n) p = p.add(d);\n        d = d.double();\n        n >>= _1n;\n      }\n      return p;\n    },\n\n    /**\n     * Creates a wNAF precomputation window. Used for caching.\n     * Default window size is set by `utils.precompute()` and is equal to 8.\n     * Number of precomputed points depends on the curve size:\n     * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n     * - 𝑊 is the window size\n     * - 𝑛 is the bitlength of the curve order.\n     * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n     * @param elm Point instance\n     * @param W window size\n     * @returns precomputed point tables flattened to a single array\n     */\n    precomputeWindow(elm: T, W: number): Group<T>[] {\n      const { windows, windowSize } = calcWOpts(W, bits);\n      const points: T[] = [];\n      let p: T = elm;\n      let base = p;\n      for (let window = 0; window < windows; window++) {\n        base = p;\n        points.push(base);\n        // i=1, bc we skip 0\n        for (let i = 1; i < windowSize; i++) {\n          base = base.add(p);\n          points.push(base);\n        }\n        p = base.double();\n      }\n      return points;\n    },\n\n    /**\n     * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n     * @param W window size\n     * @param precomputes precomputed tables\n     * @param n scalar (we don't check here, but should be less than curve order)\n     * @returns real and fake (for const-time) points\n     */\n    wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n      // Smaller version:\n      // https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n      // TODO: check the scalar is less than group order?\n      // wNAF behavior is undefined otherwise. But have to carefully remove\n      // other checks before wNAF. ORDER == bits here.\n      // Accumulators\n      let p = c.ZERO;\n      let f = c.BASE;\n      // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n      // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n      // there is negate now: it is possible that negated element from low value\n      // would be the same as high element, which will create carry into next window.\n      // It's not obvious how this can fail, but still worth investigating later.\n      const wo = calcWOpts(W, bits);\n      for (let window = 0; window < wo.windows; window++) {\n        // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n        const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n        n = nextN;\n        if (isZero) {\n          // bits are 0: add garbage to fake point\n          // Important part for const-time getPublicKey: add random \"noise\" point to f.\n          f = f.add(constTimeNegate(isNegF, precomputes[offsetF]));\n        } else {\n          // bits are 1: add to result point\n          p = p.add(constTimeNegate(isNeg, precomputes[offset]));\n        }\n      }\n      // Return both real and fake points: JIT won't eliminate f.\n      // At this point there is a way to F be infinity-point even if p is not,\n      // which makes it less const-time: around 1 bigint multiply.\n      return { p, f };\n    },\n\n    /**\n     * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n     * @param W window size\n     * @param precomputes precomputed tables\n     * @param n scalar (we don't check here, but should be less than curve order)\n     * @param acc accumulator point to add result of multiplication\n     * @returns point\n     */\n    wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc: T = c.ZERO): T {\n      const wo = calcWOpts(W, bits);\n      for (let window = 0; window < wo.windows; window++) {\n        if (n === _0n) break; // Early-exit, skip 0 value\n        const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n        n = nextN;\n        if (isZero) {\n          // Window bits are 0: skip processing.\n          // Move to next window.\n          continue;\n        } else {\n          const item = precomputes[offset];\n          acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n        }\n      }\n      return acc;\n    },\n\n    getPrecomputes(W: number, P: T, transform: Mapper<T>): T[] {\n      // Calculate precomputes on a first run, reuse them after\n      let comp = pointPrecomputes.get(P);\n      if (!comp) {\n        comp = this.precomputeWindow(P, W) as T[];\n        if (W !== 1) pointPrecomputes.set(P, transform(comp));\n      }\n      return comp;\n    },\n\n    wNAFCached(P: T, n: bigint, transform: Mapper<T>): { p: T; f: T } {\n      const W = getW(P);\n      return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n    },\n\n    wNAFCachedUnsafe(P: T, n: bigint, transform: Mapper<T>, prev?: T): T {\n      const W = getW(P);\n      if (W === 1) return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n      return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, prev);\n    },\n\n    // We calculate precomputes for elliptic curve point multiplication\n    // using windowed method. This specifies window size and\n    // stores precomputed values. Usually only base point would be precomputed.\n\n    setWindowSize(P: T, W: number) {\n      validateW(W, bits);\n      pointWindowSizes.set(P, W);\n      pointPrecomputes.delete(P);\n    },\n  };\n}\n\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger<T extends Group<T>>(\n  c: GroupConstructor<T>,\n  fieldN: IField<bigint>,\n  points: T[],\n  scalars: bigint[]\n): T {\n  // If we split scalars by some window (let's say 8 bits), every chunk will only\n  // take 256 buckets even if there are 4096 scalars, also re-uses double.\n  // TODO:\n  // - https://eprint.iacr.org/2024/750.pdf\n  // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n  // 0 is accepted in scalars\n  validateMSMPoints(points, c);\n  validateMSMScalars(scalars, fieldN);\n  const plength = points.length;\n  const slength = scalars.length;\n  if (plength !== slength) throw new Error('arrays of points and scalars must have equal length');\n  // if (plength === 0) throw new Error('array must be of length >= 2');\n  const zero = c.ZERO;\n  const wbits = bitLen(BigInt(plength));\n  let windowSize = 1; // bits\n  if (wbits > 12) windowSize = wbits - 3;\n  else if (wbits > 4) windowSize = wbits - 2;\n  else if (wbits > 0) windowSize = 2;\n  const MASK = bitMask(windowSize);\n  const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n  const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n  let sum = zero;\n  for (let i = lastBits; i >= 0; i -= windowSize) {\n    buckets.fill(zero);\n    for (let j = 0; j < slength; j++) {\n      const scalar = scalars[j];\n      const wbits = Number((scalar >> BigInt(i)) & MASK);\n      buckets[wbits] = buckets[wbits].add(points[j]);\n    }\n    let resI = zero; // not using this will do small speed-up, but will lose ct\n    // Skip first bucket, because it is zero\n    for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n      sumI = sumI.add(buckets[j]);\n      resI = resI.add(sumI);\n    }\n    sum = sum.add(resI);\n    if (i !== 0) for (let j = 0; j < windowSize; j++) sum = sum.double();\n  }\n  return sum as T;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe<T extends Group<T>>(\n  c: GroupConstructor<T>,\n  fieldN: IField<bigint>,\n  points: T[],\n  windowSize: number\n): (scalars: bigint[]) => T {\n  /**\n   * Performance Analysis of Window-based Precomputation\n   *\n   * Base Case (256-bit scalar, 8-bit window):\n   * - Standard precomputation requires:\n   *   - 31 additions per scalar × 256 scalars = 7,936 ops\n   *   - Plus 255 summary additions = 8,191 total ops\n   *   Note: Summary additions can be optimized via accumulator\n   *\n   * Chunked Precomputation Analysis:\n   * - Using 32 chunks requires:\n   *   - 255 additions per chunk\n   *   - 256 doublings\n   *   - Total: (255 × 32) + 256 = 8,416 ops\n   *\n   * Memory Usage Comparison:\n   * Window Size | Standard Points | Chunked Points\n   * ------------|-----------------|---------------\n   *     4-bit   |     520         |      15\n   *     8-bit   |    4,224        |     255\n   *    10-bit   |   13,824        |   1,023\n   *    16-bit   |  557,056        |  65,535\n   *\n   * Key Advantages:\n   * 1. Enables larger window sizes due to reduced memory overhead\n   * 2. More efficient for smaller scalar counts:\n   *    - 16 chunks: (16 × 255) + 256 = 4,336 ops\n   *    - ~2x faster than standard 8,191 ops\n   *\n   * Limitations:\n   * - Not suitable for plain precomputes (requires 256 constant doublings)\n   * - Performance degrades with larger scalar counts:\n   *   - Optimal for ~256 scalars\n   *   - Less efficient for 4096+ scalars (Pippenger preferred)\n   */\n  validateW(windowSize, fieldN.BITS);\n  validateMSMPoints(points, c);\n  const zero = c.ZERO;\n  const tableSize = 2 ** windowSize - 1; // table size (without zero)\n  const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n  const MASK = bitMask(windowSize);\n  const tables = points.map((p: T) => {\n    const res = [];\n    for (let i = 0, acc = p; i < tableSize; i++) {\n      res.push(acc);\n      acc = acc.add(p);\n    }\n    return res;\n  });\n  return (scalars: bigint[]): T => {\n    validateMSMScalars(scalars, fieldN);\n    if (scalars.length > points.length)\n      throw new Error('array of scalars must be smaller than array of points');\n    let res = zero;\n    for (let i = 0; i < chunks; i++) {\n      // No need to double if accumulator is still zero.\n      if (res !== zero) for (let j = 0; j < windowSize; j++) res = res.double();\n      const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n      for (let j = 0; j < scalars.length; j++) {\n        const n = scalars[j];\n        const curr = Number((n >> shiftBy) & MASK);\n        if (!curr) continue; // skip zero scalars chunks\n        res = res.add(tables[j][curr - 1]);\n      }\n    }\n    return res;\n  };\n}\n\n/**\n * Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n * Though generator can be different (Fp2 / Fp6 for BLS).\n */\nexport type BasicCurve<T> = {\n  Fp: IField<T>; // Field over which we'll do calculations (Fp)\n  n: bigint; // Curve order, total count of valid points in the field\n  nBitLength?: number; // bit length of curve order\n  nByteLength?: number; // byte length of curve order\n  h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n  hEff?: bigint; // Number to multiply to clear cofactor\n  Gx: T; // base point X coordinate\n  Gy: T; // base point Y coordinate\n  allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic<FP, T>(\n  curve: BasicCurve<FP> & T\n): Readonly<\n  {\n    readonly nBitLength: number;\n    readonly nByteLength: number;\n  } & BasicCurve<FP> &\n    T & {\n      p: bigint;\n    }\n> {\n  validateField(curve.Fp);\n  validateObject(\n    curve,\n    {\n      n: 'bigint',\n      h: 'bigint',\n      Gx: 'field',\n      Gy: 'field',\n    },\n    {\n      nBitLength: 'isSafeInteger',\n      nByteLength: 'isSafeInteger',\n    }\n  );\n  // Set defaults\n  return Object.freeze({\n    ...nLength(curve.n, curve.nBitLength),\n    ...curve,\n    ...{ p: curve.Fp.ORDER },\n  } as const);\n}\n","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Parameters\n *\n * To initialize a weierstrass curve, one needs to pass following params:\n *\n * * a: formula param\n * * b: formula param\n * * Fp: finite field of prime characteristic P; may be complex (Fp2). Arithmetics is done in field\n * * n: order of prime subgroup a.k.a total amount of valid curve points\n * * Gx: Base point (x, y) aka generator point. Gx = x coordinate\n * * Gy: ...y coordinate\n * * h: cofactor, usually 1. h*n = curve group order (n is only subgroup order)\n * * lowS: whether to enable (default) or disable \"low-s\" non-malleable signatures\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n *   `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n *   `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n *   it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n *     1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n *     which is hard to debug.\n *     2. Params can be generic and we can't enforce them to be constant value:\n *     if somebody creates curve from non-constant params,\n *     it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// prettier-ignore\nimport {\n  pippenger, validateBasic, wNAF,\n  type AffinePoint, type BasicCurve, type Group, type GroupConstructor\n} from './curve.ts';\n// prettier-ignore\nimport {\n  Field,\n  FpInvertBatch,\n  getMinHashLength, invert, mapHashToField, mod, validateField,\n  type IField\n} from './modular.ts';\n// prettier-ignore\nimport {\n  aInRange, abool,\n  bitMask,\n  bytesToHex, bytesToNumberBE, concatBytes, createHmacDrbg, ensureBytes, hexToBytes,\n  inRange, isBytes, memoized, numberToBytesBE, numberToHexUnpadded, validateObject,\n  type CHash, type Hex, type PrivKey\n} from './utils.ts';\n\nexport type { AffinePoint };\ntype HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\n/**\n * When Weierstrass curve has `a=0`, it becomes Koblitz curve.\n * Koblitz curves allow using **efficiently-computable GLV endomorphism ψ**.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n *\n * Endomorphism consists of beta, lambda and splitScalar:\n *\n * 1. GLV endomorphism ψ transforms a point: `P = (x, y) ↦ ψ(P) = (β·x mod p, y)`\n * 2. GLV scalar decomposition transforms a scalar: `k ≡ k₁ + k₂·λ (mod n)`\n * 3. Then these are combined: `k·P = k₁·P + k₂·ψ(P)`\n * 4. Two 128-bit point-by-scalar multiplications + one point addition is faster than\n *    one 256-bit multiplication.\n *\n * where\n * * beta: β ∈ Fₚ with β³ = 1, β ≠ 1\n * * lambda: λ ∈ Fₙ with λ³ = 1, λ ≠ 1\n * * splitScalar decomposes k ↦ k₁, k₂, by using reduced basis vectors.\n *   Gauss lattice reduction calculates them from initial basis vectors `(n, 0), (-λ, 0)`\n *\n * Check out `test/misc/endomorphism.js` and\n * [gist](https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066).\n */\nexport type EndomorphismOpts = {\n  beta: bigint;\n  splitScalar: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\nexport type BasicWCurve<T> = BasicCurve<T> & {\n  // Params: a, b\n  a: T;\n  b: T;\n\n  // Optional params\n  allowedPrivateKeyLengths?: readonly number[]; // for P521\n  wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n  endo?: EndomorphismOpts;\n  // When a cofactor != 1, there can be an effective methods to:\n  // 1. Determine whether a point is torsion-free\n  isTorsionFree?: (c: ProjConstructor<T>, point: ProjPointType<T>) => boolean;\n  // 2. Clear torsion component\n  clearCofactor?: (c: ProjConstructor<T>, point: ProjPointType<T>) => ProjPointType<T>;\n};\n\nexport type Entropy = Hex | boolean;\nexport type SignOpts = { lowS?: boolean; extraEntropy?: Entropy; prehash?: boolean };\nexport type VerOpts = { lowS?: boolean; prehash?: boolean; format?: 'compact' | 'der' | undefined };\n\nfunction validateSigVerOpts(opts: SignOpts | VerOpts) {\n  if (opts.lowS !== undefined) abool('lowS', opts.lowS);\n  if (opts.prehash !== undefined) abool('prehash', opts.prehash);\n}\n\n// Instance for 3d XYZ points\nexport interface ProjPointType<T> extends Group<ProjPointType<T>> {\n  readonly px: T;\n  readonly py: T;\n  readonly pz: T;\n  get x(): T;\n  get y(): T;\n  toAffine(iz?: T): AffinePoint<T>;\n  toHex(isCompressed?: boolean): string;\n  toRawBytes(isCompressed?: boolean): Uint8Array;\n\n  assertValidity(): void;\n  hasEvenY(): boolean;\n  multiplyUnsafe(scalar: bigint): ProjPointType<T>;\n  multiplyAndAddUnsafe(Q: ProjPointType<T>, a: bigint, b: bigint): ProjPointType<T> | undefined;\n  isTorsionFree(): boolean;\n  clearCofactor(): ProjPointType<T>;\n  _setWindowSize(windowSize: number): void;\n}\n// Static methods for 3d XYZ points\nexport interface ProjConstructor<T> extends GroupConstructor<ProjPointType<T>> {\n  new (x: T, y: T, z: T): ProjPointType<T>;\n  fromAffine(p: AffinePoint<T>): ProjPointType<T>;\n  fromHex(hex: Hex): ProjPointType<T>;\n  fromPrivateKey(privateKey: PrivKey): ProjPointType<T>;\n  normalizeZ(points: ProjPointType<T>[]): ProjPointType<T>[];\n  msm(points: ProjPointType<T>[], scalars: bigint[]): ProjPointType<T>;\n}\n\nexport type CurvePointsType<T> = BasicWCurve<T> & {\n  // Bytes\n  fromBytes?: (bytes: Uint8Array) => AffinePoint<T>;\n  toBytes?: (c: ProjConstructor<T>, point: ProjPointType<T>, isCompressed: boolean) => Uint8Array;\n};\n\nexport type CurvePointsTypeWithLength<T> = Readonly<\n  CurvePointsType<T> & { nByteLength: number; nBitLength: number }\n>;\n\nfunction validatePointOpts<T>(curve: CurvePointsType<T>): CurvePointsTypeWithLength<T> {\n  const opts = validateBasic(curve);\n  validateObject(\n    opts,\n    {\n      a: 'field',\n      b: 'field',\n    },\n    {\n      allowInfinityPoint: 'boolean',\n      allowedPrivateKeyLengths: 'array',\n      clearCofactor: 'function',\n      fromBytes: 'function',\n      isTorsionFree: 'function',\n      toBytes: 'function',\n      wrapPrivateKey: 'boolean',\n    }\n  );\n  const { endo, Fp, a } = opts;\n  if (endo) {\n    if (!Fp.eql(a, Fp.ZERO)) {\n      throw new Error('invalid endo: CURVE.a must be 0');\n    }\n    if (\n      typeof endo !== 'object' ||\n      typeof endo.beta !== 'bigint' ||\n      typeof endo.splitScalar !== 'function'\n    ) {\n      throw new Error('invalid endo: expected \"beta\": bigint and \"splitScalar\": function');\n    }\n  }\n  return Object.freeze({ ...opts } as const);\n}\n\nexport type CurvePointsRes<T> = {\n  CURVE: ReturnType<typeof validatePointOpts<T>>;\n  ProjectivePoint: ProjConstructor<T>;\n  normPrivateKeyToScalar: (key: PrivKey) => bigint;\n  weierstrassEquation: (x: T) => T;\n  isWithinCurveOrder: (num: bigint) => boolean;\n};\n\nexport class DERErr extends Error {\n  constructor(m = '') {\n    super(m);\n  }\n}\nexport type IDER = {\n  // asn.1 DER encoding utils\n  Err: typeof DERErr;\n  // Basic building block is TLV (Tag-Length-Value)\n  _tlv: {\n    encode: (tag: number, data: string) => string;\n    // v - value, l - left bytes (unparsed)\n    decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array };\n  };\n  // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n  // since we always use positive integers here. It must always be empty:\n  // - add zero byte if exists\n  // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n  _int: {\n    encode(num: bigint): string;\n    decode(data: Uint8Array): bigint;\n  };\n  toSig(hex: string | Uint8Array): { r: bigint; s: bigint };\n  hexFromSig(sig: { r: bigint; s: bigint }): string;\n};\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n *     [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER: IDER = {\n  // asn.1 DER encoding utils\n  Err: DERErr,\n  // Basic building block is TLV (Tag-Length-Value)\n  _tlv: {\n    encode: (tag: number, data: string): string => {\n      const { Err: E } = DER;\n      if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n      if (data.length & 1) throw new E('tlv.encode: unpadded data');\n      const dataLen = data.length / 2;\n      const len = numberToHexUnpadded(dataLen);\n      if ((len.length / 2) & 0b1000_0000) throw new E('tlv.encode: long form length too big');\n      // length of length with long form flag\n      const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 0b1000_0000) : '';\n      const t = numberToHexUnpadded(tag);\n      return t + lenLen + len + data;\n    },\n    // v - value, l - left bytes (unparsed)\n    decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array } {\n      const { Err: E } = DER;\n      let pos = 0;\n      if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n      if (data.length < 2 || data[pos++] !== tag) throw new E('tlv.decode: wrong tlv');\n      const first = data[pos++];\n      const isLong = !!(first & 0b1000_0000); // First bit of first length byte is flag for short/long form\n      let length = 0;\n      if (!isLong) length = first;\n      else {\n        // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n        const lenLen = first & 0b0111_1111;\n        if (!lenLen) throw new E('tlv.decode(long): indefinite length not supported');\n        if (lenLen > 4) throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n        const lengthBytes = data.subarray(pos, pos + lenLen);\n        if (lengthBytes.length !== lenLen) throw new E('tlv.decode: length bytes not complete');\n        if (lengthBytes[0] === 0) throw new E('tlv.decode(long): zero leftmost byte');\n        for (const b of lengthBytes) length = (length << 8) | b;\n        pos += lenLen;\n        if (length < 128) throw new E('tlv.decode(long): not minimal encoding');\n      }\n      const v = data.subarray(pos, pos + length);\n      if (v.length !== length) throw new E('tlv.decode: wrong value length');\n      return { v, l: data.subarray(pos + length) };\n    },\n  },\n  // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n  // since we always use positive integers here. It must always be empty:\n  // - add zero byte if exists\n  // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n  _int: {\n    encode(num: bigint): string {\n      const { Err: E } = DER;\n      if (num < _0n) throw new E('integer: negative integers are not allowed');\n      let hex = numberToHexUnpadded(num);\n      // Pad with zero byte if negative flag is present\n      if (Number.parseInt(hex[0], 16) & 0b1000) hex = '00' + hex;\n      if (hex.length & 1) throw new E('unexpected DER parsing assertion: unpadded hex');\n      return hex;\n    },\n    decode(data: Uint8Array): bigint {\n      const { Err: E } = DER;\n      if (data[0] & 0b1000_0000) throw new E('invalid signature integer: negative');\n      if (data[0] === 0x00 && !(data[1] & 0b1000_0000))\n        throw new E('invalid signature integer: unnecessary leading zero');\n      return bytesToNumberBE(data);\n    },\n  },\n  toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n    // parse DER signature\n    const { Err: E, _int: int, _tlv: tlv } = DER;\n    const data = ensureBytes('signature', hex);\n    const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n    if (seqLeftBytes.length) throw new E('invalid signature: left bytes after parsing');\n    const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n    const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n    if (sLeftBytes.length) throw new E('invalid signature: left bytes after parsing');\n    return { r: int.decode(rBytes), s: int.decode(sBytes) };\n  },\n  hexFromSig(sig: { r: bigint; s: bigint }): string {\n    const { _tlv: tlv, _int: int } = DER;\n    const rs = tlv.encode(0x02, int.encode(sig.r));\n    const ss = tlv.encode(0x02, int.encode(sig.s));\n    const seq = rs + ss;\n    return tlv.encode(0x30, seq);\n  },\n};\n\nfunction numToSizedHex(num: bigint, size: number): string {\n  return bytesToHex(numberToBytesBE(num, size));\n}\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\nexport function weierstrassPoints<T>(opts: CurvePointsType<T>): CurvePointsRes<T> {\n  const CURVE = validatePointOpts(opts);\n  const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n  const Fn = Field(CURVE.n, CURVE.nBitLength);\n\n  const toBytes =\n    CURVE.toBytes ||\n    ((_c: ProjConstructor<T>, point: ProjPointType<T>, _isCompressed: boolean) => {\n      const a = point.toAffine();\n      return concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n    });\n  const fromBytes =\n    CURVE.fromBytes ||\n    ((bytes: Uint8Array) => {\n      // const head = bytes[0];\n      const tail = bytes.subarray(1);\n      // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n      const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n      const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n      return { x, y };\n    });\n\n  /**\n   * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².\n   * @returns y²\n   */\n  function weierstrassEquation(x: T): T {\n    const { a, b } = CURVE;\n    const x2 = Fp.sqr(x); // x * x\n    const x3 = Fp.mul(x2, x); // x² * x\n    return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b\n  }\n\n  function isValidXY(x: T, y: T): boolean {\n    const left = Fp.sqr(y); // y²\n    const right = weierstrassEquation(x); // x³ + ax + b\n    return Fp.eql(left, right);\n  }\n\n  // Validate whether the passed curve params are valid.\n  // Test 1: equation y² = x³ + ax + b should work for generator point.\n  if (!isValidXY(CURVE.Gx, CURVE.Gy)) throw new Error('bad curve params: generator point');\n\n  // Test 2: discriminant Δ part should be non-zero: 4a³ + 27b² != 0.\n  // Guarantees curve is genus-1, smooth (non-singular).\n  const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n  const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n  if (Fp.is0(Fp.add(_4a3, _27b2))) throw new Error('bad curve params: a or b');\n\n  // Valid group elements reside in range 1..n-1\n  function isWithinCurveOrder(num: bigint): boolean {\n    return inRange(num, _1n, CURVE.n);\n  }\n  // Validates if priv key is valid and converts it to bigint.\n  // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n  function normPrivateKeyToScalar(key: PrivKey): bigint {\n    const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n    if (lengths && typeof key !== 'bigint') {\n      if (isBytes(key)) key = bytesToHex(key);\n      // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n      if (typeof key !== 'string' || !lengths.includes(key.length))\n        throw new Error('invalid private key');\n      key = key.padStart(nByteLength * 2, '0');\n    }\n    let num: bigint;\n    try {\n      num =\n        typeof key === 'bigint'\n          ? key\n          : bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n    } catch (error) {\n      throw new Error(\n        'invalid private key, expected hex or ' + nByteLength + ' bytes, got ' + typeof key\n      );\n    }\n    if (wrapPrivateKey) num = mod(num, N); // disabled by default, enabled for BLS\n    aInRange('private key', num, _1n, N); // num in range [1..N-1]\n    return num;\n  }\n\n  function aprjpoint(other: unknown) {\n    if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n  }\n\n  // Memoized toAffine / validity check. They are heavy. Points are immutable.\n\n  // Converts Projective point to affine (x, y) coordinates.\n  // Can accept precomputed Z^-1 - for example, from invertBatch.\n  // (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n  const toAffineMemo = memoized((p: Point, iz?: T): AffinePoint<T> => {\n    const { px: x, py: y, pz: z } = p;\n    // Fast-path for normalized points\n    if (Fp.eql(z, Fp.ONE)) return { x, y };\n    const is0 = p.is0();\n    // If invZ was 0, we return zero point. However we still want to execute\n    // all operations, so we replace invZ with a random number, 1.\n    if (iz == null) iz = is0 ? Fp.ONE : Fp.inv(z);\n    const ax = Fp.mul(x, iz);\n    const ay = Fp.mul(y, iz);\n    const zz = Fp.mul(z, iz);\n    if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n    if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n    return { x: ax, y: ay };\n  });\n  // NOTE: on exception this will crash 'cached' and no value will be set.\n  // Otherwise true will be return\n  const assertValidMemo = memoized((p: Point) => {\n    if (p.is0()) {\n      // (0, 1, 0) aka ZERO is invalid in most contexts.\n      // In BLS, ZERO can be serialized, so we allow it.\n      // (0, 0, 0) is invalid representation of ZERO.\n      if (CURVE.allowInfinityPoint && !Fp.is0(p.py)) return;\n      throw new Error('bad point: ZERO');\n    }\n    // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n    const { x, y } = p.toAffine();\n    // Check if x, y are valid field elements\n    if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not FE');\n    if (!isValidXY(x, y)) throw new Error('bad point: equation left != right');\n    if (!p.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n    return true;\n  });\n\n  /**\n   * Projective Point works in 3d / projective (homogeneous) coordinates: (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n   * Default Point works in 2d / affine coordinates: (x, y)\n   * We're doing calculations in projective, because its operations don't require costly inversion.\n   */\n  class Point implements ProjPointType<T> {\n    // base / generator point\n    static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n    // zero / infinity / identity point\n    static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n    readonly px: T;\n    readonly py: T;\n    readonly pz: T;\n\n    constructor(px: T, py: T, pz: T) {\n      if (px == null || !Fp.isValid(px)) throw new Error('x required');\n      if (py == null || !Fp.isValid(py) || Fp.is0(py)) throw new Error('y required');\n      if (pz == null || !Fp.isValid(pz)) throw new Error('z required');\n      this.px = px;\n      this.py = py;\n      this.pz = pz;\n      Object.freeze(this);\n    }\n\n    // Does not validate if the point is on-curve.\n    // Use fromHex instead, or call assertValidity() later.\n    static fromAffine(p: AffinePoint<T>): Point {\n      const { x, y } = p || {};\n      if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n      if (p instanceof Point) throw new Error('projective point not allowed');\n      const is0 = (i: T) => Fp.eql(i, Fp.ZERO);\n      // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n      if (is0(x) && is0(y)) return Point.ZERO;\n      return new Point(x, y, Fp.ONE);\n    }\n\n    get x(): T {\n      return this.toAffine().x;\n    }\n    get y(): T {\n      return this.toAffine().y;\n    }\n\n    /**\n     * Takes a bunch of Projective Points but executes only one\n     * inversion on all of them. Inversion is very slow operation,\n     * so this improves performance massively.\n     * Optimization: converts a list of projective points to a list of identical points with Z=1.\n     */\n    static normalizeZ(points: Point[]): Point[] {\n      const toInv = FpInvertBatch(\n        Fp,\n        points.map((p) => p.pz)\n      );\n      return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n    }\n\n    /**\n     * Converts hash string or Uint8Array to Point.\n     * @param hex short/long ECDSA hex\n     */\n    static fromHex(hex: Hex): Point {\n      const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n      P.assertValidity();\n      return P;\n    }\n\n    // Multiplies generator point by privateKey.\n    static fromPrivateKey(privateKey: PrivKey) {\n      return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n    }\n\n    // Multiscalar Multiplication\n    static msm(points: Point[], scalars: bigint[]): Point {\n      return pippenger(Point, Fn, points, scalars);\n    }\n\n    // \"Private method\", don't use it directly\n    _setWindowSize(windowSize: number) {\n      wnaf.setWindowSize(this, windowSize);\n    }\n\n    // A point on curve is valid if it conforms to equation.\n    assertValidity(): void {\n      assertValidMemo(this);\n    }\n\n    hasEvenY(): boolean {\n      const { y } = this.toAffine();\n      if (Fp.isOdd) return !Fp.isOdd(y);\n      throw new Error(\"Field doesn't support isOdd\");\n    }\n\n    /**\n     * Compare one point to another.\n     */\n    equals(other: Point): boolean {\n      aprjpoint(other);\n      const { px: X1, py: Y1, pz: Z1 } = this;\n      const { px: X2, py: Y2, pz: Z2 } = other;\n      const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n      const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n      return U1 && U2;\n    }\n\n    /**\n     * Flips point to one corresponding to (x, -y) in Affine coordinates.\n     */\n    negate(): Point {\n      return new Point(this.px, Fp.neg(this.py), this.pz);\n    }\n\n    // Renes-Costello-Batina exception-free doubling formula.\n    // There is 30% faster Jacobian formula, but it is not complete.\n    // https://eprint.iacr.org/2015/1060, algorithm 3\n    // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n    double() {\n      const { a, b } = CURVE;\n      const b3 = Fp.mul(b, _3n);\n      const { px: X1, py: Y1, pz: Z1 } = this;\n      let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n      let t0 = Fp.mul(X1, X1); // step 1\n      let t1 = Fp.mul(Y1, Y1);\n      let t2 = Fp.mul(Z1, Z1);\n      let t3 = Fp.mul(X1, Y1);\n      t3 = Fp.add(t3, t3); // step 5\n      Z3 = Fp.mul(X1, Z1);\n      Z3 = Fp.add(Z3, Z3);\n      X3 = Fp.mul(a, Z3);\n      Y3 = Fp.mul(b3, t2);\n      Y3 = Fp.add(X3, Y3); // step 10\n      X3 = Fp.sub(t1, Y3);\n      Y3 = Fp.add(t1, Y3);\n      Y3 = Fp.mul(X3, Y3);\n      X3 = Fp.mul(t3, X3);\n      Z3 = Fp.mul(b3, Z3); // step 15\n      t2 = Fp.mul(a, t2);\n      t3 = Fp.sub(t0, t2);\n      t3 = Fp.mul(a, t3);\n      t3 = Fp.add(t3, Z3);\n      Z3 = Fp.add(t0, t0); // step 20\n      t0 = Fp.add(Z3, t0);\n      t0 = Fp.add(t0, t2);\n      t0 = Fp.mul(t0, t3);\n      Y3 = Fp.add(Y3, t0);\n      t2 = Fp.mul(Y1, Z1); // step 25\n      t2 = Fp.add(t2, t2);\n      t0 = Fp.mul(t2, t3);\n      X3 = Fp.sub(X3, t0);\n      Z3 = Fp.mul(t2, t1);\n      Z3 = Fp.add(Z3, Z3); // step 30\n      Z3 = Fp.add(Z3, Z3);\n      return new Point(X3, Y3, Z3);\n    }\n\n    // Renes-Costello-Batina exception-free addition formula.\n    // There is 30% faster Jacobian formula, but it is not complete.\n    // https://eprint.iacr.org/2015/1060, algorithm 1\n    // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n    add(other: Point): Point {\n      aprjpoint(other);\n      const { px: X1, py: Y1, pz: Z1 } = this;\n      const { px: X2, py: Y2, pz: Z2 } = other;\n      let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n      const a = CURVE.a;\n      const b3 = Fp.mul(CURVE.b, _3n);\n      let t0 = Fp.mul(X1, X2); // step 1\n      let t1 = Fp.mul(Y1, Y2);\n      let t2 = Fp.mul(Z1, Z2);\n      let t3 = Fp.add(X1, Y1);\n      let t4 = Fp.add(X2, Y2); // step 5\n      t3 = Fp.mul(t3, t4);\n      t4 = Fp.add(t0, t1);\n      t3 = Fp.sub(t3, t4);\n      t4 = Fp.add(X1, Z1);\n      let t5 = Fp.add(X2, Z2); // step 10\n      t4 = Fp.mul(t4, t5);\n      t5 = Fp.add(t0, t2);\n      t4 = Fp.sub(t4, t5);\n      t5 = Fp.add(Y1, Z1);\n      X3 = Fp.add(Y2, Z2); // step 15\n      t5 = Fp.mul(t5, X3);\n      X3 = Fp.add(t1, t2);\n      t5 = Fp.sub(t5, X3);\n      Z3 = Fp.mul(a, t4);\n      X3 = Fp.mul(b3, t2); // step 20\n      Z3 = Fp.add(X3, Z3);\n      X3 = Fp.sub(t1, Z3);\n      Z3 = Fp.add(t1, Z3);\n      Y3 = Fp.mul(X3, Z3);\n      t1 = Fp.add(t0, t0); // step 25\n      t1 = Fp.add(t1, t0);\n      t2 = Fp.mul(a, t2);\n      t4 = Fp.mul(b3, t4);\n      t1 = Fp.add(t1, t2);\n      t2 = Fp.sub(t0, t2); // step 30\n      t2 = Fp.mul(a, t2);\n      t4 = Fp.add(t4, t2);\n      t0 = Fp.mul(t1, t4);\n      Y3 = Fp.add(Y3, t0);\n      t0 = Fp.mul(t5, t4); // step 35\n      X3 = Fp.mul(t3, X3);\n      X3 = Fp.sub(X3, t0);\n      t0 = Fp.mul(t3, t1);\n      Z3 = Fp.mul(t5, Z3);\n      Z3 = Fp.add(Z3, t0); // step 40\n      return new Point(X3, Y3, Z3);\n    }\n\n    subtract(other: Point) {\n      return this.add(other.negate());\n    }\n\n    is0() {\n      return this.equals(Point.ZERO);\n    }\n\n    private wNAF(n: bigint): { p: Point; f: Point } {\n      return wnaf.wNAFCached(this, n, Point.normalizeZ);\n    }\n\n    /**\n     * Non-constant-time multiplication. Uses double-and-add algorithm.\n     * It's faster, but should only be used when you don't care about\n     * an exposed private key e.g. sig verification, which works over *public* keys.\n     */\n    multiplyUnsafe(sc: bigint): Point {\n      const { endo, n: N } = CURVE;\n      aInRange('scalar', sc, _0n, N);\n      const I = Point.ZERO;\n      if (sc === _0n) return I;\n      if (this.is0() || sc === _1n) return this;\n\n      // Case a: no endomorphism. Case b: has precomputes.\n      if (!endo || wnaf.hasPrecomputes(this))\n        return wnaf.wNAFCachedUnsafe(this, sc, Point.normalizeZ);\n\n      // Case c: endomorphism\n      /** See docs for {@link EndomorphismOpts} */\n      let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n      let k1p = I;\n      let k2p = I;\n      let d: Point = this;\n      while (k1 > _0n || k2 > _0n) {\n        if (k1 & _1n) k1p = k1p.add(d);\n        if (k2 & _1n) k2p = k2p.add(d);\n        d = d.double();\n        k1 >>= _1n;\n        k2 >>= _1n;\n      }\n      if (k1neg) k1p = k1p.negate();\n      if (k2neg) k2p = k2p.negate();\n      k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n      return k1p.add(k2p);\n    }\n\n    /**\n     * Constant time multiplication.\n     * Uses wNAF method. Windowed method may be 10% faster,\n     * but takes 2x longer to generate and consumes 2x memory.\n     * Uses precomputes when available.\n     * Uses endomorphism for Koblitz curves.\n     * @param scalar by which the point would be multiplied\n     * @returns New point\n     */\n    multiply(scalar: bigint): Point {\n      const { endo, n: N } = CURVE;\n      aInRange('scalar', scalar, _1n, N);\n      let point: Point, fake: Point; // Fake point is used to const-time mult\n      /** See docs for {@link EndomorphismOpts} */\n      if (endo) {\n        const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n        let { p: k1p, f: f1p } = this.wNAF(k1);\n        let { p: k2p, f: f2p } = this.wNAF(k2);\n        k1p = wnaf.constTimeNegate(k1neg, k1p);\n        k2p = wnaf.constTimeNegate(k2neg, k2p);\n        k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n        point = k1p.add(k2p);\n        fake = f1p.add(f2p);\n      } else {\n        const { p, f } = this.wNAF(scalar);\n        point = p;\n        fake = f;\n      }\n      // Normalize `z` for both points, but return only real one\n      return Point.normalizeZ([point, fake])[0];\n    }\n\n    /**\n     * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n     * Not using Strauss-Shamir trick: precomputation tables are faster.\n     * The trick could be useful if both P and Q are not G (not in our case).\n     * @returns non-zero affine point\n     */\n    multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n      const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n      const mul = (\n        P: Point,\n        a: bigint // Select faster multiply() method\n      ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n      const sum = mul(this, a).add(mul(Q, b));\n      return sum.is0() ? undefined : sum;\n    }\n\n    // Converts Projective point to affine (x, y) coordinates.\n    // Can accept precomputed Z^-1 - for example, from invertBatch.\n    // (x, y, z) ∋ (x=x/z, y=y/z)\n    toAffine(iz?: T): AffinePoint<T> {\n      return toAffineMemo(this, iz);\n    }\n    isTorsionFree(): boolean {\n      const { h: cofactor, isTorsionFree } = CURVE;\n      if (cofactor === _1n) return true; // No subgroups, always torsion-free\n      if (isTorsionFree) return isTorsionFree(Point, this);\n      throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n    }\n    clearCofactor(): Point {\n      const { h: cofactor, clearCofactor } = CURVE;\n      if (cofactor === _1n) return this; // Fast-path\n      if (clearCofactor) return clearCofactor(Point, this) as Point;\n      return this.multiplyUnsafe(CURVE.h);\n    }\n\n    toRawBytes(isCompressed = true): Uint8Array {\n      abool('isCompressed', isCompressed);\n      this.assertValidity();\n      return toBytes(Point, this, isCompressed);\n    }\n\n    toHex(isCompressed = true): string {\n      abool('isCompressed', isCompressed);\n      return bytesToHex(this.toRawBytes(isCompressed));\n    }\n  }\n  const { endo, nBitLength } = CURVE;\n  const wnaf = wNAF(Point, endo ? Math.ceil(nBitLength / 2) : nBitLength);\n  return {\n    CURVE,\n    ProjectivePoint: Point as ProjConstructor<T>,\n    normPrivateKeyToScalar,\n    weierstrassEquation,\n    isWithinCurveOrder,\n  };\n}\n\n// Instance\nexport interface SignatureType {\n  readonly r: bigint;\n  readonly s: bigint;\n  readonly recovery?: number;\n  assertValidity(): void;\n  addRecoveryBit(recovery: number): RecoveredSignatureType;\n  hasHighS(): boolean;\n  normalizeS(): SignatureType;\n  recoverPublicKey(msgHash: Hex): ProjPointType<bigint>;\n  toCompactRawBytes(): Uint8Array;\n  toCompactHex(): string;\n  toDERRawBytes(isCompressed?: boolean): Uint8Array;\n  toDERHex(isCompressed?: boolean): string;\n}\nexport type RecoveredSignatureType = SignatureType & {\n  readonly recovery: number;\n};\n// Static methods\nexport type SignatureConstructor = {\n  new (r: bigint, s: bigint): SignatureType;\n  fromCompact(hex: Hex): SignatureType;\n  fromDER(hex: Hex): SignatureType;\n};\ntype SignatureLike = { r: bigint; s: bigint };\n\nexport type PubKey = Hex | ProjPointType<bigint>;\n\nexport type CurveType = BasicWCurve<bigint> & {\n  hash: CHash; // CHash not FHash because we need outputLen for DRBG\n  hmac: HmacFnSync;\n  randomBytes: (bytesLength?: number) => Uint8Array;\n  lowS?: boolean;\n  bits2int?: (bytes: Uint8Array) => bigint;\n  bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\n\nfunction validateOpts(\n  curve: CurveType\n): Readonly<CurveType & { nByteLength: number; nBitLength: number }> {\n  const opts = validateBasic(curve);\n  validateObject(\n    opts,\n    {\n      hash: 'hash',\n      hmac: 'function',\n      randomBytes: 'function',\n    },\n    {\n      bits2int: 'function',\n      bits2int_modN: 'function',\n      lowS: 'boolean',\n    }\n  );\n  return Object.freeze({ lowS: true, ...opts } as const);\n}\n\nexport type CurveFn = {\n  CURVE: ReturnType<typeof validateOpts>;\n  getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n  getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;\n  sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;\n  verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;\n  ProjectivePoint: ProjConstructor<bigint>;\n  Signature: SignatureConstructor;\n  utils: {\n    normPrivateKeyToScalar: (key: PrivKey) => bigint;\n    isValidPrivateKey(privateKey: PrivKey): boolean;\n    randomPrivateKey: () => Uint8Array;\n    precompute: (windowSize?: number, point?: ProjPointType<bigint>) => ProjPointType<bigint>;\n  };\n};\n\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef: CurveType): CurveFn {\n  const CURVE = validateOpts(curveDef) as ReturnType<typeof validateOpts>;\n  const { Fp, n: CURVE_ORDER, nByteLength, nBitLength } = CURVE;\n  const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n  const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n\n  function modN(a: bigint) {\n    return mod(a, CURVE_ORDER);\n  }\n  function invN(a: bigint) {\n    return invert(a, CURVE_ORDER);\n  }\n\n  const {\n    ProjectivePoint: Point,\n    normPrivateKeyToScalar,\n    weierstrassEquation,\n    isWithinCurveOrder,\n  } = weierstrassPoints({\n    ...CURVE,\n    toBytes(_c, point, isCompressed: boolean): Uint8Array {\n      const a = point.toAffine();\n      const x = Fp.toBytes(a.x);\n      const cat = concatBytes;\n      abool('isCompressed', isCompressed);\n      if (isCompressed) {\n        return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n      } else {\n        return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n      }\n    },\n    fromBytes(bytes: Uint8Array) {\n      const len = bytes.length;\n      const head = bytes[0];\n      const tail = bytes.subarray(1);\n      // this.assertValidity() is done inside of fromHex\n      if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n        const x = bytesToNumberBE(tail);\n        if (!inRange(x, _1n, Fp.ORDER)) throw new Error('Point is not on curve');\n        const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n        let y: bigint;\n        try {\n          y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n        } catch (sqrtError) {\n          const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n          throw new Error('Point is not on curve' + suffix);\n        }\n        const isYOdd = (y & _1n) === _1n;\n        // ECDSA\n        const isHeadOdd = (head & 1) === 1;\n        if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n        return { x, y };\n      } else if (len === uncompressedLen && head === 0x04) {\n        const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n        const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n        return { x, y };\n      } else {\n        const cl = compressedLen;\n        const ul = uncompressedLen;\n        throw new Error(\n          'invalid Point, expected length of ' + cl + ', or uncompressed ' + ul + ', got ' + len\n        );\n      }\n    },\n  });\n\n  function isBiggerThanHalfOrder(number: bigint) {\n    const HALF = CURVE_ORDER >> _1n;\n    return number > HALF;\n  }\n\n  function normalizeS(s: bigint) {\n    return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n  }\n  // slice bytes num\n  const slcNum = (b: Uint8Array, from: number, to: number) => bytesToNumberBE(b.slice(from, to));\n\n  /**\n   * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n   */\n  class Signature implements SignatureType {\n    readonly r: bigint;\n    readonly s: bigint;\n    readonly recovery?: number;\n    constructor(r: bigint, s: bigint, recovery?: number) {\n      aInRange('r', r, _1n, CURVE_ORDER); // r in [1..N]\n      aInRange('s', s, _1n, CURVE_ORDER); // s in [1..N]\n      this.r = r;\n      this.s = s;\n      if (recovery != null) this.recovery = recovery;\n      Object.freeze(this);\n    }\n\n    // pair (bytes of r, bytes of s)\n    static fromCompact(hex: Hex) {\n      const l = nByteLength;\n      hex = ensureBytes('compactSignature', hex, l * 2);\n      return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n    }\n\n    // DER encoded ECDSA signature\n    // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n    static fromDER(hex: Hex) {\n      const { r, s } = DER.toSig(ensureBytes('DER', hex));\n      return new Signature(r, s);\n    }\n\n    /**\n     * @todo remove\n     * @deprecated\n     */\n    assertValidity(): void {}\n\n    addRecoveryBit(recovery: number): RecoveredSignature {\n      return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n    }\n\n    recoverPublicKey(msgHash: Hex): typeof Point.BASE {\n      const { r, s, recovery: rec } = this;\n      const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n      if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n      const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n      if (radj >= Fp.ORDER) throw new Error('recovery id 2 or 3 invalid');\n      const prefix = (rec & 1) === 0 ? '02' : '03';\n      const R = Point.fromHex(prefix + numToSizedHex(radj, Fp.BYTES));\n      const ir = invN(radj); // r^-1\n      const u1 = modN(-h * ir); // -hr^-1\n      const u2 = modN(s * ir); // sr^-1\n      const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n      if (!Q) throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n      Q.assertValidity();\n      return Q;\n    }\n\n    // Signatures should be low-s, to prevent malleability.\n    hasHighS(): boolean {\n      return isBiggerThanHalfOrder(this.s);\n    }\n\n    normalizeS() {\n      return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n    }\n\n    // DER-encoded\n    toDERRawBytes() {\n      return hexToBytes(this.toDERHex());\n    }\n    toDERHex() {\n      return DER.hexFromSig(this);\n    }\n\n    // padded bytes of r, then padded bytes of s\n    toCompactRawBytes() {\n      return hexToBytes(this.toCompactHex());\n    }\n    toCompactHex() {\n      const l = nByteLength;\n      return numToSizedHex(this.r, l) + numToSizedHex(this.s, l);\n    }\n  }\n  type RecoveredSignature = Signature & { recovery: number };\n\n  const utils = {\n    isValidPrivateKey(privateKey: PrivKey) {\n      try {\n        normPrivateKeyToScalar(privateKey);\n        return true;\n      } catch (error) {\n        return false;\n      }\n    },\n    normPrivateKeyToScalar: normPrivateKeyToScalar,\n\n    /**\n     * Produces cryptographically secure private key from random of size\n     * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n     */\n    randomPrivateKey: (): Uint8Array => {\n      const length = getMinHashLength(CURVE.n);\n      return mapHashToField(CURVE.randomBytes(length), CURVE.n);\n    },\n\n    /**\n     * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n     * Allows to massively speed-up `point.multiply(scalar)`.\n     * @returns cached point\n     * @example\n     * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n     * fast.multiply(privKey); // much faster ECDH now\n     */\n    precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n      point._setWindowSize(windowSize);\n      point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n      return point;\n    },\n  };\n\n  /**\n   * Computes public key for a private key. Checks for validity of the private key.\n   * @param privateKey private key\n   * @param isCompressed whether to return compact (default), or full key\n   * @returns Public key, full when isCompressed=false; short when isCompressed=true\n   */\n  function getPublicKey(privateKey: PrivKey, isCompressed = true): Uint8Array {\n    return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n  }\n\n  /**\n   * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n   */\n  function isProbPub(item: PrivKey | PubKey): boolean | undefined {\n    if (typeof item === 'bigint') return false;\n    if (item instanceof Point) return true;\n    const arr = ensureBytes('key', item);\n    const len = arr.length;\n    const fpl = Fp.BYTES;\n    const compLen = fpl + 1; // e.g. 33 for 32\n    const uncompLen = 2 * fpl + 1; // e.g. 65 for 32\n    if (CURVE.allowedPrivateKeyLengths || nByteLength === compLen) {\n      return undefined;\n    } else {\n      return len === compLen || len === uncompLen;\n    }\n  }\n\n  /**\n   * ECDH (Elliptic Curve Diffie Hellman).\n   * Computes shared public key from private key and public key.\n   * Checks: 1) private key validity 2) shared key is on-curve.\n   * Does NOT hash the result.\n   * @param privateA private key\n   * @param publicB different public key\n   * @param isCompressed whether to return compact (default), or full key\n   * @returns shared public key\n   */\n  function getSharedSecret(privateA: PrivKey, publicB: Hex, isCompressed = true): Uint8Array {\n    if (isProbPub(privateA) === true) throw new Error('first arg must be private key');\n    if (isProbPub(publicB) === false) throw new Error('second arg must be public key');\n    const b = Point.fromHex(publicB); // check for being on-curve\n    return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n  }\n\n  // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n  // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n  // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n  // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n  const bits2int =\n    CURVE.bits2int ||\n    function (bytes: Uint8Array): bigint {\n      // Our custom check \"just in case\", for protection against DoS\n      if (bytes.length > 8192) throw new Error('input is too large');\n      // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n      // for some cases, since bytes.length * 8 is not actual bitLength.\n      const num = bytesToNumberBE(bytes); // check for == u8 done here\n      const delta = bytes.length * 8 - nBitLength; // truncate to nBitLength leftmost bits\n      return delta > 0 ? num >> BigInt(delta) : num;\n    };\n  const bits2int_modN =\n    CURVE.bits2int_modN ||\n    function (bytes: Uint8Array): bigint {\n      return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n    };\n  // NOTE: pads output with zero as per spec\n  const ORDER_MASK = bitMask(nBitLength);\n  /**\n   * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n   */\n  function int2octets(num: bigint): Uint8Array {\n    aInRange('num < 2^' + nBitLength, num, _0n, ORDER_MASK);\n    // works with order, can have different size than numToField!\n    return numberToBytesBE(num, nByteLength);\n  }\n\n  // Steps A, D of RFC6979 3.2\n  // Creates RFC6979 seed; converts msg/privKey to numbers.\n  // Used only in sign, not in verify.\n  // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order,\n  // this will be invalid at least for P521. Also it can be bigger for P224 + SHA256\n  function prepSig(msgHash: Hex, privateKey: PrivKey, opts = defaultSigOpts) {\n    if (['recovered', 'canonical'].some((k) => k in opts))\n      throw new Error('sign() legacy options not supported');\n    const { hash, randomBytes } = CURVE;\n    let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n    if (lowS == null) lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n    msgHash = ensureBytes('msgHash', msgHash);\n    validateSigVerOpts(opts);\n    if (prehash) msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n\n    // We can't later call bits2octets, since nested bits2int is broken for curves\n    // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n    // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n    const h1int = bits2int_modN(msgHash);\n    const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n    const seedArgs = [int2octets(d), int2octets(h1int)];\n    // extraEntropy. RFC6979 3.6: additional k' (optional).\n    if (ent != null && ent !== false) {\n      // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n      const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n      seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n    }\n    const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2\n    const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n    // Converts signature params into point w r/s, checks result for validity.\n    function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n      // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n      const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n      if (!isWithinCurveOrder(k)) return; // Important: all mod() calls here must be done over N\n      const ik = invN(k); // k^-1 mod n\n      const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n      const r = modN(q.x); // r = q.x mod n\n      if (r === _0n) return;\n      // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n      // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n      // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n      const s = modN(ik * modN(m + r * d)); // Not using blinding here\n      if (s === _0n) return;\n      let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n      let normS = s;\n      if (lowS && isBiggerThanHalfOrder(s)) {\n        normS = normalizeS(s); // if lowS was passed, ensure s is always\n        recovery ^= 1; // // in the bottom half of N\n      }\n      return new Signature(r, normS, recovery) as RecoveredSignature; // use normS, not s\n    }\n    return { seed, k2sig };\n  }\n  const defaultSigOpts: SignOpts = { lowS: CURVE.lowS, prehash: false };\n  const defaultVerOpts: VerOpts = { lowS: CURVE.lowS, prehash: false };\n\n  /**\n   * Signs message hash with a private key.\n   * ```\n   * sign(m, d, k) where\n   *   (x, y) = G × k\n   *   r = x mod n\n   *   s = (m + dr)/k mod n\n   * ```\n   * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n   * @param privKey private key\n   * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n   * @returns signature with recovery param\n   */\n  function sign(msgHash: Hex, privKey: PrivKey, opts = defaultSigOpts): RecoveredSignature {\n    const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n    const C = CURVE;\n    const drbg = createHmacDrbg<RecoveredSignature>(C.hash.outputLen, C.nByteLength, C.hmac);\n    return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n  }\n\n  // Enable precomputes. Slows down first publicKey computation by 20ms.\n  Point.BASE._setWindowSize(8);\n  // utils.precompute(8, ProjectivePoint.BASE)\n\n  /**\n   * Verifies a signature against message hash and public key.\n   * Rejects lowS signatures by default: to override,\n   * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n   *\n   * ```\n   * verify(r, s, h, P) where\n   *   U1 = hs^-1 mod n\n   *   U2 = rs^-1 mod n\n   *   R = U1⋅G - U2⋅P\n   *   mod(R.x, n) == r\n   * ```\n   */\n  function verify(\n    signature: Hex | SignatureLike,\n    msgHash: Hex,\n    publicKey: Hex,\n    opts = defaultVerOpts\n  ): boolean {\n    const sg = signature;\n    msgHash = ensureBytes('msgHash', msgHash);\n    publicKey = ensureBytes('publicKey', publicKey);\n    const { lowS, prehash, format } = opts;\n\n    // Verify opts, deduce signature format\n    validateSigVerOpts(opts);\n    if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n    if (format !== undefined && format !== 'compact' && format !== 'der')\n      throw new Error('format must be compact or der');\n    const isHex = typeof sg === 'string' || isBytes(sg);\n    const isObj =\n      !isHex &&\n      !format &&\n      typeof sg === 'object' &&\n      sg !== null &&\n      typeof sg.r === 'bigint' &&\n      typeof sg.s === 'bigint';\n    if (!isHex && !isObj)\n      throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n\n    let _sig: Signature | undefined = undefined;\n    let P: ProjPointType<bigint>;\n    try {\n      if (isObj) _sig = new Signature(sg.r, sg.s);\n      if (isHex) {\n        // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n        // Since DER can also be 2*nByteLength bytes, we check for it first.\n        try {\n          if (format !== 'compact') _sig = Signature.fromDER(sg);\n        } catch (derError) {\n          if (!(derError instanceof DER.Err)) throw derError;\n        }\n        if (!_sig && format !== 'der') _sig = Signature.fromCompact(sg);\n      }\n      P = Point.fromHex(publicKey);\n    } catch (error) {\n      return false;\n    }\n    if (!_sig) return false;\n    if (lowS && _sig.hasHighS()) return false;\n    if (prehash) msgHash = CURVE.hash(msgHash);\n    const { r, s } = _sig;\n    const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n    const is = invN(s); // s^-1\n    const u1 = modN(h * is); // u1 = hs^-1 mod n\n    const u2 = modN(r * is); // u2 = rs^-1 mod n\n    const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n    if (!R) return false;\n    const v = modN(R.x);\n    return v === r;\n  }\n  return {\n    CURVE,\n    getPublicKey,\n    getSharedSecret,\n    sign,\n    verify,\n    ProjectivePoint: Point,\n    Signature,\n    utils,\n  };\n}\n\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio<T>(\n  Fp: IField<T>,\n  Z: T\n): (u: T, v: T) => { isValid: boolean; value: T } {\n  // Generic implementation\n  const q = Fp.ORDER;\n  let l = _0n;\n  for (let o = q - _1n; o % _2n === _0n; o /= _2n) l += _1n;\n  const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n  // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n  // 2n ** c1 == 2n << (c1-1)\n  const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n  const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n  const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1)  # Integer arithmetic\n  const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2            # Integer arithmetic\n  const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1                # Integer arithmetic\n  const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1)                  # Integer arithmetic\n  const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n  const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n  let sqrtRatio = (u: T, v: T): { isValid: boolean; value: T } => {\n    let tv1 = c6; // 1. tv1 = c6\n    let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n    let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n    tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n    let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n    tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n    tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n    tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n    tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n    let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n    tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n    let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n    tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n    tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n    tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n    tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n    // 17. for i in (c1, c1 - 1, ..., 2):\n    for (let i = c1; i > _1n; i--) {\n      let tv5 = i - _2n; // 18.    tv5 = i - 2\n      tv5 = _2n << (tv5 - _1n); // 19.    tv5 = 2^tv5\n      let tvv5 = Fp.pow(tv4, tv5); // 20.    tv5 = tv4^tv5\n      const e1 = Fp.eql(tvv5, Fp.ONE); // 21.    e1 = tv5 == 1\n      tv2 = Fp.mul(tv3, tv1); // 22.    tv2 = tv3 * tv1\n      tv1 = Fp.mul(tv1, tv1); // 23.    tv1 = tv1 * tv1\n      tvv5 = Fp.mul(tv4, tv1); // 24.    tv5 = tv4 * tv1\n      tv3 = Fp.cmov(tv2, tv3, e1); // 25.    tv3 = CMOV(tv2, tv3, e1)\n      tv4 = Fp.cmov(tvv5, tv4, e1); // 26.    tv4 = CMOV(tv5, tv4, e1)\n    }\n    return { isValid: isQR, value: tv3 };\n  };\n  if (Fp.ORDER % _4n === _3n) {\n    // sqrt_ratio_3mod4(u, v)\n    const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4     # Integer arithmetic\n    const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n    sqrtRatio = (u: T, v: T) => {\n      let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n      const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n      tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n      let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n      y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n      const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n      const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n      const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n      let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n      return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n    };\n  }\n  // No curves uses that\n  // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n  return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU<T>(\n  Fp: IField<T>,\n  opts: {\n    A: T;\n    B: T;\n    Z: T;\n  }\n): (u: T) => { x: T; y: T } {\n  validateField(Fp);\n  if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n    throw new Error('mapToCurveSimpleSWU: invalid opts');\n  const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n  if (!Fp.isOdd) throw new Error('Fp.isOdd is not implemented!');\n  // Input: u, an element of F.\n  // Output: (x, y), a point on E.\n  return (u: T): { x: T; y: T } => {\n    // prettier-ignore\n    let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n    tv1 = Fp.sqr(u); // 1.  tv1 = u^2\n    tv1 = Fp.mul(tv1, opts.Z); // 2.  tv1 = Z * tv1\n    tv2 = Fp.sqr(tv1); // 3.  tv2 = tv1^2\n    tv2 = Fp.add(tv2, tv1); // 4.  tv2 = tv2 + tv1\n    tv3 = Fp.add(tv2, Fp.ONE); // 5.  tv3 = tv2 + 1\n    tv3 = Fp.mul(tv3, opts.B); // 6.  tv3 = B * tv3\n    tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7.  tv4 = CMOV(Z, -tv2, tv2 != 0)\n    tv4 = Fp.mul(tv4, opts.A); // 8.  tv4 = A * tv4\n    tv2 = Fp.sqr(tv3); // 9.  tv2 = tv3^2\n    tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n    tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n    tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n    tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n    tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n    tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n    tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n    x = Fp.mul(tv1, tv3); // 17.   x = tv1 * tv3\n    const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n    y = Fp.mul(tv1, u); // 19.   y = tv1 * u  -> Z * u^3 * y1\n    y = Fp.mul(y, value); // 20.   y = y * y1\n    x = Fp.cmov(x, tv3, isValid); // 21.   x = CMOV(x, tv3, is_gx1_square)\n    y = Fp.cmov(y, value, isValid); // 22.   y = CMOV(y, y1, is_gx1_square)\n    const e1 = Fp.isOdd!(u) === Fp.isOdd!(y); // 23.  e1 = sgn0(u) == sgn0(y)\n    y = Fp.cmov(Fp.neg(y), y, e1); // 24.   y = CMOV(-y, y, e1)\n    const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n    x = Fp.mul(x, tv4_inv); // 25.   x = x / tv4\n    return { x, y };\n  };\n}\n","/**\n * BLS (Barreto-Lynn-Scott) family of pairing-friendly curves.\n * BLS != BLS.\n * The file implements BLS (Boneh-Lynn-Shacham) signatures.\n * Used in both BLS (Barreto-Lynn-Scott) and BN (Barreto-Naehrig)\n * families of pairing-friendly curves.\n * Consists of two curves: G1 and G2:\n * - G1 is a subgroup of (x, y) E(Fq) over y² = x³ + 4.\n * - G2 is a subgroup of ((x₁, x₂+i), (y₁, y₂+i)) E(Fq²) over y² = x³ + 4(1 + i) where i is √-1\n * - Gt, created by bilinear (ate) pairing e(G1, G2), consists of p-th roots of unity in\n *   Fq^k where k is embedding degree. Only degree 12 is currently supported, 24 is not.\n * Pairing is used to aggregate and verify signatures.\n * There are two main ways to use it:\n * 1. Fp for short private keys, Fp₂ for signatures\n * 2. Fp for short signatures, Fp₂ for private keys\n * @module\n **/\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// TODO: import { AffinePoint } from './curve.ts';\nimport {\n  type H2CPointConstructor,\n  type htfBasicOpts,\n  type Opts as HTFOpts,\n  type MapToCurve,\n  createHasher,\n} from './hash-to-curve.ts';\nimport { type IField, getMinHashLength, mapHashToField } from './modular.ts';\nimport type { Fp12, Fp12Bls, Fp2, Fp2Bls, Fp6 } from './tower.ts';\nimport { type CHash, type Hex, type PrivKey, ensureBytes, memoized } from './utils.ts';\nimport {\n  type CurvePointsRes,\n  type CurvePointsType,\n  type ProjPointType,\n  weierstrassPoints,\n} from './weierstrass.ts';\n\ntype Fp = bigint; // Can be different field?\n\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n\nexport type TwistType = 'multiplicative' | 'divisive';\n\nexport type ShortSignatureCoder<Fp> = {\n  fromHex(hex: Hex): ProjPointType<Fp>;\n  toRawBytes(point: ProjPointType<Fp>): Uint8Array;\n  toHex(point: ProjPointType<Fp>): string;\n};\n\nexport type SignatureCoder<Fp> = {\n  fromHex(hex: Hex): ProjPointType<Fp>;\n  toRawBytes(point: ProjPointType<Fp>): Uint8Array;\n  toHex(point: ProjPointType<Fp>): string;\n};\n\nexport type PostPrecomputePointAddFn = (\n  Rx: Fp2,\n  Ry: Fp2,\n  Rz: Fp2,\n  Qx: Fp2,\n  Qy: Fp2\n) => { Rx: Fp2; Ry: Fp2; Rz: Fp2 };\nexport type PostPrecomputeFn = (\n  Rx: Fp2,\n  Ry: Fp2,\n  Rz: Fp2,\n  Qx: Fp2,\n  Qy: Fp2,\n  pointAdd: PostPrecomputePointAddFn\n) => void;\nexport type CurveType = {\n  G1: Omit<CurvePointsType<Fp>, 'n'> & {\n    ShortSignature: SignatureCoder<Fp>;\n    mapToCurve: MapToCurve<Fp>;\n    htfDefaults: HTFOpts;\n  };\n  G2: Omit<CurvePointsType<Fp2>, 'n'> & {\n    Signature: SignatureCoder<Fp2>;\n    mapToCurve: MapToCurve<Fp2>;\n    htfDefaults: HTFOpts;\n  };\n  fields: {\n    Fp: IField<Fp>;\n    Fr: IField<bigint>;\n    Fp2: Fp2Bls;\n    Fp6: IField<Fp6>;\n    Fp12: Fp12Bls;\n  };\n  params: {\n    // NOTE: MSB is always ignored and used as marker for length,\n    // otherwise leading zeros will be lost.\n    // Can be different from 'X' (seed) param!\n    ateLoopSize: bigint;\n    xNegative: boolean;\n    r: bigint;\n    twistType: TwistType; // BLS12-381: Multiplicative, BN254: Divisive\n  };\n  htfDefaults: HTFOpts;\n  hash: CHash; // Because we need outputLen for DRBG\n  randomBytes: (bytesLength?: number) => Uint8Array;\n  // This is super ugly hack for untwist point in BN254 after miller loop\n  postPrecompute?: PostPrecomputeFn;\n};\n\ntype PrecomputeSingle = [Fp2, Fp2, Fp2][];\ntype Precompute = PrecomputeSingle[];\n\nexport type CurveFn = {\n  getPublicKey: (privateKey: PrivKey) => Uint8Array;\n  getPublicKeyForShortSignatures: (privateKey: PrivKey) => Uint8Array;\n  sign: {\n    (message: Hex, privateKey: PrivKey, htfOpts?: htfBasicOpts): Uint8Array;\n    (message: ProjPointType<Fp2>, privateKey: PrivKey, htfOpts?: htfBasicOpts): ProjPointType<Fp2>;\n  };\n  signShortSignature: {\n    (message: Hex, privateKey: PrivKey, htfOpts?: htfBasicOpts): Uint8Array;\n    (message: ProjPointType<Fp>, privateKey: PrivKey, htfOpts?: htfBasicOpts): ProjPointType<Fp>;\n  };\n  verify: (\n    signature: Hex | ProjPointType<Fp2>,\n    message: Hex | ProjPointType<Fp2>,\n    publicKey: Hex | ProjPointType<Fp>,\n    htfOpts?: htfBasicOpts\n  ) => boolean;\n  verifyShortSignature: (\n    signature: Hex | ProjPointType<Fp>,\n    message: Hex | ProjPointType<Fp>,\n    publicKey: Hex | ProjPointType<Fp2>,\n    htfOpts?: htfBasicOpts\n  ) => boolean;\n  verifyBatch: (\n    signature: Hex | ProjPointType<Fp2>,\n    messages: (Hex | ProjPointType<Fp2>)[],\n    publicKeys: (Hex | ProjPointType<Fp>)[],\n    htfOpts?: htfBasicOpts\n  ) => boolean;\n  aggregatePublicKeys: {\n    (publicKeys: Hex[]): Uint8Array;\n    (publicKeys: ProjPointType<Fp>[]): ProjPointType<Fp>;\n  };\n  aggregateSignatures: {\n    (signatures: Hex[]): Uint8Array;\n    (signatures: ProjPointType<Fp2>[]): ProjPointType<Fp2>;\n  };\n  aggregateShortSignatures: {\n    (signatures: Hex[]): Uint8Array;\n    (signatures: ProjPointType<Fp>[]): ProjPointType<Fp>;\n  };\n  millerLoopBatch: (pairs: [Precompute, Fp, Fp][]) => Fp12;\n  pairing: (P: ProjPointType<Fp>, Q: ProjPointType<Fp2>, withFinalExponent?: boolean) => Fp12;\n  pairingBatch: (\n    pairs: { g1: ProjPointType<Fp>; g2: ProjPointType<Fp2> }[],\n    withFinalExponent?: boolean\n  ) => Fp12;\n  G1: CurvePointsRes<Fp> & ReturnType<typeof createHasher<Fp>>;\n  G2: CurvePointsRes<Fp2> & ReturnType<typeof createHasher<Fp2>>;\n  Signature: SignatureCoder<Fp2>;\n  ShortSignature: ShortSignatureCoder<Fp>;\n  params: {\n    ateLoopSize: bigint;\n    r: bigint;\n    G1b: bigint;\n    G2b: Fp2;\n  };\n  fields: {\n    Fp: IField<Fp>;\n    Fp2: Fp2Bls;\n    Fp6: IField<Fp6>;\n    Fp12: Fp12Bls;\n    Fr: IField<bigint>;\n  };\n  utils: {\n    randomPrivateKey: () => Uint8Array;\n    calcPairingPrecomputes: (p: ProjPointType<Fp2>) => Precompute;\n  };\n};\n\n// Not used with BLS12-381 (no sequential `11` in X). Useful for other curves.\nfunction NAfDecomposition(a: bigint) {\n  const res = [];\n  // a>1 because of marker bit\n  for (; a > _1n; a >>= _1n) {\n    if ((a & _1n) === _0n) res.unshift(0);\n    else if ((a & _3n) === _3n) {\n      res.unshift(-1);\n      a += _1n;\n    } else res.unshift(1);\n  }\n  return res;\n}\n\nexport function bls(CURVE: CurveType): CurveFn {\n  // Fields are specific for curve, so for now we'll need to pass them with opts\n  const { Fp, Fr, Fp2, Fp6, Fp12 } = CURVE.fields;\n  const BLS_X_IS_NEGATIVE = CURVE.params.xNegative;\n  const TWIST: TwistType = CURVE.params.twistType;\n  // Point on G1 curve: (x, y)\n  const G1_ = weierstrassPoints({ n: Fr.ORDER, ...CURVE.G1 });\n  const G1 = Object.assign(\n    G1_,\n    createHasher(G1_.ProjectivePoint, CURVE.G1.mapToCurve, {\n      ...CURVE.htfDefaults,\n      ...CURVE.G1.htfDefaults,\n    })\n  );\n  // Point on G2 curve (complex numbers): (x₁, x₂+i), (y₁, y₂+i)\n  const G2_ = weierstrassPoints({ n: Fr.ORDER, ...CURVE.G2 });\n  const G2 = Object.assign(\n    G2_,\n    createHasher(G2_.ProjectivePoint as H2CPointConstructor<Fp2>, CURVE.G2.mapToCurve, {\n      ...CURVE.htfDefaults,\n      ...CURVE.G2.htfDefaults,\n    })\n  );\n  type G1 = typeof G1.ProjectivePoint.BASE;\n  type G2 = typeof G2.ProjectivePoint.BASE;\n\n  // Applies sparse multiplication as line function\n  let lineFunction: (c0: Fp2, c1: Fp2, c2: Fp2, f: Fp12, Px: Fp, Py: Fp) => Fp12;\n  if (TWIST === 'multiplicative') {\n    lineFunction = (c0: Fp2, c1: Fp2, c2: Fp2, f: Fp12, Px: Fp, Py: Fp) =>\n      Fp12.mul014(f, c0, Fp2.mul(c1, Px), Fp2.mul(c2, Py));\n  } else if (TWIST === 'divisive') {\n    // NOTE: it should be [c0, c1, c2], but we use different order here to reduce complexity of\n    // precompute calculations.\n    lineFunction = (c0: Fp2, c1: Fp2, c2: Fp2, f: Fp12, Px: Fp, Py: Fp) =>\n      Fp12.mul034(f, Fp2.mul(c2, Py), Fp2.mul(c1, Px), c0);\n  } else throw new Error('bls: unknown twist type');\n\n  const Fp2div2 = Fp2.div(Fp2.ONE, Fp2.mul(Fp2.ONE, _2n));\n  function pointDouble(ell: PrecomputeSingle, Rx: Fp2, Ry: Fp2, Rz: Fp2) {\n    const t0 = Fp2.sqr(Ry); // Ry²\n    const t1 = Fp2.sqr(Rz); // Rz²\n    const t2 = Fp2.mulByB(Fp2.mul(t1, _3n)); // 3 * T1 * B\n    const t3 = Fp2.mul(t2, _3n); // 3 * T2\n    const t4 = Fp2.sub(Fp2.sub(Fp2.sqr(Fp2.add(Ry, Rz)), t1), t0); // (Ry + Rz)² - T1 - T0\n    const c0 = Fp2.sub(t2, t0); // T2 - T0 (i)\n    const c1 = Fp2.mul(Fp2.sqr(Rx), _3n); // 3 * Rx²\n    const c2 = Fp2.neg(t4); // -T4 (-h)\n\n    ell.push([c0, c1, c2]);\n\n    Rx = Fp2.mul(Fp2.mul(Fp2.mul(Fp2.sub(t0, t3), Rx), Ry), Fp2div2); // ((T0 - T3) * Rx * Ry) / 2\n    Ry = Fp2.sub(Fp2.sqr(Fp2.mul(Fp2.add(t0, t3), Fp2div2)), Fp2.mul(Fp2.sqr(t2), _3n)); // ((T0 + T3) / 2)² - 3 * T2²\n    Rz = Fp2.mul(t0, t4); // T0 * T4\n    return { Rx, Ry, Rz };\n  }\n  function pointAdd(ell: PrecomputeSingle, Rx: Fp2, Ry: Fp2, Rz: Fp2, Qx: Fp2, Qy: Fp2) {\n    // Addition\n    const t0 = Fp2.sub(Ry, Fp2.mul(Qy, Rz)); // Ry - Qy * Rz\n    const t1 = Fp2.sub(Rx, Fp2.mul(Qx, Rz)); // Rx - Qx * Rz\n    const c0 = Fp2.sub(Fp2.mul(t0, Qx), Fp2.mul(t1, Qy)); // T0 * Qx - T1 * Qy == Ry * Qx  - Rx * Qy\n    const c1 = Fp2.neg(t0); // -T0 == Qy * Rz - Ry\n    const c2 = t1; // == Rx - Qx * Rz\n\n    ell.push([c0, c1, c2]);\n\n    const t2 = Fp2.sqr(t1); // T1²\n    const t3 = Fp2.mul(t2, t1); // T2 * T1\n    const t4 = Fp2.mul(t2, Rx); // T2 * Rx\n    const t5 = Fp2.add(Fp2.sub(t3, Fp2.mul(t4, _2n)), Fp2.mul(Fp2.sqr(t0), Rz)); // T3 - 2 * T4 + T0² * Rz\n    Rx = Fp2.mul(t1, t5); // T1 * T5\n    Ry = Fp2.sub(Fp2.mul(Fp2.sub(t4, t5), t0), Fp2.mul(t3, Ry)); // (T4 - T5) * T0 - T3 * Ry\n    Rz = Fp2.mul(Rz, t3); // Rz * T3\n    return { Rx, Ry, Rz };\n  }\n\n  // Pre-compute coefficients for sparse multiplication\n  // Point addition and point double calculations is reused for coefficients\n  // pointAdd happens only if bit set, so wNAF is reasonable. Unfortunately we cannot combine\n  // add + double in windowed precomputes here, otherwise it would be single op (since X is static)\n  const ATE_NAF = NAfDecomposition(CURVE.params.ateLoopSize);\n\n  const calcPairingPrecomputes = memoized((point: G2) => {\n    const p = point;\n    const { x, y } = p.toAffine();\n    // prettier-ignore\n    const Qx = x, Qy = y, negQy = Fp2.neg(y);\n    // prettier-ignore\n    let Rx = Qx, Ry = Qy, Rz = Fp2.ONE;\n    const ell: Precompute = [];\n    for (const bit of ATE_NAF) {\n      const cur: PrecomputeSingle = [];\n      ({ Rx, Ry, Rz } = pointDouble(cur, Rx, Ry, Rz));\n      if (bit) ({ Rx, Ry, Rz } = pointAdd(cur, Rx, Ry, Rz, Qx, bit === -1 ? negQy : Qy));\n      ell.push(cur);\n    }\n    if (CURVE.postPrecompute) {\n      const last = ell[ell.length - 1];\n      CURVE.postPrecompute(Rx, Ry, Rz, Qx, Qy, pointAdd.bind(null, last));\n    }\n    return ell;\n  });\n\n  // Main pairing logic is here. Computes product of miller loops + final exponentiate\n  // Applies calculated precomputes\n  type MillerInput = [Precompute, Fp, Fp][];\n  function millerLoopBatch(pairs: MillerInput, withFinalExponent: boolean = false) {\n    let f12 = Fp12.ONE;\n    if (pairs.length) {\n      const ellLen = pairs[0][0].length;\n      for (let i = 0; i < ellLen; i++) {\n        f12 = Fp12.sqr(f12); // This allows us to do sqr only one time for all pairings\n        // NOTE: we apply multiple pairings in parallel here\n        for (const [ell, Px, Py] of pairs) {\n          for (const [c0, c1, c2] of ell[i]) f12 = lineFunction(c0, c1, c2, f12, Px, Py);\n        }\n      }\n    }\n    if (BLS_X_IS_NEGATIVE) f12 = Fp12.conjugate(f12);\n    return withFinalExponent ? Fp12.finalExponentiate(f12) : f12;\n  }\n  type PairingInput = { g1: G1; g2: G2 };\n  // Calculates product of multiple pairings\n  // This up to x2 faster than just `map(({g1, g2})=>pairing({g1,g2}))`\n  function pairingBatch(pairs: PairingInput[], withFinalExponent: boolean = true) {\n    const res: MillerInput = [];\n    // Cache precomputed toAffine for all points\n    G1.ProjectivePoint.normalizeZ(pairs.map(({ g1 }) => g1));\n    G2.ProjectivePoint.normalizeZ(pairs.map(({ g2 }) => g2));\n    for (const { g1, g2 } of pairs) {\n      if (g1.equals(G1.ProjectivePoint.ZERO) || g2.equals(G2.ProjectivePoint.ZERO))\n        throw new Error('pairing is not available for ZERO point');\n      // This uses toAffine inside\n      g1.assertValidity();\n      g2.assertValidity();\n      const Qa = g1.toAffine();\n      res.push([calcPairingPrecomputes(g2), Qa.x, Qa.y]);\n    }\n    return millerLoopBatch(res, withFinalExponent);\n  }\n  // Calculates bilinear pairing\n  function pairing(Q: G1, P: G2, withFinalExponent: boolean = true): Fp12 {\n    return pairingBatch([{ g1: Q, g2: P }], withFinalExponent);\n  }\n\n  const utils = {\n    randomPrivateKey: (): Uint8Array => {\n      const length = getMinHashLength(Fr.ORDER);\n      return mapHashToField(CURVE.randomBytes(length), Fr.ORDER);\n    },\n    calcPairingPrecomputes,\n  };\n\n  const { ShortSignature } = CURVE.G1;\n  const { Signature } = CURVE.G2;\n\n  type G1Hex = Hex | G1;\n  type G2Hex = Hex | G2;\n  function normP1(point: G1Hex): G1 {\n    return point instanceof G1.ProjectivePoint ? (point as G1) : G1.ProjectivePoint.fromHex(point);\n  }\n  function normP1Hash(point: G1Hex, htfOpts?: htfBasicOpts): G1 {\n    return point instanceof G1.ProjectivePoint\n      ? point\n      : (G1.hashToCurve(ensureBytes('point', point), htfOpts) as G1);\n  }\n  function normP2(point: G2Hex): G2 {\n    return point instanceof G2.ProjectivePoint ? point : Signature.fromHex(point);\n  }\n  function normP2Hash(point: G2Hex, htfOpts?: htfBasicOpts): G2 {\n    return point instanceof G2.ProjectivePoint\n      ? point\n      : (G2.hashToCurve(ensureBytes('point', point), htfOpts) as G2);\n  }\n\n  // Multiplies generator (G1) by private key.\n  // P = pk x G\n  function getPublicKey(privateKey: PrivKey): Uint8Array {\n    return G1.ProjectivePoint.fromPrivateKey(privateKey).toRawBytes(true);\n  }\n\n  // Multiplies generator (G2) by private key.\n  // P = pk x G\n  function getPublicKeyForShortSignatures(privateKey: PrivKey): Uint8Array {\n    return G2.ProjectivePoint.fromPrivateKey(privateKey).toRawBytes(true);\n  }\n\n  // Executes `hashToCurve` on the message and then multiplies the result by private key.\n  // S = pk x H(m)\n  function sign(message: Hex, privateKey: PrivKey, htfOpts?: htfBasicOpts): Uint8Array;\n  function sign(message: G2, privateKey: PrivKey, htfOpts?: htfBasicOpts): G2;\n  function sign(message: G2Hex, privateKey: PrivKey, htfOpts?: htfBasicOpts): Uint8Array | G2 {\n    const msgPoint = normP2Hash(message, htfOpts);\n    msgPoint.assertValidity();\n    const sigPoint = msgPoint.multiply(G1.normPrivateKeyToScalar(privateKey));\n    if (message instanceof G2.ProjectivePoint) return sigPoint;\n    return Signature.toRawBytes(sigPoint);\n  }\n\n  function signShortSignature(\n    message: Hex,\n    privateKey: PrivKey,\n    htfOpts?: htfBasicOpts\n  ): Uint8Array;\n  function signShortSignature(message: G1, privateKey: PrivKey, htfOpts?: htfBasicOpts): G1;\n  function signShortSignature(\n    message: G1Hex,\n    privateKey: PrivKey,\n    htfOpts?: htfBasicOpts\n  ): Uint8Array | G1 {\n    const msgPoint = normP1Hash(message, htfOpts);\n    msgPoint.assertValidity();\n    const sigPoint = msgPoint.multiply(G1.normPrivateKeyToScalar(privateKey));\n    if (message instanceof G1.ProjectivePoint) return sigPoint;\n    return ShortSignature.toRawBytes(sigPoint);\n  }\n\n  // Checks if pairing of public key & hash is equal to pairing of generator & signature.\n  // e(P, H(m)) == e(G, S)\n  function verify(\n    signature: G2Hex,\n    message: G2Hex,\n    publicKey: G1Hex,\n    htfOpts?: htfBasicOpts\n  ): boolean {\n    const P = normP1(publicKey);\n    const Hm = normP2Hash(message, htfOpts);\n    const G = G1.ProjectivePoint.BASE;\n    const S = normP2(signature);\n    const exp = pairingBatch([\n      { g1: P.negate(), g2: Hm }, // ePHM = pairing(P.negate(), Hm, false);\n      { g1: G, g2: S }, // eGS = pairing(G, S, false);\n    ]);\n    return Fp12.eql(exp, Fp12.ONE);\n  }\n\n  // Checks if pairing of public key & hash is equal to pairing of generator & signature.\n  // e(S, G) == e(H(m), P)\n  function verifyShortSignature(\n    signature: G1Hex,\n    message: G1Hex,\n    publicKey: G2Hex,\n    htfOpts?: htfBasicOpts\n  ): boolean {\n    const P = normP2(publicKey);\n    const Hm = normP1Hash(message, htfOpts);\n    const G = G2.ProjectivePoint.BASE;\n    const S = normP1(signature);\n    const exp = pairingBatch([\n      { g1: Hm, g2: P }, // eHmP = pairing(Hm, P, false);\n      { g1: S, g2: G.negate() }, // eSG = pairing(S, G.negate(), false);\n    ]);\n    return Fp12.eql(exp, Fp12.ONE);\n  }\n\n  function aNonEmpty(arr: any[]) {\n    if (!Array.isArray(arr) || arr.length === 0) throw new Error('expected non-empty array');\n  }\n\n  // Adds a bunch of public key points together.\n  // pk1 + pk2 + pk3 = pkA\n  function aggregatePublicKeys(publicKeys: Hex[]): Uint8Array;\n  function aggregatePublicKeys(publicKeys: G1[]): G1;\n  function aggregatePublicKeys(publicKeys: G1Hex[]): Uint8Array | G1 {\n    aNonEmpty(publicKeys);\n    const agg = publicKeys.map(normP1).reduce((sum, p) => sum.add(p), G1.ProjectivePoint.ZERO);\n    const aggAffine = agg; //.toAffine();\n    if (publicKeys[0] instanceof G1.ProjectivePoint) {\n      aggAffine.assertValidity();\n      return aggAffine;\n    }\n    // toRawBytes ensures point validity\n    return aggAffine.toRawBytes(true);\n  }\n\n  // Adds a bunch of signature points together.\n  function aggregateSignatures(signatures: Hex[]): Uint8Array;\n  function aggregateSignatures(signatures: G2[]): G2;\n  function aggregateSignatures(signatures: G2Hex[]): Uint8Array | G2 {\n    aNonEmpty(signatures);\n    const agg = signatures.map(normP2).reduce((sum, s) => sum.add(s), G2.ProjectivePoint.ZERO);\n    const aggAffine = agg; //.toAffine();\n    if (signatures[0] instanceof G2.ProjectivePoint) {\n      aggAffine.assertValidity();\n      return aggAffine;\n    }\n    return Signature.toRawBytes(aggAffine);\n  }\n\n  // Adds a bunch of signature points together.\n  function aggregateShortSignatures(signatures: Hex[]): Uint8Array;\n  function aggregateShortSignatures(signatures: G1[]): G1;\n  function aggregateShortSignatures(signatures: G1Hex[]): Uint8Array | G1 {\n    aNonEmpty(signatures);\n    const agg = signatures.map(normP1).reduce((sum, s) => sum.add(s), G1.ProjectivePoint.ZERO);\n    const aggAffine = agg; //.toAffine();\n    if (signatures[0] instanceof G1.ProjectivePoint) {\n      aggAffine.assertValidity();\n      return aggAffine;\n    }\n    return ShortSignature.toRawBytes(aggAffine);\n  }\n\n  // https://ethresear.ch/t/fast-verification-of-multiple-bls-signatures/5407\n  // e(G, S) = e(G, SUM(n)(Si)) = MUL(n)(e(G, Si))\n  function verifyBatch(\n    signature: G2Hex,\n    // TODO: maybe `{message: G2Hex, publicKey: G1Hex}[]` instead?\n    messages: G2Hex[],\n    publicKeys: G1Hex[],\n    htfOpts?: htfBasicOpts\n  ): boolean {\n    aNonEmpty(messages);\n    if (publicKeys.length !== messages.length)\n      throw new Error('amount of public keys and messages should be equal');\n    const sig = normP2(signature);\n    const nMessages = messages.map((i) => normP2Hash(i, htfOpts));\n    const nPublicKeys = publicKeys.map(normP1);\n    // NOTE: this works only for exact same object\n    const messagePubKeyMap = new Map<G2, G1[]>();\n    for (let i = 0; i < nPublicKeys.length; i++) {\n      const pub = nPublicKeys[i];\n      const msg = nMessages[i];\n      let keys = messagePubKeyMap.get(msg);\n      if (keys === undefined) {\n        keys = [];\n        messagePubKeyMap.set(msg, keys);\n      }\n      keys.push(pub);\n    }\n    const paired = [];\n    try {\n      for (const [msg, keys] of messagePubKeyMap) {\n        const groupPublicKey = keys.reduce((acc, msg) => acc.add(msg));\n        paired.push({ g1: groupPublicKey, g2: msg });\n      }\n      paired.push({ g1: G1.ProjectivePoint.BASE.negate(), g2: sig });\n      return Fp12.eql(pairingBatch(paired), Fp12.ONE);\n    } catch {\n      return false;\n    }\n  }\n\n  G1.ProjectivePoint.BASE._setWindowSize(4);\n\n  return {\n    getPublicKey,\n    getPublicKeyForShortSignatures,\n    sign,\n    signShortSignature,\n    verify,\n    verifyBatch,\n    verifyShortSignature,\n    aggregatePublicKeys,\n    aggregateSignatures,\n    aggregateShortSignatures,\n    millerLoopBatch,\n    pairing,\n    pairingBatch,\n    G1,\n    G2,\n    Signature,\n    ShortSignature,\n    fields: {\n      Fr,\n      Fp,\n      Fp2,\n      Fp6,\n      Fp12,\n    },\n    params: {\n      ateLoopSize: CURVE.params.ateLoopSize,\n      r: CURVE.params.r,\n      G1b: CURVE.G1.b,\n      G2b: CURVE.G2.b,\n    },\n    utils,\n  };\n}\n","/**\n * Towered extension fields.\n * Rather than implementing a massive 12th-degree extension directly, it is more efficient\n * to build it up from smaller extensions: a tower of extensions.\n *\n * For BLS12-381, the Fp12 field is implemented as a quadratic (degree two) extension,\n * on top of a cubic (degree three) extension, on top of a quadratic extension of Fp.\n *\n * For more info: \"Pairings for beginners\" by Costello, section 7.3.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport * as mod from './modular.ts';\nimport { bitLen, bitMask, concatBytes, notImplemented } from './utils.ts';\nimport type { ProjConstructor, ProjPointType } from './weierstrass.ts';\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n\n// Fp₂ over complex plane\nexport type BigintTuple = [bigint, bigint];\nexport type Fp = bigint;\n// Finite extension field over irreducible polynominal.\n// Fp(u) / (u² - β) where β = -1\nexport type Fp2 = { c0: bigint; c1: bigint };\nexport type BigintSix = [bigint, bigint, bigint, bigint, bigint, bigint];\nexport type Fp6 = { c0: Fp2; c1: Fp2; c2: Fp2 };\nexport type Fp12 = { c0: Fp6; c1: Fp6 }; // Fp₁₂ = Fp₆² => Fp₂³, Fp₆(w) / (w² - γ) where γ = v\n// prettier-ignore\nexport type BigintTwelve = [\n  bigint, bigint, bigint, bigint, bigint, bigint,\n  bigint, bigint, bigint, bigint, bigint, bigint\n];\n\nexport type Fp2Bls = mod.IField<Fp2> & {\n  reim: (num: Fp2) => { re: Fp; im: Fp };\n  mulByB: (num: Fp2) => Fp2;\n  frobeniusMap(num: Fp2, power: number): Fp2;\n  fromBigTuple(num: [bigint, bigint]): Fp2;\n};\n\nexport type Fp12Bls = mod.IField<Fp12> & {\n  frobeniusMap(num: Fp12, power: number): Fp12;\n  mul014(num: Fp12, o0: Fp2, o1: Fp2, o4: Fp2): Fp12;\n  mul034(num: Fp12, o0: Fp2, o3: Fp2, o4: Fp2): Fp12;\n  conjugate(num: Fp12): Fp12;\n  finalExponentiate(num: Fp12): Fp12;\n  fromBigTwelve(num: BigintTwelve): Fp12;\n};\n\nfunction calcFrobeniusCoefficients<T>(\n  Fp: mod.IField<T>,\n  nonResidue: T,\n  modulus: bigint,\n  degree: number,\n  num: number = 1,\n  divisor?: number\n) {\n  const _divisor = BigInt(divisor === undefined ? degree : divisor);\n  const towerModulus: any = modulus ** BigInt(degree);\n  const res: T[][] = [];\n  for (let i = 0; i < num; i++) {\n    const a = BigInt(i + 1);\n    const powers: T[] = [];\n    for (let j = 0, qPower = _1n; j < degree; j++) {\n      const power = ((a * qPower - a) / _divisor) % towerModulus;\n      powers.push(Fp.pow(nonResidue, power));\n      qPower *= modulus;\n    }\n    res.push(powers);\n  }\n  return res;\n}\n\n// This works same at least for bls12-381, bn254 and bls12-377\nexport function psiFrobenius(\n  Fp: mod.IField<Fp>,\n  Fp2: Fp2Bls,\n  base: Fp2\n): {\n  psi: (x: Fp2, y: Fp2) => [Fp2, Fp2];\n  psi2: (x: Fp2, y: Fp2) => [Fp2, Fp2];\n  G2psi: (c: ProjConstructor<Fp2>, P: ProjPointType<Fp2>) => ProjPointType<Fp2>;\n  G2psi2: (c: ProjConstructor<Fp2>, P: ProjPointType<Fp2>) => ProjPointType<Fp2>;\n  PSI_X: Fp2;\n  PSI_Y: Fp2;\n  PSI2_X: Fp2;\n  PSI2_Y: Fp2;\n} {\n  // GLV endomorphism Ψ(P)\n  const PSI_X = Fp2.pow(base, (Fp.ORDER - _1n) / _3n); // u^((p-1)/3)\n  const PSI_Y = Fp2.pow(base, (Fp.ORDER - _1n) / _2n); // u^((p-1)/2)\n  function psi(x: Fp2, y: Fp2): [Fp2, Fp2] {\n    // This x10 faster than previous version in bls12-381\n    const x2 = Fp2.mul(Fp2.frobeniusMap(x, 1), PSI_X);\n    const y2 = Fp2.mul(Fp2.frobeniusMap(y, 1), PSI_Y);\n    return [x2, y2];\n  }\n  // Ψ²(P) endomorphism (psi2(x) = psi(psi(x)))\n  const PSI2_X = Fp2.pow(base, (Fp.ORDER ** _2n - _1n) / _3n); // u^((p^2 - 1)/3)\n  // This equals -1, which causes y to be Fp2.neg(y).\n  // But not sure if there are case when this is not true?\n  const PSI2_Y = Fp2.pow(base, (Fp.ORDER ** _2n - _1n) / _2n); // u^((p^2 - 1)/3)\n  if (!Fp2.eql(PSI2_Y, Fp2.neg(Fp2.ONE))) throw new Error('psiFrobenius: PSI2_Y!==-1');\n  function psi2(x: Fp2, y: Fp2): [Fp2, Fp2] {\n    return [Fp2.mul(x, PSI2_X), Fp2.neg(y)];\n  }\n  // Map points\n  const mapAffine =\n    <T>(fn: (x: T, y: T) => [T, T]) =>\n    (c: ProjConstructor<T>, P: ProjPointType<T>) => {\n      const affine = P.toAffine();\n      const p = fn(affine.x, affine.y);\n      return c.fromAffine({ x: p[0], y: p[1] });\n    };\n  const G2psi = mapAffine(psi);\n  const G2psi2 = mapAffine(psi2);\n  return { psi, psi2, G2psi, G2psi2, PSI_X, PSI_Y, PSI2_X, PSI2_Y };\n}\n\nexport type Tower12Opts = {\n  ORDER: bigint;\n  NONRESIDUE?: Fp;\n  // Fp2\n  FP2_NONRESIDUE: BigintTuple;\n  Fp2sqrt?: (num: Fp2) => Fp2;\n  Fp2mulByB: (num: Fp2) => Fp2;\n  // Fp12\n  Fp12cyclotomicSquare: (num: Fp12) => Fp12;\n  Fp12cyclotomicExp: (num: Fp12, n: bigint) => Fp12;\n  Fp12finalExponentiate: (num: Fp12) => Fp12;\n};\n\nexport function tower12(opts: Tower12Opts): {\n  Fp: Readonly<mod.IField<bigint> & Required<Pick<mod.IField<bigint>, 'isOdd'>>>;\n  Fp2: mod.IField<Fp2> & {\n    NONRESIDUE: Fp2;\n    fromBigTuple: (tuple: BigintTuple | bigint[]) => Fp2;\n    reim: (num: Fp2) => { re: bigint; im: bigint };\n    mulByNonresidue: (num: Fp2) => Fp2;\n    mulByB: (num: Fp2) => Fp2;\n    frobeniusMap(num: Fp2, power: number): Fp2;\n  };\n  Fp6: mod.IField<Fp6> & {\n    fromBigSix: (tuple: BigintSix) => Fp6;\n    mulByNonresidue: (num: Fp6) => Fp6;\n    frobeniusMap(num: Fp6, power: number): Fp6;\n    mul1(num: Fp6, b1: Fp2): Fp6;\n    mul01(num: Fp6, b0: Fp2, b1: Fp2): Fp6;\n    mulByFp2(lhs: Fp6, rhs: Fp2): Fp6;\n  };\n  Fp4Square: (a: Fp2, b: Fp2) => { first: Fp2; second: Fp2 };\n  Fp12: mod.IField<Fp12> & {\n    fromBigTwelve: (t: BigintTwelve) => Fp12;\n    frobeniusMap(num: Fp12, power: number): Fp12;\n    mul014(num: Fp12, o0: Fp2, o1: Fp2, o4: Fp2): Fp12;\n    mul034(num: Fp12, o0: Fp2, o3: Fp2, o4: Fp2): Fp12;\n    mulByFp2(lhs: Fp12, rhs: Fp2): Fp12;\n    conjugate(num: Fp12): Fp12;\n    finalExponentiate(num: Fp12): Fp12;\n    _cyclotomicSquare(num: Fp12): Fp12;\n    _cyclotomicExp(num: Fp12, n: bigint): Fp12;\n  };\n} {\n  const { ORDER } = opts;\n  // Fp\n  const Fp = mod.Field(ORDER);\n  const FpNONRESIDUE = Fp.create(opts.NONRESIDUE || BigInt(-1));\n  const Fpdiv2 = Fp.div(Fp.ONE, _2n); // 1/2\n\n  // Fp2\n  const FP2_FROBENIUS_COEFFICIENTS = calcFrobeniusCoefficients(Fp, FpNONRESIDUE, Fp.ORDER, 2)[0];\n  const Fp2Add = ({ c0, c1 }: Fp2, { c0: r0, c1: r1 }: Fp2) => ({\n    c0: Fp.add(c0, r0),\n    c1: Fp.add(c1, r1),\n  });\n  const Fp2Subtract = ({ c0, c1 }: Fp2, { c0: r0, c1: r1 }: Fp2) => ({\n    c0: Fp.sub(c0, r0),\n    c1: Fp.sub(c1, r1),\n  });\n  const Fp2Multiply = ({ c0, c1 }: Fp2, rhs: Fp2) => {\n    if (typeof rhs === 'bigint') return { c0: Fp.mul(c0, rhs), c1: Fp.mul(c1, rhs) };\n    // (a+bi)(c+di) = (ac−bd) + (ad+bc)i\n    const { c0: r0, c1: r1 } = rhs;\n    let t1 = Fp.mul(c0, r0); // c0 * o0\n    let t2 = Fp.mul(c1, r1); // c1 * o1\n    // (T1 - T2) + ((c0 + c1) * (r0 + r1) - (T1 + T2))*i\n    const o0 = Fp.sub(t1, t2);\n    const o1 = Fp.sub(Fp.mul(Fp.add(c0, c1), Fp.add(r0, r1)), Fp.add(t1, t2));\n    return { c0: o0, c1: o1 };\n  };\n  const Fp2Square = ({ c0, c1 }: Fp2) => {\n    const a = Fp.add(c0, c1);\n    const b = Fp.sub(c0, c1);\n    const c = Fp.add(c0, c0);\n    return { c0: Fp.mul(a, b), c1: Fp.mul(c, c1) };\n  };\n  type Fp2Utils = {\n    NONRESIDUE: Fp2;\n    fromBigTuple: (tuple: BigintTuple | bigint[]) => Fp2;\n    reim: (num: Fp2) => { re: bigint; im: bigint };\n    mulByNonresidue: (num: Fp2) => Fp2;\n    mulByB: (num: Fp2) => Fp2;\n    frobeniusMap(num: Fp2, power: number): Fp2;\n  };\n  const Fp2fromBigTuple = (tuple: BigintTuple | bigint[]) => {\n    if (tuple.length !== 2) throw new Error('invalid tuple');\n    const fps = tuple.map((n) => Fp.create(n)) as [Fp, Fp];\n    return { c0: fps[0], c1: fps[1] };\n  };\n\n  const FP2_ORDER = ORDER * ORDER;\n  const Fp2Nonresidue = Fp2fromBigTuple(opts.FP2_NONRESIDUE);\n  const Fp2: mod.IField<Fp2> & Fp2Utils = {\n    ORDER: FP2_ORDER,\n    isLE: Fp.isLE,\n    NONRESIDUE: Fp2Nonresidue,\n    BITS: bitLen(FP2_ORDER),\n    BYTES: Math.ceil(bitLen(FP2_ORDER) / 8),\n    MASK: bitMask(bitLen(FP2_ORDER)),\n    ZERO: { c0: Fp.ZERO, c1: Fp.ZERO },\n    ONE: { c0: Fp.ONE, c1: Fp.ZERO },\n    create: (num) => num,\n    isValid: ({ c0, c1 }) => typeof c0 === 'bigint' && typeof c1 === 'bigint',\n    is0: ({ c0, c1 }) => Fp.is0(c0) && Fp.is0(c1),\n    eql: ({ c0, c1 }: Fp2, { c0: r0, c1: r1 }: Fp2) => Fp.eql(c0, r0) && Fp.eql(c1, r1),\n    neg: ({ c0, c1 }) => ({ c0: Fp.neg(c0), c1: Fp.neg(c1) }),\n    pow: (num, power) => mod.FpPow(Fp2, num, power),\n    invertBatch: (nums) => mod.FpInvertBatch(Fp2, nums),\n    // Normalized\n    add: Fp2Add,\n    sub: Fp2Subtract,\n    mul: Fp2Multiply,\n    sqr: Fp2Square,\n    // NonNormalized stuff\n    addN: Fp2Add,\n    subN: Fp2Subtract,\n    mulN: Fp2Multiply,\n    sqrN: Fp2Square,\n    // Why inversion for bigint inside Fp instead of Fp2? it is even used in that context?\n    div: (lhs, rhs) =>\n      Fp2.mul(lhs, typeof rhs === 'bigint' ? Fp.inv(Fp.create(rhs)) : Fp2.inv(rhs)),\n    inv: ({ c0: a, c1: b }) => {\n      // We wish to find the multiplicative inverse of a nonzero\n      // element a + bu in Fp2. We leverage an identity\n      //\n      // (a + bu)(a - bu) = a² + b²\n      //\n      // which holds because u² = -1. This can be rewritten as\n      //\n      // (a + bu)(a - bu)/(a² + b²) = 1\n      //\n      // because a² + b² = 0 has no nonzero solutions for (a, b).\n      // This gives that (a - bu)/(a² + b²) is the inverse\n      // of (a + bu). Importantly, this can be computing using\n      // only a single inversion in Fp.\n      const factor = Fp.inv(Fp.create(a * a + b * b));\n      return { c0: Fp.mul(factor, Fp.create(a)), c1: Fp.mul(factor, Fp.create(-b)) };\n    },\n    sqrt: (num) => {\n      if (opts.Fp2sqrt) return opts.Fp2sqrt(num);\n      // This is generic for all quadratic extensions (Fp2)\n      const { c0, c1 } = num;\n      if (Fp.is0(c1)) {\n        // if c0 is quadratic residue\n        if (mod.FpLegendre(Fp, c0) === 1) return Fp2.create({ c0: Fp.sqrt(c0), c1: Fp.ZERO });\n        else return Fp2.create({ c0: Fp.ZERO, c1: Fp.sqrt(Fp.div(c0, FpNONRESIDUE)) });\n      }\n      const a = Fp.sqrt(Fp.sub(Fp.sqr(c0), Fp.mul(Fp.sqr(c1), FpNONRESIDUE)));\n      let d = Fp.mul(Fp.add(a, c0), Fpdiv2);\n      const legendre = mod.FpLegendre(Fp, d);\n      // -1, Quadratic non residue\n      if (legendre === -1) d = Fp.sub(d, a);\n      const a0 = Fp.sqrt(d);\n      const candidateSqrt = Fp2.create({ c0: a0, c1: Fp.div(Fp.mul(c1, Fpdiv2), a0) });\n      if (!Fp2.eql(Fp2.sqr(candidateSqrt), num)) throw new Error('Cannot find square root');\n      // Normalize root: at this point candidateSqrt ** 2 = num, but also -candidateSqrt ** 2 = num\n      const x1 = candidateSqrt;\n      const x2 = Fp2.neg(x1);\n      const { re: re1, im: im1 } = Fp2.reim(x1);\n      const { re: re2, im: im2 } = Fp2.reim(x2);\n      if (im1 > im2 || (im1 === im2 && re1 > re2)) return x1;\n      return x2;\n    },\n    // Same as sgn0_m_eq_2 in RFC 9380\n    isOdd: (x: Fp2) => {\n      const { re: x0, im: x1 } = Fp2.reim(x);\n      const sign_0 = x0 % _2n;\n      const zero_0 = x0 === _0n;\n      const sign_1 = x1 % _2n;\n      return BigInt(sign_0 || (zero_0 && sign_1)) == _1n;\n    },\n    // Bytes util\n    fromBytes(b: Uint8Array): Fp2 {\n      if (b.length !== Fp2.BYTES) throw new Error('fromBytes invalid length=' + b.length);\n      return { c0: Fp.fromBytes(b.subarray(0, Fp.BYTES)), c1: Fp.fromBytes(b.subarray(Fp.BYTES)) };\n    },\n    toBytes: ({ c0, c1 }) => concatBytes(Fp.toBytes(c0), Fp.toBytes(c1)),\n    cmov: ({ c0, c1 }, { c0: r0, c1: r1 }, c) => ({\n      c0: Fp.cmov(c0, r0, c),\n      c1: Fp.cmov(c1, r1, c),\n    }),\n    reim: ({ c0, c1 }) => ({ re: c0, im: c1 }),\n    // multiply by u + 1\n    mulByNonresidue: ({ c0, c1 }) => Fp2.mul({ c0, c1 }, Fp2Nonresidue),\n    mulByB: opts.Fp2mulByB,\n    fromBigTuple: Fp2fromBigTuple,\n    frobeniusMap: ({ c0, c1 }, power: number): Fp2 => ({\n      c0,\n      c1: Fp.mul(c1, FP2_FROBENIUS_COEFFICIENTS[power % 2]),\n    }),\n  };\n  // Fp6\n  const Fp6Add = ({ c0, c1, c2 }: Fp6, { c0: r0, c1: r1, c2: r2 }: Fp6) => ({\n    c0: Fp2.add(c0, r0),\n    c1: Fp2.add(c1, r1),\n    c2: Fp2.add(c2, r2),\n  });\n  const Fp6Subtract = ({ c0, c1, c2 }: Fp6, { c0: r0, c1: r1, c2: r2 }: Fp6) => ({\n    c0: Fp2.sub(c0, r0),\n    c1: Fp2.sub(c1, r1),\n    c2: Fp2.sub(c2, r2),\n  });\n  const Fp6Multiply = ({ c0, c1, c2 }: Fp6, rhs: Fp6 | bigint) => {\n    if (typeof rhs === 'bigint') {\n      return {\n        c0: Fp2.mul(c0, rhs),\n        c1: Fp2.mul(c1, rhs),\n        c2: Fp2.mul(c2, rhs),\n      };\n    }\n    const { c0: r0, c1: r1, c2: r2 } = rhs;\n    const t0 = Fp2.mul(c0, r0); // c0 * o0\n    const t1 = Fp2.mul(c1, r1); // c1 * o1\n    const t2 = Fp2.mul(c2, r2); // c2 * o2\n    return {\n      // t0 + (c1 + c2) * (r1 * r2) - (T1 + T2) * (u + 1)\n      c0: Fp2.add(\n        t0,\n        Fp2.mulByNonresidue(Fp2.sub(Fp2.mul(Fp2.add(c1, c2), Fp2.add(r1, r2)), Fp2.add(t1, t2)))\n      ),\n      // (c0 + c1) * (r0 + r1) - (T0 + T1) + T2 * (u + 1)\n      c1: Fp2.add(\n        Fp2.sub(Fp2.mul(Fp2.add(c0, c1), Fp2.add(r0, r1)), Fp2.add(t0, t1)),\n        Fp2.mulByNonresidue(t2)\n      ),\n      // T1 + (c0 + c2) * (r0 + r2) - T0 + T2\n      c2: Fp2.sub(Fp2.add(t1, Fp2.mul(Fp2.add(c0, c2), Fp2.add(r0, r2))), Fp2.add(t0, t2)),\n    };\n  };\n  const Fp6Square = ({ c0, c1, c2 }: Fp6) => {\n    let t0 = Fp2.sqr(c0); // c0²\n    let t1 = Fp2.mul(Fp2.mul(c0, c1), _2n); // 2 * c0 * c1\n    let t3 = Fp2.mul(Fp2.mul(c1, c2), _2n); // 2 * c1 * c2\n    let t4 = Fp2.sqr(c2); // c2²\n    return {\n      c0: Fp2.add(Fp2.mulByNonresidue(t3), t0), // T3 * (u + 1) + T0\n      c1: Fp2.add(Fp2.mulByNonresidue(t4), t1), // T4 * (u + 1) + T1\n      // T1 + (c0 - c1 + c2)² + T3 - T0 - T4\n      c2: Fp2.sub(Fp2.sub(Fp2.add(Fp2.add(t1, Fp2.sqr(Fp2.add(Fp2.sub(c0, c1), c2))), t3), t0), t4),\n    };\n  };\n  type Fp6Utils = {\n    fromBigSix: (tuple: BigintSix) => Fp6;\n    mulByNonresidue: (num: Fp6) => Fp6;\n    frobeniusMap(num: Fp6, power: number): Fp6;\n    mul1(num: Fp6, b1: Fp2): Fp6;\n    mul01(num: Fp6, b0: Fp2, b1: Fp2): Fp6;\n    mulByFp2(lhs: Fp6, rhs: Fp2): Fp6;\n  };\n\n  const [FP6_FROBENIUS_COEFFICIENTS_1, FP6_FROBENIUS_COEFFICIENTS_2] = calcFrobeniusCoefficients(\n    Fp2,\n    Fp2Nonresidue,\n    Fp.ORDER,\n    6,\n    2,\n    3\n  );\n\n  const Fp6: mod.IField<Fp6> & Fp6Utils = {\n    ORDER: Fp2.ORDER, // TODO: unused, but need to verify\n    isLE: Fp2.isLE,\n    BITS: 3 * Fp2.BITS,\n    BYTES: 3 * Fp2.BYTES,\n    MASK: bitMask(3 * Fp2.BITS),\n    ZERO: { c0: Fp2.ZERO, c1: Fp2.ZERO, c2: Fp2.ZERO },\n    ONE: { c0: Fp2.ONE, c1: Fp2.ZERO, c2: Fp2.ZERO },\n    create: (num) => num,\n    isValid: ({ c0, c1, c2 }) => Fp2.isValid(c0) && Fp2.isValid(c1) && Fp2.isValid(c2),\n    is0: ({ c0, c1, c2 }) => Fp2.is0(c0) && Fp2.is0(c1) && Fp2.is0(c2),\n    neg: ({ c0, c1, c2 }) => ({ c0: Fp2.neg(c0), c1: Fp2.neg(c1), c2: Fp2.neg(c2) }),\n    eql: ({ c0, c1, c2 }, { c0: r0, c1: r1, c2: r2 }) =>\n      Fp2.eql(c0, r0) && Fp2.eql(c1, r1) && Fp2.eql(c2, r2),\n    sqrt: notImplemented,\n    // Do we need division by bigint at all? Should be done via order:\n    div: (lhs, rhs) =>\n      Fp6.mul(lhs, typeof rhs === 'bigint' ? Fp.inv(Fp.create(rhs)) : Fp6.inv(rhs)),\n    pow: (num, power) => mod.FpPow(Fp6, num, power),\n    invertBatch: (nums) => mod.FpInvertBatch(Fp6, nums),\n    // Normalized\n    add: Fp6Add,\n    sub: Fp6Subtract,\n    mul: Fp6Multiply,\n    sqr: Fp6Square,\n    // NonNormalized stuff\n    addN: Fp6Add,\n    subN: Fp6Subtract,\n    mulN: Fp6Multiply,\n    sqrN: Fp6Square,\n\n    inv: ({ c0, c1, c2 }) => {\n      let t0 = Fp2.sub(Fp2.sqr(c0), Fp2.mulByNonresidue(Fp2.mul(c2, c1))); // c0² - c2 * c1 * (u + 1)\n      let t1 = Fp2.sub(Fp2.mulByNonresidue(Fp2.sqr(c2)), Fp2.mul(c0, c1)); // c2² * (u + 1) - c0 * c1\n      let t2 = Fp2.sub(Fp2.sqr(c1), Fp2.mul(c0, c2)); // c1² - c0 * c2\n      // 1/(((c2 * T1 + c1 * T2) * v) + c0 * T0)\n      let t4 = Fp2.inv(\n        Fp2.add(Fp2.mulByNonresidue(Fp2.add(Fp2.mul(c2, t1), Fp2.mul(c1, t2))), Fp2.mul(c0, t0))\n      );\n      return { c0: Fp2.mul(t4, t0), c1: Fp2.mul(t4, t1), c2: Fp2.mul(t4, t2) };\n    },\n    // Bytes utils\n    fromBytes: (b: Uint8Array): Fp6 => {\n      if (b.length !== Fp6.BYTES) throw new Error('fromBytes invalid length=' + b.length);\n      return {\n        c0: Fp2.fromBytes(b.subarray(0, Fp2.BYTES)),\n        c1: Fp2.fromBytes(b.subarray(Fp2.BYTES, 2 * Fp2.BYTES)),\n        c2: Fp2.fromBytes(b.subarray(2 * Fp2.BYTES)),\n      };\n    },\n    toBytes: ({ c0, c1, c2 }): Uint8Array =>\n      concatBytes(Fp2.toBytes(c0), Fp2.toBytes(c1), Fp2.toBytes(c2)),\n    cmov: ({ c0, c1, c2 }: Fp6, { c0: r0, c1: r1, c2: r2 }: Fp6, c) => ({\n      c0: Fp2.cmov(c0, r0, c),\n      c1: Fp2.cmov(c1, r1, c),\n      c2: Fp2.cmov(c2, r2, c),\n    }),\n    fromBigSix: (t: BigintSix): Fp6 => {\n      if (!Array.isArray(t) || t.length !== 6) throw new Error('invalid Fp6 usage');\n      return {\n        c0: Fp2.fromBigTuple(t.slice(0, 2)),\n        c1: Fp2.fromBigTuple(t.slice(2, 4)),\n        c2: Fp2.fromBigTuple(t.slice(4, 6)),\n      };\n    },\n    frobeniusMap: ({ c0, c1, c2 }, power: number) => ({\n      c0: Fp2.frobeniusMap(c0, power),\n      c1: Fp2.mul(Fp2.frobeniusMap(c1, power), FP6_FROBENIUS_COEFFICIENTS_1[power % 6]),\n      c2: Fp2.mul(Fp2.frobeniusMap(c2, power), FP6_FROBENIUS_COEFFICIENTS_2[power % 6]),\n    }),\n    mulByFp2: ({ c0, c1, c2 }, rhs: Fp2): Fp6 => ({\n      c0: Fp2.mul(c0, rhs),\n      c1: Fp2.mul(c1, rhs),\n      c2: Fp2.mul(c2, rhs),\n    }),\n    mulByNonresidue: ({ c0, c1, c2 }) => ({ c0: Fp2.mulByNonresidue(c2), c1: c0, c2: c1 }),\n    // Sparse multiplication\n    mul1: ({ c0, c1, c2 }, b1: Fp2): Fp6 => ({\n      c0: Fp2.mulByNonresidue(Fp2.mul(c2, b1)),\n      c1: Fp2.mul(c0, b1),\n      c2: Fp2.mul(c1, b1),\n    }),\n    // Sparse multiplication\n    mul01({ c0, c1, c2 }, b0: Fp2, b1: Fp2): Fp6 {\n      let t0 = Fp2.mul(c0, b0); // c0 * b0\n      let t1 = Fp2.mul(c1, b1); // c1 * b1\n      return {\n        // ((c1 + c2) * b1 - T1) * (u + 1) + T0\n        c0: Fp2.add(Fp2.mulByNonresidue(Fp2.sub(Fp2.mul(Fp2.add(c1, c2), b1), t1)), t0),\n        // (b0 + b1) * (c0 + c1) - T0 - T1\n        c1: Fp2.sub(Fp2.sub(Fp2.mul(Fp2.add(b0, b1), Fp2.add(c0, c1)), t0), t1),\n        // (c0 + c2) * b0 - T0 + T1\n        c2: Fp2.add(Fp2.sub(Fp2.mul(Fp2.add(c0, c2), b0), t0), t1),\n      };\n    },\n  };\n\n  // Fp12\n  const FP12_FROBENIUS_COEFFICIENTS = calcFrobeniusCoefficients(\n    Fp2,\n    Fp2Nonresidue,\n    Fp.ORDER,\n    12,\n    1,\n    6\n  )[0];\n\n  const Fp12Add = ({ c0, c1 }: Fp12, { c0: r0, c1: r1 }: Fp12) => ({\n    c0: Fp6.add(c0, r0),\n    c1: Fp6.add(c1, r1),\n  });\n  const Fp12Subtract = ({ c0, c1 }: Fp12, { c0: r0, c1: r1 }: Fp12) => ({\n    c0: Fp6.sub(c0, r0),\n    c1: Fp6.sub(c1, r1),\n  });\n  const Fp12Multiply = ({ c0, c1 }: Fp12, rhs: Fp12 | bigint) => {\n    if (typeof rhs === 'bigint') return { c0: Fp6.mul(c0, rhs), c1: Fp6.mul(c1, rhs) };\n    let { c0: r0, c1: r1 } = rhs;\n    let t1 = Fp6.mul(c0, r0); // c0 * r0\n    let t2 = Fp6.mul(c1, r1); // c1 * r1\n    return {\n      c0: Fp6.add(t1, Fp6.mulByNonresidue(t2)), // T1 + T2 * v\n      // (c0 + c1) * (r0 + r1) - (T1 + T2)\n      c1: Fp6.sub(Fp6.mul(Fp6.add(c0, c1), Fp6.add(r0, r1)), Fp6.add(t1, t2)),\n    };\n  };\n  const Fp12Square = ({ c0, c1 }: Fp12) => {\n    let ab = Fp6.mul(c0, c1); // c0 * c1\n    return {\n      // (c1 * v + c0) * (c0 + c1) - AB - AB * v\n      c0: Fp6.sub(\n        Fp6.sub(Fp6.mul(Fp6.add(Fp6.mulByNonresidue(c1), c0), Fp6.add(c0, c1)), ab),\n        Fp6.mulByNonresidue(ab)\n      ),\n      c1: Fp6.add(ab, ab),\n    }; // AB + AB\n  };\n  function Fp4Square(a: Fp2, b: Fp2): { first: Fp2; second: Fp2 } {\n    const a2 = Fp2.sqr(a);\n    const b2 = Fp2.sqr(b);\n    return {\n      first: Fp2.add(Fp2.mulByNonresidue(b2), a2), // b² * Nonresidue + a²\n      second: Fp2.sub(Fp2.sub(Fp2.sqr(Fp2.add(a, b)), a2), b2), // (a + b)² - a² - b²\n    };\n  }\n  type Fp12Utils = {\n    fromBigTwelve: (t: BigintTwelve) => Fp12;\n    frobeniusMap(num: Fp12, power: number): Fp12;\n    mul014(num: Fp12, o0: Fp2, o1: Fp2, o4: Fp2): Fp12;\n    mul034(num: Fp12, o0: Fp2, o3: Fp2, o4: Fp2): Fp12;\n    mulByFp2(lhs: Fp12, rhs: Fp2): Fp12;\n    conjugate(num: Fp12): Fp12;\n    finalExponentiate(num: Fp12): Fp12;\n    _cyclotomicSquare(num: Fp12): Fp12;\n    _cyclotomicExp(num: Fp12, n: bigint): Fp12;\n  };\n\n  const Fp12: mod.IField<Fp12> & Fp12Utils = {\n    ORDER: Fp2.ORDER, // TODO: unused, but need to verify\n    isLE: Fp6.isLE,\n    BITS: 2 * Fp6.BITS,\n    BYTES: 2 * Fp6.BYTES,\n    MASK: bitMask(2 * Fp6.BITS),\n    ZERO: { c0: Fp6.ZERO, c1: Fp6.ZERO },\n    ONE: { c0: Fp6.ONE, c1: Fp6.ZERO },\n    create: (num) => num,\n    isValid: ({ c0, c1 }) => Fp6.isValid(c0) && Fp6.isValid(c1),\n    is0: ({ c0, c1 }) => Fp6.is0(c0) && Fp6.is0(c1),\n    neg: ({ c0, c1 }) => ({ c0: Fp6.neg(c0), c1: Fp6.neg(c1) }),\n    eql: ({ c0, c1 }, { c0: r0, c1: r1 }) => Fp6.eql(c0, r0) && Fp6.eql(c1, r1),\n    sqrt: notImplemented,\n    inv: ({ c0, c1 }) => {\n      let t = Fp6.inv(Fp6.sub(Fp6.sqr(c0), Fp6.mulByNonresidue(Fp6.sqr(c1)))); // 1 / (c0² - c1² * v)\n      return { c0: Fp6.mul(c0, t), c1: Fp6.neg(Fp6.mul(c1, t)) }; // ((C0 * T) * T) + (-C1 * T) * w\n    },\n    div: (lhs, rhs) =>\n      Fp12.mul(lhs, typeof rhs === 'bigint' ? Fp.inv(Fp.create(rhs)) : Fp12.inv(rhs)),\n    pow: (num, power) => mod.FpPow(Fp12, num, power),\n    invertBatch: (nums) => mod.FpInvertBatch(Fp12, nums),\n    // Normalized\n    add: Fp12Add,\n    sub: Fp12Subtract,\n    mul: Fp12Multiply,\n    sqr: Fp12Square,\n    // NonNormalized stuff\n    addN: Fp12Add,\n    subN: Fp12Subtract,\n    mulN: Fp12Multiply,\n    sqrN: Fp12Square,\n\n    // Bytes utils\n    fromBytes: (b: Uint8Array): Fp12 => {\n      if (b.length !== Fp12.BYTES) throw new Error('fromBytes invalid length=' + b.length);\n      return {\n        c0: Fp6.fromBytes(b.subarray(0, Fp6.BYTES)),\n        c1: Fp6.fromBytes(b.subarray(Fp6.BYTES)),\n      };\n    },\n    toBytes: ({ c0, c1 }): Uint8Array => concatBytes(Fp6.toBytes(c0), Fp6.toBytes(c1)),\n    cmov: ({ c0, c1 }, { c0: r0, c1: r1 }, c) => ({\n      c0: Fp6.cmov(c0, r0, c),\n      c1: Fp6.cmov(c1, r1, c),\n    }),\n    // Utils\n    // toString() {\n    //   return '' + 'Fp12(' + this.c0 + this.c1 + '* w');\n    // },\n    // fromTuple(c: [Fp6, Fp6]) {\n    //   return new Fp12(...c);\n    // }\n    fromBigTwelve: (t: BigintTwelve): Fp12 => ({\n      c0: Fp6.fromBigSix(t.slice(0, 6) as BigintSix),\n      c1: Fp6.fromBigSix(t.slice(6, 12) as BigintSix),\n    }),\n    // Raises to q**i -th power\n    frobeniusMap(lhs, power: number) {\n      const { c0, c1, c2 } = Fp6.frobeniusMap(lhs.c1, power);\n      const coeff = FP12_FROBENIUS_COEFFICIENTS[power % 12];\n      return {\n        c0: Fp6.frobeniusMap(lhs.c0, power),\n        c1: Fp6.create({\n          c0: Fp2.mul(c0, coeff),\n          c1: Fp2.mul(c1, coeff),\n          c2: Fp2.mul(c2, coeff),\n        }),\n      };\n    },\n    mulByFp2: ({ c0, c1 }, rhs: Fp2): Fp12 => ({\n      c0: Fp6.mulByFp2(c0, rhs),\n      c1: Fp6.mulByFp2(c1, rhs),\n    }),\n    conjugate: ({ c0, c1 }): Fp12 => ({ c0, c1: Fp6.neg(c1) }),\n    // Sparse multiplication\n    mul014: ({ c0, c1 }, o0: Fp2, o1: Fp2, o4: Fp2) => {\n      let t0 = Fp6.mul01(c0, o0, o1);\n      let t1 = Fp6.mul1(c1, o4);\n      return {\n        c0: Fp6.add(Fp6.mulByNonresidue(t1), t0), // T1 * v + T0\n        // (c1 + c0) * [o0, o1+o4] - T0 - T1\n        c1: Fp6.sub(Fp6.sub(Fp6.mul01(Fp6.add(c1, c0), o0, Fp2.add(o1, o4)), t0), t1),\n      };\n    },\n    mul034: ({ c0, c1 }, o0: Fp2, o3: Fp2, o4: Fp2) => {\n      const a = Fp6.create({\n        c0: Fp2.mul(c0.c0, o0),\n        c1: Fp2.mul(c0.c1, o0),\n        c2: Fp2.mul(c0.c2, o0),\n      });\n      const b = Fp6.mul01(c1, o3, o4);\n      const e = Fp6.mul01(Fp6.add(c0, c1), Fp2.add(o0, o3), o4);\n      return {\n        c0: Fp6.add(Fp6.mulByNonresidue(b), a),\n        c1: Fp6.sub(e, Fp6.add(a, b)),\n      };\n    },\n\n    // A cyclotomic group is a subgroup of Fp^n defined by\n    //   GΦₙ(p) = {α ∈ Fpⁿ : α^Φₙ(p) = 1}\n    // The result of any pairing is in a cyclotomic subgroup\n    // https://eprint.iacr.org/2009/565.pdf\n    _cyclotomicSquare: opts.Fp12cyclotomicSquare,\n    _cyclotomicExp: opts.Fp12cyclotomicExp,\n    // https://eprint.iacr.org/2010/354.pdf\n    // https://eprint.iacr.org/2009/565.pdf\n    finalExponentiate: opts.Fp12finalExponentiate,\n  };\n\n  return { Fp, Fp2, Fp6, Fp4Square, Fp12 };\n}\n","/**\n * bls12-381 is pairing-friendly Barreto-Lynn-Scott elliptic curve construction allowing to:\n * * Construct zk-SNARKs at the ~120-bit security\n * * Efficiently verify N aggregate signatures with 1 pairing and N ec additions:\n *   the Boneh-Lynn-Shacham signature scheme is orders of magnitude more efficient than Schnorr\n *\n * ### Summary\n * 1. BLS Relies on Bilinear Pairing (expensive)\n * 2. Private Keys: 32 bytes\n * 3. Public Keys: 48 bytes: 381 bit affine x coordinate, encoded into 48 big-endian bytes.\n * 4. Signatures: 96 bytes: two 381 bit integers (affine x coordinate), encoded into two 48 big-endian byte arrays.\n *     - The signature is a point on the G2 subgroup, which is defined over a finite field\n *       with elements twice as big as the G1 curve (G2 is over Fp2 rather than Fp. Fp2 is analogous to the\n *       complex numbers).\n *     - We also support reversed 96-byte pubkeys & 48-byte short signatures.\n * 5. The 12 stands for the Embedding degree.\n *\n * ### Formulas\n * - `P = pk x G` - public keys\n * - `S = pk x H(m)` - signing\n * - `e(P, H(m)) == e(G, S)` - verification using pairings\n * - `e(G, S) = e(G, SUM(n)(Si)) = MUL(n)(e(G, Si))` - signature aggregation\n *\n * ### Compatibility and notes\n * 1. It is compatible with Algorand, Chia, Dfinity, Ethereum, Filecoin, ZEC.\n * Filecoin uses little endian byte arrays for private keys - make sure to reverse byte order.\n * 2. Some projects use G2 for public keys and G1 for signatures. It's called \"short signature\".\n * 3. Curve security level is about 120 bits as per [Barbulescu-Duquesne 2017](https://hal.science/hal-01534101/file/main.pdf)\n * 4. Compatible with specs:\n *    [cfrg-pairing-friendly-curves-11](https://tools.ietf.org/html/draft-irtf-cfrg-pairing-friendly-curves-11),\n *    [cfrg-bls-signature-05](https://www.rfc-editor.org/rfc/draft-irtf-cfrg-bls-signature-05),\n *    RFC 9380.\n *\n * ### Params\n * To verify curve parameters, see\n * [pairing-friendly-curves spec](https://www.rfc-editor.org/rfc/draft-irtf-cfrg-pairing-friendly-curves-11).\n * Basic math is done over finite fields over p.\n * More complicated math is done over polynominal extension fields.\n * To simplify calculations in Fp12, we construct extension tower:\n *\n * Embedding degree (k): 12\n * Seed (X): -15132376222941642752\n * Fr:  (x⁴-x²+1)\n * Fp: ((x-1)² ⋅ r(x)/3+x)\n * (E/Fp): Y²=X³+4\n * (Eₜ/Fp²): Y² = X³+4(u+1) (M-type twist)\n * Ate loop size: X\n *\n * ### Towers\n * - Fp₁₂ = Fp₆² => Fp₂³\n * - Fp(u) / (u² - β) where β = -1\n * - Fp₂(v) / (v³ - ξ) where ξ = u + 1\n * - Fp₆(w) / (w² - γ) where γ = v\n * - Fp²[u] = Fp/u²+1\n * - Fp⁶[v] = Fp²/v³-1-u\n * - Fp¹²[w] = Fp⁶/w²-v\n *\n * @todo construct bls & bn fp/fr from seed.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { bls, type CurveFn } from './abstract/bls.ts';\nimport { Field } from './abstract/modular.ts';\nimport {\n  bitGet,\n  bitLen,\n  bytesToHex,\n  bytesToNumberBE,\n  concatBytes as concatB,\n  ensureBytes,\n  numberToBytesBE,\n  type Hex,\n} from './abstract/utils.ts';\n// Types\nimport { isogenyMap } from './abstract/hash-to-curve.ts';\nimport type { Fp, Fp12, Fp2, Fp6 } from './abstract/tower.ts';\nimport { psiFrobenius, tower12 } from './abstract/tower.ts';\nimport {\n  mapToCurveSimpleSWU,\n  type AffinePoint,\n  type ProjPointType,\n} from './abstract/weierstrass.ts';\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\n// The BLS parameter x (seed) for BLS12-381. NOTE: it is negative!\nconst BLS_X = BigInt('0xd201000000010000');\nconst BLS_X_LEN = bitLen(BLS_X);\n\n// CURVE FIELDS\nconst { Fp, Fp2, Fp6, Fp4Square, Fp12 } = tower12({\n  // Order of Fp\n  ORDER: BigInt(\n    '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'\n  ),\n  // Finite extension field over irreducible polynominal.\n  // Fp(u) / (u² - β) where β = -1\n  FP2_NONRESIDUE: [_1n, _1n],\n  Fp2mulByB: ({ c0, c1 }) => {\n    const t0 = Fp.mul(c0, _4n); // 4 * c0\n    const t1 = Fp.mul(c1, _4n); // 4 * c1\n    // (T0-T1) + (T0+T1)*i\n    return { c0: Fp.sub(t0, t1), c1: Fp.add(t0, t1) };\n  },\n  // Fp12\n  // A cyclotomic group is a subgroup of Fp^n defined by\n  //   GΦₙ(p) = {α ∈ Fpⁿ : α^Φₙ(p) = 1}\n  // The result of any pairing is in a cyclotomic subgroup\n  // https://eprint.iacr.org/2009/565.pdf\n  Fp12cyclotomicSquare: ({ c0, c1 }): Fp12 => {\n    const { c0: c0c0, c1: c0c1, c2: c0c2 } = c0;\n    const { c0: c1c0, c1: c1c1, c2: c1c2 } = c1;\n    const { first: t3, second: t4 } = Fp4Square(c0c0, c1c1);\n    const { first: t5, second: t6 } = Fp4Square(c1c0, c0c2);\n    const { first: t7, second: t8 } = Fp4Square(c0c1, c1c2);\n    const t9 = Fp2.mulByNonresidue(t8); // T8 * (u + 1)\n    return {\n      c0: Fp6.create({\n        c0: Fp2.add(Fp2.mul(Fp2.sub(t3, c0c0), _2n), t3), // 2 * (T3 - c0c0)  + T3\n        c1: Fp2.add(Fp2.mul(Fp2.sub(t5, c0c1), _2n), t5), // 2 * (T5 - c0c1)  + T5\n        c2: Fp2.add(Fp2.mul(Fp2.sub(t7, c0c2), _2n), t7),\n      }), // 2 * (T7 - c0c2)  + T7\n      c1: Fp6.create({\n        c0: Fp2.add(Fp2.mul(Fp2.add(t9, c1c0), _2n), t9), // 2 * (T9 + c1c0) + T9\n        c1: Fp2.add(Fp2.mul(Fp2.add(t4, c1c1), _2n), t4), // 2 * (T4 + c1c1) + T4\n        c2: Fp2.add(Fp2.mul(Fp2.add(t6, c1c2), _2n), t6),\n      }),\n    }; // 2 * (T6 + c1c2) + T6\n  },\n  Fp12cyclotomicExp(num, n) {\n    let z = Fp12.ONE;\n    for (let i = BLS_X_LEN - 1; i >= 0; i--) {\n      z = Fp12._cyclotomicSquare(z);\n      if (bitGet(n, i)) z = Fp12.mul(z, num);\n    }\n    return z;\n  },\n  // https://eprint.iacr.org/2010/354.pdf\n  // https://eprint.iacr.org/2009/565.pdf\n  Fp12finalExponentiate: (num) => {\n    const x = BLS_X;\n    // this^(q⁶) / this\n    const t0 = Fp12.div(Fp12.frobeniusMap(num, 6), num);\n    // t0^(q²) * t0\n    const t1 = Fp12.mul(Fp12.frobeniusMap(t0, 2), t0);\n    const t2 = Fp12.conjugate(Fp12._cyclotomicExp(t1, x));\n    const t3 = Fp12.mul(Fp12.conjugate(Fp12._cyclotomicSquare(t1)), t2);\n    const t4 = Fp12.conjugate(Fp12._cyclotomicExp(t3, x));\n    const t5 = Fp12.conjugate(Fp12._cyclotomicExp(t4, x));\n    const t6 = Fp12.mul(Fp12.conjugate(Fp12._cyclotomicExp(t5, x)), Fp12._cyclotomicSquare(t2));\n    const t7 = Fp12.conjugate(Fp12._cyclotomicExp(t6, x));\n    const t2_t5_pow_q2 = Fp12.frobeniusMap(Fp12.mul(t2, t5), 2);\n    const t4_t1_pow_q3 = Fp12.frobeniusMap(Fp12.mul(t4, t1), 3);\n    const t6_t1c_pow_q1 = Fp12.frobeniusMap(Fp12.mul(t6, Fp12.conjugate(t1)), 1);\n    const t7_t3c_t1 = Fp12.mul(Fp12.mul(t7, Fp12.conjugate(t3)), t1);\n    // (t2 * t5)^(q²) * (t4 * t1)^(q³) * (t6 * t1.conj)^(q^1) * t7 * t3.conj * t1\n    return Fp12.mul(Fp12.mul(Fp12.mul(t2_t5_pow_q2, t4_t1_pow_q3), t6_t1c_pow_q1), t7_t3c_t1);\n  },\n});\n\n// Finite field over r.\n// This particular field is not used anywhere in bls12-381, but it is still useful.\nconst Fr = Field(BigInt('0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001'));\n\n// END OF CURVE FIELDS\n\n// HashToCurve\n\n// 3-isogeny map from E' to E https://www.rfc-editor.org/rfc/rfc9380#appendix-E.3\nconst isogenyMapG2 = isogenyMap(\n  Fp2,\n  [\n    // xNum\n    [\n      [\n        '0x5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6',\n        '0x5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6',\n      ],\n      [\n        '0x0',\n        '0x11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71a',\n      ],\n      [\n        '0x11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71e',\n        '0x8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38d',\n      ],\n      [\n        '0x171d6541fa38ccfaed6dea691f5fb614cb14b4e7f4e810aa22d6108f142b85757098e38d0f671c7188e2aaaaaaaa5ed1',\n        '0x0',\n      ],\n    ],\n    // xDen\n    [\n      [\n        '0x0',\n        '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa63',\n      ],\n      [\n        '0xc',\n        '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa9f',\n      ],\n      ['0x1', '0x0'], // LAST 1\n    ],\n    // yNum\n    [\n      [\n        '0x1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706',\n        '0x1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706',\n      ],\n      [\n        '0x0',\n        '0x5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97be',\n      ],\n      [\n        '0x11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71c',\n        '0x8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38f',\n      ],\n      [\n        '0x124c9ad43b6cf79bfbf7043de3811ad0761b0f37a1e26286b0e977c69aa274524e79097a56dc4bd9e1b371c71c718b10',\n        '0x0',\n      ],\n    ],\n    // yDen\n    [\n      [\n        '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb',\n        '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb',\n      ],\n      [\n        '0x0',\n        '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa9d3',\n      ],\n      [\n        '0x12',\n        '0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa99',\n      ],\n      ['0x1', '0x0'], // LAST 1\n    ],\n  ].map((i) => i.map((pair) => Fp2.fromBigTuple(pair.map(BigInt)))) as [Fp2[], Fp2[], Fp2[], Fp2[]]\n);\n// 11-isogeny map from E' to E\nconst isogenyMapG1 = isogenyMap(\n  Fp,\n  [\n    // xNum\n    [\n      '0x11a05f2b1e833340b809101dd99815856b303e88a2d7005ff2627b56cdb4e2c85610c2d5f2e62d6eaeac1662734649b7',\n      '0x17294ed3e943ab2f0588bab22147a81c7c17e75b2f6a8417f565e33c70d1e86b4838f2a6f318c356e834eef1b3cb83bb',\n      '0xd54005db97678ec1d1048c5d10a9a1bce032473295983e56878e501ec68e25c958c3e3d2a09729fe0179f9dac9edcb0',\n      '0x1778e7166fcc6db74e0609d307e55412d7f5e4656a8dbf25f1b33289f1b330835336e25ce3107193c5b388641d9b6861',\n      '0xe99726a3199f4436642b4b3e4118e5499db995a1257fb3f086eeb65982fac18985a286f301e77c451154ce9ac8895d9',\n      '0x1630c3250d7313ff01d1201bf7a74ab5db3cb17dd952799b9ed3ab9097e68f90a0870d2dcae73d19cd13c1c66f652983',\n      '0xd6ed6553fe44d296a3726c38ae652bfb11586264f0f8ce19008e218f9c86b2a8da25128c1052ecaddd7f225a139ed84',\n      '0x17b81e7701abdbe2e8743884d1117e53356de5ab275b4db1a682c62ef0f2753339b7c8f8c8f475af9ccb5618e3f0c88e',\n      '0x80d3cf1f9a78fc47b90b33563be990dc43b756ce79f5574a2c596c928c5d1de4fa295f296b74e956d71986a8497e317',\n      '0x169b1f8e1bcfa7c42e0c37515d138f22dd2ecb803a0c5c99676314baf4bb1b7fa3190b2edc0327797f241067be390c9e',\n      '0x10321da079ce07e272d8ec09d2565b0dfa7dccdde6787f96d50af36003b14866f69b771f8c285decca67df3f1605fb7b',\n      '0x6e08c248e260e70bd1e962381edee3d31d79d7e22c837bc23c0bf1bc24c6b68c24b1b80b64d391fa9c8ba2e8ba2d229',\n    ],\n    // xDen\n    [\n      '0x8ca8d548cff19ae18b2e62f4bd3fa6f01d5ef4ba35b48ba9c9588617fc8ac62b558d681be343df8993cf9fa40d21b1c',\n      '0x12561a5deb559c4348b4711298e536367041e8ca0cf0800c0126c2588c48bf5713daa8846cb026e9e5c8276ec82b3bff',\n      '0xb2962fe57a3225e8137e629bff2991f6f89416f5a718cd1fca64e00b11aceacd6a3d0967c94fedcfcc239ba5cb83e19',\n      '0x3425581a58ae2fec83aafef7c40eb545b08243f16b1655154cca8abc28d6fd04976d5243eecf5c4130de8938dc62cd8',\n      '0x13a8e162022914a80a6f1d5f43e7a07dffdfc759a12062bb8d6b44e833b306da9bd29ba81f35781d539d395b3532a21e',\n      '0xe7355f8e4e667b955390f7f0506c6e9395735e9ce9cad4d0a43bcef24b8982f7400d24bc4228f11c02df9a29f6304a5',\n      '0x772caacf16936190f3e0c63e0596721570f5799af53a1894e2e073062aede9cea73b3538f0de06cec2574496ee84a3a',\n      '0x14a7ac2a9d64a8b230b3f5b074cf01996e7f63c21bca68a81996e1cdf9822c580fa5b9489d11e2d311f7d99bbdcc5a5e',\n      '0xa10ecf6ada54f825e920b3dafc7a3cce07f8d1d7161366b74100da67f39883503826692abba43704776ec3a79a1d641',\n      '0x95fc13ab9e92ad4476d6e3eb3a56680f682b4ee96f7d03776df533978f31c1593174e4b4b7865002d6384d168ecdd0a',\n      '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n    ],\n    // yNum\n    [\n      '0x90d97c81ba24ee0259d1f094980dcfa11ad138e48a869522b52af6c956543d3cd0c7aee9b3ba3c2be9845719707bb33',\n      '0x134996a104ee5811d51036d776fb46831223e96c254f383d0f906343eb67ad34d6c56711962fa8bfe097e75a2e41c696',\n      '0xcc786baa966e66f4a384c86a3b49942552e2d658a31ce2c344be4b91400da7d26d521628b00523b8dfe240c72de1f6',\n      '0x1f86376e8981c217898751ad8746757d42aa7b90eeb791c09e4a3ec03251cf9de405aba9ec61deca6355c77b0e5f4cb',\n      '0x8cc03fdefe0ff135caf4fe2a21529c4195536fbe3ce50b879833fd221351adc2ee7f8dc099040a841b6daecf2e8fedb',\n      '0x16603fca40634b6a2211e11db8f0a6a074a7d0d4afadb7bd76505c3d3ad5544e203f6326c95a807299b23ab13633a5f0',\n      '0x4ab0b9bcfac1bbcb2c977d027796b3ce75bb8ca2be184cb5231413c4d634f3747a87ac2460f415ec961f8855fe9d6f2',\n      '0x987c8d5333ab86fde9926bd2ca6c674170a05bfe3bdd81ffd038da6c26c842642f64550fedfe935a15e4ca31870fb29',\n      '0x9fc4018bd96684be88c9e221e4da1bb8f3abd16679dc26c1e8b6e6a1f20cabe69d65201c78607a360370e577bdba587',\n      '0xe1bba7a1186bdb5223abde7ada14a23c42a0ca7915af6fe06985e7ed1e4d43b9b3f7055dd4eba6f2bafaaebca731c30',\n      '0x19713e47937cd1be0dfd0b8f1d43fb93cd2fcbcb6caf493fd1183e416389e61031bf3a5cce3fbafce813711ad011c132',\n      '0x18b46a908f36f6deb918c143fed2edcc523559b8aaf0c2462e6bfe7f911f643249d9cdf41b44d606ce07c8a4d0074d8e',\n      '0xb182cac101b9399d155096004f53f447aa7b12a3426b08ec02710e807b4633f06c851c1919211f20d4c04f00b971ef8',\n      '0x245a394ad1eca9b72fc00ae7be315dc757b3b080d4c158013e6632d3c40659cc6cf90ad1c232a6442d9d3f5db980133',\n      '0x5c129645e44cf1102a159f748c4a3fc5e673d81d7e86568d9ab0f5d396a7ce46ba1049b6579afb7866b1e715475224b',\n      '0x15e6be4e990f03ce4ea50b3b42df2eb5cb181d8f84965a3957add4fa95af01b2b665027efec01c7704b456be69c8b604',\n    ],\n    // yDen\n    [\n      '0x16112c4c3a9c98b252181140fad0eae9601a6de578980be6eec3232b5be72e7a07f3688ef60c206d01479253b03663c1',\n      '0x1962d75c2381201e1a0cbd6c43c348b885c84ff731c4d59ca4a10356f453e01f78a4260763529e3532f6102c2e49a03d',\n      '0x58df3306640da276faaae7d6e8eb15778c4855551ae7f310c35a5dd279cd2eca6757cd636f96f891e2538b53dbf67f2',\n      '0x16b7d288798e5395f20d23bf89edb4d1d115c5dbddbcd30e123da489e726af41727364f2c28297ada8d26d98445f5416',\n      '0xbe0e079545f43e4b00cc912f8228ddcc6d19c9f0f69bbb0542eda0fc9dec916a20b15dc0fd2ededda39142311a5001d',\n      '0x8d9e5297186db2d9fb266eaac783182b70152c65550d881c5ecd87b6f0f5a6449f38db9dfa9cce202c6477faaf9b7ac',\n      '0x166007c08a99db2fc3ba8734ace9824b5eecfdfa8d0cf8ef5dd365bc400a0051d5fa9c01a58b1fb93d1a1399126a775c',\n      '0x16a3ef08be3ea7ea03bcddfabba6ff6ee5a4375efa1f4fd7feb34fd206357132b920f5b00801dee460ee415a15812ed9',\n      '0x1866c8ed336c61231a1be54fd1d74cc4f9fb0ce4c6af5920abc5750c4bf39b4852cfe2f7bb9248836b233d9d55535d4a',\n      '0x167a55cda70a6e1cea820597d94a84903216f763e13d87bb5308592e7ea7d4fbc7385ea3d529b35e346ef48bb8913f55',\n      '0x4d2f259eea405bd48f010a01ad2911d9c6dd039bb61a6290e591b36e636a5c871a5c29f4f83060400f8b49cba8f6aa8',\n      '0xaccbb67481d033ff5852c1e48c50c477f94ff8aefce42d28c0f9a88cea7913516f968986f7ebbea9684b529e2561092',\n      '0xad6b9514c767fe3c3613144b45f1496543346d98adf02267d5ceef9a00d9b8693000763e3b90ac11e99b138573345cc',\n      '0x2660400eb2e4f3b628bdd0d53cd76f2bf565b94e72927c1cb748df27942480e420517bd8714cc80d1fadc1326ed06f7',\n      '0xe0fa1d816ddc03e6b24255e0d7819c171c40f65e273b853324efcd6356caa205ca2f570f13497804415473a1d634b8f',\n      '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n    ],\n  ].map((i) => i.map((j) => BigInt(j))) as [Fp[], Fp[], Fp[], Fp[]]\n);\n\n// SWU Map - Fp2 to G2': y² = x³ + 240i * x + 1012 + 1012i\nconst G2_SWU = mapToCurveSimpleSWU(Fp2, {\n  A: Fp2.create({ c0: Fp.create(_0n), c1: Fp.create(BigInt(240)) }), // A' = 240 * I\n  B: Fp2.create({ c0: Fp.create(BigInt(1012)), c1: Fp.create(BigInt(1012)) }), // B' = 1012 * (1 + I)\n  Z: Fp2.create({ c0: Fp.create(BigInt(-2)), c1: Fp.create(BigInt(-1)) }), // Z: -(2 + I)\n});\n// Optimized SWU Map - Fp to G1\nconst G1_SWU = mapToCurveSimpleSWU(Fp, {\n  A: Fp.create(\n    BigInt(\n      '0x144698a3b8e9433d693a02c96d4982b0ea985383ee66a8d8e8981aefd881ac98936f8da0e0f97f5cf428082d584c1d'\n    )\n  ),\n  B: Fp.create(\n    BigInt(\n      '0x12e2908d11688030018b12e8753eee3b2016c1f0f24f4070a0b9c14fcef35ef55a23215a316ceaa5d1cc48e98e172be0'\n    )\n  ),\n  Z: Fp.create(BigInt(11)),\n});\n\n// GLV endomorphism Ψ(P), for fast cofactor clearing\nconst { G2psi, G2psi2 } = psiFrobenius(Fp, Fp2, Fp2.div(Fp2.ONE, Fp2.NONRESIDUE)); // 1/(u+1)\n\n// Default hash_to_field options are for hash to G2.\n//\n// Parameter definitions are in section 5.3 of the spec unless otherwise noted.\n// Parameter values come from section 8.8.2 of the spec.\n// https://www.rfc-editor.org/rfc/rfc9380#section-8.8.2\n//\n// Base field F is GF(p^m)\n// p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab\n// m = 2 (or 1 for G1 see section 8.8.1)\n// k = 128\nconst htfDefaults = Object.freeze({\n  // DST: a domain separation tag\n  // defined in section 2.2.5\n  // Use utils.getDSTLabel(), utils.setDSTLabel(value)\n  DST: 'BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_',\n  encodeDST: 'BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_',\n  // p: the characteristic of F\n  //    where F is a finite field of characteristic p and order q = p^m\n  p: Fp.ORDER,\n  // m: the extension degree of F, m >= 1\n  //     where F is a finite field of characteristic p and order q = p^m\n  m: 2,\n  // k: the target security level for the suite in bits\n  // defined in section 5.1\n  k: 128,\n  // option to use a message that has already been processed by\n  // expand_message_xmd\n  expand: 'xmd',\n  // Hash functions for: expand_message_xmd is appropriate for use with a\n  // wide range of hash functions, including SHA-2, SHA-3, BLAKE2, and others.\n  // BBS+ uses blake2: https://github.com/hyperledger/aries-framework-go/issues/2247\n  hash: sha256,\n} as const);\n\n// Encoding utils\n// Point on G1 curve: (x, y)\n\n// Compressed point of infinity\nconst COMPRESSED_ZERO = setMask(Fp.toBytes(_0n), { infinity: true, compressed: true }); // set compressed & point-at-infinity bits\n\nfunction parseMask(bytes: Uint8Array) {\n  // Copy, so we can remove mask data. It will be removed also later, when Fp.create will call modulo.\n  bytes = bytes.slice();\n  const mask = bytes[0] & 0b1110_0000;\n  const compressed = !!((mask >> 7) & 1); // compression bit (0b1000_0000)\n  const infinity = !!((mask >> 6) & 1); // point at infinity bit (0b0100_0000)\n  const sort = !!((mask >> 5) & 1); // sort bit (0b0010_0000)\n  bytes[0] &= 0b0001_1111; // clear mask (zero first 3 bits)\n  return { compressed, infinity, sort, value: bytes };\n}\n\nfunction setMask(\n  bytes: Uint8Array,\n  mask: { compressed?: boolean; infinity?: boolean; sort?: boolean }\n) {\n  if (bytes[0] & 0b1110_0000) throw new Error('setMask: non-empty mask');\n  if (mask.compressed) bytes[0] |= 0b1000_0000;\n  if (mask.infinity) bytes[0] |= 0b0100_0000;\n  if (mask.sort) bytes[0] |= 0b0010_0000;\n  return bytes;\n}\n\nfunction signatureG1ToRawBytes(point: ProjPointType<Fp>) {\n  point.assertValidity();\n  const isZero = point.equals(bls12_381.G1.ProjectivePoint.ZERO);\n  const { x, y } = point.toAffine();\n  if (isZero) return COMPRESSED_ZERO.slice();\n  const P = Fp.ORDER;\n  const sort = Boolean((y * _2n) / P);\n  return setMask(numberToBytesBE(x, Fp.BYTES), { compressed: true, sort });\n}\n\nfunction signatureG2ToRawBytes(point: ProjPointType<Fp2>) {\n  // NOTE: by some reasons it was missed in bls12-381, looks like bug\n  point.assertValidity();\n  const len = Fp.BYTES;\n  if (point.equals(bls12_381.G2.ProjectivePoint.ZERO))\n    return concatB(COMPRESSED_ZERO, numberToBytesBE(_0n, len));\n  const { x, y } = point.toAffine();\n  const { re: x0, im: x1 } = Fp2.reim(x);\n  const { re: y0, im: y1 } = Fp2.reim(y);\n  const tmp = y1 > _0n ? y1 * _2n : y0 * _2n;\n  const sort = Boolean((tmp / Fp.ORDER) & _1n);\n  const z2 = x0;\n  return concatB(\n    setMask(numberToBytesBE(x1, len), { sort, compressed: true }),\n    numberToBytesBE(z2, len)\n  );\n}\n\n/**\n * bls12-381 pairing-friendly curve.\n * @example\n * import { bls12_381 as bls } from '@noble/curves/bls12-381';\n * // G1 keys, G2 signatures\n * const privateKey = '67d53f170b908cabb9eb326c3c337762d59289a8fec79f7bc9254b584b73265c';\n * const message = '64726e3da8';\n * const publicKey = bls.getPublicKey(privateKey);\n * const signature = bls.sign(message, privateKey);\n * const isValid = bls.verify(signature, message, publicKey);\n */\nexport const bls12_381: CurveFn = bls({\n  // Fields\n  fields: {\n    Fp,\n    Fp2,\n    Fp6,\n    Fp12,\n    Fr,\n  },\n  // G1 is the order-q subgroup of E1(Fp) : y² = x³ + 4, #E1(Fp) = h1q, where\n  // characteristic; z + (z⁴ - z² + 1)(z - 1)²/3\n  G1: {\n    Fp,\n    // cofactor; (z - 1)²/3\n    h: BigInt('0x396c8c005555e1568c00aaab0000aaab'),\n    // generator's coordinates\n    // x = 3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507\n    // y = 1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569\n    Gx: BigInt(\n      '0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb'\n    ),\n    Gy: BigInt(\n      '0x08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1'\n    ),\n    a: Fp.ZERO,\n    b: _4n,\n    htfDefaults: { ...htfDefaults, m: 1, DST: 'BLS_SIG_BLS12381G1_XMD:SHA-256_SSWU_RO_NUL_' },\n    wrapPrivateKey: true,\n    allowInfinityPoint: true,\n    // Checks is the point resides in prime-order subgroup.\n    // point.isTorsionFree() should return true for valid points\n    // It returns false for shitty points.\n    // https://eprint.iacr.org/2021/1130.pdf\n    isTorsionFree: (c, point): boolean => {\n      // GLV endomorphism ψ(P)\n      const beta = BigInt(\n        '0x5f19672fdf76ce51ba69c6076a0f77eaddb3a93be6f89688de17d813620a00022e01fffffffefffe'\n      );\n      const phi = new c(Fp.mul(point.px, beta), point.py, point.pz);\n      // TODO: unroll\n      const xP = point.multiplyUnsafe(BLS_X).negate(); // [x]P\n      const u2P = xP.multiplyUnsafe(BLS_X); // [u2]P\n      return u2P.equals(phi);\n    },\n    // Clear cofactor of G1\n    // https://eprint.iacr.org/2019/403\n    clearCofactor: (_c, point) => {\n      // return this.multiplyUnsafe(CURVE.h);\n      return point.multiplyUnsafe(BLS_X).add(point); // x*P + P\n    },\n    mapToCurve: (scalars: bigint[]) => {\n      const { x, y } = G1_SWU(Fp.create(scalars[0]));\n      return isogenyMapG1(x, y);\n    },\n    fromBytes: (bytes: Uint8Array): AffinePoint<Fp> => {\n      const { compressed, infinity, sort, value } = parseMask(bytes);\n      if (value.length === 48 && compressed) {\n        // TODO: Fp.bytes\n        const P = Fp.ORDER;\n        const compressedValue = bytesToNumberBE(value);\n        // Zero\n        const x = Fp.create(compressedValue & Fp.MASK);\n        if (infinity) {\n          if (x !== _0n) throw new Error('G1: non-empty compressed point at infinity');\n          return { x: _0n, y: _0n };\n        }\n        const right = Fp.add(Fp.pow(x, _3n), Fp.create(bls12_381.params.G1b)); // y² = x³ + b\n        let y = Fp.sqrt(right);\n        if (!y) throw new Error('invalid compressed G1 point');\n        if ((y * _2n) / P !== BigInt(sort)) y = Fp.neg(y);\n        return { x: Fp.create(x), y: Fp.create(y) };\n      } else if (value.length === 96 && !compressed) {\n        // Check if the infinity flag is set\n        const x = bytesToNumberBE(value.subarray(0, Fp.BYTES));\n        const y = bytesToNumberBE(value.subarray(Fp.BYTES));\n        if (infinity) {\n          if (x !== _0n || y !== _0n) throw new Error('G1: non-empty point at infinity');\n          return bls12_381.G1.ProjectivePoint.ZERO.toAffine();\n        }\n        return { x: Fp.create(x), y: Fp.create(y) };\n      } else {\n        throw new Error('invalid point G1, expected 48/96 bytes');\n      }\n    },\n    toBytes: (c, point, isCompressed) => {\n      const isZero = point.equals(c.ZERO);\n      const { x, y } = point.toAffine();\n      if (isCompressed) {\n        if (isZero) return COMPRESSED_ZERO.slice();\n        const P = Fp.ORDER;\n        const sort = Boolean((y * _2n) / P);\n        return setMask(numberToBytesBE(x, Fp.BYTES), { compressed: true, sort });\n      } else {\n        if (isZero) {\n          // 2x PUBLIC_KEY_LENGTH\n          const x = concatB(new Uint8Array([0x40]), new Uint8Array(2 * Fp.BYTES - 1));\n          return x;\n        } else {\n          return concatB(numberToBytesBE(x, Fp.BYTES), numberToBytesBE(y, Fp.BYTES));\n        }\n      }\n    },\n    ShortSignature: {\n      fromHex(hex: Hex): ProjPointType<Fp> {\n        const { infinity, sort, value } = parseMask(ensureBytes('signatureHex', hex, 48));\n        const P = Fp.ORDER;\n        const compressedValue = bytesToNumberBE(value);\n        // Zero\n        if (infinity) return bls12_381.G1.ProjectivePoint.ZERO;\n        const x = Fp.create(compressedValue & Fp.MASK);\n        const right = Fp.add(Fp.pow(x, _3n), Fp.create(bls12_381.params.G1b)); // y² = x³ + b\n        let y = Fp.sqrt(right);\n        if (!y) throw new Error('invalid compressed G1 point');\n        const aflag = BigInt(sort);\n        if ((y * _2n) / P !== aflag) y = Fp.neg(y);\n        const point = bls12_381.G1.ProjectivePoint.fromAffine({ x, y });\n        point.assertValidity();\n        return point;\n      },\n      toRawBytes(point: ProjPointType<Fp>) {\n        return signatureG1ToRawBytes(point);\n      },\n      toHex(point: ProjPointType<Fp>) {\n        return bytesToHex(signatureG1ToRawBytes(point));\n      },\n    },\n  },\n  // G2 is the order-q subgroup of E2(Fp²) : y² = x³+4(1+√−1),\n  // where Fp2 is Fp[√−1]/(x2+1). #E2(Fp2 ) = h2q, where\n  // G² - 1\n  // h2q\n  G2: {\n    Fp: Fp2,\n    // cofactor\n    h: BigInt(\n      '0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5'\n    ),\n    Gx: Fp2.fromBigTuple([\n      BigInt(\n        '0x024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8'\n      ),\n      BigInt(\n        '0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e'\n      ),\n    ]),\n    // y =\n    // 927553665492332455747201965776037880757740193453592970025027978793976877002675564980949289727957565575433344219582,\n    // 1985150602287291935568054521177171638300868978215655730859378665066344726373823718423869104263333984641494340347905\n    Gy: Fp2.fromBigTuple([\n      BigInt(\n        '0x0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'\n      ),\n      BigInt(\n        '0x0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be'\n      ),\n    ]),\n    a: Fp2.ZERO,\n    b: Fp2.fromBigTuple([_4n, _4n]),\n    hEff: BigInt(\n      '0xbc69f08f2ee75b3584c6a0ea91b352888e2a8e9145ad7689986ff031508ffe1329c2f178731db956d82bf015d1212b02ec0ec69d7477c1ae954cbc06689f6a359894c0adebbf6b4e8020005aaa95551'\n    ),\n    htfDefaults: { ...htfDefaults },\n    wrapPrivateKey: true,\n    allowInfinityPoint: true,\n    mapToCurve: (scalars: bigint[]) => {\n      const { x, y } = G2_SWU(Fp2.fromBigTuple(scalars));\n      return isogenyMapG2(x, y);\n    },\n    // Checks is the point resides in prime-order subgroup.\n    // point.isTorsionFree() should return true for valid points\n    // It returns false for shitty points.\n    // https://eprint.iacr.org/2021/1130.pdf\n    // Older version: https://eprint.iacr.org/2019/814.pdf\n    isTorsionFree: (c, P): boolean => {\n      return P.multiplyUnsafe(BLS_X).negate().equals(G2psi(c, P)); // ψ(P) == [u](P)\n    },\n    // Maps the point into the prime-order subgroup G2.\n    // clear_cofactor_bls12381_g2 from RFC 9380.\n    // https://eprint.iacr.org/2017/419.pdf\n    // prettier-ignore\n    clearCofactor: (c, P) => {\n      const x = BLS_X;\n      let t1 = P.multiplyUnsafe(x).negate();  // [-x]P\n      let t2 = G2psi(c, P);                   // Ψ(P)\n      let t3 = P.double();                    // 2P\n      t3 = G2psi2(c, t3);                     // Ψ²(2P)\n      t3 = t3.subtract(t2);                   // Ψ²(2P) - Ψ(P)\n      t2 = t1.add(t2);                        // [-x]P + Ψ(P)\n      t2 = t2.multiplyUnsafe(x).negate();     // [x²]P - [x]Ψ(P)\n      t3 = t3.add(t2);                        // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P)\n      t3 = t3.subtract(t1);                   // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P\n      const Q = t3.subtract(P);               // Ψ²(2P) - Ψ(P) + [x²]P - [x]Ψ(P) + [x]P - 1P\n      return Q;                               // [x²-x-1]P + [x-1]Ψ(P) + Ψ²(2P)\n    },\n    fromBytes: (bytes: Uint8Array): AffinePoint<Fp2> => {\n      const { compressed, infinity, sort, value } = parseMask(bytes);\n      if (\n        (!compressed && !infinity && sort) || // 00100000\n        (!compressed && infinity && sort) || // 01100000\n        (sort && infinity && compressed) // 11100000\n      ) {\n        throw new Error('invalid encoding flag: ' + (bytes[0] & 0b1110_0000));\n      }\n      const L = Fp.BYTES;\n      const slc = (b: Uint8Array, from: number, to?: number) => bytesToNumberBE(b.slice(from, to));\n      if (value.length === 96 && compressed) {\n        const b = bls12_381.params.G2b;\n        const P = Fp.ORDER;\n        if (infinity) {\n          // check that all bytes are 0\n          if (value.reduce((p, c) => (p !== 0 ? c + 1 : c), 0) > 0) {\n            throw new Error('invalid compressed G2 point');\n          }\n          return { x: Fp2.ZERO, y: Fp2.ZERO };\n        }\n        const x_1 = slc(value, 0, L);\n        const x_0 = slc(value, L, 2 * L);\n        const x = Fp2.create({ c0: Fp.create(x_0), c1: Fp.create(x_1) });\n        const right = Fp2.add(Fp2.pow(x, _3n), b); // y² = x³ + 4 * (u+1) = x³ + b\n        let y = Fp2.sqrt(right);\n        const Y_bit = y.c1 === _0n ? (y.c0 * _2n) / P : (y.c1 * _2n) / P ? _1n : _0n;\n        y = sort && Y_bit > 0 ? y : Fp2.neg(y);\n        return { x, y };\n      } else if (value.length === 192 && !compressed) {\n        if (infinity) {\n          if (value.reduce((p, c) => (p !== 0 ? c + 1 : c), 0) > 0) {\n            throw new Error('invalid uncompressed G2 point');\n          }\n          return { x: Fp2.ZERO, y: Fp2.ZERO };\n        }\n        const x1 = slc(value, 0, L);\n        const x0 = slc(value, L, 2 * L);\n        const y1 = slc(value, 2 * L, 3 * L);\n        const y0 = slc(value, 3 * L, 4 * L);\n        return { x: Fp2.fromBigTuple([x0, x1]), y: Fp2.fromBigTuple([y0, y1]) };\n      } else {\n        throw new Error('invalid point G2, expected 96/192 bytes');\n      }\n    },\n    toBytes: (c, point, isCompressed) => {\n      const { BYTES: len, ORDER: P } = Fp;\n      const isZero = point.equals(c.ZERO);\n      const { x, y } = point.toAffine();\n      if (isCompressed) {\n        if (isZero) return concatB(COMPRESSED_ZERO, numberToBytesBE(_0n, len));\n        const flag = Boolean(y.c1 === _0n ? (y.c0 * _2n) / P : (y.c1 * _2n) / P);\n        return concatB(\n          setMask(numberToBytesBE(x.c1, len), { compressed: true, sort: flag }),\n          numberToBytesBE(x.c0, len)\n        );\n      } else {\n        if (isZero) return concatB(new Uint8Array([0x40]), new Uint8Array(4 * len - 1)); // bytes[0] |= 1 << 6;\n        const { re: x0, im: x1 } = Fp2.reim(x);\n        const { re: y0, im: y1 } = Fp2.reim(y);\n        return concatB(\n          numberToBytesBE(x1, len),\n          numberToBytesBE(x0, len),\n          numberToBytesBE(y1, len),\n          numberToBytesBE(y0, len)\n        );\n      }\n    },\n    Signature: {\n      // TODO: Optimize, it's very slow because of sqrt.\n      fromHex(hex: Hex): ProjPointType<Fp2> {\n        const { infinity, sort, value } = parseMask(ensureBytes('signatureHex', hex));\n        const P = Fp.ORDER;\n        const half = value.length / 2;\n        if (half !== 48 && half !== 96)\n          throw new Error('invalid compressed signature length, must be 96 or 192');\n        const z1 = bytesToNumberBE(value.slice(0, half));\n        const z2 = bytesToNumberBE(value.slice(half));\n        // Indicates the infinity point\n        if (infinity) return bls12_381.G2.ProjectivePoint.ZERO;\n        const x1 = Fp.create(z1 & Fp.MASK);\n        const x2 = Fp.create(z2);\n        const x = Fp2.create({ c0: x2, c1: x1 });\n        const y2 = Fp2.add(Fp2.pow(x, _3n), bls12_381.params.G2b); // y² = x³ + 4\n        // The slow part\n        let y = Fp2.sqrt(y2);\n        if (!y) throw new Error('Failed to find a square root');\n\n        // Choose the y whose leftmost bit of the imaginary part is equal to the a_flag1\n        // If y1 happens to be zero, then use the bit of y0\n        const { re: y0, im: y1 } = Fp2.reim(y);\n        const aflag1 = BigInt(sort);\n        const isGreater = y1 > _0n && (y1 * _2n) / P !== aflag1;\n        const isZero = y1 === _0n && (y0 * _2n) / P !== aflag1;\n        if (isGreater || isZero) y = Fp2.neg(y);\n        const point = bls12_381.G2.ProjectivePoint.fromAffine({ x, y });\n        point.assertValidity();\n        return point;\n      },\n      toRawBytes(point: ProjPointType<Fp2>) {\n        return signatureG2ToRawBytes(point);\n      },\n      toHex(point: ProjPointType<Fp2>) {\n        return bytesToHex(signatureG2ToRawBytes(point));\n      },\n    },\n  },\n  params: {\n    ateLoopSize: BLS_X, // The BLS parameter x for BLS12-381\n    r: Fr.ORDER, // order; z⁴ − z² + 1; CURVE.n from other curves\n    xNegative: true,\n    twistType: 'multiplicative',\n  },\n  htfDefaults,\n  hash: sha256,\n  randomBytes,\n});\n","import { bls12_381 as bls } from '@noble/curves/bls12-381';\nimport { type Hex, toBytes, keccak256, encodePacked, encodeAbiParameters, parseAbiParameters } from 'viem';\n\n/**\n * BLS Signer for Registry reputation updates and DVT operations\n * \n * Uses BLS12-381 curve for signature aggregation\n */\nexport class BLSSigner {\n    private privateKey: Uint8Array;\n    \n    constructor(privateKeyHex: Hex) {\n        this.privateKey = toBytes(privateKeyHex);\n    }\n    \n    /**\n     * Sign a message with BLS private key\n     * @param message Message hash to sign\n     * @returns BLS signature as hex string\n     */\n    sign(message: Hex): Hex {\n        const messageBytes = toBytes(message);\n        const signature = bls.sign(messageBytes, this.privateKey);\n        return `0x${Buffer.from(signature).toString('hex')}` as Hex;\n    }\n    \n    /**\n     * Get BLS public key\n     * @returns Public key as hex string\n     */\n    getPublicKey(): Hex {\n        const pubKey = bls.getPublicKey(this.privateKey);\n        return `0x${Buffer.from(pubKey).toString('hex')}` as Hex;\n    }\n    \n    /**\n     * Aggregate multiple BLS signatures\n     * @param signatures Array of BLS signatures\n     * @returns Aggregated signature\n     */\n    static aggregateSignatures(signatures: Hex[]): Hex {\n        const sigBytes = signatures.map(sig => toBytes(sig));\n        const aggregated = bls.aggregateSignatures(sigBytes);\n        return `0x${Buffer.from(aggregated).toString('hex')}` as Hex;\n    }\n    \n    /**\n     * Aggregate multiple BLS public keys\n     * @param pubKeys Array of BLS public keys\n     * @returns Aggregated public key (uncompressed G1 - 96 bytes for EVM)\n     */\n    static aggregatePublicKeys(pubKeys: Hex[]): Hex {\n        const pubKeyBytes = pubKeys.map(pk => toBytes(pk));\n        const aggregated = bls.aggregatePublicKeys(pubKeyBytes);\n        return `0x${Buffer.from(aggregated).toString('hex')}` as Hex;\n    }\n    \n    /**\n     * Verify a BLS signature\n     * @param message Message hash\n     * @param signature BLS signature\n     * @param publicKey BLS public key\n     * @returns True if signature is valid\n     */\n    static verify(message: Hex, signature: Hex, publicKey: Hex): boolean {\n        const messageBytes = toBytes(message);\n        const sigBytes = toBytes(signature);\n        const pubKeyBytes = toBytes(publicKey);\n        return bls.verify(sigBytes, messageBytes, pubKeyBytes);\n    }\n}\n\n/**\n * Helper functions for creating BLS proofs for Registry and BLSAggregator operations\n */\nexport const BLSHelpers = {\n    /**\n     * Create message hash for slash proposal\n     */\n    createSlashProposalMessage(proposalId: bigint): Hex {\n        return keccak256(encodePacked(['uint256'], [proposalId]));\n    },\n    \n    /**\n     * Create message hash for reputation update\n     */\n    createReputationUpdateMessage(users: Hex[], scores: bigint[], epoch: bigint): Hex {\n        return keccak256(encodePacked(\n            ['address[]', 'uint256[]', 'uint256'],\n            [users, scores, epoch]\n        ));\n    },\n    \n    /**\n     * Encode BLS proof for Registry/Aggregator (v3 format)\n     * Proof structure: (bytes pkG1, bytes sigG2, bytes msgG2, uint256 signerMask)\n     */\n    encodeBLSProof(\n        aggregatedPublicKey: Hex, // G1 (48 bytes compressed or 96 bytes uncompressed)\n        aggregatedSignature: Hex, // G2 (96 bytes compressed or 192 bytes uncompressed)\n        messageMappingG2: Hex,    // G2 (Mapping of hash to G2 point)\n        signerMask: bigint\n    ): Hex {\n        return encodeAbiParameters(\n            parseAbiParameters('bytes, bytes, bytes, uint256'),\n            [aggregatedPublicKey, aggregatedSignature, messageMappingG2, signerMask]\n        );\n    },\n\n    /**\n     * @deprecated SUPERSEDED by the explicit-`nodeIds` DVT wire (airaccount-contract\n     * #110, LIVE-verified). The DEPLOYED `AAStarBLSAlgorithm` verifier takes an explicit\n     * list of `bytes32` `nodeId`s, NOT a `signerMask` bitmask — `signerMask` was an early\n     * design that the landed contract did not adopt. Use\n     * {@link import('./dvtWire').encodeDVTAccountSignature} /\n     * {@link import('./dvtWire').encodeDVTVerifierProof} instead. Retained for backward\n     * compatibility with the legacy aggregator path only.\n     *\n     * Build a DVT co-sign `signerMask` from registration slots (frozen DVT program\n     * spec, hub YetAnotherAA-Validator#42).\n     *\n     * The on-chain BLSAggregator addresses signers by REGISTRATION SLOT, not by\n     * key-array index: bit `i` (LSB = 0) corresponds to slot `i + 1` (1-indexed) →\n     * `validatorAtSlot[i + 1]`. So a validator registered at slot `s` sets bit `s - 1`.\n     * Using a 0-indexed array position instead makes the contract rebuild the WRONG\n     * aggregate public key → verification always fails.\n     *\n     * @param slots Registration slots (1-indexed, `>= 1`) of the contributing signers.\n     * @returns The uint256 signerMask.\n     */\n    slotsToSignerMask(slots: number[]): bigint {\n        let mask = 0n;\n        for (const slot of slots) {\n            // On-chain slot is a uint8 in [1, 255] (bit 0..254, all within uint256).\n            // Rejecting > 255 here surfaces a clear error instead of a plausible-but-\n            // impossible mask (slot 256) or an opaque ABI-encode overflow (slot 257).\n            if (!Number.isInteger(slot) || slot < 1 || slot > 255) {\n                throw new Error(\n                    `invalid registration slot ${slot}: slots are 1-indexed uint8 (must be in [1, 255])`\n                );\n            }\n            mask |= 1n << BigInt(slot - 1);\n        }\n        return mask;\n    },\n\n    /**\n     * @deprecated SUPERSEDED by the explicit-`nodeIds` DVT wire (airaccount-contract\n     * #110, LIVE-verified). The DEPLOYED verifier decodes an explicit `nodeIds` list +\n     * 256-byte `blsSig`, NOT this `(signerMask, sigG2)` ABI tuple. Use\n     * {@link import('./dvtWire').encodeDVTVerifierProof} (verifier-level) or\n     * {@link import('./dvtWire').encodeDVTAccountSignature} (account-level) instead.\n     * Retained for backward compatibility only.\n     *\n     * Encode a DVT co-sign proof (early `signerMask` design, hub #42, decision B).\n     *\n     * Under decision B the on-chain verifier recomputes `msgG2 = hashToG2(userOpHash)`\n     * itself and rebuilds the aggregate public key from `signerMask` → registered\n     * keys, so the proof carries ONLY `(signerMask, sigG2)`. pkG1 and msgG2 are NOT\n     * included — this is intentionally narrower than the v3 {@link encodeBLSProof}\n     * still used by the slash/reputation path.\n     *\n     * @param signerMask Bitmask of contributing slots (see {@link slotsToSignerMask}).\n     * @param aggregatedSignature The BLS12-381 aggregated G2 signature (`sigG2`).\n     */\n    encodeDVTProof(signerMask: bigint, aggregatedSignature: Hex): Hex {\n        return encodeAbiParameters(\n            parseAbiParameters('uint256 signerMask, bytes sigG2'),\n            [signerMask, aggregatedSignature]\n        );\n    },\n\n    /**\n     * Encode Reputation Proof (for test compatibility)\n     * Matches format: (signature, publicKey, signerMask)\n     */\n    encodeReputationProof(\n        signature: Hex,\n        publicKey: Hex,\n        signerMask: bigint\n    ): Hex {\n        return encodeAbiParameters(\n            parseAbiParameters('bytes signature, bytes publicKey, uint256 signerMask'),\n            [signature, publicKey, signerMask]\n        );\n    }\n};\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, encodeFunctionData } from 'viem';\nimport { BLSAggregatorABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\nimport { BLSHelpers } from '../crypto/blsSigner.js';\n\n/** A registered validator's on-chain BLS G1 public key point. */\nexport type BLSG1Point = { x_a: Hex, x_b: Hex, y_a: Hex, y_b: Hex };\n\n/**\n * BLSAggregator slash severity levels (SP #329 unified slash consensus). The\n * per-level co-sign quorum is read via {@link AggregatorActions.getSlashThreshold}\n * (bootstrap on Sepolia: WARNING 2-of-3, MINOR/MAJOR 3-of-3).\n */\nexport enum SlashLevel {\n    WARNING = 0,\n    MINOR = 1,\n    MAJOR = 2,\n}\n\n/**\n * ABI-encode a BLSAggregator `setSlashPolicyAdmin(newAdmin)` call (CC-13 batch B).\n * Returns the inner calldata to route through governance — pair it with the\n * BLSAggregator address as the `target` of a {TimelockController} `schedule`/`execute`\n * (see the admin `SlashGovernance` helper). The current admin is read via\n * {@link AggregatorActions.slashPolicyAdmin}. Once handed over to a timelock, a direct\n * EOA call to `setSlashPolicyAdmin` reverts `NotSlashPolicyAdmin`.\n */\nexport function encodeSetSlashPolicyAdmin(newAdmin: Address): Hex {\n    validateAddress(newAdmin, 'newAdmin');\n    return encodeFunctionData({\n        abi: BLSAggregatorABI,\n        functionName: 'setSlashPolicyAdmin',\n        args: [newAdmin],\n    });\n}\n\n/**\n * ABI-encode a BLSAggregator `setSlashThreshold(slashLevel, threshold)` call (CC-13\n * batch B). `threshold` is the co-sign quorum for the given {@link SlashLevel}. Returns\n * the inner calldata to route through governance (same target/timelock pairing as\n * {@link encodeSetSlashPolicyAdmin}).\n */\nexport function encodeSetSlashThreshold(slashLevel: SlashLevel | number, threshold: number): Hex {\n    validateRequired(slashLevel, 'slashLevel');\n    validateRequired(threshold, 'threshold');\n    return encodeFunctionData({\n        abi: BLSAggregatorABI,\n        functionName: 'setSlashThreshold',\n        args: [slashLevel, threshold],\n    });\n}\n\nexport type AggregatorActions = {\n    // BLS Public Key Management\n    registerBLSPublicKey: (args: { validator: Address, publicKey: Hex, account?: Account | Address }) => Promise<Hash>;\n    /** @deprecated The deployed BLSAggregator ABI has no `blsPublicKeys` mapping getter — this wrapper now reads the ABI-confirmed `getBLSPublicKey` and projects out the slot. Prefer {@link getBLSPublicKey}. */\n    blsPublicKeys: (args: { validator: Address }) => Promise<{ publicKey: Hex, isActive: boolean }>;\n    /** Read a validator's registered G1 key + its registration SLOT (1-indexed) + active flag. */\n    getBLSPublicKey: (args: { validator: Address }) => Promise<{ publicKey: BLSG1Point, slot: number, isActive: boolean }>;\n    /** Reverse of {@link getBLSPublicKey}: the validator address registered at a given slot. */\n    validatorAtSlot: (args: { slot: number }) => Promise<Address>;\n    /** Revoke a validator's registered BLS public key (owner-gated). ABI: revokeBLSPublicKey(address validator). */\n    revokeBLSPublicKey: (args: { validator: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Toggle permissionless (self-service) BLS key registration. ABI: setPermissionlessBLSRegistration(bool enabled). */\n    setPermissionlessBLSRegistration: (args: { enabled: boolean, account?: Account | Address }) => Promise<Hash>;\n    /** Whether permissionless BLS key registration is currently enabled (view). */\n    permissionlessBLSRegistration: () => Promise<boolean>;\n\n    // DVT co-sign aggregation (frozen DVT program spec, hub #42)\n    /**\n     * Build the DVT `signerMask` for a set of signer addresses by reading each\n     * signer's on-chain registration slot. bit `s-1` is set for a validator at slot\n     * `s` (see {@link BLSHelpers.slotsToSignerMask}). Throws if any signer is not a\n     * registered, active validator, or if two signers map to the same slot.\n     */\n    buildSignerMask: (args: { signers: Address[] }) => Promise<{ signerMask: bigint, slots: number[] }>;\n    /** On-chain aggregate-signature verification (view). `sigBytes` = aggregated sigG2. */\n    verify: (args: { expectedMessageHash: Hex, signerMask: bigint, requiredThreshold: bigint, sigBytes: Hex }) => Promise<boolean>;\n\n\n    // Threshold Management\n    setDefaultThreshold: (args: { newThreshold: bigint, account?: Account | Address }) => Promise<Hash>;\n    setMinThreshold: (args: { newThreshold: bigint, account?: Account | Address }) => Promise<Hash>;\n    defaultThreshold: () => Promise<bigint>;\n    minThreshold: () => Promise<bigint>;\n\n    // Slash Policy Governance (CC-13 · SP #329 unified slash) — read side\n    /**\n     * The address authorised to update the slash threshold table (`slashPolicyAdmin()` view).\n     * Bootstrap on Sepolia = deployer EOA; governance moves it to a TimelockController (CC-13).\n     */\n    slashPolicyAdmin: () => Promise<Address>;\n    /** The co-sign quorum required for a given {@link SlashLevel} (`slashThresholds(uint8)` view). */\n    getSlashThreshold: (args: { slashLevel: SlashLevel | number }) => Promise<number>;\n    /** Convenience: read the whole slash threshold table (WARNING/MINOR/MAJOR) in one shot. */\n    getSlashThresholds: () => Promise<{ warning: number, minor: number, major: number }>;\n\n    // Proposal & Execution\n    executeProposal: (args: { proposalId: bigint, target: Address, callData: Hex, requiredThreshold: bigint, proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    verifyAndExecute: (args: { proposalId: bigint, operator: Address, slashLevel: number, repUsers: Address[], newScores: bigint[], epoch: bigint, evidenceHash: Hex, proof: Hex, account?: Account | Address }) => Promise<Hash>;\n    executedProposals: (args: { proposalId: bigint }) => Promise<boolean>;\n    proposalNonces: (args: { proposalId: bigint }) => Promise<bigint>;\n    \n    // Aggregated Signatures\n    aggregatedSignatures: (args: { index: bigint }) => Promise<{ aggregatedSig: Hex, messageHash: Hex, timestamp: bigint, verified: boolean }>;\n    \n    // Config\n    setDVTValidator: (args: { dv: Address, account?: Account | Address }) => Promise<Hash>;\n    setSuperPaymaster: (args: { paymaster: Address, account?: Account | Address }) => Promise<Hash>;\n    DVT_VALIDATOR: () => Promise<Address>;\n    SUPERPAYMASTER: () => Promise<Address>;\n    REGISTRY: () => Promise<Address>;\n    \n    // Constants\n    MAX_VALIDATORS: () => Promise<bigint>;\n    \n    // Ownership\n    owner: () => Promise<Address>;\n    transferOwnership: (args: { newOwner: Address, account?: Account | Address }) => Promise<Hash>;\n    renounceOwnership: (args: { account?: Account | Address }) => Promise<Hash>;\n    \n    // Version\n    version: () => Promise<string>;\n};\n\nexport const aggregatorActions = (address: Address) => (client: PublicClient | WalletClient): AggregatorActions => ({\n    // BLS Public Key Management\n    async registerBLSPublicKey({ validator, publicKey, account }) {\n        try {\n            validateAddress(validator, 'validator');\n            validateRequired(publicKey, 'publicKey');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'registerBLSPublicKey',\n                args: [validator, publicKey],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'registerBLSPublicKey');\n        }\n    },\n\n    async blsPublicKeys({ validator }) {\n        try {\n            validateAddress(validator, 'validator');\n            // On-chain fn: getBLSPublicKey(validator) -> (G1Point publicKey, uint8 slot, bool isActive).\n            // The legacy `blsPublicKeys` mapping getter no longer exists; isActive is at index 2 (index 1 is the slot).\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'getBLSPublicKey',\n                args: [validator]\n            }) as any;\n            return { publicKey: result[0], isActive: result[2] };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'blsPublicKeys');\n        }\n    },\n\n    async getBLSPublicKey({ validator }) {\n        try {\n            validateAddress(validator, 'validator');\n            const r = await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'getBLSPublicKey',\n                args: [validator]\n            }) as any;\n            // outputs: (G1Point publicKey, uint8 slot, bool isActive)\n            return { publicKey: r[0] as BLSG1Point, slot: Number(r[1]), isActive: r[2] as boolean };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getBLSPublicKey');\n        }\n    },\n\n    async validatorAtSlot({ slot }) {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'validatorAtSlot',\n                args: [slot]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'validatorAtSlot');\n        }\n    },\n\n    // DVT co-sign aggregation (frozen DVT program spec, hub #42)\n    async buildSignerMask({ signers }) {\n        // Semantic validation throws with its own message (NOT wrapped via\n        // fromViemError, which would discard it for a generic \"contract call failed\").\n        validateRequired(signers, 'signers');\n        if (signers.length === 0) {\n            throw new Error('buildSignerMask: signers must be a non-empty array');\n        }\n        signers.forEach((s) => validateAddress(s, 'signer'));\n\n        // Only the genuine contract reads are wrapped. Reads are independent → run\n        // concurrently; the resulting mask is order-independent.\n        let infos: { signer: Address, slot: number, isActive: boolean }[];\n        try {\n            infos = await Promise.all(signers.map(async (signer) => {\n                const r = await (client as PublicClient).readContract({\n                    address,\n                    abi: BLSAggregatorABI,\n                    functionName: 'getBLSPublicKey',\n                    args: [signer]\n                }) as any;\n                return { signer, slot: Number(r[1]), isActive: r[2] as boolean };\n            }));\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'buildSignerMask');\n        }\n\n        for (const { signer, slot, isActive } of infos) {\n            if (!isActive || slot < 1) {\n                throw new Error(\n                    `buildSignerMask: signer ${signer} is not a registered active DVT validator (slot ${slot}, active ${isActive})`\n                );\n            }\n        }\n        const slots = infos.map((i) => i.slot);\n        if (new Set(slots).size !== slots.length) {\n            throw new Error(`buildSignerMask: duplicate registration slots in signer set: ${slots.join(', ')}`);\n        }\n        const signerMask = BLSHelpers.slotsToSignerMask(slots);\n        return { signerMask, slots: [...slots].sort((a, b) => a - b) };\n    },\n\n    async verify({ expectedMessageHash, signerMask, requiredThreshold, sigBytes }) {\n        try {\n            validateRequired(expectedMessageHash, 'expectedMessageHash');\n            validateRequired(signerMask, 'signerMask');\n            validateRequired(requiredThreshold, 'requiredThreshold');\n            validateRequired(sigBytes, 'sigBytes');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'verify',\n                args: [expectedMessageHash, signerMask, requiredThreshold, sigBytes]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'verify');\n        }\n    },\n\n    // Threshold Management\n    async setDefaultThreshold({ newThreshold, account }) {\n        try {\n            validateRequired(newThreshold, 'newThreshold');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'setDefaultThreshold',\n                args: [newThreshold],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setDefaultThreshold');\n        }\n    },\n\n    async setMinThreshold({ newThreshold, account }) {\n        try {\n            validateRequired(newThreshold, 'newThreshold');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'setMinThreshold',\n                args: [newThreshold],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setMinThreshold');\n        }\n    },\n\n    async defaultThreshold() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'defaultThreshold',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'defaultThreshold');\n        }\n    },\n\n    async minThreshold() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'minThreshold',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'minThreshold');\n        }\n    },\n\n    // Slash Policy Governance (CC-13 · SP #329 unified slash) — read side\n    async slashPolicyAdmin() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'slashPolicyAdmin',\n                args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'slashPolicyAdmin');\n        }\n    },\n\n    async getSlashThreshold({ slashLevel }) {\n        try {\n            validateRequired(slashLevel, 'slashLevel');\n            const threshold = await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'slashThresholds',\n                args: [slashLevel]\n            });\n            return Number(threshold);\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getSlashThreshold');\n        }\n    },\n\n    async getSlashThresholds() {\n        try {\n            const read = (slashLevel: number) => (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'slashThresholds',\n                args: [slashLevel]\n            });\n            const [warning, minor, major] = await Promise.all([\n                read(SlashLevel.WARNING),\n                read(SlashLevel.MINOR),\n                read(SlashLevel.MAJOR)\n            ]);\n            return { warning: Number(warning), minor: Number(minor), major: Number(major) };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getSlashThresholds');\n        }\n    },\n\n    // Proposal & Execution\n    async executeProposal({ proposalId, target, callData, requiredThreshold, proof, account }) {\n        try {\n            validateRequired(proposalId, 'proposalId');\n            validateAddress(target, 'target');\n            validateRequired(callData, 'callData');\n            validateRequired(requiredThreshold, 'requiredThreshold');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'executeProposal',\n                args: [proposalId, target, callData, requiredThreshold, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeProposal');\n        }\n    },\n\n    async verifyAndExecute({ proposalId, operator, slashLevel, repUsers, newScores, epoch, evidenceHash, proof, account }) {\n        try {\n            validateRequired(proposalId, 'proposalId');\n            validateAddress(operator, 'operator');\n            validateRequired(slashLevel, 'slashLevel');\n            validateRequired(repUsers, 'repUsers');\n            validateRequired(newScores, 'newScores');\n            validateRequired(epoch, 'epoch');\n            // #285/SP#329 slash-consensus unify: verifyAndExecute now binds an evidenceHash (part of the\n            // execute messageHash keccak256(abi.encode(proposalId, operator, slashLevel, repUsers, newScores,\n            // epoch, chainid, evidenceHash))). The old 7-arg overload was REMOVED on-chain.\n            validateRequired(evidenceHash, 'evidenceHash');\n            validateRequired(proof, 'proof');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'verifyAndExecute',\n                args: [proposalId, operator, slashLevel, repUsers, newScores, epoch, evidenceHash, proof],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'verifyAndExecute');\n        }\n    },\n\n    async executedProposals({ proposalId }) {\n        try {\n            validateRequired(proposalId, 'proposalId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'executedProposals',\n                args: [proposalId]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executedProposals');\n        }\n    },\n\n    async proposalNonces({ proposalId }) {\n        try {\n            validateRequired(proposalId, 'proposalId');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'proposalNonces',\n                args: [proposalId]\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'proposalNonces');\n        }\n    },\n\n    // Aggregated Signatures\n    async aggregatedSignatures({ index }) {\n        try {\n            validateRequired(index, 'index');\n            const result = await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'aggregatedSignatures',\n                args: [index]\n            }) as any;\n            return {\n                aggregatedSig: result[0],\n                messageHash: result[1],\n                timestamp: result[2],\n                verified: result[3]\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'aggregatedSignatures');\n        }\n    },\n\n    // Config\n    async setDVTValidator({ dv, account }) {\n        try {\n            validateAddress(dv, 'dv');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'setDVTValidator',\n                args: [dv],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setDVTValidator');\n        }\n    },\n\n    async setSuperPaymaster({ paymaster, account }) {\n        try {\n            validateAddress(paymaster, 'paymaster');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'setSuperPaymaster',\n                args: [paymaster],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setSuperPaymaster');\n        }\n    },\n\n    async DVT_VALIDATOR() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'DVT_VALIDATOR',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'DVT_VALIDATOR');\n        }\n    },\n\n    async SUPERPAYMASTER() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'SUPERPAYMASTER',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'SUPERPAYMASTER');\n        }\n    },\n\n    async REGISTRY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'REGISTRY',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'REGISTRY');\n        }\n    },\n\n    async MAX_VALIDATORS() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'MAX_VALIDATORS',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_VALIDATORS');\n        }\n    },\n\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    },\n\n    async transferOwnership({ newOwner, account }) {\n        try {\n            validateAddress(newOwner, 'newOwner');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'transferOwnership',\n                args: [newOwner],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'transferOwnership');\n        }\n    },\n\n    async renounceOwnership({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'renounceOwnership',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'renounceOwnership');\n        }\n    },\n\n    async revokeBLSPublicKey({ validator, account }) {\n        try {\n            validateAddress(validator, 'validator');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'revokeBLSPublicKey',\n                args: [validator],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'revokeBLSPublicKey');\n        }\n    },\n\n    async setPermissionlessBLSRegistration({ enabled, account }) {\n        try {\n            validateRequired(enabled, 'enabled');\n            return await (client as any).writeContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'setPermissionlessBLSRegistration',\n                args: [enabled],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setPermissionlessBLSRegistration');\n        }\n    },\n\n    async permissionlessBLSRegistration() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'permissionlessBLSRegistration',\n                args: []\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'permissionlessBLSRegistration');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: BLSAggregatorABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    }\n});\n","import { type Address, type Hex, type PublicClient, type WalletClient } from 'viem';\nimport { AAStarBLSAlgorithmABI } from '../abis/index.js';\nimport { validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\nexport type BLSAlgorithmActions = {\n    // validate(bytes32 userOpHash, bytes proof) -> uint256: the on-chain DVT signature verifier.\n    // Returns 0 when the combined-signature proof is ACCEPTED, non-zero when rejected.\n    validate: (args: { userOpHash: Hex, proof: Hex }) => Promise<bigint>;\n};\n\nconst ABI = AAStarBLSAlgorithmABI;\n\n/**\n * AAStarBLSAlgorithm — the on-chain DVT combined-signature verifier. Pair with\n * `dvtWire.encodeDVTVerifierProof()` (which builds `proof`) to verify an SDK-assembled\n * DVT co-signature on-chain via the SDK rather than a hand-written ABI call.\n */\nexport const blsAlgorithmActions = (address: Address) => (client: PublicClient | WalletClient): BLSAlgorithmActions => ({\n    async validate({ userOpHash, proof }) {\n        try {\n            validateRequired(userOpHash, 'userOpHash');\n            validateRequired(proof, 'proof');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'validate', args: [userOpHash, proof],\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'validate');\n        }\n    },\n});\n","import { bls12_381 as bls } from '@noble/curves/bls12-381';\nimport { hash_to_field } from '@noble/curves/abstract/hash-to-curve';\nimport { type Hex, toBytes } from 'viem';\n\n/**\n * Frozen cross-repo DST (Domain Separation Tag) for the BLS-signature\n * Proof-of-Possession (POP) scheme. This MUST be byte-identical across:\n *   - SuperPaymaster        contracts/src/utils/BLS.sol            (dstPrime)\n *   - AAStar SDK            this file\n *   - YetAnotherAA-Validator src/utils/bls.util.ts                (BLS_DST)\n *\n * NOTE: @noble/curves's `bls.G2.defaults.DST` is the `_NUL_` variant\n * (\"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_\"); we deliberately override\n * it with the `_POP_` variant to match the on-chain contract.\n */\nexport const BLS_POP_DST = 'BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_';\n\n/**\n * The two Fp2 field elements (u0, u1) produced by `hash_to_field(msg, DST, 2)`,\n * each serialized in EIP-2537 split form to mirror SuperPaymaster's on-chain\n * `BLS.G2Point` X-coordinate layout.\n *\n * Each Fp2 element has two coordinates (c0, c1). Each Fp (a BLS12-381 base-field\n * element, 48 bytes) is serialized EIP-2537-style as 64 bytes\n * (16 zero bytes + 48-byte big-endian) and split into two bytes32:\n *   - `a` = high 32 bytes (16 zero bytes + top 16 bytes of the field element)\n *   - `b` = low 32 bytes  (bottom 32 bytes of the field element)\n */\nexport interface HashToFieldU0U1 {\n    // u0 = first Fp2 element (c0, c1).\n    u0c0a: Hex;\n    u0c0b: Hex;\n    u0c1a: Hex;\n    u0c1b: Hex;\n    // u1 = second Fp2 element (c0, c1).\n    u1c0a: Hex;\n    u1c0b: Hex;\n    u1c1a: Hex;\n    u1c1b: Hex;\n}\n\n/**\n * Serialize a BLS12-381 base-field element (Fp, < 2^381) into the EIP-2537\n * split form used on-chain: a 64-byte big-endian encoding (16 leading zero\n * bytes + 48 field bytes), split into the high 32 bytes (`a`) and low 32 bytes\n * (`b`).\n */\nfunction fpToSplitBytes32(fp: bigint): { a: Hex; b: Hex } {\n    // 96 hex chars = 48 bytes big-endian.\n    const hex48 = fp.toString(16).padStart(96, '0');\n    // EIP-2537 pads to 64 bytes (128 hex) with 16 leading zero bytes.\n    const hex64 = hex48.padStart(128, '0');\n    return {\n        a: `0x${hex64.slice(0, 64)}` as Hex, // high 32 bytes\n        b: `0x${hex64.slice(64)}` as Hex, // low 32 bytes\n    };\n}\n\n/**\n * Compute `hash_to_field(message, DST=BLS_POP_DST, count=2)` for BLS12-381 G2\n * and serialize the resulting two Fp2 elements (u0, u1) into SuperPaymaster's\n * EIP-2537 split-bytes32 layout.\n *\n * This is the authoritative cross-repo golden surface for DVT: the node, the\n * SDK, and the on-chain verifier must all agree byte-for-byte on (u0, u1).\n * Full hash-to-curve (map_to_curve + clear_cofactor) is intentionally NOT\n * computed here because it needs EIP-2537 precompiles absent on cancun; the\n * contract only verifies the `hash_to_field` intermediate.\n *\n * @param message The message to hash (arbitrary-length bytes, as Hex).\n * @returns The 8 bytes32 values (u0/u1 × c0/c1 × a/b).\n */\nexport function hashToFieldU0U1(message: Hex): HashToFieldU0U1 {\n    const msgBytes = toBytes(message);\n    const opts = { ...bls.G2.defaults, DST: BLS_POP_DST };\n    // hash_to_field with m=2 (Fp2 -> 2 coords) and count=2 yields:\n    //   [ [u0.c0, u0.c1], [u1.c0, u1.c1] ]  as bigints.\n    const [u0, u1] = hash_to_field(msgBytes, 2, opts);\n    const u0c0 = fpToSplitBytes32(u0[0]);\n    const u0c1 = fpToSplitBytes32(u0[1]);\n    const u1c0 = fpToSplitBytes32(u1[0]);\n    const u1c1 = fpToSplitBytes32(u1[1]);\n    return {\n        u0c0a: u0c0.a,\n        u0c0b: u0c0.b,\n        u0c1a: u0c1.a,\n        u0c1b: u0c1.b,\n        u1c0a: u1c0.a,\n        u1c0b: u1c0.b,\n        u1c1a: u1c1.a,\n        u1c1b: u1c1.b,\n    };\n}\n","import { bls12_381 as bls } from '@noble/curves/bls12-381';\nimport { type Hex, concat, isHex, numberToHex, size, toBytes, toHex } from 'viem';\n\n/**\n * DVT combined-signature wire encoders — airaccount-contract #110 authoritative,\n * LIVE-verified format (deployed `AAStarBLSAlgorithm` beta.2 `0xA9EE4f8A…` on Sepolia).\n *\n * ## Why this supersedes the `signerMask` design\n *\n * An earlier SDK design (D1, {@link import('./blsSigner').BLSHelpers.encodeDVTProof})\n * encoded the contributing nodes as a `uint256 signerMask` bitmask. The DEPLOYED\n * verifier does NOT use a bitmask: it takes an EXPLICIT list of `bytes32` `nodeId`s\n * and rebuilds the aggregate public key by walking them in order. This module\n * implements the explicit-`nodeIds` wire that the live contract actually decodes;\n * the `signerMask` helpers are retained only for backward compatibility and are\n * marked `@deprecated`.\n *\n * ## Wire layouts (byte-for-byte, confirmed against live Sepolia txs)\n *\n * Account-level (goes into `PackedUserOperation.signature`):\n * ```\n * T2 (0x04): [0x04][P256 r(32)][P256 s(32)][nodeIdsLength(32)][nodeId_1(32)…nodeId_N(32)][blsSig(256)]\n * T3 (0x05): [0x05][P256(64)][nodeIdsLength(32)][nodeIds(N×32)][blsSig(256)][guardianECDSA(65)]\n * ```\n * Verifier-level (the account strips `tier + P256 + nodeIdsLength`, then calls\n * `AAStarBLSAlgorithm.validate(userOpHash, …)`):\n * ```\n * validate(userOpHash, [nodeId_1(32)…nodeId_N(32)][blsSig(256)])   // NO nodeIdsLength prefix\n * ```\n *\n * Key invariants (all confirmed live):\n * - `nodeIds` are explicit `bytes32` IDs (NOT a `signerMask`). The encoders emit them STRICTLY\n *   ASCENDING (#274): the v0.27.0 DVT validator requires ordered, distinct ids. Callers may pass any\n *   order — BLS aggregation is commutative, so the (order-independent) aggregate `blsSig` still matches\n *   the sorted ids. Duplicate ids throw (a valid M-of-N aggregate has distinct signers).\n * - `blsSig` is a 256-byte uncompressed G2 point in EIP-2537 layout (see {@link encodeG2Point}).\n * - `messagePoint` is NOT attached (issue #45): the verifier recomputes\n *   `hashToG2(userOpHash)` on-chain. Do NOT pass `messagePoint`/`mpSig`.\n *\n * @module\n */\n\n/** DVT account-signature tier byte: P256 primary + ≥threshold BLS aggregate (DVT co-sign). */\nexport const DVT_TIER_T2 = 0x04 as const;\n/** DVT account-signature tier byte: T2 + a trailing 65-byte guardian ECDSA signature. */\nexport const DVT_TIER_T3 = 0x05 as const;\n/** A DVT account-signature tier byte. */\nexport type DVTTier = typeof DVT_TIER_T2 | typeof DVT_TIER_T3;\n\n/**\n * Account-signature algId byte for the `ALG_BLS` \"legacy triple\": a DVT BLS aggregate co-sign\n * PLUS a trailing owner-ECDSA factor (airaccount-contract `_validateTripleSignature`). Note this\n * is NOT a BLS-only path — the contract requires the owner signature too.\n */\nexport const ALG_BLS = 0x01 as const;\n\n/** Byte length of a BLS12-381 G2 point in EIP-2537 layout (4 × 64-byte slots). */\nconst G2_EIP2537_LENGTH = 256;\n/** Byte length of a compressed (zkcrypto) BLS12-381 G2 point. */\nconst G2_COMPRESSED_LENGTH = 96;\n/** Byte length of an uncompressed (zkcrypto) BLS12-381 G2 point. */\nconst G2_UNCOMPRESSED_LENGTH = 192;\n/** Byte length of each `bytes32` nodeId. */\nconst NODE_ID_LENGTH = 32;\n/** Byte length of an Fp coordinate within an EIP-2537 64-byte slot (48-byte big-endian, 16-byte left pad). */\nconst FP_BYTES = 48;\n/** EIP-2537 byte offsets for the four G2 Fp coordinates (x.c0, x.c1, y.c0, y.c1). */\nconst G2_FP_OFFSETS = [16, 80, 144, 208] as const;\n/** Length of a guardian ECDSA signature (r(32) + s(32) + v(1)). */\nconst GUARDIAN_SIG_LENGTH = 65;\n\n/**\n * Write a BLS12-381 Fp coordinate as a 48-byte big-endian value, right-aligned at\n * `offset` within a 64-byte EIP-2537 slot (the leading 16 bytes stay zero).\n */\nfunction writeFp(out: Uint8Array, offset: number, value: bigint): void {\n    const hex = value.toString(16).padStart(FP_BYTES * 2, '0');\n    if (hex.length > FP_BYTES * 2) {\n        throw new Error('encodeG2Point: Fp coordinate exceeds 48 bytes (point is not a valid BLS12-381 element)');\n    }\n    for (let i = 0; i < FP_BYTES; i++) {\n        out[offset + i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n    }\n}\n\n/**\n * Produce the canonical 256-byte EIP-2537 G2 layout for a BLS aggregate signature,\n * byte-identical to the DVT node's `encodeG2Point` (YetAnotherAA-Validator\n * `src/utils/bls.util.ts`) and to what the contract pairs over.\n *\n * Layout: `x.c0 @ 16 / x.c1 @ 80 / y.c0 @ 144 / y.c1 @ 208`, each Fp a 48-byte\n * big-endian value right-aligned in its 64-byte slot (16 leading zero bytes).\n *\n * Accepts the signature in three forms:\n * - **256-byte EIP-2537** (what the node already emits): validated and passed through.\n * - **96-byte compressed** / **192-byte uncompressed** zkcrypto G2: re-packed via\n *   `@noble/curves` (parse → affine → EIP-2537 slots).\n *\n * @param blsSig The aggregate BLS G2 signature (hex or bytes).\n * @returns The 256-byte EIP-2537 G2 point as hex.\n */\nexport function encodeG2Point(blsSig: Hex | Uint8Array): Hex {\n    const bytes = typeof blsSig === 'string' ? toBytes(blsSig) : blsSig;\n\n    if (bytes.length === G2_EIP2537_LENGTH) {\n        // Pass-through: the node already emits this layout. Validate the 16-byte zero\n        // pad at the head of each 64-byte slot so a mis-shaped 256-byte blob (e.g. a\n        // non-EIP-2537 encoding of the same total length) is rejected, not silently sent.\n        for (const off of [0, 64, 128, 192]) {\n            for (let i = 0; i < 16; i++) {\n                if (bytes[off + i] !== 0) {\n                    throw new Error(\n                        `encodeG2Point: 256-byte input is not valid EIP-2537 (non-zero padding at byte ${off + i}; ` +\n                        `each 64-byte slot must start with 16 zero bytes)`\n                    );\n                }\n            }\n        }\n        return toHex(bytes);\n    }\n\n    if (bytes.length === G2_COMPRESSED_LENGTH || bytes.length === G2_UNCOMPRESSED_LENGTH) {\n        // Re-pack a zkcrypto-serialized G2 point into the EIP-2537 slot layout.\n        const point = bls.G2.ProjectivePoint.fromHex(bytes);\n        const affine = point.toAffine();\n        const out = new Uint8Array(G2_EIP2537_LENGTH);\n        writeFp(out, G2_FP_OFFSETS[0], affine.x.c0);\n        writeFp(out, G2_FP_OFFSETS[1], affine.x.c1);\n        writeFp(out, G2_FP_OFFSETS[2], affine.y.c0);\n        writeFp(out, G2_FP_OFFSETS[3], affine.y.c1);\n        return toHex(out);\n    }\n\n    throw new Error(\n        `encodeG2Point: unexpected BLS signature length ${bytes.length} bytes ` +\n        `(expected 256 EIP-2537, 96 compressed, or 192 uncompressed G2)`\n    );\n}\n\n/**\n * Sort nodeIds STRICTLY ASCENDING (by 32-byte big-endian value) for the BLS aggregation wire (#274).\n *\n * The DVT-unification validator (algId 0x01, airaccount-contract v0.27.0 / YetAnotherAA-Validator #170)\n * rejects unordered or duplicate nodeIds: a single node could otherwise submit `[nid, nid, …]` + k·sig to\n * fake an M-of-N quorum. Strictly-increasing ⇒ dedup, matching SP BLSAggregator's ordered signerMask.\n *\n * BLS aggregation is commutative (Σ sig / Σ pubkey are order-independent), so reordering the ids does NOT\n * change the aggregate signature — this only fixes the WIRE order. A duplicate nodeId is a malformed\n * aggregate → throw (rather than silently dropping an id whose signature is already summed in).\n */\nexport function sortNodeIdsAscending(nodeIds: readonly Hex[]): Hex[] {\n    const sorted = [...nodeIds].sort((a, b) => {\n        const av = BigInt(a);\n        const bv = BigInt(b);\n        return av < bv ? -1 : av > bv ? 1 : 0;\n    });\n    for (let i = 1; i < sorted.length; i++) {\n        if (BigInt(sorted[i]) === BigInt(sorted[i - 1])) {\n            throw new Error(\n                `sortNodeIdsAscending: duplicate nodeId ${sorted[i]} — a valid M-of-N BLS aggregate has strictly-ascending, distinct nodeIds (#274)`\n            );\n        }\n    }\n    return sorted;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────────────────────\n// CC-98 / CC-103 — per-proposal COMMITTEE framing of the BLS block\n// ─────────────────────────────────────────────────────────────────────────────────────────────\n\n/**\n * One committee signer's membership proof, accompanying its share of the aggregate BLS signature.\n *\n * `slot` and `merkleProof` authenticate `nodeId` against the FROZEN committee set root\n * `setRoot[e-1]` held by `AAStarCommitteeValidator`. They are NOT signed over — the BLS message is\n * still `bytes(userOpHash)` exactly as in legacy (authoritative: CC-103, dvt from\n * `AAStarValidator.sol` + `bls.util.ts`; DST `BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_`).\n */\nexport interface CommitteeSigner {\n    /** `bytes32` node id (`keccak256(EIP-2537 G1 pubkey)`). */\n    nodeId: Hex;\n    /** Leaf index of `nodeId` in the frozen committee set. */\n    slot: bigint | number;\n    /** `TREE_DEPTH` sibling hashes, leaf→root order. Length must equal the validator's TREE_DEPTH. */\n    merkleProof: readonly Hex[];\n}\n\n/**\n * The validator's Merkle tree depth. `AAStarCommitteeValidator.TREE_DEPTH` is a `public constant`\n * = 14, giving `perSigner = 64 + 14*32 = 512`. Exported only as the DEFAULT for offline/test use:\n * production callers should read `TREE_DEPTH()` from the mounted validator and pass it through, so\n * a depth change upstream does not silently produce mis-shaped payloads here (CC-103 Q4 — raised by\n * KMS, endorsed by airaccount-contract, accepted by dvt).\n */\nexport const COMMITTEE_TREE_DEPTH_DEFAULT = 14 as const;\n\n/** Byte length of one committee signer entry: `nodeId(32) ‖ slot(32) ‖ proof(depth×32)`. */\nexport function committeePerSignerLength(treeDepth: number = COMMITTEE_TREE_DEPTH_DEFAULT): number {\n    if (!Number.isInteger(treeDepth) || treeDepth <= 0) {\n        throw new Error(`committeePerSignerLength: treeDepth must be a positive integer, got ${treeDepth}`);\n    }\n    return 2 * NODE_ID_LENGTH + treeDepth * NODE_ID_LENGTH;\n}\n\n/**\n * Sentinel returned by `AAStarCommitteeValidator.requiredQuorum()` when committee validation cannot\n * be satisfied at all — `epochLength == 0` (committee off) or the `e-1` snapshot is missing/stale.\n *\n * NOT documented in the CC-103 wire spec, which describes `requiredQuorum()` only as `⌈2·m_e/3⌉`;\n * found by reading it back on-chain (it returned `type(uint256).max` on the live validator) and\n * confirmed in `AAStarCommitteeValidator.sol:385`. A caller that compares `k >= requiredQuorum()`\n * without special-casing this can never pass, so {@link assertCommitteeQuorum} rejects it with a\n * message naming the real cause instead of an impossible-quorum error.\n */\nexport const COMMITTEE_QUORUM_UNAVAILABLE = (1n << 256n) - 1n;\n\n/**\n * Guard the collected signer count against the validator's live quorum.\n *\n * @param signerCount Number of committee signers whose partials are in the aggregate.\n * @param requiredQuorum Value read from `AAStarCommitteeValidator.requiredQuorum()`.\n */\nexport function assertCommitteeQuorum(signerCount: number, requiredQuorum: bigint): void {\n    if (requiredQuorum === COMMITTEE_QUORUM_UNAVAILABLE) {\n        throw new Error(\n            'assertCommitteeQuorum: validator returned the fail-closed sentinel type(uint256).max — committee ' +\n            'validation cannot succeed right now. Either committee mode is off (epochLength == 0) or the ' +\n            'previous epoch has no usable pinned snapshot (needs snapshotEpoch()). Do not submit a committee ' +\n            'payload until requiredQuorum() returns a real value.'\n        );\n    }\n    if (requiredQuorum === 0n) {\n        throw new Error('assertCommitteeQuorum: requiredQuorum() returned 0, which is never a valid quorum');\n    }\n    if (BigInt(signerCount) < requiredQuorum) {\n        throw new Error(\n            `assertCommitteeQuorum: only ${signerCount} committee signer(s) collected, validator requires ` +\n            `${requiredQuorum} — aggregate would be rejected on-chain`\n        );\n    }\n}\n\n/**\n * Encode the committee-framed BLS block:\n * ```\n * [nodeIdsLength(32)][ (nodeId(32) ‖ slot(32) ‖ merkleProof(depth×32)) × k ][ blsSig(256) ]\n * ```\n * versus the legacy block `[nodeIdsLength(32)][ nodeId(32) × k ][ blsSig(256) ]`.\n *\n * `nodeIdsLength` stays the SIGNER COUNT `k` (not a byte length) and stays in the same position, so\n * the two framings differ only in the per-signer stride — which is why the account must decide\n * legacy-vs-committee from `committeeValidator.committeeActive()` rather than from the payload\n * shape (the shape-collision that CC-103 calls out as the flip-order attack root).\n *\n * **`accountId` is never included.** The account prepends `address(this)` itself before calling\n * `validate()`; a submitter-supplied `accountId` would let an attacker shop for an account whose\n * committee draw favours their own nodes, breaking the 2/3 assumption outright (CC-103 §二, \"命门 B2\").\n *\n * Signers are emitted in STRICTLY ASCENDING `nodeId` order, carrying each signer's `slot`/`proof`\n * with it, for the same reason legacy sorts ids (#274).\n */\nexport function encodeCommitteeBLSBlock(\n    signers: readonly CommitteeSigner[],\n    blsSig: Hex | Uint8Array,\n    treeDepth: number = COMMITTEE_TREE_DEPTH_DEFAULT\n): Hex {\n    if (signers.length === 0) {\n        throw new Error('encodeCommitteeBLSBlock: signers must be a non-empty list');\n    }\n    signers.forEach((s, i) => {\n        if (!isHex(s.nodeId) || size(s.nodeId) !== NODE_ID_LENGTH) {\n            throw new Error(`encodeCommitteeBLSBlock: signers[${i}].nodeId must be a 32-byte hex value, got ${s.nodeId}`);\n        }\n        if (s.merkleProof.length !== treeDepth) {\n            throw new Error(\n                `encodeCommitteeBLSBlock: signers[${i}].merkleProof has ${s.merkleProof.length} element(s), ` +\n                `validator TREE_DEPTH is ${treeDepth} — the on-chain _verifyMerkle rejects any other length`\n            );\n        }\n        s.merkleProof.forEach((p, j) => {\n            if (!isHex(p) || size(p) !== NODE_ID_LENGTH) {\n                throw new Error(`encodeCommitteeBLSBlock: signers[${i}].merkleProof[${j}] must be a 32-byte hex value`);\n            }\n        });\n        const slot = BigInt(s.slot);\n        if (slot < 0n || slot >= 1n << BigInt(treeDepth)) {\n            throw new Error(\n                `encodeCommitteeBLSBlock: signers[${i}].slot ${slot} is outside [0, 2^${treeDepth}) — ` +\n                `a slot that wide cannot address a leaf of a depth-${treeDepth} tree`\n            );\n        }\n    });\n\n    // Same ordering rule as legacy (#274): strictly ascending, distinct. sortNodeIdsAscending throws\n    // on duplicates, so run the ids through it and then reorder the full entries to match.\n    const order = sortNodeIdsAscending(signers.map((s) => s.nodeId));\n    const byId = new Map(signers.map((s) => [BigInt(s.nodeId), s]));\n    const sorted = order.map((id) => byId.get(BigInt(id))!);\n\n    const parts: Hex[] = [numberToHex(sorted.length, { size: 32 })];\n    for (const s of sorted) {\n        parts.push(s.nodeId, numberToHex(BigInt(s.slot), { size: 32 }), ...s.merkleProof);\n    }\n    parts.push(encodeG2Point(blsSig));\n    return concat(parts);\n}\n\n/** Validate that every nodeId is a 32-byte hex value, then return them STRICTLY ASCENDING (#274). */\nfunction validateNodeIds(nodeIds: Hex[], fn: string): Hex[] {\n    if (nodeIds.length === 0) {\n        throw new Error(`${fn}: nodeIds must be a non-empty list of bytes32 IDs`);\n    }\n    nodeIds.forEach((id, i) => {\n        if (!isHex(id) || size(id) !== NODE_ID_LENGTH) {\n            throw new Error(`${fn}: nodeId[${i}] must be a 32-byte (bytes32) hex value, got ${id}`);\n        }\n    });\n    // #274: the v0.27.0 validator requires strictly-ascending nodeIds on the wire. BLS aggregation is\n    // commutative, so sorting here does not change the aggregate signature the ids accompany.\n    return sortNodeIdsAscending(nodeIds);\n}\n\n/**\n * Encode the VERIFIER-LEVEL proof passed to `AAStarBLSAlgorithm.validate`:\n * `[nodeId_1(32)…nodeId_N(32)][blsSig(256)]` — NO `nodeIdsLength` prefix (the contract\n * derives `nodeCount = (sig.length - 256) / 32`).\n *\n * `nodeIds` order MUST equal the nodes' signing/aggregation order.\n *\n * @param nodeIds Explicit `bytes32` node IDs of the contributing signers, in order.\n * @param blsSig The aggregate BLS G2 signature (256-byte EIP-2537, or 96/192-byte zkcrypto).\n */\nexport function encodeDVTVerifierProof(nodeIds: Hex[], blsSig: Hex | Uint8Array): Hex {\n    const ids = validateNodeIds(nodeIds, 'encodeDVTVerifierProof');\n    const sig = encodeG2Point(blsSig);\n    return concat([...ids, sig]);\n}\n\n/** Normalize a P256 primary signature to a 64-byte `r‖s` hex value. */\nfunction normalizeP256(p256: { r: Hex; s: Hex } | Hex): Hex {\n    if (typeof p256 === 'string') {\n        if (!isHex(p256) || size(p256) !== 64) {\n            throw new Error('encodeDVTAccountSignature: p256 bytes form must be a 64-byte (r‖s) hex value');\n        }\n        return p256;\n    }\n    if (!isHex(p256.r) || size(p256.r) !== 32) {\n        throw new Error('encodeDVTAccountSignature: p256.r must be a 32-byte hex value');\n    }\n    if (!isHex(p256.s) || size(p256.s) !== 32) {\n        throw new Error('encodeDVTAccountSignature: p256.s must be a 32-byte hex value');\n    }\n    return concat([p256.r, p256.s]);\n}\n\n/** Parameters for {@link encodeDVTAccountSignature}. */\nexport interface DVTAccountSignatureParams {\n    /** Tier byte: {@link DVT_TIER_T2} (0x04) or {@link DVT_TIER_T3} (0x05). */\n    tier: DVTTier;\n    /** P256 primary signature, as `{ r, s }` (each 32 bytes) or a 64-byte `r‖s` hex value. */\n    p256: { r: Hex; s: Hex } | Hex;\n    /**\n     * Explicit `bytes32` node IDs of the contributing signers. LEGACY framing\n     * (`committeeActive() == false`). Mutually exclusive with {@link committeeSigners}.\n     */\n    nodeIds?: Hex[];\n    /**\n     * COMMITTEE framing (`committeeActive() == true`, CC-98/CC-103): each signer carries its `slot`\n     * and Merkle proof against the frozen set root. Mutually exclusive with {@link nodeIds}.\n     */\n    committeeSigners?: readonly CommitteeSigner[];\n    /** Validator `TREE_DEPTH()`. Read it on-chain; defaults to {@link COMMITTEE_TREE_DEPTH_DEFAULT}. */\n    treeDepth?: number;\n    /** Aggregate BLS G2 signature (256-byte EIP-2537, or 96/192-byte zkcrypto). */\n    blsSig: Hex | Uint8Array;\n    /** REQUIRED for T3 (0x05): the trailing 65-byte guardian ECDSA signature. Forbidden for T2. */\n    guardianSig?: Hex;\n}\n\n/**\n * Build the BLS block for whichever framing the caller supplied, enforcing that exactly one is.\n *\n * Legacy   : `[nodeIdsLength(32)][ nodeId(32) × k ][ blsSig(256) ]`\n * Committee: `[nodeIdsLength(32)][ (nodeId ‖ slot ‖ proof)(perSigner) × k ][ blsSig(256) ]`\n */\nfunction buildBLSBlock(\n    fn: string,\n    nodeIds: Hex[] | undefined,\n    committeeSigners: readonly CommitteeSigner[] | undefined,\n    blsSig: Hex | Uint8Array,\n    treeDepth?: number\n): Hex {\n    if (nodeIds !== undefined && committeeSigners !== undefined) {\n        throw new Error(\n            `${fn}: pass either nodeIds (legacy) or committeeSigners (committee), not both — the account picks ` +\n            `its framing from committeeActive(), so an ambiguous call would encode for the wrong mode`\n        );\n    }\n    if (committeeSigners !== undefined) {\n        return encodeCommitteeBLSBlock(committeeSigners, blsSig, treeDepth ?? COMMITTEE_TREE_DEPTH_DEFAULT);\n    }\n    if (nodeIds === undefined) {\n        throw new Error(`${fn}: must pass nodeIds (legacy framing) or committeeSigners (committee framing)`);\n    }\n    const ids = validateNodeIds(nodeIds, fn);\n    return concat([numberToHex(ids.length, { size: 32 }), ...ids, encodeG2Point(blsSig)]);\n}\n\n/**\n * Encode the ACCOUNT-LEVEL combined signature that goes into\n * `PackedUserOperation.signature`, per airaccount-contract #110:\n * ```\n * T2: [0x04][P256(64)][nodeIdsLength(32)][nodeIds(N×32)][blsSig(256)]\n * T3: [0x05][P256(64)][nodeIdsLength(32)][nodeIds(N×32)][blsSig(256)][guardianECDSA(65)]\n * ```\n * `nodeIdsLength` is a 32-byte big-endian `uint256` count of `nodeIds`.\n */\nexport function encodeDVTAccountSignature(params: DVTAccountSignatureParams): Hex {\n    const { tier, p256, nodeIds, committeeSigners, treeDepth, blsSig, guardianSig } = params;\n\n    if (tier !== DVT_TIER_T2 && tier !== DVT_TIER_T3) {\n        throw new Error(`encodeDVTAccountSignature: tier must be 0x04 (T2) or 0x05 (T3), got ${tier}`);\n    }\n\n    const tierByte = numberToHex(tier, { size: 1 });\n    const p256Bytes = normalizeP256(p256);\n    const blsBlock = buildBLSBlock('encodeDVTAccountSignature', nodeIds, committeeSigners, blsSig, treeDepth);\n\n    if (tier === DVT_TIER_T3) {\n        if (guardianSig === undefined || !isHex(guardianSig) || size(guardianSig) !== GUARDIAN_SIG_LENGTH) {\n            throw new Error('encodeDVTAccountSignature: T3 (0x05) requires a 65-byte guardian ECDSA signature');\n        }\n        return concat([tierByte, p256Bytes, blsBlock, guardianSig]);\n    }\n\n    // T2 (0x04): no guardian segment.\n    if (guardianSig !== undefined) {\n        throw new Error('encodeDVTAccountSignature: T2 (0x04) must not carry a guardian signature — use tier 0x05 for T3');\n    }\n    return concat([tierByte, p256Bytes, blsBlock]);\n}\n\n/** Parameters for {@link encodeBLSAccountSignature}. */\nexport interface BLSAccountSignatureParams {\n    /** Explicit `bytes32` node IDs — LEGACY framing. Mutually exclusive with {@link committeeSigners}. */\n    nodeIds?: Hex[];\n    /** COMMITTEE framing (CC-98/CC-103). Mutually exclusive with {@link nodeIds}. */\n    committeeSigners?: readonly CommitteeSigner[];\n    /** Validator `TREE_DEPTH()`. Read it on-chain; defaults to {@link COMMITTEE_TREE_DEPTH_DEFAULT}. */\n    treeDepth?: number;\n    /** Aggregate BLS G2 signature (256-byte EIP-2537, or 96/192-byte zkcrypto). */\n    blsSig: Hex | Uint8Array;\n    /**\n     * The trailing 65-byte OWNER ECDSA signature over `toEthSignedMessageHash(userOpHash)`\n     * (EIP-191). The contract recovers it and requires `recovered == owner`.\n     */\n    ownerSig: Hex;\n}\n\n/**\n * Encode the ACCOUNT-LEVEL `ALG_BLS` (0x01) signature that goes into\n * `PackedUserOperation.signature` for an `EntryPoint.handleOps` BLS UserOp, per\n * airaccount-contract `AAStarAirAccountBase._validateTripleSignature`:\n * ```\n * [0x01][nodeIdsLength(32)][nodeIds(N×32)][blsSig(256)][ownerECDSA(65)]\n * ```\n * `nodeIdsLength` is a 32-byte big-endian `uint256` count. The BLS payload `[nodeIds][blsSig]`\n * (no length prefix) is the same blob {@link encodeDVTVerifierProof} hands to the verifier's\n * `validate(userOpHash, …)`; the account additionally binds the owner ECDSA over the\n * eth-signed `userOpHash`. (So `ALG_BLS` is a 2-factor BLS+owner path, not BLS-only —\n * it is distinct from the verifier-level `validate` which checks the aggregate alone.)\n */\nexport function encodeBLSAccountSignature(params: BLSAccountSignatureParams): Hex {\n    const { nodeIds, committeeSigners, treeDepth, blsSig, ownerSig } = params;\n    if (!isHex(ownerSig) || size(ownerSig) !== GUARDIAN_SIG_LENGTH) {\n        throw new Error('encodeBLSAccountSignature: ownerSig must be a 65-byte ECDSA signature (r‖s‖v)');\n    }\n    const algByte = numberToHex(ALG_BLS, { size: 1 });\n    const blsBlock = buildBLSBlock('encodeBLSAccountSignature', nodeIds, committeeSigners, blsSig, treeDepth);\n    return concat([algByte, blsBlock, ownerSig]);\n}\n","import { bls12_381 as bls } from '@noble/curves/bls12-381';\nimport { type Hex, isHex, keccak256, size, toBytes, toHex } from 'viem';\nimport { BLS_POP_DST } from './hashToField.js';\nimport { encodeG2Point } from './dvtWire.js';\n\n/**\n * DVT node registration Proof-of-Possession (PoP) builder.\n *\n * A prospective DVT operator proves knowledge of the BLS secret key behind its G1 public\n * key before {@link https://github.com/AAStarCommunity/YetAnotherAA-Validator | AAStarBLSAlgorithm}\n * (source `AAStarValidator.sol`, the DVT validator, Sepolia `0x539B9681…`) will bind\n * `nodeId = keccak256(publicKey)` to `msg.sender` via `registerWithProof(publicKey, popPoint, popSig)`\n * (YetAnotherAA-Validator #165, staked-registration path — caller must hold `ROLE_DVT` + stake).\n *\n * ## What the contract checks\n *\n * `_verifyPoP` runs a single pairing product on the EIP-2537 precompile:\n *\n * ```\n *   e(-publicKey, popPoint) · e(G1_generator, popSig) == 1\n *   ⇔ e(G1_generator, popSig) == e(publicKey, popPoint)\n * ```\n *\n * With `publicKey = sk · G1_generator` this holds **iff** `popSig = sk · popPoint` — i.e. the\n * registrant knows `sk`. NOTE: the check is a *proof of knowledge of `sk`*, NOT a signature over a\n * fixed message — it passes for ANY `popPoint` as long as `popSig = sk · popPoint`. The contract does\n * NOT recompute `popPoint` from the pubkey, so the message hashed into `popPoint` is a convention, not\n * a consensus constant. We follow the RFC PoP convention (`popPoint = hashToCurve(publicKey, POP_DST)`)\n * for determinism and cross-tool legibility; interop does not depend on it.\n *\n * Rogue-key defences that DO matter (enforced on-chain): `nodeId = keccak256(publicKey)` (no\n * caller-chosen id → no squatting), and point-at-infinity rejection on all three operands (an\n * infinity operand makes `e(_, ∞)=1`, passing the pairing with no secret known).\n *\n * @module\n */\n\n/** Byte length of a BLS12-381 G1 point in EIP-2537 layout (2 × 64-byte slots). */\nconst G1_EIP2537_LENGTH = 128;\n/** Fp coordinate width: 48-byte big-endian, right-aligned in a 64-byte slot (16-byte zero pad). */\nconst FP_BYTES = 48;\n/** EIP-2537 byte offsets for the two G1 Fp coordinates (x @ slot 0, y @ slot 1). */\nconst G1_FP_OFFSETS = [16, 80] as const;\n/** BLS12-381 scalar field order r — valid secret keys are in [1, r-1]. */\nconst BLS_CURVE_ORDER = bls.params.r;\n\n/** Write a 48-byte big-endian Fp coordinate right-aligned at `offset` in a 64-byte EIP-2537 slot. */\nfunction writeFp(out: Uint8Array, offset: number, value: bigint): void {\n    const hex = value.toString(16).padStart(FP_BYTES * 2, '0');\n    if (hex.length > FP_BYTES * 2) {\n        throw new Error('encodeG1Point: Fp coordinate exceeds 48 bytes (point is not a valid BLS12-381 element)');\n    }\n    for (let i = 0; i < FP_BYTES; i++) {\n        out[offset + i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n    }\n}\n\n/**\n * Encode a BLS12-381 G1 point into the canonical 128-byte EIP-2537 layout the contract stores as\n * `publicKey` (`x @ 16`, `y @ 80`, each a 48-byte big-endian Fp right-aligned in a 64-byte slot).\n * Accepts a G1 point in EIP-2537 (128-byte, validated pass-through) or zkcrypto compressed (48-byte)\n * / uncompressed (96-byte) form.\n */\nexport function encodeG1Point(pubkey: Hex | Uint8Array): Hex {\n    const bytes = typeof pubkey === 'string' ? toBytes(pubkey) : pubkey;\n\n    if (bytes.length === G1_EIP2537_LENGTH) {\n        // Pass-through; validate the 16-byte zero pad heading each 64-byte slot so a mis-shaped\n        // 128-byte blob is rejected, not silently registered.\n        for (const off of [0, 64]) {\n            for (let i = 0; i < 16; i++) {\n                if (bytes[off + i] !== 0) {\n                    throw new Error(\n                        `encodeG1Point: 128-byte input is not valid EIP-2537 (non-zero padding at byte ${off + i}; ` +\n                        `each 64-byte slot must start with 16 zero bytes)`\n                    );\n                }\n            }\n        }\n        return toHex(bytes);\n    }\n\n    if (bytes.length === 48 || bytes.length === 96) {\n        const affine = bls.G1.ProjectivePoint.fromHex(bytes).toAffine();\n        const out = new Uint8Array(G1_EIP2537_LENGTH);\n        writeFp(out, G1_FP_OFFSETS[0], affine.x);\n        writeFp(out, G1_FP_OFFSETS[1], affine.y);\n        return toHex(out);\n    }\n\n    throw new Error(\n        `encodeG1Point: unexpected G1 length ${bytes.length} bytes (expected 128 EIP-2537, 48 compressed, or 96 uncompressed)`\n    );\n}\n\n/** The complete tuple `registerWithProof(publicKey, popPoint, popSig)` consumes, plus the derived nodeId. */\nexport interface DvtPop {\n    /** G1 public key in 128-byte EIP-2537 layout — the `publicKey` argument. */\n    publicKey: Hex;\n    /** `hashToCurve(publicKey, POP_DST)` as a 256-byte EIP-2537 G2 point — the `popPoint` argument. */\n    popPoint: Hex;\n    /** `sk · popPoint` as a 256-byte EIP-2537 G2 point — the `popSig` argument. */\n    popSig: Hex;\n    /** `keccak256(publicKey)` — the nodeId the contract will derive and bind (NOT caller-chosen). */\n    nodeId: Hex;\n}\n\n/**\n * Build the Proof-of-Possession tuple for {@link https://github.com/AAStarCommunity/YetAnotherAA-Validator | AAStarBLSAlgorithm}'s\n * `registerWithProof(publicKey, popPoint, popSig)` from a BLS12-381 secret key.\n *\n * The returned `nodeId` (`keccak256(publicKey)`) is what the contract binds to `msg.sender`; surface it\n * to the operator so the UI can show/track it before the tx lands.\n *\n * @param blsSecretKey 32-byte BLS12-381 secret scalar (hex), in [1, r-1].\n * @throws if the secret key is out of range (0 or ≥ curve order).\n */\nexport function buildDvtPop(blsSecretKey: Hex): DvtPop {\n    // Require a canonical 32-byte hex scalar: the production Rust signer rejects non-32-byte keys\n    // (signer/src/bls.rs), so accepting a short hex like `0x1` here would diverge from it.\n    if (!isHex(blsSecretKey) || size(blsSecretKey) !== 32) {\n        throw new Error('buildDvtPop: BLS secret key must be a 32-byte hex value');\n    }\n    const sk = BigInt(blsSecretKey);\n    if (sk <= 0n || sk >= BLS_CURVE_ORDER) {\n        throw new Error('buildDvtPop: BLS secret key must be a scalar in [1, r-1] (r = BLS12-381 curve order)');\n    }\n\n    // publicKey = sk · G1_generator, serialized EIP-2537 (128 bytes) — matches on-chain storage.\n    const pubPoint = bls.G1.ProjectivePoint.BASE.multiply(sk);\n    const publicKey = encodeG1Point(pubPoint.toRawBytes(false));\n    const nodeId = keccak256(publicKey);\n\n    // popPoint = hashToCurve(publicKey, POP_DST); popSig = sk · popPoint. See module doc: the on-chain\n    // pairing accepts any popPoint with popSig = sk · popPoint, so message choice is a convention only.\n    // Serialize via dvtWire.encodeG2Point (the c0-first EIP-2537 layout the pairing precompile expects,\n    // golden-vector-verified against the production DVT signer — NOT the c1-first IETF/blst order).\n    const popPointG2 = bls.G2.hashToCurve(toBytes(publicKey), { DST: BLS_POP_DST }) as InstanceType<\n        typeof bls.G2.ProjectivePoint\n    >;\n    const popSigG2 = popPointG2.multiply(sk);\n\n    return {\n        publicKey,\n        popPoint: encodeG2Point(popPointG2.toRawBytes(false)),\n        popSig: encodeG2Point(popSigG2.toRawBytes(false)),\n        nodeId,\n    };\n}\n\n/**\n * The deterministic PoP point for a public key: `hashToCurve(publicKey, POP_DST)` in the 256-byte\n * c0-first EIP-2537 G2 layout — the SAME value {@link buildDvtPop} puts in `popPoint`, but computed with\n * **no secret key**. Use it to CROSS-CHECK a `popPoint` produced elsewhere (e.g. a KMS-TEE `/pop` response\n * for a key-less node) before trusting it: `popPoint` is a public deterministic function of `publicKey`, so\n * a client can recompute and reject a mismatch, while the on-chain `_verifyPoP` pairing still gates `popSig`.\n *\n * @param publicKey G1 public key — 128-byte EIP-2537, 48-byte compressed, or 96-byte uncompressed.\n */\nexport function dvtPopPoint(publicKey: Hex | Uint8Array): Hex {\n    const pk = encodeG1Point(publicKey);\n    const g2 = bls.G2.hashToCurve(toBytes(pk), { DST: BLS_POP_DST }) as InstanceType<typeof bls.G2.ProjectivePoint>;\n    return encodeG2Point(g2.toRawBytes(false));\n}\n\n/** The nodeId the DVT validator derives and binds: `keccak256(publicKey)` (128-byte EIP-2537 normalized). */\nexport function dvtNodeId(publicKey: Hex | Uint8Array): Hex {\n    return keccak256(encodeG1Point(publicKey));\n}\n\n/** Decode a 128-byte EIP-2537 G1 point into a validated `@noble` point (throws if off-curve). */\nfunction g1FromEip2537(publicKey: Hex | Uint8Array): InstanceType<typeof bls.G1.ProjectivePoint> {\n    const b = toBytes(encodeG1Point(publicKey));\n    const x = BigInt(toHex(b.slice(16, 64)));\n    const y = BigInt(toHex(b.slice(80, 128)));\n    const p = bls.G1.ProjectivePoint.fromAffine({ x, y });\n    p.assertValidity(); // on-curve + correct subgroup, else throw\n    return p;\n}\n\n/** Decode a 256-byte c0-first EIP-2537 G2 point into a validated `@noble` point (throws if off-curve). */\nfunction g2FromEip2537(point: Hex | Uint8Array, name: string): InstanceType<typeof bls.G2.ProjectivePoint> {\n    const b = toBytes(encodeG2Point(point));\n    const x = bls.fields.Fp2.fromBigTuple([BigInt(toHex(b.slice(16, 64))), BigInt(toHex(b.slice(80, 128)))]);\n    const y = bls.fields.Fp2.fromBigTuple([BigInt(toHex(b.slice(144, 192))), BigInt(toHex(b.slice(208, 256)))]);\n    const p = bls.G2.ProjectivePoint.fromAffine({ x, y });\n    try {\n        p.assertValidity();\n    } catch {\n        throw new Error(`verifyDvtPop: ${name} is not a valid BLS12-381 G2 point`);\n    }\n    return p;\n}\n\n/**\n * Verify a {@link DvtPop} tuple the same way the on-chain `_verifyPoP` pairing does — WITHOUT a secret key:\n * every point is on-curve and non-infinity, and `e(publicKey, popPoint) == e(G1_generator, popSig)` (i.e.\n * `popSig = sk · popPoint` for the `sk` behind `publicKey`). Throws on any failure.\n *\n * Use this to fail fast on a malformed / incorrect PoP obtained from an external signer (e.g. a KMS-TEE\n * `/pop` response) BEFORE spending gas or locking stake, instead of only discovering it at the on-chain\n * register tx. NOTE: this proves knowledge of `sk` for the GIVEN `publicKey` — it does NOT tell you the\n * key belongs to the node you intended (a self-consistent tuple for a DIFFERENT key also passes). Pin the\n * expected `publicKey` separately for that.\n */\nexport function verifyDvtPop(pop: Pick<DvtPop, 'publicKey' | 'popPoint' | 'popSig'>): void {\n    const pk = g1FromEip2537(pop.publicKey);\n    const popPoint = g2FromEip2537(pop.popPoint, 'popPoint');\n    const popSig = g2FromEip2537(pop.popSig, 'popSig');\n    if (\n        pk.equals(bls.G1.ProjectivePoint.ZERO) ||\n        popPoint.equals(bls.G2.ProjectivePoint.ZERO) ||\n        popSig.equals(bls.G2.ProjectivePoint.ZERO)\n    ) {\n        throw new Error('verifyDvtPop: point at infinity (publicKey/popPoint/popSig must be non-infinity)');\n    }\n    const lhs = bls.pairing(pk, popPoint);\n    const rhs = bls.pairing(bls.G1.ProjectivePoint.BASE, popSig);\n    if (!bls.fields.Fp12.eql(lhs, rhs)) {\n        throw new Error('verifyDvtPop: pairing check failed — popSig is not sk·popPoint for publicKey');\n    }\n}\n","import { type Account, type Address, type Hash, type Hex, type PublicClient, type WalletClient, isHex, size } from 'viem';\nimport { AAStarBLSAlgorithmABI } from '../abis/index.js';\nimport { buildDvtPop, type DvtPop } from '../crypto/dvtPop.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n/**\n * A registered DVT node, as returned by the paginated `getRegisteredNodes(offset, limit)` reader.\n */\nexport interface DvtRegisteredNode {\n    /** `bytes32` nodeId = `keccak256(publicKey)`. */\n    nodeId: Hex;\n    /** The node's G1 public key in 128-byte EIP-2537 layout. */\n    publicKey: Hex;\n}\n\n/**\n * Operator-facing actions for the DVT node registry on\n * {@link https://github.com/AAStarCommunity/YetAnotherAA-Validator | AAStarBLSAlgorithm}\n * (source `AAStarValidator.sol`, the DVT validator, Sepolia `0x539B9681…`) — the\n * staked, self-service registration path (YetAnotherAA-Validator #165).\n *\n * The write path is `registerWithProof(publicKey, popPoint, popSig)`, gated on-chain by:\n * `requireStake == true`, the caller holding **ROLE_DVT** stake (checked via the linked\n * GTokenStaking registry), a non-infinity pubkey, a valid Proof-of-Possession, and the derived\n * `nodeId = keccak256(publicKey)` / caller not already bound to a node. Use {@link DvtOperatorActions.register}\n * to build the PoP from a secret key and submit in one call, or {@link DvtOperatorActions.registerWithProof}\n * to submit a pre-built tuple (e.g. when the key lives in an HSM and the PoP is produced elsewhere).\n */\nexport type DvtOperatorActions = {\n    /**\n     * Build the PoP tuple from `blsSecretKey` (via {@link buildDvtPop}) and submit `registerWithProof`.\n     * Returns both the tx `Hash` and the derived `nodeId` so callers can track the binding without\n     * re-deriving it. Requires a WalletClient whose account holds ROLE_DVT stake.\n     */\n    register: (args: { blsSecretKey: Hex, account?: Account | Address }) => Promise<{ hash: Hash, pop: DvtPop }>;\n    /**\n     * Submit a pre-built PoP tuple. ABI: `registerWithProof(bytes publicKey, bytes popPoint, bytes popSig)`.\n     * `publicKey` is a 128-byte EIP-2537 G1 point; `popPoint`/`popSig` are 256-byte EIP-2537 G2 points\n     * (see {@link buildDvtPop} for the construction). State-changing → resolves to the tx `Hash`.\n     */\n    registerWithProof: (args: { publicKey: Hex, popPoint: Hex, popSig: Hex, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Re-derive and cache the aggregated-key set for a node after roster changes.\n     * ABI: `syncNode(bytes32 nodeId)`.\n     */\n    syncNode: (args: { nodeId: Hex, account?: Account | Address }) => Promise<Hash>;\n\n    // ---- reads ----\n    /** `isRegistered(bytes32 nodeId) -> bool`. */\n    isRegistered: (args: { nodeId: Hex }) => Promise<boolean>;\n    /** `nodeOperator(bytes32 nodeId) -> address` — the operator bound to a node (zero if none). */\n    nodeOperator: (args: { nodeId: Hex }) => Promise<Address>;\n    /** `operatorNode(address operator) -> bytes32` — the node an operator owns (zero if none). */\n    operatorNode: (args: { operator: Address }) => Promise<Hex>;\n    /** `registeredKeys(bytes32 nodeId) -> bytes` — the stored 128-byte EIP-2537 G1 pubkey. */\n    registeredKeys: (args: { nodeId: Hex }) => Promise<Hex>;\n    /**\n     * Paginated roster. ABI: `getRegisteredNodes(uint256 offset, uint256 limit) -> (bytes32[], bytes[])`.\n     * Returns `{ nodeId, publicKey }` pairs zipped from the two parallel arrays. The contract reverts\n     * with \"Offset out of bounds\" when `offset >= count` (including an empty validator at offset 0);\n     * this helper reads the count first and returns `[]` for an out-of-range page instead of throwing.\n     */\n    getRegisteredNodes: (args?: { offset?: bigint, limit?: bigint }) => Promise<DvtRegisteredNode[]>;\n    /** `getRegisteredNodeCount() -> uint256` — number of registered nodes. */\n    getRegisteredNodeCount: () => Promise<bigint>;\n    /** `requireStake() -> bool` — whether the staked-registration path is enabled. */\n    requireStake: () => Promise<boolean>;\n    /** `minStake() -> uint256` — the ROLE_DVT stake floor enforced at registration. */\n    minStake: () => Promise<bigint>;\n};\n\nconst ABI = AAStarBLSAlgorithmABI;\n\n/** G1 public key EIP-2537 byte length the contract enforces (`require(publicKey.length == 128)`). */\nconst G1_POINT_LENGTH = 128;\n/** G2 point EIP-2537 byte length the contract enforces on popPoint/popSig (`length == 256`). */\nconst G2_POINT_LENGTH = 256;\n\n/** Assert a hex value is exactly `expected` bytes, matching the contract's on-chain length guards. */\nfunction assertHexLength(value: Hex, expected: number, name: string): void {\n    if (!isHex(value) || size(value) !== expected) {\n        throw new Error(\n            `dvtOperator.registerWithProof: ${name} must be a ${expected}-byte EIP-2537 hex value, ` +\n            `got ${isHex(value) ? `${size(value)} bytes` : 'non-hex'} — the contract reverts on a mismatched length`\n        );\n    }\n}\n\nexport const dvtOperatorActions =\n    (address: Address) =>\n    (client: PublicClient | WalletClient): DvtOperatorActions => ({\n        async register({ blsSecretKey, account }) {\n            try {\n                validateRequired(blsSecretKey, 'blsSecretKey');\n                const pop = buildDvtPop(blsSecretKey);\n                const hash = await (client as any).writeContract({\n                    address,\n                    abi: ABI,\n                    functionName: 'registerWithProof',\n                    args: [pop.publicKey, pop.popPoint, pop.popSig],\n                    account: account as any,\n                    chain: (client as any).chain,\n                });\n                return { hash, pop };\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'register');\n            }\n        },\n\n        async registerWithProof({ publicKey, popPoint, popSig, account }) {\n            try {\n                validateRequired(publicKey, 'publicKey');\n                validateRequired(popPoint, 'popPoint');\n                validateRequired(popSig, 'popSig');\n                // Fail fast on malformed EIP-2537 lengths — the contract's require()s would otherwise\n                // revert on-chain (128-byte G1 pubkey, 256-byte G2 popPoint/popSig).\n                assertHexLength(publicKey, G1_POINT_LENGTH, 'publicKey');\n                assertHexLength(popPoint, G2_POINT_LENGTH, 'popPoint');\n                assertHexLength(popSig, G2_POINT_LENGTH, 'popSig');\n                return await (client as any).writeContract({\n                    address,\n                    abi: ABI,\n                    functionName: 'registerWithProof',\n                    args: [publicKey, popPoint, popSig],\n                    account: account as any,\n                    chain: (client as any).chain,\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'registerWithProof');\n            }\n        },\n\n        async syncNode({ nodeId, account }) {\n            try {\n                validateRequired(nodeId, 'nodeId');\n                return await (client as any).writeContract({\n                    address,\n                    abi: ABI,\n                    functionName: 'syncNode',\n                    args: [nodeId],\n                    account: account as any,\n                    chain: (client as any).chain,\n                });\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'syncNode');\n            }\n        },\n\n        async isRegistered({ nodeId }) {\n            try {\n                validateRequired(nodeId, 'nodeId');\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'isRegistered', args: [nodeId],\n                }) as boolean;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'isRegistered');\n            }\n        },\n\n        async nodeOperator({ nodeId }) {\n            try {\n                validateRequired(nodeId, 'nodeId');\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'nodeOperator', args: [nodeId],\n                }) as Address;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'nodeOperator');\n            }\n        },\n\n        async operatorNode({ operator }) {\n            try {\n                validateAddress(operator, 'operator');\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'operatorNode', args: [operator],\n                }) as Hex;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'operatorNode');\n            }\n        },\n\n        async registeredKeys({ nodeId }) {\n            try {\n                validateRequired(nodeId, 'nodeId');\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'registeredKeys', args: [nodeId],\n                }) as Hex;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'registeredKeys');\n            }\n        },\n\n        async getRegisteredNodes(args) {\n            try {\n                const offset = args?.offset ?? 0n;\n                const limit = args?.limit ?? 100n;\n                // The contract reverts on `offset >= count` (incl. an empty validator at offset 0), so\n                // read the count first and short-circuit an out-of-range page to [] rather than throwing.\n                const count = await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'getRegisteredNodeCount', args: [],\n                }) as bigint;\n                if (offset >= count) return [];\n                const [nodeIds, publicKeys] = await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'getRegisteredNodes', args: [offset, limit],\n                }) as [readonly Hex[], readonly Hex[]];\n                return nodeIds.map((nodeId, i) => ({ nodeId, publicKey: publicKeys[i] }));\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getRegisteredNodes');\n            }\n        },\n\n        async getRegisteredNodeCount() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'getRegisteredNodeCount', args: [],\n                }) as bigint;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'getRegisteredNodeCount');\n            }\n        },\n\n        async requireStake() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'requireStake', args: [],\n                }) as boolean;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'requireStake');\n            }\n        },\n\n        async minStake() {\n            try {\n                return await (client as PublicClient).readContract({\n                    address, abi: ABI, functionName: 'minStake', args: [],\n                }) as bigint;\n            } catch (error) {\n                throw AAStarError.fromViemError(error as Error, 'minStake');\n            }\n        },\n    });\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { PolicyRegistryABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n/**\n * Tri-state result of a validation-time policy read ({@link checkPolicy}).\n * Mirrors `IPolicyRegistry.PolicyDecision` (the on-chain `uint8` enum):\n *   0 ALLOW       — proceed with normal single-signature validation.\n *   1 REQUIRE_DVT — within the hard ceiling but past a configured DVT trigger; the\n *                   consumer MUST additionally verify a >=threshold DVT BLS co-sign.\n *   2 REJECT      — frozen sender, over a hard cap / daily limit, or off-allowlist.\n */\nexport enum PolicyDecision {\n    ALLOW = 0,\n    REQUIRE_DVT = 1,\n    REJECT = 2,\n}\n\n/** Per-(sender, asset) amount policy. Native-unit amounts (no USD oracle). */\nexport type AssetPolicy = {\n    /** Single-tx amount >= this => REQUIRE_DVT; 0 => amount-based trigger DISABLED. */\n    dvtTriggerAmount: bigint;\n    /** Single-tx amount > this => REJECT (enforced only when configured). */\n    perTxHardCap: bigint;\n    /** Cumulative spend over `windowSeconds` => REJECT when exceeded. */\n    dailyLimit: bigint;\n    /** Daily-limit window length in seconds; 0 => DEFAULT_WINDOW (1 day). */\n    windowSeconds: bigint;\n    /** false => no policy for this (sender, asset) => UNRESTRICTED (opt-in). */\n    configured: boolean;\n};\n\n/** Input form of {@link AssetPolicy} for governance setters (no `configured` flag). */\nexport type AssetPolicyInput = {\n    dvtTriggerAmount: bigint;\n    perTxHardCap: bigint;\n    dailyLimit: bigint;\n    /** 0 => DEFAULT_WINDOW (1 day). */\n    windowSeconds: bigint;\n};\n\n/** Per-(sender, target) scope. Selectors are queried via {@link isSelectorAllowed}. */\nexport type ContractScope = {\n    /** target on this sender's call-target allowlist. */\n    allowed: boolean;\n    /** this target always requires DVT co-sign regardless of amount. */\n    requireDVTAlways: boolean;\n    /** max cumulative amount routed to this target per window. */\n    velocityLimit: bigint;\n    /** velocity window length, seconds (0 => no velocity limit). */\n    velocityWindow: bigint;\n    /** false => no scope set for this (sender, target). */\n    configured: boolean;\n};\n\n/** Input form of {@link ContractScope} for governance setters; selectors set as a batch. */\nexport type ContractScopeInput = {\n    allowed: boolean;\n    requireDVTAlways: boolean;\n    velocityLimit: bigint;\n    velocityWindow: bigint;\n    /** selectors to mark allowed for this target (ADDITIVE on `setContractScope`). */\n    selectorAllowlist: Hex[];\n};\n\n/** Sender-keyed cumulative spend counter for one asset/target window. */\nexport type SpendCounter = {\n    /** cumulative native-unit spend in the current window. */\n    spentInWindow: bigint;\n    /** unix timestamp the current window began. */\n    windowStart: bigint;\n};\n\nexport type PolicyRegistryActions = {\n    // ── Validation-time read (cheap view, sender-keyed) ────────────────────────\n    /**\n     * Validation-time policy decision for one intended action. OPT-IN, default-ALLOW:\n     * a sender with nothing configured for (asset, target) is UNRESTRICTED.\n     * @returns decision (see {@link PolicyDecision}) + `remainingDaily` headroom in the\n     *          current window AFTER `amount` would post (`type(uint256).max` when unrestricted).\n     */\n    checkPolicy: (args: { sender: Address, target: Address, asset: Address, amount: bigint, selector: Hex }) => Promise<{ decision: PolicyDecision, remainingDaily: bigint }>;\n\n    // ── Config + counter views ─────────────────────────────────────────────────\n    getAssetPolicy: (args: { sender: Address, asset: Address }) => Promise<AssetPolicy>;\n    getContractScope: (args: { sender: Address, target: Address }) => Promise<ContractScope>;\n    isSelectorAllowed: (args: { sender: Address, target: Address, selector: Hex }) => Promise<boolean>;\n    /** Cumulative native-unit spend + window start for this (sender, asset). */\n    getAssetSpend: (args: { sender: Address, asset: Address }) => Promise<SpendCounter>;\n    isFrozen: (args: { sender: Address }) => Promise<boolean>;\n    isAuthorizedConsumer: (args: { consumer: Address }) => Promise<boolean>;\n\n    // ── Governance state views ──────────────────────────────────────────────────\n    /** AirAccount 2-of-3 RecoveryService allowed to freeze/tighten immediately. */\n    guardian: () => Promise<Address>;\n    /**\n     * The OZ {TimelockController} whose `minDelay` (2 days) gates every loosening.\n     * It is the ONLY address allowed to call the `onlyTimelock` loosen/admin setters\n     * ({@link setAssetPolicy} / {@link setContractScope} / {@link unfreezeSender} /\n     * {@link setGuardian} / {@link setConsumerAuthorization}). Read this to find the\n     * controller through which loosen calls must be scheduled + executed.\n     */\n    timelock: () => Promise<Address>;\n    /** Default daily-limit window length (seconds) used when `windowSeconds == 0`. */\n    DEFAULT_WINDOW: () => Promise<bigint>;\n    /** The ETH sentinel address used as `asset` for native ETH (address(0) is invalid). */\n    ETH_SENTINEL: () => Promise<Address>;\n    version: () => Promise<string>;\n\n    // ── Governance — IMMEDIATE TIGHTEN / FREEZE (guardian OR timelock) ──────────\n    /**\n     * Immediately tighten a (sender, asset) policy. Reverts `NotStrictlyTighter`\n     * unless the new params are <= current on every dimension. Callable by the\n     * guardian or the timelock (`onlyGuardianOrTimelock`) — NO timelock delay.\n     */\n    tightenAssetPolicy: (args: { sender: Address, asset: Address, params: AssetPolicyInput, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Immediately tighten a (sender, target) scope (disallow target, remove selectors,\n     * lower velocity, set requireDVTAlways). Reverts unless strictly tighter.\n     * `onlyGuardianOrTimelock` — NO timelock delay.\n     */\n    tightenContractScope: (args: { sender: Address, target: Address, params: ContractScopeInput, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Immediately freeze `sender`: {@link checkPolicy} returns REJECT for all ops.\n     * `onlyGuardianOrTimelock` (guardian = AirAccount 2-of-3 RecoveryService). Lifting\n     * the freeze is a loosening → {@link unfreezeSender} (timelocked).\n     */\n    freezeSender: (args: { sender: Address, account?: Account | Address }) => Promise<Hash>;\n\n    // ── Governance — TIMELOCKED LOOSEN / ADMIN (onlyTimelock) ───────────────────\n    /**\n     * Set a (sender, asset) policy. `onlyTimelock` — reverts unless `msg.sender ==`\n     * {@link timelock}`()`. There is NO registry-level pending store: the 2-day delay is\n     * the EXTERNAL OZ {TimelockController}'s own `minDelay`. To loosen, governance must\n     * `schedule()` this call on the timelock, wait out the delay, then `execute()` it\n     * (which makes the timelock call back here). Calling this directly with an EOA/owner\n     * key will revert `NotTimelock`. Read {@link timelock} for the controller address and\n     * surface its scheduled-operation ETA (TimelockController.getTimestamp) to callers.\n     */\n    setAssetPolicy: (args: { sender: Address, asset: Address, params: AssetPolicyInput, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Set a (sender, target) scope and ADD the listed selectors (additive union, NOT\n     * replace; remove via {@link tightenContractScope}). `onlyTimelock` — same external\n     * TimelockController gating as {@link setAssetPolicy}; calling directly reverts\n     * `NotTimelock`. Schedule + execute through {@link timelock}.\n     */\n    setContractScope: (args: { sender: Address, target: Address, params: ContractScopeInput, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Lift a freeze on `sender`. Unfreeze is a loosening → `onlyTimelock`; must be\n     * scheduled + executed through the external {@link timelock} controller (2-day delay).\n     * Calling directly reverts `NotTimelock`.\n     */\n    unfreezeSender: (args: { sender: Address, account?: Account | Address }) => Promise<Hash>;\n    /** Set the guardian. `onlyTimelock` — route through {@link timelock}. */\n    setGuardian: (args: { newGuardian: Address, account?: Account | Address }) => Promise<Hash>;\n    /**\n     * Authorize / revoke a staked consumer permitted to call `recordSpend`.\n     * `onlyTimelock` — route through {@link timelock}.\n     */\n    setConsumerAuthorization: (args: { consumer: Address, authorized: boolean, account?: Account | Address }) => Promise<Hash>;\n};\n\n/**\n * Action factory for the SuperPaymaster v5.4 PolicyRegistry (DVT layer-1 account policy).\n *\n * Asymmetric lifecycle (enforced ON-CHAIN — the SDK is only a client and does NOT\n * re-implement the delay):\n *   - IMMEDIATE tighten/freeze: {@link PolicyRegistryActions.tightenAssetPolicy} /\n *     {@link PolicyRegistryActions.tightenContractScope} / {@link PolicyRegistryActions.freezeSender}\n *     (guardian OR timelock).\n *   - TIMELOCKED loosen/unfreeze/admin: {@link PolicyRegistryActions.setAssetPolicy} /\n *     {@link PolicyRegistryActions.setContractScope} / {@link PolicyRegistryActions.unfreezeSender} /\n *     {@link PolicyRegistryActions.setGuardian} / {@link PolicyRegistryActions.setConsumerAuthorization}\n *     — `onlyTimelock`. The 2-day delay is the EXTERNAL OZ TimelockController's `minDelay`;\n *     this registry has NO pending-change store, so callers must schedule/execute through\n *     {@link PolicyRegistryActions.timelock} and read the controller's ETA themselves.\n */\nexport const policyRegistryActions = (address: Address) => (client: PublicClient | WalletClient): PolicyRegistryActions => ({\n    // ── Validation-time read ────────────────────────────────────────────────────\n    async checkPolicy({ sender, target, asset, amount, selector }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(target, 'target');\n            validateAddress(asset, 'asset');\n            validateRequired(amount, 'amount');\n            validateRequired(selector, 'selector');\n            const r = await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'checkPolicy',\n                args: [sender, target, asset, amount, selector]\n            }) as any;\n            // outputs: (uint8 decision, uint256 remainingDaily)\n            return { decision: Number(r[0]) as PolicyDecision, remainingDaily: r[1] as bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'checkPolicy');\n        }\n    },\n\n    // ── Config + counter views ──────────────────────────────────────────────────\n    async getAssetPolicy({ sender, asset }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(asset, 'asset');\n            const r = await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'getAssetPolicy',\n                args: [sender, asset]\n            }) as any;\n            return {\n                dvtTriggerAmount: r.dvtTriggerAmount as bigint,\n                perTxHardCap: r.perTxHardCap as bigint,\n                dailyLimit: r.dailyLimit as bigint,\n                windowSeconds: r.windowSeconds as bigint,\n                configured: r.configured as boolean,\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAssetPolicy');\n        }\n    },\n\n    async getContractScope({ sender, target }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(target, 'target');\n            const r = await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'getContractScope',\n                args: [sender, target]\n            }) as any;\n            return {\n                allowed: r.allowed as boolean,\n                requireDVTAlways: r.requireDVTAlways as boolean,\n                velocityLimit: r.velocityLimit as bigint,\n                velocityWindow: r.velocityWindow as bigint,\n                configured: r.configured as boolean,\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getContractScope');\n        }\n    },\n\n    async isSelectorAllowed({ sender, target, selector }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(target, 'target');\n            validateRequired(selector, 'selector');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'isSelectorAllowed',\n                args: [sender, target, selector]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isSelectorAllowed');\n        }\n    },\n\n    async getAssetSpend({ sender, asset }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(asset, 'asset');\n            const r = await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'getAssetSpend',\n                args: [sender, asset]\n            }) as any;\n            // outputs: (uint128 spentInWindow, uint64 windowStart)\n            return { spentInWindow: r[0] as bigint, windowStart: r[1] as bigint };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAssetSpend');\n        }\n    },\n\n    async isFrozen({ sender }) {\n        try {\n            validateAddress(sender, 'sender');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'isFrozen',\n                args: [sender]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isFrozen');\n        }\n    },\n\n    async isAuthorizedConsumer({ consumer }) {\n        try {\n            validateAddress(consumer, 'consumer');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'isAuthorizedConsumer',\n                args: [consumer]\n            }) as Promise<boolean>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isAuthorizedConsumer');\n        }\n    },\n\n    // ── Governance state views ────────────────────────────────────────────────\n    async guardian() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'guardian',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'guardian');\n        }\n    },\n\n    async timelock() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'timelock',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'timelock');\n        }\n    },\n\n    async DEFAULT_WINDOW() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'DEFAULT_WINDOW',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'DEFAULT_WINDOW');\n        }\n    },\n\n    async ETH_SENTINEL() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'ETH_SENTINEL',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'ETH_SENTINEL');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'version',\n                args: []\n            }) as Promise<string>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    },\n\n    // ── Governance — immediate tighten / freeze ────────────────────────────────\n    async tightenAssetPolicy({ sender, asset, params, account }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(asset, 'asset');\n            validateRequired(params, 'params');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'tightenAssetPolicy',\n                args: [sender, asset, params],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'tightenAssetPolicy');\n        }\n    },\n\n    async tightenContractScope({ sender, target, params, account }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(target, 'target');\n            validateRequired(params, 'params');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'tightenContractScope',\n                args: [sender, target, params],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'tightenContractScope');\n        }\n    },\n\n    async freezeSender({ sender, account }) {\n        try {\n            validateAddress(sender, 'sender');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'freezeSender',\n                args: [sender],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'freezeSender');\n        }\n    },\n\n    // ── Governance — timelocked loosen / admin (onlyTimelock) ──────────────────\n    async setAssetPolicy({ sender, asset, params, account }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(asset, 'asset');\n            validateRequired(params, 'params');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'setAssetPolicy',\n                args: [sender, asset, params],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setAssetPolicy');\n        }\n    },\n\n    async setContractScope({ sender, target, params, account }) {\n        try {\n            validateAddress(sender, 'sender');\n            validateAddress(target, 'target');\n            validateRequired(params, 'params');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'setContractScope',\n                args: [sender, target, params],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setContractScope');\n        }\n    },\n\n    async unfreezeSender({ sender, account }) {\n        try {\n            validateAddress(sender, 'sender');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'unfreezeSender',\n                args: [sender],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'unfreezeSender');\n        }\n    },\n\n    async setGuardian({ newGuardian, account }) {\n        try {\n            validateAddress(newGuardian, 'newGuardian');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'setGuardian',\n                args: [newGuardian],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setGuardian');\n        }\n    },\n\n    async setConsumerAuthorization({ consumer, authorized, account }) {\n        try {\n            validateAddress(consumer, 'consumer');\n            validateRequired(authorized, 'authorized');\n            return await (client as any).writeContract({\n                address,\n                abi: PolicyRegistryABI,\n                functionName: 'setConsumerAuthorization',\n                args: [consumer, authorized],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setConsumerAuthorization');\n        }\n    }\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { TimelockControllerABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n/** The 32-byte zero value used for a Timelock operation with no predecessor. */\nexport const ZERO_BYTES32: Hex = '0x0000000000000000000000000000000000000000000000000000000000000000';\n\n/**\n * A single call to route through a {TimelockController}. `value` defaults to 0 and\n * `predecessor` to {@link ZERO_BYTES32}; `salt` distinguishes otherwise-identical\n * operations and MUST be reused verbatim between schedule and execute (the operation\n * id is derived from all of these — see {@link TimelockControllerActions.hashOperation}).\n */\nexport type TimelockOperation = {\n    target: Address;\n    data: Hex;\n    value?: bigint;\n    predecessor?: Hex;\n    salt: Hex;\n};\n\n/**\n * viem action factory for a standard OpenZeppelin {TimelockController}. Governance\n * changes to timelock-gated admin setters (e.g. BLSAggregator `setSlashPolicyAdmin` /\n * `setSlashThreshold`, CC-13) flow through here: {@link schedule} the inner call,\n * wait out {@link getMinDelay}, then {@link execute} it. Operation state is read via\n * {@link getTimestamp} (0 = unset, 1 = done, else the ready-at unix timestamp).\n */\nexport type TimelockControllerActions = {\n    /** The minimum delay (seconds) an operation must wait between schedule and execute. */\n    getMinDelay: () => Promise<bigint>;\n    /** Deterministic operation id for a scheduled call (matches on-chain `hashOperation`). */\n    hashOperation: (args: TimelockOperation) => Promise<Hex>;\n    /**\n     * The unix timestamp at which the operation becomes ready. Sentinels: `0n` =\n     * unset (never scheduled), `1n` = already executed (done). Any other value is the\n     * ready-at time — the \"pending change ETA\" a governance UI surfaces.\n     */\n    getTimestamp: (args: { id: Hex }) => Promise<bigint>;\n    isOperationPending: (args: { id: Hex }) => Promise<boolean>;\n    isOperationReady: (args: { id: Hex }) => Promise<boolean>;\n    isOperationDone: (args: { id: Hex }) => Promise<boolean>;\n\n    /** Schedule an operation. Reverts unless `delay >= getMinDelay()` and caller has PROPOSER_ROLE. */\n    schedule: (args: TimelockOperation & { delay: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Execute a ready operation (caller needs EXECUTOR_ROLE). Reverts if not ready or predecessor unmet. */\n    execute: (args: TimelockOperation & { account?: Account | Address }) => Promise<Hash>;\n    /** Cancel a still-pending operation by id (caller needs CANCELLER_ROLE). */\n    cancel: (args: { id: Hex, account?: Account | Address }) => Promise<Hash>;\n};\n\nexport const timelockControllerActions = (address: Address) => (client: PublicClient | WalletClient): TimelockControllerActions => ({\n    async getMinDelay() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'getMinDelay',\n                args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getMinDelay');\n        }\n    },\n\n    async hashOperation({ target, data, value = 0n, predecessor = ZERO_BYTES32, salt }) {\n        try {\n            validateAddress(target, 'target');\n            validateRequired(data, 'data');\n            validateRequired(salt, 'salt');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'hashOperation',\n                args: [target, value, data, predecessor, salt]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'hashOperation');\n        }\n    },\n\n    async getTimestamp({ id }) {\n        try {\n            validateRequired(id, 'id');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'getTimestamp',\n                args: [id]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getTimestamp');\n        }\n    },\n\n    async isOperationPending({ id }) {\n        try {\n            validateRequired(id, 'id');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'isOperationPending',\n                args: [id]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isOperationPending');\n        }\n    },\n\n    async isOperationReady({ id }) {\n        try {\n            validateRequired(id, 'id');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'isOperationReady',\n                args: [id]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isOperationReady');\n        }\n    },\n\n    async isOperationDone({ id }) {\n        try {\n            validateRequired(id, 'id');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'isOperationDone',\n                args: [id]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isOperationDone');\n        }\n    },\n\n    async schedule({ target, data, value = 0n, predecessor = ZERO_BYTES32, salt, delay, account }) {\n        try {\n            validateAddress(target, 'target');\n            validateRequired(data, 'data');\n            validateRequired(salt, 'salt');\n            validateRequired(delay, 'delay');\n            return await (client as any).writeContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'schedule',\n                args: [target, value, data, predecessor, salt, delay],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'schedule');\n        }\n    },\n\n    async execute({ target, data, value = 0n, predecessor = ZERO_BYTES32, salt, account }) {\n        try {\n            validateAddress(target, 'target');\n            validateRequired(data, 'data');\n            validateRequired(salt, 'salt');\n            return await (client as any).writeContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'execute',\n                args: [target, value, data, predecessor, salt],\n                value,\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'execute');\n        }\n    },\n\n    async cancel({ id, account }) {\n        try {\n            validateRequired(id, 'id');\n            return await (client as any).writeContract({\n                address,\n                abi: TimelockControllerABI,\n                functionName: 'cancel',\n                args: [id],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cancel');\n        }\n    },\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { SimpleAccountABI, SimpleAccountFactoryABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateAmount } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n// SimpleAccount Actions (v0.7)\nexport type AccountActions = {\n    execute: (args: { dest: Address, value: bigint, func: Hex, account?: Account | Address }) => Promise<Hash>;\n    executeBatch: (args: { dest: Address[], value: bigint[], func: Hex[], account?: Account | Address }) => Promise<Hash>;\n    getNonce: () => Promise<bigint>;\n    entryPoint: () => Promise<Address>;\n    addDeposit: (args: { account?: Account | Address }) => Promise<Hash>;\n    withdrawDepositTo: (args: { withdrawAddress: Address, amount: bigint, account?: Account | Address }) => Promise<Hash>;\n    getDeposit: () => Promise<bigint>;\n    owner: () => Promise<Address>;\n};\n\n// SimpleAccountFactory Actions\nexport type AccountFactoryActions = {\n    createAccount: (args: { owner: Address, salt: bigint, account?: Account | Address, gas?: bigint }) => Promise<Hash>;\n    getAddress: (args: { owner: Address, salt: bigint }) => Promise<Address>;\n};\n\nexport const accountActions = (address: Address) => (client: PublicClient | WalletClient): AccountActions => ({\n    async execute({ dest, value, func, account }) {\n        try {\n            validateAddress(dest, 'dest');\n            validateAmount(value, 'value');\n            validateRequired(func, 'func');\n            return await (client as any).writeContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'execute',\n                args: [dest, value, func],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'execute');\n        }\n    },\n\n    async executeBatch({ dest, value, func, account }) {\n        try {\n            validateRequired(dest, 'dest');\n            validateRequired(value, 'value');\n            validateRequired(func, 'func');\n            \n            if (dest.length !== value.length || dest.length !== func.length) {\n                throw new Error('executeBatch: Array lengths must match');\n            }\n\n            // Zip arguments into Call[] struct format\n            const calls = dest.map((t, i) => ({\n                target: t,\n                value: value[i],\n                data: func[i]\n            }));\n            \n            return await (client as any).writeContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'executeBatch',\n                args: [calls],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeBatch');\n        }\n    },\n\n    async getNonce() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'getNonce',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getNonce');\n        }\n    },\n\n    async entryPoint() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'entryPoint',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'entryPoint');\n        }\n    },\n\n    async addDeposit({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'addDeposit',\n                args: [],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addDeposit');\n        }\n    },\n\n    async withdrawDepositTo({ withdrawAddress, amount, account }) {\n        try {\n            validateAddress(withdrawAddress, 'withdrawAddress');\n            validateAmount(amount, 'amount');\n            return await (client as any).writeContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'withdrawDepositTo',\n                args: [withdrawAddress, amount],\n                account: account as any,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawDepositTo');\n        }\n    },\n\n    async getDeposit() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'getDeposit',\n                args: []\n            }) as Promise<bigint>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getDeposit');\n        }\n    },\n\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({\n                address,\n                abi: SimpleAccountABI,\n                functionName: 'owner',\n                args: []\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'owner');\n        }\n    }\n});\n\nexport const accountFactoryActions = (address: Address, abi: any = SimpleAccountFactoryABI) => (client: PublicClient | WalletClient): AccountFactoryActions => ({\n    async createAccount({ owner, salt, account, gas }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateRequired(salt, 'salt');\n            return await (client as any).writeContract({\n                address,\n                abi: abi || SimpleAccountFactoryABI,\n                functionName: 'createAccount',\n                args: [owner, salt],\n                account: account as any,\n                gas,\n                chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createAccount');\n        }\n    },\n\n    async getAddress({ owner, salt }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateRequired(salt, 'salt');\n            return await (client as PublicClient).readContract({\n                address,\n                abi: abi || SimpleAccountFactoryABI,\n                functionName: 'getAddress',\n                args: [owner, salt]\n            }) as Promise<Address>;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAddress');\n        }\n    }\n});\n","import { \n    type Address, \n    type WalletClient, \n    type PublicClient, \n    parseEther, \n    formatEther,\n    zeroAddress,\n    type Account,\n    type Hash\n} from 'viem';\nimport { registryActions } from './registry.js';\nimport { gTokenActions } from './tokens.js';\nimport { paymasterActions } from './paymaster.js';\nimport { validateAddress, validateAmount, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\nexport type FaucetPreparationResult = {\n    ethFunded: boolean;\n    roleRegistered: boolean;\n    tokenMinted: boolean;\n    paymasterDeposited: boolean;\n};\n\nexport type FaucetConfig = {\n    targetAA: Address;\n    token: Address;\n    registry: Address;\n    paymasterV4?: Address;\n    ethAmount?: bigint; // Default 0.1 ETH\n    tokenAmount?: bigint; // Default 1000 Tokens\n};\n\n/**\n * SepoliaFaucetAPI provides orchestration for setting up test accounts on Sepolia/Anvil.\n */\nexport class SepoliaFaucetAPI {\n    \n    /**\n     * Orchestrates the complete setup for a test account.\n     * 1. Funds ETH\n     * 2. Registers ENDUSER role\n     * 3. Mints GTokens to user\n     * 4. Deposits to Paymaster V4 (if address provided) using Admin's tokens\n     */\n    static async prepareTestAccount(\n        adminWallet: WalletClient, \n        publicClient: PublicClient,\n        config: FaucetConfig\n    ): Promise<FaucetPreparationResult> {\n        try {\n            validateRequired(adminWallet, 'adminWallet');\n            validateRequired(publicClient, 'publicClient');\n            validateAddress(config.targetAA, 'targetAA');\n            validateAddress(config.token, 'token');\n            validateAddress(config.registry, 'registry');\n\n            console.log(`\\n🚰 SepoliaFaucetAPI: Preparing ${config.targetAA}...`);\n            const results: FaucetPreparationResult = {\n                ethFunded: false,\n                roleRegistered: false,\n                tokenMinted: false,\n                paymasterDeposited: false\n            };\n\n            // 1. Fund ETH\n            const ethAmount = config.ethAmount ?? parseEther('0.1');\n            results.ethFunded = await this.fundETH(adminWallet, publicClient, config.targetAA, ethAmount);\n\n            // 2. Register EndUser\n            results.roleRegistered = await this.registerEndUser(adminWallet, publicClient, config.registry, config.targetAA, config.token);\n\n            // 3. Mint Tokens\n            const tokenAmount = config.tokenAmount ?? parseEther('1000');\n            results.tokenMinted = await this.mintTestTokens(adminWallet, publicClient, config.token, config.targetAA, tokenAmount);\n\n            // 4. Admin Deposit for User (Paymaster V4 Logic)\n            if (config.paymasterV4) {\n                validateAddress(config.paymasterV4, 'paymasterV4');\n                results.paymasterDeposited = await this.adminDepositForUser(\n                    adminWallet, \n                    publicClient, \n                    config.paymasterV4, \n                    config.targetAA, \n                    config.token, \n                    parseEther('10') // Deposit 10 Tokens for testing\n                );\n            }\n\n            console.log(`✅ Preparation Complete!`, results);\n            return results;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'prepareTestAccount');\n        }\n    }\n\n    /**\n     * Funds the target with ETH if balance is below threshold.\n     */\n    static async fundETH(adminWallet: WalletClient, publicClient: PublicClient, target: Address, amount: bigint): Promise<boolean> {\n        try {\n            validateAddress(target, 'target');\n            validateAmount(amount, 'amount');\n            \n            const balance = await publicClient.getBalance({ address: target });\n            // Threshold: 50% of target amount\n            if (balance < (amount / 2n)) {\n                console.log(`   💰 Funding ETH... (Before: ${formatEther(balance)})`);\n                const hash = await adminWallet.sendTransaction({\n                    to: target,\n                    value: amount,\n                    account: adminWallet.account!,\n                    chain: adminWallet.chain\n                });\n                await publicClient.waitForTransactionReceipt({ hash, timeout: 120000 });\n                console.log(`      -> Sent ${formatEther(amount)} ETH. Tx: ${hash}`);\n                return true;\n            }\n            console.log(`   ✅ ETH Balance adequate (${formatEther(balance)} ETH).`);\n            return false;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'fundETH');\n        }\n    }\n\n    /**\n     * Registers the ENDUSER role using Sponsor Mode (Admin pays stake).\n     */\n    static async registerEndUser(\n        adminWallet: WalletClient, \n        publicClient: PublicClient, \n        registryAddr: Address, \n        target: Address,\n        gasToken: Address\n    ): Promise<boolean> {\n        try {\n            validateAddress(registryAddr, 'registryAddr');\n            validateAddress(target, 'target');\n            validateAddress(gasToken, 'gasToken');\n\n            const registry = registryActions(registryAddr)(publicClient);\n            const walletRegistry = registryActions(registryAddr)(adminWallet);\n            const token = gTokenActions(gasToken)(publicClient);\n            const walletToken = gTokenActions(gasToken)(adminWallet);\n\n            // 1. Get ENDUSER Role ID\n            const ENDUSER_ROLE = await registry.ROLE_ENDUSER();\n            \n            // 2. Check if already registered\n            const hasRole = await registry.hasRole({ roleId: ENDUSER_ROLE, user: target });\n\n            if (hasRole) {\n                console.log(`   ✅ ENDUSER Role already held.`);\n                return false;\n            }\n\n            console.log(`   👤 Registering ENDUSER role (Sponsor Mode)...`);\n\n            // 3. Get Staking Contract Address\n            const stakingAddr = await registry.GTOKEN_STAKING();\n\n            // 4. Admin Approves Staking Contract (if needed)\n            const adminAddr = adminWallet.account!.address;\n            const allowance = await token.allowance({ token: gasToken, owner: adminAddr, spender: stakingAddr });\n\n            if (allowance < parseEther('500')) {\n                console.log(`      🔓 Approving Staking Contract...`);\n                const hashApprove = await walletToken.approve({ \n                    token: gasToken,\n                    spender: stakingAddr, \n                    amount: parseEther('1000') \n                });\n                await publicClient.waitForTransactionReceipt({ hash: hashApprove });\n            }\n\n            // 5. SafeMint (Sponsor)\n            const userData = '0x'; \n            const hashMint = await walletRegistry.safeMintForRole({ \n                roleId: ENDUSER_ROLE, \n                user: target, \n                data: userData \n            });\n            \n            await publicClient.waitForTransactionReceipt({ hash: hashMint, timeout: 120000 });\n            console.log(`      -> Role Sponsored & Granted. Tx: ${hashMint}`);\n            return true;\n\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'registerEndUser');\n        }\n    }\n\n    /**\n     * Mints tokens directly to the target.\n     */\n    static async mintTestTokens(\n        adminWallet: WalletClient, \n        publicClient: PublicClient, \n        tokenAddr: Address, \n        target: Address, \n        amount: bigint\n    ): Promise<boolean> {\n        try {\n            validateAddress(tokenAddr, 'tokenAddr');\n            validateAddress(target, 'target');\n            validateAmount(amount, 'amount');\n\n            const token = gTokenActions(tokenAddr)(publicClient);\n            const walletToken = gTokenActions(tokenAddr)(adminWallet);\n\n            const balance = await token.balanceOf({ token: tokenAddr, account: target });\n\n            if (balance < amount) {\n                console.log(`   🪙 Minting Tokens... (Current: ${formatEther(balance)})`);\n                const hash = await walletToken.mint({ token: tokenAddr, to: target, amount });\n                await publicClient.waitForTransactionReceipt({ hash, timeout: 120000 });\n                console.log(`      -> Minted ${formatEther(amount)}. Tx: ${hash}`);\n                return true;\n            }\n            console.log(`   ✅ Token Balance adequate.`);\n            return false;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'mintTestTokens');\n        }\n    }\n\n    /**\n     * Admin mints tokens to self, approves Paymaster, and deposits FOR user.\n     */\n    static async adminDepositForUser(\n        adminWallet: WalletClient, \n        publicClient: PublicClient, \n        paymasterAddr: Address, \n        target: Address, \n        tokenAddr: Address, \n        amount: bigint\n    ): Promise<boolean> {\n        try {\n            validateAddress(paymasterAddr, 'paymasterAddr');\n            validateAddress(target, 'target');\n            validateAddress(tokenAddr, 'tokenAddr');\n            validateAmount(amount, 'amount');\n\n            const token = gTokenActions(tokenAddr)(publicClient);\n            const walletToken = gTokenActions(tokenAddr)(adminWallet);\n            const paymaster = paymasterActions(paymasterAddr)(adminWallet);\n\n            const adminAddr = adminWallet.account!.address;\n            const adminBal = await token.balanceOf({ token: tokenAddr, account: adminAddr });\n\n            if (adminBal < amount) {\n                console.log(`   🏧 Admin Minting to Self (for deposit)...`);\n                const hash = await walletToken.mint({ token: tokenAddr, to: adminAddr, amount: amount * 10n });\n                await publicClient.waitForTransactionReceipt({ hash });\n            }\n\n            const allowance = await token.allowance({ token: tokenAddr, owner: adminAddr, spender: paymasterAddr });\n            \n            if (allowance < amount) {\n                console.log(`   🔓 Admin Approving Paymaster...`);\n                // Use a large but finite amount instead of max uint for safety/clarity if desired, \n                // but max uint is common in faucets.\n                const hashApprove = await walletToken.approve({ \n                    token: tokenAddr,\n                    spender: paymasterAddr, \n                    amount: parseEther('10000') \n                });\n                await publicClient.waitForTransactionReceipt({ hash: hashApprove });\n            }\n\n            console.log(`   🏦 Depositing FOR User...`);\n            const hash = await paymaster.depositFor({ user: target, token: tokenAddr, amount });\n            await publicClient.waitForTransactionReceipt({ hash, timeout: 120000 });\n            console.log(`      -> Deposited ${formatEther(amount)} to PM. Tx: ${hash}`);\n            return true;\n        } catch (error) {\n            console.warn(`      ⚠️ Deposit Failed (Maybe not supported on this PM?):`, error);\n            return false;\n        }\n    }\n}\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, keccak256, encodeAbiParameters, parseAbiParameters } from 'viem';\nimport { X402FacilitatorABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateDeployedAddress } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n/**\n * Computes the storage key for x402SettlementNonces[key].\n * Mirrors SuperPaymaster.x402NonceKey: keccak256(abi.encode(asset, from, nonce)).\n * Changed from raw nonce (pre P0-13) to triple-key (post P0-13).\n */\nexport function x402NonceKey(asset: Address, from: Address, nonce: Hex): Hex {\n  return keccak256(encodeAbiParameters(\n    parseAbiParameters('address, address, bytes32'),\n    [asset, from, nonce]\n  ));\n}\n\n/**\n * Checks if an x402 settlement nonce has been used.\n * Queries the triple-key slot: keccak256(abi.encode(asset, from, nonce)).\n * Replaces the pre-P0-13 pattern of querying x402SettlementNonces({ nonce }).\n */\nexport async function x402IsNonceUsed(\n  client: PublicClient,\n  superPaymasterAddress: Address,\n  params: { asset: Address; from: Address; nonce: Hex }\n): Promise<boolean> {\n  const key = x402NonceKey(params.asset, params.from, params.nonce);\n  const result = await client.readContract({\n    address: superPaymasterAddress,\n    abi: [\n      {\n        inputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],\n        name: 'x402SettlementNonces',\n        outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n        stateMutability: 'view',\n        type: 'function',\n      },\n    ],\n    functionName: 'x402SettlementNonces',\n    args: [key],\n  });\n  return result as boolean;\n}\n\nexport type X402Actions = {\n    // Settlement\n    settleX402Payment: (args: {\n        from: Address, to: Address, asset: Address, amount: bigint,\n        validAfter: bigint, validBefore: bigint, nonce: Hex, signature: Hex,\n        account?: Account | Address\n    }) => Promise<Hex>;\n    settleX402PaymentDirect: (args: {\n        from: Address, to: Address, asset: Address, amount: bigint, nonce: Hex,\n        account?: Account | Address\n    }) => Promise<Hex>;\n\n    // View\n    x402SettlementNonces: (args: { nonce: Hex }) => Promise<boolean>;\n    facilitatorFeeBPS: () => Promise<bigint>;\n    facilitatorEarnings: (args: { operator: Address, asset: Address }) => Promise<bigint>;\n    operatorFacilitatorFees: (args: { operator: Address }) => Promise<bigint>;\n\n    // Admin\n    withdrawFacilitatorEarnings: (args: { asset: Address, account?: Account | Address }) => Promise<Hash>;\n    setFacilitatorFeeBPS: (args: { fee: bigint, account?: Account | Address }) => Promise<Hash>;\n    setOperatorFacilitatorFee: (args: { operator: Address, fee: bigint, account?: Account | Address }) => Promise<Hash>;\n};\n\n/**\n * x402 settlement actions. As of SP v5.4 these functions live on the standalone\n * X402Facilitator contract (NOT SuperPaymaster), so `address` MUST be the deployed\n * X402Facilitator address — passing the SuperPaymaster address will revert on-chain.\n */\nexport const x402Actions = (address: Address) => (client: PublicClient | WalletClient): X402Actions => {\n    validateDeployedAddress(address, 'X402Facilitator');\n    return ({\n    // --- Settlement ---\n    async settleX402Payment({ from, to, asset, amount, validAfter, validBefore, nonce, signature, account }) {\n        try {\n            validateAddress(from, 'from');\n            validateAddress(to, 'to');\n            validateAddress(asset, 'asset');\n            validateRequired(nonce, 'nonce');\n            validateRequired(signature, 'signature');\n            return await (client as any).writeContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'settleX402Payment',\n                args: [from, to, asset, amount, validAfter, validBefore, nonce, signature],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'settleX402Payment');\n        }\n    },\n\n    async settleX402PaymentDirect({ from, to, asset, amount, nonce, account }) {\n        try {\n            validateAddress(from, 'from');\n            validateAddress(to, 'to');\n            validateAddress(asset, 'asset');\n            validateRequired(nonce, 'nonce');\n            return await (client as any).writeContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'settleX402PaymentDirect',\n                args: [from, to, asset, amount, nonce],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'settleX402PaymentDirect');\n        }\n    },\n\n    // --- View ---\n    async x402SettlementNonces({ nonce }) {\n        try {\n            validateRequired(nonce, 'nonce');\n            return await (client as PublicClient).readContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'x402SettlementNonces',\n                args: [nonce]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'x402SettlementNonces');\n        }\n    },\n\n    async facilitatorFeeBPS() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'facilitatorFeeBPS'\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'facilitatorFeeBPS');\n        }\n    },\n\n    async facilitatorEarnings({ operator, asset }) {\n        try {\n            validateAddress(operator, 'operator');\n            validateAddress(asset, 'asset');\n            return await (client as PublicClient).readContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'facilitatorEarnings',\n                args: [operator, asset]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'facilitatorEarnings');\n        }\n    },\n\n    async operatorFacilitatorFees({ operator }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as PublicClient).readContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'operatorFacilitatorFees',\n                args: [operator]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'operatorFacilitatorFees');\n        }\n    },\n\n    // --- Admin ---\n    async withdrawFacilitatorEarnings({ asset, account }) {\n        try {\n            validateAddress(asset, 'asset');\n            return await (client as any).writeContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'withdrawFacilitatorEarnings',\n                args: [asset],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawFacilitatorEarnings');\n        }\n    },\n\n    async setFacilitatorFeeBPS({ fee, account }) {\n        try {\n            return await (client as any).writeContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'setFacilitatorFeeBPS',\n                args: [fee],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setFacilitatorFeeBPS');\n        }\n    },\n\n    async setOperatorFacilitatorFee({ operator, fee, account }) {\n        try {\n            validateAddress(operator, 'operator');\n            return await (client as any).writeContract({\n                address, abi: X402FacilitatorABI,\n                functionName: 'setOperatorFacilitatorFee',\n                args: [operator, fee],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setOperatorFacilitatorFee');\n        }\n    },\n});\n};\n","import { type Address, type PublicClient, type WalletClient, type Hash, type Account } from 'viem';\nimport { SuperPaymasterABI } from '../abis/index.js';\nimport { validateAddress, validateDeployedAddress } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\nexport type AgentSponsorshipPolicy = {\n    minReputationScore: bigint;\n    sponsorshipBPS: bigint;\n    maxDailyUSD: bigint;\n};\n\nexport type AgentActions = {\n    // View\n    isRegisteredAgent: (args: { account: Address }) => Promise<boolean>;\n    isEligibleForSponsorship: (args: { user: Address }) => Promise<boolean>;\n    /** @deprecated Removed in the v5.x contract refactor — the SuperPaymaster ABI has no per-agent sponsorship-rate getter; sponsorship is now a boolean eligibility check. Throws {@link ErrorCode.NOT_IMPLEMENTED}; use {@link isEligibleForSponsorship}. */\n    getAgentSponsorshipRate: (args: { agent: Address, operator: Address }) => Promise<bigint>;\n    agentIdentityRegistry: () => Promise<Address>;\n    agentReputationRegistry: () => Promise<Address>;\n    /** @deprecated Removed in the v5.x contract refactor — per-operator agent policies are no longer stored on-chain (no `agentPolicies` in the SuperPaymaster ABI). Throws {@link ErrorCode.NOT_IMPLEMENTED}. */\n    agentPolicies: (args: { operator: Address, index: bigint }) => Promise<AgentSponsorshipPolicy>;\n\n    // Admin\n    /** @deprecated Removed in the v5.x contract refactor — per-operator sponsorship policies are no longer configurable on-chain (no `setAgentPolicies`). Throws {@link ErrorCode.NOT_IMPLEMENTED}; to wire up the agent identity/reputation registries use {@link setAgentRegistries}. */\n    setAgentPolicies: (args: { policies: AgentSponsorshipPolicy[], account?: Account | Address }) => Promise<Hash>;\n    setAgentRegistries: (args: { identity: Address, reputation: Address, account?: Account | Address }) => Promise<Hash>;\n};\n\nexport const agentActions = (address: Address) => (client: PublicClient | WalletClient): AgentActions => {\n    validateDeployedAddress(address, 'AgentContracts');\n    return ({\n    // --- View ---\n    async isRegisteredAgent({ account: agentAddr }) {\n        try {\n            validateAddress(agentAddr, 'account');\n            return await (client as PublicClient).readContract({\n                address, abi: SuperPaymasterABI,\n                functionName: 'isRegisteredAgent',\n                args: [agentAddr]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isRegisteredAgent');\n        }\n    },\n\n    async isEligibleForSponsorship({ user }) {\n        try {\n            validateAddress(user, 'user');\n            return await (client as PublicClient).readContract({\n                address, abi: SuperPaymasterABI,\n                functionName: 'isEligibleForSponsorship',\n                args: [user]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isEligibleForSponsorship');\n        }\n    },\n\n    async getAgentSponsorshipRate({ agent, operator }) {\n        // Removed in the v5.x contract refactor: there is no per-agent sponsorship-RATE\n        // getter on the deployed SuperPaymaster ABI. Sponsorship is now a boolean\n        // eligibility decision. Validate inputs then throw rather than revert on-chain.\n        validateAddress(agent, 'agent');\n        validateAddress(operator, 'operator');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'getAgentSponsorshipRate was removed in the v5.x contract refactor; sponsorship is ' +\n            'now a boolean check — use isEligibleForSponsorship({ user }) instead.'\n        );\n    },\n\n    async agentIdentityRegistry() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: SuperPaymasterABI,\n                functionName: 'agentIdentityRegistry'\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'agentIdentityRegistry');\n        }\n    },\n\n    async agentReputationRegistry() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: SuperPaymasterABI,\n                functionName: 'agentReputationRegistry'\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'agentReputationRegistry');\n        }\n    },\n\n    async agentPolicies({ operator }) {\n        // Removed in the v5.x contract refactor: per-operator agent sponsorship policies are\n        // no longer stored on-chain (no `agentPolicies` mapping in the SuperPaymaster ABI).\n        validateAddress(operator, 'operator');\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'agentPolicies was removed in the v5.x contract refactor; per-operator agent ' +\n            'sponsorship policies are no longer stored on-chain.'\n        );\n    },\n\n    // --- Admin ---\n    async setAgentPolicies({ policies }) {\n        // Removed in the v5.x contract refactor: per-operator sponsorship policies are no\n        // longer configurable on-chain (no `setAgentPolicies`). To wire up the agent identity\n        // and reputation registries used for eligibility, use setAgentRegistries instead.\n        if (!policies) {\n            throw new AAStarError(ErrorCode.REQUIRED_PARAMETER, 'setAgentPolicies: policies is required');\n        }\n        throw new AAStarError(\n            ErrorCode.NOT_IMPLEMENTED,\n            'setAgentPolicies was removed in the v5.x contract refactor; per-operator sponsorship ' +\n            'policies are no longer configurable on-chain. Use setAgentRegistries({ identity, reputation }) ' +\n            'to configure the agent identity/reputation registries instead.'\n        );\n    },\n\n    async setAgentRegistries({ identity, reputation, account }) {\n        try {\n            validateAddress(identity, 'identity');\n            validateAddress(reputation, 'reputation');\n            return await (client as any).writeContract({\n                address, abi: SuperPaymasterABI,\n                functionName: 'setAgentRegistries',\n                args: [identity, reputation],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setAgentRegistries');\n        }\n    },\n});\n};\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { MicroPaymentChannelABI } from '../abis/index.js';\nimport { validateAddress, validateRequired, validateDeployedAddress } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\nexport type ChannelState = {\n    payer: Address;\n    payee: Address;\n    token: Address;\n    authorizedSigner: Address;\n    deposit: bigint;\n    settled: bigint;\n    closeRequestedAt: bigint;\n    finalized: boolean;\n};\n\nexport type ChannelActions = {\n    // Write\n    openChannel: (args: {\n        payee: Address, token: Address, deposit: bigint, salt: Hex,\n        authorizedSigner: Address, account?: Account | Address\n    }) => Promise<Hash>;\n    settleChannel: (args: {\n        channelId: Hex, cumulativeAmount: bigint, signature: Hex,\n        account?: Account | Address\n    }) => Promise<Hash>;\n    closeChannel: (args: {\n        channelId: Hex, cumulativeAmount: bigint, signature: Hex,\n        account?: Account | Address\n    }) => Promise<Hash>;\n    topUpChannel: (args: {\n        channelId: Hex, amount: bigint, account?: Account | Address\n    }) => Promise<Hash>;\n    requestCloseChannel: (args: {\n        channelId: Hex, account?: Account | Address\n    }) => Promise<Hash>;\n    withdrawChannel: (args: {\n        channelId: Hex, account?: Account | Address\n    }) => Promise<Hash>;\n\n    // Read\n    getChannel: (args: { channelId: Hex }) => Promise<ChannelState>;\n    /**\n     * @deprecated The deployed MicroPaymentChannel ABI no longer exposes a `CLOSE_TIMEOUT`\n     * constant — it was replaced by the configurable {@link closeTimeout} getter plus the\n     * {@link MIN_CLOSE_TIMEOUT}/{@link MAX_CLOSE_TIMEOUT} bounds. This wrapper now delegates\n     * to the on-chain `closeTimeout()` getter so it no longer reverts; use {@link closeTimeout}.\n     */\n    CLOSE_TIMEOUT: () => Promise<bigint>;\n    /** Current configurable close-timeout (seconds, view). ABI: closeTimeout() -> uint64. */\n    closeTimeout: () => Promise<bigint>;\n    /** Set the configurable close-timeout window (owner-gated). ABI: setCloseTimeout(uint64 _timeout). */\n    setCloseTimeout: (args: { timeout: bigint, account?: Account | Address }) => Promise<Hash>;\n    /** Whether a given channelId has already been closed (view). ABI: closedChannels(bytes32) -> bool. */\n    closedChannels: (args: { channelId: Hex }) => Promise<boolean>;\n    /** Upper bound for {@link setCloseTimeout} (view). ABI: MAX_CLOSE_TIMEOUT() -> uint64. */\n    MAX_CLOSE_TIMEOUT: () => Promise<bigint>;\n    /** Lower bound for {@link setCloseTimeout} (view). ABI: MIN_CLOSE_TIMEOUT() -> uint64. */\n    MIN_CLOSE_TIMEOUT: () => Promise<bigint>;\n    VOUCHER_TYPEHASH: () => Promise<Hex>;\n    version: () => Promise<string>;\n};\n\nexport const channelActions = (address: Address) => (client: PublicClient | WalletClient): ChannelActions => {\n    validateDeployedAddress(address, 'MicroPaymentChannel');\n    return ({\n    // --- Write ---\n    async openChannel({ payee, token, deposit, salt, authorizedSigner, account }) {\n        try {\n            validateAddress(payee, 'payee');\n            validateAddress(token, 'token');\n            validateRequired(salt, 'salt');\n            validateAddress(authorizedSigner, 'authorizedSigner');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'openChannel',\n                args: [payee, token, deposit, salt, authorizedSigner],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'openChannel');\n        }\n    },\n\n    async settleChannel({ channelId, cumulativeAmount, signature, account }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            validateRequired(signature, 'signature');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'settleChannel',\n                args: [channelId, cumulativeAmount, signature],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'settleChannel');\n        }\n    },\n\n    async closeChannel({ channelId, cumulativeAmount, signature, account }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            validateRequired(signature, 'signature');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'closeChannel',\n                args: [channelId, cumulativeAmount, signature],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'closeChannel');\n        }\n    },\n\n    async topUpChannel({ channelId, amount, account }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'topUpChannel',\n                args: [channelId, amount],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'topUpChannel');\n        }\n    },\n\n    async requestCloseChannel({ channelId, account }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'requestCloseChannel',\n                args: [channelId],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'requestCloseChannel');\n        }\n    },\n\n    async withdrawChannel({ channelId, account }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'withdrawChannel',\n                args: [channelId],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'withdrawChannel');\n        }\n    },\n\n    // --- Read ---\n    async getChannel({ channelId }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            const result = await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'getChannel',\n                args: [channelId]\n            }) as any;\n            return {\n                payer: result.payer as Address,\n                payee: result.payee as Address,\n                token: result.token as Address,\n                authorizedSigner: result.authorizedSigner as Address,\n                deposit: result.deposit as bigint,\n                settled: result.settled as bigint,\n                closeRequestedAt: result.closeRequestedAt as bigint,\n                finalized: result.finalized as boolean,\n            } as ChannelState;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getChannel');\n        }\n    },\n\n    async CLOSE_TIMEOUT() {\n        try {\n            // On-chain fn: closeTimeout() — the legacy `CLOSE_TIMEOUT` constant was removed.\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'closeTimeout'\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'CLOSE_TIMEOUT');\n        }\n    },\n\n    async closeTimeout() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'closeTimeout'\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'closeTimeout');\n        }\n    },\n\n    async setCloseTimeout({ timeout, account }) {\n        try {\n            validateRequired(timeout, 'timeout');\n            return await (client as any).writeContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'setCloseTimeout',\n                args: [timeout],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setCloseTimeout');\n        }\n    },\n\n    async closedChannels({ channelId }) {\n        try {\n            validateRequired(channelId, 'channelId');\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'closedChannels',\n                args: [channelId]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'closedChannels');\n        }\n    },\n\n    async MAX_CLOSE_TIMEOUT() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'MAX_CLOSE_TIMEOUT'\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MAX_CLOSE_TIMEOUT');\n        }\n    },\n\n    async MIN_CLOSE_TIMEOUT() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'MIN_CLOSE_TIMEOUT'\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'MIN_CLOSE_TIMEOUT');\n        }\n    },\n\n    async VOUCHER_TYPEHASH() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'VOUCHER_TYPEHASH'\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'VOUCHER_TYPEHASH');\n        }\n    },\n\n    async version() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: MicroPaymentChannelABI,\n                functionName: 'version'\n            }) as string;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'version');\n        }\n    },\n});\n};\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { GTokenAuthorizationABI } from '../abis/index.js';\nimport { type GTokenActions } from './tokens.js';\n\n// AuthorizationState enum mirrors GTokenAuthorization.AuthorizationState\nexport enum AuthorizationState {\n    Unused = 0,\n    Used = 1,\n    Canceled = 2,\n}\n\nexport type GTokenAuthorizationActions = GTokenActions & {\n    // ── EIP-3009 Write ────────────────────────────────────────────────────────\n    // Any relay may submit. validBefore - validAfter must be <= 300s (MAX_AUTH_VALIDITY).\n    //\n    // xPNTsToken trust model (RC-2):\n    //   xPNTsToken is NOT part of the EIP-712 signature — the signer does not commit to it.\n    //   It is supplied by the relay at submission time as a hint for the RC-2 access check.\n    //   Pass address(0) to fall back to the SBT-only path (no xPNTs required).\n    //   If a non-zero xPNTsToken is accepted by the contract for access, the relay is trusted\n    //   to supply the correct token address. Callers in untrusted relay environments should\n    //   always pass address(0) to avoid relay-supplied access escalation.\n    transferWithAuthorization: (args: {\n        token: Address;\n        from: Address;\n        to: Address;\n        value: bigint;\n        validAfter: bigint;\n        validBefore: bigint;\n        nonce: Hex;\n        /** RC-2 access hint — NOT signed; pass address(0) to use SBT path only. See trust model above. */\n        xPNTsToken: Address;\n        signature: Hex;\n        account?: Account | Address;\n    }) => Promise<Hash>;\n\n    // Only msg.sender == to may call on-chain (CallerMustBeRecipient if violated).\n    // Use for atomic deposit/wrapper flows where the recipient is the caller.\n    receiveWithAuthorization: (args: {\n        token: Address;\n        from: Address;\n        to: Address;\n        value: bigint;\n        validAfter: bigint;\n        validBefore: bigint;\n        nonce: Hex;\n        /** RC-2 access hint — NOT signed; pass address(0) to use SBT path only. See trust model above. */\n        xPNTsToken: Address;\n        signature: Hex;\n        account?: Account | Address;\n    }) => Promise<Hash>;\n\n    // signature must be signed by `authorizer` over CancelAuthorization typehash.\n    cancelAuthorization: (args: {\n        token: Address;\n        authorizer: Address;\n        nonce: Hex;\n        signature: Hex;\n        account?: Account | Address;\n    }) => Promise<Hash>;\n\n    // ── EIP-3009 View ─────────────────────────────────────────────────────────\n    authorizationState: (args: { token: Address; authorizer: Address; nonce: Hex }) => Promise<AuthorizationState>;\n    DOMAIN_SEPARATOR: (args: { token: Address }) => Promise<Hex>;\n    TRANSFER_WITH_AUTHORIZATION_TYPEHASH: (args: { token: Address }) => Promise<Hex>;\n    RECEIVE_WITH_AUTHORIZATION_TYPEHASH: (args: { token: Address }) => Promise<Hex>;\n    CANCEL_AUTHORIZATION_TYPEHASH: (args: { token: Address }) => Promise<Hex>;\n\n    // RC-1: hard-capped validity window in seconds (= 300)\n    MAX_AUTH_VALIDITY: (args: { token: Address }) => Promise<bigint>;\n\n    // RC-2: SBT and factory references\n    mySBT: (args: { token: Address }) => Promise<Address>;\n    factory: (args: { token: Address }) => Promise<Address>;\n\n    // One-time post-deploy config (owner only)\n    setMySBT: (args: { token: Address; mySBT: Address; account?: Account | Address }) => Promise<Hash>;\n};\n\nexport const gTokenAuthorizationActions = (\n    client: PublicClient | WalletClient\n): GTokenAuthorizationActions => {\n    const walletClient = client as WalletClient;\n    const publicClient = client as PublicClient;\n\n    const readContract = <T>(token: Address, functionName: string, args: unknown[] = []) =>\n        publicClient.readContract({\n            address: token,\n            abi: GTokenAuthorizationABI,\n            functionName,\n            args,\n        }) as Promise<T>;\n\n    const writeContract = (token: Address, functionName: string, args: unknown[], account?: Account | Address) =>\n        (client as any).writeContract({\n            address: token,\n            abi: GTokenAuthorizationABI,\n            functionName,\n            args,\n            account: account as any,\n            chain: (client as any).chain,\n        });\n\n    return {\n        // ── Inherited GToken / ERC20 ─────────────────────────────────────────\n        totalSupply: ({ token }) => readContract<bigint>(token, 'totalSupply'),\n        balanceOf: ({ token, account }) => readContract<bigint>(token, 'balanceOf', [account]),\n        transfer: ({ token, to, amount, account }) => writeContract(token, 'transfer', [to, amount], account),\n        transferFrom: ({ token, from, to, amount, account }) => writeContract(token, 'transferFrom', [from, to, amount], account),\n        approve: ({ token, spender, amount, account }) => writeContract(token, 'approve', [spender, amount], account),\n        allowance: ({ token, owner, spender }) => readContract<bigint>(token, 'allowance', [owner, spender]),\n        name: ({ token }) => readContract<string>(token, 'name'),\n        symbol: ({ token }) => readContract<string>(token, 'symbol'),\n        decimals: ({ token }) => readContract<number>(token, 'decimals'),\n        mint: ({ token, to, amount, account }) => writeContract(token, 'mint', [to, amount], account),\n        burn: ({ token, amount, account }) => writeContract(token, 'burn', [amount], account),\n        burnFrom: ({ token, from, amount, account }) => writeContract(token, 'burnFrom', [from, amount], account),\n        cap: ({ token }) => readContract<bigint>(token, 'cap'),\n        remainingMintableSupply: ({ token }) => readContract<bigint>(token, 'remainingMintableSupply'),\n        version: ({ token }) => readContract<string>(token, 'version'),\n        owner: ({ token }) => readContract<Address>(token, 'owner'),\n        transferOwnership: ({ token, newOwner, account }) => writeContract(token, 'transferOwnership', [newOwner], account),\n        renounceOwnership: ({ token, account }) => writeContract(token, 'renounceOwnership', [], account),\n\n        // ── EIP-3009 Write ────────────────────────────────────────────────────\n        transferWithAuthorization: ({ token, from, to, value, validAfter, validBefore, nonce, xPNTsToken, signature, account }) =>\n            writeContract(token, 'transferWithAuthorization', [\n                from, to, value, validAfter, validBefore, nonce, xPNTsToken, signature,\n            ], account),\n\n        receiveWithAuthorization: ({ token, from, to, value, validAfter, validBefore, nonce, xPNTsToken, signature, account }) =>\n            writeContract(token, 'receiveWithAuthorization', [\n                from, to, value, validAfter, validBefore, nonce, xPNTsToken, signature,\n            ], account),\n\n        cancelAuthorization: ({ token, authorizer, nonce, signature, account }) =>\n            writeContract(token, 'cancelAuthorization', [authorizer, nonce, signature], account),\n\n        // ── EIP-3009 View ─────────────────────────────────────────────────────\n        authorizationState: async ({ token, authorizer, nonce }) => {\n            const state = await readContract<number>(token, 'authorizationState', [authorizer, nonce]);\n            return state as AuthorizationState;\n        },\n        DOMAIN_SEPARATOR: ({ token }) => readContract<Hex>(token, 'DOMAIN_SEPARATOR'),\n        TRANSFER_WITH_AUTHORIZATION_TYPEHASH: ({ token }) => readContract<Hex>(token, 'TRANSFER_WITH_AUTHORIZATION_TYPEHASH'),\n        RECEIVE_WITH_AUTHORIZATION_TYPEHASH: ({ token }) => readContract<Hex>(token, 'RECEIVE_WITH_AUTHORIZATION_TYPEHASH'),\n        CANCEL_AUTHORIZATION_TYPEHASH: ({ token }) => readContract<Hex>(token, 'CANCEL_AUTHORIZATION_TYPEHASH'),\n        MAX_AUTH_VALIDITY: ({ token }) => readContract<bigint>(token, 'MAX_AUTH_VALIDITY'),\n        mySBT: ({ token }) => readContract<Address>(token, 'mySBT'),\n        factory: ({ token }) => readContract<Address>(token, 'factory'),\n\n        // ── One-time config ───────────────────────────────────────────────────\n        setMySBT: ({ token, mySBT, account }) =>\n            writeContract(token, 'setMySBT', [mySBT], account),\n    };\n};\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { AAStarAirAccountV7ABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n// Reuse the canonical ERC-4337 v0.7 tuple already exported by superPaymaster.ts\n// to avoid a duplicate `PackedUserOperation` export from actions/index.ts.\nimport type { PackedUserOperation } from './superPaymaster.js';\n\nexport type { PackedUserOperation };\n\n// AAStarGlobalGuard.TokenConfig — per-token spend limits enforced by the guard.\nexport type TokenConfig = {\n    tier1Limit: bigint;\n    tier2Limit: bigint;\n    dailyLimit: bigint;\n};\n\n// AAStarAirAccountBase.InitConfig — account bootstrap parameters (3 guardians fixed-size).\n// v0.20.0 (#120): factory InitConfig inserted guardianP256X/guardianP256Y (bytes32[3] each)\n// immediately after `guardians`, for P-256 guardian keys. ECDSA-only accounts pass the\n// zero word [0x0,0x0,0x0] for both. Field ORDER is consensus-critical (CREATE2 prediction).\nexport type InitConfig = {\n    guardians: readonly [Address, Address, Address];\n    guardianP256X: readonly [Hex, Hex, Hex];\n    guardianP256Y: readonly [Hex, Hex, Hex];\n    dailyLimit: bigint;\n    approvedAlgIds: readonly number[];\n    minDailyLimit: bigint;\n    initialTokens: readonly Address[];\n    initialTokenConfigs: readonly TokenConfig[];\n    /**\n     * NATIVE-ETH tier ceilings, added to InitConfig by airaccount-contract #161 (v0.29.0) — the\n     * struct went 8 -> 10 fields, a BREAKING ABI change. `0` = unconfigured (pre-#161 behaviour),\n     * but the fields must be PRESENT: viem encodes a missing field as `undefined` and the v0.29.0+\n     * factory reverts on createAccount/getAddress.\n     */\n    tier1Limit: bigint;\n    tier2Limit: bigint;\n};\n\n// pendingModuleInstall() tuple result.\nexport type PendingModuleInstall = {\n    module: Address;\n    moduleTypeId: number;\n    proposedAt: number;\n    executeAfter: number;\n    initDataHash: Hex;\n};\n\nexport type AirAccountActions = {\n    // --- Reads ---\n    owner: () => Promise<Address>;\n    guardianCount: () => Promise<number>;\n    guardians: (args: { index: bigint | number }) => Promise<Address>;\n    accountId: () => Promise<string>;\n    isValidSignature: (args: { hash: Hex, sig: Hex }) => Promise<Hex>;\n    requiredTier: (args: { txValue: bigint }) => Promise<number>;\n    supportsModule: (args: { moduleTypeId: bigint }) => Promise<boolean>;\n    p256KeyX: () => Promise<Hex>;\n    p256KeyY: () => Promise<Hex>;\n    parserRegistry: () => Promise<Address>;\n    moduleManagementNonce: () => Promise<bigint>;\n    moduleInstallTimelock: () => Promise<bigint>;\n    pendingModuleInstall: () => Promise<PendingModuleInstall>;\n\n    // --- Writes (P256 / tier / validator config) ---\n    setP256Key: (args: { x: Hex, y: Hex, account?: Account | Address }) => Promise<Hash>;\n    setTierLimits: (args: { tier1: bigint, tier2: bigint, account?: Account | Address }) => Promise<Hash>;\n    setValidator: (args: { validator: Address, account?: Account | Address }) => Promise<Hash>;\n    setParserRegistry: (args: { registry: Address, account?: Account | Address }) => Promise<Hash>;\n\n    // --- Writes (execution / lifecycle) ---\n    /**\n     * Execute calls via an installed executor module (ERC-7579 `executeFromExecutor`).\n     * NOTE: this is a state-changing tx, so it resolves to the transaction `Hash` — the\n     * on-chain `bytes[] returnData` is NOT recoverable from a write. If you need the\n     * decoded return data, `simulateContract`/`call` the same function separately.\n     */\n    executeFromExecutor: (args: { mode: Hex, executionCalldata: Hex, account?: Account | Address }) => Promise<Hash>;\n    validateUserOp: (args: { userOp: PackedUserOperation, userOpHash: Hex, missingAccountFunds: bigint, account?: Account | Address }) => Promise<Hash>;\n    initializeAgentAccount: (args: { entryPoint: Address, owner: Address, config: InitConfig, guardAddr: Address, account?: Account | Address }) => Promise<Hash>;\n\n    // --- Writes (guard governance) ---\n    guardAddTokenConfig: (args: { token: Address, config: TokenConfig, account?: Account | Address }) => Promise<Hash>;\n    guardApproveAlgorithm: (args: { algId: number, account?: Account | Address }) => Promise<Hash>;\n    guardDecreaseDailyLimit: (args: { newLimit: bigint, account?: Account | Address }) => Promise<Hash>;\n    guardDecreaseTokenDailyLimit: (args: { token: Address, newLimit: bigint, account?: Account | Address }) => Promise<Hash>;\n    // v0.18.0-beta.2 (#22): toggle guard strict mode (block unconfigured tokens). Default OFF.\n    guardSetStrictMode: (args: { enabled: boolean, account?: Account | Address }) => Promise<Hash>;\n\n    // --- Writes (module install timelock) ---\n    proposeModuleInstall: (args: { moduleTypeId: bigint, module: Address, initData: Hex, account?: Account | Address }) => Promise<Hash>;\n    executeModuleInstall: (args: { moduleInitData: Hex, account?: Account | Address }) => Promise<Hash>;\n    cancelModuleInstall: (args: { account?: Account | Address }) => Promise<Hash>;\n    setModuleInstallTimelock: (args: { newTimelock: bigint, guardianSigs: Hex, account?: Account | Address }) => Promise<Hash>;\n};\n\nconst ABI = AAStarAirAccountV7ABI;\n\nexport const airAccountActions = (address: Address) => (client: PublicClient | WalletClient): AirAccountActions => ({\n    // ===== Reads =====\n    async owner() {\n        try {\n            return await (client as PublicClient).readContract({ address, abi: ABI, functionName: 'owner', args: [] }) as Address;\n        } catch (error) { throw AAStarError.fromViemError(error as Error, 'owner'); }\n    },\n    async guardianCount() {\n        try {\n            return Number(await (client as PublicClient).readContract({ address, abi: ABI, functionName: 'guardianCount', args: [] }));\n        } catch (error) { throw AAStarError.fromViemError(error as Error, 'guardianCount'); }\n    },\n    async guardians({ index }) {\n        try {\n            return await (client as PublicClient).readContract({ address, abi: ABI, functionName: 'guardians', args: [BigInt(index)] }) as Address;\n        } catch (error) { throw AAStarError.fromViemError(error as Error, 'guardians'); }\n    },\n    async accountId() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'accountId', args: []\n            }) as string;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'accountId');\n        }\n    },\n\n    async isValidSignature({ hash, sig }) {\n        try {\n            validateRequired(hash, 'hash');\n            validateRequired(sig, 'sig');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'isValidSignature', args: [hash, sig]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isValidSignature');\n        }\n    },\n\n    async requiredTier({ txValue }) {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'requiredTier', args: [txValue]\n            }) as number;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'requiredTier');\n        }\n    },\n\n    async supportsModule({ moduleTypeId }) {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'supportsModule', args: [moduleTypeId]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'supportsModule');\n        }\n    },\n\n    async p256KeyX() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'p256KeyX', args: []\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'p256KeyX');\n        }\n    },\n\n    async p256KeyY() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'p256KeyY', args: []\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'p256KeyY');\n        }\n    },\n\n    async parserRegistry() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'parserRegistry', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'parserRegistry');\n        }\n    },\n\n    async moduleManagementNonce() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'moduleManagementNonce', args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'moduleManagementNonce');\n        }\n    },\n\n    async moduleInstallTimelock() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'moduleInstallTimelock', args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'moduleInstallTimelock');\n        }\n    },\n\n    async pendingModuleInstall() {\n        try {\n            const r = await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'pendingModuleInstall', args: []\n            }) as readonly [Address, number, number, number, Hex];\n            return {\n                module: r[0],\n                moduleTypeId: r[1],\n                proposedAt: r[2],\n                executeAfter: r[3],\n                initDataHash: r[4],\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingModuleInstall');\n        }\n    },\n\n    // ===== Writes: P256 / tier / validator config =====\n    async setP256Key({ x, y, account }) {\n        try {\n            validateRequired(x, 'x');\n            validateRequired(y, 'y');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'setP256Key', args: [x, y],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setP256Key');\n        }\n    },\n\n    async setTierLimits({ tier1, tier2, account }) {\n        try {\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'setTierLimits', args: [tier1, tier2],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setTierLimits');\n        }\n    },\n\n    async setValidator({ validator, account }) {\n        try {\n            validateAddress(validator, 'validator');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'setValidator', args: [validator],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setValidator');\n        }\n    },\n\n    async setParserRegistry({ registry, account }) {\n        try {\n            validateAddress(registry, 'registry');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'setParserRegistry', args: [registry],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setParserRegistry');\n        }\n    },\n\n    // ===== Writes: execution / lifecycle =====\n    async executeFromExecutor({ mode, executionCalldata, account }) {\n        try {\n            validateRequired(mode, 'mode');\n            validateRequired(executionCalldata, 'executionCalldata');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'executeFromExecutor', args: [mode, executionCalldata],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeFromExecutor');\n        }\n    },\n\n    async validateUserOp({ userOp, userOpHash, missingAccountFunds, account }) {\n        try {\n            validateRequired(userOp, 'userOp');\n            validateRequired(userOpHash, 'userOpHash');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'validateUserOp', args: [userOp, userOpHash, missingAccountFunds],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'validateUserOp');\n        }\n    },\n\n    async initializeAgentAccount({ entryPoint, owner, config, guardAddr, account }) {\n        try {\n            validateAddress(entryPoint, 'entryPoint');\n            validateAddress(owner, 'owner');\n            validateAddress(guardAddr, 'guardAddr');\n            validateRequired(config, 'config');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'initializeAgentAccount', args: [entryPoint, owner, config, guardAddr],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'initializeAgentAccount');\n        }\n    },\n\n    // ===== Writes: guard governance =====\n    async guardAddTokenConfig({ token, config, account }) {\n        try {\n            validateAddress(token, 'token');\n            validateRequired(config, 'config');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'guardAddTokenConfig', args: [token, config],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'guardAddTokenConfig');\n        }\n    },\n\n    async guardApproveAlgorithm({ algId, account }) {\n        try {\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'guardApproveAlgorithm', args: [algId],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'guardApproveAlgorithm');\n        }\n    },\n\n    async guardDecreaseDailyLimit({ newLimit, account }) {\n        try {\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'guardDecreaseDailyLimit', args: [newLimit],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'guardDecreaseDailyLimit');\n        }\n    },\n\n    async guardDecreaseTokenDailyLimit({ token, newLimit, account }) {\n        try {\n            validateAddress(token, 'token');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'guardDecreaseTokenDailyLimit', args: [token, newLimit],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'guardDecreaseTokenDailyLimit');\n        }\n    },\n\n    // v0.18.0-beta.2 (#22): enable/disable strict mode (reverts spends on unconfigured tokens).\n    async guardSetStrictMode({ enabled, account }) {\n        try {\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'guardSetStrictMode', args: [enabled],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'guardSetStrictMode');\n        }\n    },\n\n    // ===== Writes: module install timelock =====\n    async proposeModuleInstall({ moduleTypeId, module, initData, account }) {\n        try {\n            validateAddress(module, 'module');\n            validateRequired(initData, 'initData');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'proposeModuleInstall', args: [moduleTypeId, module, initData],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'proposeModuleInstall');\n        }\n    },\n\n    async executeModuleInstall({ moduleInitData, account }) {\n        try {\n            validateRequired(moduleInitData, 'moduleInitData');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'executeModuleInstall', args: [moduleInitData],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'executeModuleInstall');\n        }\n    },\n\n    async cancelModuleInstall({ account }) {\n        try {\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'cancelModuleInstall', args: [],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cancelModuleInstall');\n        }\n    },\n\n    async setModuleInstallTimelock({ newTimelock, guardianSigs, account }) {\n        try {\n            validateRequired(guardianSigs, 'guardianSigs');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'setModuleInstallTimelock', args: [newTimelock, guardianSigs],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setModuleInstallTimelock');\n        }\n    },\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, keccak256, encodeAbiParameters } from 'viem';\nimport { AAStarAirAccountFactoryV7ABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\nimport type { InitConfig } from './airAccount.js';\n\nexport type AirAccountFactoryActions = {\n    // CREATE2 address prediction with full InitConfig + chain-qualified id (v0.22.0: 5-arg — the salt\n    // binds ownerP256X/Y, so pass the SAME passkey coords as createAccount; omit for no-passkey accounts).\n    getAddressWithChainId: (args: { owner: Address, salt: bigint, config: InitConfig, ownerP256X?: Hex, ownerP256Y?: Hex }) => Promise<{ account: Address, chainQualified: Hex }>;\n    // CREATE2 address prediction for createAccountWithDefaults. The guardian identities are folded\n    // into the address (contract security fix), so they MUST match the guardians passed to\n    // createAccountWithDefaults or the predicted address will not match the deployed one.\n    getAddressWithDefaults: (args: { owner: Address, salt: bigint, guardian1: Address, guardian2: Address, dailyLimit: bigint }) => Promise<Address>;\n    // getAddress(owner, salt, config, ownerP256X, ownerP256Y) -> CREATE2 prediction (v0.22.0).\n    // The clone salt now includes keccak256(configHash, ownerP256X, ownerP256Y), so the SAME passkey\n    // coords passed to createAccount MUST be passed here. Omit them (default 0) for no-passkey accounts.\n    getAddress: (args: { owner: Address, salt: bigint, config: InitConfig, ownerP256X?: Hex, ownerP256Y?: Hex }) => Promise<Address>;\n    // createAccount (v0.22.0, 8 args) -> deploys an AirAccount, optionally injecting the owner WebAuthn\n    // passkey (ownerP256X/Y) at birth (no post-deploy setP256Key) and wiring the validator router at birth.\n    //  - Direct mode (default): ownerSig \"0x\", msg.sender must be the owner; nonce/deadline ignored.\n    //  - KMS relay mode: pass nonce (from createNonces(owner)), deadline, and the EIP-191 ownerSig over\n    //    keccak256(\"CREATE_ACCOUNT\", chainId, factory, owner, salt, ownerP256X, ownerP256Y, configHash, nonce, deadline).\n    createAccount: (args: {\n        owner: Address, salt: bigint, config: InitConfig,\n        ownerP256X?: Hex, ownerP256Y?: Hex, nonce?: bigint, deadline?: bigint, ownerSig?: Hex,\n        account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint,\n    }) => Promise<Hash>;\n    // createNonces(owner) -> the factory's anti-replay nonce for KMS-relay createAccount.\n    createNonces: (args: { owner: Address }) => Promise<bigint>;\n    // createAccountWithDefaults(owner, salt, guardian1, guardian1Sig, guardian2, guardian2Sig, dailyLimit)\n    // -> deploys an AirAccount using the factory's default guard/validator with up to two ECDSA\n    // guardians (each authorizing via signature). Args forwarded in exact ABI order.\n    createAccountWithDefaults: (args: {\n        owner: Address,\n        salt: bigint,\n        guardian1: Address,\n        guardian1Sig: Hex,\n        guardian2: Address,\n        guardian2Sig: Hex,\n        dailyLimit: bigint,\n        account?: Account | Address,\n        maxFeePerGas?: bigint,\n        maxPriorityFeePerGas?: bigint,\n    }) => Promise<Hash>;\n    // Chain-qualified id for an already-known account address.\n    getChainQualifiedAddress: (args: { account: Address }) => Promise<Hex>;\n    // Account implementation behind the factory's CREATE2 proxies.\n    implementation: () => Promise<Address>;\n    // Factory admin (owns default config + implementation pointer).\n    factoryAdmin: () => Promise<Address>;\n    // Guardian injected into accounts that opt into the community default.\n    defaultCommunityGuardian: () => Promise<Address>;\n\n    // ── Agent-account lifecycle ───────────────────────────────────────────────\n    // agentRegistry() -> address: AgentRegistry bound to this factory (the createAgentAccount target registry).\n    agentRegistry: () => Promise<Address>;\n    // getAgentAddress(address humanOwner, address agentKey, bytes32 agentId) -> address:\n    // CREATE2 prediction of the agent AirAccount before deployment.\n    getAgentAddress: (args: { humanOwner: Address, agentKey: Address, agentId: Hex }) => Promise<Address>;\n    // createAgentAccount(address agentKey, bytes32 agentId, address guardian2, bytes guardian2Sig,\n    //   bytes agentKeySig, uint48 deadline, uint256 dailyLimit) -> address account:\n    // Deploys the agent AirAccount (co-owned by the human guardian2) and registers it in the bound\n    // AgentRegistry in one transaction. Args forwarded in exact ABI order.\n    createAgentAccount: (args: {\n        agentKey: Address,\n        agentId: Hex,\n        guardian2: Address,\n        guardian2Sig: Hex,\n        agentKeySig: Hex,\n        deadline: bigint | number,\n        dailyLimit: bigint,\n        account?: Account | Address,\n        maxFeePerGas?: bigint,\n        maxPriorityFeePerGas?: bigint,\n    }) => Promise<Hash>;\n    // setAgentRegistry(address _agentRegistry): factory-admin-only setter for the bound AgentRegistry.\n    setAgentRegistry: (args: { agentRegistry: Address, account?: Account | Address }) => Promise<Hash>;\n};\n\nconst ABI = AAStarAirAccountFactoryV7ABI;\n/** bytes32(0) — \"no passkey\" / direct-mode default for the v0.22.0 createAccount/getAddress args. */\nconst ZERO_BYTES32 = `0x${'00'.repeat(32)}` as Hex;\n\n/**\n * Byte-exact replica of the factory's `internal pure _getConfigHash(InitConfig)`:\n * `keccak256(abi.encode(guardians, guardianP256X, guardianP256Y, dailyLimit, approvedAlgIds,\n *  minDailyLimit, initialTokens, initialTokenConfigs))`. Field order is consensus-critical — it feeds\n * both the CREATE2 clone salt and the relay-mode ownerSig digest. The factory has NO public view for\n * this (airaccount-contract#155), so the SDK mirrors it here; the on-chain relay-deploy e2e is the\n * cross-check that the replica matches (a wrong byte => the deploy reverts InvalidOwnerSignature).\n */\nexport function configHashFromInitConfig(config: InitConfig): Hex {\n    return keccak256(encodeAbiParameters(\n        [\n            { type: 'address[3]' },   // guardians\n            { type: 'bytes32[3]' },   // guardianP256X\n            { type: 'bytes32[3]' },   // guardianP256Y\n            { type: 'uint256' },      // dailyLimit\n            { type: 'uint8[]' },      // approvedAlgIds\n            { type: 'uint256' },      // minDailyLimit\n            { type: 'address[]' },    // initialTokens\n            { type: 'tuple[]', components: [{ type: 'uint128' }, { type: 'uint128' }, { type: 'uint256' }] }, // initialTokenConfigs\n        ],\n        [\n            config.guardians as readonly Address[],\n            config.guardianP256X as readonly Hex[],\n            config.guardianP256Y as readonly Hex[],\n            config.dailyLimit,\n            config.approvedAlgIds.map((a) => BigInt(a)),\n            config.minDailyLimit,\n            config.initialTokens as readonly Address[],\n            config.initialTokenConfigs.map((t) => [t.tier1Limit, t.tier2Limit, t.dailyLimit]),\n        ] as never\n    ));\n}\n\n/**\n * Build the **inner** CREATE_ACCOUNT digest the v0.22.0 factory recovers the relay-mode `ownerSig`\n * against (KMS / deployer-relayed deploy where `msg.sender != owner`):\n * `keccak256(abi.encode(\"CREATE_ACCOUNT\", chainId, factory, owner, salt, ownerP256X, ownerP256Y,\n *  _getConfigHash(config), nonce, deadline))`.\n *\n * The factory then applies EIP-191 (`toEthSignedMessageHash`) before `ecrecover`, so the OWNER signs\n * this hash with a personal-sign / EIP-191 signer — viem `signMessage({ message: { raw } })` or the KMS\n * owner-key sign — and that signature is passed as `createAccount(..., ownerSig)`. `nonce` must equal\n * `createNonces(owner)` and `deadline` must be in the future. Returns the raw 32-byte hash (NOT\n * EIP-191-wrapped). See [[#249]].\n */\nexport function buildCreateAccountHash(args: {\n    chainId: number | bigint;\n    factory: Address;\n    owner: Address;\n    salt: bigint;\n    ownerP256X: Hex;\n    ownerP256Y: Hex;\n    config: InitConfig;\n    nonce: bigint;\n    deadline: bigint;\n}): Hex {\n    const configHash = configHashFromInitConfig(args.config);\n    return keccak256(encodeAbiParameters(\n        [\n            { type: 'string' },   // \"CREATE_ACCOUNT\"\n            { type: 'uint256' },  // chainId\n            { type: 'address' },  // factory (address(this))\n            { type: 'address' },  // owner\n            { type: 'uint256' },  // salt\n            { type: 'bytes32' },  // ownerP256X\n            { type: 'bytes32' },  // ownerP256Y\n            { type: 'bytes32' },  // _getConfigHash(config)\n            { type: 'uint256' },  // nonce\n            { type: 'uint256' },  // deadline\n        ],\n        [\n            'CREATE_ACCOUNT',\n            BigInt(args.chainId),\n            args.factory,\n            args.owner,\n            args.salt,\n            args.ownerP256X,\n            args.ownerP256Y,\n            configHash,\n            args.nonce,\n            args.deadline,\n        ]\n    ));\n}\n\nexport const airAccountFactoryActions = (address: Address) => (client: PublicClient | WalletClient): AirAccountFactoryActions => ({\n    async getAddress({ owner, salt, config, ownerP256X, ownerP256Y }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateRequired(config, 'config');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAddress',\n                args: [owner, salt, config, ownerP256X ?? ZERO_BYTES32, ownerP256Y ?? ZERO_BYTES32]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAddress');\n        }\n    },\n    async createAccount({ owner, salt, config, ownerP256X, ownerP256Y, nonce, deadline, ownerSig, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateRequired(config, 'config');\n            return await (client as WalletClient).writeContract({\n                address, abi: ABI, functionName: 'createAccount',\n                args: [owner, salt, config, ownerP256X ?? ZERO_BYTES32, ownerP256Y ?? ZERO_BYTES32, nonce ?? 0n, deadline ?? 0n, ownerSig ?? '0x'],\n                account: account as any, chain: (client as any).chain,\n                ...(maxFeePerGas !== undefined ? { maxFeePerGas } : {}),\n                ...(maxPriorityFeePerGas !== undefined ? { maxPriorityFeePerGas } : {}),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createAccount');\n        }\n    },\n    async createNonces({ owner }) {\n        try {\n            validateAddress(owner, 'owner');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'createNonces', args: [owner]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createNonces');\n        }\n    },\n    async createAccountWithDefaults({ owner, salt, guardian1, guardian1Sig, guardian2, guardian2Sig, dailyLimit, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateAddress(guardian1, 'guardian1');\n            validateRequired(guardian1Sig, 'guardian1Sig');\n            validateAddress(guardian2, 'guardian2');\n            validateRequired(guardian2Sig, 'guardian2Sig');\n            // Args forwarded in exact ABI order:\n            // (owner, salt, guardian1, guardian1Sig, guardian2, guardian2Sig, dailyLimit)\n            return await (client as WalletClient).writeContract({\n                address, abi: ABI, functionName: 'createAccountWithDefaults',\n                args: [owner, salt, guardian1, guardian1Sig, guardian2, guardian2Sig, dailyLimit],\n                account: account as any, chain: (client as any).chain,\n                ...(maxFeePerGas !== undefined ? { maxFeePerGas } : {}),\n                ...(maxPriorityFeePerGas !== undefined ? { maxPriorityFeePerGas } : {}),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createAccountWithDefaults');\n        }\n    },\n    async getAddressWithChainId({ owner, salt, config, ownerP256X, ownerP256Y }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateRequired(config, 'config');\n            const r = await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAddressWithChainId',\n                args: [owner, salt, config, ownerP256X ?? ZERO_BYTES32, ownerP256Y ?? ZERO_BYTES32]\n            }) as readonly [Address, Hex];\n            return { account: r[0], chainQualified: r[1] };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAddressWithChainId');\n        }\n    },\n\n    async getAddressWithDefaults({ owner, salt, guardian1, guardian2, dailyLimit }) {\n        try {\n            validateAddress(owner, 'owner');\n            validateAddress(guardian1, 'guardian1');\n            validateAddress(guardian2, 'guardian2');\n            // args[2]/args[3] MUST be the real guardian1/guardian2 (same as createAccountWithDefaults):\n            // the contract folds them into the CREATE2 salt, so passing anything else (previously the\n            // ignored guard/validator) would return an address that does not match the deployed account.\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAddressWithDefaults', args: [owner, salt, guardian1, guardian2, dailyLimit]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAddressWithDefaults');\n        }\n    },\n\n    async getChainQualifiedAddress({ account }) {\n        try {\n            validateAddress(account, 'account');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getChainQualifiedAddress', args: [account]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getChainQualifiedAddress');\n        }\n    },\n\n    async implementation() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'implementation', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'implementation');\n        }\n    },\n\n    async factoryAdmin() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'factoryAdmin', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'factoryAdmin');\n        }\n    },\n\n    async defaultCommunityGuardian() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'defaultCommunityGuardian', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'defaultCommunityGuardian');\n        }\n    },\n\n    async agentRegistry() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'agentRegistry', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'agentRegistry');\n        }\n    },\n\n    async getAgentAddress({ humanOwner, agentKey, agentId }) {\n        try {\n            validateAddress(humanOwner, 'humanOwner');\n            validateAddress(agentKey, 'agentKey');\n            validateRequired(agentId, 'agentId');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAgentAddress', args: [humanOwner, agentKey, agentId]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAgentAddress');\n        }\n    },\n\n    async createAgentAccount({ agentKey, agentId, guardian2, guardian2Sig, agentKeySig, deadline, dailyLimit, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateAddress(agentKey, 'agentKey');\n            validateRequired(agentId, 'agentId');\n            validateAddress(guardian2, 'guardian2');\n            validateRequired(guardian2Sig, 'guardian2Sig');\n            validateRequired(agentKeySig, 'agentKeySig');\n            // Args forwarded in exact ABI order:\n            // (agentKey, agentId, guardian2, guardian2Sig, agentKeySig, deadline, dailyLimit)\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'createAgentAccount',\n                args: [agentKey, agentId, guardian2, guardian2Sig, agentKeySig, deadline, dailyLimit],\n                account: account as any, chain: (client as any).chain,\n                ...(maxFeePerGas !== undefined ? { maxFeePerGas } : {}),\n                ...(maxPriorityFeePerGas !== undefined ? { maxPriorityFeePerGas } : {}),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'createAgentAccount');\n        }\n    },\n\n    async setAgentRegistry({ agentRegistry, account }) {\n        try {\n            validateAddress(agentRegistry, 'agentRegistry');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'setAgentRegistry', args: [agentRegistry],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'setAgentRegistry');\n        }\n    },\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account, numberToHex } from 'viem';\nimport { AAStarAirAccountV7ABI, AirAccountExtensionABI } from '../abis/index.js';\nimport { validateRequired } from '../validators/index.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\n/**\n * AirAccount v0.20.0 extension surface — the P-256 / WebAuthn guardian functions\n * relocated into `AirAccountExtension` and reached through the V7 account's\n * `fallback`→`delegatecall` boundary. These actions are bound to (and called\n * against) the ACCOUNT address; the account routes them to the extension\n * internally, so the on-chain `address` here is the smart-account address, never\n * the extension's own address.\n *\n * ## P-256 (passkey) guardian feature — fully wired (Batch 2)\n * The full P-256 / WebAuthn guardian feature (passkey-signed recovery, mixed\n * ECDSA+P-256 guardian consensus) landed in the contracts at v0.20.0 and is wired\n * end-to-end here: the two VIEW reads plus the eight state-changing writes.\n *\n * The `sig` blobs these writes consume are built by the core crypto module\n * (`@aastar/core` → `buildP256GuardianChallenge` / `encodeWebAuthnAssertion` /\n * `signP256GuardianAssertion` in `crypto/p256Guardian.ts`). This action layer is the\n * thin calldata wrapper; the security-critical encoding lives in that module and is\n * decode-verified against a live Sepolia tx (see `tests/regression/onchain-evidence/`).\n *\n * ## Guardian bootstrap is guardianSig-free (spec §5.1 / §9)\n * `addP256Guardian(x, y)` is **owner-only** and requires `_guardianCount < RECOVERY_THRESHOLD`\n * (a single guardian can't form a quorum), so the FIRST P-256 guardian(s) need NO guardian\n * signature — only the owner. The same holds for init-time setup via `InitConfig.guardianP256X/Y`\n * (one factory tx, no window). Once `RECOVERY_THRESHOLD` guardians exist, expansion requires\n * consensus via `addP256GuardianWithMixedSigs` / `addGuardianWithMixedSigs`.\n *\n * The plain ECDSA recovery lifecycle (`proposeRecovery` / `approveRecovery` /\n * `executeRecovery` / `cancelRecovery`) is unchanged at the byte level and is encoded by\n * the AirAccount server's `RecoveryService` against the account address — NOT re-declared here.\n */\n/**\n * Storage slots of the mixed-sig operation nonces, taken VERBATIM from the contract's shared layout\n * `AAStarAgentStorageLayout.sol` (forge-inspect-verified, identical for AAStarAirAccountV7 and\n * AirAccountExtension — the parity that makes the fallback→delegatecall sharing safe). These nonces\n * are `internal` (no public getter), so the SDK reads them via `eth_getStorageAt`.\n *\n *   slot 15 — `_guardianRemovalNonce`   (AAStarAgentStorageLayout.sol:118)\n *   slot 16 — `_tierLimitNonce`         (AAStarAgentStorageLayout.sol:119)\n *   slot 38 — `_recoveryNonce`          (AAStarAgentStorageLayout.sol:182; also the public `getRecoveryNonce()`)\n *   slot 39 — `_guardianAdditionNonce`  (AAStarAgentStorageLayout.sol:186)\n */\nexport const GUARDIAN_REMOVAL_NONCE_SLOT = 15n;\nexport const TIER_LIMIT_NONCE_SLOT = 16n;\nexport const RECOVERY_NONCE_SLOT = 38n;\nexport const GUARDIAN_ADDITION_NONCE_SLOT = 39n;\n\n/** Highest valid guardian slot index (the contract hard-caps the guardian set at 3: slots 0..2). */\nexport const MAX_GUARDIAN_SLOT = 2;\n\nexport type AirAccountExtensionActions = {\n    // ── Views (real reads against the account address) ────────────────────────\n    /** `getRecoveryNonce()` — monotonic nonce that domain-separates P-256 / mixed-sig recovery payloads. */\n    getRecoveryNonce: () => Promise<bigint>;\n    /** `getGuardianP256Key(index)` — the (x, y) secp256r1 pubkey of guardian slot `index` (zero pair ⇒ not a P-256 guardian). */\n    getGuardianP256Key: (args: { index: number }) => Promise<{ x: Hex, y: Hex }>;\n    /**\n     * `_guardianAdditionNonce` — the nonce bound into ADD_GUARDIAN / ADD_P256_GUARDIAN challenges.\n     * Read from internal storage slot 39 (no public getter). MUST be re-fetched immediately before\n     * collecting guardian signatures for `add*WithMixedSigs` (any successful add increments it).\n     */\n    getGuardianAdditionNonce: () => Promise<bigint>;\n    /**\n     * `_guardianRemovalNonce` — the nonce bound into REMOVE_GUARDIAN challenges. Read from internal\n     * storage slot 15 (no public getter). Re-fetch immediately before signing `removeGuardianWithMixedSigs`.\n     */\n    getGuardianRemovalNonce: () => Promise<bigint>;\n    /**\n     * `_tierLimitNonce` — the nonce bound into MODIFY_TIER_LIMITS challenges. Read from internal\n     * storage slot 16 (no public getter). Re-fetch immediately before signing `modifyTierLimitsWithMixedGuardians`.\n     */\n    getTierLimitNonce: () => Promise<bigint>;\n\n    // ── P-256 / WebAuthn guardian writes (real calldata) ──────────────────────\n    /** `addP256Guardian(x, y)` — owner-only bootstrap of a passkey guardian (no guardianSig while `count < threshold`). */\n    addP256Guardian: (args: { x: Hex, y: Hex, account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `addP256GuardianWithMixedSigs(x, y, signerIdxs, sigs)` — add a passkey guardian once `count >= threshold` (consensus required). */\n    addP256GuardianWithMixedSigs: (args: { x: Hex, y: Hex, signerIdxs: readonly number[], sigs: readonly Hex[], account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `addGuardianWithMixedSigs(guardian, signerIdxs, sigs)` — add an ECDSA guardian with mixed-type guardian consensus. */\n    addGuardianWithMixedSigs: (args: { guardian: Address, signerIdxs: readonly number[], sigs: readonly Hex[], account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `proposeRecoveryWithSig(newOwner, gIdx, sig)` — passkey guardian proposes recovery (any relayer submits). */\n    proposeRecoveryWithSig: (args: { newOwner: Address, gIdx: number, sig: Hex, account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `approveRecoveryWithSig(gIdx, sig)` — passkey guardian approves the active recovery proposal. */\n    approveRecoveryWithSig: (args: { gIdx: number, sig: Hex, account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `cancelRecoveryWithSig(gIdx, sig)` — passkey guardian votes to cancel the active recovery proposal. */\n    cancelRecoveryWithSig: (args: { gIdx: number, sig: Hex, account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `removeGuardianWithMixedSigs(index, signerIdxs, sigs)` — owner-only removal with mixed-type guardian consensus. */\n    removeGuardianWithMixedSigs: (args: { index: number, signerIdxs: readonly number[], sigs: readonly Hex[], account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n    /** `modifyTierLimitsWithMixedGuardians(tier1, tier2, deadline, signerIdxs, sigs)` — owner-only tier change with mixed consensus. */\n    modifyTierLimitsWithMixedGuardians: (args: { tier1: bigint, tier2: bigint, deadline: bigint, signerIdxs: readonly number[], sigs: readonly Hex[], account?: Account | Address, maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint }) => Promise<Hash>;\n};\n\nconst V7_ABI = AAStarAirAccountV7ABI;\nconst EXT_ABI = AirAccountExtensionABI;\n\n/** Spread EIP-1559 fee overrides into a write only when provided. */\nfunction feeOverrides(maxFeePerGas?: bigint, maxPriorityFeePerGas?: bigint) {\n    return {\n        ...(maxFeePerGas !== undefined ? { maxFeePerGas } : {}),\n        ...(maxPriorityFeePerGas !== undefined ? { maxPriorityFeePerGas } : {}),\n    };\n}\n\n/**\n * Pre-validate mixed-sig inputs LOCALLY, mirroring the static parts of the contract's checks so a\n * malformed call fails before wasting on-chain gas + a real guardian signature. Enforces:\n *  - `signerIdxs.length == sigs.length`,\n *  - `length >= RECOVERY_THRESHOLD (2)` (the contract's `InsufficientGuardianApprovals` floor),\n *  - every index is an integer in `0..MAX_GUARDIAN_SLOT (2)` (the hard 3-guardian cap; the tighter\n *    `< guardianCount` bound is still enforced on-chain since it needs a live read),\n *  - no duplicate index (the contract's `DuplicateGuardianSig` bitmap check).\n */\nfunction validateMixedSigs(signerIdxs: readonly number[], sigs: readonly Hex[]): void {\n    validateRequired(signerIdxs, 'signerIdxs');\n    validateRequired(sigs, 'sigs');\n    if (signerIdxs.length !== sigs.length) {\n        throw new AAStarError(\n            ErrorCode.INVALID_PARAMETER,\n            `signerIdxs (${signerIdxs.length}) and sigs (${sigs.length}) must have equal length`,\n        );\n    }\n    if (signerIdxs.length < 2) {\n        throw new AAStarError(\n            ErrorCode.INVALID_PARAMETER,\n            `mixed-sig guardian operations require at least RECOVERY_THRESHOLD (2) signatures, got ${signerIdxs.length}`,\n        );\n    }\n    const seen = new Set<number>();\n    for (const idx of signerIdxs) {\n        if (!Number.isInteger(idx) || idx < 0 || idx > MAX_GUARDIAN_SLOT) {\n            throw new AAStarError(\n                ErrorCode.INVALID_PARAMETER,\n                `signerIdxs must be integers in 0..${MAX_GUARDIAN_SLOT} (max ${MAX_GUARDIAN_SLOT + 1} guardian slots), got ${idx}`,\n            );\n        }\n        if (seen.has(idx)) {\n            throw new AAStarError(\n                ErrorCode.INVALID_PARAMETER,\n                `signerIdxs must be unique (the contract rejects a duplicate guardian slot via DuplicateGuardianSig), got repeated ${idx}`,\n            );\n        }\n        seen.add(idx);\n    }\n}\n\n/** Read a `uint256` storage slot of the account and decode it to a bigint. */\nasync function readNonceSlot(client: PublicClient | WalletClient, address: Address, slot: bigint, fn: string): Promise<bigint> {\n    try {\n        const raw = await (client as PublicClient).getStorageAt({ address, slot: numberToHex(slot, { size: 32 }) });\n        return raw && raw !== '0x' ? BigInt(raw) : 0n;\n    } catch (error) {\n        throw AAStarError.fromViemError(error as Error, fn);\n    }\n}\n\nexport const airAccountExtensionActions = (address: Address) => (client: PublicClient | WalletClient): AirAccountExtensionActions => ({\n    // ── Views ─────────────────────────────────────────────────────────────────\n    async getRecoveryNonce() {\n        try {\n            // getRecoveryNonce lives on the V7 account surface (read against the account).\n            return await (client as PublicClient).readContract({\n                address, abi: V7_ABI, functionName: 'getRecoveryNonce', args: []\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getRecoveryNonce');\n        }\n    },\n\n    async getGuardianP256Key({ index }) {\n        try {\n            validateRequired(index, 'index');\n            // Routed to AirAccountExtension via the account fallback → read against the account.\n            const r = await (client as PublicClient).readContract({\n                address, abi: EXT_ABI, functionName: 'getGuardianP256Key', args: [index]\n            }) as readonly [Hex, Hex];\n            return { x: r[0], y: r[1] };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getGuardianP256Key');\n        }\n    },\n\n    // Internal-slot nonce reads (no public getter on-chain). Cross-validated on-chain against\n    // `getRecoveryNonce()` (slot 38) in tests/regression/onchain-evidence/p256-guardian-e2e.ts.\n    getGuardianAdditionNonce() {\n        return readNonceSlot(client, address, GUARDIAN_ADDITION_NONCE_SLOT, 'getGuardianAdditionNonce');\n    },\n    getGuardianRemovalNonce() {\n        return readNonceSlot(client, address, GUARDIAN_REMOVAL_NONCE_SLOT, 'getGuardianRemovalNonce');\n    },\n    getTierLimitNonce() {\n        return readNonceSlot(client, address, TIER_LIMIT_NONCE_SLOT, 'getTierLimitNonce');\n    },\n\n    // ── P-256 / WebAuthn guardian writes ───────────────────────────────────────\n    // Each routes to AirAccountExtension via the account's fallback → delegatecall,\n    // so `address` (the account) is the write target and `functionName` is the EXT fn.\n    async addP256Guardian({ x, y, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(x, 'x');\n            validateRequired(y, 'y');\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'addP256Guardian', args: [x, y],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addP256Guardian');\n        }\n    },\n\n    async addP256GuardianWithMixedSigs({ x, y, signerIdxs, sigs, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(x, 'x');\n            validateRequired(y, 'y');\n            validateMixedSigs(signerIdxs, sigs);\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'addP256GuardianWithMixedSigs',\n                args: [x, y, signerIdxs as readonly number[], sigs as readonly Hex[]],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addP256GuardianWithMixedSigs');\n        }\n    },\n\n    async addGuardianWithMixedSigs({ guardian, signerIdxs, sigs, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(guardian, 'guardian');\n            validateMixedSigs(signerIdxs, sigs);\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'addGuardianWithMixedSigs',\n                args: [guardian, signerIdxs as readonly number[], sigs as readonly Hex[]],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'addGuardianWithMixedSigs');\n        }\n    },\n\n    async proposeRecoveryWithSig({ newOwner, gIdx, sig, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(newOwner, 'newOwner');\n            validateRequired(gIdx, 'gIdx');\n            validateRequired(sig, 'sig');\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'proposeRecoveryWithSig', args: [newOwner, gIdx, sig],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'proposeRecoveryWithSig');\n        }\n    },\n\n    async approveRecoveryWithSig({ gIdx, sig, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(gIdx, 'gIdx');\n            validateRequired(sig, 'sig');\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'approveRecoveryWithSig', args: [gIdx, sig],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'approveRecoveryWithSig');\n        }\n    },\n\n    async cancelRecoveryWithSig({ gIdx, sig, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(gIdx, 'gIdx');\n            validateRequired(sig, 'sig');\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'cancelRecoveryWithSig', args: [gIdx, sig],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'cancelRecoveryWithSig');\n        }\n    },\n\n    async removeGuardianWithMixedSigs({ index, signerIdxs, sigs, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(index, 'index');\n            validateMixedSigs(signerIdxs, sigs);\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'removeGuardianWithMixedSigs',\n                args: [index, signerIdxs as readonly number[], sigs as readonly Hex[]],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'removeGuardianWithMixedSigs');\n        }\n    },\n\n    async modifyTierLimitsWithMixedGuardians({ tier1, tier2, deadline, signerIdxs, sigs, account, maxFeePerGas, maxPriorityFeePerGas }) {\n        try {\n            validateRequired(tier1, 'tier1');\n            validateRequired(tier2, 'tier2');\n            validateRequired(deadline, 'deadline');\n            validateMixedSigs(signerIdxs, sigs);\n            return await (client as WalletClient).writeContract({\n                address, abi: EXT_ABI, functionName: 'modifyTierLimitsWithMixedGuardians',\n                args: [tier1, tier2, deadline, signerIdxs as readonly number[], sigs as readonly Hex[]],\n                account: account as any, chain: (client as any).chain,\n                ...feeOverrides(maxFeePerGas, maxPriorityFeePerGas),\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'modifyTierLimitsWithMixedGuardians');\n        }\n    },\n});\n","/**\n * Validator-router gating for AAStarAirAccount signature algorithms.\n *\n * Background (root-caused on-chain, v0.20.0): an AirAccount validates a signature\n * algorithm in one of two ways:\n *\n *   - INLINE — handled directly by `AAStarAirAccountBase` itself: ECDSA (0x02),\n *     P256 / passkey (0x03), and COMBINED_T1 (0x06). No external validator needed.\n *   - ROUTER-DELEGATED — every other algId (BLS 0x01, cumulative T2 0x04, T3 0x05,\n *     weighted 0x07, session 0x08, ...) is forwarded to the account's validator\n *     router. Until the router is wired, `_validateTripleSignature` / `_callBLSValidator`\n *     return `1` (validation FAIL) because `validator() == address(0)`.\n *\n * The factory does NOT auto-wire the router, so an account that approved any\n * router-delegated algId is non-functional for that algId until the owner calls\n * `setValidator(router)` (onlyOwner, SET-ONCE). This module decides, from the set of\n * approved algIds, whether that wiring step is required.\n */\n\n/**\n * algIds handled INLINE by `AAStarAirAccountBase` — these need NO validator router.\n *   0x02 = ECDSA, 0x03 = P256 (passkey), 0x06 = COMBINED_T1.\n */\nexport const INLINE_ALG_IDS: readonly number[] = [0x02, 0x03, 0x06];\n\n/**\n * True when AT LEAST ONE approved algId is router-delegated (i.e. NOT inline), meaning\n * the account cannot validate that algorithm until `setValidator(router)` is wired.\n *\n * An empty list (no algorithms approved) returns `false` — nothing to route.\n *\n * @param approvedAlgIds - the algIds approved on the account (e.g. the account record's\n *                         `approvedAlgIds`, or the InitConfig's `approvedAlgIds`).\n */\nexport function needsValidatorRouter(approvedAlgIds: readonly number[]): boolean {\n  return approvedAlgIds.some((algId) => !INLINE_ALG_IDS.includes(algId));\n}\n","import { type Address, type Hex, isAddressEqual, size, isHex } from 'viem';\nimport type { InitConfig, TokenConfig } from './airAccount.js';\nimport { AAStarError, ErrorCode } from '../errors/index.js';\n\n/**\n * High-level `InitConfig` builder for v0.20.0 account creation — wires P-256 (passkey)\n * guardians through the factory's 8-field `InitConfig` (airaccount-contract #120, spec §9).\n *\n * Each guardian slot is either:\n *   - an **ECDSA** guardian (`{ ecdsa: 0x… }`) → `guardians[i] = addr`, `guardianP256X/Y[i] = 0`, or\n *   - a **P-256** passkey guardian (`{ p256: { x, y } }`) → `guardians[i] = address(0)`,\n *     `guardianP256X/Y[i] = (x, y)`. The contract converts this to the `0x7026` sentinel + parallel\n *     `(x, y)` storage at init.\n *\n * Mirrors and pre-checks the on-chain invariants the contract's `_initialize` enforces (so a bad\n * config fails locally with a clear message, not as an opaque `InvalidGuardian` revert):\n *   - an ECDSA slot carries NO P-256 coordinates,\n *   - P-256 coordinates are all-or-nothing (`x == 0` iff `y == 0`),\n *   - ≤ 3 guardian slots, and the `0x7026` sentinel is never used as a plain ECDSA address.\n *\n * Feed the result straight into `airAccountFactoryActions(factory).createAccount({ owner, salt, config })`.\n */\n\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address;\nconst ZERO32 = `0x${'00'.repeat(32)}` as Hex;\nconst P256_GUARDIAN_SENTINEL = '0x0000000000000000000000000000000000007026' as Address;\n// AAStarAirAccountBase.sol algId constants (verified): ALG_BLS=0x01, ALG_ECDSA=0x02, ALG_P256=0x03.\n// NOTE (#118 H1 fix): the passkey/P-256 validation route matches firstByte == 0x03\n// (AAStarAirAccountBase.sol:604). A prior value of `1` here was ALG_BLS — it wrongly whitelisted BLS\n// and OMITTED P-256 from the default approvedAlgIds.\nconst ALG_ECDSA = 0x02;\nconst ALG_PASSKEY_P256 = 0x03;\n\n/** One guardian slot for {@link buildInitConfig}: supply EXACTLY one of `ecdsa` or `p256`. */\nexport interface GuardianSpec {\n    /** An ECDSA (EOA / Safe) guardian address. Mutually exclusive with `p256`. */\n    ecdsa?: Address;\n    /** A P-256 (WebAuthn passkey) guardian public key (x, y, each bytes32). Mutually exclusive with `ecdsa`. */\n    p256?: { x: Hex; y: Hex };\n}\n\n/** Parameters for {@link buildInitConfig}. */\nexport interface BuildInitConfigParams {\n    /** Up to 3 guardian slots (ECDSA and/or P-256, freely mixed). Empty/omitted ⇒ no guardians. */\n    guardians?: readonly GuardianSpec[];\n    /** Per-account daily spend limit (wei). Must be > 0 to enable the on-chain GUARD. */\n    dailyLimit: bigint;\n    /**\n     * Validator algorithm ids approved at init (0x02 = ECDSA, 0x03 = P-256/passkey). If omitted,\n     * deriving from the owner/guardian mix is NOT possible (owner alg is separate), so it defaults\n     * to `[0x02]` (ECDSA) plus `0x03` (P-256) when any P-256 guardian is present — i.e. `[0x02, 0x03]`.\n     */\n    approvedAlgIds?: readonly number[];\n    /** Floor the daily limit can be decreased to via the guard. Defaults to 0. */\n    minDailyLimit?: bigint;\n    /** ERC-20 tokens to pre-register with the guard. Defaults to none. */\n    initialTokens?: readonly Address[];\n    /** Per-token tier configs, index-aligned with `initialTokens`. Defaults to none. */\n    initialTokenConfigs?: readonly TokenConfig[];\n    /**\n     * NATIVE-ETH tier-1 ceiling (wei). airaccount-contract #161 (v0.29.0) folded the ETH tiers into\n     * InitConfig — before that they lived in separate storage slots set via `setTierLimits`, so the\n     * struct went 8 -> 10 fields and became a BREAKING ABI change. `0` = unconfigured, which keeps\n     * the pre-#161 behaviour; the field must still be PRESENT or viem encodes `undefined` and\n     * `createAccount` / `getAddress` revert.\n     */\n    tier1Limit?: bigint;\n    /** NATIVE-ETH tier-2 ceiling (wei). Same #161 note as {@link tier1Limit}; `0` = unconfigured. */\n    tier2Limit?: bigint;\n}\n\nfunction isZero32(v: Hex): boolean {\n    return /^0x0*$/.test(v);\n}\n\n/**\n * Build a v0.20.0 `InitConfig` with mixed ECDSA + P-256 guardians.\n * @throws {AAStarError} if any slot is ambiguous, the sentinel is misused, or > 3 guardians are given.\n */\nexport function buildInitConfig(params: BuildInitConfigParams): InitConfig {\n    const specs = params.guardians ?? [];\n    if (specs.length > 3) {\n        throw new AAStarError(ErrorCode.INVALID_PARAMETER, `at most 3 guardians are supported, got ${specs.length}`);\n    }\n    if (params.dailyLimit <= 0n) {\n        throw new AAStarError(ErrorCode.INVALID_PARAMETER, 'dailyLimit must be > 0 to enable the on-chain GUARD');\n    }\n\n    const guardians: [Address, Address, Address] = [ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS];\n    const guardianP256X: [Hex, Hex, Hex] = [ZERO32, ZERO32, ZERO32];\n    const guardianP256Y: [Hex, Hex, Hex] = [ZERO32, ZERO32, ZERO32];\n    let hasP256 = false;\n\n    specs.forEach((spec, i) => {\n        const hasEcdsa = spec.ecdsa !== undefined && spec.ecdsa !== ZERO_ADDRESS;\n        const hasP256Key = spec.p256 !== undefined;\n        if (hasEcdsa && hasP256Key) {\n            throw new AAStarError(ErrorCode.INVALID_PARAMETER, `guardian[${i}]: supply exactly one of { ecdsa, p256 }, not both`);\n        }\n        if (!hasEcdsa && !hasP256Key) {\n            throw new AAStarError(ErrorCode.INVALID_PARAMETER, `guardian[${i}]: supply one of { ecdsa, p256 }`);\n        }\n\n        if (hasP256Key) {\n            const { x, y } = spec.p256!;\n            if (!isHex(x) || size(x) !== 32 || !isHex(y) || size(y) !== 32) {\n                throw new AAStarError(ErrorCode.INVALID_PARAMETER, `guardian[${i}].p256: x and y must each be 32-byte hex values`);\n            }\n            if (isZero32(x) || isZero32(y)) {\n                throw new AAStarError(ErrorCode.INVALID_PARAMETER, `guardian[${i}].p256: x and y must be non-zero (all-or-nothing per the contract)`);\n            }\n            guardians[i] = ZERO_ADDRESS;\n            guardianP256X[i] = x;\n            guardianP256Y[i] = y;\n            hasP256 = true;\n        } else {\n            const ecdsa = spec.ecdsa!;\n            if (isAddressEqual(ecdsa, P256_GUARDIAN_SENTINEL)) {\n                throw new AAStarError(ErrorCode.INVALID_PARAMETER, `guardian[${i}].ecdsa: the P-256 sentinel ${P256_GUARDIAN_SENTINEL} is not a valid ECDSA guardian`);\n            }\n            guardians[i] = ecdsa;\n        }\n    });\n\n    const approvedAlgIds = params.approvedAlgIds\n        ?? (hasP256 ? [ALG_ECDSA, ALG_PASSKEY_P256] : [ALG_ECDSA]);\n\n    return {\n        guardians,\n        guardianP256X,\n        guardianP256Y,\n        dailyLimit: params.dailyLimit,\n        approvedAlgIds,\n        minDailyLimit: params.minDailyLimit ?? 0n,\n        initialTokens: params.initialTokens ?? [],\n        initialTokenConfigs: params.initialTokenConfigs ?? [],\n        // #161: always emitted, defaulting to 0 (= unconfigured). Omitting them entirely is what\n        // makes viem encode `undefined` against the v0.29.0+ factory and revert.\n        tier1Limit: params.tier1Limit ?? 0n,\n        tier2Limit: params.tier2Limit ?? 0n,\n    };\n}\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { AgentRegistryABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\nexport type AgentRegistryActions = {\n    // ── Reads ───────────────────────────────────────────────────────────────\n    deployer: () => Promise<Address>;\n    factory: () => Promise<Address>;\n    // isRegisteredAgent(address agentWallet) -> bool: true once the agent wallet is bound to a human owner.\n    isRegisteredAgent: (args: { agentWallet: Address }) => Promise<boolean>;\n    // isValidAccount(address account) -> bool: true for factory-deployed accounts flagged via markValid.\n    isValidAccount: (args: { account: Address }) => Promise<boolean>;\n    // getHumanOwner(address agentWallet) -> address: the human owner that registered the agent wallet.\n    getHumanOwner: (args: { agentWallet: Address }) => Promise<Address>;\n    // agentWalletOwner(address agentWallet) -> address: raw mapping getter (agent wallet -> human owner).\n    agentWalletOwner: (args: { agentWallet: Address }) => Promise<Address>;\n    // getAgentCount(address owner) -> uint256: number of agent wallets registered under a human owner.\n    getAgentCount: (args: { owner: Address }) => Promise<bigint>;\n    // getAgents(address humanOwner) -> address[]: all agent wallets registered under a human owner.\n    getAgents: (args: { humanOwner: Address }) => Promise<Address[]>;\n    // getAgentsPage(address owner, uint256 start, uint256 count) -> address[]: paginated agent wallet list.\n    getAgentsPage: (args: { owner: Address, start: bigint, count: bigint }) => Promise<Address[]>;\n    // getAgentByIndex(address owner, uint256 index) -> address: agent wallet at a position in the owner's list.\n    getAgentByIndex: (args: { owner: Address, index: bigint }) => Promise<Address>;\n    // ownerAgents(address owner, uint256 index) -> address: raw array getter (owner -> agent wallet at index).\n    ownerAgents: (args: { owner: Address, index: bigint }) => Promise<Address>;\n\n    // ── Writes ──────────────────────────────────────────────────────────────\n    bindFactory: (args: { factory: Address, account?: Account | Address }) => Promise<Hash>;\n    markValid: (args: { account: Address, signer?: Account | Address }) => Promise<Hash>;\n    // ⚠️ registerAgent / revokeAgent / deregisterAgent require `msg.sender` to be a\n    // factory-created VALID AirAccount (the contract checks `isValidAccount[msg.sender]`,\n    // else reverts `CallerNotAirAccount`). They CANNOT be called from a bare EOA. These\n    // wrappers encode the correct call, but the on-chain caller must be an agent AirAccount\n    // — route them through `airAccountActions(agentAccount).executeFromExecutor` /\n    // the account's `execute(registry, 0, calldata)` (owner-signed). The registry's\n    // \"humanOwner\" recorded is that AirAccount address, not the owner EOA. Verified on\n    // Sepolia (Beta4 Phase 2 E2E): register tx 0x0ee94102…, revoke tx 0x68d0c3e7…\n    //\n    // registerAgent(address agentWallet, bytes agentWalletSig): binds an agent wallet,\n    // proving control via the agent wallet's EIP-191 sig over the REGISTER_AGENT payload.\n    registerAgent: (args: { agentWallet: Address, agentWalletSig: Hex, account?: Account | Address }) => Promise<Hash>;\n    // revokeAgent(address agentWallet): owner-initiated revocation (see caller caveat above).\n    revokeAgent: (args: { agentWallet: Address, account?: Account | Address }) => Promise<Hash>;\n    // deregisterAgent(address agentWallet): remove an agent wallet binding (see caller caveat above).\n    deregisterAgent: (args: { agentWallet: Address, account?: Account | Address }) => Promise<Hash>;\n};\n\nconst ABI = AgentRegistryABI;\n\nexport const agentRegistryActions = (address: Address) => (client: PublicClient | WalletClient): AgentRegistryActions => ({\n    async deployer() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'deployer', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'deployer');\n        }\n    },\n\n    async factory() {\n        try {\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'factory', args: []\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'factory');\n        }\n    },\n\n    async isRegisteredAgent({ agentWallet }) {\n        try {\n            validateAddress(agentWallet, 'agentWallet');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'isRegisteredAgent', args: [agentWallet]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isRegisteredAgent');\n        }\n    },\n\n    async isValidAccount({ account }) {\n        try {\n            validateAddress(account, 'account');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'isValidAccount', args: [account]\n            }) as boolean;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'isValidAccount');\n        }\n    },\n\n    async getHumanOwner({ agentWallet }) {\n        try {\n            validateAddress(agentWallet, 'agentWallet');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getHumanOwner', args: [agentWallet]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getHumanOwner');\n        }\n    },\n\n    async agentWalletOwner({ agentWallet }) {\n        try {\n            validateAddress(agentWallet, 'agentWallet');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'agentWalletOwner', args: [agentWallet]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'agentWalletOwner');\n        }\n    },\n\n    async getAgentCount({ owner }) {\n        try {\n            validateAddress(owner, 'owner');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAgentCount', args: [owner]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAgentCount');\n        }\n    },\n\n    async getAgents({ humanOwner }) {\n        try {\n            validateAddress(humanOwner, 'humanOwner');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAgents', args: [humanOwner]\n            }) as Address[];\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAgents');\n        }\n    },\n\n    async getAgentsPage({ owner, start, count }) {\n        try {\n            validateAddress(owner, 'owner');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAgentsPage', args: [owner, start, count]\n            }) as Address[];\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAgentsPage');\n        }\n    },\n\n    async getAgentByIndex({ owner, index }) {\n        try {\n            validateAddress(owner, 'owner');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'getAgentByIndex', args: [owner, index]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'getAgentByIndex');\n        }\n    },\n\n    async ownerAgents({ owner, index }) {\n        try {\n            validateAddress(owner, 'owner');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'ownerAgents', args: [owner, index]\n            }) as Address;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'ownerAgents');\n        }\n    },\n\n    async bindFactory({ factory, account }) {\n        try {\n            validateAddress(factory, 'factory');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'bindFactory', args: [factory],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'bindFactory');\n        }\n    },\n\n    // markValid(address account): flags an account as a factory-deployed valid agent.\n    async markValid({ account: target, signer }) {\n        try {\n            validateAddress(target, 'account');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'markValid', args: [target],\n                account: signer as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'markValid');\n        }\n    },\n\n    async registerAgent({ agentWallet, agentWalletSig, account }) {\n        try {\n            validateAddress(agentWallet, 'agentWallet');\n            validateRequired(agentWalletSig, 'agentWalletSig');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'registerAgent', args: [agentWallet, agentWalletSig],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'registerAgent');\n        }\n    },\n\n    async revokeAgent({ agentWallet, account }) {\n        try {\n            validateAddress(agentWallet, 'agentWallet');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'revokeAgent', args: [agentWallet],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'revokeAgent');\n        }\n    },\n\n    async deregisterAgent({ agentWallet, account }) {\n        try {\n            validateAddress(agentWallet, 'agentWallet');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'deregisterAgent', args: [agentWallet],\n                account: account as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'deregisterAgent');\n        }\n    },\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex, type Hash, type Account } from 'viem';\nimport { SessionKeyValidatorABI } from '../abis/index.js';\nimport { validateAddress, validateRequired } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n// sessionStates_p256() velocity-window state tuple.\nexport type P256SessionState = {\n    windowStart: number;\n    callCount: number;\n    prevCount: number;\n};\n\n// SessionKeyValidator.Session — the session-grant config tuple hashed by\n// buildGrantHash / buildP256GrantHash (the EIP-712-style digest the account\n// owner signs to authorize a session key).\nexport type SessionConfig = {\n    expiry: number;\n    contractScope: Address;\n    selectorScope: Hex;\n    revoked: boolean;\n    velocityLimit: number;\n    velocityWindow: number;\n    callTargets: readonly Address[];\n    selectorAllowlist: readonly Hex[];\n};\n\nexport type SessionKeyValidatorActions = {\n    // checkSessionScope reverts (view) when the session may not call dest/selector.\n    checkSessionScope: (args: { account: Address, sessionKeyOrHash: Hex, sessionType: number, dest: Address, selector: Hex }) => Promise<void>;\n    grantNonces: (args: { account: Address, key: Address }) => Promise<bigint>;\n    grantNonces_p256: (args: { account: Address, keyHash: Hex }) => Promise<bigint>;\n    sessionKeyCount: (args: { account: Address }) => Promise<bigint>;\n    sessionStates_p256: (args: { account: Address, keyHash: Hex }) => Promise<P256SessionState>;\n    // recordCallForVelocity advances the velocity counter (state-changing).\n    recordCallForVelocity: (args: { account: Address, sessionKeyOrHash: Hex, sessionType: number, signer?: Account | Address }) => Promise<Hash>;\n    // buildGrantHash / buildP256GrantHash return the digest the account owner signs\n    // to authorize an ECDSA / P-256 session key for `cfg` (view).\n    buildGrantHash: (args: { account: Address, sessionKey: Address, cfg: SessionConfig }) => Promise<Hex>;\n    buildP256GrantHash: (args: { account: Address, p256KeyX: Hex, p256KeyY: Hex, cfg: SessionConfig }) => Promise<Hex>;\n};\n\nconst ABI = SessionKeyValidatorABI;\n\nexport const sessionKeyValidatorActions = (address: Address) => (client: PublicClient | WalletClient): SessionKeyValidatorActions => ({\n    async checkSessionScope({ account, sessionKeyOrHash, sessionType, dest, selector }) {\n        try {\n            validateAddress(account, 'account');\n            validateAddress(dest, 'dest');\n            validateRequired(sessionKeyOrHash, 'sessionKeyOrHash');\n            validateRequired(selector, 'selector');\n            await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'checkSessionScope',\n                args: [account, sessionKeyOrHash, sessionType, dest, selector]\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'checkSessionScope');\n        }\n    },\n\n    async grantNonces({ account, key }) {\n        try {\n            validateAddress(account, 'account');\n            validateAddress(key, 'key');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'grantNonces', args: [account, key]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'grantNonces');\n        }\n    },\n\n    async grantNonces_p256({ account, keyHash }) {\n        try {\n            validateAddress(account, 'account');\n            validateRequired(keyHash, 'keyHash');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'grantNonces_p256', args: [account, keyHash]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'grantNonces_p256');\n        }\n    },\n\n    async sessionKeyCount({ account }) {\n        try {\n            validateAddress(account, 'account');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'sessionKeyCount', args: [account]\n            }) as bigint;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'sessionKeyCount');\n        }\n    },\n\n    async sessionStates_p256({ account, keyHash }) {\n        try {\n            validateAddress(account, 'account');\n            validateRequired(keyHash, 'keyHash');\n            const r = await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'sessionStates_p256', args: [account, keyHash]\n            }) as readonly [number, number, number];\n            return { windowStart: r[0], callCount: r[1], prevCount: r[2] };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'sessionStates_p256');\n        }\n    },\n\n    async recordCallForVelocity({ account, sessionKeyOrHash, sessionType, signer }) {\n        try {\n            validateAddress(account, 'account');\n            validateRequired(sessionKeyOrHash, 'sessionKeyOrHash');\n            return await (client as any).writeContract({\n                address, abi: ABI, functionName: 'recordCallForVelocity',\n                args: [account, sessionKeyOrHash, sessionType],\n                account: signer as any, chain: (client as any).chain\n            });\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'recordCallForVelocity');\n        }\n    },\n\n    async buildGrantHash({ account, sessionKey, cfg }) {\n        try {\n            validateAddress(account, 'account');\n            validateAddress(sessionKey, 'sessionKey');\n            validateRequired(cfg, 'cfg');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'buildGrantHash', args: [account, sessionKey, cfg]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'buildGrantHash');\n        }\n    },\n\n    async buildP256GrantHash({ account, p256KeyX, p256KeyY, cfg }) {\n        try {\n            validateAddress(account, 'account');\n            validateRequired(p256KeyX, 'p256KeyX');\n            validateRequired(p256KeyY, 'p256KeyY');\n            validateRequired(cfg, 'cfg');\n            return await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'buildP256GrantHash', args: [account, p256KeyX, p256KeyY, cfg]\n            }) as Hex;\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'buildP256GrantHash');\n        }\n    },\n});\n","import { type Address, type PublicClient, type WalletClient, type Hex } from 'viem';\nimport { ForceExitModuleABI } from '../abis/index.js';\nimport { validateAddress } from '../validators/index.js';\nimport { AAStarError } from '../errors/index.js';\n\n// pendingExit() tuple result — a queued guardian-driven force-exit transaction.\nexport type PendingExit = {\n    target: Address;\n    value: bigint;\n    data: Hex;\n    proposedAt: bigint;\n    approvalBitmap: bigint;\n};\n\nexport type ForceExitActions = {\n    pendingExit: (args: { account: Address }) => Promise<PendingExit>;\n};\n\nconst ABI = ForceExitModuleABI;\n\nexport const forceExitActions = (address: Address) => (client: PublicClient | WalletClient): ForceExitActions => ({\n    async pendingExit({ account }) {\n        try {\n            validateAddress(account, 'account');\n            const r = await (client as PublicClient).readContract({\n                address, abi: ABI, functionName: 'pendingExit', args: [account]\n            }) as readonly [Address, bigint, Hex, bigint, bigint];\n            return {\n                target: r[0],\n                value: r[1],\n                data: r[2],\n                proposedAt: r[3],\n                approvalBitmap: r[4],\n            };\n        } catch (error) {\n            throw AAStarError.fromViemError(error as Error, 'pendingExit');\n        }\n    },\n});\n","import { encodeFunctionData, type Address, type Hex, type PublicClient } from 'viem';\nimport { AAStarAirAccountV7ABI, AAStarCommitteeValidatorABI, AAStarValidatorABI } from '../abis/index.js';\nimport {\n    COMMITTEE_QUORUM_UNAVAILABLE,\n    assertCommitteeQuorum,\n    type CommitteeSigner,\n} from '../crypto/dvtWire.js';\n\n/**\n * Reads for the CC-98 / CC-103 per-proposal committee validator\n * (`AAStarCommitteeValidator`, YetAnotherAA-Validator #237).\n *\n * These exist so the signature layer never has to GUESS its framing. The account picks legacy vs\n * committee from `committeeActive()` on the validator it has mounted; the submitter must read the\n * same flag off the same contract, or it encodes for one mode while the account decodes the other\n * — the shape-collision CC-103 names as the flip-order attack root.\n *\n * @module\n */\n\n/** algId under which the DVT/committee validator is mounted on the router. */\nexport const ALG_ID_DVT = 0x01 as const;\n\n/** Live committee-mode state, everything the encoder needs in one round trip. */\nexport interface CommitteeState {\n    /** `committeeActive()` — `true` iff `epochLength != 0`. Decides legacy vs committee framing. */\n    active: boolean;\n    /** `requiredQuorum()`, verbatim. May be the fail-closed sentinel; see {@link quorumUsable}. */\n    requiredQuorum: bigint;\n    /**\n     * `false` when `requiredQuorum` is `type(uint256).max`, i.e. committee validation cannot\n     * succeed at all right now (committee off, or no usable pinned snapshot for the previous\n     * epoch). Submitting a committee payload in that state is guaranteed to be rejected.\n     */\n    quorumUsable: boolean;\n    /** `TREE_DEPTH()` — read, never assumed; `perSigner = 64 + treeDepth*32` (CC-103 Q4). */\n    treeDepth: number;\n    /** Byte length of one signer entry, derived from the on-chain depth. */\n    perSignerBytes: number;\n    /** `activeCount()` — nodes currently in the active set. */\n    activeCount: bigint;\n}\n\n/** Resolve the validator mounted at algId 0x01 on a ValidatorRouter. */\nexport async function getMountedDvtValidator(\n    publicClient: PublicClient,\n    router: Address\n): Promise<Address> {\n    return (await publicClient.readContract({\n        address: router,\n        abi: AAStarValidatorABI,\n        functionName: 'getAlgorithm',\n        args: [ALG_ID_DVT],\n    })) as Address;\n}\n\n/** Read the full committee state from a mounted `AAStarCommitteeValidator`. */\nexport async function getCommitteeState(\n    publicClient: PublicClient,\n    committeeValidator: Address\n): Promise<CommitteeState> {\n    // Pinned to one block so `active` / `requiredQuorum` / `activeCount` cannot straddle an epoch\n    // rollover or a set mutation and describe two different committee configurations.\n    const blockNumber = await publicClient.getBlockNumber();\n    const pinned = (functionName: string, args: readonly unknown[] = []) =>\n        publicClient.readContract({\n            address: committeeValidator,\n            abi: AAStarCommitteeValidatorABI,\n            functionName,\n            args: args as never,\n            blockNumber,\n        });\n\n    const [active, requiredQuorum, treeDepth, activeCount] = (await Promise.all([\n        pinned('committeeActive'),\n        pinned('requiredQuorum'),\n        pinned('TREE_DEPTH'),\n        pinned('activeCount'),\n    ])) as [boolean, bigint, bigint, bigint];\n\n    const depth = Number(treeDepth);\n    return {\n        active,\n        requiredQuorum,\n        quorumUsable: requiredQuorum !== COMMITTEE_QUORUM_UNAVAILABLE,\n        treeDepth: depth,\n        perSignerBytes: 64 + depth * 32,\n        activeCount,\n    };\n}\n\n/** Whether an account has run the one-time `enrollInCommitteeValidator()`. */\nexport async function isAccountEnrolled(\n    publicClient: PublicClient,\n    committeeValidator: Address,\n    account: Address\n): Promise<boolean> {\n    return (await publicClient.readContract({\n        address: committeeValidator,\n        abi: AAStarCommitteeValidatorABI,\n        functionName: 'enrolledAccount',\n        args: [account],\n    })) as boolean;\n}\n\n/**\n * Fetch `slot` + Merkle proof for each contributing node and shape them into {@link CommitteeSigner}s.\n *\n * ⚠️ Uses the validator's `getMerkleProof`, which proves against the CURRENT active-set root. The\n * contract's own NatSpec is explicit that PRODUCTION proofs must target the FROZEN `setRoot[e-1]`,\n * and that a current-state proof is valid only while the set has not changed since that snapshot.\n * This helper therefore returns `setMutatedSince`, read from `lastSetMutationBlock()`, so a caller\n * can tell whether the proofs it just fetched are still safe to submit — rather than discovering it\n * as an on-chain revert. Rebuilding the frozen tree from `SlotAssigned`/`SlotCleared` events is the\n * durable path and is NOT implemented here.\n */\nexport async function fetchCommitteeSigners(\n    publicClient: PublicClient,\n    committeeValidator: Address,\n    nodeIds: readonly Hex[]\n): Promise<{ signers: CommitteeSigner[]; lastSetMutationBlock: bigint; atBlock: bigint }> {\n    const atBlock = await publicClient.getBlockNumber();\n    const signers = await Promise.all(\n        nodeIds.map(async (nodeId) => {\n            const [slot, proof] = (await publicClient.readContract({\n                address: committeeValidator,\n                abi: AAStarCommitteeValidatorABI,\n                functionName: 'getMerkleProof',\n                args: [nodeId],\n                blockNumber: atBlock,\n            })) as [bigint, readonly Hex[]];\n            return { nodeId, slot, merkleProof: [...proof] } satisfies CommitteeSigner;\n        })\n    );\n    const lastSetMutationBlock = (await publicClient.readContract({\n        address: committeeValidator,\n        abi: AAStarCommitteeValidatorABI,\n        functionName: 'lastSetMutationBlock',\n        blockNumber: atBlock,\n    })) as bigint;\n\n    return { signers, lastSetMutationBlock, atBlock };\n}\n\n/**\n * Fail fast when a committee payload is about to be built in a state that cannot validate.\n *\n * Checks, in the order they actually bite: committee mode on → account enrolled → quorum real →\n * enough signers collected.\n */\nexport async function assertCommitteeSubmittable(\n    publicClient: PublicClient,\n    committeeValidator: Address,\n    account: Address,\n    signerCount: number\n): Promise<CommitteeState> {\n    const state = await getCommitteeState(publicClient, committeeValidator);\n    if (!state.active) {\n        throw new Error(\n            `assertCommitteeSubmittable: committeeActive() is false on ${committeeValidator} (epochLength == 0) — ` +\n            `the account will decode LEGACY framing. Encode legacy, or wait for the validator owner to ` +\n            `setEpochLength (CC-104).`\n        );\n    }\n    if (!(await isAccountEnrolled(publicClient, committeeValidator, account))) {\n        throw new Error(\n            `assertCommitteeSubmittable: account ${account} has not enrolled — call the account's one-time ` +\n            `enrollInCommitteeValidator() (owner tx) before submitting committee-framed operations.`\n        );\n    }\n    assertCommitteeQuorum(signerCount, state.requiredQuorum);\n    return state;\n}\n\n/**\n * Calldata for the account's one-time, OWNER-ONLY `enrollInCommitteeValidator()`.\n *\n * A server-side signer cannot send this on a user's behalf — it is a transaction from the account\n * owner. So rather than dead-ending when an unenrolled account needs committee framing, the SDK\n * hands back the exact calldata for whoever does hold the owner wallet (the app's own flow, a\n * UserOp, a Safe, a manual send) to execute against the account address (FU-19).\n *\n * Enrollment is idempotent-by-necessity: check {@link isAccountEnrolled} first and skip when true.\n */\nexport function encodeEnrollInCommitteeValidator(): Hex {\n    return encodeFunctionData({\n        abi: AAStarAirAccountV7ABI,\n        functionName: 'enrollInCommitteeValidator',\n    });\n}\n","import type { Hex } from \"viem\";\n\n/**\n * A DVT signer node: its public `/signature/sign` endpoint and its on-chain-registered\n * `bytes32` nodeId (registered on the chain's `AAStarBLSAlgorithm` verifier).\n *\n * @module\n */\nexport interface DVTNode {\n    /** Base URL of the node (POST `{url}/signature/sign` with `{ userOp, ownerAuth }`). */\n    url: string;\n    /**\n     * The node's `bytes32` nodeId, as registered on the validator's `AAStarBLSAlgorithm`.\n     *\n     * TREAT AS OPAQUE. Since YetAnotherAA-Validator #165, staked registration derives\n     * `nodeId = keccak256(pubkey)`. The live co-sign path reads nodeIds DYNAMICALLY (from the\n     * `/signature/sign` response and the `/gossip/peers` roster), so a re-registration is\n     * transparent to aggregation — this hardcoded value is only a discovery-free default and\n     * MUST be refreshed once operators re-register (until then it tracks the current live nodes).\n     */\n    nodeId: Hex;\n}\n\n/**\n * AAStar's default, always-on **testnet** DVT signer nodes, keyed by chainId.\n *\n * Sepolia (11155111): the 3 production-key nodes behind AAStar's Cloudflare named tunnel,\n * each registered on the v0.20.0 validator `AAStarBLSAlgorithm`\n * (`0x539B9681aFd5BFbCaa655Fe4c6BdcFe1fa7864bC` = `CANONICAL_ADDRESSES[11155111].aaStarBLSAlgorithm`, the v0.27.0 DVT validator).\n * These are AAStar's **beta-test** nodes with INDEPENDENT secret keys (NOT the public `BLS_TEST`\n * fixtures). On-chain verified: a 3-node co-sign → `validate(userOpHash, proof) === 0`, with\n * fail-closed `403` on a bad `ownerAuth`. Source of truth:\n * `YetAnotherAA-Validator/deploy/sdk-dvt-config.testnet.json`.\n *\n * Conventions for these nodes: `userOpHash = EntryPoint.getUserOpHash(PackedUserOp)`;\n * `ownerAuth` is a TAG-prefixed owner authorization the DVT (v1.7+) forwards to\n * `account.isValidOwnerAuth(userOpHash, ownerAuth)` (airaccount-contract v0.23.0, #159/#257/#261):\n * tag `0x01` = 65-byte EIP-191 ECDSA over userOpHash; tag `0x02` = device-passkey WebAuthn blob\n * (P256-verified against the account's `p256KeyX/Y`). Proof wire = EIP-2537 (matches {@link encodeDVTVerifierProof}).\n * Mandatory-BLS account: guard-enabled + `approvedAlgIds = [0x01]`.\n */\nexport const DEFAULT_DVT_NODES: Readonly<Record<number, readonly DVTNode[]>> = {\n    // Sepolia — AAStar always-on testnet DVT (airaccount-contract v0.20.0).\n    11155111: [\n        { url: \"https://dvt1.aastar.io\", nodeId: \"0x1f5e41c69465733eeb19341d95853ee6d9295a9e6698f5398d70e509be8f326d\" },\n        { url: \"https://dvt2.aastar.io\", nodeId: \"0xe3a4a3af3973b65bc95dd962e767e17592dfb331f3544209676271b188fd9f80\" },\n        { url: \"https://dvt3.aastar.io\", nodeId: \"0x96d64ba8240694153c757707732a11ff175380065ddacb6406094c9d5fa5cfce\" },\n    ],\n} as const;\n\n/**\n * The default always-on DVT signer nodes for a chain, or an empty array if none are published\n * for that chainId. Sepolia (11155111) returns AAStar's 3 beta-test nodes.\n */\nexport function getDefaultDvtNodes(chainId: number): readonly DVTNode[] {\n    return DEFAULT_DVT_NODES[chainId] ?? [];\n}\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes, type CHash, type Input } from './utils.ts';\n\nexport class HMAC<T extends Hash<T>> extends Hash<HMAC<T>> {\n  oHash: T;\n  iHash: T;\n  blockLen: number;\n  outputLen: number;\n  private finished = false;\n  private destroyed = false;\n\n  constructor(hash: CHash, _key: Input) {\n    super();\n    ahash(hash);\n    const key = toBytes(_key);\n    this.iHash = hash.create() as T;\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++) 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() as T;\n    // Undo internal XOR && apply outer XOR\n    for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n    this.oHash.update(pad);\n    clean(pad);\n  }\n  update(buf: Input): this {\n    aexists(this);\n    this.iHash.update(buf);\n    return this;\n  }\n  digestInto(out: Uint8Array): void {\n    aexists(this);\n    abytes(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(): Uint8Array {\n    const out = new Uint8Array(this.oHash.outputLen);\n    this.digestInto(out);\n    return out;\n  }\n  _cloneInto(to?: HMAC<T>): HMAC<T> {\n    // Create new instance without calling constructor since key already in state and we don't know it.\n    to ||= Object.create(Object.getPrototypeOf(this), {});\n    const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n    to = to as this;\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  clone(): HMAC<T> {\n    return this._cloneInto();\n  }\n  destroy(): void {\n    this.destroyed = true;\n    this.oHash.destroy();\n    this.iHash.destroy();\n  }\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 * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n  (hash: CHash, key: Input, message: Input): Uint8Array;\n  create(hash: CHash, key: Input): HMAC<any>;\n} = (hash: CHash, key: Input, message: Input): Uint8Array =>\n  new HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC<any>(hash, key);\n","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport type { CHash } from './abstract/utils.ts';\nimport { type CurveFn, type CurveType, weierstrass } from './abstract/weierstrass.ts';\n\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash: CHash): {\n  hash: CHash;\n  hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => Uint8Array;\n  randomBytes: typeof randomBytes;\n} {\n  return {\n    hash,\n    hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => hmac(hash, key, concatBytes(...msgs)),\n    randomBytes,\n  };\n}\n/** Same API as @noble/hashes, with ability to create curve with custom hash */\nexport type CurveDef = Readonly<Omit<CurveType, 'hash' | 'hmac' | 'randomBytes'>>;\nexport type CurveFnWithCreate = CurveFn & { create: (hash: CHash) => CurveFn };\n\nexport function createCurve(curveDef: CurveDef, defHash: CHash): CurveFnWithCreate {\n  const create = (hash: CHash): CurveFn => weierstrass({ ...curveDef, ...getHash(hash) });\n  return { ...create(defHash), create };\n}\n","/**\n * Internal module for NIST P256, P384, P521 curves.\n * Do not use for now.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256, sha384, sha512 } from '@noble/hashes/sha2';\nimport { createCurve, type CurveFnWithCreate } from './_shortw_utils.ts';\nimport { createHasher, type Hasher } from './abstract/hash-to-curve.ts';\nimport { Field } from './abstract/modular.ts';\nimport { mapToCurveSimpleSWU } from './abstract/weierstrass.ts';\n\nconst Fp256 = Field(BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'));\nconst p256_a = Fp256.create(BigInt('-3'));\nconst p256_b = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');\n\n/**\n * secp256r1 curve, ECDSA and ECDH methods.\n * Field: `2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n`\n */\n// prettier-ignore\nexport const p256: CurveFnWithCreate = createCurve({\n  a: p256_a,\n  b: p256_b,\n  Fp: Fp256,\n  n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),\n  Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),\n  Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),\n  h: BigInt(1),\n  lowS: false\n} as const, sha256);\n/** Alias to p256. */\nexport const secp256r1: CurveFnWithCreate = p256;\n\nconst p256_mapSWU = /* @__PURE__ */ (() =>\n  mapToCurveSimpleSWU(Fp256, {\n    A: p256_a,\n    B: p256_b,\n    Z: Fp256.create(BigInt('-10')),\n  }))();\n\n/** Hashing / encoding to p256 points / field. RFC 9380 methods. */\nexport const p256_hasher: Hasher<bigint> = /* @__PURE__ */ (() =>\n  createHasher(secp256r1.ProjectivePoint, (scalars: bigint[]) => p256_mapSWU(scalars[0]), {\n    DST: 'P256_XMD:SHA-256_SSWU_RO_',\n    encodeDST: 'P256_XMD:SHA-256_SSWU_NU_',\n    p: Fp256.ORDER,\n    m: 1,\n    k: 128,\n    expand: 'xmd',\n    hash: sha256,\n  }))();\n\n// Field over which we'll do calculations.\nconst Fp384 = Field(\n  BigInt(\n    '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff'\n  )\n);\nconst p384_a = Fp384.create(BigInt('-3'));\n// prettier-ignore\nconst p384_b = BigInt('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef');\n\n/**\n * secp384r1 curve, ECDSA and ECDH methods.\n * Field: `2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n`.\n * */\n// prettier-ignore\nexport const p384: CurveFnWithCreate = createCurve({\n  a: p384_a,\n  b: p384_b,\n  Fp: Fp384,\n  n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),\n  Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),\n  Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),\n  h: BigInt(1),\n  lowS: false\n} as const, sha384);\n/** Alias to p384. */\nexport const secp384r1: CurveFnWithCreate = p384;\n\nconst p384_mapSWU = /* @__PURE__ */ (() =>\n  mapToCurveSimpleSWU(Fp384, {\n    A: p384_a,\n    B: p384_b,\n    Z: Fp384.create(BigInt('-12')),\n  }))();\n\n/** Hashing / encoding to p384 points / field. RFC 9380 methods. */\nexport const p384_hasher: Hasher<bigint> = /* @__PURE__ */ (() =>\n  createHasher(secp384r1.ProjectivePoint, (scalars: bigint[]) => p384_mapSWU(scalars[0]), {\n    DST: 'P384_XMD:SHA-384_SSWU_RO_',\n    encodeDST: 'P384_XMD:SHA-384_SSWU_NU_',\n    p: Fp384.ORDER,\n    m: 1,\n    k: 192,\n    expand: 'xmd',\n    hash: sha384,\n  }))();\n\n// Field over which we'll do calculations.\nconst Fp521 = Field(\n  BigInt(\n    '0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\n  )\n);\n\nconst p521_a = Fp521.create(BigInt('-3'));\nconst p521_b = BigInt(\n  '0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00'\n);\n\n/**\n * NIST secp521r1 aka p521 curve, ECDSA and ECDH methods.\n * Field: `2n**521n - 1n`.\n */\n// prettier-ignore\nexport const p521: CurveFnWithCreate = createCurve({\n  a: p521_a,\n  b: p521_b,\n  Fp: Fp521,\n  n: BigInt(\n    '0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'\n  ),\n  Gx: BigInt(\n    '0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'\n  ),\n  Gy: BigInt(\n    '0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'\n  ),\n  h: BigInt(1),\n  lowS: false,\n  allowedPrivateKeyLengths: [130, 131, 132] // P521 keys are variable-length. Normalize to 132b\n} as const, sha512);\n/** Alias to p521. */\nexport const secp521r1: CurveFnWithCreate = p521;\n\nconst p521_mapSWU = /* @__PURE__ */ (() =>\n  mapToCurveSimpleSWU(Fp521, {\n    A: p521_a,\n    B: p521_b,\n    Z: Fp521.create(BigInt('-4')),\n  }))();\n\n/** Hashing / encoding to p521 points / field. RFC 9380 methods. */\nexport const p521_hasher: Hasher<bigint> = /* @__PURE__ */ (() =>\n  createHasher(secp521r1.ProjectivePoint, (scalars: bigint[]) => p521_mapSWU(scalars[0]), {\n    DST: 'P521_XMD:SHA-512_SSWU_RO_',\n    encodeDST: 'P521_XMD:SHA-512_SSWU_NU_',\n    p: Fp521.ORDER,\n    m: 1,\n    k: 256,\n    expand: 'xmd',\n    hash: sha512,\n  }))();\n","import {\n    type Address,\n    type Hex,\n    decodeAbiParameters,\n    encodeAbiParameters,\n    isHex,\n    keccak256,\n    numberToHex,\n    pad,\n    sha256,\n    size,\n    toBytes,\n    toHex,\n} from 'viem';\nimport { p256 } from '@noble/curves/nist.js';\n\n/**\n * P-256 (WebAuthn passkey) guardian wire encoders — airaccount-contract v0.20.0\n * authoritative, byte-for-byte against the published\n * `AirAccountExtension._verifyWebAuthnP256Sig` + `_p256GuardianChallenge`\n * (src/core/AirAccountExtension.sol). See `docs/p256-guardian-spec.md` §2, §6.\n *\n * ## What the contract actually verifies (NOT the early \"simplified\" draft)\n *\n * A P-256 guardian signs a FULL WebAuthn assertion — exactly what\n * `navigator.credentials.get()` returns — over the operation challenge:\n *\n * ```\n *  challenge   = keccak256(abi.encode(\n *                  uint8  GUARDIAN_SIG_VERSION (=4),\n *                  uint256 chainId,\n *                  address account,\n *                  string  \"P256_GUARDIAN\",        // domain tag\n *                  string  opLabel,                // \"PROPOSE_RECOVERY\" / …\n *                  bytes   opData))                // per-op, see §6\n *  clientDataJSON = '{\"type\":\"webauthn.get\",\"challenge\":\"' || base64url(challenge) || suffix\n *  payloadHash    = sha256(authenticatorData || sha256(clientDataJSON))   // ES256 signs this\n *  sig (on-chain) = abi.encode(bytes authenticatorData, bytes clientDataJSONPrefix,\n *                              bytes clientDataJSONSuffix, bytes32 r, bytes32 s)\n * ```\n *\n * The contract rebuilds `base64url(challenge)` on-chain (`_base64UrlEncode32`) and\n * splices it between the SDK-supplied prefix/suffix, then runs the EIP-7212\n * precompile against the guardian's stored `(x, y)`. It enforces:\n *   - `clientDataJSONPrefix == '{\"type\":\"webauthn.get\",\"challenge\":\"'` (operation-type binding),\n *   - `authenticatorData.length >= 37` and the UP flag (`authenticatorData[32] & 0x01`),\n *   - low-S: `uint256(s) <= n/2`.\n *\n * It deliberately does NOT bind `origin` / `rpIdHash` / UV (platform-layer RP binding\n * + challenge domain-separation cover replay). See spec §9.5.\n *\n * @module\n */\n\n/** Guardian signature scheme version embedded in every challenge (contract: `GUARDIAN_SIG_VERSION`). */\nexport const GUARDIAN_SIG_VERSION = 4 as const;\n\n/** Domain tag mixed into every P-256 guardian challenge (separates from the ECDSA-guardian hash). */\nexport const P256_GUARDIAN_DOMAIN = 'P256_GUARDIAN' as const;\n\n/**\n * The EXACT `clientDataJSON` prefix the contract requires (operation-type binding). Any other\n * prefix is rejected on-chain, so a `webauthn.create` (registration) assertion cannot be replayed\n * through the `webauthn.get` (recovery) path. The base64url(challenge) MUST immediately follow this.\n */\nexport const WEBAUTHN_GET_CHALLENGE_PREFIX = '{\"type\":\"webauthn.get\",\"challenge\":\"' as const;\n\n/** Byte length of {@link WEBAUTHN_GET_CHALLENGE_PREFIX} (36). */\nconst PREFIX_LEN = 36;\n/** Byte length of base64url(32-byte challenge), no padding (43). */\nconst CHALLENGE_B64_LEN = 43;\n\n/** Sentinel address stored in a guardian slot to mark it P-256 (contract: `P256_GUARDIAN_SENTINEL`). */\nexport const P256_GUARDIAN_SENTINEL = '0x0000000000000000000000000000000000007026' as Address;\n\n/** secp256r1 (P-256) curve order `n` (fixed curve parameter). */\nexport const SECP256R1_N = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n;\n/**\n * secp256r1 curve order / 2 — the low-S ceiling the contract enforces\n * (`AirAccountExtension.SECP256R1_N_OVER_2`).\n */\nexport const SECP256R1_N_OVER_2 = SECP256R1_N >> 1n;\n\n/** base64url alphabet (RFC 4648 §5, no padding) — matches the contract's on-chain table. */\nconst B64URL_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n/**\n * base64url-encode bytes with no padding — byte-identical to the contract's `_base64UrlEncode32`\n * for 32-byte input (43 chars) and to `Buffer.from(x).toString('base64url')`. Pure JS so `@aastar/core`\n * stays isomorphic (no node `Buffer`).\n */\nexport function base64UrlEncode(bytes: Uint8Array): string {\n    let out = '';\n    let i = 0;\n    for (; i + 3 <= bytes.length; i += 3) {\n        const n = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n        out += B64URL_ALPHABET[(n >> 18) & 63] + B64URL_ALPHABET[(n >> 12) & 63]\n            + B64URL_ALPHABET[(n >> 6) & 63] + B64URL_ALPHABET[n & 63];\n    }\n    const rem = bytes.length - i;\n    if (rem === 1) {\n        const n = bytes[i] << 16;\n        out += B64URL_ALPHABET[(n >> 18) & 63] + B64URL_ALPHABET[(n >> 12) & 63];\n    } else if (rem === 2) {\n        const n = (bytes[i] << 16) | (bytes[i + 1] << 8);\n        out += B64URL_ALPHABET[(n >> 18) & 63] + B64URL_ALPHABET[(n >> 12) & 63]\n            + B64URL_ALPHABET[(n >> 6) & 63];\n    }\n    return out;\n}\n\n// ── Challenge / opData builders ───────────────────────────────────────────────\n\n/** The set of operation labels the contract recognises (string-matched in the challenge). */\nexport type GuardianOpLabel =\n    | 'PROPOSE_RECOVERY'\n    | 'APPROVE_RECOVERY'\n    | 'CANCEL_RECOVERY'\n    | 'REMOVE_GUARDIAN'\n    | 'MODIFY_TIER_LIMITS'\n    | 'ADD_P256_GUARDIAN'\n    | 'ADD_GUARDIAN';\n\n/** Parameters for {@link buildP256GuardianChallenge}. */\nexport interface BuildP256GuardianChallengeParams {\n    /** Signature scheme version. Defaults to {@link GUARDIAN_SIG_VERSION} (4). */\n    version?: number;\n    /** EVM chain id the account lives on (`block.chainid`). */\n    chainId: number | bigint;\n    /** The smart-account address (`address(this)` in the extension). */\n    account: Address;\n    /** Operation label, e.g. `\"PROPOSE_RECOVERY\"`. */\n    opLabel: GuardianOpLabel | string;\n    /** Operation payload (`abi.encode(...)` per op — use the `opData*` builders below). */\n    opData: Hex;\n}\n\n/**\n * Build the 32-byte operation challenge the contract derives in `_p256GuardianChallenge`:\n * `keccak256(abi.encode(uint8 version, uint256 chainId, address account, string \"P256_GUARDIAN\",\n *  string opLabel, bytes opData))`. This is the value passed to `navigator.credentials.get()`.\n */\nexport function buildP256GuardianChallenge(params: BuildP256GuardianChallengeParams): Hex {\n    const version = params.version ?? GUARDIAN_SIG_VERSION;\n    return keccak256(\n        encodeAbiParameters(\n            [\n                { type: 'uint8' },\n                { type: 'uint256' },\n                { type: 'address' },\n                { type: 'string' },\n                { type: 'string' },\n                { type: 'bytes' },\n            ],\n            [version, BigInt(params.chainId), params.account, P256_GUARDIAN_DOMAIN, params.opLabel, params.opData],\n        ),\n    );\n}\n\n/** `opData` for PROPOSE_RECOVERY / APPROVE_RECOVERY / CANCEL_RECOVERY: `abi.encode(uint256 nonce, address newOwner)`. */\nexport function opDataRecovery(nonce: bigint, newOwner: Address): Hex {\n    return encodeAbiParameters([{ type: 'uint256' }, { type: 'address' }], [nonce, newOwner]);\n}\n\n/** `opData` for ADD_P256_GUARDIAN: `abi.encode(uint256 nonce, bytes32 x, bytes32 y)`. */\nexport function opDataAddP256Guardian(nonce: bigint, x: Hex, y: Hex): Hex {\n    return encodeAbiParameters(\n        [{ type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' }],\n        [nonce, toBytes32(x, 'x'), toBytes32(y, 'y')],\n    );\n}\n\n/** `opData` for ADD_GUARDIAN (ECDSA): `abi.encode(uint256 nonce, address guardian)`. */\nexport function opDataAddGuardian(nonce: bigint, guardian: Address): Hex {\n    return encodeAbiParameters([{ type: 'uint256' }, { type: 'address' }], [nonce, guardian]);\n}\n\n/**\n * `opData` for REMOVE_GUARDIAN (spec §6.4):\n * `abi.encode(uint256 nonce, uint8 index, address guardianToRemove, bytes32 p256X, bytes32 p256Y)`.\n * For an ECDSA slot pass the guardian address with `p256X=p256Y=0x0…0`; for a P-256 slot pass\n * {@link P256_GUARDIAN_SENTINEL} with the slot's stored `(x, y)`.\n */\nexport function opDataRemoveGuardian(\n    nonce: bigint,\n    index: number,\n    guardianToRemove: Address,\n    p256X: Hex,\n    p256Y: Hex,\n): Hex {\n    return encodeAbiParameters(\n        [{ type: 'uint256' }, { type: 'uint8' }, { type: 'address' }, { type: 'bytes32' }, { type: 'bytes32' }],\n        [nonce, index, guardianToRemove, toBytes32(p256X, 'p256X'), toBytes32(p256Y, 'p256Y')],\n    );\n}\n\n/** `opData` for MODIFY_TIER_LIMITS: `abi.encode(uint256 nonce, uint256 tier1, uint256 tier2, uint256 deadline)`. */\nexport function opDataModifyTierLimits(nonce: bigint, tier1: bigint, tier2: bigint, deadline: bigint): Hex {\n    return encodeAbiParameters(\n        [{ type: 'uint256' }, { type: 'uint256' }, { type: 'uint256' }, { type: 'uint256' }],\n        [nonce, tier1, tier2, deadline],\n    );\n}\n\n// ── Convenience per-op challenge builders (combine opLabel + opData) ───────────\n\ninterface OpChainCtx {\n    chainId: number | bigint;\n    account: Address;\n    version?: number;\n}\n\n/** Challenge for `proposeRecoveryWithSig(newOwner, gIdx, sig)`. `nonce` = `getRecoveryNonce()`. */\nexport function buildProposeRecoveryChallenge(p: OpChainCtx & { nonce: bigint; newOwner: Address }): Hex {\n    return buildP256GuardianChallenge({ ...p, opLabel: 'PROPOSE_RECOVERY', opData: opDataRecovery(p.nonce, p.newOwner) });\n}\n\n/** Challenge for `approveRecoveryWithSig(gIdx, sig)`. `newOwner` = `activeRecovery().newOwner`. */\nexport function buildApproveRecoveryChallenge(p: OpChainCtx & { nonce: bigint; newOwner: Address }): Hex {\n    return buildP256GuardianChallenge({ ...p, opLabel: 'APPROVE_RECOVERY', opData: opDataRecovery(p.nonce, p.newOwner) });\n}\n\n/** Challenge for `cancelRecoveryWithSig(gIdx, sig)`. `newOwner` = `activeRecovery().newOwner`. */\nexport function buildCancelRecoveryChallenge(p: OpChainCtx & { nonce: bigint; newOwner: Address }): Hex {\n    return buildP256GuardianChallenge({ ...p, opLabel: 'CANCEL_RECOVERY', opData: opDataRecovery(p.nonce, p.newOwner) });\n}\n\n/** Challenge for `addP256GuardianWithMixedSigs(x, y, …)`. `nonce` = `_guardianAdditionNonce`. */\nexport function buildAddP256GuardianChallenge(p: OpChainCtx & { nonce: bigint; x: Hex; y: Hex }): Hex {\n    return buildP256GuardianChallenge({ ...p, opLabel: 'ADD_P256_GUARDIAN', opData: opDataAddP256Guardian(p.nonce, p.x, p.y) });\n}\n\n/** Challenge for `addGuardianWithMixedSigs(guardian, …)`. `nonce` = `_guardianAdditionNonce`. */\nexport function buildAddGuardianChallenge(p: OpChainCtx & { nonce: bigint; guardian: Address }): Hex {\n    return buildP256GuardianChallenge({ ...p, opLabel: 'ADD_GUARDIAN', opData: opDataAddGuardian(p.nonce, p.guardian) });\n}\n\n/** Challenge for `removeGuardianWithMixedSigs(index, …)`. `nonce` = `_guardianRemovalNonce`. */\nexport function buildRemoveGuardianChallenge(\n    p: OpChainCtx & { nonce: bigint; index: number; guardianToRemove: Address; p256X: Hex; p256Y: Hex },\n): Hex {\n    return buildP256GuardianChallenge({\n        ...p,\n        opLabel: 'REMOVE_GUARDIAN',\n        opData: opDataRemoveGuardian(p.nonce, p.index, p.guardianToRemove, p.p256X, p.p256Y),\n    });\n}\n\n/** Challenge for `modifyTierLimitsWithMixedGuardians(tier1, tier2, deadline, …)`. `nonce` = `_tierLimitNonce`. */\nexport function buildModifyTierLimitsChallenge(\n    p: OpChainCtx & { nonce: bigint; tier1: bigint; tier2: bigint; deadline: bigint },\n): Hex {\n    return buildP256GuardianChallenge({\n        ...p,\n        opLabel: 'MODIFY_TIER_LIMITS',\n        opData: opDataModifyTierLimits(p.nonce, p.tier1, p.tier2, p.deadline),\n    });\n}\n\n// ── WebAuthn assertion encoding ───────────────────────────────────────────────\n\n/** A signature scalar accepted as a 0x-hex (≤32 bytes), raw bytes, or bigint. */\nexport type ScalarLike = Hex | Uint8Array | bigint;\n\nfunction scalarToBigInt(v: ScalarLike, name: string): bigint {\n    if (typeof v === 'bigint') return v;\n    if (v instanceof Uint8Array) return BigInt(toHex(v));\n    if (isHex(v)) return BigInt(v);\n    throw new Error(`encodeWebAuthnAssertion: ${name} must be a hex string, Uint8Array, or bigint`);\n}\n\nfunction toBytes32(v: Hex, name: string): Hex {\n    if (!isHex(v)) throw new Error(`${name} must be a 0x-hex value`);\n    if (size(v) > 32) throw new Error(`${name} must be at most 32 bytes`);\n    return pad(v, { size: 32 });\n}\n\nfunction asBytes(v: Hex | Uint8Array | string, name: string): Uint8Array {\n    if (v instanceof Uint8Array) return v;\n    if (typeof v === 'string' && isHex(v)) return toBytes(v);\n    if (typeof v === 'string') return new TextEncoder().encode(v);\n    throw new Error(`${name} must be hex, bytes, or a string`);\n}\n\n/** Parameters for {@link encodeWebAuthnAssertion}. */\nexport interface EncodeWebAuthnAssertionParams {\n    /** `authenticatorData` from the assertion: `rpIdHash(32) || flags(1) || signCount(4)` (≥37 bytes, UP set). */\n    authenticatorData: Hex | Uint8Array;\n    /**\n     * The FULL `clientDataJSON` the authenticator signed. MUST start with\n     * {@link WEBAUTHN_GET_CHALLENGE_PREFIX}, immediately followed by the 43-char base64url(challenge).\n     * Split into prefix/suffix here; the contract rebuilds the challenge on-chain.\n     */\n    clientDataJSON: Hex | Uint8Array | string;\n    /** ES256 signature `r` (32-byte scalar). */\n    r: ScalarLike;\n    /** ES256 signature `s` (32-byte scalar). Auto low-S normalised to satisfy the contract. */\n    s: ScalarLike;\n}\n\n/**\n * ABI-encode a WebAuthn assertion into the on-chain `sig` the contract consumes:\n * `abi.encode(bytes authenticatorData, bytes clientDataJSONPrefix, bytes clientDataJSONSuffix,\n *  bytes32 r, bytes32 s)`.\n *\n * Validates the assertion against every constraint the contract enforces so a bad blob fails here\n * (with a clear message) rather than as a generic on-chain revert:\n *   - `authenticatorData.length >= 37` and the UP flag (`byte[32] & 0x01`) is set,\n *   - `clientDataJSON` starts with the exact `webauthn.get` prefix and the 43-char challenge slot\n *     is immediately followed by the closing `\"` (so the contract's reconstruction lines up),\n *   - `s` is low-S (`<= n/2`) — auto-normalised to `n - s` if the input was high-S (ECDSA-valid).\n */\nexport function encodeWebAuthnAssertion(params: EncodeWebAuthnAssertionParams): Hex {\n    const authData = asBytes(params.authenticatorData, 'authenticatorData');\n    if (authData.length < 37) {\n        throw new Error(`encodeWebAuthnAssertion: authenticatorData must be >= 37 bytes, got ${authData.length}`);\n    }\n    if ((authData[32] & 0x01) === 0) {\n        throw new Error('encodeWebAuthnAssertion: authenticatorData UP (User Present) flag (byte 32, bit 0) must be set');\n    }\n\n    const cdj = asBytes(params.clientDataJSON, 'clientDataJSON');\n    const prefixBytes = new TextEncoder().encode(WEBAUTHN_GET_CHALLENGE_PREFIX);\n    if (cdj.length < PREFIX_LEN + CHALLENGE_B64_LEN + 1) {\n        throw new Error(\n            `encodeWebAuthnAssertion: clientDataJSON too short (${cdj.length} bytes) — expected at least ` +\n            `prefix(${PREFIX_LEN}) + base64url(challenge)(${CHALLENGE_B64_LEN}) + closing quote`,\n        );\n    }\n    for (let i = 0; i < PREFIX_LEN; i++) {\n        if (cdj[i] !== prefixBytes[i]) {\n            throw new Error(\n                'encodeWebAuthnAssertion: clientDataJSON must start with the exact prefix ' +\n                `${JSON.stringify(WEBAUTHN_GET_CHALLENGE_PREFIX)} (the contract rejects any other prefix)`,\n            );\n        }\n    }\n    // The challenge slot is exactly 43 base64url chars; byte right after it must be the closing quote.\n    if (cdj[PREFIX_LEN + CHALLENGE_B64_LEN] !== 0x22 /* '\"' */) {\n        throw new Error(\n            'encodeWebAuthnAssertion: the base64url(challenge) slot is not exactly 43 chars ' +\n            '(no closing quote at the expected position) — clientDataJSON is malformed for the contract',\n        );\n    }\n\n    const prefix = cdj.slice(0, PREFIX_LEN);\n    const suffix = cdj.slice(PREFIX_LEN + CHALLENGE_B64_LEN);\n\n    const r = scalarToBigInt(params.r, 'r');\n    let s = scalarToBigInt(params.s, 's');\n    if (s > SECP256R1_N_OVER_2) s = SECP256R1_N - s; // low-S normalisation (ECDSA-valid)\n\n    return encodeAbiParameters(\n        [{ type: 'bytes' }, { type: 'bytes' }, { type: 'bytes' }, { type: 'bytes32' }, { type: 'bytes32' }],\n        [toHex(authData), toHex(prefix), toHex(suffix), numberToHex(r, { size: 32 }), numberToHex(s, { size: 32 })],\n    );\n}\n\n/** Decoded view of an on-chain P-256 guardian `sig` blob. */\nexport interface DecodedWebAuthnAssertion {\n    authenticatorData: Hex;\n    clientDataJSONPrefix: Hex;\n    clientDataJSONSuffix: Hex;\n    r: Hex;\n    s: Hex;\n}\n\n/**\n * Inverse of {@link encodeWebAuthnAssertion} — decode an on-chain `sig` blob back into its parts.\n * Useful for evidence/decode-verification and debugging a rejected signature.\n */\nexport function decodeWebAuthnAssertion(sig: Hex): DecodedWebAuthnAssertion {\n    const [authenticatorData, clientDataJSONPrefix, clientDataJSONSuffix, r, s] = decodeAbiParameters(\n        [{ type: 'bytes' }, { type: 'bytes' }, { type: 'bytes' }, { type: 'bytes32' }, { type: 'bytes32' }],\n        sig,\n    ) as [Hex, Hex, Hex, Hex, Hex];\n    return { authenticatorData, clientDataJSONPrefix, clientDataJSONSuffix, r, s };\n}\n\n// ── COSE public-key extraction ────────────────────────────────────────────────\n\n/**\n * Extract `(x, y)` (each a 32-byte bytes32 hex) from a WebAuthn registration public key.\n *\n * Accepts:\n *   - a **COSE_Key** EC2 map (the bytes in `attestedCredentialData`): `kty(1)` MUST be `2` (EC2)\n *     and `crv(-1)` MUST be `1` (P-256), both PRESENT; `-2` ⇒ x, `-3` ⇒ y, or\n *   - an **uncompressed SEC1** point (`0x04 || x(32) || y(32)`, 65 bytes), or\n *   - a **compressed SEC1** point (`0x02|0x03 || x(32)`, 33 bytes), decompressed on the curve.\n *\n * The result feeds `addP256Guardian(x, y)` / the `InitConfig.guardianP256X/Y` slots. A bad/foreign\n * key (wrong curve, missing labels) is REJECTED here — installing a guardian that cannot sign would\n * permanently break the recovery quorum on this non-upgradable account.\n */\n/** Curve-point class shape across @noble/curves versions (`Point` newer, `ProjectivePoint` older). */\ninterface NoblePointClass {\n    fromHex(h: Uint8Array): { toBytes?(compressed: boolean): Uint8Array; toRawBytes?(compressed: boolean): Uint8Array };\n}\n\n/**\n * Decompress a 33-byte compressed SEC1 point to its 65-byte uncompressed form on secp256r1,\n * tolerant of @noble/curves API drift (`p256.Point` vs `p256.ProjectivePoint`,\n * `toBytes(false)` vs `toRawBytes(false)`). Reverts curve-membership failures up to the caller.\n */\nfunction decompressP256Point(compressed: Uint8Array): Uint8Array {\n    const lib = p256 as unknown as { Point?: NoblePointClass; ProjectivePoint?: NoblePointClass };\n    const Point = lib.Point ?? lib.ProjectivePoint;\n    if (!Point) throw new Error('coseToP256XY: @noble/curves p256 point class unavailable for decompression');\n    const pt = Point.fromHex(compressed);\n    const uncompressed = pt.toBytes ? pt.toBytes(false) : pt.toRawBytes!(false);\n    return uncompressed;\n}\n\nexport function coseToP256XY(cosePublicKey: Hex | Uint8Array): { x: Hex; y: Hex } {\n    const bytes = cosePublicKey instanceof Uint8Array ? cosePublicKey : toBytes(cosePublicKey);\n\n    // Uncompressed SEC1 point fast-path: 0x04 || x(32) || y(32).\n    if (bytes.length === 65 && bytes[0] === 0x04) {\n        return { x: toHex(bytes.slice(1, 33)), y: toHex(bytes.slice(33, 65)) };\n    }\n\n    // Compressed SEC1 point: 0x02|0x03 || x(32) → decompress on secp256r1.\n    if (bytes.length === 33 && (bytes[0] === 0x02 || bytes[0] === 0x03)) {\n        const uncompressed = decompressP256Point(bytes); // 0x04 || x || y\n        return { x: toHex(uncompressed.slice(1, 33)), y: toHex(uncompressed.slice(33, 65)) };\n    }\n\n    const map = decodeCoseMap(bytes);\n    // H1: kty (EC2) and crv (P-256) must both be PRESENT and correct. A COSE key that omits these\n    // labels but carries -2/-3 must NOT be silently accepted as a P-256 key.\n    const kty = map.get(1);\n    const crv = map.get(-1);\n    if (kty !== 2n) {\n        throw new Error(`coseToP256XY: COSE key type (label 1) must be present and 2 (EC2), got ${String(kty)}`);\n    }\n    if (crv !== 1n) {\n        throw new Error(`coseToP256XY: COSE curve (label -1) must be present and 1 (P-256), got ${String(crv)}`);\n    }\n    const x = map.get(-2);\n    const y = map.get(-3);\n    if (!(x instanceof Uint8Array) || !(y instanceof Uint8Array)) {\n        throw new Error('coseToP256XY: COSE key missing the -2 (x) / -3 (y) coordinate byte strings');\n    }\n    if (x.length !== 32 || y.length !== 32) {\n        throw new Error(`coseToP256XY: P-256 coordinates must be 32 bytes (got x=${x.length}, y=${y.length})`);\n    }\n    return { x: toHex(x), y: toHex(y) };\n}\n\n/**\n * Minimal CBOR decoder for a COSE_Key map. Handles only what a COSE EC2 key uses:\n * maps, (negative) integers, and byte strings — enough to pull `-2`/`-3`. Rejects anything else.\n */\nfunction decodeCoseMap(buf: Uint8Array): Map<number, bigint | Uint8Array> {\n    let pos = 0;\n\n    function readArgument(ai: number): number {\n        if (ai < 24) return ai;\n        if (ai === 24) return buf[pos++];\n        if (ai === 25) { const v = (buf[pos] << 8) | buf[pos + 1]; pos += 2; return v; }\n        if (ai === 26) {\n            const v = (buf[pos] * 0x1000000) + (buf[pos + 1] << 16) + (buf[pos + 2] << 8) + buf[pos + 3];\n            pos += 4;\n            return v;\n        }\n        throw new Error('decodeCoseMap: unsupported CBOR argument size (64-bit values not supported for COSE keys)');\n    }\n\n    function readItem(): bigint | Uint8Array {\n        const ib = buf[pos++];\n        const major = ib >> 5;\n        const ai = ib & 0x1f;\n        switch (major) {\n            case 0: // unsigned int\n                return BigInt(readArgument(ai));\n            case 1: // negative int  (-1 - n)\n                return BigInt(-1 - readArgument(ai));\n            case 2: { // byte string\n                const len = readArgument(ai);\n                const out = buf.slice(pos, pos + len);\n                pos += len;\n                return out;\n            }\n            default:\n                throw new Error(`decodeCoseMap: unsupported CBOR major type ${major} in COSE key`);\n        }\n    }\n\n    const ib = buf[pos++];\n    if (ib >> 5 !== 5) throw new Error('coseToP256XY: input is not a CBOR map (COSE_Key)');\n    const n = readArgument(ib & 0x1f);\n    const map = new Map<number, bigint | Uint8Array>();\n    for (let i = 0; i < n; i++) {\n        const key = readItem();\n        const val = readItem();\n        if (typeof key === 'bigint') map.set(Number(key), val);\n    }\n    return map;\n}\n\n// ── Software authenticator (test / relayer for software-held passkeys) ─────────\n\n/** Parameters for {@link signP256GuardianAssertion}. */\nexport interface SignP256GuardianAssertionParams {\n    /** Raw 32-byte P-256 private scalar (hex or bytes). */\n    privateKey: Hex | Uint8Array;\n    /** The 32-byte operation challenge (from a `build*Challenge` helper). */\n    challenge: Hex;\n    /**\n     * RP id whose SHA-256 becomes `rpIdHash`. The contract does NOT verify this (§9.5), so any value\n     * works on-chain; defaults to a stable test RP. Set it to your real rpId for fidelity.\n     */\n    rpId?: string;\n    /** `origin` embedded in `clientDataJSON` suffix (also not verified on-chain). */\n    origin?: string;\n    /** authenticatorData flags byte. Defaults to `0x05` (UP | UV); the contract only requires UP (bit 0). */\n    flags?: number;\n    /** authenticatorData signCount (4-byte big-endian). */\n    signCount?: number;\n}\n\n/** Result of {@link signP256GuardianAssertion}. */\nexport interface SignedP256GuardianAssertion {\n    /** The on-chain `sig` blob, ready for `proposeRecoveryWithSig` / mixed-sig calls. */\n    sig: Hex;\n    /** authenticatorData used (hex). */\n    authenticatorData: Hex;\n    /** Full clientDataJSON signed (hex). */\n    clientDataJSON: Hex;\n    /** Low-S–normalised signature `r` (bytes32 hex). */\n    r: Hex;\n    /** Low-S–normalised signature `s` (bytes32 hex). */\n    s: Hex;\n}\n\n/**\n * Software P-256 authenticator — produces a FULL WebAuthn assertion over `challenge`, byte-for-byte\n * in the format `navigator.credentials.get()` returns (mirrors the contract's\n * `test/webauthn/gen_p256_assertion.mjs`). The only difference vs a hardware passkey is WHERE the\n * key lives. Use for the on-chain evidence E2E and for relaying software-held guardian keys.\n */\nexport function signP256GuardianAssertion(params: SignP256GuardianAssertionParams): SignedP256GuardianAssertion {\n    const priv = params.privateKey instanceof Uint8Array ? params.privateKey : toBytes(params.privateKey);\n    const rpId = params.rpId ?? 'airaccount.example';\n    const origin = params.origin ?? 'https://airaccount.example';\n    const flags = params.flags ?? 0x05;\n    const signCount = params.signCount ?? 0;\n\n    const challengeBytes = toBytes(params.challenge);\n    if (challengeBytes.length !== 32) throw new Error('signP256GuardianAssertion: challenge must be 32 bytes');\n\n    // clientDataJSON = prefix || base64url(challenge) || suffix\n    const challengeB64 = base64UrlEncode(challengeBytes);\n    const clientDataJSONStr = `${WEBAUTHN_GET_CHALLENGE_PREFIX}${challengeB64}\",\"origin\":\"${origin}\",\"crossOrigin\":false}`;\n    const clientDataJSON = new TextEncoder().encode(clientDataJSONStr);\n\n    // authenticatorData = sha256(rpId)(32) || flags(1) || signCount(4, big-endian)\n    const rpIdHash = toBytes(sha256(new TextEncoder().encode(rpId)));\n    const authData = new Uint8Array(37);\n    authData.set(rpIdHash, 0);\n    authData[32] = flags & 0xff;\n    new DataView(authData.buffer).setUint32(33, signCount >>> 0, false);\n\n    // WebAuthn signed message = authenticatorData || sha256(clientDataJSON); ES256 = ECDSA-SHA-256.\n    const clientDataHash = toBytes(sha256(clientDataJSON));\n    const message = new Uint8Array(authData.length + clientDataHash.length);\n    message.set(authData, 0);\n    message.set(clientDataHash, authData.length);\n\n    // noble applies SHA-256 (prehash) and emits canonical low-S by default.\n    const signature = p256.sign(message, priv, { prehash: true, lowS: true });\n    const r = numberToHex(signature.r, { size: 32 });\n    const s = numberToHex(signature.s, { size: 32 });\n\n    const sig = encodeWebAuthnAssertion({ authenticatorData: authData, clientDataJSON, r, s });\n    return { sig, authenticatorData: toHex(authData), clientDataJSON: toHex(clientDataJSON), r, s };\n}\n\n/** Derive the uncompressed-SEC1 `(x, y)` of a P-256 private key (for `addP256Guardian`). */\nexport function p256GuardianPublicKey(privateKey: Hex | Uint8Array): { x: Hex; y: Hex } {\n    const priv = privateKey instanceof Uint8Array ? privateKey : toBytes(privateKey);\n    const pub = p256.getPublicKey(priv, false); // 0x04 || x || y\n    return coseToP256XY(pub);\n}\n","/**\n * Role constants and utilities for AAstar SDK\n * @dev All role hashes and configurations match exactly with Registry.sol v3.0.0\n * @source /contracts/src/core/Registry.sol\n */\nimport { keccak256, toHex, type Hash } from 'viem';\n\n// ========== Role Hash Constants (from Registry.sol lines 32-38) ==========\n\n/**\n * Default Admin Role (OpenZeppelin AccessControl)\n * @description Highest privilege, can grant/revoke all roles\n * @permission Protocol governance only\n * @source OpenZeppelin AccessControl DEFAULT_ADMIN_ROLE\n */\nexport const DEFAULT_ADMIN_ROLE: Hash = '0x0000000000000000000000000000000000000000000000000000000000000000';\n\n/**\n * Community Role\n * @description Community administrator, can issue xPNTs, configure SBT rules\n * @permission Community-level governance\n * @requirement minStake: 30 GT, ticketPrice: 3 GT (line 99)\n * @exitFee 5% (500 basis points), min 1 GT\n * @lockDuration 30 days\n * @source Registry.sol line 32: ROLE_COMMUNITY = keccak256(\"COMMUNITY\")\n */\nexport const ROLE_COMMUNITY: Hash = keccak256(toHex('COMMUNITY'));\n\n/**\n * End User Role\n * @description Community member, can participate and use gasless transactions\n * @permission Basic user level\n * @requirement minStake: 0.3 GT, ticketPrice: 0.05 GT (line 100)\n * @additionalRequirement Must hold MySBT from community\n * @exitFee 10% (1000 basis points), min 0.05 GT\n * @lockDuration 7 days\n * @source Registry.sol line 33: ROLE_ENDUSER = keccak256(\"ENDUSER\")\n */\nexport const ROLE_ENDUSER: Hash = keccak256(toHex('ENDUSER'));\n\n/**\n * Paymaster AOA Role (Account Ownership Authentication)\n * @description Basic Paymaster node operator with account-based auth\n * @permission Infrastructure operator\n * @requirement minStake: 30 GT, ticketPrice: 3 GT (line 92)\n * @exitFee 10% (1000 basis points), min 1 GT\n * @lockDuration 30 days\n * @source Registry.sol line 34: ROLE_PAYMASTER_AOA = keccak256(\"PAYMASTER_AOA\")\n */\nexport const ROLE_PAYMASTER_AOA: Hash = keccak256(toHex('PAYMASTER_AOA'));\n\n/**\n * Paymaster Super Role\n * @description Advanced Paymaster operator, can use SuperPaymaster with aPNTs collateral\n * @permission Infrastructure operator (higher tier)\n * @requirement minStake: 50 GT, ticketPrice: 5 GT (line 93)\n * @additionalRequirement aPNTs collateral in SuperPaymaster contract\n * @exitFee 10% (1000 basis points), min 2 GT\n * @lockDuration 30 days\n * @source Registry.sol line 35: ROLE_PAYMASTER_SUPER = keccak256(\"PAYMASTER_SUPER\")\n */\nexport const ROLE_PAYMASTER_SUPER: Hash = keccak256(toHex('PAYMASTER_SUPER'));\n\n/**\n * DVT Role (Distributed Validator Technology)\n * @description DVT node operator for consensus validation\n * @permission Infrastructure operator\n * @requirement minStake: 30 GT, ticketPrice: 3 GT (line 94)\n * @exitFee 10% (1000 basis points), min 1 GT\n * @lockDuration 30 days\n * @source Registry.sol line 36: ROLE_DVT = keccak256(\"DVT\")\n */\nexport const ROLE_DVT: Hash = keccak256(toHex('DVT'));\n\n/**\n * ANODE Role (Anonymous Node)\n * @description Anonymous infrastructure node operator\n * @permission Infrastructure operator\n * @requirement minStake: 20 GT, ticketPrice: 2 GT (line 95)\n * @exitFee 10% (1000 basis points), min 1 GT\n * @lockDuration 30 days\n * @source Registry.sol line 37: ROLE_ANODE = keccak256(\"ANODE\")\n */\nexport const ROLE_ANODE: Hash = keccak256(toHex('ANODE'));\n\n/**\n * KMS Role (Key Management Service)\n * @description KMS operator for secure key storage and management\n * @permission Infrastructure operator (highest stake)\n * @requirement minStake: 100 GT, ticketPrice: 10 GT (line 98)\n * @exitFee 10% (1000 basis points), min 5 GT\n * @lockDuration 30 days\n * @source Registry.sol line 38: ROLE_KMS = keccak256(\"KMS\")\n */\nexport const ROLE_KMS: Hash = keccak256(toHex('KMS'));\n\n// ========== Role Configuration Types ==========\n\n/**\n * Role configuration structure (matches Registry.sol RoleConfig struct)\n */\nexport interface RoleConfig {\n    minStake: bigint;           // Minimum GToken stake required\n    ticketPrice: bigint;        // Ticket price for role entry\n    slashThreshold: number;     // Slash threshold (0-100)\n    slashBase: number;          // Base slash percentage\n    slashIncrement: number;     // Increment per offense\n    slashMax: number;           // Maximum slash percentage\n    exitFeePercent: bigint;     // Exit fee percentage (basis points, 1000 = 10%)\n    minExitFee: bigint;         // Minimum exit fee\n    isActive: boolean;          // Whether role is active\n    description: string;        // Role description\n}\n\n/**\n * Role requirement check result\n */\nexport interface RoleRequirement {\n    hasRole: boolean;\n    hasEnoughGToken: boolean;\n    hasEnoughAPNTs: boolean;\n    hasSBT: boolean;\n    missingRequirements: string[];\n}\n\n// ========== Role Name Mapping ==========\n\nexport const ROLE_NAMES: Record<string, string> = {\n    [DEFAULT_ADMIN_ROLE]: 'Default Admin',\n    [ROLE_COMMUNITY]: 'Community Admin',\n    [ROLE_ENDUSER]: 'End User',\n    [ROLE_PAYMASTER_AOA]: 'Paymaster (AOA)',\n    [ROLE_PAYMASTER_SUPER]: 'Paymaster (Super)',\n    [ROLE_DVT]: 'DVT Operator',\n    [ROLE_ANODE]: 'Anonymous Node',\n    [ROLE_KMS]: 'KMS Operator'\n};\n\n/**\n * Get human-readable role name\n */\nexport function getRoleName(roleHash: Hash): string {\n    return ROLE_NAMES[roleHash] || 'Unknown Role';\n}\n\n/**\n * Role permission levels (for UI sorting/filtering)\n */\nexport enum RolePermissionLevel {\n    PROTOCOL = 100,      // Default Admin\n    KMS = 80,            // Key Management (highest stake)\n    OPERATOR = 50,       // Infrastructure Operators\n    COMMUNITY = 30,      // Community Admin\n    USER = 10            // End Users\n}\n\nexport const ROLE_PERMISSION_LEVELS: Record<string, RolePermissionLevel> = {\n    [DEFAULT_ADMIN_ROLE]: RolePermissionLevel.PROTOCOL,\n    [ROLE_KMS]: RolePermissionLevel.KMS,\n    [ROLE_PAYMASTER_SUPER]: RolePermissionLevel.OPERATOR,\n    [ROLE_PAYMASTER_AOA]: RolePermissionLevel.OPERATOR,\n    [ROLE_DVT]: RolePermissionLevel.OPERATOR,\n    [ROLE_ANODE]: RolePermissionLevel.OPERATOR,\n    [ROLE_COMMUNITY]: RolePermissionLevel.COMMUNITY,\n    [ROLE_ENDUSER]: RolePermissionLevel.USER\n};\n\n/**\n * Exact stake requirements from Registry.sol constructor (lines 92-100)\n * @warning These are initial values, always query contract for current configuration\n */\nexport const INITIAL_ROLE_STAKES = {\n    [ROLE_PAYMASTER_AOA]: {\n        minStake: '30 GT',\n        ticketPrice: '3 GT',\n        exitFeePercent: '10%',\n        minExitFee: '1 GT',\n        lockDuration: '30 days',\n        line: 92\n    },\n    [ROLE_PAYMASTER_SUPER]: {\n        minStake: '50 GT',\n        ticketPrice: '5 GT',\n        exitFeePercent: '10%',\n        minExitFee: '2 GT',\n        lockDuration: '30 days',\n        additionalRequirement: 'aPNTs collateral in SuperPaymaster',\n        line: 93\n    },\n    [ROLE_DVT]: {\n        minStake: '30 GT',\n        ticketPrice: '3 GT',\n        exitFeePercent: '10%',\n        minExitFee: '1 GT',\n        lockDuration: '30 days',\n        line: 94\n    },\n    [ROLE_ANODE]: {\n        minStake: '20 GT',\n        ticketPrice: '2 GT',\n        exitFeePercent: '10%',\n        minExitFee: '1 GT',\n        lockDuration: '30 days',\n        line: 95\n    },\n    [ROLE_KMS]: {\n        minStake: '100 GT',\n        ticketPrice: '10 GT',\n        exitFeePercent: '10%',\n        minExitFee: '5 GT',\n        lockDuration: '30 days',\n        line: 98\n    },\n    [ROLE_COMMUNITY]: {\n        minStake: '30 GT',\n        ticketPrice: '3 GT',\n        exitFeePercent: '5%',\n        minExitFee: '1 GT',\n        lockDuration: '30 days',\n        line: 99\n    },\n    [ROLE_ENDUSER]: {\n        minStake: '0.3 GT',\n        ticketPrice: '0.05 GT',\n        exitFeePercent: '10%',\n        minExitFee: '0.05 GT',\n        lockDuration: '7 days',\n        additionalRequirement: 'Must hold MySBT from community',\n        line: 100\n    }\n} as const;\n\n/**\n * All defined roles array (for iteration)\n */\nexport const ALL_ROLES = [\n    ROLE_COMMUNITY,\n    ROLE_ENDUSER,\n    ROLE_PAYMASTER_AOA,\n    ROLE_PAYMASTER_SUPER,\n    ROLE_DVT,\n    ROLE_ANODE,\n    ROLE_KMS\n] as const;\n","/**\n * Unified requirement checker for role registration\n * Provides centralized validation for GToken, aPNTs, MySBT, and role permissions\n */\nimport { Address, parseAbi, parseEther, formatEther } from 'viem';\nimport { type PublicClient } from './clients/doc-types.js';\nimport type { RoleRequirement } from './roles.js';\nimport { ROLE_PAYMASTER_AOA, ROLE_PAYMASTER_SUPER } from './roles.js';\n\n/**\n * Operator onboarding mode (matches the codebase's paymaster model).\n * - `AOA`  — an INDEPENDENT paymaster operator running their own PaymasterV4\n *   (role `ROLE_PAYMASTER_AOA`). Readiness = that role + a GToken role stake.\n * - `AOA+` — a SHARED SuperPaymaster operator (role `ROLE_PAYMASTER_SUPER`).\n *   Readiness = that role + a GToken role stake + a community-issued SBT.\n *\n * In both modes the \"stake\" is the on-chain `getRoleStake(roleId, operator)`\n * recorded by the Registry — NOT the operator's plain GToken wallet balance.\n */\nexport type OperatorMode = 'AOA' | 'AOA+';\n\n/** Default minimum role stake per mode (override via {@link CheckResourcesOptions}). */\nconst DEFAULT_AOA_STAKE = parseEther('30');\nconst DEFAULT_AOA_PLUS_STAKE = parseEther('50');\n\n/** Boolean sub-check result (role / SBT). */\nexport interface ResourceBoolCheck {\n    value: boolean;\n    ok: boolean;\n}\n\n/** Role-stake sub-check result. */\nexport interface ResourceStakeCheck {\n    /** Current on-chain role stake (`getRoleStake(roleId, operator)`). */\n    staked: bigint;\n    /** Minimum stake required for this mode. */\n    required: bigint;\n    ok: boolean;\n}\n\n/**\n * Aggregated readiness report for a given {@link OperatorMode}.\n * Mirrors the structured-report style of PaymasterV4 `checkGaslessReadiness`.\n */\nexport interface ResourceReport {\n    /** True when every relevant sub-check passed (`issues.length === 0`). */\n    ready: boolean;\n    mode: OperatorMode;\n    /** Only the sub-checks relevant to the requested mode are populated. */\n    checks: {\n        role?: ResourceBoolCheck & { roleId: `0x${string}` };\n        stake?: ResourceStakeCheck;\n        sbt?: ResourceBoolCheck;\n    };\n    /** Actionable, human-readable description of each unmet requirement. */\n    issues: string[];\n}\n\n/** Optional threshold overrides for {@link RequirementChecker.checkResources}. */\nexport interface CheckResourcesOptions {\n    /** Minimum role stake (defaults: 30 GT for AOA, 50 GT for AOA+). */\n    requiredStake?: bigint;\n}\n\nconst ERC20_ABI = parseAbi([\n    'function balanceOf(address) view returns (uint256)'\n]);\n\nconst REGISTRY_ABI = parseAbi([\n    'function hasRole(bytes32, address) view returns (bool)',\n    'function getRoleStake(bytes32, address) view returns (uint256)'\n]);\n\nconst MYSBT_ABI = parseAbi([\n    'function balanceOf(address) view returns (uint256)'\n]);\n\n/**\n * Requirement Checker Utility\n * @description Centralized validation for all role requirements\n * \n * @example\n * ```typescript\n * const checker = new RequirementChecker(publicClient);\n * \n * // Check community launch requirements\n * const result = await checker.checkRequirements({\n *     address: userAddress,\n *     roleId: ROLE_COMMUNITY,\n *     requiredGToken: parseEther(\"33\"),\n *     requireSBT: false\n * });\n * \n * if (!result.hasEnoughGToken) {\n *     console.error(result.missingRequirements.join('\\n'));\n * }\n * ```\n */\nexport class RequirementChecker {\n    constructor(\n        /** @internal */\n        private publicClient: PublicClient,\n        /** @internal */\n        private addresses?: {\n            registry?: Address;\n            gtoken?: Address;\n            apnts?: Address;\n            mysbt?: Address;\n        }\n    ) {}\n\n    /**\n     * Check all requirements for a user\n     * \n     * @param params Check parameters\n     * @returns Detailed requirement status\n     */\n    async checkRequirements(params: {\n        address: Address;\n        roleId?: `0x${string}`;\n        requiredGToken?: bigint;\n        requiredAPNTs?: bigint;\n        requireSBT?: boolean;\n    }): Promise<RoleRequirement> {\n        const {\n            address,\n            roleId,\n            requiredGToken = 0n,\n            requiredAPNTs = 0n,\n            requireSBT = false\n        } = params;\n\n        const missingRequirements: string[] = [];\n\n        // Check role (if specified)\n        let hasRole = false;\n        if (roleId) {\n            const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n            hasRole = await this.publicClient.readContract({\n               address: this.addresses?.registry || CORE_ADDRESSES.registry,\n                abi: REGISTRY_ABI,\n                functionName: 'hasRole',\n                args: [roleId, address]\n            }) as boolean;\n\n            if (!hasRole && params.roleId) {\n                missingRequirements.push(`Does not have required role`);\n            }\n        }\n\n        // Check GToken balance\n        let hasEnoughGToken = true;\n        if (requiredGToken > 0n) {\n            const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n            const gtokenBalance = await this.publicClient.readContract({\n                address: this.addresses?.gtoken || CORE_ADDRESSES.gToken,\n                abi: ERC20_ABI,\n                functionName: 'balanceOf',\n                args: [address]\n            }) as bigint;\n\n            hasEnoughGToken = gtokenBalance >= requiredGToken;\n            if (!hasEnoughGToken) {\n                missingRequirements.push(\n                    `Need ${requiredGToken.toString()} GToken, have ${gtokenBalance.toString()}`\n                );\n            }\n        }\n\n        // Check aPNTs balance\n        let hasEnoughAPNTs = true;\n        if (requiredAPNTs > 0n) {\n            const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n            const apntsBalance = await this.publicClient.readContract({\n                address: this.addresses?.apnts || CORE_ADDRESSES.aPNTs,\n                abi: ERC20_ABI,\n                functionName: 'balanceOf',\n                args: [address]\n            }) as bigint;\n\n            hasEnoughAPNTs = apntsBalance >= requiredAPNTs;\n            if (!hasEnoughAPNTs) {\n                missingRequirements.push(\n                    `Need ${requiredAPNTs.toString()} aPNTs, have ${apntsBalance.toString()}`\n                );\n            }\n        }\n\n        // Check MySBT\n        let hasSBT = false;\n        if (requireSBT) {\n            const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n            const sbtBalance = await this.publicClient.readContract({\n                address: this.addresses?.mysbt || CORE_ADDRESSES.mySBT,\n                abi: MYSBT_ABI,\n                functionName: 'balanceOf',\n                args: [address]\n            }) as bigint;\n\n            hasSBT = sbtBalance > 0n;\n            if (!hasSBT) {\n                missingRequirements.push('Must hold at least one MySBT');\n            }\n        }\n\n        return {\n            hasRole,\n            hasEnoughGToken,\n            hasEnoughAPNTs,\n            hasSBT,\n            missingRequirements\n        };\n    }\n\n    /**\n     * Check GToken balance only (shortcut)\n     */\n    async checkGTokenBalance(address: Address, required: bigint): Promise<{\n        balance: bigint;\n        hasEnough: boolean;\n    }> {\n        const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n        const balance = await this.publicClient.readContract({\n            address: this.addresses?.gtoken || CORE_ADDRESSES.gToken,\n            abi: ERC20_ABI,\n            functionName: 'balanceOf',\n            args: [address]\n        }) as bigint;\n\n        return {\n            balance,\n            hasEnough: balance >= required\n        };\n    }\n\n    /**\n     * Check aPNTs balance only (shortcut)\n     */\n    async checkAPNTsBalance(address: Address, required: bigint): Promise<{\n        balance: bigint;\n        hasEnough: boolean;\n    }> {\n        const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n        const balance = await this.publicClient.readContract({\n            address: this.addresses?.apnts || CORE_ADDRESSES.aPNTs,\n            abi: ERC20_ABI,\n            functionName: 'balanceOf',\n            args: [address]\n        }) as bigint;\n\n        return {\n            balance,\n            hasEnough: balance >= required\n        };\n    }\n\n    /**\n     * Check if user has MySBT (shortcut)\n     */\n    async checkHasSBT(address: Address): Promise<boolean> {\n        const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n        const balance = await this.publicClient.readContract({\n            address: this.addresses?.mysbt || CORE_ADDRESSES.mySBT,\n            abi: MYSBT_ABI,\n            functionName: 'balanceOf',\n            args: [address]\n        }) as bigint;\n\n        return balance > 0n;\n    }\n\n    /**\n     * Check if user has specific role (shortcut)\n     */\n    async checkHasRole(roleId: `0x${string}`, address: Address): Promise<boolean> {\n        const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n        return await this.publicClient.readContract({\n            address: this.addresses?.registry || CORE_ADDRESSES.registry,\n            abi: REGISTRY_ABI,\n            functionName: 'hasRole',\n            args: [roleId, address]\n        }) as boolean;\n    }\n\n    /**\n     * Check a user's on-chain role stake (`getRoleStake(roleId, operator)`) (shortcut).\n     */\n    async checkRoleStake(roleId: `0x${string}`, address: Address, required: bigint): Promise<{\n        staked: bigint;\n        hasEnough: boolean;\n    }> {\n        const { CORE_ADDRESSES } = await import('./contract-addresses.js');\n        const staked = await this.publicClient.readContract({\n            address: this.addresses?.registry || CORE_ADDRESSES.registry,\n            abi: REGISTRY_ABI,\n            functionName: 'getRoleStake',\n            args: [roleId, address]\n        }) as bigint;\n\n        return {\n            staked,\n            hasEnough: staked >= required\n        };\n    }\n\n    /**\n     * Aggregated readiness query for an operator onboarding mode.\n     *\n     * Composes the existing `check*` shortcuts into a single structured report,\n     * so consumers (e.g. YAA) no longer need to wire each balance/role/SBT read\n     * by hand. Each unmet requirement produces an actionable `issue` string.\n     *\n     * - `AOA`  — independent paymaster operator: checks `ROLE_PAYMASTER_AOA` + role stake.\n     * - `AOA+` — shared SuperPaymaster operator: checks `ROLE_PAYMASTER_SUPER` + role stake + SBT.\n     *\n     * @param wallet  Operator address to evaluate.\n     * @param mode    Onboarding mode (`'AOA'` | `'AOA+'`).\n     * @param options Optional threshold overrides.\n     * @returns A {@link ResourceReport}; `ready` is true iff `issues` is empty.\n     */\n    async checkResources(\n        wallet: Address,\n        mode: OperatorMode,\n        options: CheckResourcesOptions = {}\n    ): Promise<ResourceReport> {\n        const issues: string[] = [];\n        const checks: ResourceReport['checks'] = {};\n\n        const isPlus = mode === 'AOA+';\n        const roleId = (isPlus ? ROLE_PAYMASTER_SUPER : ROLE_PAYMASTER_AOA) as `0x${string}`;\n        const roleName = isPlus ? 'PAYMASTER_SUPER' : 'PAYMASTER_AOA';\n        const requiredStake = options.requiredStake ?? (isPlus ? DEFAULT_AOA_PLUS_STAKE : DEFAULT_AOA_STAKE);\n\n        // SBT is only required for the shared SuperPaymaster (AOA+) tier.\n        const [hasRole, stake, hasSBT] = await Promise.all([\n            this.checkHasRole(roleId, wallet),\n            this.checkRoleStake(roleId, wallet, requiredStake),\n            isPlus ? this.checkHasSBT(wallet) : Promise.resolve(null)\n        ]);\n\n        checks.role = { roleId, value: hasRole, ok: hasRole };\n        if (!hasRole) {\n            issues.push(\n                `Missing ${roleName} role: register via registerRole(ROLE_${roleName})`\n            );\n        }\n\n        checks.stake = {\n            staked: stake.staked,\n            required: requiredStake,\n            ok: stake.hasEnough\n        };\n        if (!stake.hasEnough) {\n            issues.push(\n                `Insufficient role stake: need ${formatEther(requiredStake)} GT, have ${formatEther(stake.staked)} GT`\n            );\n        }\n\n        if (isPlus) {\n            const sbtOk = hasSBT === true;\n            checks.sbt = { value: sbtOk, ok: sbtOk };\n            if (!sbtOk) {\n                issues.push('Missing MySBT: a community-issued SBT is required for AOA+');\n            }\n        }\n\n        return {\n            ready: issues.length === 0,\n            mode,\n            checks,\n            issues\n        };\n    }\n}\n","import { Address, isAddress } from 'viem';\nimport { CORE_ADDRESSES } from '../contract-addresses.js';\n\nexport interface SuperPaymasterConfig {\n    registry: Address;\n    gToken: Address;\n    gTokenStaking: Address;\n    superPaymaster: Address;\n    paymasterFactory: Address;\n    paymasterV4: Address;\n    entryPoint: Address;\n}\n\nexport class ContractConfigManager {\n    /**\n     * Get validated core configuration\n     */\n    public static getConfig(): SuperPaymasterConfig {\n        const config = {\n            registry: CORE_ADDRESSES.registry,\n            gToken: CORE_ADDRESSES.gToken,\n            gTokenStaking: CORE_ADDRESSES.gTokenStaking,\n            superPaymaster: CORE_ADDRESSES.superPaymaster,\n            paymasterV4: CORE_ADDRESSES.paymasterV4,\n            paymasterFactory: CORE_ADDRESSES.paymasterFactory,\n            entryPoint: CORE_ADDRESSES.entryPoint || '0x0000000071727De22E5E9d8BAf0edAc6f37da032' as Address\n        };\n\n        this.validate(config);\n        return config;\n    }\n\n    /**\n     * Validate configuration addresses\n     */\n    private static validate(config: Record<string, Address | undefined>) {\n        const missing: string[] = [];\n        const invalid: string[] = [];\n\n        // Critical contracts that MUST exist for experiments\n        const critical = ['registry', 'gToken', 'superPaymaster', 'paymasterV4'];\n\n        for (const [key, addr] of Object.entries(config)) {\n            if (!addr) {\n                if (critical.includes(key)) {\n                    missing.push(key);\n                }\n            } else if (!isAddress(addr)) {\n                invalid.push(`${key} (${addr})`);\n            }\n        }\n\n        if (missing.length > 0 || invalid.length > 0) {\n            throw new Error(`\n                Invalid Contract Configuration:\n                Missing: ${missing.join(', ')}\n                Invalid Format: ${invalid.join(', ')}\n                \n                Please ensure your .env file is correctly sourced from 'projects/SuperPaymaster/.env.sepolia'\n            `);\n        }\n    }\n}\n","/**\n * transports/helios.ts — Helios light client viem transport.\n *\n * Provides a viem-compatible custom transport backed by @a16z/helios, a\n * Rust/WASM Ethereum light client that verifies block headers against the\n * consensus layer. Use this transport to make verified RPC calls without\n * trusting a centralized RPC provider.\n *\n * @example\n * ```ts\n * import { createHeliosTransport } from '@aastar/core/transports/helios';\n * import { createPublicClient } from 'viem';\n * import { mainnet } from 'viem/chains';\n *\n * const transport = await createHeliosTransport({\n *   executionRpcUrl: 'https://eth.llamarpc.com',\n *   consensusRpcUrl: 'https://www.lightclientdata.org',\n * });\n *\n * const client = createPublicClient({ chain: mainnet, transport });\n * const blockNumber = await client.getBlockNumber(); // verified ✓\n * ```\n *\n * Requirements:\n *   - @a16z/helios (^0.11.0)\n *   - Browser or Node.js with WASM support\n */\n\nimport { custom, type CustomTransportConfig } from \"viem\";\n\nexport interface HeliosTransportConfig {\n  /**\n   * Execution-layer JSON-RPC URL (used for historical state, mempool).\n   * Example: \"https://eth.llamarpc.com\"\n   */\n  executionRpcUrl: string;\n\n  /**\n   * Consensus-layer REST beacon URL (used for light client sync).\n   * Example: \"https://www.lightclientdata.org\"\n   */\n  consensusRpcUrl: string;\n\n  /**\n   * Network name. Defaults to \"mainnet\". Also accepts \"sepolia\".\n   */\n  network?: \"mainnet\" | \"sepolia\";\n\n  /**\n   * Options forwarded to viem's custom() transport (timeout, retryCount, etc.)\n   */\n  transportConfig?: CustomTransportConfig;\n}\n\n/**\n * Create a viem custom transport backed by the Helios light client.\n *\n * Helios is lazy-initialized on the first RPC request so the WASM module\n * loads only when needed. The returned transport is safe to pass directly\n * to `createPublicClient`.\n */\nexport async function createHeliosTransport(config: HeliosTransportConfig) {\n  // Dynamic import — @a16z/helios is an optional dep; keep it out of main bundle\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const { Helios } = await (import(\"@a16z/helios\") as Promise<any>);\n\n  const helios = new Helios({\n    executionRpc: config.executionRpcUrl,\n    consensusRpc: config.consensusRpcUrl,\n    network: config.network ?? \"mainnet\",\n  });\n\n  await helios.start();\n\n  return custom(\n    {\n      async request({ method, params }: { method: string; params?: unknown[] }) {\n        // Route the call through the Helios client (verified response)\n        return helios.send(method, params ?? []);\n      },\n    },\n    config.transportConfig,\n  );\n}\n","/**\n * utils/ens.ts — ENS forward and reverse resolution helpers.\n *\n * Wraps viem's ENS actions with a simple, dual-direction API:\n *   resolveEns(name)  → 0x address (forward lookup)\n *   lookupAddress(address) → ENS name (reverse lookup)\n *\n * @example\n * ```ts\n * import { resolveEns, lookupAddress } from '@aastar/core/utils/ens';\n *\n * const address = await resolveEns('vitalik.eth');\n * // → \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\"\n *\n * const name = await lookupAddress('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');\n * // → \"vitalik.eth\"\n * ```\n *\n * Requirements: viem ≥ 2.0 (already a peer dep of @aastar/core)\n */\n\nimport { createPublicClient, http, type Chain, type PublicClient } from \"viem\";\nimport { getEnsAddress, getEnsName, normalize } from \"viem/ens\";\nimport { mainnet } from \"viem/chains\";\n\n/** Options accepted by resolveEns and lookupAddress. */\nexport interface EnsOptions {\n  /**\n   * viem PublicClient configured for the ENS registry chain (usually mainnet).\n   * If omitted, a default mainnet client using the public RPC is created.\n   * Pass your own client to control the RPC URL, caching, etc.\n   */\n  client?: PublicClient;\n\n  /**\n   * Mainnet JSON-RPC URL. Only used when `client` is not provided.\n   * Defaults to the viem public mainnet RPC.\n   */\n  rpcUrl?: string;\n}\n\n/**\n * Forward-resolve an ENS name to an Ethereum address.\n * Returns null if the name has no address record.\n *\n * @example\n * const address = await resolveEns('vitalik.eth');\n */\nexport async function resolveEns(\n  name: string,\n  options: EnsOptions = {},\n): Promise<`0x${string}` | null> {\n  const client = options.client ?? makeMainnetClient(options.rpcUrl);\n  return getEnsAddress(client, { name: normalize(name) });\n}\n\n/**\n * Reverse-resolve an Ethereum address to its primary ENS name.\n * Returns null if the address has no reverse record.\n *\n * @example\n * const name = await lookupAddress('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');\n */\nexport async function lookupAddress(\n  address: `0x${string}`,\n  options: EnsOptions = {},\n): Promise<string | null> {\n  const client = options.client ?? makeMainnetClient(options.rpcUrl);\n  return getEnsName(client, { address });\n}\n\n/**\n * Resolve both directions at once: given an ENS name, return the address and\n * confirm the reverse record matches (to detect misconfigurations).\n *\n * Returns `{ address, name, verified }` where `verified` is true only when\n * the reverse record of the resolved address points back to `name`.\n */\nexport async function resolveEnsVerified(\n  name: string,\n  options: EnsOptions = {},\n): Promise<{ address: `0x${string}` | null; name: string; verified: boolean }> {\n  const client = options.client ?? makeMainnetClient(options.rpcUrl);\n\n  const address = await getEnsAddress(client, { name: normalize(name) });\n  if (!address) return { address: null, name, verified: false };\n\n  const reverseName = await getEnsName(client, { address });\n  const verified =\n    reverseName !== null && reverseName.toLowerCase() === name.toLowerCase();\n\n  return { address, name, verified };\n}\n\n// ── Internal ─────────────────────────────────────────────────────────────────\n\nfunction makeMainnetClient(rpcUrl?: string): PublicClient {\n  return createPublicClient({\n    chain: mainnet as Chain,\n    transport: http(rpcUrl),\n  }) as unknown as PublicClient;\n}\n"]}