import { KnapsackFile } from '@knapsack/core';
import { FileDb2 } from './dbs/file-db';
import { KnapsackPattern, KnapsackTemplateStatus, KnapsackPatternsConfig, KnapsackTemplateDemo } from '../schemas/patterns';
import { KnapsackTemplateRenderer, KsRenderResults, TemplateRendererMeta } from '../schemas/knapsack-config';
import { KnapsackDb } from '../schemas/misc';
declare type PatternsState = import('../client/store').AppState['patternsState'];
export declare class Patterns implements KnapsackDb<PatternsState> {
    configDb: FileDb2<KnapsackPatternsConfig>;
    dataDir: string;
    templateRenderers: {
        [id: string]: KnapsackTemplateRenderer;
    };
    byId: {
        [id: string]: KnapsackPattern;
    };
    private assetSets;
    isReady: boolean;
    filePathsThatTriggerNewData: Map<string, string>;
    private watcher;
    cacheDir: string;
    constructor({ dataDir, templateRenderers, assetSets, }: {
        dataDir: string;
        templateRenderers: KnapsackTemplateRenderer[];
        assetSets: import('./asset-sets').AssetSets;
    });
    init({ cacheDir }: {
        cacheDir: string;
    }): Promise<void>;
    get allPatterns(): KnapsackPattern[];
    getRendererMeta(): {
        [id: string]: {
            meta: TemplateRendererMeta;
        };
    };
    getData(): Promise<import('../client/store').AppState['patternsState']>;
    savePrep(data: {
        patterns: {
            [id: string]: KnapsackPattern;
        };
        templateStatuses?: KnapsackTemplateStatus[];
    }): Promise<KnapsackFile[]>;
    updatePatternData(patternConfigPath: string): Promise<void>;
    updatePatternsData(): Promise<void>;
    getPattern(id: string): KnapsackPattern;
    getPatterns(): KnapsackPattern[];
    /**
     * Get all the pattern's template file paths
     * @return - paths to all template files
     */
    getAllTemplatePaths({ templateLanguageId, includeTemplateDemos, }?: {
        /**
         * If provided, only templates for these languages will be provided.
         * @see {import('./renderer-base').KnapsackRendererBase}
         */
        templateLanguageId?: string;
        includeTemplateDemos?: boolean;
    }): string[];
    getTemplateAbsolutePath({ patternId, templateId }: {
        patternId: any;
        templateId: any;
    }): string;
    getTemplateDemoAbsolutePath({ patternId, templateId, demoId }: {
        patternId: any;
        templateId: any;
        demoId: any;
    }): string;
    getTemplateStatuses(): Promise<KnapsackTemplateStatus[]>;
    /**
     * Render template
     */
    render({ patternId, templateId, demo, isInIframe, websocketsPort, assetSetId, }: {
        patternId: string;
        templateId: string;
        /**
         * Demo data to pass to template
         * Either whole demo object OR demoId (string)
         */
        demo?: KnapsackTemplateDemo | string;
        /**
         * Will this be in an iFrame?
         */
        isInIframe?: boolean;
        websocketsPort?: number;
        assetSetId?: string;
    }): Promise<KsRenderResults>;
}
export {};
//# sourceMappingURL=patterns.d.ts.map