import type { MultiSessionConfig, SessionResult, CombinedReport } from '../core/types';
import type { BatchExecutionOptions, BatchExecutionResult } from '../core/batch-execution';

export interface IInitializeRunnerUseCase {
  execute(config?: Partial<MultiSessionConfig>): void;
}

export interface IDefineSessionUseCase {
  execute(label: string, setupFn: () => void): void;
}

export interface IRunSingleSessionUseCase {
  execute(label: string): Promise<SessionResult>;
}

export interface IRunAllSessionsUseCase {
  execute(options?: BatchExecutionOptions): Promise<Record<string, SessionResult>>;
}

export interface IGenerateCombinedReportUseCase {
  execute(): CombinedReport;
}

export interface IClearAllSessionsUseCase {
  execute(): Promise<void>;
}

export interface IDestroyRunnerUseCase {
  execute(): Promise<void>;
}
