import { AccountMeta, Address, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, Instruction, InstructionWithAccounts, InstructionWithData, ReadonlyUint8Array, WritableAccount } from '@solana/kit';
import { WAVEBREAK_PROGRAM_ADDRESS } from '../programs';
export declare const PERMISSION_REFUND_DISCRIMINATOR = 6;
export declare function getPermissionRefundDiscriminatorBytes(): ReadonlyUint8Array;
export type PermissionRefundInstruction<TProgram extends string = typeof WAVEBREAK_PROGRAM_ADDRESS, TAccountConsumedPermission extends string | AccountMeta<string> = string, TAccountRefundDestination extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
    TAccountConsumedPermission extends string ? WritableAccount<TAccountConsumedPermission> : TAccountConsumedPermission,
    TAccountRefundDestination extends string ? WritableAccount<TAccountRefundDestination> : TAccountRefundDestination,
    ...TRemainingAccounts
]>;
export type PermissionRefundInstructionData = {
    discriminator: number;
};
export type PermissionRefundInstructionDataArgs = {};
export declare function getPermissionRefundInstructionDataEncoder(): FixedSizeEncoder<PermissionRefundInstructionDataArgs>;
export declare function getPermissionRefundInstructionDataDecoder(): FixedSizeDecoder<PermissionRefundInstructionData>;
export declare function getPermissionRefundInstructionDataCodec(): FixedSizeCodec<PermissionRefundInstructionDataArgs, PermissionRefundInstructionData>;
export type PermissionRefundInput<TAccountConsumedPermission extends string = string, TAccountRefundDestination extends string = string> = {
    consumedPermission: Address<TAccountConsumedPermission>;
    refundDestination: Address<TAccountRefundDestination>;
};
export declare function getPermissionRefundInstruction<TAccountConsumedPermission extends string, TAccountRefundDestination extends string, TProgramAddress extends Address = typeof WAVEBREAK_PROGRAM_ADDRESS>(input: PermissionRefundInput<TAccountConsumedPermission, TAccountRefundDestination>, config?: {
    programAddress?: TProgramAddress;
}): PermissionRefundInstruction<TProgramAddress, TAccountConsumedPermission, TAccountRefundDestination>;
export type ParsedPermissionRefundInstruction<TProgram extends string = typeof WAVEBREAK_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        consumedPermission: TAccountMetas[0];
        refundDestination: TAccountMetas[1];
    };
    data: PermissionRefundInstructionData;
};
export declare function parsePermissionRefundInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedPermissionRefundInstruction<TProgram, TAccountMetas>;
