/**
 * 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 Address, type Codec, type Decoder, type Encoder, type IAccountMeta, type IAccountSignerMeta, type IInstruction, type IInstructionWithAccounts, type IInstructionWithData, type ReadonlyAccount, type ReadonlySignerAccount, type TransactionSigner, type WritableAccount } from '@solana/kit';
import { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';
export declare const SET_TRANSFER_FEE_DISCRIMINATOR = 26;
export declare function getSetTransferFeeDiscriminatorBytes(): import("@solana/kit").ReadonlyUint8Array;
export declare const SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR = 5;
export declare function getSetTransferFeeTransferFeeDiscriminatorBytes(): import("@solana/kit").ReadonlyUint8Array;
export type SetTransferFeeInstruction<TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS, TAccountMint extends string | IAccountMeta<string> = string, TAccountTransferFeeConfigAuthority extends string | IAccountMeta<string> = string, TRemainingAccounts extends readonly IAccountMeta<string>[] = []> = IInstruction<TProgram> & IInstructionWithData<Uint8Array> & IInstructionWithAccounts<[
    TAccountMint extends string ? WritableAccount<TAccountMint> : TAccountMint,
    TAccountTransferFeeConfigAuthority extends string ? ReadonlyAccount<TAccountTransferFeeConfigAuthority> : TAccountTransferFeeConfigAuthority,
    ...TRemainingAccounts
]>;
export type SetTransferFeeInstructionData = {
    discriminator: number;
    transferFeeDiscriminator: number;
    /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */
    transferFeeBasisPoints: number;
    /** Maximum fee assessed on transfers. */
    maximumFee: bigint;
};
export type SetTransferFeeInstructionDataArgs = {
    /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */
    transferFeeBasisPoints: number;
    /** Maximum fee assessed on transfers. */
    maximumFee: number | bigint;
};
export declare function getSetTransferFeeInstructionDataEncoder(): Encoder<SetTransferFeeInstructionDataArgs>;
export declare function getSetTransferFeeInstructionDataDecoder(): Decoder<SetTransferFeeInstructionData>;
export declare function getSetTransferFeeInstructionDataCodec(): Codec<SetTransferFeeInstructionDataArgs, SetTransferFeeInstructionData>;
export type SetTransferFeeInput<TAccountMint extends string = string, TAccountTransferFeeConfigAuthority extends string = string> = {
    /** The mint. */
    mint: Address<TAccountMint>;
    /** The mint's fee account owner or its multisignature account. */
    transferFeeConfigAuthority: Address<TAccountTransferFeeConfigAuthority> | TransactionSigner<TAccountTransferFeeConfigAuthority>;
    transferFeeBasisPoints: SetTransferFeeInstructionDataArgs['transferFeeBasisPoints'];
    maximumFee: SetTransferFeeInstructionDataArgs['maximumFee'];
    multiSigners?: Array<TransactionSigner>;
};
export declare function getSetTransferFeeInstruction<TAccountMint extends string, TAccountTransferFeeConfigAuthority extends string, TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS>(input: SetTransferFeeInput<TAccountMint, TAccountTransferFeeConfigAuthority>, config?: {
    programAddress?: TProgramAddress;
}): SetTransferFeeInstruction<TProgramAddress, TAccountMint, (typeof input)['transferFeeConfigAuthority'] extends TransactionSigner<TAccountTransferFeeConfigAuthority> ? ReadonlySignerAccount<TAccountTransferFeeConfigAuthority> & IAccountSignerMeta<TAccountTransferFeeConfigAuthority> : TAccountTransferFeeConfigAuthority>;
export type ParsedSetTransferFeeInstruction<TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS, TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        /** The mint. */
        mint: TAccountMetas[0];
        /** The mint's fee account owner or its multisignature account. */
        transferFeeConfigAuthority: TAccountMetas[1];
    };
    data: SetTransferFeeInstructionData;
};
export declare function parseSetTransferFeeInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>): ParsedSetTransferFeeInstruction<TProgram, TAccountMetas>;
//# sourceMappingURL=setTransferFee.d.ts.map