/*
 * Microsoft.ApplicationInsights, 2.8.19-nightly.240329-02
 * Copyright (c) Microsoft and contributors. All rights reserved.
 *
 * Microsoft Application Insights Team
 * https://github.com/microsoft/ApplicationInsights-JS#readme
 *
 * ---------------------------------------------------------------------------
 * This is a single combined (rollup) declaration file for the package,
 * use this version if your build environment doesn't support the using the
 * individual *.d.ts files or default namespace wrapped version.
 * - Namespaced version: applicationinsights-web-basic.d.ts
 * ---------------------------------------------------------------------------
 */

import { AppInsightsCore } from '@microsoft/applicationinsights-core-js';
import { arrForEach } from '@microsoft/applicationinsights-core-js';
import { CoreUtils } from '@microsoft/applicationinsights-core-js';
import { _eInternalMessageId } from '@microsoft/applicationinsights-core-js';
import { eSeverityLevel } from '@microsoft/applicationinsights-common';
import { IAppInsightsCore } from '@microsoft/applicationinsights-core-js';
import { IAutoExceptionTelemetry } from '@microsoft/applicationinsights-common';
import { IConfig } from '@microsoft/applicationinsights-common';
import { IConfiguration } from '@microsoft/applicationinsights-core-js';
import { IDependencyTelemetry } from '@microsoft/applicationinsights-common';
import { IEventTelemetry } from '@microsoft/applicationinsights-common';
import { ILoadedPlugin } from '@microsoft/applicationinsights-core-js';
import { IMetricTelemetry } from '@microsoft/applicationinsights-common';
import { _InternalMessageId } from '@microsoft/applicationinsights-core-js';
import { IPageViewPerformanceTelemetry } from '@microsoft/applicationinsights-common';
import { IPageViewTelemetry } from '@microsoft/applicationinsights-common';
import { IPlugin } from '@microsoft/applicationinsights-core-js';
import { isNullOrUndefined } from '@microsoft/applicationinsights-core-js';
import { ITelemetryItem } from '@microsoft/applicationinsights-core-js';
import { ITelemetryPlugin } from '@microsoft/applicationinsights-core-js';
import { ITraceTelemetry } from '@microsoft/applicationinsights-common';
import { proxyFunctions } from '@microsoft/applicationinsights-core-js';
import { Sender } from '@microsoft/applicationinsights-channel-js';
import { SendRequestReason } from '@microsoft/applicationinsights-core-js';
import { SeverityLevel } from '@microsoft/applicationinsights-common';
import { throwError } from '@microsoft/applicationinsights-core-js';
import { UnloadHandler } from '@microsoft/applicationinsights-core-js';

export { AppInsightsCore }

/**
 * @export
 * @class ApplicationInsights
 */
export declare class ApplicationInsights {
    config: IConfiguration & IConfig;
    /**
     * Creates an instance of ApplicationInsights.
     * @param {IConfiguration & IConfig} config
     * @memberof ApplicationInsights
     */
    constructor(config: IConfiguration & IConfig);
    /**
     * Initialize this instance of ApplicationInsights
     *
     * @memberof ApplicationInsights
     */
    initialize(): void;
    /**
     * Send a manually constructed custom event
     *
     * @param {ITelemetryItem} item
     * @memberof ApplicationInsights
     */
    track(item: ITelemetryItem): void;
    /**
     * Immediately send all batched telemetry
     * @param {boolean} [async=true]
     * @memberof ApplicationInsights
     */
    flush(async?: boolean): void;
    pollInternalLogs(): void;
    stopPollingInternalLogs(): void;
    getSKUDefaults(): void;
    /**
     * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered
     * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous
     * unload call return `true` stating that all plugins reported that they also unloaded, the recommended
     * approach is to create a new instance and initialize that instance.
     * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable
     * to successfully remove any global references or they may just be completing the unload process asynchronously.
     */
    unload(isAsync?: boolean, unloadComplete?: () => void): void;
    /**
     * Find and return the (first) plugin with the specified identifier if present
     * @param pluginIdentifier
     */
    getPlugin<T extends IPlugin = IPlugin>(pluginIdentifier: string): ILoadedPlugin<T>;
    /**
     * Add a new plugin to the installation
     * @param plugin - The new plugin to add
     * @param replaceExisting - should any existing plugin be replaced
     * @param doAsync - Should the add be performed asynchronously
     */
    addPlugin<T extends IPlugin = ITelemetryPlugin>(plugin: T, replaceExisting: boolean, doAsync: boolean, addCb?: (added?: boolean) => void): void;
    /**
     * Returns the unique event namespace that should be used
     */
    evtNamespace(): string;
    /**
     * Add an unload handler that will be called when the SDK is being unloaded
     * @param handler - the handler
     */
    addUnloadCb(handler: UnloadHandler): void;
}

export { arrForEach }

export { CoreUtils }

export { _eInternalMessageId }

export { eSeverityLevel }

export { IAppInsightsCore }

export { IAutoExceptionTelemetry }

export { IConfiguration }

export { IDependencyTelemetry }

export { IEventTelemetry }

export { ILoadedPlugin }

export { IMetricTelemetry }

export { _InternalMessageId }

export { IPageViewPerformanceTelemetry }

export { IPageViewTelemetry }

export { IPlugin }

export { isNullOrUndefined }

export { ITelemetryItem }

export { ITelemetryPlugin }

export { ITraceTelemetry }

export { proxyFunctions }

export { Sender }

export { SendRequestReason }

export { SeverityLevel }

export { throwError }

export { }