import type { WindowHandle, DesktopTask, ActionStep, AdapterContext } from '../types.js';

/**
 * 应用适配器接口 — 每个被支持的桌面 App 实现一个
 *
 *  - findWindow: 用 windowLocator 找到目标 App 的主窗口
 *  - preFlightCheck: 截图 + VLM 验证前置状态(如"当前对话是否目标群")
 *  - buildSteps: 把 task 翻译成具体 ActionStep 序列(MVP 多为硬编码)
 *  - verifyResult: 截图 + VLM 验证操作是否成功
 *  - queueKey: 返回 per-target 队列 key,用于 Service 层 per-target 串行
 */
export interface AppAdapter {
  appId: string;
  supportedActions: string[];
  findWindow(target: any): Promise<WindowHandle | null>;
  preFlightCheck(task: DesktopTask, ctx: AdapterContext): Promise<void>;
  buildSteps(task: DesktopTask): Promise<ActionStep[]>;
  verifyResult(task: DesktopTask, ctx: AdapterContext): Promise<boolean>;
  queueKey(target: any): string;
}
