/**
 * 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 { FARMS_PROGRAM_ADDRESS } from "../programs";
export declare const WITHDRAW_TREASURY_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getWithdrawTreasuryDiscriminatorBytes(): ReadonlyUint8Array;
export type WithdrawTreasuryInstruction<TProgram extends string = typeof FARMS_PROGRAM_ADDRESS, TAccountGlobalAdmin extends string | AccountMeta<string> = string, TAccountGlobalConfig extends string | AccountMeta<string> = string, TAccountRewardMint extends string | AccountMeta<string> = string, TAccountRewardTreasuryVault extends string | AccountMeta<string> = string, TAccountTreasuryVaultAuthority extends string | AccountMeta<string> = string, TAccountWithdrawDestinationTokenAccount extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
    TAccountGlobalAdmin extends string ? WritableSignerAccount<TAccountGlobalAdmin> & AccountSignerMeta<TAccountGlobalAdmin> : TAccountGlobalAdmin,
    TAccountGlobalConfig extends string ? ReadonlyAccount<TAccountGlobalConfig> : TAccountGlobalConfig,
    TAccountRewardMint extends string ? ReadonlyAccount<TAccountRewardMint> : TAccountRewardMint,
    TAccountRewardTreasuryVault extends string ? WritableAccount<TAccountRewardTreasuryVault> : TAccountRewardTreasuryVault,
    TAccountTreasuryVaultAuthority extends string ? ReadonlyAccount<TAccountTreasuryVaultAuthority> : TAccountTreasuryVaultAuthority,
    TAccountWithdrawDestinationTokenAccount extends string ? WritableAccount<TAccountWithdrawDestinationTokenAccount> : TAccountWithdrawDestinationTokenAccount,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    ...TRemainingAccounts
]>;
export type WithdrawTreasuryInstructionData = {
    discriminator: ReadonlyUint8Array;
    amount: bigint;
};
export type WithdrawTreasuryInstructionDataArgs = {
    amount: number | bigint;
};
export declare function getWithdrawTreasuryInstructionDataEncoder(): FixedSizeEncoder<WithdrawTreasuryInstructionDataArgs>;
export declare function getWithdrawTreasuryInstructionDataDecoder(): FixedSizeDecoder<WithdrawTreasuryInstructionData>;
export declare function getWithdrawTreasuryInstructionDataCodec(): FixedSizeCodec<WithdrawTreasuryInstructionDataArgs, WithdrawTreasuryInstructionData>;
export type WithdrawTreasuryInput<TAccountGlobalAdmin extends string = string, TAccountGlobalConfig extends string = string, TAccountRewardMint extends string = string, TAccountRewardTreasuryVault extends string = string, TAccountTreasuryVaultAuthority extends string = string, TAccountWithdrawDestinationTokenAccount extends string = string, TAccountTokenProgram extends string = string> = {
    globalAdmin: TransactionSigner<TAccountGlobalAdmin>;
    globalConfig: Address<TAccountGlobalConfig>;
    rewardMint: Address<TAccountRewardMint>;
    rewardTreasuryVault: Address<TAccountRewardTreasuryVault>;
    treasuryVaultAuthority: Address<TAccountTreasuryVaultAuthority>;
    withdrawDestinationTokenAccount: Address<TAccountWithdrawDestinationTokenAccount>;
    tokenProgram?: Address<TAccountTokenProgram>;
    amount: WithdrawTreasuryInstructionDataArgs["amount"];
};
export declare function getWithdrawTreasuryInstruction<TAccountGlobalAdmin extends string, TAccountGlobalConfig extends string, TAccountRewardMint extends string, TAccountRewardTreasuryVault extends string, TAccountTreasuryVaultAuthority extends string, TAccountWithdrawDestinationTokenAccount extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof FARMS_PROGRAM_ADDRESS>(input: WithdrawTreasuryInput<TAccountGlobalAdmin, TAccountGlobalConfig, TAccountRewardMint, TAccountRewardTreasuryVault, TAccountTreasuryVaultAuthority, TAccountWithdrawDestinationTokenAccount, TAccountTokenProgram>, config?: {
    programAddress?: TProgramAddress;
}): WithdrawTreasuryInstruction<TProgramAddress, TAccountGlobalAdmin, TAccountGlobalConfig, TAccountRewardMint, TAccountRewardTreasuryVault, TAccountTreasuryVaultAuthority, TAccountWithdrawDestinationTokenAccount, TAccountTokenProgram>;
export type ParsedWithdrawTreasuryInstruction<TProgram extends string = typeof FARMS_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        globalAdmin: TAccountMetas[0];
        globalConfig: TAccountMetas[1];
        rewardMint: TAccountMetas[2];
        rewardTreasuryVault: TAccountMetas[3];
        treasuryVaultAuthority: TAccountMetas[4];
        withdrawDestinationTokenAccount: TAccountMetas[5];
        tokenProgram: TAccountMetas[6];
    };
    data: WithdrawTreasuryInstructionData;
};
export declare function parseWithdrawTreasuryInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedWithdrawTreasuryInstruction<TProgram, TAccountMetas>;
//# sourceMappingURL=withdrawTreasury.d.ts.map