import { Signer } from 'ethers';
import { ErrorParams } from './errors/Errors';
import { Arrayish } from 'ethers/utils';
export interface PublicKey {
    key: string;
    type: string;
    signingMethod: string;
}
/**
 * Thrown when an invalid address is given
 */
export declare class InvalidSignerModuleParamsError extends Error {
    constructor({ message }?: ErrorParams);
}
/**
 * Interface for a signer. This object should be able to sign message and export its public key.
 */
export interface SignerModuleInterface {
    getPublicKey(): Promise<PublicKey>;
    signMessage(message: Arrayish | string): Promise<string>;
}
export declare class SignerModule implements SignerModuleInterface {
    private readonly publicKey?;
    private readonly getPublicKeyFunction?;
    private readonly signMessageFunction;
    constructor(params: {
        publicKey?: PublicKey;
        getPublicKey?: () => Promise<PublicKey>;
        signMessage: (message: string) => Promise<string>;
    } | Signer);
    static isSignerModule(value: any): value is SignerModuleInterface;
    getPublicKey(): Promise<PublicKey>;
    signMessage(message: string): Promise<string>;
}
