import { Address } from 'viem'; /** * Canonical Contract Addresses for Supported Networks * These are hardcoded as defaults for NPM distribution. * * SINGLE SOURCE OF TRUTH for SDK contract addresses (Beta3.1 P2.8). * The root `config.{network}.json` files are dev/deploy-time overrides and MUST * agree with this table for any network that has a chainId entry here. The * `scripts/check-address-consistency.ts` drift check (CI: `pnpm run check:addresses`) * enforces that. NOTE: `@aastar/shared-config` is a separate external repo (vendored * as git submodules under ext/ and lib/), NOT a workspace package and NOT the SDK's * source of truth — do not treat it as canonical here. */ declare const CANONICAL_ADDRESSES: { readonly 10: { readonly registry: "0x997686219F31405503D32728B1f094F115EF24e7"; readonly gToken: "0x8d6Fe002dDacCcFBD377F684EC1825f2E1ab7ef6"; readonly staking: "0x7A1216C2d814D2389698C64eD23AA1aA9Eb6343E"; readonly sbt: "0x28eBFc5fc03B1d7648254AbF1C7B39DbFdef1a94"; readonly reputationSystem: "0xA9560898dC0eE4F9Ed3F1db17dbf74dE65e925c2"; readonly superPaymaster: "0xA2c9A6e95f19f5D2a364CBCbB5f0b32B1B4d140E"; readonly paymasterFactory: "0x58A7F6E44a57028A255794119F8b37124c9a7eB8"; readonly paymasterV4: "0x67a70a578E142b950987081e7016906ae4F56Df4"; readonly paymasterV4Impl: "0xc4dd13F7825409EEC13FBCBdD9D8f6d618207cca"; readonly aPNTsPaymasterV4: "0x67a70a578E142b950987081e7016906ae4F56Df4"; readonly PNTsPaymasterV4: "0x0000000000000000000000000000000000000000"; readonly xPNTsFactory: "0x864971a26384d9DCC7115f0bBC428e2623F28b6e"; readonly blsAggregator: "0x1C305372ecc5a36CBef1FA371392234bCD55eB19"; readonly blsValidator: "0xA88ADec5A8dc422B57488272d5aD5913d728942A"; readonly dvtValidator: "0x31Ede6454a56293f7cf2323CA5d5F9a6230558Fb"; readonly entryPoint: "0x0000000071727De22E5E9d8BAf0edAc6f37da032"; readonly aPNTs: "0x0B41C78081B5A141eb4C3C7E7FD8E58A7Bde553B"; readonly priceFeed: "0x13e3Ee699D1909E989722E753853AE30b17e08c5"; readonly simpleAccountFactory: "0x91E60e0613810449d098b0b5Ec8b51A0FE8c8985"; readonly microPaymentChannel: "0x0000000000000000000000000000000000000000"; readonly agentIdentityRegistry: "0x0000000000000000000000000000000000000000"; readonly agentReputationRegistry: "0x0000000000000000000000000000000000000000"; readonly agentValidationRegistry: "0x0000000000000000000000000000000000000000"; readonly aaStarBLSAlgorithm: "0x0000000000000000000000000000000000000000"; readonly aaStarValidator: "0x0000000000000000000000000000000000000000"; readonly aaStarBLSAggregator: "0x0000000000000000000000000000000000000000"; readonly sessionKeyValidator: "0x0000000000000000000000000000000000000000"; readonly forceExitModule: "0x0000000000000000000000000000000000000000"; readonly airAccountDelegate: "0x0000000000000000000000000000000000000000"; readonly calldataParserRegistry: "0x0000000000000000000000000000000000000000"; readonly airAccountFactoryV7: "0x0000000000000000000000000000000000000000"; readonly airAccountV7Impl: "0x0000000000000000000000000000000000000000"; readonly airAccountExtension: "0x0000000000000000000000000000000000000000"; readonly agentRegistry: "0x0000000000000000000000000000000000000000"; readonly policyRegistry: "0x0000000000000000000000000000000000000000"; readonly x402Facilitator: "0x0000000000000000000000000000000000000000"; readonly timelockController: "0x0000000000000000000000000000000000000000"; readonly pnts: "0x0000000000000000000000000000000000000000"; }; readonly 11155111: { readonly registry: "0xf5Bf37ca83AfdAab73691bA7eCcDfA69b8708E71"; readonly gToken: "0x4c09aE57503Aa1E2A43b05621A38DbdD43b0Aa08"; readonly staking: "0x472297B557c1d0F030f281a5Bb8A535f6c5AB65e"; readonly sbt: "0x4867B4302bf4C7818b71F55E53A3520Ee1855Aa7"; readonly reputationSystem: "0x4Ec2D49D75D5D4206B64387A7d6a6C3c5c90fB5A"; readonly superPaymaster: "0x09DF0d2e3722EC0e401fE3819E64278a42ae4DE9"; readonly paymasterFactory: "0xA936F8e3d682B0eCf280E6f5c05fF4204ee87180"; readonly paymasterV4: "0xf3948753ff21D33f6A5f516621FFF245B23efa0e"; readonly paymasterV4Impl: "0xc0F968625E3Ac0A2ad7f107cD5857425F672D268"; readonly aPNTsPaymasterV4: "0xf3948753ff21D33f6A5f516621FFF245B23efa0e"; readonly PNTsPaymasterV4: "0xC827747674ab6397c319e284f650D07d8c2a4a46"; readonly xPNTsFactory: "0x67422d2e44a33c8dA99b3b776841bF316bD209a2"; readonly blsAggregator: "0xF51c029879685Ced8fbCfa4b647c2eAe50Cd8B13"; readonly blsValidator: "0x0A71C5a32b8CBC517523D2C88b539Ab22AeF0654"; readonly dvtValidator: "0x568b1486BFE036e603eA11f0D03Dc47fa62c9E0e"; readonly entryPoint: "0x0000000071727De22E5E9d8BAf0edAc6f37da032"; readonly aPNTs: "0x696A73701b104c6cCBbAadDD2216788ea08EaB89"; readonly priceFeed: "0x694AA1769357215DE4FAC081bf1f309aDC325306"; readonly simpleAccountFactory: "0x91E60e0613810449d098b0b5Ec8b51A0FE8c8985"; readonly microPaymentChannel: "0x37578b70B231CC0Eda5991CA633ae99eb35f3818"; readonly agentIdentityRegistry: "0x8004A818BFB912233c491871b3d84c89A494BD9e"; readonly agentReputationRegistry: "0x8004B663056A597Dffe9eCcC1965A193B7388713"; readonly agentValidationRegistry: "0x8004Cb1BF31DAf7788923b405b754f57acEB4272"; readonly aaStarBLSAlgorithm: "0x1A8Db639b5d8Bd5742edB083656EDD56f416cd64"; readonly aaStarValidator: "0xA15127e8601e77De7C655bf04ca75cccD8C968f0"; readonly aaStarBLSAggregator: "0x35775df9a4f4dB42Ea0C46118a12dDd0cEc70609"; readonly sessionKeyValidator: "0x6b044fB27B4763Fd30D02e41EDF2c62af4Aa946f"; readonly forceExitModule: "0x3fDe77868b74a7979A40a2293a1CD265fbe66EEc"; readonly airAccountDelegate: "0xd2735E54C5f5f2BF523b8a9ddd0E183624c3f2c0"; readonly calldataParserRegistry: "0x7dEea4544446826601014bD94d0F6432A67496F5"; readonly airAccountFactoryV7: "0x25C1E9F9120a406581f93bA82f7Cfd6805512791"; readonly airAccountV7Impl: "0x4873b7C1c07BE1b52d6583A64F5E902e593BDdad"; readonly airAccountExtension: "0x79b90Ed6CB97ec48cfDA86399752C58Bbc59D90a"; readonly agentRegistry: "0x37fc74EaeC81fEdD92876c8713405118Ebc0306e"; readonly policyRegistry: "0x29253bF61310B63866dfb9E9f464B6d95E09f2C1"; readonly x402Facilitator: "0xfe1DB01e1d6622e722B92ed5993af61325DB92aF"; readonly timelockController: "0x86C86c789EDc099801cc6a5F48334F1D67dC9564"; readonly pnts: "0xE6579A90dc498a710008de12119812D0FB7aA224"; }; readonly 11155420: { readonly registry: "0xcf6860Ab57de8669756997e414D9c52B6e301972"; readonly gToken: "0xC341c88453372021d0221834307613c2e99fE718"; readonly staking: "0x5f57B931C849e8E255F22755506eB2255aB22a7C"; readonly sbt: "0x2c3Ca1553dC1B8870381E8E56C7b3e3A3ae162f0"; readonly reputationSystem: "0x891EC0f84D9275839B8dAf74e87B23F2DBd7f9c9"; readonly superPaymaster: "0x9eC1FE8134A1C05aD34ba2E4e8758dAe0a009B94"; readonly paymasterFactory: "0x1e3b9d12eAc27867a523d0537902441B0E7D98d8"; readonly paymasterV4: "0xf250416C940605a1D423ccd059668219cf7D80ea"; readonly paymasterV4Impl: "0x906123080207F250B1C9F299991512Cb31f35b2f"; readonly aPNTsPaymasterV4: "0x0000000000000000000000000000000000000000"; readonly PNTsPaymasterV4: "0x0000000000000000000000000000000000000000"; readonly xPNTsFactory: "0x7792a49C9E91e0E9B631B27D885d15e971B7482A"; readonly blsAggregator: "0x6e06b17b1a4D2D973F7E3e026e24b4393315736c"; readonly blsValidator: "0x260fa905CcE1f5b29Afe9d627c01fAAE4A66A7F5"; readonly dvtValidator: "0x0087cA806109E150438116cAA414580BB5fa9195"; readonly entryPoint: "0x0000000071727De22E5E9d8BAf0edAc6f37da032"; readonly aPNTs: "0x3BBcA92Ad828b3dD619c980Ba09f929b9d2BC440"; readonly priceFeed: "0x61Ec26aA57019C486B10502285c5A3D4A4750AD7"; readonly simpleAccountFactory: "0x91E6060613810449d098b0b5EC8b51A0fe8C8985"; readonly microPaymentChannel: "0x0000000000000000000000000000000000000000"; readonly agentIdentityRegistry: "0x0000000000000000000000000000000000000000"; readonly agentReputationRegistry: "0x0000000000000000000000000000000000000000"; readonly agentValidationRegistry: "0x0000000000000000000000000000000000000000"; readonly aaStarBLSAlgorithm: "0x0000000000000000000000000000000000000000"; readonly aaStarValidator: "0x0000000000000000000000000000000000000000"; readonly aaStarBLSAggregator: "0x0000000000000000000000000000000000000000"; readonly sessionKeyValidator: "0x0000000000000000000000000000000000000000"; readonly forceExitModule: "0x0000000000000000000000000000000000000000"; readonly airAccountDelegate: "0x0000000000000000000000000000000000000000"; readonly calldataParserRegistry: "0x0000000000000000000000000000000000000000"; readonly airAccountFactoryV7: "0x0000000000000000000000000000000000000000"; readonly airAccountV7Impl: "0x0000000000000000000000000000000000000000"; readonly airAccountExtension: "0x0000000000000000000000000000000000000000"; readonly agentRegistry: "0x0000000000000000000000000000000000000000"; readonly policyRegistry: "0x0000000000000000000000000000000000000000"; readonly x402Facilitator: "0x0000000000000000000000000000000000000000"; readonly timelockController: "0x0000000000000000000000000000000000000000"; readonly pnts: "0x0000000000000000000000000000000000000000"; }; }; type CanonicalAddresses = (typeof CANONICAL_ADDRESSES)[keyof typeof CANONICAL_ADDRESSES]; type SupportedChainId = keyof typeof CANONICAL_ADDRESSES; /** * Mycelium community governance Safe (CC-31) — the canonical production owner-target for * on-chain governance across the ecosystem. Deployed at the SAME address on all three chains: * OP Mainnet (10), Ethereum (1), and Sepolia (11155111). * * Use it as the default `newOwner`/owner-target for SDK governance write helpers * (`@aastar/admin` `transferOwnership`, `SlashGovernance` Timelock orchestration) and deploy * scripts, and as the single source consumers (e.g. YAAA) read instead of hard-coding the * address — same pattern as `DVT_VALIDATOR_ADDRESS`. * * NOTE: the SDK owns/deploys no on-chain contracts, so it never transfers ownership itself. * Actually pointing each contract's owner/admin at this Safe is a mainnet deploy action taken * by the individual contract repos (SuperPaymaster / airaccount-contract / DVT); this constant * only provides the canonical target + default. Testnet may use a test EOA/Safe; production * governance must converge here. */ declare const COMMUNITY_SAFE: "0x51eDf11fDb0A4F66220eFb8efA54Eca77232E114"; /** * MushroomDAO launch token-sale stack (aPoints + governance-token sale), keyed by chainId. * * Kept as a SEPARATE table from {@link CANONICAL_ADDRESSES} on purpose: these are the launch * app's own contracts (`MushroomDAO/launch`), not the core SuperPaymaster protocol set, so they * stay out of the constants/contract-addresses/drift-check pipeline. * * De-dup rule: this table stores ONLY the launch-specific contracts (the two sale contracts + * BuyHelper) plus the accepted payment stablecoins. It deliberately does NOT store the GToken / * aPNTs *payout* token addresses — `TokenSaleClient` reads those on-chain from the sale contract's * `gToken()` / `aPNTs()` immutable getters, so there is never a second copy of a token address to * drift. (Background: multiple GToken deployments have existed — core canonical `0x20a051…`, an * earlier launch test GToken `0x4e6A11…`, and the launch DEPLOYED.md "SuperPaymaster" `0xa592ec…`. * The earlier Sepolia sale was constructor-bound to the test token; the Path-A redeploy * (2026-06-21, below) rebound it to the core-canonical GToken/aPNTs, so `getPayoutToken()` now * resolves on-chain to `0x20a051…` / `0x9e66B…`.) */ interface LaunchSaleAddresses { /** SaleContractV2 — sells the constructor-bound GToken (governance token). */ saleGToken: Address; /** APNTsSaleContract — sells the constructor-bound aPNTs (aPoints). */ saleAPNTs: Address; /** BuyHelper — gasless entrypoint (EIP-3009 transferWithAuthorization + EIP-712 BuyIntent). */ buyHelper: Address; /** Accepted payment stablecoin: USDC (6-decimal). Also the EIP-3009 token for gasless. */ usdc: Address; /** Accepted payment stablecoin: USDT (6-decimal). Self-pay only. */ usdt: Address; /** * Legacy single relayer base URL (Cloudflare Worker) — kept as the FINAL fallback. The SDK * appends `/v3/relay`. The primary gasless-relay pool now lives in the single-source DVT config * (`getDvtRelayerUrlsForChain`, AirAccount #98 / aastar-sdk #148/#153); `TokenSaleClient` * load-balances across it and only falls back here. */ relayerUrl: string; } declare const LAUNCH_SALE_ADDRESSES: Record; /** Resolve the launch token-sale address group for a chain, or `undefined` if none. */ declare function getLaunchSaleAddresses(chainId: number): LaunchSaleAddresses | undefined; /** * Chain IDs that have a canonical address book in {@link CANONICAL_ADDRESSES}. * * @example * ```ts * listSupportedChainIds(); // [10, 11155111, 11155420] * ``` */ declare function listSupportedChainIds(): number[]; /** True if {@link CANONICAL_ADDRESSES} has an entry for `chainId`. */ declare function isSupportedChainId(chainId: number): chainId is SupportedChainId; /** * Resolve the canonical contract address book for a chain, keyed by `chainId`, * normalized to the key names the role-based client factories expect. * * The canonical table uses `staking` / `sbt`; the historical client factories * (and many consumers) reference `gTokenStaking` / `mySBT`. This helper returns * the canonical set plus those aliases so a single object satisfies both, which * is what makes `createEndUserClient({ chain })` resolve addresses automatically * — no manual `addresses` needed for any supported chain. * * @param chainId - EVM chain id (e.g. 10 = Optimism, 11155111 = Sepolia). * @returns The normalized address record, or `undefined` if the chain has no * canonical entry (caller must then pass `addresses` explicitly). * * @example * ```ts * import { optimism } from 'viem/chains'; * const addrs = getCanonicalAddresses(optimism.id); // chainId 10 * addrs?.registry; addrs?.mySBT; // alias of `sbt` * ``` */ declare function getCanonicalAddresses(chainId: number): (CanonicalAddresses & { gTokenStaking: Address; mySBT: Address; }) | undefined; /** * A friendly, human-readable list of the supported chains for error messages — * e.g. `"OP Mainnet (10), Sepolia (11155111), OP Sepolia (11155420)"`. Names come * from viem/chains so callers recognize them by the same label viem uses. */ declare function describeSupportedChains(): string; export { CANONICAL_ADDRESSES as C, type LaunchSaleAddresses as L, type SupportedChainId as S, type CanonicalAddresses as a, COMMUNITY_SAFE as b, LAUNCH_SALE_ADDRESSES as c, getCanonicalAddresses as d, describeSupportedChains as e, getLaunchSaleAddresses as g, isSupportedChainId as i, listSupportedChainIds as l };