import { z } from "zod"; import type { McpServer, RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js"; import { type Snapshot } from "../hil/schemas.js"; import type { ToolContext } from "../tool-context.js"; export declare const TOOL_NAME = "crosspad_snapshot"; export declare const INCLUDE_KEYS: readonly ["apps", "ui", "kit", "leds", "pads", "mem", "ble", "console"]; export declare class SnapshotStore { private readonly order; private readonly map; put(snap: Snapshot): void; get(id: string): Snapshot | undefined; ids(): string[]; } export declare const snapshots: SnapshotStore; /** Map crosspad-pc RemoteControl.cpp handle_stats() output onto the Snapshot shape. */ export declare function simStatsToSnapshot(stats: Record, id: string): Snapshot; /** Top-level keys whose JSON differs (same rule as snapshot.py: dict inequality). */ export declare function changedKeys(prev: Snapshot, cur: Snapshot): string[]; export declare function takeDeviceSnapshot(ctx: ToolContext, device: string | undefined, include: string[] | undefined, diffFrom: string | undefined, signal: AbortSignal): Promise; export declare function takeSimSnapshot(ctx: ToolContext, diffFrom: string | undefined): Promise; export declare const SnapshotInputShape: { target: z.ZodDefault>; device: z.ZodOptional; include: z.ZodOptional>>; diff_from: z.ZodOptional; }; export declare const SnapshotInput: z.ZodObject<{ target: z.ZodDefault>; device: z.ZodOptional; include: z.ZodOptional>>; diff_from: z.ZodOptional; }, z.core.$strip>; export declare const O_Snapshot: z.ZodObject<{ snapshot_id: z.ZodOptional; device: z.ZodOptional; usb_mode: z.ZodOptional; apps: z.ZodOptional>>; ui: z.ZodOptional>>; kit: z.ZodOptional>>; leds: z.ZodOptional>>; pads: z.ZodOptional>>; mem: z.ZodOptional>>; ble: z.ZodOptional>>; console: z.ZodOptional>>; ts: z.ZodOptional; changed: z.ZodOptional>; success: z.ZodBoolean; error: z.ZodOptional>; details: z.ZodOptional>; }, z.core.$loose>>; details: z.ZodOptional>; }, z.core.$loose>; export declare function registerSnapshotTool(server: McpServer, ctx: ToolContext): RegisteredTool;