import { ChatFetchError } from '../../../platform/chat/common/commonTypes';
import { FetcherId } from '../../../platform/networking/common/fetcherService';
import { IChatEndpoint, IChatRequestTelemetryProperties, IEndpointBody } from '../../../platform/networking/common/networking';
import { ChatCompletion } from '../../../platform/networking/common/openai';
import { ITelemetryService } from '../../../platform/telemetry/common/telemetry';
import { TelemetryData } from '../../../platform/telemetry/common/telemetryData';
export interface IChatMLFetcherSuccessfulData {
    chatCompletion: ChatCompletion;
    baseTelemetry: TelemetryData;
    userInitiatedRequest: boolean | undefined;
    interactionType: string;
    chatEndpointInfo: IChatEndpoint | undefined;
    requestBody: IEndpointBody;
    maxResponseTokens: number;
    promptTokenCount: number;
    timeToFirstToken: number;
    timeToFirstTokenEmitted: number;
    hasImageMessages: boolean;
    transport: string;
    fetcher: FetcherId | undefined;
    bytesReceived: number | undefined;
    suspendEventSeen: boolean | undefined;
    resumeEventSeen: boolean | undefined;
    modelCallId: string | undefined;
}
export interface IChatMLFetcherCancellationProperties {
    source: string;
    requestId: string;
    model: string;
    apiType: string | undefined;
    transport: string;
    interactionType: string;
    conversationId?: string;
    associatedRequestId?: string;
    parentRequestId?: string;
    retryAfterError?: string;
    retryAfterErrorGitHubRequestId?: string;
    connectivityTestError?: string;
    connectivityTestErrorGitHubRequestId?: string;
    retryAfterFilterCategory?: string;
    fetcher: FetcherId | undefined;
    suspendEventSeen: boolean | undefined;
    resumeEventSeen: boolean | undefined;
}
export interface IChatMLFetcherCancellationMeasures {
    totalTokenMax: number;
    promptTokenCount: number;
    tokenCountMax: number;
    timeToFirstToken: number | undefined;
    timeToFirstTokenEmitted?: number;
    timeToCancelled: number;
    isVisionRequest: number;
    isBYOK: number;
    isAuto: number;
    bytesReceived: number | undefined;
    issuedTime: number;
}
export interface IChatMLFetcherErrorData {
    processed: ChatFetchError;
    telemetryProperties: IChatRequestTelemetryProperties | undefined;
    chatEndpointInfo: IChatEndpoint;
    requestBody: IEndpointBody;
    tokenCount: number;
    maxResponseTokens: number;
    timeToFirstToken: number;
    isVisionRequest: boolean;
    transport: string;
    interactionType: string;
    fetcher: FetcherId | undefined;
    bytesReceived: number | undefined;
    issuedTime: number;
    wasRetried: boolean;
    suspendEventSeen: boolean | undefined;
    resumeEventSeen: boolean | undefined;
}
export declare class ChatMLFetcherTelemetrySender {
    static sendSuccessTelemetry(telemetryService: ITelemetryService, { chatCompletion, baseTelemetry, userInitiatedRequest, interactionType, chatEndpointInfo, requestBody, maxResponseTokens, promptTokenCount, timeToFirstToken, timeToFirstTokenEmitted, hasImageMessages, transport, fetcher, bytesReceived, suspendEventSeen, resumeEventSeen, modelCallId, }: IChatMLFetcherSuccessfulData): void;
    static sendCancellationTelemetry(telemetryService: ITelemetryService, { source, requestId, model, apiType, transport, interactionType, conversationId, associatedRequestId, parentRequestId, retryAfterError, retryAfterErrorGitHubRequestId, connectivityTestError, connectivityTestErrorGitHubRequestId, retryAfterFilterCategory, fetcher, suspendEventSeen, resumeEventSeen, }: IChatMLFetcherCancellationProperties, { totalTokenMax, promptTokenCount, tokenCountMax, timeToFirstToken, timeToFirstTokenEmitted, timeToCancelled, isVisionRequest, isBYOK, isAuto, bytesReceived, issuedTime, }: IChatMLFetcherCancellationMeasures): void;
    static sendResponseErrorTelemetry(telemetryService: ITelemetryService, { processed, telemetryProperties, chatEndpointInfo, requestBody, tokenCount, maxResponseTokens, timeToFirstToken, isVisionRequest, transport, interactionType, fetcher, bytesReceived, issuedTime, wasRetried, suspendEventSeen, resumeEventSeen, }: IChatMLFetcherErrorData): void;
}
//# sourceMappingURL=chatMLFetcherTelemetry.d.ts.map