UNPKG

wildcard-sdk

Version:

Node.js SDK for interacting with the Wildcard Deployer contract

3,340 lines 114 kB
import { Signer, ContractTransactionReceipt, ethers, BigNumberish, ContractTransactionResponse } from 'ethers';
import * as viem from 'viem';
import { WalletClient, createPublicClient } from 'viem';

type SupportedNetworks = "base-sepolia" | "base-mainnet";

interface EthersSDKConfig {
    rpcUrl: string;
    signer?: Signer;
    privateKey?: string;
    network: SupportedNetworks;
    version: "v2" | "v3";
}

interface ViemSDKConfig {
    rpcUrl: string;
    walletClient?: WalletClient;
    privateKey?: string;
    network: SupportedNetworks;
    version: "v2" | "v3";
}

type Address = `0x${string}`;
interface FeeSplit {
    recipient: Address;
    bps: bigint;
}
interface PriceCurve {
    prices: bigint[];
    numSteps: bigint;
    stepSize: bigint;
}
interface TokenDeploymentConfig {
    creator: Address;
    baseToken: Address;
    name: string;
    symbol: string;
    image: string;
    appIdentifier: string;
    teamSupply: bigint;
    vestingStartTime: bigint;
    vestingDuration: bigint;
    vestingWallet: Address;
    bondingCurveSupply: bigint;
    liquidityPoolSupply: bigint;
    totalSupply: bigint;
    bondingCurveBuyFee: bigint;
    bondingCurveSellFee: bigint;
    bondingCurveFeeSplits: FeeSplit[];
    bondingCurveParams: PriceCurve;
    allowAutoGraduation: boolean;
    allowForcedGraduation: boolean;
    graduationFeeBps: bigint;
    graduationFeeSplits: FeeSplit[];
    poolFees: number;
    poolFeeSplits: FeeSplit[];
    surgeFeeStartingTime: bigint;
    surgeFeeDuration: bigint;
    maxSurgeFeeBps: bigint;
}
interface BuyQuote {
    amountOut?: bigint;
    amountInUsed?: bigint;
}
interface SellQuote {
    amountOut?: bigint;
    amountInUsed?: bigint;
}
type SDKConfig = (EthersSDKConfig & {
    client: "ethers";
}) | (ViemSDKConfig & {
    client: "viem";
});
interface TransactionOptions {
    gasLimit?: bigint;
    gasPrice?: bigint;
    value?: bigint;
}
interface LaunchTokenParams {
    name: string;
    symbol: string;
    image: string;
    creator: Address;
    baseToken: Address;
    totalSupply: string;
    teamSupply: string;
    bondingCurveSupply: string;
    liquidityPoolSupply: string;
    bondingCurveBuyFee: string;
    bondingCurveSellFee: string;
    bondingCurveFeeSplits: FeeSplit[];
    bondingCurveParams: {
        prices: string[];
        numSteps: string;
        stepSize: string;
    };
    allowAutoGraduation: boolean;
    allowForcedGraduation: boolean;
    graduationFeeBps: string;
    graduationFeeSplits: FeeSplit[];
    poolFees: number;
    poolFeeSplits: FeeSplit[];
    surgeFeeDuration: string;
    maxSurgeFeeBps: string;
    vestingStartTime?: string;
    vestingDuration?: string;
    vestingWallet?: Address;
    protocolFeeBps: number;
}
interface BuyTokenParams {
    token: string;
    amountIn: string;
    amountOutMin: string;
    to: string;
    value?: string;
}
interface SellTokenParams {
    token: string;
    amountIn: string;
    amountOutMin: string;
    to: string;
}
type AutoGraduationParams = {
    tickSpacing: number;
    startingTick: number;
    endTick: number;
    targetTick: number;
    poolFee: number;
};
type PoolKey = {
    token0: string;
    token1: string;
    fee: number;
    tickSpacing: number;
};
type TokenState = {
    tokensInBondingCurve: bigint;
    baseTokensInBondingCurve: bigint;
    lastPrice?: bigint;
    totalFees?: bigint;
    isGraduated: boolean;
    poolAddress: Address;
};
type SwapTokenResult = {
    success: boolean;
    transactionHash: string;
    receipt: ContractTransactionReceipt;
};
/**
 * The breakdown of fees due to a specific recipient address.
 */
type FeeBreakdown = {
    /**
     * Total amount of fee in base token (ETH/USDC etc) due to the address,
     * both before and after graduation.
     */
    baseTokenFeeShare: string;
    /**
     * Total amount of fee in the launched token due to the address,
     * both before and after graduation.
     */
    tokenFeeShare: string;
    /**
     * Base token fee accumulated before the token graduated.
     */
    bondingCurveBaseTokenFee: string;
    /**
     * Base token fee accumulated after the token graduated.
     */
    uniswapBaseTokenFee: string;
    /**
     * Launched token fee accumulated after the token graduated.
     */
    uniswapTokenFee: string;
};
/**
 * The response object containing fee information for a token.
 */
type FeeResponse = {
    /**
     * The pay split by address to which the fee is due.
     * Keyed by recipient address.
     */
    tokenFeeShare: Record<string, FeeBreakdown>;
    /**
     * The sum total of fees due across all the fee recipient addresses,
     * accumulated before graduation.
     */
    bondingCurveFeeAccumulated: {
        baseFee: string;
        tokenFee: string;
    };
    /**
     * The sum total of fees due across all the fee recipient addresses,
     * accumulated after graduation (i.e., in the liquidity pool).
     */
    lpFeeAccumulated: {
        baseFee: string;
        tokenFee: string;
    };
};
interface BaseTokenConfig {
    chainId: number;
    address: string;
    name: string;
    symbol: string;
    logoURI?: string;
    decimals: number;
}

declare class DeployerReader {
    protected contract: ethers.Contract;
    protected stateManagerContract: ethers.Contract;
    protected lpLockerContract: ethers.Contract;
    protected provider: ethers.Provider;
    private DEPLOYER_ABI;
    private STATEMANAGER_ABI;
    private LP_LOCKER_ABI;
    constructor(config: EthersSDKConfig);
    getBuyQuote(token: string, amountIn: string): Promise<BuyQuote>;
    getSellQuote(token: string, amountIn: string): Promise<SellQuote>;
    getTokenPrice(token: string): Promise<number>;
    getPredictedTokenAddress(owner: `0x${string}`, salt: `0x${string}`): Promise<{
        addr: `0x${string}`;
        exists: boolean;
    }>;
    getOwner(): Promise<string>;
    isBaseTokenWhitelisted(token: string): Promise<boolean>;
    getTokenState(token: string): Promise<TokenState>;
    getProtocolFeeShare(): Promise<number>;
    getBondingCurveFeeAccumulated(token: string): Promise<string>;
    getComputerUnclamiedFee(token: string): Promise<string>;
    getAutoGraduationParams(token: string): Promise<AutoGraduationParams>;
    getBaseToken(token: string): Promise<string>;
    getPoolKey(token: string): Promise<PoolKey>;
    getSurgeFee(config: TokenDeploymentConfig): Promise<string>;
    getTokenDeploymentConfig(token: string): Promise<TokenDeploymentConfig>;
    getTokenSupply(token: string): Promise<string>;
    isGraduated(token: string): Promise<boolean>;
    getProtocolFeeRecipient(): Promise<string>;
    getPoolFeeSplits(token: string): Promise<FeeSplit[]>;
    getFees(token: string): Promise<FeeResponse>;
    getPositionManager(): Promise<string>;
    getStateView(): Promise<string>;
    getTokenIdRecipient(): Promise<string>;
    getTokenDeploymentConfigsMapping(token: string): Promise<TokenDeploymentConfig>;
    getTokenStatesMapping(token: string): Promise<TokenState>;
    static formatEther(wei: BigNumberish): string;
    static parseEther(ether: string): bigint;
}

declare class DeployerWriter {
    private contract;
    private provider;
    private signer?;
    private DEPLOYER_ABI;
    private STATEMANAGER_ABI;
    constructor(config: EthersSDKConfig);
    /**
     * Buy a token by sending base tokens to the bonding curve
     * @param params Parameters including token address, input amount, minimum output amount, and recipient
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    buyToken(params: BuyTokenParams, options?: TransactionOptions): Promise<SwapTokenResult>;
    /**
     * Sell tokens from the bonding curve
     * @param params Parameters including token address, input amount, minimum output amount, and recipient
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    sellToken(params: SellTokenParams, options?: TransactionOptions): Promise<SwapTokenResult>;
    /**
     * Approve the deployer contract to spend a specific token on the user's behalf
     * @param token ERC20 token address
     * @param amount Amount to approve
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    approveToken(token: string, amount: string, options?: TransactionOptions): Promise<ContractTransactionResponse>;
    /**
     * Approve the deployer contract to spend tokens and then sell them in a single flow
     * @param params Parameters including token address, input amount, minimum output amount, and recipient
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Sell transaction response
     */
    approveAndSell(params: SellTokenParams, options?: TransactionOptions): Promise<SwapTokenResult>;
    /**
     * Claim accumulated bonding curve fees for a specific token
     * @param token Token address
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    claimFee(token: string, options?: TransactionOptions): Promise<ContractTransactionResponse>;
    /**
     * Launch a new token using the bonding curve
     * @param params Token launch parameters including supplies, fees, and configuration
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     * Protocol fee in basis points (bps).
     * Required. This fee will automatically be allocated to the protocol.
     * Example: 500 = 5%
     */
    launchToken(params: LaunchTokenParams, salt?: string, options?: TransactionOptions): Promise<{
        tx: ContractTransactionResponse;
        createdTokenAddress: string;
    }>;
    /**
     * Graduate a token from the bonding curve (can allow forced graduation)
     * @param token Token address
     * @param allowPreGraduation Allow forced graduation if true
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    graduateToken(token: string, allowPreGraduation?: boolean, options?: TransactionOptions): Promise<ContractTransactionResponse>;
    /**
     * Set the whitelist status of a base token
     * @param token Token address
     * @param whitelisted Boolean flag to whitelist (true) or remove from whitelist (false)
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    setBaseTokenWhitelist(token: string, whitelisted: boolean, options?: TransactionOptions): Promise<ContractTransactionResponse>;
    /**
     * Relinquish control of the state manager to the protocol
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    relinquishStateManager(options?: TransactionOptions): Promise<ContractTransactionResponse>;
    /**
     * Withdraw residual (dust) base tokens from the contract
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     */
    withdrawDust(options?: TransactionOptions): Promise<ContractTransactionResponse>;
    waitForTransaction(txHash: string): Promise<ethers.TransactionReceipt | null>;
}

declare class EthersDeployer {
    read: DeployerReader;
    write: DeployerWriter;
    constructor(config: EthersSDKConfig);
}

declare class ViemDeployerReader {
    protected publicClient: ReturnType<typeof createPublicClient>;
    protected deployerAddress: Address;
    protected stateManagerAddress: Address;
    protected lpLockerAddress: Address;
    private DEPLOYER_ABI;
    private STATEMANAGER_ABI;
    private LP_LOCKER_ABI;
    constructor(config: ViemSDKConfig);
    private callDeployer;
    private callStateManager;
    private callLpLocker;
    getBuyQuote(token: string, amountIn: string): Promise<BuyQuote>;
    getSellQuote(token: string, amountIn: string): Promise<SellQuote>;
    getTokenPrice(token: Address): Promise<number>;
    getPredictedTokenAddress(owner: `0x${string}`, salt: `0x${string}`): Promise<{
        addr: string;
        exists: boolean;
    }>;
    getOwner(): Promise<string>;
    isBaseTokenWhitelisted(token: Address): Promise<boolean>;
    getTokenState(token: Address): Promise<TokenState>;
    getProtocolFeeShare(): Promise<number>;
    getBondingCurveFeeAccumulated(token: Address): Promise<string>;
    getComputeUnclamiedFee(token: Address): Promise<string>;
    getAutoGraduationParams(token: Address): Promise<AutoGraduationParams>;
    getBaseToken(token: Address): Promise<string>;
    getPoolKey(token: Address): Promise<PoolKey>;
    getSurgeFee(config: TokenDeploymentConfig): Promise<string>;
    getTokenDeploymentConfig(token: Address): Promise<TokenDeploymentConfig>;
    getTokenSupply(token: Address): Promise<string>;
    isGraduated(token: Address): Promise<boolean>;
    getProtocolFeeRecipient(): Promise<string>;
    getPoolFeeSplits(token: Address): Promise<FeeSplit[]>;
    getFees(token: Address): Promise<FeeResponse>;
    getPositionManager(): Promise<string>;
    getStateView(): Promise<string>;
    getTokenIdRecipient(): Promise<string>;
    getTokenDeploymentConfigsMapping(token: Address): Promise<TokenDeploymentConfig>;
    getTokenStatesMapping(token: Address): Promise<TokenState>;
}

declare class ViemDeployerWriter {
    protected config: ViemSDKConfig;
    protected publicClient: ReturnType<typeof createPublicClient>;
    protected walletClient: WalletClient;
    protected deployerAddress: string;
    protected stateManagerAddress: string;
    private DEPLOYER_ABI;
    private STATEMANAGER_ABI;
    constructor(config: ViemSDKConfig);
    private buildTxOptions;
    buyToken(params: BuyTokenParams, options?: TransactionOptions): Promise<{
        hash: `0x${string}`;
        success: "success" | "reverted";
        receipt: viem.TransactionReceipt;
    }>;
    sellToken(params: SellTokenParams, options?: TransactionOptions): Promise<{
        hash: `0x${string}`;
        success: boolean;
        receipt: viem.TransactionReceipt;
    }>;
    approveToken(token: string, amount: string, options?: TransactionOptions): Promise<`0x${string}`>;
    approveAndSell(params: SellTokenParams, options?: TransactionOptions): Promise<{
        hash: `0x${string}`;
        success: boolean;
        receipt: viem.TransactionReceipt;
    }>;
    claimFee(token: string, options?: TransactionOptions): Promise<`0x${string}`>;
    /**
     * Launch a new token using the bonding curve
     * @param params Token launch parameters including supplies, fees, and configuration
     * @param options Optional transaction parameters like gas limit and gas price
     * @returns Transaction response
     * Protocol fee in basis points (bps).
     * Required. This fee will automatically be allocated to the protocol.
     * Example: 500 = 5%
     */
    launchToken(params: LaunchTokenParams, salt?: string, options?: TransactionOptions): Promise<{
        tx: `0x${string}`;
        createdTokenAddress: string;
    }>;
    graduateToken(token: string, allowPreGraduation?: boolean, options?: TransactionOptions): Promise<{
        success: boolean;
        receipt: viem.TransactionReceipt;
    }>;
    setBaseTokenWhitelist(token: string, whitelisted: boolean, options?: TransactionOptions): Promise<`0x${string}`>;
    relinquishStateManager(options?: TransactionOptions): Promise<`0x${string}`>;
    withdrawDust(options?: TransactionOptions): Promise<`0x${string}`>;
    waitForTransaction(txHash: `0x${string}`): Promise<viem.TransactionReceipt>;
}

declare class ViemDeployer {
    read: ViemDeployerReader;
    write: ViemDeployerWriter | null;
    constructor(config: ViemSDKConfig);
}

declare class DeployerSDK {
    static getDeployer<T extends SDKConfig>(config: T): Promise<T['client'] extends 'ethers' ? EthersDeployer : ViemDeployer>;
}

declare const MINTED_TOKEN_DECIMALS: bigint;
declare const SCALE_EXPONENT: bigint;
declare const SCALE_FACTOR: bigint;
declare const SCALE_FACTOR_SQRT: bigint;
declare const DEFAULT_TICK_SPACING: bigint;
declare enum CurveType {
    FLAT = "flat",
    LINEAR = "linear",
    QUADRATIC = "quadratic",
    CUBIC = "cubic",
    SQUARE_ROOT = "square_root"
}
declare const initlaizeCurve: (curveType: CurveType, startPrice: bigint, endPrice: bigint, numSteps: bigint, approxBondingCurveSupply: bigint) => PriceCurve;
declare const getBaseTokenDetails: (baseTokenChainId: number, baseTokenAddress: string) => BaseTokenConfig;
/**
 * Formats a base token string precise amount to a curve price entry.
 * @param baseTokenAmountFormattedString - The base token string amount
 * @param baseTokenChainId - The chain id of the base token
 * @param baseTokenAddress - The address of the base token
 * @returns The formatted curve price entry
 */
declare const formatBaseTokenAmountForCurve: (baseTokenAmountFormattedString: string, baseTokenChainId: number, baseTokenAddress: string) => bigint;
/**
 * Formats a curve price entry to a base token amount. In string for precision
 * @param curvePrice - The price of the curve
 * @param baseTokenChainId - The chain id of the base token
 * @param baseTokenAddress - The address of the base token
 * @returns The formatted base token string amount
 */
declare const formatCurveToBaseTokenStringAmount: (curvePrice: bigint, baseTokenChainId: number, baseTokenAddress: string) => string;
declare function flatCurve(startPrice: bigint, totalSupply: bigint): PriceCurve;
declare function linearCurve(startPrice: bigint, endPrice: bigint, numSteps: bigint, bondingCurveSupply: bigint): PriceCurve;
declare function quadraticCurve(startPrice: bigint, endPrice: bigint, numSteps: bigint, bondingCurveSupply: bigint): PriceCurve;
declare function acceleratingPowerCurve(startPrice: bigint, endPrice: bigint, numSteps: bigint, bondingCurveSupply: bigint): PriceCurve;
declare function sqrtCurve(startPrice: bigint, endPrice: bigint, numSteps: bigint, bondingCurveSupply: bigint): PriceCurve;
declare function customCurve(prices: bigint[], bondingCurveSupply: bigint): PriceCurve;
declare function analyzeCurve(curve: PriceCurve): AnalyzeCurveResponse;
declare function analyzeCurveUntil(curve: PriceCurve, tokensConsumed: bigint): bigint;
declare class InvalidPriceCurveInput extends Error {
    constructor();
}
interface AnalyzeCurveResponse {
    bondingCurveSupply: bigint;
    baseTokenAccumulated: bigint;
    minLiquidityPoolSupply: bigint;
}
declare const validateTokenGraduatable: (priceCurve: PriceCurve, graduationFeeBps: bigint, liquidityPoolSupply: bigint) => void;
declare const offsetPriceToSqrtPriceX96: (price: bigint) => bigint;

type curvemath_AnalyzeCurveResponse = AnalyzeCurveResponse;
type curvemath_CurveType = CurveType;
declare const curvemath_CurveType: typeof CurveType;
declare const curvemath_DEFAULT_TICK_SPACING: typeof DEFAULT_TICK_SPACING;
type curvemath_InvalidPriceCurveInput = InvalidPriceCurveInput;
declare const curvemath_InvalidPriceCurveInput: typeof InvalidPriceCurveInput;
declare const curvemath_MINTED_TOKEN_DECIMALS: typeof MINTED_TOKEN_DECIMALS;
declare const curvemath_SCALE_EXPONENT: typeof SCALE_EXPONENT;
declare const curvemath_SCALE_FACTOR: typeof SCALE_FACTOR;
declare const curvemath_SCALE_FACTOR_SQRT: typeof SCALE_FACTOR_SQRT;
declare const curvemath_acceleratingPowerCurve: typeof acceleratingPowerCurve;
declare const curvemath_analyzeCurve: typeof analyzeCurve;
declare const curvemath_analyzeCurveUntil: typeof analyzeCurveUntil;
declare const curvemath_customCurve: typeof customCurve;
declare const curvemath_flatCurve: typeof flatCurve;
declare const curvemath_formatBaseTokenAmountForCurve: typeof formatBaseTokenAmountForCurve;
declare const curvemath_formatCurveToBaseTokenStringAmount: typeof formatCurveToBaseTokenStringAmount;
declare const curvemath_getBaseTokenDetails: typeof getBaseTokenDetails;
declare const curvemath_initlaizeCurve: typeof initlaizeCurve;
declare const curvemath_linearCurve: typeof linearCurve;
declare const curvemath_offsetPriceToSqrtPriceX96: typeof offsetPriceToSqrtPriceX96;
declare const curvemath_quadraticCurve: typeof quadraticCurve;
declare const curvemath_sqrtCurve: typeof sqrtCurve;
declare const curvemath_validateTokenGraduatable: typeof validateTokenGraduatable;
declare namespace curvemath {
  export { type curvemath_AnalyzeCurveResponse as AnalyzeCurveResponse, curvemath_CurveType as CurveType, curvemath_DEFAULT_TICK_SPACING as DEFAULT_TICK_SPACING, curvemath_InvalidPriceCurveInput as InvalidPriceCurveInput, curvemath_MINTED_TOKEN_DECIMALS as MINTED_TOKEN_DECIMALS, curvemath_SCALE_EXPONENT as SCALE_EXPONENT, curvemath_SCALE_FACTOR as SCALE_FACTOR, curvemath_SCALE_FACTOR_SQRT as SCALE_FACTOR_SQRT, curvemath_acceleratingPowerCurve as acceleratingPowerCurve, curvemath_analyzeCurve as analyzeCurve, curvemath_analyzeCurveUntil as analyzeCurveUntil, curvemath_customCurve as customCurve, curvemath_flatCurve as flatCurve, curvemath_formatBaseTokenAmountForCurve as formatBaseTokenAmountForCurve, curvemath_formatCurveToBaseTokenStringAmount as formatCurveToBaseTokenStringAmount, curvemath_getBaseTokenDetails as getBaseTokenDetails, curvemath_initlaizeCurve as initlaizeCurve, curvemath_linearCurve as linearCurve, curvemath_offsetPriceToSqrtPriceX96 as offsetPriceToSqrtPriceX96, curvemath_quadraticCurve as quadraticCurve, curvemath_sqrtCurve as sqrtCurve, curvemath_validateTokenGraduatable as validateTokenGraduatable };
}

declare const DEPLOYER_ABI: readonly [{
    readonly type: "constructor";
    readonly inputs: readonly [{
        readonly name: "_stateView";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_lplocker";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_universalRouter";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_permit2";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_poolManager";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_quoter";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_owner";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "receive";
    readonly stateMutability: "payable";
}, {
    readonly type: "function";
    readonly name: "MIN_VESTING_START_TIME";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint64";
        readonly internalType: "uint64";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "_validateTokenDeploymentConfig";
    readonly inputs: readonly [{
        readonly name: "tokenDeploymentConfig";
        readonly type: "tuple";
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly name: "salt";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "acceptOwnership";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "appIdentifiers";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "string";
        readonly internalType: "string";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "buyQuote";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "buyToken";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "amountOutMin";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "payable";
}, {
    readonly type: "function";
    readonly name: "claimFee";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "emergencyEjectToken";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "finalizeEmergencyRescue";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "uniswapTokenId";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "poolKey";
        readonly type: "tuple";
        readonly internalType: "struct PoolKey";
        readonly components: readonly [{
            readonly name: "currency0";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "currency1";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "fee";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "tickSpacing";
            readonly type: "int24";
            readonly internalType: "int24";
        }, {
            readonly name: "hooks";
            readonly type: "address";
            readonly internalType: "contract IHooks";
        }];
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "getTokenPrice";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "graduateToken";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "allowPreGraduation";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "isBaseTokenWhitelisted";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "launchToken";
    readonly inputs: readonly [{
        readonly name: "tokenDeploymentConfig";
        readonly type: "tuple";
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly name: "salt";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "launchV4Pool";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "tickSpacing";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "startingTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "endingTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "targetTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "allowPreGraduation";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "lplocker";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract ILpLockerWithOwnable";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "owner";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "pendingOwner";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "permit2";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IPermit2";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "poolManager";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IPoolManager";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "predictTokenAddress";
    readonly inputs: readonly [{
        readonly name: "owner";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "salt";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }];
    readonly outputs: readonly [{
        readonly name: "addr";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "exists";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "quoter";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IV4Quoter";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "relinquishStateManager";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "renounceOwnership";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "sellQuote";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "sellToken";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "amountOutMin";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setAppIdentifier";
    readonly inputs: readonly [{
        readonly name: "creator";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "appIdentifier";
        readonly type: "string";
        readonly internalType: "string";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setBaseTokenWhitelist";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "whitelisted";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setProtocolFeeRecipient";
    readonly inputs: readonly [{
        readonly name: "_protocolFeeRecipient";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "stateManager";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract StateManager";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "transferOwnership";
    readonly inputs: readonly [{
        readonly name: "newOwner";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "universalRouter";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IUniversalRouter";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "updateTokenFeeSplits";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "feeUpdate";
        readonly type: "tuple";
        readonly internalType: "struct Deployer.TokenFeeUpdate";
        readonly components: readonly [{
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }];
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "whitelistedBaseTokens";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "withdrawFunds";
    readonly inputs: readonly [{
        readonly name: "destination";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "event";
    readonly name: "BaseTokenWhitelisted";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "whitelisted";
        readonly type: "bool";
        readonly indexed: false;
        readonly internalType: "bool";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "OwnershipTransferStarted";
    readonly inputs: readonly [{
        readonly name: "previousOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "newOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "OwnershipTransferred";
    readonly inputs: readonly [{
        readonly name: "previousOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "newOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "FeeClaimed";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "recipient";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "feeToken";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "amount";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "graduated";
        readonly type: "bool";
        readonly indexed: false;
        readonly internalType: "bool";
    }];
    readonly anonymous: false;
}, {
    readonly type: "error";
    readonly name: "BothTokensLaunched";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "ETHBalanceTooLowForSwap";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "ETHTransferFailed";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "IncorrectETHAmount";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InsufficientOutputAmount";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidBaseToken";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidCaller";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidCurveParameters";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidTokenDetails";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "OwnableInvalidOwner";
    readonly inputs: readonly [{
        readonly name: "owner";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "OwnableUnauthorizedAccount";
    readonly inputs: readonly [{
        readonly name: "account";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "QuoteAmount";
    readonly inputs: readonly [{
        readonly name: "amountOut";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "effectiveAmountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
}, {
    readonly type: "error";
    readonly name: "QuoteNotImplemented";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "Reentrancy";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenAlreadyLaunched";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenNotLaunched";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenStateNotSet";
    readonly inputs: readonly [];
}];

declare const STATEMANAGER_ABI: readonly [{
    readonly type: "constructor";
    readonly inputs: readonly [{
        readonly name: "initialOwner";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "permit2Address";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_positionManager";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_stateView";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_protocolFeeRecipient";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_tokenIdRecipient";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "PROTOCOL_FEE_SHARE";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "acceptOwnership";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "bondingCurveFeeAccumulated";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "buyToken";
    readonly inputs: readonly [{
        readonly name: "buyer";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "amountOutMin";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "payable";
}, {
    readonly type: "function";
    readonly name: "claimFee";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "emergencyEject";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "finalizeEmergencyRescue";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "uniswapTokenId";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "poolKey";
        readonly type: "tuple";
        readonly internalType: "struct PoolKey";
        readonly components: readonly [{
            readonly name: "currency0";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "currency1";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "fee";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "tickSpacing";
            readonly type: "int24";
            readonly internalType: "int24";
        }, {
            readonly name: "hooks";
            readonly type: "address";
            readonly internalType: "contract IHooks";
        }];
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "getAutoGraduationParams";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "tickSpacing";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "startingTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "endTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "targetTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "poolFee";
        readonly type: "uint24";
        readonly internalType: "uint24";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getBaseToken";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getBuyQuote";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getPoolKey";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple";
        readonly internalType: "struct PoolKey";
        readonly components: readonly [{
            readonly name: "currency0";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "currency1";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "fee";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "tickSpacing";
            readonly type: "int24";
            readonly internalType: "int24";
        }, {
            readonly name: "hooks";
            readonly type: "address";
            readonly internalType: "contract IHooks";
        }];
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getSellQuote";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getSurgeFee";
    readonly inputs: readonly [{
        readonly name: "config";
        readonly type: "tuple";
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly outputs: readonly [{
        readonly name: "fee";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getTokenDeploymentConfig";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple";
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getTokenPrice";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getTokenState";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple";
        readonly internalType: "struct TokenState";
        readonly components: readonly [{
            readonly name: "isGraduated";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "tokensInBondingCurve";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "baseTokensInBondingCurve";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "poolAddress";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "uniswapTokenId";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getTokenSupply";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "graduateToken";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "allowPreGraduation";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "isGraduated";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "launchV4Pool";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "tickSpacing";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "startingTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "endingTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "targetTick";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "allowPreGraduation";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "owner";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "pendingOwner";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "permit2";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IPermit2";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "poolFeeSplits";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple[]";
        readonly internalType: "struct FeeSplit[]";
        readonly components: readonly [{
            readonly name: "recipient";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "poolKeys";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "currency0";
        readonly type: "address";
        readonly internalType: "Currency";
    }, {
        readonly name: "currency1";
        readonly type: "address";
        readonly internalType: "Currency";
    }, {
        readonly name: "fee";
        readonly type: "uint24";
        readonly internalType: "uint24";
    }, {
        readonly name: "tickSpacing";
        readonly type: "int24";
        readonly internalType: "int24";
    }, {
        readonly name: "hooks";
        readonly type: "address";
        readonly internalType: "contract IHooks";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "positionManager";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IPositionManager";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "protocolFeeRecipient";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "renounceOwnership";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "sellToken";
    readonly inputs: readonly [{
        readonly name: "buyer";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "amountOutMin";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setProtocolFeeRecipient";
    readonly inputs: readonly [{
        readonly name: "_protocolFeeRecipient";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setTokenDeploymentConfig";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "config";
        readonly type: "tuple";
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setTokenIdRecipient";
    readonly inputs: readonly [{
        readonly name: "_tokenIdRecipient";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "stateView";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IStateView";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "tokenDeploymentConfigs";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "creator";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "baseToken";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "name";
        readonly type: "string";
        readonly internalType: "string";
    }, {
        readonly name: "symbol";
        readonly type: "string";
        readonly internalType: "string";
    }, {
        readonly name: "image";
        readonly type: "string";
        readonly internalType: "string";
    }, {
        readonly name: "appIdentifier";
        readonly type: "string";
        readonly internalType: "string";
    }, {
        readonly name: "teamSupply";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "vestingStartTime";
        readonly type: "uint64";
        readonly internalType: "uint64";
    }, {
        readonly name: "vestingDuration";
        readonly type: "uint64";
        readonly internalType: "uint64";
    }, {
        readonly name: "vestingWallet";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "bondingCurveSupply";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "liquidityPoolSupply";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "totalSupply";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "bondingCurveBuyFee";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "bondingCurveSellFee";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "bondingCurveParams";
        readonly type: "tuple";
        readonly internalType: "struct PriceCurve";
        readonly components: readonly [{
            readonly name: "prices";
            readonly type: "uint256[]";
            readonly internalType: "uint256[]";
        }, {
            readonly name: "numSteps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "stepSize";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly name: "allowForcedGraduation";
        readonly type: "bool";
        readonly internalType: "bool";
    }, {
        readonly name: "allowAutoGraduation";
        readonly type: "bool";
        readonly internalType: "bool";
    }, {
        readonly name: "graduationFeeBps";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "poolFees";
        readonly type: "uint24";
        readonly internalType: "uint24";
    }, {
        readonly name: "surgeFeeStartingTime";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "surgeFeeDuration";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "maxSurgeFeeBps";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "tokenIdRecipient";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "tokenStates";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "isGraduated";
        readonly type: "bool";
        readonly internalType: "bool";
    }, {
        readonly name: "tokensInBondingCurve";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "baseTokensInBondingCurve";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "poolAddress";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "uniswapTokenId";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "transferOwnership";
    readonly inputs: readonly [{
        readonly name: "newOwner";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "updateTokenDeploymentConfig";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "config";
        readonly type: "tuple";
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "event";
    readonly name: "BondingCurveSwap";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "isBuy";
        readonly type: "bool";
        readonly indexed: true;
        readonly internalType: "bool";
    }, {
        readonly name: "to";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "from";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "amountIn";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "amountOut";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "feeAmount";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "OwnershipTransferStarted";
    readonly inputs: readonly [{
        readonly name: "previousOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "newOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "OwnershipTransferred";
    readonly inputs: readonly [{
        readonly name: "previousOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "newOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "PoolLaunched";
    readonly inputs: readonly [{
        readonly name: "token0";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "token1";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "uniswapTokenId";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "TokenEmergencyEjected";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "liquidityTokens";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "baseTokens";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "TokenEmergencyRescued";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "uniswapTokenId";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "poolKey";
        readonly type: "tuple";
        readonly indexed: false;
        readonly internalType: "struct PoolKey";
        readonly components: readonly [{
            readonly name: "currency0";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "currency1";
            readonly type: "address";
            readonly internalType: "Currency";
        }, {
            readonly name: "fee";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "tickSpacing";
            readonly type: "int24";
            readonly internalType: "int24";
        }, {
            readonly name: "hooks";
            readonly type: "address";
            readonly internalType: "contract IHooks";
        }];
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "TokenGraduated";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "mintedBondingCurveTokens";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "collectedBaseTokens";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "TokenLaunched";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "config";
        readonly type: "tuple";
        readonly indexed: false;
        readonly internalType: "struct TokenDeploymentConfig";
        readonly components: readonly [{
            readonly name: "creator";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "baseToken";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "name";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "symbol";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "image";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "appIdentifier";
            readonly type: "string";
            readonly internalType: "string";
        }, {
            readonly name: "teamSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "vestingStartTime";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingDuration";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "vestingWallet";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "bondingCurveSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "liquidityPoolSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "totalSupply";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveBuyFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveSellFee";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "bondingCurveFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "bondingCurveParams";
            readonly type: "tuple";
            readonly internalType: "struct PriceCurve";
            readonly components: readonly [{
                readonly name: "prices";
                readonly type: "uint256[]";
                readonly internalType: "uint256[]";
            }, {
                readonly name: "numSteps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }, {
                readonly name: "stepSize";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "allowForcedGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "allowAutoGraduation";
            readonly type: "bool";
            readonly internalType: "bool";
        }, {
            readonly name: "graduationFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "graduationFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "poolFees";
            readonly type: "uint24";
            readonly internalType: "uint24";
        }, {
            readonly name: "poolFeeSplits";
            readonly type: "tuple[]";
            readonly internalType: "struct FeeSplit[]";
            readonly components: readonly [{
                readonly name: "recipient";
                readonly type: "address";
                readonly internalType: "address";
            }, {
                readonly name: "bps";
                readonly type: "uint256";
                readonly internalType: "uint256";
            }];
        }, {
            readonly name: "surgeFeeStartingTime";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "surgeFeeDuration";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "maxSurgeFeeBps";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "TokenReadyForGraduation";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "error";
    readonly name: "InsufficientETHSent";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InsufficientTokenBalanceInBondingCurve";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidBondingCurveSupply";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidOperation";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidTokenBalance";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidTokenSupply";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "NoFeeToClaim";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "OwnableInvalidOwner";
    readonly inputs: readonly [{
        readonly name: "owner";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "OwnableUnauthorizedAccount";
    readonly inputs: readonly [{
        readonly name: "account";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "PriceCurveOutOfBounds";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "SlippageExceeded";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenAlreadyDeployed";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenAlreadyGraduated";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenInGraduationProcess";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "TokenNotReadyForGraduation";
    readonly inputs: readonly [];
}];

export { type Address, type AutoGraduationParams, type BaseTokenConfig, curvemath as BondingCurve, type BuyQuote, type BuyTokenParams, DEPLOYER_ABI, DeployerSDK, EthersDeployer, type FeeBreakdown, type FeeResponse, type FeeSplit, type LaunchTokenParams, type PoolKey, type PriceCurve, type SDKConfig, STATEMANAGER_ABI, type SellQuote, type SellTokenParams, type SwapTokenResult, type TokenDeploymentConfig, type TokenState, type TransactionOptions, ViemDeployer };