import { type KnapsackPattern, type KnapsackPatternsConfig, type KsAppClientDataNoMeta, type TemplateSuggestionsGetFn, type RenderDataDemo, type KsRenderApiResults, type ContentStateForRendering, type PatternsState, type RendererId } from '@knapsack/types';
import { type PathAbsolute } from '@knapsack/file-utils';
import { type Renderer } from './renderers/renderer-base';
import { type KnapsackConfig } from '../../types/knapsack-config';
import { type KnapsackDb } from '../../types/knapsack-db';
import { type MissingFileVerbosityOption } from '../../types/misc';
import type { Db } from '../../db';
import { type CliLifecycle } from '../../types/cli-lifecycle';
import type { RouteInspect } from '../../api-info';
type Me = KnapsackDb<PatternsState> & CliLifecycle;
export declare class Patterns implements Me {
    #private;
    missingFileVerbosity: MissingFileVerbosityOption;
    demosById: KsAppClientDataNoMeta['db']['demos']['byId'];
    userConfig: KnapsackConfig;
    private configDb;
    /**
     * directory path where data files (json/yml) can be found
     * non-absolute paths stored in these files will be relative from this
     */
    private dataDir;
    templateRenderers: Partial<Record<RendererId, Renderer<RendererId, any>>>;
    byId: {
        [id: string]: KnapsackPattern;
    };
    /** Keys are pattern IDs, values are path to `knapsack.pattern.ID.json` */
    private patternDataFiles;
    private assetSets;
    private hasUpdatePatternsDataRan?;
    constructor({ dataDir, templateRenderers, assetSets, db, config, }: {
        dataDir: PathAbsolute;
        templateRenderers: Renderer<RendererId, any>[];
        assetSets: import('./asset-sets').AssetSets;
        db: Db;
        config: KnapsackConfig;
    });
    getRenderer(rendererId: RendererId): Renderer<RendererId, any>;
    init: Me['init'];
    hydrate: Me['hydrate'];
    build: Me['build'];
    get allPatterns(): KnapsackPattern[];
    getData: Me['getData'];
    clearCache: Me['clearCache'];
    savePrep: Me['savePrep'];
    private updatePatternData;
    private updatePatternsData;
    getPatterns(): KnapsackPattern[];
    getPatternsConfig(): Promise<KnapsackPatternsConfig>;
    getContentStateFromLocalJsonFiles(): Promise<ContentStateForRendering>;
    inspect(templateInfo: RouteInspect['input']): Promise<RouteInspect['output']>;
    /**
     * Render template
     */
    render({ patternId, templateId, demo, state, isInIframe, websocketsPort, assetSetId, }: {
        /**
         * Not needed if `demo` is type `data-w-template-info` - only used to retrieve the rendererId
         */
        patternId: string;
        /**
         * Not needed if `demo` is type `data-w-template-info` - only used to retrieve the rendererId
         */
        templateId: string;
        /**
         * Demo data to pass to template
         */
        demo: RenderDataDemo;
        state: ContentStateForRendering;
        /**
         * Will this be in an iFrame?
         */
        isInIframe?: boolean;
        websocketsPort?: number;
        assetSetId?: string;
    }): Promise<KsRenderApiResults>;
    getTemplateSuggestions({ rendererId, state, newPath, }: Parameters<TemplateSuggestionsGetFn>[0]): ReturnType<TemplateSuggestionsGetFn>;
}
export {};
//# sourceMappingURL=patterns.d.ts.map