import { Address, Codec, Decoder, Encoder, GetDiscriminatedUnionVariant, GetDiscriminatedUnionVariantContent, ReadonlyUint8Array } from '@solana/kit';
import { BondingCurveCreationType, BondingCurveCreationTypeArgs, GraduationMethodData, GraduationMethodDataArgs } from '.';
export type Event = {
    __kind: "BondingCurveCreated";
    creationType: BondingCurveCreationType;
    baseMint: Address;
    quoteMint: Address;
    creator: Address;
    startPrice: bigint;
    endPrice: bigint;
    controlPoints: Array<number>;
    swapFeeBps: number;
    quoteFeeBps: number;
    baseFeeBps: number;
    baseAllocationBps: number;
    launchTime: bigint;
    creatorReward: bigint;
    graduationMethods: Array<GraduationMethodData>;
    graduationTarget: bigint;
    graduationTime: bigint;
    graduationReward: bigint;
    retainMintAuthority: boolean;
    minReserveBps: number;
    buyRequiresPermission: boolean;
    buyPermissionBitmap: ReadonlyUint8Array;
    maxBuyAmount: bigint;
    sellRequiresPermission: boolean;
    sellPermissionBitmap: ReadonlyUint8Array;
    maxSellAmount: bigint;
    quoteTokenProgram: Address;
    baseTokenProgram: Address;
    quoteTokenDecimals: number;
    baseTokenDecimals: number;
} | {
    __kind: "TokenBought";
    buyer: Address;
    baseMint: Address;
    quoteMint: Address;
    amountIn: bigint;
    amountOut: bigint;
    priceBefore: bigint;
    priceAfter: bigint;
    quoteAmountBefore: bigint;
    quoteAmountAfter: bigint;
    baseAmountBefore: bigint;
    baseAmountAfter: bigint;
    protocolFee: bigint;
} | {
    __kind: "TokenSold";
    seller: Address;
    baseMint: Address;
    quoteMint: Address;
    amountIn: bigint;
    amountOut: bigint;
    priceBefore: bigint;
    priceAfter: bigint;
    quoteAmountBefore: bigint;
    quoteAmountAfter: bigint;
    baseAmountBefore: bigint;
    baseAmountAfter: bigint;
    protocolFee: bigint;
} | {
    __kind: "TokenRefunded";
    signer: Address;
    baseMint: Address;
    quoteMint: Address;
    price: bigint;
    quoteAmount: bigint;
    baseAmount: bigint;
} | {
    __kind: "BondingCurveGraduated";
    graduator: Address;
    baseMint: Address;
    quoteMint: Address;
    finalPrice: bigint;
    graduationMethods: Array<GraduationMethodData>;
} | {
    __kind: "BondingCurveClosed";
    bondingCurve: Address;
};
export type EventArgs = {
    __kind: "BondingCurveCreated";
    creationType: BondingCurveCreationTypeArgs;
    baseMint: Address;
    quoteMint: Address;
    creator: Address;
    startPrice: number | bigint;
    endPrice: number | bigint;
    controlPoints: Array<number>;
    swapFeeBps: number;
    quoteFeeBps: number;
    baseFeeBps: number;
    baseAllocationBps: number;
    launchTime: number | bigint;
    creatorReward: number | bigint;
    graduationMethods: Array<GraduationMethodDataArgs>;
    graduationTarget: number | bigint;
    graduationTime: number | bigint;
    graduationReward: number | bigint;
    retainMintAuthority: boolean;
    minReserveBps: number;
    buyRequiresPermission: boolean;
    buyPermissionBitmap: ReadonlyUint8Array;
    maxBuyAmount: number | bigint;
    sellRequiresPermission: boolean;
    sellPermissionBitmap: ReadonlyUint8Array;
    maxSellAmount: number | bigint;
    quoteTokenProgram: Address;
    baseTokenProgram: Address;
    quoteTokenDecimals: number;
    baseTokenDecimals: number;
} | {
    __kind: "TokenBought";
    buyer: Address;
    baseMint: Address;
    quoteMint: Address;
    amountIn: number | bigint;
    amountOut: number | bigint;
    priceBefore: number | bigint;
    priceAfter: number | bigint;
    quoteAmountBefore: number | bigint;
    quoteAmountAfter: number | bigint;
    baseAmountBefore: number | bigint;
    baseAmountAfter: number | bigint;
    protocolFee: number | bigint;
} | {
    __kind: "TokenSold";
    seller: Address;
    baseMint: Address;
    quoteMint: Address;
    amountIn: number | bigint;
    amountOut: number | bigint;
    priceBefore: number | bigint;
    priceAfter: number | bigint;
    quoteAmountBefore: number | bigint;
    quoteAmountAfter: number | bigint;
    baseAmountBefore: number | bigint;
    baseAmountAfter: number | bigint;
    protocolFee: number | bigint;
} | {
    __kind: "TokenRefunded";
    signer: Address;
    baseMint: Address;
    quoteMint: Address;
    price: number | bigint;
    quoteAmount: number | bigint;
    baseAmount: number | bigint;
} | {
    __kind: "BondingCurveGraduated";
    graduator: Address;
    baseMint: Address;
    quoteMint: Address;
    finalPrice: number | bigint;
    graduationMethods: Array<GraduationMethodDataArgs>;
} | {
    __kind: "BondingCurveClosed";
    bondingCurve: Address;
};
export declare function getEventEncoder(): Encoder<EventArgs>;
export declare function getEventDecoder(): Decoder<Event>;
export declare function getEventCodec(): Codec<EventArgs, Event>;
export declare function event(kind: "BondingCurveCreated", data: GetDiscriminatedUnionVariantContent<EventArgs, "__kind", "BondingCurveCreated">): GetDiscriminatedUnionVariant<EventArgs, "__kind", "BondingCurveCreated">;
export declare function event(kind: "TokenBought", data: GetDiscriminatedUnionVariantContent<EventArgs, "__kind", "TokenBought">): GetDiscriminatedUnionVariant<EventArgs, "__kind", "TokenBought">;
export declare function event(kind: "TokenSold", data: GetDiscriminatedUnionVariantContent<EventArgs, "__kind", "TokenSold">): GetDiscriminatedUnionVariant<EventArgs, "__kind", "TokenSold">;
export declare function event(kind: "TokenRefunded", data: GetDiscriminatedUnionVariantContent<EventArgs, "__kind", "TokenRefunded">): GetDiscriminatedUnionVariant<EventArgs, "__kind", "TokenRefunded">;
export declare function event(kind: "BondingCurveGraduated", data: GetDiscriminatedUnionVariantContent<EventArgs, "__kind", "BondingCurveGraduated">): GetDiscriminatedUnionVariant<EventArgs, "__kind", "BondingCurveGraduated">;
export declare function event(kind: "BondingCurveClosed", data: GetDiscriminatedUnionVariantContent<EventArgs, "__kind", "BondingCurveClosed">): GetDiscriminatedUnionVariant<EventArgs, "__kind", "BondingCurveClosed">;
export declare function isEvent<K extends Event["__kind"]>(kind: K, value: Event): value is Event & {
    __kind: K;
};
