import type { PublicNonces } from "../types";
import { Key, SchnorrSignature } from "../types";
import type { HashFunction } from "../core/types";
import type { SignatureOutput } from "../types/signature";
import { FinalPublicNonce } from "../types/signature";
export declare class Schnorrkel {
    #private;
    private markNonceAsUsed;
    private isNonceUsed;
    resetUsedNonces(): void;
    private _setNonce;
    private _restoreNonce;
    private clearNonces;
    private getMappedPublicNonces;
    private getMappedNonces;
    private getMultisigOutput;
    static getCombinedPublicKey(publicKeys: Key[]): Key;
    static getCombinedAddress(publicKeys: Key[]): string;
    generatePublicNonces(privateKey: Key): PublicNonces;
    restorePublicNonces(privateKey: Key, kPrivateKey: Key, kTwoPrivateKey: Key): PublicNonces;
    getPublicNonces(privateKey: Key): PublicNonces;
    hasNonce(privateKey: Key): boolean;
    multiSigSign(privateKey: Key, msg: string, publicKeys: Key[], publicNonces: PublicNonces[], hashFn?: HashFunction): SignatureOutput;
    multiSigSignHash(privateKey: Key, hash: string, publicKeys: Key[], publicNonces: PublicNonces[]): SignatureOutput;
    static sign(privateKey: Key, msg: string, hashFn?: HashFunction): SignatureOutput;
    static signHash(privateKey: Key, hash: string): SignatureOutput;
    static sumSigs(signatures: SchnorrSignature[]): SchnorrSignature;
    static verify(signature: SchnorrSignature, msg: string, finalPublicNonce: FinalPublicNonce, publicKey: Key, hashFn?: HashFunction): boolean;
    static verifyHash(signature: SchnorrSignature, hash: string, finalPublicNonce: FinalPublicNonce, publicKey: Key): boolean;
}
