export type InjectionType = 'env' | 'flag' | 'arg' | 'compose'; export interface ComposePortMapping { hostPort: number; containerPort: number; protocol?: 'tcp' | 'udp'; } export interface ComposeServicePorts { serviceName: string; ports: ComposePortMapping[]; } export interface AllocatedComposePort extends ComposePortMapping { originalHostPort: number; newHostPort: number; } export interface ComposeServicePort { serviceName: string; port: number; running?: boolean; } export type ProcessStatus = 'running' | 'stopped'; export interface ProcessMapping { port: number; pid: number; command: string; originalCommand: string; injectionType: InjectionType; cwd: string; startedAt: string; status: ProcessStatus; composePorts?: ComposeServicePort[]; } export interface State { mappings: Record; } export interface InjectionResult { command: string; env: Record; injectionType: InjectionType; toolName: string; } export interface CommandPattern { name: string; patterns: RegExp[]; injectionType: InjectionType; defaultPort: number; injectPort: (cmd: string, port: number) => string; } export interface ElectronAPI { getProcesses: () => Promise>; onProcessesUpdate: (callback: (processes: Record) => void) => () => void; stopProcess: (name: string) => Promise; restartProcess: (name: string) => Promise; openBrowser: (port: number) => Promise; setAlwaysOnTop: (value: boolean) => Promise; minimizeWindow: () => void; closeWindow: () => void; } declare global { interface Window { electronAPI: ElectronAPI; } }