import { type Address, type Hex, type PublicClient } from 'viem'; /** * A fee tier to check, identified by its pool fee and tick spacing. (Dynamic-fee tiers have no fixed * pool id and can't be checked this way — filter them out before calling.) */ export interface FeeTierQuery { feeAmount: number; tickSpacing: number; } export interface FeeTierAvailability extends FeeTierQuery { poolId: Hex; /** True only when neither launch-blocking condition is set. */ available: boolean; /** Why the tier is unavailable, if it is. */ reason?: 'pool-reserved' | 'pool-initialized'; /** The initializer holding the reservation, when `reason === 'pool-reserved'`. */ reservedBy?: Address; } /** * Resolves, for each candidate fee tier, whether a launch can use it — by checking BOTH on-chain * conditions the launcher enforces: * - `LBPStrategy.registeredPoolIds(poolId) != 0` — the pool id is reserved by a live (not-yet-migrated) * auction. This is the gap a `getSlot0`-only check misses. * - `StateView.getSlot0(poolId).sqrtPriceX96 != 0` — the v4 pool already exists. * * Pool ids use the standard hookless launch pool (`hook = address(0)`) unless `hook` is given. Throws * {@link LauncherSdkError} `UNSUPPORTED_CHAIN` if the launcher isn't deployed on `chainId`. */ export declare function getFeeTierAvailability(client: PublicClient, p: { chainId: number; currency: Address; token: Address; hook?: Address; feeTiers: FeeTierQuery[]; }): Promise;