/*!
 * Copyright (C) Microsoft Corporation. All rights reserved.
 */
export type AppLoadClientState = 'healthy' | 'unhealthy' | 'throttled' | 'unknown';
export type AppLoadResult = 'optimal' | 'other';
export type AppLoadNonOptimalReason = 'interactionRequired' | 'throttled' | 'screenNavigatedAway' | 'other';
export type AppType = 'CodeApp';
export type AppLoadUnsuccessfulReason = 'AppConnectionsFailed' | 'AppForbidden' | 'AppForbiddenAppIsInQuarantine' | 'AppForbiddenPlansIssue' | 'AppIsPackaging' | 'AppLoadFailed' | 'AppNotFound' | 'CookiesBlocked' | 'InvokeScriptBlocked' | 'NetworkError' | 'PlatformError' | 'PopupError' | 'ProxyError' | 'StorageBlocked' | 'Unknown' | 'UserCancelAppConnections' | 'UserCancelled' | 'UserNotLoggedIn' | 'UserUnauthorized' | 'UserUnsupportedAppVersion' | 'UserUnsupportedBrowser';
export type SessionLoadSummaryMetricData = {
    /** Whether this app launch was successful */
    successfulAppLaunch: boolean;
    /** The reason the app launch was not successful */
    unsuccessfulReason?: AppLoadUnsuccessfulReason;
    /** The type of state the client loaded in. */
    appLoadClientState: AppLoadClientState;
    /** The type of app load */
    appLoadResult: AppLoadResult;
    /** The reason the app load was not considered optimal */
    appLoadNonOptimalReason?: AppLoadNonOptimalReason;
    /** The type of app */
    appType?: AppType;
    /** Time in milliseconds for the app to become interactive */
    timeToAppInteractive?: number;
    /** Date this app was last published */
    lastPublishedDate?: string;
};
export type SessionLoadSummaryMetric = {
    type: 'sessionLoadSummary';
    data: SessionLoadSummaryMetricData;
};
export type NetworkRequestMetricData = {
    /** The URL of the network request */
    url: string;
    /** The HTTP method of the request */
    method: string;
    /** The status code of the response */
    statusCode: number;
    /** The time taken for the request in milliseconds */
    duration: number;
    /** The size of the response in bytes */
    responseSize?: number;
};
export type NetworkRequestMetric = {
    type: 'networkRequest';
    data: NetworkRequestMetricData;
};
export type DataRequestsSummaryMetricData = {
    /** Total number of data requests made */
    totalDataRequests: number;
    /** Number of failed data requests */
    failedDataRequests: number;
    /** Breakdown of failures by type */
    failureCountsByType: Record<string, number>;
    /** Optional latency data in milliseconds */
    dataRequestsLatency?: number;
    /** User agent string */
    userAgent?: string;
    /** Current client state */
    clientState?: string;
    /** When the app was last published */
    lastPublishedDate?: string;
    /** Type of app ('CodeApp') */
    appType?: AppType;
};
export type DataRequestsSummaryMetric = {
    type: 'dataRequestsSummary';
    data: DataRequestsSummaryMetricData;
};
export type Metric = SessionLoadSummaryMetric | NetworkRequestMetric | DataRequestsSummaryMetric;
//# sourceMappingURL=Metrics.d.ts.map