import { type Context } from 'hono'; import * as z from 'zod/mini'; import type * as App from '../../../App.js'; import * as Response from '../../../internal/Response.js'; import * as Schema from '../../../internal/Schema.js'; /** Zod schemas owned by the fee AMM handlers. */ export declare namespace schema { /** * A token referenced by a fee pool: its contract address plus best-effort * metadata. Fee AMM mints use this shape; pools require core metadata through * `getFeeAmmPools.Token`. */ const PoolToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniOptional>; decimals: z.ZodMiniOptional>; logoUri: z.ZodMiniOptional>; name: z.ZodMiniOptional>; symbol: z.ZodMiniOptional>; verified: z.ZodMiniOptional>; }, z.core.$strip>; /** Schemas for the getFeeAmmPools operation. */ namespace getFeeAmmPools { /** Optional curated token fields that callers opt into via `include`. */ const Include: z.ZodMiniEnum<{ "token.logoUri": "token.logoUri"; "token.verified": "token.verified"; }>; /** * Parses comma-separated curated token fields. Core token metadata is * always present; callers opt into logo and verification fields. */ const includeQuery: z.ZodMiniPipe, z.ZodMiniTransform>, z.ZodMiniArray>>; /** Query parameters for the fee pool list request. */ const Query: z.ZodMiniObject<{ chainId: z.ZodMiniOptional, z.ZodMiniTransform<4217 | 42431, "mainnet" | "testnet">>, z.ZodMiniPipe, z.ZodMiniTransform>]>, z.ZodMiniNumber>>; cursor: z.ZodMiniOptional>; include: z.ZodMiniPipe, z.ZodMiniTransform>, z.ZodMiniArray>>; limit: z.ZodMiniDefault, z.ZodMiniTransform>>; page: z.ZodMiniOptional>; }, z.core.$strict>; /** A fee-pool token with required RPC metadata and optional curated fields. */ const Token: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; logoUri: z.ZodMiniOptional>>; name: z.ZodMiniString; symbol: z.ZodMiniString; verified: z.ZodMiniOptional>; }, z.core.$strip>; /** A fee AMM pool, aggregated from its `Mint` events. */ const Pool: z.ZodMiniObject<{ createdAt: z.ZodMiniISODateTime; id: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; lastMintAt: z.ZodMiniISODateTime; mintCount: z.ZodMiniNumber; poolId: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; userAmount: z.ZodMiniOptional; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; formatted: z.ZodMiniString; }, z.core.$strip>>; userToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; logoUri: z.ZodMiniOptional>>; name: z.ZodMiniString; symbol: z.ZodMiniString; verified: z.ZodMiniOptional>; }, z.core.$strip>; validatorAmount: z.ZodMiniOptional; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; formatted: z.ZodMiniString; }, z.core.$strip>>; validatorToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; logoUri: z.ZodMiniOptional>>; name: z.ZodMiniString; symbol: z.ZodMiniString; verified: z.ZodMiniOptional>; }, z.core.$strip>; }, z.core.$strip>; /** Page of fee pools, ordered by mint count (most active first). */ const Response: z.ZodMiniObject<{ data: z.ZodMiniArray, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; lastMintAt: z.ZodMiniISODateTime; mintCount: z.ZodMiniNumber; poolId: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; userAmount: z.ZodMiniOptional; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; formatted: z.ZodMiniString; }, z.core.$strip>>; userToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; logoUri: z.ZodMiniOptional>>; name: z.ZodMiniString; symbol: z.ZodMiniString; verified: z.ZodMiniOptional>; }, z.core.$strip>; validatorAmount: z.ZodMiniOptional; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; formatted: z.ZodMiniString; }, z.core.$strip>>; validatorToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniString; decimals: z.ZodMiniNumber; logoUri: z.ZodMiniOptional>>; name: z.ZodMiniString; symbol: z.ZodMiniString; verified: z.ZodMiniOptional>; }, z.core.$strip>; }, z.core.$strip>>; nextCursor: z.ZodMiniNullable>; }, z.core.$strip>; } /** Schemas for the getFeeAmmMints operation. */ namespace getFeeAmmMints { /** Query parameters for the pool mint list request. */ const Query: z.ZodMiniObject<{ chainId: z.ZodMiniOptional, z.ZodMiniTransform<4217 | 42431, "mainnet" | "testnet">>, z.ZodMiniPipe, z.ZodMiniTransform>]>, z.ZodMiniNumber>>; cursor: z.ZodMiniOptional>; include: z.ZodMiniPipe, z.ZodMiniTransform>, z.ZodMiniArray>>; limit: z.ZodMiniDefault, z.ZodMiniTransform>>; order: z.ZodMiniDefault>; page: z.ZodMiniOptional>; userToken: z.ZodMiniOptional, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>; validatorToken: z.ZodMiniOptional, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>; }, z.core.$strict>; /** A single liquidity mint into a fee pool. */ const Mint: z.ZodMiniObject<{ amountUserToken: z.ZodMiniOptional>; amountValidatorToken: z.ZodMiniString; blockNumber: z.ZodMiniNumber; id: z.ZodMiniString; liquidity: z.ZodMiniString; logIndex: z.ZodMiniNumber; minter: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; recipient: z.ZodMiniOptional, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>; timestamp: z.ZodMiniISODateTime; transactionHash: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; userToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniOptional>; decimals: z.ZodMiniOptional>; logoUri: z.ZodMiniOptional>; name: z.ZodMiniOptional>; symbol: z.ZodMiniOptional>; verified: z.ZodMiniOptional>; }, z.core.$strip>; validatorToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniOptional>; decimals: z.ZodMiniOptional>; logoUri: z.ZodMiniOptional>; name: z.ZodMiniOptional>; symbol: z.ZodMiniOptional>; verified: z.ZodMiniOptional>; }, z.core.$strip>; }, z.core.$strip>; /** Page of fee pool mints, ordered by block then log index. */ const Response: z.ZodMiniObject<{ data: z.ZodMiniArray>; amountValidatorToken: z.ZodMiniString; blockNumber: z.ZodMiniNumber; id: z.ZodMiniString; liquidity: z.ZodMiniString; logIndex: z.ZodMiniNumber; minter: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; recipient: z.ZodMiniOptional, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>; timestamp: z.ZodMiniISODateTime; transactionHash: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; userToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniOptional>; decimals: z.ZodMiniOptional>; logoUri: z.ZodMiniOptional>; name: z.ZodMiniOptional>; symbol: z.ZodMiniOptional>; verified: z.ZodMiniOptional>; }, z.core.$strip>; validatorToken: z.ZodMiniObject<{ address: z.ZodMiniPipe, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>; currency: z.ZodMiniOptional>; decimals: z.ZodMiniOptional>; logoUri: z.ZodMiniOptional>; name: z.ZodMiniOptional>; symbol: z.ZodMiniOptional>; verified: z.ZodMiniOptional>; }, z.core.$strip>; }, z.core.$strip>>; meta: z.ZodMiniOptional; totalCount: z.ZodMiniNumber; }, z.core.$strip>>; nextCursor: z.ZodMiniNullable>; }, z.core.$strip>; } } /** Creates fee AMM handlers. */ export declare function feeAmm(): import("hono/hono-base").HonoBase; /** * The set of token addresses usable to pay transaction fees on a chain: the * curated verified tokens that have at least one Fee AMM pool (i.e. appear as a * `userToken` / topic2 in the FeeManager's `Mint` logs), plus the protocol * default fee token (`pathUSD`), which pays fees without needing a pool. * Addresses are lowercased to match the indexer's stored casing. * * The set is intentionally gated to the verified list rather than every pooled * token: anyone can mint a single-mint spam pool, so the raw set of pool * `userToken`s is unbounded (tens of thousands on busy chains) and those * liquidity-less pools can't actually settle fees. Restricting to verified * tokens keeps the set small (a handful of USD stablecoins), bounds the scan * (the `topic2 IN (…)` candidate list is the verified list), and matches the * tokens fees are realistically paid in. * * Memoized per chain and verified-snapshot version (the only inputs), so * callers — e.g. the address balances endpoint — can flag which holdings are * fee-usable without a second `/fee-amm/pools` query. */ export declare function feeTokenSet(c: Context, chainId: z.output): Promise>; //# sourceMappingURL=fee-amm.d.ts.map