import { DataBoundary } from "../../account/AccountInfo.js";
/**
 * State of the performance event.
 *
 * @export
 * @enum {number}
 */
export declare const PerformanceEventStatus: {
    readonly NotStarted: 0;
    readonly InProgress: 1;
    readonly Completed: 2;
};
export type PerformanceEventStatus = (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus];
export type SubMeasurement = {
    name: string;
    startTimeMs: number;
};
/**
 * Performance measurement taken by the library, including metadata about the request and application.
 *
 * @export
 * @typedef {PerformanceEvent}
 */
export type PerformanceEvent = {
    /**
     * Unique id for the event
     *
     * @type {string}
     */
    eventId: string;
    /**
     * State of the perforance measure.
     *
     * @type {PerformanceEventStatus}
     */
    status: PerformanceEventStatus;
    /**
     * Login authority used for the request
     *
     * @type {string}
     */
    authority: string;
    /**
     * Client id for the application
     *
     * @type {string}
     */
    clientId: string;
    /**
     * Correlation ID used for the request
     *
     * @type {string}
     */
    correlationId: string;
    /**
     * End-to-end duration in milliseconds.
     * @date 3/22/2022 - 3:40:05 PM
     *
     * @type {number}
     */
    durationMs?: number;
    /**
     * Visibility of the page when the event completed.
     * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API
     *
     * @type {?(string | null)}
     */
    endPageVisibility?: string | null;
    /**
     * Whether the result was retrieved from the cache.
     *
     * @type {(boolean | null)}
     */
    fromCache?: boolean | null;
    /**
     * Event name (usually in the form of classNameFunctionName)
     *
     * @type {string}
     */
    name: string;
    /**
     * Visibility of the page when the event completed.
     * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API
     *
     * @type {?(string | null)}
     */
    startPageVisibility?: string | null;
    /**
     * Online status when the event started.
     * Read from: https://developer.mozilla.org/docs/Web/API/NavigatorOnLine/onLine
     */
    startOnlineStatus?: boolean | null;
    /**
     * Unix millisecond timestamp when the event was initiated.
     *
     * @type {number}
     */
    startTimeMs: number;
    /**
     * Whether or the operation completed successfully.
     *
     * @type {(boolean | null)}
     */
    success?: boolean | null;
    /**
     * Add specific error code in case of failure
     *
     * @type {string}
     */
    errorCode?: string;
    /**
     * Add specific sub error code in case of failure
     *
     * @type {string}
     */
    subErrorCode?: string;
    /**
     * Server error number
     */
    serverErrorNo?: string;
    /**
     * Server sub error number
     */
    serverSubErrorNo?: string;
    /**
     * Name of the library used for the operation.
     *
     * @type {string}
     */
    libraryName: string;
    /**
     * Version of the library used for the operation.
     *
     * @type {string}
     */
    libraryVersion: string;
    /**
     * Version of the library used last. Used to track upgrades and downgrades
     */
    previousLibraryVersion?: string;
    /**
     * Whether the response is from a native component (e.g., WAM)
     *
     * @type {?boolean}
     */
    isNativeBroker?: boolean;
    /**
     * Platform-specific fields, when calling STS and/or broker for token requests
     */
    isPlatformAuthorizeRequest?: boolean;
    isPlatformBrokerRequest?: boolean;
    brokerErrorName?: string;
    brokerErrorCode?: string;
    /**
     * Request ID returned from the response
     *
     * @type {?string}
     */
    requestId?: string;
    /**
     * Cache lookup policy
     *
     * @type {?number}
     */
    cacheLookupPolicy?: number | undefined;
    /**
     * Cache Outcome
     * @type {?number}
     */
    cacheOutcome?: number;
    /**
     * Sub-measurements for internal use. To be deleted before flushing.
     */
    incompleteSubMeasurements?: Map<string, SubMeasurement>;
    visibilityChangeCount?: number;
    onlineStatusChangeCount?: number;
    incompleteSubsCount?: number;
    /**
     * Network connection info from the Network Information API (Chromium only).
     * Read from: https://developer.mozilla.org/docs/Web/API/NetworkInformation
     */
    networkEffectiveType?: string;
    networkRtt?: number;
    /**
     * CorrelationId of the in progress iframe request that was awaited
     */
    awaitIframeCorrelationId?: string;
    /**
     * Monitor_window_timeout debugging telemetry
     */
    redirectBridgeTimeoutMs?: number;
    isRedirectUriCrossOrigin?: boolean;
    redirectBridgeMessageVersion?: number;
    lateResponseExperimentEnabled?: boolean;
    /**
     * Size of the id token
     *
     * @type {number}
     */
    idTokenSize?: number;
    /**
     *
     * Size of the access token
     *
     * @type {number}
     */
    accessTokenSize?: number;
    /**
     *
     * Size of the refresh token
     *
     * @type {number}
     */
    refreshTokenSize?: number | undefined;
    /**
     * Application name as specified by the app.
     *
     * @type {?string}
     */
    appName?: string;
    /**
     * Application version as specified by the app.
     *
     * @type {?string}
     */
    appVersion?: string;
    /**
     * The following are fields that may be emitted in native broker scenarios
     */
    extensionId?: string;
    extensionVersion?: string;
    matsBrokerVersion?: string;
    matsAccountJoinOnStart?: string;
    matsAccountJoinOnEnd?: string;
    matsDeviceJoin?: string;
    matsPromptBehavior?: string;
    matsApiErrorCode?: number;
    matsUiVisible?: boolean;
    matsSilentCode?: number;
    matsSilentBiSubCode?: number;
    matsSilentMessage?: string;
    matsSilentStatus?: number;
    matsHttpStatus?: number;
    matsHttpEventCount?: number;
    /**
     * Http POST metadata
     */
    httpVerToken?: string;
    httpStatus?: number;
    contentTypeHeader?: string;
    contentLengthHeader?: string;
    /**
     * Platform broker fields
     */
    allowPlatformBroker?: boolean;
    extensionInstalled?: boolean;
    extensionHandshakeTimeoutMs?: number;
    extensionHandshakeTimedOut?: boolean;
    /**
     * Nested App Auth Fields
     */
    nestedAppAuthRequest?: boolean;
    /**
     * Multiple matched access/id/refresh tokens in the cache
     */
    multiMatchedAT?: number;
    multiMatchedID?: number;
    multiMatchedRT?: number;
    errorName?: string;
    errorStack?: string[];
    context?: string;
    cacheLocation?: string;
    cacheRetentionDays?: number;
    accountCachedBy?: string;
    acntLoggedOut?: boolean;
    cacheMatchedAccounts?: number;
    cacheRtCount?: number;
    cacheIdCount?: number;
    cacheAtCount?: number;
    scenarioId?: string;
    accountType?: "AAD" | "MSA" | "B2C";
    /**
     * Server error that triggers a request retry
     *
     * @type {string}
     */
    retryError?: string;
    embeddedClientId?: string;
    embeddedRedirectUri?: string;
    isAsyncPopup?: boolean;
    cacheRtExpiresOnSeconds?: number;
    ntwkRtExpiresOnSeconds?: number;
    extRtExpiresOnSeconds?: number;
    rtOffsetSeconds?: number;
    sidFromClaim?: boolean;
    sidFromClaims?: boolean;
    sidFromRequest?: boolean;
    loginHintFromRequest?: boolean;
    loginHintFromUpn?: boolean;
    loginHintFromClaim?: boolean;
    domainHintFromRequest?: boolean;
    prompt?: string;
    usePreGeneratedPkce?: boolean;
    msalInstanceCount?: number;
    sameClientIdInstanceCount?: number;
    navigateCallbackResult?: boolean;
    dataBoundary?: DataBoundary;
    logs?: string;
    isMcp?: boolean;
    /**
     * Source of cloud discovery metadata (config, cache, network, hardcoded_values)
     */
    cloudDiscoverySource?: string;
    /**
     * Source of authority endpoint metadata (config, cache, network, hardcoded_values)
     */
    authorityEndpointSource?: string;
    /**
     * Number of accounts removed during cache cleanup
     */
    accountsRemoved?: number;
    /**
     * Number of access tokens removed during cache cleanup
     */
    accessTokensRemoved?: number;
    /**
     * Number of failures when removing token binding keys
     */
    removeTokenBindingKeyFailure?: number;
    /**
     * Reason for silent refresh fallback to iframe
     * Format: errorCode or errorCode|subError
     *
     * @type {?string}
     */
    silentRefreshReason?: string;
    /**
     * Whether this request was deduped with another in-flight request
     */
    deduped?: boolean;
    /**
     * Whether the user has "Keep Me Signed In" enabled
     */
    kmsi?: boolean;
    /**
     * Cached SSO capability status from the most recent SSO verification
     */
    ssoCapable?: boolean;
    /**
     * Whether this event was executed in the background
     */
    isBackground?: boolean;
    /**
     * Cache migration telemetry — pre-migration counts
     */
    preMigrateAcntCount?: number;
    preMigrateATCount?: number;
    preMigrateITCount?: number;
    preMigrateRTCount?: number;
    /**
     * Cache migration telemetry — post-migration counts
     */
    postMigrateAcntCount?: number;
    postMigrateATCount?: number;
    postMigrateITCount?: number;
    postMigrateRTCount?: number;
    /**
     * Cache migration telemetry — old schema counts
     */
    oldAcntCount?: number;
    oldATCount?: number;
    oldITCount?: number;
    oldRTCount?: number;
    /**
     * Cache migration telemetry — skipped and migrated counts
     */
    skipATMigrateCount?: number;
    skipITMigrateCount?: number;
    skipRTMigrateCount?: number;
    migratedATCount?: number;
    migratedITCount?: number;
    migratedRTCount?: number;
    /**
     * Cache telemetry — expired, invalid, and removed counts
     */
    expiredCacheRemovedCount?: number;
    expiredAcntRemovedCount?: number;
    invalidCacheCount?: number;
    /**
     * Encrypted cache telemetry
     */
    unencryptedCacheCount?: number;
    encryptedCacheCount?: number;
    encryptedCacheExpiredCount?: number;
    encryptedCacheCorruptionCount?: number;
    /**
     * Container for dynamically-named telemetry fields.
     * Fields whose names are constructed at runtime (e.g., "[eventName]CallCount")
     * should be stored here instead of being set as top-level properties.
     * Use the "ext." prefix when calling addFields/incrementFields to automatically
     * route fields to this sub-object.
     *
     * @remarks
     * This property is typed as `Record<string, string | number>`.
     */
    ext?: Record<string, string | number>;
};
export type PerformanceEventContext = {
    dur?: number;
    err?: string;
    subErr?: string;
    fail?: number;
};
export type PerformanceEventStackedContext = PerformanceEventContext & {
    name?: string;
    childErr?: string;
};
/**
 * Prefix used to mark telemetry field names as dynamic.
 * Fields with this prefix in addFields/incrementFields calls will be routed
 * to the PerformanceEvent.ext sub-object.
 */
export declare const EXT_FIELD_PREFIX = "ext.";
export declare const IntFields: ReadonlySet<string>;
//# sourceMappingURL=PerformanceEvent.d.ts.map