import { IObservable } from "../../../../base/common/observable.js";
import { IStorageSourceFilter } from "./aiCustomizationWorkspaceService.js";
import { CustomizationHarness, IHarnessDescriptor } from "./customizationHarnessService.js";
import { PromptsType } from "./promptSyntax/promptTypes.js";
export declare const ICustomizationHarnessService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<ICustomizationHarnessService>;
/**
* Service that manages the active customization harness and provides
* per-type storage source filters based on the selected harness.
*
* The default (core) registration exposes a single "VS Code" harness
* that shows all storage sources. The sessions window overrides this
* to provide CLI-scoped harnesses.
*/
export interface ICustomizationHarnessService {
    readonly _serviceBrand: undefined;
    /**
    * The currently active harness.
    */
    readonly activeHarness: IObservable<CustomizationHarness>;
    /**
    * All harnesses available in this window.
    * When only one harness is available the UI should hide the toggle.
    */
    readonly availableHarnesses: IObservable<readonly IHarnessDescriptor[]>;
    /**
    * Changes the active harness. The new id must be present in
    * `availableHarnesses`.
    */
    setActiveHarness(id: CustomizationHarness): void;
    /**
    * Convenience: returns the storage source filter for the active harness
    * and the given customization type.
    */
    getStorageSourceFilter(type: PromptsType): IStorageSourceFilter;
    /**
    * Returns the descriptor of the currently active harness.
    */
    getActiveDescriptor(): IHarnessDescriptor;
}
