/**
 * 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 CLOSE_DISTRIBUTOR_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getCloseDistributorDiscriminatorBytes(): ReadonlyUint8Array;
export type CloseDistributorInstruction<TProgram extends string = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS, TAccountDistributor extends string | AccountMeta<string> = string, TAccountTokenVault extends string | AccountMeta<string> = string, TAccountAdmin extends string | AccountMeta<string> = string, TAccountDestinationTokenAccount 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,
    TAccountTokenVault extends string ? WritableAccount<TAccountTokenVault> : TAccountTokenVault,
    TAccountAdmin extends string ? WritableSignerAccount<TAccountAdmin> & AccountSignerMeta<TAccountAdmin> : TAccountAdmin,
    TAccountDestinationTokenAccount extends string ? WritableAccount<TAccountDestinationTokenAccount> : TAccountDestinationTokenAccount,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    ...TRemainingAccounts
]>;
export type CloseDistributorInstructionData = {
    discriminator: ReadonlyUint8Array;
};
export type CloseDistributorInstructionDataArgs = {};
export declare function getCloseDistributorInstructionDataEncoder(): FixedSizeEncoder<CloseDistributorInstructionDataArgs>;
export declare function getCloseDistributorInstructionDataDecoder(): FixedSizeDecoder<CloseDistributorInstructionData>;
export declare function getCloseDistributorInstructionDataCodec(): FixedSizeCodec<CloseDistributorInstructionDataArgs, CloseDistributorInstructionData>;
export type CloseDistributorInput<TAccountDistributor extends string = string, TAccountTokenVault extends string = string, TAccountAdmin extends string = string, TAccountDestinationTokenAccount extends string = string, TAccountTokenProgram extends string = string> = {
    /** [MerkleDistributor]. */
    distributor: Address<TAccountDistributor>;
    /** Clawback receiver token account */
    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>;
    /** account receive token back */
    destinationTokenAccount: Address<TAccountDestinationTokenAccount>;
    /** The [Token] program. */
    tokenProgram?: Address<TAccountTokenProgram>;
};
export declare function getCloseDistributorInstruction<TAccountDistributor extends string, TAccountTokenVault extends string, TAccountAdmin extends string, TAccountDestinationTokenAccount extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS>(input: CloseDistributorInput<TAccountDistributor, TAccountTokenVault, TAccountAdmin, TAccountDestinationTokenAccount, TAccountTokenProgram>, config?: {
    programAddress?: TProgramAddress;
}): CloseDistributorInstruction<TProgramAddress, TAccountDistributor, TAccountTokenVault, TAccountAdmin, TAccountDestinationTokenAccount, TAccountTokenProgram>;
export type ParsedCloseDistributorInstruction<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 */
        tokenVault: TAccountMetas[1];
        /**
         * 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[2];
        /** account receive token back */
        destinationTokenAccount: TAccountMetas[3];
        /** The [Token] program. */
        tokenProgram: TAccountMetas[4];
    };
    data: CloseDistributorInstructionData;
};
export declare function parseCloseDistributorInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedCloseDistributorInstruction<TProgram, TAccountMetas>;
