import { Address, Codec, Decoder, Encoder, GetDiscriminatedUnionVariant, GetDiscriminatedUnionVariantContent, ReadonlyUint8Array } from '@solana/kit';
import { PermissionSigner, PermissionSignerArgs } from '.';
export type PermissionMessage = {
    __kind: "V1";
    nonce: bigint;
    consumerProgram: Address;
    permissionSigner: PermissionSigner;
    permissionSubject: Address;
    validUntil: bigint;
    permissionType: number;
    instructionDiscriminators: Array<ReadonlyUint8Array>;
};
export type PermissionMessageArgs = {
    __kind: "V1";
    nonce: number | bigint;
    consumerProgram: Address;
    permissionSigner: PermissionSignerArgs;
    permissionSubject: Address;
    validUntil: number | bigint;
    permissionType: number;
    instructionDiscriminators: Array<ReadonlyUint8Array>;
};
export declare function getPermissionMessageEncoder(): Encoder<PermissionMessageArgs>;
export declare function getPermissionMessageDecoder(): Decoder<PermissionMessage>;
export declare function getPermissionMessageCodec(): Codec<PermissionMessageArgs, PermissionMessage>;
export declare function permissionMessage(kind: "V1", data: GetDiscriminatedUnionVariantContent<PermissionMessageArgs, "__kind", "V1">): GetDiscriminatedUnionVariant<PermissionMessageArgs, "__kind", "V1">;
export declare function isPermissionMessage<K extends PermissionMessage["__kind"]>(kind: K, value: PermissionMessage): value is PermissionMessage & {
    __kind: K;
};
