import { SpecContractRegistry } from '../registry';
import type { ExampleKind, ExampleSpec, ExampleVisibility } from './types';
/**
 * In-memory registry for ExampleSpec.
 *
 * Provides methods for registering, querying, and filtering examples.
 *
 * @example
 * ```typescript
 * const registry = new ExampleRegistry();
 * registry.register(saasBoilerplateExample);
 * registry.register(workflowSystemExample);
 *
 * const templates = registry.listByKind('template');
 * const publicExamples = registry.listByVisibility('public');
 * ```
 */
export declare class ExampleRegistry extends SpecContractRegistry<'example', ExampleSpec> {
    constructor(items?: ExampleSpec[]);
    /** List examples by kind. */
    listByKind(kind: ExampleKind): ExampleSpec[];
    /** List examples by visibility. */
    listByVisibility(visibility: ExampleVisibility): ExampleSpec[];
    /** List examples by domain. */
    listByDomain(domain: string): ExampleSpec[];
    /** List examples that support a specific surface. */
    listBySurface(surface: 'templates' | 'sandbox' | 'studio' | 'mcp'): ExampleSpec[];
    /** List examples that are installable via Studio. */
    listInstallable(): ExampleSpec[];
    /** Group examples by kind. */
    groupByKind(): Map<ExampleKind, ExampleSpec[]>;
    /** Get unique kinds from all examples. */
    getUniqueKinds(): ExampleKind[];
    /** Get unique domains from all examples. */
    getUniqueDomains(): string[];
    /** Search examples by query (matches key, title, description, tags). */
    search(query: string): ExampleSpec[];
}
