import type { PublicKey } from './publickey';
import { SignatureScheme } from './signature';
export declare const PRIVATE_KEY_SIZE = 32;
export declare const LEGACY_PRIVATE_KEY_SIZE = 64;
export type ExportedKeypair = {
    schema: SignatureScheme;
    privateKey: string;
};
export declare abstract class BaseSigner {
    abstract sign(bytes: Uint8Array): Promise<Uint8Array>;
    signMessage(bytes: Uint8Array): Promise<{
        signature: Uint8Array;
        bytes: Uint8Array;
    }>;
    signMessageWithHashed(bytes: Uint8Array): Promise<{
        signature: Uint8Array;
        bytes: Uint8Array;
    }>;
    toRoochAddress(): string;
    /**
     * Return the signature for the data.
     * Prefer the async verion {@link sign}, as this method will be deprecated in a future release.
     */
    abstract signData(data: Uint8Array): Uint8Array;
    /**
     * Get the key scheme of the keypair: Secp256k1 or ED25519
     */
    abstract getKeyScheme(): SignatureScheme;
    /**
     * The public key for this keypair
     */
    abstract getPublicKey(): PublicKey;
}
/**
 * TODO: Document
 */
export declare abstract class Keypair extends BaseSigner {
    abstract export(): ExportedKeypair;
}
