{"version":3,"file":"eleva-plugins.d.cts","sources":["../types/plugins/Attr.d.ts","../types/plugins/Router.d.ts","../types/plugins/Store.d.ts","../types/modules/Signal.d.ts","../types/plugins/Agent.d.ts"],"sourcesContent":["export namespace AttrPlugin {\n    let name: string;\n    let version: string;\n    let description: string;\n    /**\n     * Installs the plugin into the Eleva instance.\n     *\n     * @public\n     * Method wrapping behavior:\n     * - Stores original `_patchNode` in `renderer._originalPatchNode`\n     * - Overrides `renderer._patchNode` to use enhanced attribute handling\n     * - Adds `renderer.updateAttributes` and `eleva.updateElementAttributes` helpers\n     * - Call `uninstall()` to restore original behavior\n     *\n     * @param {Eleva} eleva - The Eleva instance to enhance.\n     * @param {AttrPluginOptions} options - Plugin configuration options.\n     * @param {boolean} [options.enableAria=true] - Enable ARIA attribute handling.\n     *        Maps aria-* attributes to DOM properties (e.g., aria-expanded → ariaExpanded).\n     * @param {boolean} [options.enableData=true] - Enable data attribute handling.\n     *        Syncs data-* attributes with element.dataset for consistent access.\n     * @param {boolean} [options.enableBoolean=true] - Enable boolean attribute handling.\n     *        Treats empty strings and attribute names as true, \"false\" string as false.\n     * @param {boolean} [options.enableDynamic=true] - Enable dynamic property detection.\n     *        Searches element prototype chain for property matches (useful for custom elements).\n     * @returns {void}\n     * @example\n     * // Basic installation with defaults\n     * app.use(AttrPlugin);\n     *\n     * @example\n     * // Custom configuration\n     * app.use(AttrPlugin, {\n     *   enableAria: true,\n     *   enableData: true,\n     *   enableBoolean: true,\n     *   enableDynamic: false  // Disable for performance\n     * });\n     *\n     * @example\n     * // Using ARIA attributes in templates\n     * template: (ctx) => `\n     *   <div role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"title\">\n     *     <h2 id=\"title\">Modal Title</h2>\n     *     <button aria-expanded=\"${ctx.isOpen.value}\">Toggle</button>\n     *   </div>\n     * `\n     * @see uninstall - Remove the plugin and restore original behavior.\n     */\n    function install(eleva: Eleva, options?: AttrPluginOptions): void;\n    /**\n     * Uninstalls the plugin from the Eleva instance.\n     *\n     * @public\n     * @param {Eleva} eleva - The Eleva instance.\n     * @returns {void}\n     * @description\n     * Restores the original renderer patching behavior and removes\n     * `eleva.updateElementAttributes`.\n     * @example\n     * // Uninstall the plugin\n     * AttrPlugin.uninstall(app);\n     * @see install - Install the plugin.\n     */\n    function uninstall(eleva: Eleva): void;\n}\nexport { AttrPlugin as Attr };\n/**\n * Type imports from the Eleva core library.\n */\nexport type Eleva = import(\"eleva\").Eleva;\n/**\n * Configuration options for the AttrPlugin.\n */\nexport type AttrPluginOptions = {\n    /**\n     * Enable ARIA attribute handling.\n     */\n    enableAria?: boolean | undefined;\n    /**\n     * Enable data attribute handling.\n     */\n    enableData?: boolean | undefined;\n    /**\n     * Enable boolean attribute handling.\n     */\n    enableBoolean?: boolean | undefined;\n    /**\n     * Enable dynamic property detection.\n     */\n    enableDynamic?: boolean | undefined;\n};\n/**\n * Function signature for attribute update operations.\n */\nexport type AttributeUpdateFunction = (oldEl: HTMLElement, newEl: HTMLElement) => void;\n//# sourceMappingURL=Attr.d.ts.map","/**\n * Interface for router plugins.\n */\nexport type RouterPlugin = {\n    /**\n     *           Unique plugin identifier.\n     */\n    name: string;\n    /**\n     * Plugin version (recommended to match router version).\n     */\n    version?: string | undefined;\n    /**\n     *           Installation function.\n     */\n    install: (router: Router, options?: Record<string, unknown>) => void;\n    /**\n     * Cleanup function called on router.destroy().\n     */\n    destroy?: ((router: Router) => void | Promise<void>) | undefined;\n};\nexport namespace RouterPlugin {\n    let name: string;\n    let version: string;\n    let description: string;\n    /**\n     * Installs the RouterPlugin into an Eleva instance.\n     *\n     * @public\n     * @param {Eleva} eleva - The Eleva instance.\n     * @param {RouterOptions} options - Router configuration options.\n     * @param {string} options.mount - A CSS selector for the main element where the app is mounted.\n     * @param {RouteDefinition[]} options.routes - An array of route definitions.\n     * @param {'hash' | 'query' | 'history'} [options.mode='hash'] - The routing mode.\n     * @param {string} [options.queryParam='view'] - The query parameter to use in 'query' mode.\n     * @param {string} [options.viewSelector='view'] - Base selector for the view element (matched as #id, .class, [data-*], or raw selector).\n     * @param {boolean} [options.autoStart=true] - Whether to start the router automatically.\n     * @param {NavigationGuard} [options.onBeforeEach] - A global guard executed before every navigation.\n     * @param {RouteComponent} [options.globalLayout] - A global layout for all routes.\n     * @returns {Router} The created router instance.\n     * @throws {Error} If 'mount' option is not provided.\n     * @throws {Error} If 'routes' option is not an array.\n     * @throws {Error} If component registration fails during route processing.\n     * @description\n     * Registers route/layout components, sets `eleva.router`, and adds helpers\n     * (`eleva.navigate`, `eleva.getCurrentRoute`, `eleva.getRouteParams`, `eleva.getRouteQuery`).\n     * When `autoStart` is enabled, startup is scheduled via microtask.\n     *\n     * @example\n     * // main.js\n     * import Eleva from 'eleva';\n     * import { RouterPlugin } from './plugins/RouterPlugin.js';\n     *\n     * const app = new Eleva('myApp');\n     *\n     * const HomePage = { template: () => `<h1>Home</h1>` };\n     * const AboutPage = { template: () => `<h1>About Us</h1>` };\n     *\n     * app.use(RouterPlugin, {\n     *  mount: '#app',\n     *  routes: [\n     *    { path: '/', component: HomePage },\n     *    { path: '/about', component: AboutPage }\n     *  ]\n     * });\n     */\n    function install(eleva: Eleva, options?: RouterOptions): Router;\n    /**\n     * Uninstalls the plugin from the Eleva instance.\n     *\n     * @public\n     * @async\n     * @param {Eleva} eleva - The Eleva instance.\n     * @returns {Promise<void>}\n     * @description\n     * Destroys the router instance, removes `eleva.router`, and deletes helper methods\n     * (`eleva.navigate`, `eleva.getCurrentRoute`, `eleva.getRouteParams`, `eleva.getRouteQuery`).\n     */\n    function uninstall(eleva: Eleva): Promise<void>;\n}\nexport { RouterPlugin as Router };\n/**\n * Type imports from the Eleva core library.\n */\nexport type Eleva = import(\"eleva\").Eleva;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentDefinition = import(\"eleva\").ComponentDefinition;\n/**\n * Type imports from the Eleva core library.\n */\nexport type Emitter = import(\"eleva\").Emitter;\n/**\n * Type imports from the Eleva core library.\n */\nexport type MountResult = import(\"eleva\").MountResult;\n/**\n * Type imports from the Eleva core library.\n */\nexport type UnsubscribeFunction = import(\"eleva\").UnsubscribeFunction;\n/**\n * Generic type import.\n */\nexport type Signal<T> = import(\"eleva\").Signal<T>;\n/**\n * The routing mode determines how the router manages URL state.\n * - `hash`: Uses URL hash (e.g., `/#/path`) - works without server config\n * - `history`: Uses HTML5 History API (e.g., `/path`) - requires server config\n * - `query`: Uses query parameters (e.g., `?view=/path`) - useful for embedded apps\n */\nexport type RouterMode = \"hash\" | \"history\" | \"query\";\n/**\n * Route parameters extracted from the URL path.\n */\nexport type RouteParams = Record<string, string>;\n/**\n * Query parameters from the URL query string.\n */\nexport type QueryParams = Record<string, string>;\n/**\n * Navigation input parameters supporting multiple value types.\n */\nexport type NavigationParams = Record<string, string | number | boolean>;\n/**\n * Function signature for programmatic navigation.\n */\nexport type NavigateFunction = (location: string | NavigationTarget, params?: NavigationParams) => Promise<boolean>;\n/**\n * Router configuration options.\n */\nexport type RouterOptions = {\n    /**\n     * The routing mode to use.\n     */\n    mode?: RouterMode | undefined;\n    /**\n     * Query parameter name for 'query' mode.\n     */\n    queryParam?: string | undefined;\n    /**\n     * Base selector for the view element.\n     */\n    viewSelector?: string | undefined;\n    /**\n     *           CSS selector for the mount point element.\n     */\n    mount: string;\n    /**\n     *           Array of route definitions.\n     */\n    routes: RouteDefinition[];\n    /**\n     * Default layout for all routes.\n     */\n    globalLayout?: RouteComponent | undefined;\n    /**\n     * Global navigation guard.\n     */\n    onBeforeEach?: NavigationGuard | undefined;\n    /**\n     * Whether to start the router automatically.\n     */\n    autoStart?: boolean | undefined;\n};\n/**\n * Object describing a navigation target for `router.navigate()`.\n */\nexport type NavigationTarget = {\n    /**\n     *           The target path (can include params like '/users/:id').\n     */\n    path: string;\n    /**\n     * Route parameters to inject.\n     */\n    params?: NavigationParams | undefined;\n    /**\n     * Query parameters to append.\n     */\n    query?: NavigationParams | undefined;\n    /**\n     * Whether to replace current history entry.\n     */\n    replace?: boolean | undefined;\n    /**\n     * History state to pass.\n     */\n    state?: unknown;\n};\n/**\n * Saved scroll position.\n */\nexport type ScrollPosition = {\n    /**\n     *           Horizontal scroll position.\n     */\n    x: number;\n    /**\n     *           Vertical scroll position.\n     */\n    y: number;\n};\n/**\n * Internal representation of a parsed route path segment.\n */\nexport type RouteSegment = {\n    /**\n     *           The segment type.\n     */\n    type: \"static\" | \"param\";\n    /**\n     * The segment value (static segments).\n     */\n    value?: string | undefined;\n    /**\n     * The parameter name (param segments).\n     */\n    name?: string | undefined;\n};\n/**\n * Result of matching a path against route definitions.\n */\nexport type RouteMatch = {\n    /**\n     *           The matched route definition.\n     */\n    route: RouteDefinition;\n    /**\n     *           The extracted route parameters.\n     */\n    params: RouteParams;\n};\n/**\n * Arbitrary metadata attached to routes for use in guards and components.\n */\nexport type RouteMeta = Record<string, unknown>;\n/**\n * Interface for the router's error handling system.\n */\nexport type RouterErrorHandler = {\n    /**\n     *           Throws a formatted error.\n     */\n    handle: (error: Error, context: string, details?: Record<string, unknown>) => void;\n    /**\n     *           Logs a warning.\n     */\n    warn: (message: string, details?: Record<string, unknown>) => void;\n    /**\n     *           Logs an error without throwing.\n     */\n    log: (message: string, error: Error, details?: Record<string, unknown>) => void;\n};\n/**\n * Callback for `router:beforeEach` event.\n */\nexport type NavigationContextCallback = (context: NavigationContext) => void | Promise<void>;\n/**\n * Callback for `router:beforeResolve` and `router:afterResolve` events.\n */\nexport type ResolveContextCallback = (context: ResolveContext) => void | Promise<void>;\n/**\n * Callback for `router:beforeRender` and `router:afterRender` events.\n */\nexport type RenderContextCallback = (context: RenderContext) => void | Promise<void>;\n/**\n * Callback for `router:scroll` event.\n */\nexport type ScrollContextCallback = (context: ScrollContext) => void | Promise<void>;\n/**\n * Callback for `router:afterEnter`, `router:afterLeave`, `router:afterEach` events.\n */\nexport type RouteChangeCallback = (to: RouteLocation, from: RouteLocation | null) => void | Promise<void>;\n/**\n * Router context injected into component setup as `ctx.router`.\n */\nexport type RouterContext = {\n    /**\n     *           Programmatic navigation function.\n     */\n    navigate: NavigateFunction;\n    /**\n     *           Reactive signal for current route.\n     */\n    current: Signal<RouteLocation | null>;\n    /**\n     *           Reactive signal for previous route.\n     */\n    previous: Signal<RouteLocation | null>;\n    /**\n     *           Current route params (getter).\n     */\n    params: RouteParams;\n    /**\n     *           Current route query (getter).\n     */\n    query: QueryParams;\n    /**\n     *           Current route path (getter).\n     */\n    path: string;\n    /**\n     *           Current routed URL string (getter).\n     */\n    fullUrl: string;\n    /**\n     *           Current route meta (getter).\n     */\n    meta: RouteMeta;\n};\n/**\n * Callback for `router:error` event.\n */\nexport type RouterErrorCallback = (error: Error, to?: RouteLocation | undefined, from?: RouteLocation | null | undefined) => void | Promise<void>;\n/**\n * Callback for `router:ready` event.\n */\nexport type RouterReadyCallback = (router: Router) => void | Promise<void>;\n/**\n * Callback for `router:routeAdded` event.\n */\nexport type RouteAddedCallback = (route: RouteDefinition) => void | Promise<void>;\n/**\n * Callback for `router:routeRemoved` event.\n */\nexport type RouteRemovedCallback = (route: RouteDefinition) => void | Promise<void>;\n/**\n * Represents the current or target location in the router.\n */\nexport type RouteLocation = {\n    /**\n     *           The path of the route (e.g., '/users/123').\n     */\n    path: string;\n    /**\n     *           Query parameters as key-value pairs.\n     */\n    query: QueryParams;\n    /**\n     *           The routed URL string (path plus query).\n     */\n    fullUrl: string;\n    /**\n     *           Dynamic route parameters.\n     */\n    params: RouteParams;\n    /**\n     *           Metadata associated with the matched route.\n     */\n    meta: RouteMeta;\n    /**\n     * The optional name of the matched route.\n     */\n    name?: string | undefined;\n    /**\n     *           The raw route definition that was matched.\n     */\n    matched: RouteDefinition;\n};\n/**\n * Return value of a navigation guard.\n * - `true` or `undefined/void`: Allow navigation\n * - `false`: Abort navigation\n * - `string`: Redirect to path\n * - `NavigationTarget`: Redirect with options\n */\nexport type NavigationGuardResult = boolean | string | NavigationTarget | void;\n/**\n * Navigation guard function that controls navigation flow.\n */\nexport type NavigationGuard = (to: RouteLocation, from: RouteLocation | null) => NavigationGuardResult | Promise<NavigationGuardResult>;\n/**\n * Navigation hook for side effects. Does not affect navigation flow.\n */\nexport type NavigationHook = (to: RouteLocation, from: RouteLocation | null) => void | Promise<void>;\n/**\n * Context object for navigation events that plugins can modify.\n */\nexport type NavigationContext = {\n    /**\n     *           The target route location.\n     */\n    to: RouteLocation;\n    /**\n     *           The source route location.\n     */\n    from: RouteLocation | null;\n    /**\n     *           Whether navigation has been cancelled.\n     */\n    cancelled: boolean;\n    /**\n     *           Redirect target if set.\n     */\n    redirectTo: string | NavigationTarget | null;\n};\n/**\n * Context object for component resolution events.\n */\nexport type ResolveContext = {\n    /**\n     *           The target route location.\n     */\n    to: RouteLocation;\n    /**\n     *           The source route location.\n     */\n    from: RouteLocation | null;\n    /**\n     *           The matched route definition.\n     */\n    route: RouteDefinition;\n    /**\n     *           The resolved layout component (available in afterResolve).\n     */\n    layoutComponent: ComponentDefinition | null;\n    /**\n     *           The resolved page component (available in afterResolve).\n     */\n    pageComponent: ComponentDefinition | null;\n    /**\n     *           Whether navigation has been cancelled.\n     */\n    cancelled: boolean;\n    /**\n     *           Redirect target if set.\n     */\n    redirectTo: string | NavigationTarget | null;\n};\n/**\n * Context object for render events.\n */\nexport type RenderContext = {\n    /**\n     *           The target route location.\n     */\n    to: RouteLocation;\n    /**\n     *           The source route location.\n     */\n    from: RouteLocation | null;\n    /**\n     *           The layout component being rendered.\n     */\n    layoutComponent: ComponentDefinition | null;\n    /**\n     *           The page component being rendered.\n     */\n    pageComponent: ComponentDefinition;\n};\n/**\n * Context object for scroll events.\n */\nexport type ScrollContext = {\n    /**\n     *           The target route location.\n     */\n    to: RouteLocation;\n    /**\n     *           The source route location.\n     */\n    from: RouteLocation | null;\n    /**\n     *           Saved position (back/forward nav).\n     */\n    savedPosition: {\n        x: number;\n        y: number;\n    } | null;\n};\n/**\n * A component that can be rendered for a route.\n * - `string`: Name of a registered component\n * - `ComponentDefinition`: Inline component definition\n * - `() => ComponentDefinition`: Factory function returning a component\n * - `() => Promise<ComponentDefinition>`: Async factory function\n * - `() => Promise<{default: ComponentDefinition}>`: Lazy-loaded module (e.g., `() => import('./Page.js')`)\n */\nexport type RouteComponent = string | ComponentDefinition | (() => ComponentDefinition | Promise<ComponentDefinition | {\n    default: ComponentDefinition;\n}>);\n/**\n * Defines a route in the application.\n */\nexport type RouteDefinition = {\n    /**\n     *           URL path pattern. Supports:\n     *           - Static: '/about'\n     *           - Dynamic params: '/users/:id'\n     *           - Wildcard: '*' (catch-all, conventionally last)\n     */\n    path: string;\n    /**\n     *           The component to render for this route.\n     */\n    component: RouteComponent;\n    /**\n     * Optional layout component to wrap the route component.\n     */\n    layout?: RouteComponent | undefined;\n    /**\n     * Optional route name for programmatic navigation.\n     */\n    name?: string | undefined;\n    /**\n     * Optional metadata (auth flags, titles, etc.).\n     */\n    meta?: RouteMeta | undefined;\n    /**\n     * Route-specific guard before entering.\n     */\n    beforeEnter?: NavigationGuard | undefined;\n    /**\n     * Hook after entering and component is mounted.\n     */\n    afterEnter?: NavigationHook | undefined;\n    /**\n     * Guard before leaving this route.\n     */\n    beforeLeave?: NavigationGuard | undefined;\n    /**\n     * Hook after leaving and component is unmounted.\n     */\n    afterLeave?: NavigationHook | undefined;\n    /**\n     * Internal: parsed path segments (added by router).\n     */\n    segments?: RouteSegment[] | undefined;\n};\n/**\n * Represents the current or target location in the router.\n * @typedef {Object} RouteLocation\n * @property {string} path\n *           The path of the route (e.g., '/users/123').\n * @property {QueryParams} query\n *           Query parameters as key-value pairs.\n * @property {string} fullUrl\n *           The routed URL string (path plus query).\n * @property {RouteParams} params\n *           Dynamic route parameters.\n * @property {RouteMeta} meta\n *           Metadata associated with the matched route.\n * @property {string} [name]\n *           The optional name of the matched route.\n * @property {RouteDefinition} matched\n *           The raw route definition that was matched.\n * @description Represents the current or target location in the router.\n */\n/**\n * Return value of a navigation guard.\n * - `true` or `undefined/void`: Allow navigation\n * - `false`: Abort navigation\n * - `string`: Redirect to path\n * - `NavigationTarget`: Redirect with options\n * @typedef {boolean | string | NavigationTarget | void} NavigationGuardResult\n */\n/**\n * Navigation guard function that controls navigation flow.\n * @callback NavigationGuard\n * @param {RouteLocation} to\n *        The target route location.\n * @param {RouteLocation | null} from\n *        The source route location (null on initial).\n * @returns {NavigationGuardResult | Promise<NavigationGuardResult>}\n * @description A function that controls navigation flow. Runs before navigation is confirmed.\n * @example\n * // Simple auth guard\n * const authGuard = (to, from) => {\n *   if (to.meta.requiresAuth && !isLoggedIn()) {\n *     return '/login'; // Redirect\n *   }\n *   // Allow navigation (implicit return undefined)\n * };\n */\n/**\n * Navigation hook for side effects. Does not affect navigation flow.\n * @callback NavigationHook\n * @param {RouteLocation} to\n *        The target route location.\n * @param {RouteLocation | null} from\n *        The source route location.\n * @returns {void | Promise<void>}\n * @description A lifecycle hook for side effects. Does not affect navigation flow.\n * @example\n * // Analytics hook\n * const analyticsHook = (to, from) => {\n *   analytics.trackPageView(to.path);\n * };\n */\n/**\n * Interface for router plugins.\n * @typedef {Object} RouterPlugin\n * @property {string} name\n *           Unique plugin identifier.\n * @property {string} [version]\n *           Plugin version (recommended to match router version).\n * @property {(router: Router, options?: Record<string, unknown>) => void} install\n *           Installation function.\n * @property {(router: Router) => void | Promise<void>} [destroy]\n *           Cleanup function called on router.destroy().\n * @description Interface for router plugins. Plugins can extend router functionality.\n * @example\n * const AnalyticsPlugin = {\n *   name: 'analytics',\n *   version: '1.0.0',\n *   install(router, options) {\n *     router.emitter.on('router:afterEach', (to, from) => {\n *       analytics.track(to.path);\n *     });\n *   }\n * };\n */\n/**\n * Context object for navigation events that plugins can modify.\n * @typedef {Object} NavigationContext\n * @property {RouteLocation} to\n *           The target route location.\n * @property {RouteLocation | null} from\n *           The source route location.\n * @property {boolean} cancelled\n *           Whether navigation has been cancelled.\n * @property {string | NavigationTarget | null} redirectTo\n *           Redirect target if set.\n * @description Passed to navigation events. Plugins can modify to control navigation flow.\n */\n/**\n * Context object for component resolution events.\n * @typedef {Object} ResolveContext\n * @property {RouteLocation} to\n *           The target route location.\n * @property {RouteLocation | null} from\n *           The source route location.\n * @property {RouteDefinition} route\n *           The matched route definition.\n * @property {ComponentDefinition | null} layoutComponent\n *           The resolved layout component (available in afterResolve).\n * @property {ComponentDefinition | null} pageComponent\n *           The resolved page component (available in afterResolve).\n * @property {boolean} cancelled\n *           Whether navigation has been cancelled.\n * @property {string | NavigationTarget | null} redirectTo\n *           Redirect target if set.\n * @description Passed to component resolution events.\n */\n/**\n * Context object for render events.\n * @typedef {Object} RenderContext\n * @property {RouteLocation} to\n *           The target route location.\n * @property {RouteLocation | null} from\n *           The source route location.\n * @property {ComponentDefinition | null} layoutComponent\n *           The layout component being rendered.\n * @property {ComponentDefinition} pageComponent\n *           The page component being rendered.\n * @description Passed to render events.\n */\n/**\n * Context object for scroll events.\n * @typedef {Object} ScrollContext\n * @property {RouteLocation} to\n *           The target route location.\n * @property {RouteLocation | null} from\n *           The source route location.\n * @property {{x: number, y: number} | null} savedPosition\n *           Saved position (back/forward nav).\n * @description Passed to scroll events for plugins to handle scroll behavior.\n */\n/**\n * A component that can be rendered for a route.\n * - `string`: Name of a registered component\n * - `ComponentDefinition`: Inline component definition\n * - `() => ComponentDefinition`: Factory function returning a component\n * - `() => Promise<ComponentDefinition>`: Async factory function\n * - `() => Promise<{default: ComponentDefinition}>`: Lazy-loaded module (e.g., `() => import('./Page.js')`)\n * @typedef {string | ComponentDefinition | (() => ComponentDefinition | Promise<ComponentDefinition | {default: ComponentDefinition}>)} RouteComponent\n */\n/**\n * Defines a route in the application.\n * @typedef {Object} RouteDefinition\n * @property {string} path\n *           URL path pattern. Supports:\n *           - Static: '/about'\n *           - Dynamic params: '/users/:id'\n *           - Wildcard: '*' (catch-all, conventionally last)\n * @property {RouteComponent} component\n *           The component to render for this route.\n * @property {RouteComponent} [layout]\n *           Optional layout component to wrap the route component.\n * @property {string} [name]\n *           Optional route name for programmatic navigation.\n * @property {RouteMeta} [meta]\n *           Optional metadata (auth flags, titles, etc.).\n * @property {NavigationGuard} [beforeEnter]\n *           Route-specific guard before entering.\n * @property {NavigationHook} [afterEnter]\n *           Hook after entering and component is mounted.\n * @property {NavigationGuard} [beforeLeave]\n *           Guard before leaving this route.\n * @property {NavigationHook} [afterLeave]\n *           Hook after leaving and component is unmounted.\n * @property {RouteSegment[]} [segments]\n *           Internal: parsed path segments (added by router).\n * @description Defines a route in the application.\n * @note Nested routes are not supported. Use shared layouts with flat routes instead.\n * @example\n * // Static route\n * { path: '/about', component: AboutPage }\n *\n * // Dynamic route with params\n * { path: '/users/:id', component: UserPage, meta: { requiresAuth: true } }\n *\n * // Lazy-loaded route with layout\n * {\n *   path: '/dashboard',\n *   component: () => import('./Dashboard.js'),\n *   layout: DashboardLayout,\n *   beforeEnter: (to, from) => isLoggedIn() || '/login'\n * }\n *\n * // Catch-all 404 route (conventionally last)\n * { path: '*', component: NotFoundPage }\n */\n/**\n * @class 🛤️ Router\n * @classdesc A powerful, reactive, and flexible Router Plugin for Eleva.\n * This class manages all routing logic, including state, navigation, and rendering.\n *\n * ## Features\n * - Multiple routing modes (hash, history, query)\n * - Reactive route state via Signals\n * - Navigation guards and lifecycle hooks\n * - Lazy-loaded components\n * - Layout system\n * - Plugin architecture\n * - Scroll position management\n *\n * ## Events Reference\n * | Event | Callback Type | Can Block | Description |\n * |-------|--------------|-----------|-------------|\n * | `router:ready` | {@link RouterReadyCallback} | No | Router initialized |\n * | `router:beforeEach` | {@link NavigationContextCallback} | Yes | Before guards run |\n * | `router:beforeResolve` | {@link ResolveContextCallback} | Yes | Before component loading |\n * | `router:afterResolve` | {@link ResolveContextCallback} | No | After components loaded |\n * | `router:afterLeave` | {@link RouteChangeCallback} | No | After leaving route |\n * | `router:beforeRender` | {@link RenderContextCallback} | No | Before DOM update |\n * | `router:afterRender` | {@link RenderContextCallback} | No | After DOM update |\n * | `router:scroll` | {@link ScrollContextCallback} | No | For scroll behavior |\n * | `router:afterEnter` | {@link RouteChangeCallback} | No | After entering route |\n * | `router:afterEach` | {@link RouteChangeCallback} | No | Navigation complete |\n * | `router:error` | {@link RouterErrorCallback} | No | Navigation error |\n * | `router:routeAdded` | {@link RouteAddedCallback} | No | Dynamic route added |\n * | `router:routeRemoved` | {@link RouteRemovedCallback} | No | Dynamic route removed |\n *\n * ## Reactive Signals\n * - `currentRoute: Signal<RouteLocation | null>` - Current route info\n * - `previousRoute: Signal<RouteLocation | null>` - Previous route info\n * - `currentParams: Signal<RouteParams>` - Current route params\n * - `currentQuery: Signal<QueryParams>` - Current query params\n * - `currentLayout: Signal<MountResult | null>` - Mounted layout instance\n * - `currentView: Signal<MountResult | null>` - Mounted view instance\n * - `isReady: Signal<boolean>` - Router readiness state\n *\n * @note Internal API Access Policy:\n * As a core Eleva plugin, the Router may access internal Eleva APIs (prefixed with _)\n * such as `eleva._components`. This is intentional and these internal APIs are\n * considered stable for official plugins. Third-party plugins should avoid\n * accessing internal APIs as they may change without notice.\n *\n * @example\n * // Basic setup\n * const router = new Router(eleva, {\n *   mode: 'hash',\n *   mount: '#app',\n *   routes: [\n *     { path: '/', component: HomePage },\n *     { path: '/users/:id', component: UserPage },\n *     { path: '*', component: NotFoundPage }\n *   ]\n * });\n *\n * // Start router\n * await router.start();\n *\n * // Navigate programmatically\n * const success = await router.navigate('/users/123');\n *\n * // Watch for route changes\n * router.currentRoute.watch((route) => {\n *   document.title = route?.meta?.title || 'My App';\n * });\n *\n * @private\n */\ndeclare class Router {\n    /**\n     * Creates an instance of the Router.\n     * @param {Eleva} eleva - The Eleva framework instance.\n     * @param {RouterOptions} options - The configuration options for the router.\n     * @throws {Error} If the routing mode is invalid.\n     */\n    constructor(eleva: Eleva, options?: RouterOptions);\n    /** @type {Eleva} The Eleva framework instance. */\n    eleva: Eleva;\n    /** @type {RouterOptions} The merged router options. */\n    options: RouterOptions;\n    /** @private @type {RouteDefinition[]} The processed list of route definitions. */\n    private routes;\n    /** @private @type {Emitter} The shared Eleva event emitter for global hooks. */\n    private emitter;\n    /** @private @type {boolean} A flag indicating if the router has been started. */\n    private isStarted;\n    /** @private @type {boolean} A flag to prevent navigation loops from history events. */\n    private _isNavigating;\n    /** @private @type {number} Counter for tracking navigation operations to prevent race conditions. */\n    private _navigationId;\n    /** @private @type {UnsubscribeFunction[]} A collection of cleanup functions for event listeners. */\n    private eventListeners;\n    /** @type {Signal<RouteLocation | null>} A reactive signal holding the current route's information. */\n    currentRoute: Signal<RouteLocation | null>;\n    /** @type {Signal<RouteLocation | null>} A reactive signal holding the previous route's information. */\n    previousRoute: Signal<RouteLocation | null>;\n    /** @type {Signal<RouteParams>} A reactive signal holding the current route's parameters. */\n    currentParams: Signal<RouteParams>;\n    /** @type {Signal<QueryParams>} A reactive signal holding the current route's query parameters. */\n    currentQuery: Signal<QueryParams>;\n    /** @type {Signal<MountResult | null>} A reactive signal for the currently mounted layout instance. */\n    currentLayout: Signal<MountResult | null>;\n    /** @type {Signal<MountResult | null>} A reactive signal for the currently mounted view (page) instance. */\n    currentView: Signal<MountResult | null>;\n    /** @type {Signal<boolean>} A reactive signal indicating if the router is ready (started and initial navigation complete). */\n    isReady: Signal<boolean>;\n    /** @private @type {Map<string, RouterPlugin>} Map of registered plugins by name. */\n    private plugins;\n    /** @private @type {NavigationGuard[]} Array of global before-each navigation guards. */\n    private _beforeEachGuards;\n    /** @type {RouterErrorHandler} The error handler instance. Can be overridden by plugins. */\n    errorHandler: RouterErrorHandler;\n    /** @private @type {Map<string, {x: number, y: number}>} Saved scroll positions by route path. */\n    private _scrollPositions;\n    /**\n     * Validates the provided router options.\n     * @private\n     * @throws {Error} If the routing mode is invalid.\n     */\n    private _validateOptions;\n    /**\n     * Pre-processes route definitions to parse their path segments for efficient matching.\n     * @private\n     * @param {RouteDefinition[]} routes - The raw route definitions.\n     * @returns {RouteDefinition[]} The processed routes.\n     */\n    private _processRoutes;\n    /**\n     * Parses a route path string into an array of static and parameter segments.\n     * @private\n     * @param {string} path - The path pattern to parse.\n     * @returns {{type: 'static' | 'param', value?: string, name?: string}[]} An array of segment objects.\n     * @throws {Error} If the route path is not a valid string.\n     */\n    private _parsePathIntoSegments;\n    /**\n     * Finds the view element within a container using multiple selector strategies.\n     * @private\n     * @param {HTMLElement} container - The parent element to search within.\n     * @returns {HTMLElement} The found view element or the container itself as a fallback.\n     */\n    private _findViewElement;\n    /**\n     * Starts the router, initializes event listeners, and performs the initial navigation.\n     * @returns {Promise<Router>} The router instance for method chaining.\n     * @listens window:hashchange In hash mode, triggers route changes.\n     * @listens window:popstate In history/query mode, triggers route changes.\n     * @emits router:ready When initialization completes successfully.\n     * @see destroy - Stop the router and clean up listeners.\n     * @see navigate - Programmatically navigate to a route.\n     *\n     * @example\n     * // Basic usage\n     * await router.start();\n     *\n     * // Method chaining\n     * await router.start().then(r => r.navigate('/home'));\n     *\n     * // Reactive readiness\n     * router.isReady.watch((ready) => {\n     *   if (ready) console.log('Router is ready!');\n     * });\n     */\n    start(): Promise<Router>;\n    /**\n     * Stops the router and cleans up event listeners.\n     * Unmounts the current layout instance if present.\n     * @async\n     * @returns {Promise<void>}\n     * @see start - Restart the router after destroying.\n     */\n    destroy(): Promise<void>;\n    /**\n     * Alias for destroy(). Stops the router and cleans up all resources.\n     * Provided for semantic consistency (start/stop pattern).\n     * @async\n     * @returns {Promise<void>}\n     *\n     * @example\n     * await router.start();\n     * // ... later\n     * await router.stop();\n     */\n    stop(): Promise<void>;\n    /**\n     * Programmatically navigates to a new route.\n     * @async\n     * @param {string | NavigationTarget} location - The target location as a path string or navigation target object.\n     * @param {NavigationParams} [params] - Route parameters (only used when location is a string).\n     * @returns {Promise<boolean>} True if navigation succeeded, false if blocked by guards or failed.\n     * @emits router:error When navigation fails due to an exception.\n     * @see start - Initialize the router before navigating.\n     * @see currentRoute - Access the current route after navigation.\n     *\n     * @example\n     * // Basic navigation\n     * await router.navigate('/users/123');\n     *\n     * // Check if navigation succeeded\n     * const success = await router.navigate('/protected');\n     * if (!success) {\n     *   console.log('Navigation was blocked by a guard');\n     * }\n     *\n     * // Navigate with options\n     * await router.navigate({\n     *   path: '/users/:id',\n     *   params: { id: '123' },\n     *   query: { tab: 'profile' },\n     *   replace: true\n     * });\n     */\n    navigate(location: string | NavigationTarget, params?: NavigationParams): Promise<boolean>;\n    /**\n     * Builds a URL for query mode.\n     * @private\n     * @param {string} path - The path to set as the query parameter.\n     * @returns {string} The full URL with the updated query string.\n     */\n    private _buildQueryUrl;\n    /**\n     * Checks if the target route is identical to the current route.\n     * @private\n     * @param {string} path - The target path with query string.\n     * @param {object} params - The target params.\n     * @param {object} query - The target query.\n     * @returns {boolean} True if the routes are the same.\n     */\n    private _isSameRoute;\n    /**\n     * Injects dynamic parameters into a path string.\n     * Replaces `:param` placeholders with URL-encoded values from the params object.\n     *\n     * @private\n     * @param {string} path - The path pattern containing `:param` placeholders.\n     * @param {RouteParams} params - Key-value pairs to inject into the path.\n     * @returns {string} The path with all parameters replaced.\n     *\n     * @example\n     * this._buildPath('/users/:id/posts/:postId', { id: '123', postId: '456' });\n     * // Returns: '/users/123/posts/456'\n     */\n    private _buildPath;\n    /**\n     * The handler for browser-initiated route changes (e.g., back/forward buttons).\n     *\n     * @private\n     * @async\n     * @param {boolean} [isPopState=true] - Whether this is a popstate event (back/forward navigation).\n     * @returns {Promise<void>}\n     * @emits router:error When route change handling fails.\n     */\n    private _handleRouteChange;\n    /**\n     * Manages the core navigation lifecycle. Runs guards before committing changes.\n     *\n     * @private\n     * @async\n     * @param {string} fullPath - The full path (e.g., '/users/123?foo=bar') to navigate to.\n     * @param {boolean} [isPopState=false] - Whether this navigation was triggered by popstate (back/forward).\n     * @returns {Promise<boolean>} `true` if navigation succeeded, `false` if aborted.\n     * @emits router:error When no matching route is found (and no catch-all route exists),\n     * or when an error occurs during navigation.\n     * @emits router:beforeResolve Before component resolution (can block/redirect).\n     * @emits router:afterResolve After components are resolved.\n     * @emits router:afterLeave After leaving the previous route.\n     * @emits router:beforeRender Before DOM rendering.\n     * @emits router:afterRender After DOM rendering completes.\n     * @emits router:scroll After render, for scroll behavior handling.\n     * @emits router:afterEnter After entering the new route.\n     * @emits router:afterEach After navigation completes successfully.\n     * @see _runGuards - Guard execution.\n     * @see _resolveComponents - Component resolution.\n     * @see _render - DOM rendering.\n     */\n    private _proceedWithNavigation;\n    /**\n     * Executes all applicable navigation guards for a transition in order.\n     * Guards are executed in the following order:\n     * 1. Global beforeEach event (emitter-based, can block via context)\n     * 2. Global beforeEach guards (registered via onBeforeEach)\n     * 3. Route-specific beforeLeave guard (from the route being left)\n     * 4. Route-specific beforeEnter guard (from the route being entered)\n     *\n     * @private\n     * @param {RouteLocation} to - The target route location.\n     * @param {RouteLocation | null} from - The current route location (null on initial navigation).\n     * @param {RouteDefinition} route - The matched route definition.\n     * @returns {Promise<boolean>} `false` if navigation should be aborted.\n     * @emits router:beforeEach Before guards run (can block/redirect via context).\n     */\n    private _runGuards;\n    /**\n     * Resolves a string component definition to a component object.\n     * @private\n     * @param {string} def - The component name to resolve.\n     * @returns {ComponentDefinition} The resolved component.\n     * @throws {Error} If the component is not registered.\n     *\n     * @note Core plugins (Router, Attr, Store) may access eleva._components\n     * directly. This is intentional and stable for official Eleva plugins shipped\n     * with the framework. Third-party plugins should use eleva.component() for\n     * registration and avoid direct access to internal APIs.\n     */\n    private _resolveStringComponent;\n    /**\n     * Resolves a function component definition to a component object.\n     * @private\n     * @async\n     * @param {() => ComponentDefinition | Promise<ComponentDefinition | { default: ComponentDefinition }>} def - The function to resolve.\n     * @returns {Promise<ComponentDefinition>} The resolved component.\n     * @throws {Error} If the function fails to load the component.\n     */\n    private _resolveFunctionComponent;\n    /**\n     * Validates a component definition object.\n     * @private\n     * @param {unknown} def - The component definition to validate.\n     * @returns {ComponentDefinition} The validated component.\n     * @throws {Error} If the component definition is invalid.\n     */\n    private _validateComponentDefinition;\n    /**\n     * Resolves a component definition to a component object.\n     * @private\n     * @param {unknown} def - The component definition to resolve.\n     * @returns {Promise<ComponentDefinition | null>} The resolved component or null.\n     */\n    private _resolveComponent;\n    /**\n     * Asynchronously resolves the layout and page components for a route.\n     * @private\n     * @async\n     * @param {RouteDefinition} route - The route to resolve components for.\n     * @returns {Promise<{layoutComponent: ComponentDefinition | null, pageComponent: ComponentDefinition}>}\n     * @throws {Error} If page component cannot be resolved.\n     */\n    private _resolveComponents;\n    /**\n     * Renders the components for the current route into the DOM.\n     *\n     * Rendering algorithm:\n     * 1. Find the mount element using options.mount selector\n     * 2. If layoutComponent exists:\n     *    a. Mount layout to mount element\n     *    b. Find view element within layout (using viewSelector)\n     *    c. Mount page component to view element\n     * 3. If no layoutComponent:\n     *    a. Mount page component directly to mount element\n     *    b. Set currentLayout to null\n     *\n     * @private\n     * @async\n     * @param {ComponentDefinition | null} layoutComponent - The pre-loaded layout component.\n     * @param {ComponentDefinition} pageComponent - The pre-loaded page component.\n     * @returns {Promise<void>}\n     * @throws {Error} If mount element is not found in the DOM.\n     * @throws {Error} If component mounting fails (propagated from eleva.mount).\n     */\n    private _render;\n    /**\n     * Creates a getter function for router context properties.\n     * @private\n     * @param {string} property - The property name to access.\n     * @param {unknown} defaultValue - The default value if property is undefined.\n     * @returns {() => unknown} A getter function.\n     */\n    private _createRouteGetter;\n    /**\n     * Wraps a component definition to inject router-specific context into its setup function.\n     * @private\n     * @param {ComponentDefinition} component - The component to wrap.\n     * @returns {ComponentDefinition} The wrapped component definition.\n     */\n    private _wrapComponent;\n    /**\n     * Recursively wraps all child components to ensure they have access to router context.\n     * String component references are returned as-is (context injected during mount).\n     * Objects are wrapped with router context and their children are recursively wrapped.\n     *\n     * @private\n     * @param {ComponentDefinition | string} component - The component to wrap (can be a definition object or a registered component name).\n     * @returns {ComponentDefinition | string} The wrapped component definition or the original string reference.\n     * @see _wrapComponent - Single component wrapping.\n     */\n    private _wrapComponentWithChildren;\n    /**\n     * Gets the current location information from the browser's window object.\n     * @private\n     * @returns {Omit<RouteLocation, 'params' | 'meta' | 'name' | 'matched'>}\n     */\n    private _getCurrentLocation;\n    /**\n     * Parses a query string into a key-value object.\n     * Uses URLSearchParams for robust parsing of encoded values.\n     *\n     * @private\n     * @param {string} queryString - The query string to parse (without leading '?').\n     * @returns {QueryParams} Key-value pairs from the query string.\n     *\n     * @example\n     * this._parseQuery('foo=bar&baz=qux');\n     * // Returns: { foo: 'bar', baz: 'qux' }\n     */\n    private _parseQuery;\n    /**\n     * Matches a given path against the registered routes.\n     * @private\n     * @param {string} path - The path to match.\n     * @returns {{route: RouteDefinition, params: Object<string, string>} | null} The matched route and its params, or null.\n     */\n    private _matchRoute;\n    /**\n     * Adds a new route dynamically at runtime.\n     * The route will be processed and available for navigation immediately.\n     * Routes are inserted before the wildcard (*) route if one exists.\n     *\n     * @param {RouteDefinition} route - The route definition to add.\n     * @param {RouteDefinition} [parentRoute] - Optional parent route to add as a child (not yet implemented).\n     * @returns {() => void} A function to remove the added route (returns no-op if route was invalid).\n     * @emits router:routeAdded When a route is successfully added.\n     *\n     * @example\n     * // Add a route dynamically\n     * const removeRoute = router.addRoute({\n     *   path: '/dynamic',\n     *   component: DynamicPage,\n     *   meta: { title: 'Dynamic Page' }\n     * });\n     *\n     * // Later, remove the route\n     * removeRoute();\n     */\n    addRoute(route: RouteDefinition, parentRoute?: RouteDefinition): () => void;\n    /**\n     * Removes a route by its path.\n     *\n     * @param {string} path - The path of the route to remove.\n     * @returns {boolean} True if the route was removed, false if not found.\n     * @emits router:routeRemoved When a route is successfully removed.\n     *\n     * @example\n     * router.removeRoute('/dynamic');\n     */\n    removeRoute(path: string): boolean;\n    /**\n     * Checks if a route with the given path exists.\n     *\n     * @param {string} path - The path to check.\n     * @returns {boolean} True if the route exists.\n     *\n     * @example\n     * if (router.hasRoute('/users/:id')) {\n     *   console.log('User route exists');\n     * }\n     */\n    hasRoute(path: string): boolean;\n    /**\n     * Gets all registered routes.\n     *\n     * @returns {RouteDefinition[]} A copy of the routes array.\n     *\n     * @example\n     * const routes = router.getRoutes();\n     * console.log('Available routes:', routes.map(r => r.path));\n     */\n    getRoutes(): RouteDefinition[];\n    /**\n     * Gets a route by its path.\n     *\n     * @param {string} path - The path of the route to get.\n     * @returns {RouteDefinition | undefined} The route definition or undefined.\n     *\n     * @example\n     * const route = router.getRoute('/users/:id');\n     * if (route) {\n     *   console.log('Route meta:', route.meta);\n     * }\n     */\n    getRoute(path: string): RouteDefinition | undefined;\n    /**\n     * Registers a global pre-navigation guard.\n     * Multiple guards can be registered and will be executed in order.\n     * Guards can also be registered via the emitter using `router:beforeEach` event.\n     *\n     * @param {NavigationGuard} guard - The guard function to register.\n     * @returns {() => void} A function to unregister the guard.\n     *\n     * @example\n     * // Register a guard\n     * const unregister = router.onBeforeEach((to, from) => {\n     *   if (to.meta.requiresAuth && !isAuthenticated()) {\n     *     return '/login';\n     *   }\n     * });\n     *\n     * // Later, unregister the guard\n     * unregister();\n     */\n    onBeforeEach(guard: NavigationGuard): () => void;\n    /**\n     * Registers a global hook that runs after a new route component has been mounted.\n     * @param {NavigationHook} hook - The hook function to register.\n     * @returns {() => void} A function to unregister the hook.\n     * @listens router:afterEnter\n     */\n    onAfterEnter(hook: NavigationHook): () => void;\n    /**\n     * Registers a global hook that runs after a route component has been unmounted.\n     * @param {NavigationHook} hook - The hook function to register.\n     * @returns {() => void} A function to unregister the hook.\n     * @listens router:afterLeave\n     */\n    onAfterLeave(hook: NavigationHook): () => void;\n    /**\n     * Registers a global hook that runs after a navigation has been confirmed and all hooks have completed.\n     * @param {NavigationHook} hook - The hook function to register.\n     * @returns {() => void} A function to unregister the hook.\n     * @listens router:afterEach\n     */\n    onAfterEach(hook: NavigationHook): () => void;\n    /**\n     * Registers a global error handler for navigation errors.\n     * @param {(error: Error, to?: RouteLocation, from?: RouteLocation) => void} handler - The error handler function.\n     * @returns {() => void} A function to unregister the handler.\n     * @listens router:error\n     */\n    onError(handler: (error: Error, to?: RouteLocation, from?: RouteLocation) => void): () => void;\n    /**\n     * Registers a plugin with the router.\n     * Logs a warning if the plugin is already registered.\n     *\n     * @param {RouterPlugin} plugin - The plugin to register (must have install method).\n     * @param {Record<string, unknown>} [options={}] - Options to pass to plugin.install().\n     * @returns {void}\n     * @throws {Error} If plugin does not have an install method.\n     */\n    use(plugin: RouterPlugin, options?: Record<string, unknown>): void;\n    /**\n     * Gets all registered plugins.\n     * @returns {RouterPlugin[]} Array of registered plugins.\n     */\n    getPlugins(): RouterPlugin[];\n    /**\n     * Gets a plugin by name.\n     * @param {string} name - The plugin name.\n     * @returns {RouterPlugin | undefined} The plugin or undefined.\n     */\n    getPlugin(name: string): RouterPlugin | undefined;\n    /**\n     * Removes a plugin from the router.\n     * @param {string} name - The plugin name.\n     * @returns {boolean} True if the plugin was removed.\n     */\n    removePlugin(name: string): boolean;\n    /**\n     * Sets a custom error handler. Used by error handling plugins.\n     * Logs a warning if the provided handler is invalid (missing required methods).\n     * @param {RouterErrorHandler} errorHandler - The error handler object with handle, warn, and log methods.\n     * @returns {void}\n     */\n    setErrorHandler(errorHandler: RouterErrorHandler): void;\n}\n//# sourceMappingURL=Router.d.ts.map","export namespace StorePlugin {\n    let name: string;\n    let version: string;\n    let description: string;\n    /**\n     * Installs the plugin into the Eleva instance.\n     *\n     * @public\n     * @param {Eleva} eleva - The Eleva instance.\n     * @param {StoreOptions} options - Plugin configuration options.\n     * @param {Record<string, unknown>} [options.state={}] - Initial state object.\n     * @param {Record<string, ActionFunction>} [options.actions={}] - Action functions for state mutations.\n     * @param {Record<string, StoreModule>} [options.namespaces={}] - Namespaced modules for organizing store.\n     * @param {StorePersistenceOptions} [options.persistence] - Persistence configuration.\n     * @param {boolean} [options.persistence.enabled=false] - Enable state persistence.\n     * @param {string} [options.persistence.key=\"eleva-store\"] - Storage key.\n     * @param {'localStorage' | 'sessionStorage'} [options.persistence.storage=\"localStorage\"] - Storage type.\n     * @param {string[]} [options.persistence.include] - Dot-path prefixes to persist (e.g., \"auth.user\")\n     * @param {string[]} [options.persistence.exclude] - Dot-path prefixes to exclude (applies when include is empty).\n     * @param {boolean} [options.devTools=false] - Enable development tools integration.\n     * @param {(error: Error, context: string) => void} [options.onError=null] - Error handler function.\n     * @returns {void}\n     * @description\n     * Installs the store and injects `store` into component setup context by wrapping\n     * `eleva.mount` and `eleva._mountComponents`. Also exposes `eleva.store` and\n     * helper methods (`eleva.dispatch`, `eleva.getState`, `eleva.subscribe`, `eleva.createAction`).\n     * Uninstall restores the originals.\n     *\n     * @example\n     * // Basic installation\n     * app.use(StorePlugin, {\n     *   state: { count: 0, user: null },\n     *   actions: {\n     *     increment: (state) => state.count.value++,\n     *     setUser: (state, user) => state.user.value = user\n     *   }\n     * });\n     *\n     * // Advanced installation with persistence and namespaces\n     * app.use(StorePlugin, {\n     *   state: { theme: \"light\" },\n     *   namespaces: {\n     *     auth: {\n     *       state: { user: null, token: null },\n     *       actions: {\n     *         login: (state, { user, token }) => {\n     *           state.auth.user.value = user;\n     *           state.auth.token.value = token;\n     *         },\n     *         logout: (state) => {\n     *           state.auth.user.value = null;\n     *           state.auth.token.value = null;\n     *         }\n     *       }\n     *     }\n     *   },\n     *   persistence: {\n     *     enabled: true,\n     *     include: [\"theme\", \"auth.user\"]\n     *   }\n     * });\n     */\n    function install(eleva: Eleva, options?: StoreOptions): void;\n    /**\n     * Uninstalls the plugin from the Eleva instance.\n     *\n     * @public\n     * @param {Eleva} eleva - The Eleva instance.\n     * @returns {void}\n     * @description\n     * Restores the original Eleva methods and removes all plugin-specific\n     * functionality. This method should be called when the plugin is no\n     * longer needed.\n     * Also removes `eleva.store` and top-level helpers (`eleva.dispatch`,\n     * `eleva.getState`, `eleva.subscribe`, `eleva.createAction`).\n     *\n     * @example\n     * // Uninstall the plugin\n     * StorePlugin.uninstall(app);\n     */\n    function uninstall(eleva: Eleva): void;\n}\nexport { StorePlugin as Store };\n/**\n * Type imports from the Eleva core library.\n */\nexport type Eleva = import(\"eleva\").Eleva;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentDefinition = import(\"eleva\").ComponentDefinition;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentContext = import(\"eleva\").ComponentContext;\n/**\n * Type imports from the Eleva core library.\n */\nexport type SetupResult = import(\"eleva\").SetupResult;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentProps = import(\"eleva\").ComponentProps;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ChildrenMap = import(\"eleva\").ChildrenMap;\n/**\n * Type imports from the Eleva core library.\n */\nexport type MountResult = import(\"eleva\").MountResult;\n/**\n * Generic type import.\n */\nexport type Signal<T> = import(\"eleva\").Signal<T>;\n/**\n * Mutation record emitted to subscribers.\n */\nexport type StoreMutation = {\n    /**\n     *           The action name that was dispatched.\n     */\n    type: string;\n    /**\n     *           The payload passed to the action.\n     */\n    payload: unknown;\n    /**\n     *           Unix timestamp of when the mutation occurred.\n     */\n    timestamp: number;\n};\n/**\n * Store configuration options.\n */\nexport type StoreOptions = {\n    /**\n     * Initial state object.\n     */\n    state?: Record<string, unknown> | undefined;\n    /**\n     * Action functions for state mutations.\n     */\n    actions?: Record<string, ActionFunction> | undefined;\n    /**\n     * Namespaced modules for organizing store.\n     */\n    namespaces?: Record<string, StoreModule> | undefined;\n    /**\n     * Persistence configuration.\n     */\n    persistence?: StorePersistenceOptions | undefined;\n    /**\n     * Enable development tools integration.\n     */\n    devTools?: boolean | undefined;\n    /**\n     * Error handler function.\n     */\n    onError?: StoreErrorHandler | undefined;\n};\n/**\n * Namespaced store module definition.\n */\nexport type StoreModule = {\n    /**\n     *           Module state.\n     */\n    state: Record<string, unknown>;\n    /**\n     * Module actions.\n     */\n    actions?: Record<string, ActionFunction> | undefined;\n};\n/**\n * Store persistence configuration.\n */\nexport type StorePersistenceOptions = {\n    /**\n     * Enable state persistence.\n     */\n    enabled?: boolean | undefined;\n    /**\n     * Storage key (default: \"eleva-store\").\n     */\n    key?: string | undefined;\n    /**\n     * Storage type.\n     */\n    storage?: \"localStorage\" | \"sessionStorage\" | undefined;\n    /**\n     * Dot-path prefixes to persist (e.g., \"auth.user\").\n     */\n    include?: string[] | undefined;\n    /**\n     * Dot-path prefixes to exclude.\n     */\n    exclude?: string[] | undefined;\n};\n/**\n * Store error handler callback.\n */\nexport type StoreErrorHandler = (error: Error, context: string) => void;\n/**\n * Reactive state tree containing signals and nested namespaces.\n */\nexport type StoreState = Record<string, Signal<unknown> | Record<string, unknown>>;\n/**\n * Action function signature for store actions.\n */\nexport type ActionFunction = (state: StoreState, payload?: unknown) => unknown;\n/**\n * Dispatch function signature for triggering actions.\n */\nexport type DispatchFunction = (actionName: string, payload?: unknown) => Promise<unknown>;\n/**\n * Subscribe callback signature for mutation listeners.\n */\nexport type SubscribeCallback = (mutation: StoreMutation, state: StoreState) => void;\n/**\n * Store API exposed to components via ctx.store.\n */\nexport type StoreApi = {\n    /**\n     *           Reactive state signals (supports nested modules).\n     */\n    state: StoreState;\n    /**\n     *           Dispatch an action by name with optional payload.\n     */\n    dispatch: DispatchFunction;\n    /**\n     *           Subscribe to state mutations. Returns unsubscribe function.\n     */\n    subscribe: (callback: SubscribeCallback) => () => void;\n    /**\n     *           Get a snapshot of current state values.\n     */\n    getState: () => Record<string, unknown>;\n    /**\n     *           Register a namespaced module dynamically.\n     */\n    registerModule: (namespace: string, module: StoreModule) => void;\n    /**\n     *           Unregister a namespaced module.\n     */\n    unregisterModule: (namespace: string) => void;\n    /**\n     *           Create a new state signal dynamically.\n     */\n    createState: (key: string, initialValue: unknown) => Signal<unknown>;\n    /**\n     *           Register a new action dynamically.\n     */\n    createAction: (name: string, actionFn: ActionFunction) => void;\n    /**\n     *           Signal class constructor for manual state creation.\n     */\n    signal: new <T>(value: T) => Signal<T>;\n};\n//# sourceMappingURL=Store.d.ts.map","/**\n * @module eleva/signal\n * @fileoverview Reactive Signal primitive for fine-grained state management and change notification.\n */\n/**\n * Callback function invoked when a signal's value changes.\n * @template T The type of value held by the signal.\n * @callback SignalWatcher\n * @param {T} value\n *        The new value of the signal.\n * @returns {void}\n */\n/**\n * Function to unsubscribe a watcher from a signal.\n * @callback SignalUnsubscribe\n * @returns {boolean}\n *          True if the watcher was successfully removed, false if already removed.\n *          Safe to call multiple times (idempotent).\n */\n/**\n * Interface describing the public API of a Signal.\n * @template T The type of value held by the signal.\n * @typedef {Object} SignalLike\n * @property {T} value\n *           The current value of the signal.\n * @property {function(SignalWatcher<T>): SignalUnsubscribe} watch\n *           Subscribe to value changes.\n */\n/**\n * @class ⚡ Signal\n * @classdesc A reactive data holder that enables fine-grained reactivity in the Eleva framework.\n * Signals notify registered watchers synchronously when their value changes, enabling efficient\n * DOM updates through targeted patching rather than full re-renders.\n * Synchronous notification preserves stack traces and allows immediate value inspection.\n * Render batching is handled at the component level, not the signal level.\n * The class is generic, allowing type-safe handling of any value type T.\n *\n * @template T The type of value held by the signal.\n *\n * @example\n * // Basic usage\n * const count = new Signal(0);\n * count.watch((value) => console.log(`Count changed to: ${value}`));\n * count.value = 1; // Logs: \"Count changed to: 1\"\n *\n * @example\n * // With unsubscribe\n * const name = new Signal(\"John\");\n * const unsubscribe = name.watch((value) => console.log(value));\n * name.value = \"Jane\"; // Logs: \"Jane\"\n * unsubscribe(); // Stop watching\n * name.value = \"Bob\"; // No log output\n *\n * @example\n * // With objects\n * const position = new Signal({ x: 0, y: 0 });\n * position.value = { x: 10, y: 20 }; // Triggers watchers\n *\n * @implements {SignalLike<T>}\n */\nexport class Signal<T> implements SignalLike<T> {\n    /**\n     * Creates a new Signal instance with the specified initial value.\n     *\n     * @public\n     * @constructor\n     * @param {T} value - The initial value of the signal.\n     *\n     * @example\n     * // Primitive types\n     * const count = new Signal(0);        // Signal<number>\n     * const name = new Signal(\"John\");    // Signal<string>\n     * const active = new Signal(true);    // Signal<boolean>\n     *\n     * @example\n     * // Complex types\n     * const items = new Signal([]);          // Signal holding an array\n     * const user = new Signal(null);         // Signal holding nullable object\n     */\n    constructor(value: T);\n    /**\n     * Internal storage for the signal's current value.\n     * @private\n     * @type {T}\n     */\n    private _value;\n    /**\n     * Collection of callback functions to be notified when value changes.\n     * @private\n     * @type {Set<SignalWatcher<T>>}\n     */\n    private _watchers;\n    /**\n     * Sets a new value for the signal and synchronously notifies all registered watchers if the value has changed.\n     * Synchronous notification preserves stack traces and ensures immediate value consistency.\n     *\n     * Uses strict equality (===) for comparison. For objects/arrays, watchers are only notified\n     * if the reference changes, not if properties are mutated. To trigger updates with objects,\n     * assign a new reference: `signal.value = { ...signal.value, updated: true }`.\n     *\n     * @public\n     * @param {T} newVal - The new value to set.\n     * @returns {void}\n     */\n    public set value(newVal: T);\n    /**\n     * Gets the current value of the signal.\n     *\n     * @public\n     * @returns {T} The current value.\n     */\n    public get value(): T;\n    /**\n     * Registers a watcher function that will be called whenever the signal's value changes.\n     * The watcher will receive the new value as its argument.\n     *\n     * @public\n     * @param {SignalWatcher<T>} fn - The callback function to invoke on value change.\n     * @returns {SignalUnsubscribe} A function to unsubscribe the watcher.\n     *          Returns true if watcher was removed, false if it wasn't registered.\n     *          Safe to call multiple times (idempotent after first call).\n     *\n     * @example\n     * // Basic watching\n     * const unsubscribe = signal.watch((value) => console.log(value));\n     *\n     * @example\n     * // Stop watching\n     * unsubscribe(); // Returns true if watcher was removed\n     * unsubscribe(); // Returns false (already removed, safe to call again)\n     *\n     * @example\n     * // Multiple watchers\n     * const unsub1 = signal.watch((v) => console.log(\"Watcher 1:\", v));\n     * const unsub2 = signal.watch((v) => console.log(\"Watcher 2:\", v));\n     * signal.value = \"test\"; // Both watchers are called\n     */\n    public watch(fn: SignalWatcher<T>): SignalUnsubscribe;\n    /**\n     * Synchronously notifies all registered watchers of the value change.\n     * This preserves stack traces for debugging and ensures immediate\n     * value consistency. Render batching is handled at the component level.\n     *\n     * @note If a watcher throws, subsequent watchers are NOT called.\n     * The error propagates to the caller (the setter).\n     *\n     * @private\n     * @returns {void}\n     */\n    private _notify;\n}\n/**\n * Callback function invoked when a signal's value changes.\n */\nexport type SignalWatcher<T> = (value: T) => void;\n/**\n * Function to unsubscribe a watcher from a signal.\n */\nexport type SignalUnsubscribe = () => boolean;\n/**\n * Interface describing the public API of a Signal.\n */\nexport type SignalLike<T> = {\n    /**\n     *           The current value of the signal.\n     */\n    value: T;\n    /**\n     *           Subscribe to value changes.\n     */\n    watch: (arg0: SignalWatcher<T>) => SignalUnsubscribe;\n};\n//# sourceMappingURL=Signal.d.ts.map","export namespace AgentPlugin {\n    let name: string;\n    let version: string;\n    let description: string;\n    /**\n     * Installs the Agent plugin into the Eleva instance.\n     *\n     * @public\n     * @param {Eleva} eleva - The Eleva instance.\n     * @param {AgentOptions} options - Plugin configuration options.\n     * @returns {void}\n     * @description\n     * Creates an internal Agent instance and wraps `eleva.mount` and\n     * `eleva._mountComponents` to inject `ctx.agent` into every component's\n     * setup function. Hooks into `eleva.emitter` for cross-plugin audit log\n     * capture. Exposes the agent instance and convenience methods on the\n     * Eleva instance.\n     *\n     * @example\n     * // Basic installation\n     * app.use(AgentPlugin);\n     *\n     * // With options\n     * app.use(AgentPlugin, {\n     *   maxLogSize: 200,\n     *   enableInspection: true,\n     *   onError: (err, ctx) => console.error(ctx, err),\n     *   actions: { ping: () => \"pong\" },\n     *   permissions: { \"my-agent\": { actions: [\"ping\"] } },\n     *   emitterEvents: [\"store:\", \"router:\"]\n     * });\n     */\n    function install(eleva: Eleva, options?: AgentOptions): void;\n    /**\n     * Uninstalls the Agent plugin from the Eleva instance.\n     *\n     * @public\n     * @param {Eleva} eleva - The Eleva instance.\n     * @returns {void}\n     * @description\n     * Restores the original Eleva methods, emitter hooks, and removes all\n     * plugin-specific functionality including the agent instance and\n     * convenience methods.\n     *\n     * @example\n     * AgentPlugin.uninstall(app);\n     */\n    function uninstall(eleva: Eleva): void;\n}\nexport { AgentPlugin as Agent };\n/**\n * Type imports from the Eleva core library.\n */\nexport type Eleva = import(\"eleva\").Eleva;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentDefinition = import(\"eleva\").ComponentDefinition;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentContext = import(\"eleva\").ComponentContext;\n/**\n * Type imports from the Eleva core library.\n */\nexport type SetupResult = import(\"eleva\").SetupResult;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ComponentProps = import(\"eleva\").ComponentProps;\n/**\n * Type imports from the Eleva core library.\n */\nexport type ChildrenMap = import(\"eleva\").ChildrenMap;\n/**\n * Type imports from the Eleva core library.\n */\nexport type MountResult = import(\"eleva\").MountResult;\n/**\n * Audit log entry recorded for actions, commands, and emitter events.\n */\nexport type AgentLogEntry = {\n    /**\n     *           The category of the log entry.\n     */\n    type: \"action\" | \"command\" | \"event\";\n    /**\n     *           The action name, command type, or emitter event name.\n     */\n    action: string;\n    /**\n     *           The data associated with the entry.\n     */\n    payload: unknown;\n    /**\n     *           Unix timestamp of when the entry was recorded.\n     */\n    timestamp: number;\n    /**\n     *           The originating context (e.g., \"global\").\n     */\n    source: string;\n    /**\n     * The value returned by the handler (action entries only).\n     * Absent on command/event entries and when the handler throws.\n     */\n    result?: unknown;\n    /**\n     * The error message if the handler threw (action/command entries).\n     * Absent when the handler succeeds and on event entries.\n     */\n    error?: string | undefined;\n    /**\n     * Wall-clock execution time in milliseconds (action/command entries).\n     * Absent on event entries.\n     */\n    durationMs?: number | undefined;\n};\n/**\n * Filter options for querying the audit log.\n */\nexport type AgentLogFilter = {\n    /**\n     * Filter by log entry type.\n     */\n    type?: \"action\" | \"command\" | \"event\" | undefined;\n    /**\n     * Filter entries after this timestamp.\n     */\n    since?: number | undefined;\n    /**\n     * Filter by action/event name.\n     */\n    action?: string | undefined;\n    /**\n     * Filter by outcome: \"ok\" = entries without error, \"error\" = entries with error.\n     */\n    status?: \"error\" | \"ok\" | undefined;\n};\n/**\n * Action schema describing the contract for a registered action.\n */\nexport type AgentActionSchema = {\n    /**\n     * Expected input payload shape (key -> type name).\n     */\n    input?: Record<string, string> | undefined;\n    /**\n     * Expected return type name.\n     */\n    output?: string | undefined;\n    /**\n     * Known error codes this action can produce.\n     */\n    errors?: string[] | undefined;\n};\n/**\n * Permission rules for capability-based access control.\n */\nexport type AgentPermissionRule = {\n    /**\n     * Allowed action names.\n     */\n    actions?: string[] | undefined;\n    /**\n     * Allowed command types.\n     */\n    commands?: string[] | undefined;\n};\n/**\n * Agent plugin configuration options.\n */\nexport type AgentOptions = {\n    /**\n     * Maximum number of audit log entries (default: 100).\n     */\n    maxLogSize?: number | undefined;\n    /**\n     * Enable component tree inspection (default: true).\n     */\n    enableInspection?: boolean | undefined;\n    /**\n     * Custom error handler function.\n     */\n    onError?: AgentErrorHandler | undefined;\n    /**\n     * Pre-registered action handlers.\n     */\n    actions?: Record<string, Function> | undefined;\n    /**\n     * Capability-based access control per scope.\n     */\n    permissions?: Record<string, AgentPermissionRule> | undefined;\n    /**\n     * Emitter event prefixes to capture in the audit log\n     * (e.g., [\"store:\", \"router:\"]). Empty array disables capture.\n     */\n    emitterEvents?: string[] | undefined;\n    /**\n     * When true, scope is mandatory for execute/dispatch and calls\n     * without a scope are denied. Default: false (scope is optional\n     * and calls without it are unrestricted).\n     */\n    strictPermissions?: boolean | undefined;\n    /**\n     * When true, `execute()` validates the payload against the action's\n     * schema before calling the handler. Missing required input fields\n     * throw a schema violation error. Default: false.\n     */\n    validateSchemas?: boolean | undefined;\n};\n/**\n * Custom error handler for the agent plugin.\n */\nexport type AgentErrorHandler = (error: Error, context: AgentErrorContext) => void;\n/**\n * Structured error context passed to the onError callback.\n */\nexport type AgentErrorContext = {\n    /**\n     *           The method that generated the error. Only \"execute\" and \"dispatch\" call onError.\n     */\n    method: \"execute\" | \"dispatch\";\n    /**\n     *           Machine-readable error code (e.g., \"AGENT_PERMISSION_DENIED\").\n     */\n    code: string;\n    /**\n     * The action name involved (if applicable).\n     */\n    action?: string | undefined;\n    /**\n     * The scope involved (if applicable).\n     */\n    scope?: string | undefined;\n    /**\n     * The command type involved (if applicable).\n     */\n    commandType?: string | undefined;\n};\n/**\n * Capability manifest describing all available agent features for a given scope.\n * Returned by `agent.describe(scope?)`.\n */\nexport type AgentCapabilityManifest = {\n    /**\n     *           All registered actions with their schemas and scope-based access.\n     */\n    actions: Array<{\n        name: string;\n        schema: AgentActionSchema | null;\n        allowed: boolean;\n    }>;\n    /**\n     *           All registered command types.\n     */\n    commands: string[];\n    /**\n     *           The resolved permission rules for the requested scope, or null if no scope.\n     */\n    permissions: {\n        scope: string | null;\n        actions: string[];\n        commands: string[];\n    } | null;\n    /**\n     *           Current agent configuration.\n     */\n    config: {\n        strictPermissions: boolean;\n        maxLogSize: number;\n        inspectionEnabled: boolean;\n        validateSchemas: boolean;\n    };\n};\n/**\n * Command object dispatched through the command bus.\n */\nexport type AgentCommand = {\n    /**\n     *           The command type identifier.\n     */\n    type: string;\n    /**\n     * Optional target component or agent.\n     */\n    target?: string | undefined;\n    /**\n     * Optional data payload.\n     */\n    payload?: unknown;\n};\n/**\n * Snapshot of the current application state.\n */\nexport type AgentSnapshot = {\n    /**\n     *           When the snapshot was taken.\n     */\n    timestamp: number;\n    /**\n     *           Registered component information.\n     */\n    components: Array<{\n        name: string;\n        hasSetup: boolean;\n        hasChildren: boolean;\n    }>;\n    /**\n     *           Installed plugin names.\n     */\n    plugins: string[];\n};\n/**\n * Diff result comparing two snapshots.\n */\nexport type AgentDiffResult = {\n    /**\n     *           Component names present in snapshot B but not A.\n     */\n    added: string[];\n    /**\n     *           Component names present in snapshot A but not B.\n     */\n    removed: string[];\n};\n/**\n * Descriptor returned by describeAction for agent introspection.\n */\nexport type AgentActionDescriptor = {\n    /**\n     *           The action name.\n     */\n    name: string;\n    /**\n     *           The action's contract schema, or null if none was provided.\n     */\n    schema: AgentActionSchema | null;\n};\n/**\n * Result returned by `agent.inspect()` describing the component registry.\n */\nexport type AgentInspectResult = {\n    /**\n     *           Registered component information with setup, template, children, and style flags.\n     */\n    components: Array<{\n        name: string;\n        hasSetup: boolean;\n        hasTemplate: boolean;\n        hasChildren: boolean;\n        hasStyle: boolean;\n    }>;\n};\n/**\n * Extended error with a machine-readable `code` property.\n * All Agent plugin errors include `.code`; schema violations also include `.violations`.\n */\nexport type AgentErrorFields = {\n    /**\n     *           Machine-readable error code (e.g., \"AGENT_PERMISSION_DENIED\").\n     */\n    code: string;\n    /**\n     * Schema violation messages (present only on AGENT_SCHEMA_VIOLATION errors).\n     */\n    violations?: string[] | undefined;\n};\n/**\n * Extended error with a machine-readable `code` property.\n * All Agent plugin errors include `.code`; schema violations also include `.violations`.\n */\nexport interface AgentError extends Error {\n    /** Machine-readable error code (e.g., \"AGENT_PERMISSION_DENIED\"). */\n    code: string;\n    /** Schema violation messages (present only on AGENT_SCHEMA_VIOLATION errors). */\n    violations?: string[];\n}\n/**\n * The public API surface exposed as ctx.agent in components.\n */\nexport type AgentApi = {\n    register: (name: string, handler: Function, schema?: AgentActionSchema) => void;\n    unregister: (name: string) => void;\n    execute: (name: string, payload?: unknown, scope?: string) => Promise<unknown>;\n    executeBatch: (actions: Array<{\n        action: string;\n        payload?: unknown;\n    }>, scope?: string) => Promise<unknown[]>;\n    executeSequence: (actions: Array<{\n        action: string;\n        payload?: unknown;\n    }>, scope?: string) => Promise<unknown>;\n    hasAction: (name: string) => boolean;\n    describeAction: (name: string) => AgentActionDescriptor | null;\n    listActions: () => AgentActionDescriptor[];\n    describe: (scope?: string) => AgentCapabilityManifest;\n    dispatch: (command: AgentCommand, scope?: string) => Promise<void>;\n    onCommand: (type: string, handler: Function) => () => void;\n    getLog: (filter?: AgentLogFilter) => AgentLogEntry[];\n    clearLog: () => void;\n    actionCount: import(\"../modules/Signal.js\").Signal<number>;\n    lastActivity: import(\"../modules/Signal.js\").Signal<AgentLogEntry | null>;\n    inspect?: (() => AgentInspectResult) | undefined;\n    snapshot?: (() => AgentSnapshot) | undefined;\n    diff?: ((a: AgentSnapshot, b: AgentSnapshot) => AgentDiffResult) | undefined;\n};\n// ---------------------------------------------------------------------------\n// Module augmentation (hand-maintained, appended by scripts/augment-agent-types.js)\n// When the Agent plugin is installed, these properties are added at runtime.\n// ---------------------------------------------------------------------------\n\ndeclare module \"eleva\" {\n  interface Eleva {\n    /** Agent instance exposed after `app.use(AgentPlugin)`. Undefined before install / after uninstall. */\n    agent?: import(\"./Agent.js\").AgentApi;\n    /** Convenience shortcut for `app.agent.execute()`. Undefined before install / after uninstall. */\n    agentExecute?: (name: string, payload?: unknown, scope?: string) => Promise<unknown>;\n    /** Convenience shortcut for `app.agent.dispatch()`. Undefined before install / after uninstall. */\n    agentDispatch?: (command: import(\"./Agent.js\").AgentCommand, scope?: string) => Promise<void>;\n  }\n\n  interface ComponentContext {\n    /** Agent API injected by the Agent plugin into component setup. */\n    agent?: import(\"./Agent.js\").AgentApi;\n  }\n}\n//# sourceMappingURL=Agent.d.ts.map\n"],"names":["Eleva","Signal","___modules_Signal_js.Signal","__Agent_js.AgentApi","__Agent_js.AgentCommand"],"mappings":";;AAAO,kBAAA,UAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAAA,OAAA,YAAA,iBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAAAA,OAAA;AACA;;AAEA;AACA;AACA;AACO,KAAAA,OAAA,GAAa,KAAe,CAAA,KAAA;AACnC;AACA;AACA;AACO,KAAA,iBAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACO,KAAA,YAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAA,MAAA,YAAA,MAAA;AACA;AACA;AACA;AACA,wBAAA,MAAA,YAAA,OAAA;AACA;AACO,kBAAA,YAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAAA,OAAA,YAAA,aAAA,GAAA,MAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAAAA,OAAA,GAAA,OAAA;AACA;;AAEA;AACA;AACA;AACO,KAAAA,OAAA,GAAa,KAAe,CAAA,KAAA;AACnC;AACA;AACA;AACO,KAAA,mBAAA,GAA2B,KAAe,CAAA,mBAAA;AAKjD;AACA;AACA;AACO,KAAA,WAAA,GAAmB,KAAe,CAAA,WAAA;AAKzC;AACA;AACA;AACO,KAAAC,QAAA,MAAiB,KAAe,CAAA,MAAA;AACvC;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,UAAA;AACP;AACA;AACA;AACO,KAAA,WAAA,GAAA,MAAA;AACP;AACA;AACA;AACO,KAAA,WAAA,GAAA,MAAA;AACP;AACA;AACA;AACO,KAAA,gBAAA,GAAA,MAAA;AAKP;AACA;AACA;AACO,KAAA,aAAA;AACP;AACA;AACA;AACA,WAAA,UAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAA,eAAA;AACA;AACA;AACA;AACA,mBAAA,cAAA;AACA;AACA;AACA;AACA,mBAAA,eAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,gBAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAA,gBAAA;AACA;AACA;AACA;AACA,YAAA,gBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA;AACA;AACA;AACO,KAAA,YAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA;AACA;AACA;AACO,KAAA,SAAA,GAAA,MAAA;AACP;AACA;AACA;AACO,KAAA,kBAAA;AACP;AACA;AACA;AACA,oBAAA,KAAA,6BAAA,MAAA;AACA;AACA;AACA;AACA,sCAAA,MAAA;AACA;AACA;AACA;AACA,kCAAA,KAAA,YAAA,MAAA;AACA;AA0EA;AACA;AACA;AACO,KAAA,aAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAA,WAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAA,WAAA;AACA;AACA;AACA;AACA,UAAA,SAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAA,eAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,qBAAA,sBAAA,gBAAA;AACP;AACA;AACA;AACO,KAAA,eAAA,QAAA,aAAA,QAAA,aAAA,YAAA,qBAAA,GAAA,OAAA,CAAA,qBAAA;AACP;AACA;AACA;AACO,KAAA,cAAA,QAAA,aAAA,QAAA,aAAA,mBAAA,OAAA;AAgGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,cAAA,YAAA,mBAAA,UAAA,mBAAA,GAAA,OAAA,CAAA,mBAAA;AACP,aAAA,mBAAA;AACA;AACA;AACA;AACA;AACO,KAAA,eAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAA,cAAA;AACA;AACA;AACA;AACA,aAAA,cAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAA,SAAA;AACA;AACA;AACA;AACA,kBAAA,eAAA;AACA;AACA;AACA;AACA,iBAAA,cAAA;AACA;AACA;AACA;AACA,kBAAA,eAAA;AACA;AACA;AACA;AACA,iBAAA,cAAA;AACA;AACA;AACA;AACA,eAAA,YAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAA,MAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAAD,OAAA,YAAA,aAAA;AACA;AACA,WAAAA,OAAA;AACA;AACA,aAAA,aAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAAC,QAAA,CAAA,aAAA;AACA;AACA,mBAAAA,QAAA,CAAA,aAAA;AACA;AACA,mBAAAA,QAAA,CAAA,WAAA;AACA;AACA,kBAAAA,QAAA,CAAA,WAAA;AACA;AACA,mBAAAA,QAAA,CAAA,WAAA;AACA;AACA,iBAAAA,QAAA,CAAA,WAAA;AACA;AACA,aAAAA,QAAA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAA,kBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAA,OAAA,CAAA,MAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAA,OAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAA,OAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAA,gBAAA,WAAA,gBAAA,GAAA,OAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAA,eAAA,gBAAA,eAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAA,eAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAA,eAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAA,eAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAA,cAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAA,cAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAA,cAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAAA,KAAA,OAAA,aAAA,SAAA,aAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAA,YAAA,YAAA,MAAA;AACA;AACA;AACA;AACA;AACA,kBAAA,YAAA;AACA;AACA;AACA;AACA;AACA;AACA,6BAAA,YAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAA,kBAAA;AACA;;ACzwCO,kBAAA,WAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAAD,OAAA,YAAA,YAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAAAA,OAAA;AACA;;AAEA;AACA;AACA;AACO,KAAAA,OAAA,GAAa,KAAe,CAAA,KAAA;AAyBnC;AACA;AACA;AACO,KAAAC,QAAA,MAAiB,KAAe,CAAA,MAAA;AAkBvC;AACA;AACA;AACO,KAAA,YAAA;AACP;AACA;AACA;AACA,YAAA,MAAA;AACA;AACA;AACA;AACA,cAAA,MAAA,SAAA,cAAA;AACA;AACA;AACA;AACA,iBAAA,MAAA,SAAA,WAAA;AACA;AACA;AACA;AACA,kBAAA,uBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAA,iBAAA;AACA;AACA;AACA;AACA;AACO,KAAA,WAAA;AACP;AACA;AACA;AACA,WAAA,MAAA;AACA;AACA;AACA;AACA,cAAA,MAAA,SAAA,cAAA;AACA;AACA;AACA;AACA;AACO,KAAA,uBAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,iBAAA,WAAA,KAAA;AACP;AACA;AACA;AACO,KAAA,UAAA,GAAA,MAAA,SAAAA,QAAA,YAAA,MAAA;AACP;AACA;AACA;AACO,KAAA,cAAA,WAAA,UAAA;;AClNP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,cAAA,MAAA,eAAA,UAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAA,aAAA,MAAA,iBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,aAAA;AACP;AACA;AACA;AACO,KAAA,iBAAA;AACP;AACA;AACA;AACO,KAAA,UAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAA,aAAA,QAAA,iBAAA;AACA;;AC3KO,kBAAA,WAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAAA,KAAA,YAAA,YAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAAA,KAAA;AACA;;AAEA;AACA;AACA;AACO,KAAA,KAAA,GAAa,KAAe,CAAA,KAAA;AAyBnC;AACA;AACA;AACO,KAAA,aAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,cAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,iBAAA;AACP;AACA;AACA;AACA,YAAA,MAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,mBAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,YAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAA,iBAAA;AACA;AACA;AACA;AACA,cAAA,MAAA,SAAA,QAAA;AACA;AACA;AACA;AACA,kBAAA,MAAA,SAAA,mBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,iBAAA,WAAA,KAAA,WAAA,iBAAA;AACP;AACA;AACA;AACO,KAAA,iBAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,uBAAA;AACP;AACA;AACA;AACA,aAAA,KAAA;AACA;AACA,gBAAA,iBAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,YAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,aAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAA,KAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,eAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,KAAA,qBAAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAA,iBAAA;AACA;AACA;AACA;AACA;AACO,KAAA,kBAAA;AACP;AACA;AACA;AACA,gBAAA,KAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAyBA;AACA;AACA;AACO,KAAA,QAAA;AACP,sCAAA,QAAA,WAAA,iBAAA;AACA;AACA,kEAAA,OAAA;AACA,4BAAA,KAAA;AACA;AACA;AACA,2BAAA,OAAA;AACA,+BAAA,KAAA;AACA;AACA;AACA,2BAAA,OAAA;AACA;AACA,sCAAA,qBAAA;AACA,uBAAA,qBAAA;AACA,kCAAA,uBAAA;AACA,wBAAA,YAAA,qBAAA,OAAA;AACA,uCAAA,QAAA;AACA,sBAAA,cAAA,KAAA,aAAA;AACA;AACA,iBAAiBC,MAA8B;AAC/C,kBAAkBA,MAA8B,CAAA,aAAA;AAChD,qBAAA,kBAAA;AACA,sBAAA,aAAA;AACA,gBAAA,aAAA,KAAA,aAAA,KAAA,eAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAYC,QAAoB;AAChC;AACA,wEAAA,OAAA;AACA;AACA,8BAA8BC,YAAoB,qBAAA,OAAA;AAClD;;AAEA;AACA;AACA,YAAYD,QAAoB;AAChC;AACA;;;;"}