import type { MultiSessionConfig, SessionResult, SessionState } from '../core/types';
import type { BatchExecutionOptions } from '../core/batch-execution';
import type { ExecutionSummary } from '../repositories/session-meta-repository';

export interface IRunnerService {
  // Configuration
  initialize(config?: Partial<MultiSessionConfig>): void;
  isInitialized(): boolean;
  getConfiguration(): MultiSessionConfig;
  updateConfiguration(config: Partial<MultiSessionConfig>): void;
  
  // Session Management
  defineSession(label: string, setupFn: () => void): void;
  getSessionCount(): number;
  hasSession(label: string): boolean;
  getSessionLabels(): string[];
  
  // Execution
  runSingleSession(label: string): Promise<SessionResult>;
  runAllSessions(options?: BatchExecutionOptions): Promise<Record<string, SessionResult>>;
  
  // State Queries
  getSessionStates(): Record<string, SessionState>;
  getExecutionSummary(): ExecutionSummary;
  isRunning(): boolean;
  
  // Lifecycle
  clear(): Promise<void>;
  destroy(): Promise<void>;
}
