import { AccountMeta, AccountSignerMeta, Address, Codec, Decoder, Encoder, Instruction, InstructionWithAccounts, InstructionWithData, ReadonlySignerAccount, ReadonlyUint8Array, TransactionSigner, WritableAccount } from '@solana/kit';
import { WAVEBREAK_PROGRAM_ADDRESS } from '../programs';
import { Privilege, PrivilegeArgs } from '../types';
export declare const AUTHORITY_CONFIG_REVOKE_DISCRIMINATOR = 18;
export declare function getAuthorityConfigRevokeDiscriminatorBytes(): ReadonlyUint8Array;
export type AuthorityConfigRevokeInstruction<TProgram extends string = typeof WAVEBREAK_PROGRAM_ADDRESS, TAccountAuthority extends string | AccountMeta<string> = string, TAccountAuthorityConfig extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[
    TAccountAuthority extends string ? ReadonlySignerAccount<TAccountAuthority> & AccountSignerMeta<TAccountAuthority> : TAccountAuthority,
    TAccountAuthorityConfig extends string ? WritableAccount<TAccountAuthorityConfig> : TAccountAuthorityConfig,
    ...TRemainingAccounts
]>;
export type AuthorityConfigRevokeInstructionData = {
    discriminator: number;
    account: Address;
    privileges: Array<Privilege>;
};
export type AuthorityConfigRevokeInstructionDataArgs = {
    account: Address;
    privileges: Array<PrivilegeArgs>;
};
export declare function getAuthorityConfigRevokeInstructionDataEncoder(): Encoder<AuthorityConfigRevokeInstructionDataArgs>;
export declare function getAuthorityConfigRevokeInstructionDataDecoder(): Decoder<AuthorityConfigRevokeInstructionData>;
export declare function getAuthorityConfigRevokeInstructionDataCodec(): Codec<AuthorityConfigRevokeInstructionDataArgs, AuthorityConfigRevokeInstructionData>;
export type AuthorityConfigRevokeInput<TAccountAuthority extends string = string, TAccountAuthorityConfig extends string = string> = {
    authority: TransactionSigner<TAccountAuthority>;
    authorityConfig: Address<TAccountAuthorityConfig>;
    account: AuthorityConfigRevokeInstructionDataArgs["account"];
    privileges: AuthorityConfigRevokeInstructionDataArgs["privileges"];
};
export declare function getAuthorityConfigRevokeInstruction<TAccountAuthority extends string, TAccountAuthorityConfig extends string, TProgramAddress extends Address = typeof WAVEBREAK_PROGRAM_ADDRESS>(input: AuthorityConfigRevokeInput<TAccountAuthority, TAccountAuthorityConfig>, config?: {
    programAddress?: TProgramAddress;
}): AuthorityConfigRevokeInstruction<TProgramAddress, TAccountAuthority, TAccountAuthorityConfig>;
export type ParsedAuthorityConfigRevokeInstruction<TProgram extends string = typeof WAVEBREAK_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
    programAddress: Address<TProgram>;
    accounts: {
        authority: TAccountMetas[0];
        authorityConfig: TAccountMetas[1];
    };
    data: AuthorityConfigRevokeInstructionData;
};
export declare function parseAuthorityConfigRevokeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedAuthorityConfigRevokeInstruction<TProgram, TAccountMetas>;
