import { SiteTemplate, TemplateLibrary, TemplateCategory } from "@/types/templates";
import { Prisma } from "@prisma/client";
export declare const templates: SiteTemplate[];
export declare const templateCategories: {
    id: TemplateCategory;
    name: string;
    description: string;
    icon: string;
}[];
export declare const templateLibrary: TemplateLibrary;
export declare class TemplateManager {
    private templates;
    constructor(templates: SiteTemplate[]);
    getById(id: string): SiteTemplate | undefined;
    getBySlug(slug: string): SiteTemplate | undefined;
    getByCategory(category: TemplateCategory): SiteTemplate[];
    getFreeTemplates(): SiteTemplate[];
    getPremiumTemplates(): SiteTemplate[];
    getActiveTemplates(): SiteTemplate[];
    getPublicTemplates(): SiteTemplate[];
    search(query: string): SiteTemplate[];
    filter(options: {
        category?: TemplateCategory;
        pricing?: "FREE" | "PREMIUM" | "ENTERPRISE";
        features?: string[];
        tags?: string[];
        search?: string;
    }): SiteTemplate[];
    sort(templates: SiteTemplate[], sortBy: "name" | "popularity" | "rating" | "date", order?: "asc" | "desc"): SiteTemplate[];
    getRecommendations(currentTemplate?: SiteTemplate, limit?: number): SiteTemplate[];
    getStats(): {
        total: number;
        active: number;
        free: number;
        premium: number;
        categories: Record<TemplateCategory, number>;
    };
}
export declare const templateManager: TemplateManager;
export declare const getTemplateById: (id: string) => SiteTemplate;
export declare const getTemplateBySlug: (slug: string) => SiteTemplate;
export declare const getTemplatesByCategory: (category: TemplateCategory) => SiteTemplate[];
export declare const searchTemplates: (query: string) => SiteTemplate[];
export declare const filterTemplates: (options: Parameters<typeof templateManager.filter>[0]) => SiteTemplate[];
export declare const getTemplateStats: () => {
    total: number;
    active: number;
    free: number;
    premium: number;
    categories: Record<TemplateCategory, number>;
};
export declare const createSiteFromTemplate: (templateId: string, siteData: {
    name: string;
    slug: string;
    domain?: string;
}) => {
    name: string;
    slug: string;
    domain: string;
    templateId: string;
    templateData: Prisma.InputJsonValue;
    settings: Prisma.InputJsonValue;
    sections: {
        type: import("@/types/templates").SectionType;
        name: string;
        content: Prisma.InputJsonValue;
        styles: Prisma.InputJsonValue;
        order: number;
        isVisible: boolean;
        isPublished: boolean;
    }[];
};
export declare const cloneTemplate: (templateId: string, newData: Partial<SiteTemplate>) => SiteTemplate;
//# sourceMappingURL=index.d.ts.map