import { bcs } from "../bcs/index.js";
import type { Signer } from "../cryptography/keypair.js";
import { PublicKey } from "../cryptography/publickey.js";
import type { SignatureScheme } from "../cryptography/signature-scheme.js";
import { MultiSigSigner } from "./signer.js";
type ParsedPartialMultiSigSignature = {
    signatureScheme: SignatureScheme;
    signature: Uint8Array;
    publicKey: PublicKey;
    weight: number;
};
export declare const MAX_SIGNER_IN_MULTISIG = 10;
export declare const MIN_SIGNER_IN_MULTISIG = 1;
export type MultiSigPublicKeyStruct = ReturnType<typeof bcs.MultiSigPublicKey.parse>;
export type MultiSigStruct = ReturnType<typeof bcs.MultiSig.parse>;
export type CompressedSignature = ReturnType<typeof bcs.CompressedSignature.parse>;
export type PublicKeyEnum = ReturnType<typeof bcs.PublicKey.parse>;
export declare class MultiSigPublicKey extends PublicKey {
    private rawBytes;
    private multisigPublicKey;
    private publicKeys;
    constructor(value: string | Uint8Array | MultiSigPublicKeyStruct);
    static fromPublicKeys({ threshold, publicKeys, }: {
        threshold: number;
        publicKeys: {
            publicKey: PublicKey;
            weight: number;
        }[];
    }): MultiSigPublicKey;
    equals(publicKey: MultiSigPublicKey): boolean;
    toRawBytes(): Uint8Array<ArrayBuffer>;
    getPublicKeys(): {
        weight: number;
        publicKey: PublicKey;
    }[];
    getThreshold(): any;
    getSigner(...signers: [signer: Signer]): MultiSigSigner;
    toWAddress(): string;
    flag(): number;
    verify(message: Uint8Array, multisigSignature: string): Promise<boolean>;
    combinePartialSignatures(signatures: string[]): string;
}
export declare function parsePartialSignatures(multisig: MultiSigStruct): ParsedPartialMultiSigSignature[];
export {};
