import { EthAddress } from '../utils/eth';
import { PrivateKeyBytes, Signature, Signer } from '../types';
/**
 * The default signer function that can be used for integrating with
 * other applications (e.g. wallets).
 *
 * @param data      The data to be signed
 * @param privateKey  The private key used for signing the data
 */
export declare function defaultSign(data: Uint8Array, privateKey: PrivateKeyBytes): Signature;
/**
 * Recovers the ethereum address from a given signature.
 *
 * Can be used for verifying a piece of data when the public key is
 * known.
 *
 * @param signature The signature
 * @param digest    The digest of the data
 *
 * @returns the recovered address
 */
export declare function recoverAddress(signature: Signature, digest: Uint8Array): EthAddress;
/**
 * Creates a singer object that can be used when the private key is known.
 *
 * @param privateKey The private key
 */
export declare function makePrivateKeySigner(privateKey: PrivateKeyBytes): Signer;
export declare function assertSigner(signer: unknown): asserts signer is Signer;
export declare function makeSigner(signer: Signer | Uint8Array | string | unknown): Signer;
export declare function sign(signer: Signer, data: Uint8Array): Promise<Signature>;
