import { z } from "zod"; import type { McpServer, RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js"; import { type Device } from "../hil/schemas.js"; import type { ToolContext } from "../tool-context.js"; export declare const TOOL_NAME = "crosspad_devices"; export interface DeviceRow extends Device { /** v9 compatibility: rev <2.0 boards are "esp-native"; a paired STM VCP means "stm-bridge". */ kind: "esp-native" | "stm-bridge"; /** v9 compatibility: the port a flasher would talk to (CDC → bootloader → console). */ port: string | null; vid: number | null; pid: number | null; is_crosspad: true; } export declare const O_DevicesV10: { success: z.ZodBoolean; devices: z.ZodOptional; usb_mode: z.ZodEnum<{ unknown: "unknown"; default: "default"; audio: "audio"; bootloader: "bootloader"; }>; ports: z.ZodObject<{ cdc: z.ZodOptional; product: z.ZodNullable; location: z.ZodNullable; }, z.core.$loose>>>; console: z.ZodOptional; product: z.ZodNullable; location: z.ZodNullable; }, z.core.$loose>>>; esp_midi: z.ZodOptional; rtmidi_in: z.ZodNullable; alsa_hw: z.ZodNullable; rawmidi: z.ZodNullable; }, z.core.$loose>>>; stm_midi: z.ZodOptional; rtmidi_in: z.ZodNullable; alsa_hw: z.ZodNullable; rawmidi: z.ZodNullable; }, z.core.$loose>>>; uac2: z.ZodOptional; alsa_id: z.ZodNullable; }, z.core.$loose>>>; bootloader: z.ZodOptional; product: z.ZodNullable; location: z.ZodNullable; }, z.core.$loose>>>; }, z.core.$loose>; board_rev: z.ZodOptional>; pcb: z.ZodOptional>; fw_rev: z.ZodOptional>; kind: z.ZodEnum<{ "esp-native": "esp-native"; "stm-bridge": "stm-bridge"; }>; port: z.ZodNullable; vid: z.ZodNullable; pid: z.ZodNullable; is_crosspad: z.ZodLiteral; }, z.core.$loose>>>; crosspad_count: z.ZodOptional; selected: z.ZodOptional; ts: z.ZodOptional; error: z.ZodOptional>; details: z.ZodOptional>; }, z.core.$loose>>; details: z.ZodOptional>; }; export declare function toV10DeviceRow(d: Device): DeviceRow; /** Mirrors devices.select(): implicit selection only when exactly one device has an ESP side. */ export declare function selectedId(rows: DeviceRow[]): string | undefined; export declare function registerDevicesTool(server: McpServer, ctx: ToolContext): RegisteredTool;