/**
 * This code was AUTOGENERATED using the Codama library.
 * Please DO NOT EDIT THIS FILE, instead use visitors
 * to add features, then rerun Codama to update it.
 *
 * @see https://github.com/codama-idl/codama
 */
import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
import { MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS } from '../programs/index.js';
export declare const NEW_DISTRIBUTOR_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getNewDistributorDiscriminatorBytes(): ReadonlyUint8Array;
export type NewDistributorInstruction<TProgram extends string = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS, TAccountDistributor extends string | AccountMeta<string> = string, TAccountClawbackReceiver extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountTokenVault extends string | AccountMeta<string> = string, TAccountAdmin extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = '11111111111111111111111111111111', TAccountAssociatedTokenProgram extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
    TAccountDistributor extends string ? WritableAccount<TAccountDistributor> : TAccountDistributor,
    TAccountClawbackReceiver extends string ? WritableAccount<TAccountClawbackReceiver> : TAccountClawbackReceiver,
    TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,
    TAccountTokenVault extends string ? ReadonlyAccount<TAccountTokenVault> : TAccountTokenVault,
    TAccountAdmin extends string ? WritableSignerAccount<TAccountAdmin> & AccountSignerMeta<TAccountAdmin> : TAccountAdmin,
    TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,
    TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    ...TRemainingAccounts
]>;
export type NewDistributorInstructionData = {
    discriminator: ReadonlyUint8Array;
    version: bigint;
    root: ReadonlyUint8Array;
    maxTotalClaim: bigint;
    maxNumNodes: bigint;
    startVestingTs: bigint;
    endVestingTs: bigint;
    clawbackStartTs: bigint;
    enableSlot: bigint;
    closable: boolean;
};
export type NewDistributorInstructionDataArgs = {
    version: number | bigint;
    root: ReadonlyUint8Array;
    maxTotalClaim: number | bigint;
    maxNumNodes: number | bigint;
    startVestingTs: number | bigint;
    endVestingTs: number | bigint;
    clawbackStartTs: number | bigint;
    enableSlot: number | bigint;
    closable: boolean;
};
export declare function getNewDistributorInstructionDataEncoder(): FixedSizeEncoder<NewDistributorInstructionDataArgs>;
export declare function getNewDistributorInstructionDataDecoder(): FixedSizeDecoder<NewDistributorInstructionData>;
export declare function getNewDistributorInstructionDataCodec(): FixedSizeCodec<NewDistributorInstructionDataArgs, NewDistributorInstructionData>;
export type NewDistributorInput<TAccountDistributor extends string = string, TAccountClawbackReceiver extends string = string, TAccountMint extends string = string, TAccountTokenVault extends string = string, TAccountAdmin extends string = string, TAccountSystemProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountTokenProgram extends string = string> = {
    /** [MerkleDistributor]. */
    distributor: Address<TAccountDistributor>;
    /** Clawback receiver token account */
    clawbackReceiver: Address<TAccountClawbackReceiver>;
    /** The mint to distribute. */
    mint: Address<TAccountMint>;
    /**
     * Token vault
     * Should create previously
     */
    tokenVault: Address<TAccountTokenVault>;
    /**
     * Admin wallet, responsible for creating the distributor and paying for the transaction.
     * Also has the authority to set the clawback receiver and change itself.
     */
    admin: TransactionSigner<TAccountAdmin>;
    /** The [System] program. */
    systemProgram?: Address<TAccountSystemProgram>;
    /** The [Associated Token] program. */
    associatedTokenProgram: Address<TAccountAssociatedTokenProgram>;
    /** The [Token] program. */
    tokenProgram?: Address<TAccountTokenProgram>;
    version: NewDistributorInstructionDataArgs['version'];
    root: NewDistributorInstructionDataArgs['root'];
    maxTotalClaim: NewDistributorInstructionDataArgs['maxTotalClaim'];
    maxNumNodes: NewDistributorInstructionDataArgs['maxNumNodes'];
    startVestingTs: NewDistributorInstructionDataArgs['startVestingTs'];
    endVestingTs: NewDistributorInstructionDataArgs['endVestingTs'];
    clawbackStartTs: NewDistributorInstructionDataArgs['clawbackStartTs'];
    enableSlot: NewDistributorInstructionDataArgs['enableSlot'];
    closable: NewDistributorInstructionDataArgs['closable'];
};
export declare function getNewDistributorInstruction<TAccountDistributor extends string, TAccountClawbackReceiver extends string, TAccountMint extends string, TAccountTokenVault extends string, TAccountAdmin extends string, TAccountSystemProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS>(input: NewDistributorInput<TAccountDistributor, TAccountClawbackReceiver, TAccountMint, TAccountTokenVault, TAccountAdmin, TAccountSystemProgram, TAccountAssociatedTokenProgram, TAccountTokenProgram>, config?: {
    programAddress?: TProgramAddress;
}): NewDistributorInstruction<TProgramAddress, TAccountDistributor, TAccountClawbackReceiver, TAccountMint, TAccountTokenVault, TAccountAdmin, TAccountSystemProgram, TAccountAssociatedTokenProgram, TAccountTokenProgram>;
export type ParsedNewDistributorInstruction<TProgram extends string = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        /** [MerkleDistributor]. */
        distributor: TAccountMetas[0];
        /** Clawback receiver token account */
        clawbackReceiver: TAccountMetas[1];
        /** The mint to distribute. */
        mint: TAccountMetas[2];
        /**
         * Token vault
         * Should create previously
         */
        tokenVault: TAccountMetas[3];
        /**
         * Admin wallet, responsible for creating the distributor and paying for the transaction.
         * Also has the authority to set the clawback receiver and change itself.
         */
        admin: TAccountMetas[4];
        /** The [System] program. */
        systemProgram: TAccountMetas[5];
        /** The [Associated Token] program. */
        associatedTokenProgram: TAccountMetas[6];
        /** The [Token] program. */
        tokenProgram: TAccountMetas[7];
    };
    data: NewDistributorInstructionData;
};
export declare function parseNewDistributorInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedNewDistributorInstruction<TProgram, TAccountMetas>;
