import { type ComponentAngularCustom, type ComponentCustom, type ComponentReactJsxCustom, type ComponentReactWrapperCustom, type ComponentVueCustom, type LayerName, type MetadataEntity, type MetadataStoreOptions, type PublicRequestOptions, type PublicResponse } from '../types.js';
/** Query options for listing or resolving component entities. */
export type ComponentQueryOptions = PublicRequestOptions & {
    cluster?: string | string[];
    includeInterfaceSnapshot?: boolean;
    status?: string;
    tags?: string[];
};
/** Layer selector for component data payloads. */
export type ComponentDataLayer = 'examples' | 'full' | 'interface' | 'rules';
/** Framework selector for component data payloads. */
export type ComponentFramework = 'angular' | 'react' | 'vanilla' | 'vue';
/** Options for retrieving high-level component data content. */
export type ComponentDataQueryOptions = {
    framework?: ComponentFramework;
    layer?: ComponentDataLayer;
};
/** Framework-specific metadata details from a component entity. */
export type ComponentFrameworkDetails = ComponentAngularCustom | ComponentReactWrapperCustom | ComponentReactJsxCustom | ComponentVueCustom | {
    jsx?: ComponentReactJsxCustom;
    wrapper?: ComponentReactWrapperCustom;
};
/** One code-oriented layer file entry with content and source path. */
export type ComponentLayerContent = {
    content: string;
    layer: LayerName;
    path: string;
};
/** Textual layer content (typically markdown) with source path. */
export type ComponentTextLayerContent = {
    content: string;
    path: string;
};
/** High-level component usage payload grouped by requested/resolved layer semantics. */
export type ComponentDataPayload = {
    component: string;
    framework: ComponentFramework;
    interface?: ComponentTextLayerContent[];
    layer: LayerName;
    requestedFrameworkDetails?: ComponentFrameworkDetails;
    relevantLayerCode?: ComponentLayerContent[];
    examples?: ComponentTextLayerContent[];
    rules?: ComponentTextLayerContent[];
    warnings?: string[];
};
/** Narrow rules-only payload for component usage guidance. */
export type ComponentRulesPayload = {
    component: string;
    layer: 'rules';
    rules: ComponentTextLayerContent[];
    warnings?: string[];
};
/**
 * List components with optional filtering and pagination.
 * @param options Options for querying components, including filtering by status and tags, pagination, and layer/verbosity preferences.
 * @param storeOptions Options for configuring the metadata store.
 * @returns A promise that resolves to a public response containing the list of components and metadata.
 */
export declare const listComponents: (options?: ComponentQueryOptions, storeOptions?: MetadataStoreOptions) => Promise<PublicResponse<MetadataEntity<ComponentCustom>[]>>;
/**
 * Get metadata for a specific component by name or ID, with options for layer inclusion and verbosity.
 * @param nameOrId The name or ID of the component to retrieve metadata for.
 * @param options Options for querying the component, including filtering by status and tags, layer/verbosity preferences, and whether to include the interface snapshot.
 * @param storeOptions Options for configuring the metadata store.
 * @returns A promise that resolves to a public response containing the component metadata and related information, or null if not found.
 */
export declare const getComponentMetadata: (nameOrId: string, options?: ComponentQueryOptions, storeOptions?: MetadataStoreOptions) => Promise<PublicResponse<MetadataEntity<ComponentCustom> | null>>;
/**
 * High-level helper for component usage payloads grouped by layer semantics.
 * - `full`: returns filtered source files (vanilla + requested framework)
 * - `examples`: returns markdown files from the examples layer
 * - `interface`: returns markdown files from the interface layer
 */
export declare const getDataForComponent: (nameOrId: string, options?: ComponentDataQueryOptions, storeOptions?: MetadataStoreOptions) => Promise<PublicResponse<ComponentDataPayload | null>>;
/**
 * Focused helper for component rules markdown.
 * Unlike `getDataForComponent(..., { layer: 'rules' })`, this helper requires the
 * rules layer and returns only the rules-specific payload shape.
 */
export declare const getRulesForComponent: (nameOrId: string, storeOptions?: MetadataStoreOptions) => Promise<PublicResponse<ComponentRulesPayload | null>>;
