/**
 * 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 ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
import { MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS } from '../programs/index.js';
export declare const SET_ADMIN_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getSetAdminDiscriminatorBytes(): ReadonlyUint8Array;
export type SetAdminInstruction<TProgram extends string = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS, TAccountDistributor extends string | AccountMeta<string> = string, TAccountAdmin extends string | AccountMeta<string> = string, TAccountNewAdmin extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
    TAccountDistributor extends string ? WritableAccount<TAccountDistributor> : TAccountDistributor,
    TAccountAdmin extends string ? WritableSignerAccount<TAccountAdmin> & AccountSignerMeta<TAccountAdmin> : TAccountAdmin,
    TAccountNewAdmin extends string ? WritableAccount<TAccountNewAdmin> : TAccountNewAdmin,
    ...TRemainingAccounts
]>;
export type SetAdminInstructionData = {
    discriminator: ReadonlyUint8Array;
};
export type SetAdminInstructionDataArgs = {};
export declare function getSetAdminInstructionDataEncoder(): FixedSizeEncoder<SetAdminInstructionDataArgs>;
export declare function getSetAdminInstructionDataDecoder(): FixedSizeDecoder<SetAdminInstructionData>;
export declare function getSetAdminInstructionDataCodec(): FixedSizeCodec<SetAdminInstructionDataArgs, SetAdminInstructionData>;
export type SetAdminInput<TAccountDistributor extends string = string, TAccountAdmin extends string = string, TAccountNewAdmin extends string = string> = {
    /** The [MerkleDistributor]. */
    distributor: Address<TAccountDistributor>;
    /** Admin signer */
    admin: TransactionSigner<TAccountAdmin>;
    /** New admin account */
    newAdmin: Address<TAccountNewAdmin>;
};
export declare function getSetAdminInstruction<TAccountDistributor extends string, TAccountAdmin extends string, TAccountNewAdmin extends string, TProgramAddress extends Address = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS>(input: SetAdminInput<TAccountDistributor, TAccountAdmin, TAccountNewAdmin>, config?: {
    programAddress?: TProgramAddress;
}): SetAdminInstruction<TProgramAddress, TAccountDistributor, TAccountAdmin, TAccountNewAdmin>;
export type ParsedSetAdminInstruction<TProgram extends string = typeof MERKLE_DISTRIBUTOR_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        /** The [MerkleDistributor]. */
        distributor: TAccountMetas[0];
        /** Admin signer */
        admin: TAccountMetas[1];
        /** New admin account */
        newAdmin: TAccountMetas[2];
    };
    data: SetAdminInstructionData;
};
export declare function parseSetAdminInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedSetAdminInstruction<TProgram, TAccountMetas>;
