import type { AppSnapshot } from "../../types/domain";
import type { CaptureOptions, CaptureResult, CaptureSourceInfo } from "../../types/global";
import { type AppMetricCard, type NavigationId } from "../layout/types";

export interface AppControllerResult {
  activeView: NavigationId;
  setActiveView: (value: NavigationId) => void;
  isOverlay: boolean;
  isScanning: boolean;
  snapshot: AppSnapshot;
  captureSources: CaptureSourceInfo[];
  selectedSourceId: string;
  setSelectedSourceId: (value: string) => void;
  latestCapture: CaptureResult | null;
  topbarStatus: string;
  bridgeReady: boolean;
  canExportGood: boolean;
  canShowOverlay: boolean;
  metricCards: AppMetricCard[];
  refreshCaptureSources: () => Promise<void>;
  captureSelectedSource: (delayMs?: number, focusGenshin?: boolean, options?: CaptureOptions) => Promise<CaptureResult | null>;
  runDemoScan: () => Promise<void>;
  exportCurrentGood: () => Promise<void>;
  loadStoredArtifactSnapshot: () => Promise<void>;
  showOverlay: () => Promise<void>;
}
