import { CancellationToken } from "../../../../base/common/cancellation.js";
import { IStringDictionary } from "../../../../base/common/collections.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { ExtensionIdentifier } from "../../../../platform/extensions/common/extensions.js";
import { ILanguageModelProviderDescriptor, ILanguageModelChatMetadata, ILanguageModelsGroup, ILanguageModelChatSelector, ILanguageModelChatProvider, IUserFriendlyLanguageModel, IChatMessage, ILanguageModelChatResponse } from "./languageModels.js";
import { ILanguageModelsProviderGroup } from "./languageModelsConfiguration.js";
export declare const ILanguageModelsService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<ILanguageModelsService>;
export interface ILanguageModelsService {
    readonly _serviceBrand: undefined;
    readonly onDidChangeLanguageModelVendors: Event<readonly string[]>;
    readonly onDidChangeLanguageModels: Event<string>;
    updateModelPickerPreference(modelIdentifier: string, showInModelPicker: boolean): void;
    getLanguageModelIds(): string[];
    getVendors(): ILanguageModelProviderDescriptor[];
    lookupLanguageModel(modelId: string): ILanguageModelChatMetadata | undefined;
    /**
    * Find a model by its qualified name. The qualified name is what is used in prompt and agent files and is in the format "Model Name (Vendor)".
    */
    lookupLanguageModelByQualifiedName(qualifiedName: string): ILanguageModelChatMetadata | undefined;
    getLanguageModelGroups(vendor: string): ILanguageModelsGroup[];
    /**
    * Given a selector, returns a list of model identifiers
    * @param selector The selector to lookup for language models. If the selector is empty, all language models are returned.
    */
    selectLanguageModels(selector: ILanguageModelChatSelector): Promise<string[]>;
    registerLanguageModelProvider(vendor: string, provider: ILanguageModelChatProvider): IDisposable;
    deltaLanguageModelChatProviderDescriptors(added: IUserFriendlyLanguageModel[], removed: IUserFriendlyLanguageModel[]): void;
    sendChatRequest(modelId: string, from: ExtensionIdentifier, messages: IChatMessage[], options: {
        [name: string]: any;
    }, token: CancellationToken): Promise<ILanguageModelChatResponse>;
    computeTokenLength(modelId: string, message: string | IChatMessage, token: CancellationToken): Promise<number>;
    addLanguageModelsProviderGroup(name: string, vendorId: string, configuration: IStringDictionary<unknown> | undefined): Promise<void>;
    removeLanguageModelsProviderGroup(vendorId: string, providerGroupName: string): Promise<void>;
    configureLanguageModelsProviderGroup(vendorId: string, name?: string): Promise<void>;
    migrateLanguageModelsProviderGroup(languageModelsProviderGroup: ILanguageModelsProviderGroup): Promise<void>;
}
