import { azureCloudEndpoint, environmentType } from '../../internal';
import { TokenProvider } from '../Network';
export declare class TelemetryConfig {
    /**
     * The tenant (directory) ID of the Azure AD application registration.
     */
    tenantId: string;
    /**
     * The client ID of the application.
     */
    clientId: string;
    /**
     * The client secret of the application.
     */
    secret: string;
    /**
     * User geographic info.
     */
    region: string;
    /**
     * Whether to remove all log information that may contain user content,
     * including corpus path and error/warning messages.
     * Note: This property could be removed in the if the compliance issue gets resolved.
     */
    removeUserContent: boolean;
    /**
     * Kusto (ADX) cluster name.
     */
    kustoClusterName: string;
    /**
     * Kusto database name.
     */
    kustoDatabaseName: string;
    /**
     * Default Kusto database log table names.
     */
    private readonly cdmInfoLogTable;
    private readonly cdmWarningLogTable;
    private readonly cdmErrorLogTable;
    /**
     * Kusto table for informational logs.
     */
    kustoInfoLogTable: string;
    /**
     * Kusto table for warning logs.
     */
    kustoWarningLogTable: string;
    /**
     * Kusto table for error logs.
     */
    kustoErrorLogTable: string;
    /**
     * Azure cloud instance.
     */
    cloudInstance: azureCloudEndpoint;
    /**
     * The level of detail to be logged into the Kusto database.
     */
    ingestAtLevel: environmentType;
    /**
     * The user-defined token provider..
     */
    tokenProvider: TokenProvider;
    /**
     * The client AAD App context.
     */
    private context;
    /**
     * Constructs a telemetry configuration with user-defined token provider.
     */
    constructor(ingestAtLevel: environmentType, region: string, removeUserContent: boolean, tokenProvider: TokenProvider);
    /**
     * Constructs a telemetry configuration with the credentials for user-defined Kusto cluster and table names.
     */
    constructor(ingestAtLevel: environmentType, region: string, removeUserContent: boolean, tenantId: string, clientId: string, secret: string, clusterName: string, databaseName: string, cloudInstance?: azureCloudEndpoint);
    /**
     * Constructs a telemetry configuration with the credentials for a Kusto cluster with default table names.
     */
    constructor(ingestAtLevel: environmentType, region: string, removeUserContent: boolean, tenantId: string, clientId: string, secret: string, clusterName: string, databaseName: string, cloudInstance: azureCloudEndpoint, infoTable: string, warningTable: string, errorTable: string);
    /**
     * @internal
     * Get the authentication token either using AAD App credentials or user-defined token provider.
     * @returns An authentication token.
     */
    getAuthenticationToken(): Promise<string>;
    /**
     * Build context when users make the first call. Need to ensure client Id, tenant and secret are not null.
     */
    private buildContext;
    /**
     * Generate a Bearer token for accessing the Kusto resource using MSAL.
     * @returns The authentication result.
     */
    private generateKustoToken;
}
