export type ContentSlotType = "card-list" | "table" | "stats" | "detail" | "form" | "filter";
export interface ContentSlot {
    type: ContentSlotType;
    componentName?: string;
    loopVariable?: string;
    fields: SkeletonField[];
}
export interface SkeletonField {
    kind: "title" | "subtitle" | "avatar" | "image" | "badge" | "numeric" | "date" | "text" | "input";
    width: string;
    height: string;
    rounded?: string;
}
export interface ComponentAnalysis {
    filePath: string;
    componentName: string;
    wrapperClasses: string;
    hasIsLoading: boolean;
    hasAsyncData: boolean;
    shellJsx: string[];
    contentSlots: ContentSlot[];
    imports: string[];
    stickyHeaderClasses: string | null;
    parentLayoutClasses: string[];
    isClientComponent: boolean;
}
export interface SkeletonSuggestion {
    type: "missing-skeleton" | "stale-skeleton" | "missing-loading" | "missing-error" | "missing-not-found";
    pagePath: string;
    skeletonName: string;
    generatedCode: string;
    targetFile: string;
}
export interface PageInfo {
    pagePath: string;
    clientComponentPath: string | null;
    routeDir: string;
    hasLoading: boolean;
    hasError: boolean;
    hasNotFound: boolean;
    isDynamicRoute: boolean;
}
export declare class SkeletonService {
    private projectRoot;
    constructor(projectRoot: string);
    scanPages(): Promise<PageInfo[]>;
    analyzeComponent(filePath: string): Promise<ComponentAnalysis>;
    generatePageSkeleton(analysis: ComponentAnalysis): string;
    generateLoadingPage(skeletonName: string, skeletonImportPath: string): string;
    generateErrorPage(): string;
    generateNotFoundPage(): string;
    ensureSkeletonComponent(): Promise<boolean>;
    auditSkeletons(): Promise<SkeletonSuggestion[]>;
    applySuggestion(suggestion: SkeletonSuggestion): Promise<boolean>;
    private findAppDir;
    private findClientComponent;
    private findFiles;
    private fileExists;
    private readFile;
    private extractComponentName;
    private extractImports;
    private extractWrapperClasses;
    private extractStickyHeader;
    private extractShellJsx;
    private detectContentSlots;
    private detectFieldsFromContent;
    private detectTableFields;
    private detectFormFields;
    private detectDetailFields;
    private generateCardSkeleton;
    private generateTableSkeleton;
    private generateStatsSkeleton;
    private generateDetailSkeleton;
    private generateFormSkeleton;
    private generateFilterSkeleton;
    private getSkeletonsFilePath;
    private hasSkeletonExport;
    private resolveImportPath;
    private getParentLayoutClasses;
}
//# sourceMappingURL=SkeletonService.d.ts.map