export enum SystemState {
  IDLE = 'IDLE',
  RUNNING = 'RUNNING',
  ERROR = 'ERROR',
  PAUSED = 'PAUSED',
}

export interface AxisPosition {
  id: string;
  name: string;
  axis: 'X' | 'Y' | 'Z';
  value: number;
  speed: number;
  acc: number;
  dec: number;
}

export interface Recipe {
  id: string;
  name: string;
  lastModified: string;
}

export interface IOPoint {
  id: number;
  name: string;
  type: 'input' | 'output';
  state: boolean;
}

export interface LogEntry {
  id: number;
  timestamp: string;
  message: string;
  type: 'info' | 'warning' | 'error';
}

export interface RobotTarget {
  x: number;
  y: number;
  z: number;
}

// WebView2 Native Bridge Types
export interface ConfigItem {
  Key: string;
  Value: string;
  Group: string;
  Type: 'String' | 'Number' | 'Boolean';
  Description: string;
}

declare global {
  interface Window {
    chrome: {
      webview: {
        hostObjects: {
          machine: {
            MoveAxis(axis: string, value: number): Promise<void>;
            SetIO(id: number, isInput: boolean, state: boolean): Promise<void>;
            SystemControl(command: string): Promise<void>;
            LoadRecipe(recipeId: string): Promise<void>;
            GetConfig(): Promise<string>;
            SaveConfig(configJson: string): Promise<void>;
          }
        };
        addEventListener(type: string, listener: (event: any) => void): void;
        removeEventListener(type: string, listener: (event: any) => void): void;
        postMessage(message: any): void;
      }
    }
  }
}