import { InitializeParams, InlineCompletionTriggerKind } from 'vscode-languageserver'; import { IDocContext } from '../document_transformer_service'; import { AdditionalContext, SuggestionOption } from '../api_types'; import { TRACKING_EVENTS } from './constants'; export interface ICodeSuggestionContextUpdate { documentContext: IDocContext; source: SuggestionSource; isStreaming: boolean; model: ICodeSuggestionModel; status: number; debounceInterval: number; gitlab_global_user_id: string; gitlab_instance_id: string; gitlab_host_name: string; gitlab_saas_duo_pro_namespace_ids: number[]; isInvoked: boolean; optionsCount: number; acceptedOption: number; triggerKind: InlineCompletionTriggerKind; additionalContexts: AdditionalContext[]; isDirectConnection: boolean; suggestionOptions: SuggestionOption[]; } export type IClientInfo = InitializeParams['clientInfo']; export declare enum GitlabRealm { saas = "saas", selfManaged = "self-managed" } export declare enum SuggestionSource { cache = "cache", network = "network" } export interface IIDEInfo { name: string; version: string; vendor: string; } export interface IClientContext { ide?: IIDEInfo; extension?: IClientInfo; featureFlagOverrides?: Record; } export interface ITelemetryOptions { enabled?: boolean; baseUrl?: string; trackingUrl?: string; actions?: Array<{ action: TRACKING_EVENTS; }>; ide?: IIDEInfo; extension?: IClientInfo; } export interface ICodeSuggestionModel { lang?: string; engine?: string; name?: string; tokens_consumption_metadata?: { input_tokens?: number; output_tokens?: number; context_tokens_sent?: number; context_tokens_used?: number; }; } export interface TelemetryTracker { isEnabled(): boolean; setCodeSuggestionsContext(uniqueTrackingId: string, context: Partial): void; updateCodeSuggestionsContext(uniqueTrackingId: string, contextUpdate: Partial): void; rejectOpenedSuggestions(): void; updateSuggestionState(uniqueTrackingId: string, newState: TRACKING_EVENTS): void; } export declare const TelemetryTracker: import("@gitlab-org/di").InterfaceId;