import { ITelemetryService } from '../../telemetry/common/telemetry';
interface IChatWebSocketConnectionTelemetryProperties {
    conversationId: string;
    initiatingRequestId: string;
    gitHubRequestId: string;
}
interface IChatWebSocketRequestTelemetryProperties extends IChatWebSocketConnectionTelemetryProperties {
    modelId: string | undefined;
    requestId: string | undefined;
    turnId: string | undefined;
    previousTurnId: string | undefined;
    hadActiveRequest: boolean;
}
export interface IChatWebSocketConnectedTelemetryProperties extends IChatWebSocketConnectionTelemetryProperties {
    connectDurationMs: number;
}
export interface IChatWebSocketConnectErrorTelemetryProperties extends IChatWebSocketConnectionTelemetryProperties {
    error: string;
    connectDurationMs: number;
    responseStatusCode: number | undefined;
    responseStatusText: string | undefined;
    networkError: string | undefined;
}
export interface IChatWebSocketCloseTelemetryProperties extends IChatWebSocketRequestTelemetryProperties {
    closeCode: number;
    closeReason: string;
    closeEventReason: string;
    closeEventWasClean: string;
    connectionDurationMs: number;
    totalSentMessageCount: number;
    totalReceivedMessageCount: number;
    totalSentCharacters: number;
    totalReceivedCharacters: number;
}
export interface IChatWebSocketErrorTelemetryProperties extends IChatWebSocketRequestTelemetryProperties {
    error: string;
    connectionDurationMs: number;
    totalSentMessageCount: number;
    totalReceivedMessageCount: number;
    totalSentCharacters: number;
    totalReceivedCharacters: number;
}
export interface IChatWebSocketCloseDuringSetupTelemetryProperties extends IChatWebSocketConnectionTelemetryProperties {
    closeCode: number;
    closeReason: string;
    closeEventReason: string;
    closeEventWasClean: string;
    connectDurationMs: number;
}
export interface IChatWebSocketRequestSentTelemetryProperties extends IChatWebSocketRequestTelemetryProperties {
    statefulMarkerMatched: boolean;
    previousResponseIdUnset: boolean;
    hasCompactionData: boolean;
    summarizedAtRoundIdSet: boolean;
    summarizedAtRoundIdMatched: boolean;
    modeChanged: boolean | undefined;
    compactionThreshold: number | undefined;
    tokenCountMax: number;
    modelMaxPromptTokens: number;
    connectionDurationMs: number;
    totalSentMessageCount: number;
    totalReceivedMessageCount: number;
    sentMessageCharacters: number;
    totalSentCharacters: number;
    totalReceivedCharacters: number;
}
export interface IChatWebSocketMessageParseErrorTelemetryProperties extends IChatWebSocketRequestTelemetryProperties {
    error: string;
    connectionDurationMs: number;
    totalSentMessageCount: number;
    totalReceivedMessageCount: number;
    receivedMessageCharacters: number;
    totalSentCharacters: number;
    totalReceivedCharacters: number;
}
export type ChatWebSocketRequestOutcome = 'completed' | 'response_failed' | 'response_incomplete' | 'response_cancelled' | 'upstream_error' | 'canceled' | 'superseded' | 'connection_closed' | 'connection_disposed' | 'error_response';
export interface IChatWebSocketRequestOutcomeTelemetryProperties extends IChatWebSocketRequestTelemetryProperties {
    requestOutcome: ChatWebSocketRequestOutcome;
    statefulMarkerMatched: boolean;
    previousResponseIdUnset: boolean;
    hasCompactionData: boolean;
    summarizedAtRoundIdSet: boolean;
    summarizedAtRoundIdMatched: boolean;
    modeChanged: boolean | undefined;
    compactionThreshold: number | undefined;
    promptTokenCount: number;
    tokenCountMax: number;
    modelMaxPromptTokens: number;
    connectionDurationMs: number;
    requestDurationMs: number;
    totalSentMessageCount: number;
    totalReceivedMessageCount: number;
    totalSentCharacters: number;
    totalReceivedCharacters: number;
    requestSentMessageCount: number;
    requestReceivedMessageCount: number;
    requestSentCharacters: number;
    requestReceivedCharacters: number;
    closeCode?: number;
    closeReason?: string;
    serverErrorMessage?: string;
    serverErrorCode?: string;
}
export declare class ChatWebSocketTelemetrySender {
    static sendConnectedTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketConnectedTelemetryProperties): void;
    static sendConnectErrorTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketConnectErrorTelemetryProperties): void;
    static sendCloseTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketCloseTelemetryProperties): void;
    static sendErrorTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketErrorTelemetryProperties): void;
    static sendCloseDuringSetupTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketCloseDuringSetupTelemetryProperties): void;
    static sendRequestSentTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketRequestSentTelemetryProperties): void;
    static sendMessageParseErrorTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketMessageParseErrorTelemetryProperties): void;
    static sendRequestOutcomeTelemetry(telemetryService: ITelemetryService, properties: IChatWebSocketRequestOutcomeTelemetryProperties): void;
}
export {};
//# sourceMappingURL=chatWebSocketTelemetry.d.ts.map