import type { Scaffold, ScaffoldDiscoveryOptions, ScaffoldProvider, ScaffoldTransformer } from './types.js';
/**
 * Options for creating a scaffold registry
 */
export interface ScaffoldRegistryOptions {
    /**
     * Override the built-in scaffolds directory. Useful for bundled environments
     * (e.g. VS Code extensions) where the SDK's data files are copied to a
     * different location. Defaults to the SDK's own `data/scaffolds/` directory.
     */
    builtInScaffoldsDir?: string;
}
/**
 * Scaffold registry for discovering and managing scaffolds
 */
export declare class ScaffoldRegistry {
    private providers;
    private transformers;
    private scaffoldCache;
    private readonly builtInScaffoldsDir;
    constructor(options?: ScaffoldRegistryOptions);
    /**
     * Add scaffold providers to the registry for discovery.
     * Providers are appended to the existing list and evaluated in priority order.
     * Clears the cache to ensure new scaffolds are discovered on next query.
     * @param providers - Array of scaffold providers to add
     */
    addProviders(providers: ScaffoldProvider[]): void;
    /**
     * Add scaffold transformers to the registry.
     * Transformers are applied to all scaffolds during discovery after deduplication.
     * Clears the cache to ensure transformers are reapplied on the next getScaffolds() call.
     * @param transformers - Array of scaffold transformers to add
     */
    addTransformers(transformers: ScaffoldTransformer[]): void;
    /**
     * Clear the scaffold cache
     */
    clearCache(): void;
    /**
     * Get all scaffolds from all sources
     * @param options - Discovery options
     * @returns Array of scaffolds (deduplicated by name, later sources override earlier)
     */
    getScaffolds(options?: ScaffoldDiscoveryOptions): Promise<Scaffold[]>;
    /**
     * Get a specific scaffold by ID
     * @param id - Scaffold ID
     * @param options - Discovery options
     * @returns Scaffold or null if not found
     */
    getScaffold(id: string, options?: ScaffoldDiscoveryOptions): Promise<Scaffold | null>;
    /**
     * Search scaffolds by query
     * @param query - Search query
     * @param options - Additional discovery options
     * @returns Matching scaffolds
     */
    searchScaffolds(query: string, options?: ScaffoldDiscoveryOptions): Promise<Scaffold[]>;
}
/**
 * Create a new scaffold registry instance
 *
 * @param options - Registry options (e.g. override built-in scaffolds directory)
 */
export declare function createScaffoldRegistry(options?: ScaffoldRegistryOptions): ScaffoldRegistry;
