/**
 * RuntimeController — Lit ReactiveController equivalent of the React runtime hooks.
 *
 * Replaces the following hooks from RuntimeProvider.tsx for Lit-based components:
 *   useRuntime()         → controller.runtime
 *   useRuntimeContext()  → controller.context
 *   usePageContext()     → controller.page
 *   useSessionContext()  → controller.session
 *   useViewportContext() → controller.viewport
 *
 * Usage:
 *   class MyElement extends LitElement {
 *     static override properties = { ... };
 *
 *     #runtimeCtrl = new RuntimeController(this, myRuntime);
 *
 *     override render() {
 *       const page = this.#runtimeCtrl.page;
 *       return html`<p>${page?.url}</p>`;
 *     }
 *   }
 *
 * The controller subscribes to runtime.context.subscribe() when the host connects
 * to the DOM and calls host.requestUpdate() on every context change, mirroring
 * the React useState/useEffect pattern in RuntimeProvider.
 *
 * Decorator-free: relies on static `properties` declarations on the host element
 * instead of @property / @state decorators (tsconfig does not enable
 * experimentalDecorators).
 */
import type { ReactiveController, ReactiveControllerHost } from 'lit';
import type { PageContext, RuntimeContext, SessionContext, ViewportContext } from '../context/types.js';
import type { SmartCanvasRuntime } from '../runtime.js';
export declare class RuntimeController implements ReactiveController {
    readonly host: ReactiveControllerHost;
    private readonly _runtime;
    private _context;
    private _unsubscribe;
    constructor(host: ReactiveControllerHost, runtime: SmartCanvasRuntime);
    hostConnected(): void;
    hostDisconnected(): void;
    /** The SmartCanvasRuntime instance (equivalent to useRuntime()). */
    get runtime(): SmartCanvasRuntime;
    /** Current reactive RuntimeContext snapshot (equivalent to useRuntimeContext()). */
    get context(): RuntimeContext | null;
    /** Current page context (equivalent to usePageContext()). */
    get page(): PageContext | null;
    /** Current session context (equivalent to useSessionContext()). */
    get session(): SessionContext | null;
    /** Current viewport context (equivalent to useViewportContext()). */
    get viewport(): ViewportContext | null;
}
