import { AccountMeta, AccountSignerMeta, Address, Codec, Decoder, Encoder, Instruction, InstructionWithAccounts, InstructionWithData, ReadonlyAccount, ReadonlyUint8Array, TransactionSigner, WritableAccount, WritableSignerAccount } from '@solana/kit'; import { WAVEBREAK_PROGRAM_ADDRESS } from '../programs'; import { PermissionMessage, PermissionMessageArgs, PermissionSignature, PermissionSignatureArgs } from '../types'; export declare const PERMISSION_CONSUME_TOP_LEVEL_DISCRIMINATOR = 0; export declare function getPermissionConsumeTopLevelDiscriminatorBytes(): ReadonlyUint8Array; export type PermissionConsumeTopLevelInstruction = string, TAccountPermissionConfig extends string | AccountMeta = string, TAccountConsumedPermission extends string | AccountMeta = string, TAccountSystemProgram extends string | AccountMeta = "11111111111111111111111111111111", TAccountInstructions extends string | AccountMeta = string, TRemainingAccounts extends readonly AccountMeta[] = []> = Instruction & InstructionWithData & InstructionWithAccounts<[ TAccountConsumer extends string ? WritableSignerAccount & AccountSignerMeta : TAccountConsumer, TAccountPermissionConfig extends string ? ReadonlyAccount : TAccountPermissionConfig, TAccountConsumedPermission extends string ? WritableAccount : TAccountConsumedPermission, TAccountSystemProgram extends string ? ReadonlyAccount : TAccountSystemProgram, TAccountInstructions extends string ? ReadonlyAccount : TAccountInstructions, ...TRemainingAccounts ]>; export type PermissionConsumeTopLevelInstructionData = { discriminator: number; permissionMessage: PermissionMessage; permissionSignature: PermissionSignature; }; export type PermissionConsumeTopLevelInstructionDataArgs = { permissionMessage: PermissionMessageArgs; permissionSignature: PermissionSignatureArgs; }; export declare function getPermissionConsumeTopLevelInstructionDataEncoder(): Encoder; export declare function getPermissionConsumeTopLevelInstructionDataDecoder(): Decoder; export declare function getPermissionConsumeTopLevelInstructionDataCodec(): Codec; export type PermissionConsumeTopLevelInput = { consumer: TransactionSigner; permissionConfig: Address; consumedPermission: Address; systemProgram?: Address; instructions: Address; permissionMessage: PermissionConsumeTopLevelInstructionDataArgs["permissionMessage"]; permissionSignature: PermissionConsumeTopLevelInstructionDataArgs["permissionSignature"]; }; export declare function getPermissionConsumeTopLevelInstruction(input: PermissionConsumeTopLevelInput, config?: { programAddress?: TProgramAddress; }): PermissionConsumeTopLevelInstruction; export type ParsedPermissionConsumeTopLevelInstruction = { programAddress: Address; accounts: { consumer: TAccountMetas[0]; permissionConfig: TAccountMetas[1]; consumedPermission: TAccountMetas[2]; systemProgram: TAccountMetas[3]; instructions: TAccountMetas[4]; }; data: PermissionConsumeTopLevelInstructionData; }; export declare function parsePermissionConsumeTopLevelInstruction(instruction: Instruction & InstructionWithAccounts & InstructionWithData): ParsedPermissionConsumeTopLevelInstruction;