import * as plugins from './plugins.js';
export type TDnsProvider = 'google' | 'cloudflare';
export declare const makeNodeProcessUseDnsProvider: (providerArg: TDnsProvider) => void;
export interface ISmartDnsConstructorOptions {
}
export interface IDnsJsonResponse {
    Status: number;
    TC: boolean;
    RD: boolean;
    RA: boolean;
    AD: boolean;
    CD: boolean;
    Question: Array<{
        name: string;
        type: number;
    }>;
    Answer: Array<{
        name: string;
        type: number;
        TTL: number;
        data: string;
    }>;
    Additional: [];
    Comment: string;
}
/**
 * class dnsly offers methods for working with dns from a dns provider like Google DNS
 */
export declare class Smartdns {
    dnsServerIp: string;
    dnsServerPort: number;
    dnsTypeMap: {
        [key: string]: number;
    };
    /**
     * constructor for class dnsly
     */
    constructor(optionsArg: ISmartDnsConstructorOptions);
    /**
     * check a dns record until it has propagated to Google DNS
     * should be considerably fast
     * @param recordNameArg
     * @param recordTypeArg
     * @param expectedValue
     */
    checkUntilAvailable(recordNameArg: string, recordTypeArg: plugins.tsclass.network.TDnsRecordType, expectedValue: string, cyclesArg?: number, intervalArg?: number): Promise<boolean>;
    /**
     * get A Dns Record
     */
    getRecordsA(recordNameArg: string): Promise<plugins.tsclass.network.IDnsRecord[]>;
    /**
     * get AAAA Record
     */
    getRecordsAAAA(recordNameArg: string): Promise<plugins.tsclass.network.IDnsRecord[]>;
    /**
     * gets a txt record
     */
    getRecordsTxt(recordNameArg: string): Promise<plugins.tsclass.network.IDnsRecord[]>;
    getRecords(recordNameArg: string, recordTypeArg: plugins.tsclass.network.TDnsRecordType, retriesCounterArg?: number): Promise<plugins.tsclass.network.IDnsRecord[]>;
    /**
     * gets a record using nodejs dns resolver
     */
    getRecordWithNodeDNS(recordNameArg: string, recordTypeArg: plugins.tsclass.network.TDnsRecordType): Promise<plugins.tsclass.network.IDnsRecord[]>;
    getNameServers(domainNameArg: string): Promise<string[]>;
    convertDnsTypeNameToTypeNumber(dnsTypeNameArg: string): number;
    convertDnsTypeNumberToTypeName(dnsTypeNumberArg: number): plugins.tsclass.network.TDnsRecordType;
}
