import type { StatsPayload, RecentPayload, SessionsPayload, FullStatsPayload } from './types.js'; export declare function escapeHtml(s: string | null | undefined): string; export declare function renderToggleFragment(enabled: boolean): string; export declare function renderModelsFragment(active: string[], configured: string[], enabled: boolean): string; export declare function renderSessionSummaryFragment(s: StatsPayload): string; export declare function renderHeaderFragment(s: StatsPayload, port: number): string; export interface ContextMapData { id: number; baselineTokens: number; realInput: number; baselineInputEff: number; actualInputEff: number; haveBaseline: boolean; cacheRead: number; warm: boolean; output: number; imageCount: number; /** Image blocks the CLIENT sent. They spend from the provider's cap exactly * like ours, so they explain a turn that compressed less than usual. */ nativeImages?: number; /** Image blocks really on the wire. Lower than imageCount when the history * collapse absorbed messages that already carried our images. */ wireImages?: number; /** Imaging steps that degraded to text because the cap was full. */ imageBudgetSkips?: number; baselineImagedTokens?: number; buckets: Partial>; imageIds: number[]; compressed: boolean; model?: string; responsesComposition?: { instructions: number; systemDeveloper: number; userAssistant: number; functionCalls: number; functionOutputs: number; reasoningEncrypted: number; compactionOpaque: number; toolsJson: number; other: number; totalLocal: number; imageParts: number; completedFunctionPairs?: number; recentNativeFunctionPairs?: number; oldFunctionPairs?: number; openFunctionCalls?: number; orphanFunctionOutputs?: number; malformedFunctionItems?: number; imageableFunctionCalls?: number; imageableFunctionOutputs?: number; collapsedFunctionPairs?: number; collapsedFunctionCalls?: number; collapsedFunctionOutputs?: number; }; /** Difference between the provider text counterfactual and local o200k buckets. * Can include envelope, tokenizer, and server-side additions. */ responsesUnexplainedTokens?: number; restored?: boolean; } /** Image-vs-text breakdown for one request. */ export declare function renderContextMapFragment(c: ContextMapData | undefined, history?: ContextMapData[], notFound?: boolean): string; export declare function renderRecentFragment(p: RecentPayload): string; export interface LatestFragmentInput { payload: RecentPayload; pin: number | null; showSource: boolean; sourceText: string | null; } export declare function renderLatestFragment(inp: LatestFragmentInput): string; export declare function renderSessionsFragment(p: SessionsPayload): string; export declare function renderStatsTableFragment(p: FullStatsPayload): string; /** `hostLabel` names the machine this proxy runs on. The dashboard is otherwise * byte-identical across hosts, so a tab opened against a remote host through * the tailnet front is indistinguishable from the local one - which is how a * session gets read on the wrong box. Empty label = render as before. */ export declare function renderPage(port: number, hostLabel?: string): string; //# sourceMappingURL=fragments.d.ts.map