import { CopilotNamedAnnotationList } from '../../../../../../platform/completions-core/common/openai/copilotAnnotations';
import { ILogService, ILogger } from '../../../../../../platform/log/common/logService';
import { ITelemetryService } from '../../../../../../platform/telemetry/common/telemetry';
import { IInstantiationService, ServicesAccessor } from '../../../../../../util/vs/platform/instantiation/common/instantiation';
import { LlmNESTelemetryBuilder } from '../../../../../inlineEdits/node/nextEditProviderTelemetry';
import { GhostTextLogContext } from '../../../../common/ghostTextContext';
import { CancellationToken as ICancellationToken } from '../../../types/src';
import { ICompletionsNotifierService } from '../completionNotifier';
import { CompletionState } from '../completionState';
import { ICompletionsFeaturesService } from '../experiments/featuresService';
import { ICompletionsLogTargetService } from '../logger';
import { ICompletionsStatusReporter } from '../progress';
import { ICompletionsContextProviderBridgeService } from '../prompt/components/contextProviderBridge';
import { ICompletionsContextProviderService } from '../prompt/contextProviderStatistics';
import { ExtractPromptOptions } from '../prompt/prompt';
import { TelemetryWithExp } from '../telemetry';
import { ICompletionsAsyncManagerService } from './asyncCompletions';
import { ICompletionsCurrentGhostText } from './current';
import { ResultType } from './resultType';
import { GhostTextResultWithTelemetry } from './telemetry';
export interface GhostCompletion {
    completionIndex: number;
    completionText: string;
    displayText: string;
    displayNeedsWsOffset: boolean;
}
export interface CompletionResult {
    completion: GhostCompletion;
    telemetry: TelemetryWithExp;
    isMiddleOfTheLine: boolean;
    suffixCoverage: number;
    copilotAnnotations?: CopilotNamedAnnotationList;
    clientCompletionId: string;
}
export type GetGhostTextOptions = ExtractPromptOptions & {
    /** Indicates if this is a cycling request. */
    isCycling: boolean;
    /** Whether to stop the ghost text request after computing the prompt (used in the simulator)
     */
    promptOnly: boolean;
    /**
     * Indicates if this is a speculative request generated assuming that the completion was accepted,
     */
    isSpeculative: boolean;
    /**
     * Opportunity ID is a unique ID generated by the client relating to a
     * single "opportunity" to provide some kind of suggestion to the user.
     */
    opportunityId?: string;
    /**
     * An optional debounce time in milliseconds before requesting a completion.
     * Overridable via config or exp variable: `copilotvscodedebouncethreshold`.
     */
    debounceMs?: number;
};
export declare class GhostTextComputer {
    readonly instantiationService: IInstantiationService;
    readonly telemetryService: ITelemetryService;
    readonly notifierService: ICompletionsNotifierService;
    readonly contextProviderBridge: ICompletionsContextProviderBridgeService;
    readonly currentGhostText: ICompletionsCurrentGhostText;
    readonly contextproviderStatistics: ICompletionsContextProviderService;
    readonly asyncCompletionManager: ICompletionsAsyncManagerService;
    readonly completionsFeaturesService: ICompletionsFeaturesService;
    readonly logTarget: ICompletionsLogTargetService;
    readonly statusReporter: ICompletionsStatusReporter;
    readonly logService: ILogService;
    constructor(instantiationService: IInstantiationService, telemetryService: ITelemetryService, notifierService: ICompletionsNotifierService, contextProviderBridge: ICompletionsContextProviderBridgeService, currentGhostText: ICompletionsCurrentGhostText, contextproviderStatistics: ICompletionsContextProviderService, asyncCompletionManager: ICompletionsAsyncManagerService, completionsFeaturesService: ICompletionsFeaturesService, logTarget: ICompletionsLogTargetService, statusReporter: ICompletionsStatusReporter, logService: ILogService);
    getGhostText(completionState: CompletionState, token: ICancellationToken | undefined, options: Partial<GetGhostTextOptions>, logContext: GhostTextLogContext, telemetryBuilder: LlmNESTelemetryBuilder, parentLogger: ILogger): Promise<GhostTextResultWithTelemetry<[CompletionResult[], ResultType]>>;
    private getGhostTextWithoutAbortHandling;
}
export declare function getGhostText(accessor: ServicesAccessor, completionState: CompletionState, token: ICancellationToken | undefined, options: Partial<GetGhostTextOptions>, logContext: GhostTextLogContext, telemetryBuilder: LlmNESTelemetryBuilder, logger: ILogger): Promise<GhostTextResultWithTelemetry<[CompletionResult[], ResultType]>>;
export declare class ForceMultiLine {
    readonly requestMultilineOverride: boolean;
    static readonly default: ForceMultiLine;
    constructor(requestMultilineOverride?: boolean);
}
//# sourceMappingURL=ghostText.d.ts.map