import type * as vscode from 'vscode';
import { Event } from '../../../util/vs/base/common/event';
import { Disposable } from '../../../util/vs/base/common/lifecycle';
import { ICopilotTokenStore } from '../../authentication/common/copilotTokenStore';
import { IConfigurationService } from '../../configuration/common/configurationService';
import { IVSCodeExtensionContext } from '../../extContext/common/extensionContext';
import { ILogService } from '../../log/common/logService';
import { IProxyModelsService } from '../../proxyModels/common/proxyModelsService';
import { IExperimentationService } from '../../telemetry/common/nullExperimentationService';
import { ITelemetryService } from '../../telemetry/common/telemetry';
import { ModelConfiguration } from '../common/dataTypes/xtabPromptOptions';
import { IInlineEditsModelService, IUndesiredModelsManager } from '../common/inlineEditsModelService';
export declare class InlineEditsModelService extends Disposable implements IInlineEditsModelService {
    private readonly _tokenStore;
    private readonly _proxyModelsService;
    private readonly _undesiredModelsManager;
    private readonly _configService;
    private readonly _expService;
    private readonly _telemetryService;
    private readonly _logService;
    _serviceBrand: undefined;
    private static readonly COPILOT_NES_XTAB_MODEL;
    private static readonly COPILOT_NES_OCT;
    private static readonly COPILOT_NES_CALLISTO;
    private _copilotTokenObs;
    private _fetchedModelsObs;
    private _preferredModelNameObs;
    private _localModelConfigObs;
    private _expBasedModelConfigObs;
    private _defaultModelConfigObs;
    private _useSlashModelsObs;
    private _undesiredModelsObs;
    private _modelsObs;
    private _currentModelObs;
    private _modelInfoObs;
    readonly onModelListUpdated: Event<void>;
    private readonly _setModelQueue;
    private _logger;
    constructor(_tokenStore: ICopilotTokenStore, _proxyModelsService: IProxyModelsService, _undesiredModelsManager: IUndesiredModelsManager, _configService: IConfigurationService, _expService: IExperimentationService, _telemetryService: ITelemetryService, _logService: ILogService);
    get modelInfo(): vscode.InlineCompletionModelInfo | undefined;
    setCurrentModelId(newPreferredModelId: string): Promise<void>;
    private _setCurrentModelIdCore;
    private aggregateModels;
    selectedModelConfiguration(): ModelConfiguration;
    defaultModelConfiguration(): ModelConfiguration;
    private isConfiguredModel;
    private determineDefaultModel;
    private _pickModel;
    private parseModelConfigString;
}
export declare namespace UndesiredModels {
    class Manager extends Disposable implements IUndesiredModelsManager {
        private readonly _vscodeExtensionContext;
        _serviceBrand: undefined;
        private readonly _onDidChange;
        readonly onDidChange: Event<void>;
        private readonly _queue;
        constructor(_vscodeExtensionContext: IVSCodeExtensionContext);
        isUndesiredModelId(modelId: string): boolean;
        addUndesiredModelId(modelId: string): Promise<void>;
        removeUndesiredModelId(modelId: string): Promise<void>;
        private _getModels;
        private _setModels;
    }
}
//# sourceMappingURL=inlineEditsModelService.d.ts.map