import { EthAddressType, IENSParams, IResponseResponseInfo } from './types.js';
import BaseClass from './BaseClass.js';
export default class ENS extends BaseClass {
    private readonly ENSRoot;
    private Registrar;
    private Resolver;
    private ReverseResolver;
    /**
     * Store original requested Ethereum Name, as ethAddress could be transform to hex representation if needed
     */
    private ethAddressOriginal;
    private ethAddress;
    private ethAddressType;
    private resolveAddress;
    /**
     * @event
     */
    static EVENT_ETH_ADDRESS: string;
    /**
     * @event
     */
    static EVENT_ETH_ADDRESS_TYPE: string;
    /**
     * @event
     */
    static EVENT_SET_RESPONSE: string;
    constructor(params?: IENSParams);
    getEthAddressType(): EthAddressType;
    /**
     * Init with eth address
     *
     * @fires ENS.EVENT_ETH_NAME
     * @fires ENS.EVENT_ETH_NAME_TYPE
     */
    init(ethAddress: string): void;
    getInfo(): Promise<void>;
    /**
     * Get controller address.
     *
     * @fires ENS.EVENT_SET_RESPONSE
     * @type {object}
     * @property resultName {string} controllerResult
     *
     * @return Promise<Response>
     */
    getController(): Promise<IResponseResponseInfo>;
    /**
     * Get Registrar owner.
     *
     * @fires ENS.EVENT_SET_RESPONSE
     * @type {object}
     * @property resultName {string} registrarOwnerResult
     *
     * @return Promise<Response>
     */
    getOwner(): Promise<IResponseResponseInfo>;
    /**
     * Get name expiration date.
     *
     * @fires ENS.EVENT_SET_RESPONSE
     * @type {object}
     * @property resultName {string} nameExpires
     *
     * @return Promise<Response>
     */
    getExpirationDate(): Promise<IResponseResponseInfo>;
    /**
     * Get address
     *
     * @fires ENS.EVENT_SET_RESPONSE
     * @type {object}
     * @property resultName {string} resolverAddress
     *
     * @return Promise<Response>
     */
    getAddress(): Promise<IResponseResponseInfo>;
    /**
     * Get content hash
     *
     * @fires ENS.EVENT_SET_RESPONSE
     * @type {object}
     * @property resultName {string} resolverContentHash
     *
     * @return Promise<Response>
     */
    getContentHash(): Promise<IResponseResponseInfo>;
    /**
     * Get reverse record, e.g. name from address
     *
     * @fires ENS.EVENT_SET_RESPONSE
     * @type {object}
     * @property resultName {string} revertResolverResult
     *
     * @return Promise<Response>
     */
    getReverseRecord(): Promise<IResponseResponseInfo>;
    resolve(): Promise<IResponseResponseInfo>;
    private initRegistrar;
    private initResolver;
    private isNameRegistered;
    private sendResponse;
    private sendError;
    private extendResultWithAdditionalInfo;
}
