import { LogLevelDesc } from "loglevel";
export type SignatureFunction = (msg: unknown, pkey: Uint8Array) => Uint8Array;
export type VerifySignatureFunction = (msg: unknown, signature: Uint8Array, pubKey: Uint8Array) => boolean;
export type HashFunction = (data: unknown) => string;
export interface IJsObjectSignerOptions {
    privateKey: Uint8Array | string;
    signatureFunc?: SignatureFunction;
    verifySignatureFunc?: VerifySignatureFunction;
    hashFunc?: HashFunction;
    logLevel?: LogLevelDesc;
}
export declare class JsObjectSigner {
    readonly options: IJsObjectSignerOptions;
    private privateKey;
    private signatureFunc?;
    private verifySignatureFunc?;
    private hashFunc?;
    private readonly logger;
    constructor(options: IJsObjectSignerOptions);
    /**
     * Generate signature from formated message
     * @param msg
     * @returns Generated signature
     */
    sign(msg: unknown): Uint8Array;
    /**
     * Verify if a signature corresponds to given message and public key
     * @param msg
     * @param pubKey
     * @param signature
     * @returns {boolean}
     */
    verify(msg: unknown, signature: Uint8Array, pubKey: Uint8Array): boolean;
    /**
     * Format message to be signed
     * @param data
     * @returns {string}
     */
    dataHash(data: unknown): string;
}
