import * as React from "react"; import type { PluginAddRouteInput, PluginAddToolInput } from '@zhin.js/contract'; export type AddRouteInput = PluginAddRouteInput; export type AddToolInput = PluginAddToolInput; export type ConsoleRouteRecord = { path: string; name: string; element: React.ReactNode; parent: string | null; icon?: React.ReactNode | string; requiredPermissions?: string[]; requiredRoles?: string[]; meta?: { hideInMenu?: boolean; order?: number; group?: string; fullWidth?: boolean; }; }; export type InternalToolRecord = { id: string; name: string; icon?: React.ReactNode; parent: string | null; path?: string; }; export type RouteTreeNode = ConsoleRouteRecord & { children: RouteTreeNode[]; }; export type ToolTreeNode = InternalToolRecord & { children: ToolTreeNode[]; }; export type SidebarRenderer = (options: { routes: RouteTreeNode[]; }) => React.ReactNode; export type ToolbarRenderer = (options: { tools: ToolTreeNode[]; }) => React.ReactNode; export type ConsoleRouteRenderer = (route: ConsoleRouteRecord) => React.ReactNode; /** Owner-scoped registry for one mounted Remote Console application. */ export declare class ConsoleApp { #private; readonly subscribe: (listener: () => void) => (() => void); readonly getVersion: () => number; defineSidebar(render: SidebarRenderer): void; defineToolbar(render: ToolbarRenderer): void; defineRouter(render: ConsoleRouteRenderer): void; addRoute(input: AddRouteInput): void; removeRoute(path: string): void; addTool(input: AddToolInput): string; getRouteTree(): RouteTreeNode[]; getToolTree(): ToolTreeNode[]; getRoutes(): readonly ConsoleRouteRecord[]; getSidebarRenderer(): SidebarRenderer | null; getToolbarRenderer(): ToolbarRenderer | null; renderRouteElement(route: ConsoleRouteRecord): React.ReactNode; dispose(): void; } export declare function createConsoleApp(): ConsoleApp; //# sourceMappingURL=app.d.ts.map