import { WebContentsView, Rectangle as Bounds } from "electron";
import { AppManifest, WindowConfig } from "@edenapp/types";
import { ViewMode, ViewInfo } from "./types";
import { TilingManager } from "./TilingManager";
import { FloatingWindowController } from "./FloatingWindowController";
import { DevToolsManager } from "./DevToolsManager";
/**
 * ViewCreator
 *
 * Handles creation and injection of views.
 * Extracted from ViewManager for better separation of concerns.
 */
export declare class ViewCreator {
    private readonly basePath;
    private readonly tilingManager;
    private readonly floatingWindows;
    private readonly devToolsManager;
    private nextOverlayZIndex;
    private nextViewId;
    constructor(basePath: string, tilingManager: TilingManager, floatingWindows: FloatingWindowController, devToolsManager: DevToolsManager);
    /**
     * Check if a frontend entry points to a remote URL
     */
    isRemoteEntry(entry: string): boolean;
    /**
     * Determine whether the app frame should be injected
     */
    shouldInjectAppFrame(windowConfig?: WindowConfig): boolean;
    /**
     * Get the CSS injection mode from window config
     * Returns "full" by default if not specified
     */
    getCSSInjectionMode(windowConfig?: WindowConfig): "full" | "tokens" | "none";
    /**
     * Callback that strips X-Frame-Options and CSP headers from responses.
     */
    private static embeddingHeadersFilter;
    /**
     * Inject Eden CSS into the view
     * Makes design tokens and utilities available to all apps
     * @param view - The WebContentsView to inject CSS into
     * @param mode - "full" for complete CSS or "tokens" for only CSS custom properties
     */
    injectEdenCSS(view: WebContentsView, mode: "full" | "tokens"): Promise<boolean>;
    /**
     * Inject app frame script into the view
     * Adds a title bar with close button to each app
     */
    injectAppFrame(view: WebContentsView, appId: string, viewMode: ViewMode, windowConfig?: WindowConfig, bounds?: Bounds): Promise<boolean>;
    /**
     * Calculate view bounds, tile index, and Z-index based on view type and mode
     */
    private calculateViewBounds;
    /**
     * Calculate bounds and Z-index for overlay views
     */
    private calculateOverlayBounds;
    /**
     * Calculate bounds and Z-index for floating app views
     */
    private calculateFloatingAppBounds;
    /**
     * Calculate bounds and tile index for tiled app views
     */
    private calculateTiledAppBounds;
    /**
     * Create a view for an app (regular or overlay)
     * ViewType is determined by manifest.overlay flag
     */
    createView(appId: string, manifest: AppManifest, installPath: string, bounds: Bounds | undefined, existingViews: Iterable<ViewInfo>, launchArgs?: string[]): ViewInfo;
}
//# sourceMappingURL=ViewCreator.d.ts.map