import type { FileSystemInterface } from "../app-interface/file-system-interface.js";
import type { SourceLocation } from "@babel/types";
import type { AppScope, SbElement } from "@superblocksteam/library-shared/types";
import type { IApiV3Dto } from "@superblocksteam/library-shared/types";
export type ComponentSemanticInfo = {
    id: SbElement;
    tagName: string;
    location: SourceLocation | null | undefined;
    bindName: string | undefined;
    semanticPath: string;
    semanticProperties: Record<string, any>;
    nthOfType: number;
    isCustomComponent: boolean;
    pageName: string;
};
type ApiBlockSemanticInfo = {
    name: string;
    type: string;
    id: string | undefined;
    pluginType?: string;
};
export type ApiSemanticInfo = {
    name: string;
    pageName?: string;
    blocks: ApiBlockSemanticInfo[];
};
export declare class AppContextStore {
    componentSemanticsById: Record<SbElement, ComponentSemanticInfo>;
    apiSemanticsByName: Record<string, ApiSemanticInfo>;
    appScopeId: string | undefined;
    private pageNames;
    private fileSystemInterface;
    constructor(fileSystemInterface?: FileSystemInterface);
    private extractSemanticProperties;
    private getBlockType;
    private getPluginType;
    private extractBlockInfo;
    private extractApiSemantics;
    handleApiUpdate(api: IApiV3Dto): void;
    handleApiDelete(apiName: string): void;
    private traverseWidgetTree;
    private traversePageWidgets;
    private traverseAppWidgets;
    handleAppScopeReset(appScope: AppScope): void;
    getComponentsForApp(): ComponentSemanticInfo[];
    isEssentiallyBlank(): boolean;
    /**
     * Get all page names in the application
     */
    getPageNames(): string[];
    /**
     * Get all components for a specific page
     */
    getComponentsForPage(pageName: string): ComponentSemanticInfo[];
    getComponent(componentId: SbElement): ComponentSemanticInfo | undefined;
    /**
     * Get the page name for a specific component
     */
    getPageForComponent(componentId: SbElement): string | undefined;
    /**
     * Check if a specific page is essentially blank (has no meaningful components)
     */
    isPageEssentiallyBlank(pageName: string): boolean;
    /**
     * Get component count by page
     */
    getComponentCountByPage(): Record<string, number>;
    /**
     * Check if the application has multiple pages
     */
    hasMultiplePages(): boolean;
    /**
     * Get all APIs for a specific page
     */
    getApisForPage(pageName: string): ApiSemanticInfo[];
}
export {};
//# sourceMappingURL=app-context.d.ts.map