import { MessageType } from "@protobuf-ts/runtime";
import { SignatureScheme } from "./signature_scheme.js";
import { Bcs } from "./bcs.js";
export interface UserSignature {
    bcs?: Bcs;
    scheme?: SignatureScheme;
    signature: {
        oneofKind: "simple";
        simple: SimpleSignature;
    } | {
        oneofKind: "multisig";
        multisig: MultisigAggregatedSignature;
    } | {
        oneofKind: undefined;
    };
}
export interface SimpleSignature {
    scheme?: SignatureScheme;
    signature?: Uint8Array;
    publicKey?: Uint8Array;
}
export interface MultisigMemberPublicKey {
    scheme?: SignatureScheme;
    publicKey?: Uint8Array;
}
export interface MultisigMember {
    publicKey?: MultisigMemberPublicKey;
    weight?: number;
}
export interface MultisigCommittee {
    members: MultisigMember[];
    threshold?: number;
}
export interface MultisigAggregatedSignature {
    signatures: MultisigMemberSignature[];
    bitmap?: number;
    legacyBitmap?: Uint8Array;
    committee?: MultisigCommittee;
}
export interface MultisigMemberSignature {
    scheme?: SignatureScheme;
    signature?: Uint8Array;
}
export interface ValidatorCommittee {
    epoch?: bigint;
    members: ValidatorCommitteeMember[];
}
export interface ValidatorCommitteeMember {
    publicKey?: Uint8Array;
    weight?: bigint;
}
export interface ValidatorAggregatedSignature {
    epoch?: bigint;
    signatures: ValidatorAggregatedSignature_ValidatorSignature[];
    bitmap?: Uint8Array;
}
export interface ValidatorAggregatedSignature_ValidatorSignature {
    authorityIndex?: number;
    signature?: Uint8Array;
}
declare class UserSignature$Type extends MessageType<UserSignature> {
    constructor();
}
export declare const UserSignature: UserSignature$Type;
declare class SimpleSignature$Type extends MessageType<SimpleSignature> {
    constructor();
}
export declare const SimpleSignature: SimpleSignature$Type;
declare class MultisigMemberPublicKey$Type extends MessageType<MultisigMemberPublicKey> {
    constructor();
}
export declare const MultisigMemberPublicKey: MultisigMemberPublicKey$Type;
declare class MultisigMember$Type extends MessageType<MultisigMember> {
    constructor();
}
export declare const MultisigMember: MultisigMember$Type;
declare class MultisigCommittee$Type extends MessageType<MultisigCommittee> {
    constructor();
}
export declare const MultisigCommittee: MultisigCommittee$Type;
declare class MultisigAggregatedSignature$Type extends MessageType<MultisigAggregatedSignature> {
    constructor();
}
export declare const MultisigAggregatedSignature: MultisigAggregatedSignature$Type;
declare class MultisigMemberSignature$Type extends MessageType<MultisigMemberSignature> {
    constructor();
}
export declare const MultisigMemberSignature: MultisigMemberSignature$Type;
declare class ValidatorCommittee$Type extends MessageType<ValidatorCommittee> {
    constructor();
}
export declare const ValidatorCommittee: ValidatorCommittee$Type;
declare class ValidatorCommitteeMember$Type extends MessageType<ValidatorCommitteeMember> {
    constructor();
}
export declare const ValidatorCommitteeMember: ValidatorCommitteeMember$Type;
declare class ValidatorAggregatedSignature$Type extends MessageType<ValidatorAggregatedSignature> {
    constructor();
}
export declare const ValidatorAggregatedSignature: ValidatorAggregatedSignature$Type;
declare class ValidatorAggregatedSignature_ValidatorSignature$Type extends MessageType<ValidatorAggregatedSignature_ValidatorSignature> {
    constructor();
}
export declare const ValidatorAggregatedSignature_ValidatorSignature: ValidatorAggregatedSignature_ValidatorSignature$Type;
export {};
