import { CancellationToken } from "../../../../../base/common/cancellation.js";
import { IDisposable } from "../../../../../base/common/lifecycle.js";
import { ICommandService } from "../../../../../platform/commands/common/commands.service.js";
import { ISingleEditOperation } from "../../../../common/core/editOperation.js";
import { Position } from "../../../../common/core/position.js";
import { Range } from "../../../../common/core/range.js";
import { SingleTextEdit } from "../../../../common/core/textEdit.js";
import { InlineCompletionEndOfLifeReason, InlineCompletion, InlineCompletionContext, InlineCompletions, InlineCompletionsProvider, PartialAcceptInfo } from "../../../../common/languages.js";
import { ILanguageConfigurationService } from "../../../../common/languages/languageConfigurationRegistry.service.js";
import { ITextModel } from "../../../../common/model.js";
export declare function provideInlineCompletions(providers: InlineCompletionsProvider[], positionOrRange: Position | Range, model: ITextModel, context: InlineCompletionContext, baseToken?: CancellationToken, languageConfigurationService?: ILanguageConfigurationService): Promise<InlineCompletionProviderResult>;
export declare class InlineCompletionProviderResult implements IDisposable {
    readonly completions: readonly InlineSuggestData[];
    private readonly hashs;
    private readonly providerResults;
    constructor(completions: readonly InlineSuggestData[], hashs: Set<string>, providerResults: readonly InlineSuggestionList[]);
    has(edit: SingleTextEdit): boolean;
    isEmpty(): boolean;
    dispose(): void;
}
export declare class InlineSuggestData {
    readonly range: Range;
    readonly insertText: string;
    readonly snippetInfo: SnippetInfo | undefined;
    readonly displayLocation: IDisplayLocation | undefined;
    readonly additionalTextEdits: readonly ISingleEditOperation[];
    readonly sourceInlineCompletion: InlineCompletion;
    readonly source: InlineSuggestionList;
    readonly context: InlineCompletionContext;
    readonly isInlineEdit: boolean;
    private _didShow;
    private _didReportEndOfLife;
    private _lastSetEndOfLifeReason;
    constructor(range: Range, insertText: string, snippetInfo: SnippetInfo | undefined, displayLocation: IDisplayLocation | undefined, additionalTextEdits: readonly ISingleEditOperation[], sourceInlineCompletion: InlineCompletion, source: InlineSuggestionList, context: InlineCompletionContext, isInlineEdit: boolean);
    get showInlineEditMenu(): boolean;
    getSingleTextEdit(): SingleTextEdit;
    reportInlineEditShown(commandService: ICommandService, updatedInsertText: string): Promise<void>;
    reportPartialAccept(acceptedCharacters: number, info: PartialAcceptInfo): void;
    reportEndOfLife(reason?: InlineCompletionEndOfLifeReason): void;
    setEndOfLifeReason(reason: InlineCompletionEndOfLifeReason): void;
}
export interface SnippetInfo {
    snippet: string;
    range: Range;
}
export interface IDisplayLocation {
    range: Range;
    label: string;
}
export declare class InlineSuggestionList {
    readonly inlineSuggestions: InlineCompletions;
    readonly inlineSuggestionsData: readonly InlineSuggestData[];
    readonly provider: InlineCompletionsProvider;
    private refCount;
    constructor(inlineSuggestions: InlineCompletions, inlineSuggestionsData: readonly InlineSuggestData[], provider: InlineCompletionsProvider);
    addRef(): void;
    removeRef(): void;
}
