import NamingService from './NamingService';
import { BlockhanNetworkUrlMap, NetworkIdMap, nodeHash } from './types';
import Contract from './utils/contract';
import { NamingServiceName, SourceDefinition, ResolutionMethod } from './publicTypes';
export declare abstract class EthereumNamingService extends NamingService {
    readonly name: NamingServiceName;
    protected readerContract: Contract;
    static readonly UrlMap: BlockhanNetworkUrlMap;
    static readonly NetworkNameMap: {
        mainnet: number;
        ropsten: number;
        rinkeby: number;
        goerli: number;
        kovan: number;
    };
    static readonly NetworkIdMap: NetworkIdMap;
    constructor(source: SourceDefinition | undefined, name: ResolutionMethod);
    protected abstract defaultRegistry(network: number): string | undefined;
    protected abstract readerAbi(): any;
    private networkFromUrl;
    protected normalizeSource(source: SourceDefinition): SourceDefinition;
    isSupportedNetwork(): boolean;
    childhash(parent: nodeHash, label: string): nodeHash;
    protected callMethod(contract: Contract, method: string, params: (string | string[])[]): Promise<any>;
    protected buildContract(abi: any, address: string): Contract;
    protected throwOwnershipError(domain: string, ownerPromise?: Promise<string | null>): Promise<void>;
}
