/**
 * 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 HARVEST_REWARD_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getHarvestRewardDiscriminatorBytes(): ReadonlyUint8Array;
export type HarvestRewardInstruction<TProgram extends string = typeof FARMS_PROGRAM_ADDRESS, TAccountPayer extends string | AccountMeta<string> = string, TAccountUserState extends string | AccountMeta<string> = string, TAccountFarmState extends string | AccountMeta<string> = string, TAccountGlobalConfig extends string | AccountMeta<string> = string, TAccountRewardMint extends string | AccountMeta<string> = string, TAccountUserRewardTokenAccount extends string | AccountMeta<string> = string, TAccountRewardsVault extends string | AccountMeta<string> = string, TAccountRewardsTreasuryVault extends string | AccountMeta<string> = string, TAccountFarmVaultsAuthority extends string | AccountMeta<string> = string, TAccountScopePrices extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
    TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer> : TAccountPayer,
    TAccountUserState extends string ? WritableAccount<TAccountUserState> : TAccountUserState,
    TAccountFarmState extends string ? WritableAccount<TAccountFarmState> : TAccountFarmState,
    TAccountGlobalConfig extends string ? ReadonlyAccount<TAccountGlobalConfig> : TAccountGlobalConfig,
    TAccountRewardMint extends string ? ReadonlyAccount<TAccountRewardMint> : TAccountRewardMint,
    TAccountUserRewardTokenAccount extends string ? WritableAccount<TAccountUserRewardTokenAccount> : TAccountUserRewardTokenAccount,
    TAccountRewardsVault extends string ? WritableAccount<TAccountRewardsVault> : TAccountRewardsVault,
    TAccountRewardsTreasuryVault extends string ? WritableAccount<TAccountRewardsTreasuryVault> : TAccountRewardsTreasuryVault,
    TAccountFarmVaultsAuthority extends string ? ReadonlyAccount<TAccountFarmVaultsAuthority> : TAccountFarmVaultsAuthority,
    TAccountScopePrices extends string ? ReadonlyAccount<TAccountScopePrices> : TAccountScopePrices,
    TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram,
    ...TRemainingAccounts
]>;
export type HarvestRewardInstructionData = {
    discriminator: ReadonlyUint8Array;
    rewardIndex: bigint;
};
export type HarvestRewardInstructionDataArgs = {
    rewardIndex: number | bigint;
};
export declare function getHarvestRewardInstructionDataEncoder(): FixedSizeEncoder<HarvestRewardInstructionDataArgs>;
export declare function getHarvestRewardInstructionDataDecoder(): FixedSizeDecoder<HarvestRewardInstructionData>;
export declare function getHarvestRewardInstructionDataCodec(): FixedSizeCodec<HarvestRewardInstructionDataArgs, HarvestRewardInstructionData>;
export type HarvestRewardInput<TAccountPayer extends string = string, TAccountUserState extends string = string, TAccountFarmState extends string = string, TAccountGlobalConfig extends string = string, TAccountRewardMint extends string = string, TAccountUserRewardTokenAccount extends string = string, TAccountRewardsVault extends string = string, TAccountRewardsTreasuryVault extends string = string, TAccountFarmVaultsAuthority extends string = string, TAccountScopePrices extends string = string, TAccountTokenProgram extends string = string> = {
    payer: TransactionSigner<TAccountPayer>;
    userState: Address<TAccountUserState>;
    farmState: Address<TAccountFarmState>;
    globalConfig: Address<TAccountGlobalConfig>;
    rewardMint: Address<TAccountRewardMint>;
    userRewardTokenAccount: Address<TAccountUserRewardTokenAccount>;
    rewardsVault: Address<TAccountRewardsVault>;
    rewardsTreasuryVault: Address<TAccountRewardsTreasuryVault>;
    farmVaultsAuthority: Address<TAccountFarmVaultsAuthority>;
    scopePrices?: Address<TAccountScopePrices>;
    tokenProgram?: Address<TAccountTokenProgram>;
    rewardIndex: HarvestRewardInstructionDataArgs["rewardIndex"];
};
export declare function getHarvestRewardInstruction<TAccountPayer extends string, TAccountUserState extends string, TAccountFarmState extends string, TAccountGlobalConfig extends string, TAccountRewardMint extends string, TAccountUserRewardTokenAccount extends string, TAccountRewardsVault extends string, TAccountRewardsTreasuryVault extends string, TAccountFarmVaultsAuthority extends string, TAccountScopePrices extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof FARMS_PROGRAM_ADDRESS>(input: HarvestRewardInput<TAccountPayer, TAccountUserState, TAccountFarmState, TAccountGlobalConfig, TAccountRewardMint, TAccountUserRewardTokenAccount, TAccountRewardsVault, TAccountRewardsTreasuryVault, TAccountFarmVaultsAuthority, TAccountScopePrices, TAccountTokenProgram>, config?: {
    programAddress?: TProgramAddress;
}): HarvestRewardInstruction<TProgramAddress, TAccountPayer, TAccountUserState, TAccountFarmState, TAccountGlobalConfig, TAccountRewardMint, TAccountUserRewardTokenAccount, TAccountRewardsVault, TAccountRewardsTreasuryVault, TAccountFarmVaultsAuthority, TAccountScopePrices, TAccountTokenProgram>;
export type ParsedHarvestRewardInstruction<TProgram extends string = typeof FARMS_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        payer: TAccountMetas[0];
        userState: TAccountMetas[1];
        farmState: TAccountMetas[2];
        globalConfig: TAccountMetas[3];
        rewardMint: TAccountMetas[4];
        userRewardTokenAccount: TAccountMetas[5];
        rewardsVault: TAccountMetas[6];
        rewardsTreasuryVault: TAccountMetas[7];
        farmVaultsAuthority: TAccountMetas[8];
        scopePrices?: TAccountMetas[9] | undefined;
        tokenProgram: TAccountMetas[10];
    };
    data: HarvestRewardInstructionData;
};
export declare function parseHarvestRewardInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedHarvestRewardInstruction<TProgram, TAccountMetas>;
//# sourceMappingURL=harvestReward.d.ts.map