import { fetchEncodedAccount, fetchEncodedAccounts, Account, Address, EncodedAccount, FetchAccountConfig, FetchAccountsConfig, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, MaybeAccount, MaybeEncodedAccount, ReadonlyUint8Array } from '@solana/kit';
import { AccountDiscriminator, PermissionSigner, PermissionSignerArgs } from '../types';
export declare const PERMISSION_CONFIG_DISCRIMINATOR = AccountDiscriminator.PermissionConfig;
export declare function getPermissionConfigDiscriminatorBytes(): ReadonlyUint8Array;
export type PermissionConfig = {
    discriminator: AccountDiscriminator;
    consumerProgram: Address;
    allowedSigners: Array<PermissionSigner>;
    padding: ReadonlyUint8Array;
};
export type PermissionConfigArgs = {
    consumerProgram: Address;
    allowedSigners: Array<PermissionSignerArgs>;
    padding?: ReadonlyUint8Array;
};
export declare function getPermissionConfigEncoder(): FixedSizeEncoder<PermissionConfigArgs>;
export declare function getPermissionConfigDecoder(): FixedSizeDecoder<PermissionConfig>;
export declare function getPermissionConfigCodec(): FixedSizeCodec<PermissionConfigArgs, PermissionConfig>;
export declare function decodePermissionConfig<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<PermissionConfig, TAddress>;
export declare function decodePermissionConfig<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<PermissionConfig, TAddress>;
export declare function fetchPermissionConfig<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<Account<PermissionConfig, TAddress>>;
export declare function fetchMaybePermissionConfig<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<MaybeAccount<PermissionConfig, TAddress>>;
export declare function fetchAllPermissionConfig(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<Account<PermissionConfig>[]>;
export declare function fetchAllMaybePermissionConfig(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<MaybeAccount<PermissionConfig>[]>;
export declare function getPermissionConfigSize(): number;
