import { URI } from "../../../../base/common/uri.js";
import { PromptsStorage } from "./promptSyntax/service/promptsService.js";
/**
 * Extended storage type for AI Customization that includes built-in prompts
 * shipped with the application, alongside the core `PromptsStorage` values.
 */
export type AICustomizationSource = "local" | "user" | "extension" | "plugin" | "builtin";
export declare namespace AICustomizationSources {
    const local: AICustomizationSource;
    const user: AICustomizationSource;
    const extension: AICustomizationSource;
    const plugin: AICustomizationSource;
    const builtin: AICustomizationSource;
    const all: AICustomizationSource[];
}
/**
 * Storage type discriminator for built-in customizations shipped with the application.
 */
export declare const BUILTIN_STORAGE: AICustomizationSource;
/**
 * Possible section IDs for the AI Customization Management Editor sidebar.
 */
export declare const AICustomizationManagementSection: {
    readonly Agents: "agents";
    readonly Skills: "skills";
    readonly Instructions: "instructions";
    readonly Prompts: "prompts";
    readonly Hooks: "hooks";
    readonly McpServers: "mcpServers";
    readonly Plugins: "plugins";
    readonly Models: "models";
};
export type AICustomizationManagementSection = typeof AICustomizationManagementSection[keyof typeof AICustomizationManagementSection];
/**
 * Per-type filter policy controlling which storage sources and user file
 * roots are visible for a given customization type.
 */
export interface IStorageSourceFilter {
    /**
     * Which storage groups to display (e.g. workspace, user, extension, builtin).
     */
    readonly sources: readonly AICustomizationSource[];
    /**
     * If set, only user files under these roots are shown (allowlist).
     * If `undefined`, all user file roots are included.
     */
    readonly includedUserFileRoots?: readonly URI[];
}
/**
 * Controls which features are shown on the welcome page of the
 * AI Customization Management Editor.
 */
export interface IWelcomePageFeatures {
    /** Show the "Configure Your AI" getting-started banner. */
    readonly showGettingStartedBanner: boolean;
}
/**
 * Applies a source filter to an array of items that have uri and source.
 * Removes items whose source is not in the filter's source list,
 * and for user-source items, removes those not under an allowed root.
 */
export declare function applySourceFilter<T extends {
    readonly uri: URI;
    readonly source: AICustomizationSource;
}>(items: readonly T[], filter: IStorageSourceFilter): readonly T[];
/**
 * Applies a storage filter to an array of items that have uri and storage.
 * Removes items whose storage is not in the filter's source list,
 * and for user-storage items, removes those not under an allowed root.
 */
export declare function applyStorageSourceFilter<T extends {
    readonly uri: URI;
    readonly storage: PromptsStorage;
}>(items: readonly T[], filter: IStorageSourceFilter): readonly T[];
