export interface CustomRoute { path: string; name: string; redirect?: string | ((to: any) => string); component?: string; meta?: Record; props?: boolean | Record; beforeEnter?: (to: any, from: any, next: any) => void; } export interface FrameConfig { vite?: { plugins?: any[]; build?: any; server?: any; resolve?: any; css?: { preprocessorOptions?: { less?: any; scss?: any; sass?: any; }; postcss?: any; }; }; routing?: { viewsDir?: string; routePrefix?: string; generateTypes?: boolean; customRoutes?: CustomRoute[]; }; build?: { outDir?: string; sourcemap?: boolean; minify?: boolean; }; dev?: { port?: number; host?: string; open?: boolean; ignore?: string[]; }; assets?: { publicDir?: string; assetsDir?: string; generateHelpers?: boolean; optimize?: boolean; formats?: string[]; }; devTools?: { hmr?: boolean; overlay?: boolean; eslint?: boolean; prettier?: boolean; testing?: { framework?: 'vitest' | 'jest'; coverage?: boolean; ui?: boolean; }; performance?: { bundleAnalyzer?: boolean; lighthouse?: boolean; }; }; templates?: { pug?: { enabled?: boolean; options?: { pretty?: boolean; filters?: Record; globals?: Record; cache?: boolean; inlineRuntimeFunctions?: boolean; compileDebug?: boolean; }; }; }; meta?: { enabled?: boolean; defaults?: { title?: string; titleTemplate?: string; description?: string; keywords?: string[]; author?: string; viewport?: string; charset?: string; themeColor?: string; openGraph?: { siteName?: string; type?: string; locale?: string; image?: string; imageWidth?: number; imageHeight?: number; imageAlt?: string; url?: string; }; twitter?: { card?: string; site?: string; creator?: string; image?: string; imageAlt?: string; }; meta?: Array<{ name?: string; property?: string; content: string; key?: string; }>; }; }; } export declare class ConfigLoader { private cwd; private config; constructor(cwd: string); load(): Promise; private loadDefaults; private loadProjectConfig; private importConfig; private mergeConfig; private deepMerge; get(): FrameConfig; }