import { CancellationToken } from "../../../../base/common/cancellation.js";
import { IObservable } from "../../../../base/common/observable.js";
import { URI } from "../../../../base/common/uri.js";
import { AICustomizationManagementSection, IStorageSourceFilter } from "./aiCustomizationWorkspaceService.js";
import { PromptsType } from "./promptSyntax/promptTypes.js";
import { IChatPromptSlashCommand } from "./promptSyntax/service/promptsService.js";
export declare const IAICustomizationWorkspaceService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IAICustomizationWorkspaceService>;
/**
* Provides workspace context for AI Customization views.
*/
export interface IAICustomizationWorkspaceService {
    readonly _serviceBrand: undefined;
    /**
    * Observable that fires when the active project root changes.
    */
    readonly activeProjectRoot: IObservable<URI | undefined>;
    /**
    * Returns the current active project root, if any.
    */
    getActiveProjectRoot(): URI | undefined;
    /**
    * The sections to show in the AI Customization Management Editor sidebar.
    */
    readonly managementSections: readonly AICustomizationManagementSection[];
    /**
    * Returns the storage source filter for a given customization type.
    * Controls which storage groups and user file roots are visible.
    */
    getStorageSourceFilter(type: PromptsType): IStorageSourceFilter;
    /**
    * Whether this is a sessions window (vs core VS Code).
    */
    readonly isSessionsWindow: boolean;
    /**
    * Commits files in the active project.
    */
    commitFiles(projectRoot: URI, fileUris: URI[]): Promise<void>;
    /**
    * Commits the deletion of resources that have already been removed from disk.
    * The URIs may point to individual files or to directories (for example, when
    * deleting a skill, the entire customization folder is removed). Implementations
    * should ensure that directory deletions are handled recursively as needed.
    * In sessions this stages and commits the removal in the relevant repositories.
    */
    deleteFiles(projectRoot: URI, fileUris: URI[]): Promise<void>;
    /**
    * Launches the AI-guided creation flow for the given customization type.
    */
    generateCustomization(type: PromptsType): Promise<void>;
    /**
    * Whether a transient project root override is currently active.
    */
    readonly hasOverrideProjectRoot: IObservable<boolean>;
    /**
    * Sets a transient override for the active project root.
    * While set, `activeProjectRoot` returns this value instead of the
    * session- or workspace-derived root. Call `clearOverrideProjectRoot()` to revert.
    */
    setOverrideProjectRoot(root: URI): void;
    /**
    * Clears the transient project root override, reverting to the
    * session-derived (or workspace-derived) root.
    */
    clearOverrideProjectRoot(): void;
    /**
    * Returns prompt/skill slash commands filtered through the workspace
    * service's storage source policy, ensuring the results match the
    * customizations visible in the AI Customization views.
    */
    getFilteredPromptSlashCommands(token: CancellationToken): Promise<readonly IChatPromptSlashCommand[]>;
}
