/**
 * @module botbuilder
 */
/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */
/**
 * Defines the level of severity for the event.
 */
export declare enum Severity {
    Verbose = 0,
    Information = 1,
    Warning = 2,
    Error = 3,
    Critical = 4
}
/**
 * Key used to store and fetch a [BotTelemetryClient](xref:botbuilder-core.BotTelemetryClient) from [TurnContext.turnState](xref:botbuilder-core.TurnContextStateCollection)
 */
export declare const BotTelemetryClientKey = "BotTelemetryClient";
export interface BotTelemetryClient {
    trackDependency(telemetry: TelemetryDependency): any;
    trackEvent(telemetry: TelemetryEvent): any;
    trackException(telemetry: TelemetryException): any;
    trackTrace(telemetry: TelemetryTrace): any;
    flush(): any;
}
export interface BotPageViewTelemetryClient {
    trackPageView(telemetry: TelemetryPageView): any;
}
export interface TelemetryDependency {
    dependencyTypeName: string;
    target: string;
    name: string;
    data: string;
    duration: number;
    success: boolean;
    resultCode: number;
}
export interface TelemetryEvent {
    name: string;
    properties?: {
        [key: string]: any;
    };
    metrics?: {
        [key: string]: number;
    };
}
export interface TelemetryException {
    exception: Error;
    handledAt?: string;
    properties?: {
        [key: string]: string;
    };
    measurements?: {
        [key: string]: number;
    };
    severityLevel?: Severity;
}
export interface TelemetryTrace {
    message: string;
    properties?: {
        [key: string]: string;
    };
    severityLevel?: Severity;
}
export interface TelemetryPageView {
    name: string;
    properties?: {
        [key: string]: string;
    };
    metrics?: {
        [key: string]: number;
    };
}
/**
 * A null bot telemetry client that implements [BotTelemetryClient](xref:botbuilder-core.BotTelemetryClient).
 */
export declare class NullTelemetryClient implements BotTelemetryClient, BotPageViewTelemetryClient {
    /**
     * Creates a new instance of the [NullTelemetryClient](xref:botbuilder-core.NullTelemetryClient) class.
     *
     * @param _settings Optional. Settings for the telemetry client.
     */
    constructor(_settings?: any);
    /**
     * Logs an Application Insights page view.
     *
     * @param _telemetry An object implementing [TelemetryPageView](xref:botbuilder-core.TelemetryPageView).
     */
    trackPageView(_telemetry: TelemetryPageView): void;
    /**
     * Sends information about an external dependency (outgoing call) in the application.
     *
     * @param _telemetry An object implementing [TelemetryDependency](xref:botbuilder-core.TelemetryDependency).
     */
    trackDependency(_telemetry: TelemetryDependency): void;
    /**
     * Logs custom events with extensible named fields.
     *
     * @param _telemetry An object implementing [TelemetryEvent](xref:botbuilder-core.TelemetryEvent).
     */
    trackEvent(_telemetry: TelemetryEvent): void;
    /**
     * Logs a system exception.
     *
     * @param _telemetry An object implementing [TelemetryException](xref:botbuilder-core.TelemetryException).
     */
    trackException(_telemetry: TelemetryException): void;
    /**
     * Sends a trace message.
     *
     * @param _telemetry An object implementing [TelemetryTrace](xref:botbuilder-core.TelemetryTrace).
     */
    trackTrace(_telemetry: TelemetryTrace): void;
    /**
     * Flushes the in-memory buffer and any metrics being pre-aggregated.
     */
    flush(): void;
}
/**
 * Logs a DialogView using the [trackPageView](xref:botbuilder-core.BotTelemetryClient.trackPageView) method on the [BotTelemetryClient](xref:botbuilder-core.BotTelemetryClient) if [BotPageViewTelemetryClient](xref:botbuilder-core.BotPageViewTelemetryClient) has been implemented.
 * Alternatively logs the information out via TrackTrace.
 *
 * @param telemetryClient TelemetryClient that implements [BotTelemetryClient](xref:botbuilder-core.BotTelemetryClient).
 * @param dialogName Name of the dialog to log the entry / start for.
 * @param properties Named string values you can use to search and classify events.
 * @param metrics Measurements associated with this event.
 */
export declare function telemetryTrackDialogView(telemetryClient: BotTelemetryClient, dialogName: string, properties?: {
    [key: string]: any;
}, metrics?: {
    [key: string]: number;
}): void;
//# sourceMappingURL=botTelemetryClient.d.ts.map
