import { Configuration } from "../../configuration";
export declare type StatsDClientStat = string | string[];
export declare type StatsDClientTags = {
    [key: string]: string;
} | string[];
export declare type StatsDClientCallback = (err?: Error) => void;
export interface StatsDClientOptions {
    host?: string;
    port?: number;
    prefix?: string;
    suffix?: string;
    globalTags?: string[];
    additionalOptions?: {
        [key: string]: string;
    };
}
export interface StatsDClient {
    increment(stat: StatsDClientStat, value: number, sampleRate?: number, tags?: StatsDClientTags, callback?: StatsDClientCallback): void;
    timing(stat: StatsDClientStat, value: number, sampleRate?: number, tags?: StatsDClientTags, callback?: StatsDClientCallback): void;
    gauge(stat: StatsDClientStat, value: number, sampleRate?: number, tags?: StatsDClientTags, callback?: StatsDClientCallback): void;
    event?(stat: StatsDClientStat, text?: string, options?: {}, tags?: StatsDClientTags, callback?: StatsDClientCallback): void;
    close(callback: StatsDClientCallback): void;
}
/**
 * Factory to construct StatsDClient instances.
 */
export interface StatsDClientFactory {
    /**
     * Create a StatsDClient with the given options.
     * @param {StatsDClientOptions} url
     * @returns {HttpClient}
     */
    create(clientOptions: StatsDClientOptions): StatsDClient;
}
export declare function defaultStatsDClientOptions(configuration: Configuration): StatsDClientOptions;
export declare class HotShotStatsDClientFactory implements StatsDClientFactory {
    create(clientOptions: StatsDClientOptions): StatsDClient;
}
export declare class NodeStatsDClientFactory implements StatsDClientFactory {
    create(clientOptions: StatsDClientOptions): StatsDClient;
}
export declare const DefaultStatsDClientFactory: HotShotStatsDClientFactory;
//# sourceMappingURL=statsdClient.d.ts.map