/** * On-chain constants for fourMM. * * These addresses are immutable and come from the Four.meme protocol * documentation (docs/API-Documents.03-03-2026.md) and public BSC infrastructure. * * DO NOT read them from config — hardcoding catches misconfiguration at * import time instead of at runtime. */ import type { Address } from 'viem'; /** Legacy TokenManager (V1) — only for tokens created before 2024-09-05 */ export declare const TOKEN_MANAGER_V1: Address; /** Current TokenManager (V2) — the default path for all new tokens */ export declare const TOKEN_MANAGER_V2: Address; /** * TokenManagerHelper3 — wrapper around V1/V2 that normalizes queries. * Always prefer this for reads. Do not hardcode V1/V2 directly in commands. */ export declare const TOKEN_MANAGER_HELPER3: Address; /** * AgentIdentifier — checks whether an address holds an Agent NFT. * Tokens created by Agent wallets get aiCreator=true automatically. */ export declare const AGENT_IDENTIFIER: Address; /** PancakeSwap V2 Router on BSC mainnet */ export declare const PANCAKE_V2_ROUTER: Address; /** PancakeSwap V2 Factory */ export declare const PANCAKE_V2_FACTORY: Address; /** * FourmemeMmRouter v2 — atomic router with reentrancy guard + approval hygiene. * * v2 changes: nonReentrant modifier, approval reset to 0 after sell, * fee-on-transfer compat in volumePancake. BSCScan verified. * * v1 (0x5A3A9981...) is deprecated but still on-chain. */ export declare const FOURMEME_MM_ROUTER: Address; /** * Get the router address. * * Now that the router is deployed, this is a simple passthrough. * Kept as a function (not direct import) so commands have a single * call site to update if we ever redeploy. */ export declare function requireRouter(): Address; export declare const CHAINS: { readonly bsc: { blockExplorers: { readonly default: { readonly name: "BscScan"; readonly url: "https://bscscan.com"; readonly apiUrl: "https://api.bscscan.com/api"; }; }; blockTime: 750; contracts: { readonly multicall3: { readonly address: "0xca11bde05977b3631167028862be2a173976ca11"; readonly blockCreated: 15921452; }; }; ensTlds?: readonly string[] | undefined; id: 56; name: "BNB Smart Chain"; nativeCurrency: { readonly decimals: 18; readonly name: "BNB"; readonly symbol: "BNB"; }; experimental_preconfirmationTime?: number | undefined | undefined; rpcUrls: { readonly default: { readonly http: readonly ["https://56.rpc.thirdweb.com"]; }; }; sourceId?: number | undefined | undefined; testnet?: boolean | undefined | undefined; custom?: Record | undefined; extendSchema?: Record | undefined; fees?: import("viem").ChainFees | undefined; formatters?: undefined; prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: { phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters"; }) => Promise) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: { phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters"; }) => Promise) | undefined, options: { runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[]; }] | undefined; serializers?: import("viem").ChainSerializers | undefined; verifyHash?: ((client: import("viem").Client, parameters: import("viem").VerifyHashActionParameters) => Promise) | undefined; }; readonly 'bsc-testnet': { blockExplorers: { readonly default: { readonly name: "BscScan"; readonly url: "https://testnet.bscscan.com"; readonly apiUrl: "https://api-testnet.bscscan.com/api"; }; }; blockTime?: number | undefined | undefined; contracts: { readonly multicall3: { readonly address: "0xca11bde05977b3631167028862be2a173976ca11"; readonly blockCreated: 17422483; }; }; ensTlds?: readonly string[] | undefined; id: 97; name: "BNB Smart Chain Testnet"; nativeCurrency: { readonly decimals: 18; readonly name: "BNB"; readonly symbol: "tBNB"; }; experimental_preconfirmationTime?: number | undefined | undefined; rpcUrls: { readonly default: { readonly http: readonly ["https://data-seed-prebsc-1-s1.bnbchain.org:8545"]; }; }; sourceId?: number | undefined | undefined; testnet: true; custom?: Record | undefined; extendSchema?: Record | undefined; fees?: import("viem").ChainFees | undefined; formatters?: undefined; prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: { phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters"; }) => Promise) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: { phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters"; }) => Promise) | undefined, options: { runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[]; }] | undefined; serializers?: import("viem").ChainSerializers | undefined; verifyHash?: ((client: import("viem").Client, parameters: import("viem").VerifyHashActionParameters) => Promise) | undefined; }; }; export type SupportedChainName = keyof typeof CHAINS; /** * Sentinel "address" for native BNB in fourMM's DataStore and routing layers. * * Important: BNB is the native currency of BSC and has no contract address. * We use the zero address as a convention. This matches: * 1. Four.meme's own usage — Helper3.getTokenInfo.quote returns address(0) * when the token is priced in BNB (confirmed via BSC mainnet reads) * 2. The broader EVM convention for "native token placeholder" * * DO NOT confuse this with WBNB (0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c), * which is a REAL ERC20 contract wrapping BNB. Using WBNB here would conflate * native BNB transfers with WBNB token trades. */ export declare const NATIVE_BNB: Address; /** Wrapped BNB on BSC mainnet */ export declare const WBNB: Address; /** BUSD on BSC mainnet */ export declare const BUSD: Address; /** USDT (BEP-20) on BSC mainnet */ export declare const USDT: Address; /** * Return true if an address has the Four.meme native-token signature. * Four.meme deploys all protocol-native tokens at addresses ending in `4444`. * This is a cheap sanity check before making an RPC call. */ export declare function isFourmemeNativeAddress(address: string): boolean; //# sourceMappingURL=const.d.ts.map