/// <reference types="node" />
import { SocketType } from 'dgram';
import { TTransportLogger, ILogObject, TLogLevelName } from 'tslog';
export declare type AvailableKeys = Omit<ILogObject, 'toJSON' | 'stack'>;
export interface ITransporterOptions {
    /** Name of measurement */
    measurementName: string;
    /** Destination port */
    port: number;
    /** Destination host name or IP address */
    address: string;
    /** Type of socket - udp4 or udp6 */
    socketType: SocketType;
    /** Minimum logging level to transport - default 'debug' */
    minLevel?: TLogLevelName;
    /** List of field keys - If no keys are provided, the default ones will be used */
    fieldKeys?: Array<keyof AvailableKeys>;
    /** List of tag keys - with string value only - If keys are not specified, default ones will be used */
    tagKeys?: Array<keyof AvailableKeys>;
}
export interface ITransportProvider {
    minLevel: TLogLevelName;
    transportLogger: TTransportLogger<(message: ILogObject) => void>;
}
export declare class Transporter {
    private options;
    private socket;
    private readonly MATCH_SPECIAL_CHARS;
    private readonly MATCH_TWO_OR_MORE_SPACES;
    private readonly SKIP_SPACES_PATTERN;
    private readonly SKIP_SPACES_REPLACEMENT;
    private readonly DEFAULT_FIELD_KEYS;
    private readonly DEFAULT_TAG_KEYS;
    constructor(options: ITransporterOptions);
    /**
     * @returns Transport provider
     */
    getTransportProvider(): ITransportProvider;
    private transport;
    private prepareMessage;
    private prepareEntries;
    private errorIfOnlyOneListProvided;
}
