import { AddressValidation, SignedTx, TypedMessage, UnsignedTx } from '../../../types/provider';
import { Signer, Verifier } from '../../../types/secret';
import { BaseProvider } from '../../abc';
import { Geth } from './geth';
declare class Provider extends BaseProvider {
    get geth(): Promise<Geth>;
    get chainId(): number;
    verifyAddress(address: string): Promise<AddressValidation>;
    pubkeyToAddress(verifier: Verifier, encoding: string | undefined): Promise<string>;
    buildUnsignedTx(unsignedTx: UnsignedTx): Promise<UnsignedTx>;
    signTransaction(unsignedTx: UnsignedTx, signers: {
        [address: string]: Signer;
    }): Promise<SignedTx>;
    private buildEtherUnSignedTx;
    signMessage(message: TypedMessage, signer: Signer, address?: string): Promise<string>;
    verifyMessage(address: string, message: TypedMessage, signature: string): Promise<boolean>;
    ecRecover(message: TypedMessage, signature: string): Promise<string>;
    mmDecrypt(serializedMessage: string, signer: Signer): Promise<string>;
    mmGetPublicKey(signer: Signer): Promise<string>;
    hardwareGetXpubs(paths: string[], showOnDevice: boolean): Promise<{
        path: string;
        xpub: string;
    }[]>;
    hardwareGetAddress(path: string, showOnDevice: boolean, addressToVerify?: string): Promise<string>;
    hardwareSignTransaction(unsignedTx: UnsignedTx, signers: Record<string, string>): Promise<SignedTx>;
    hardwareSignMessage(message: TypedMessage, signer: string): Promise<string>;
    hardwareVerifyMessage(address: string, message: TypedMessage, signature: string): Promise<boolean>;
}
export { Provider };
