import { fetchEncodedAccount, fetchEncodedAccounts, Account, Address, Codec, Decoder, EncodedAccount, Encoder, FetchAccountConfig, FetchAccountsConfig, MaybeAccount, MaybeEncodedAccount, ReadonlyUint8Array } from '@solana/kit';
import { AccountDiscriminator, GraduationMethodData, GraduationMethodDataArgs } from '../types';
export declare const BONDING_CURVE_DISCRIMINATOR = AccountDiscriminator.BondingCurve;
export declare function getBondingCurveDiscriminatorBytes(): ReadonlyUint8Array;
export type BondingCurve = {
    discriminator: AccountDiscriminator;
    baseMint: Address;
    quoteMint: Address;
    creator: Address;
    retainMintAuthority: boolean;
    buyRequiresPermission: boolean;
    buyPermissionBitmap: ReadonlyUint8Array;
    sellRequiresPermission: boolean;
    sellPermissionBitmap: ReadonlyUint8Array;
    quoteFeeBps: number;
    baseFeeBps: number;
    controlPoints: Array<number>;
    startPrice: bigint;
    endPrice: bigint;
    quoteAmount: bigint;
    baseAmount: bigint;
    launchSlot: bigint;
    creatorReward: bigint;
    graduationTarget: bigint;
    graduationSlot: bigint;
    graduationReward: bigint;
    maxBuyAmount: bigint;
    maxSellAmount: bigint;
    swapFeeBps: number;
    baseAllocationBps: number;
    graduationMethods: Array<GraduationMethodData>;
    minReserveBps: number;
    padding: ReadonlyUint8Array;
};
export type BondingCurveArgs = {
    baseMint: Address;
    quoteMint: Address;
    creator: Address;
    retainMintAuthority: boolean;
    buyRequiresPermission: boolean;
    buyPermissionBitmap: ReadonlyUint8Array;
    sellRequiresPermission: boolean;
    sellPermissionBitmap: ReadonlyUint8Array;
    quoteFeeBps: number;
    baseFeeBps: number;
    controlPoints: Array<number>;
    startPrice: number | bigint;
    endPrice: number | bigint;
    quoteAmount: number | bigint;
    baseAmount: number | bigint;
    launchSlot: number | bigint;
    creatorReward: number | bigint;
    graduationTarget: number | bigint;
    graduationSlot: number | bigint;
    graduationReward: number | bigint;
    maxBuyAmount: number | bigint;
    maxSellAmount: number | bigint;
    swapFeeBps: number;
    baseAllocationBps: number;
    graduationMethods: Array<GraduationMethodDataArgs>;
    minReserveBps: number;
    padding?: ReadonlyUint8Array;
};
export declare function getBondingCurveEncoder(): Encoder<BondingCurveArgs>;
export declare function getBondingCurveDecoder(): Decoder<BondingCurve>;
export declare function getBondingCurveCodec(): Codec<BondingCurveArgs, BondingCurve>;
export declare function decodeBondingCurve<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<BondingCurve, TAddress>;
export declare function decodeBondingCurve<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<BondingCurve, TAddress>;
export declare function fetchBondingCurve<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<Account<BondingCurve, TAddress>>;
export declare function fetchMaybeBondingCurve<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<MaybeAccount<BondingCurve, TAddress>>;
export declare function fetchAllBondingCurve(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<Account<BondingCurve>[]>;
export declare function fetchAllMaybeBondingCurve(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<MaybeAccount<BondingCurve>[]>;
export declare function getBondingCurveSize(): number;
