export type ElicitationType = 'text' | 'number' | 'boolean' | 'choice' | 'multi-choice';

export interface ElicitationQuestion {
  id: string;
  prompt: string;
  type?: ElicitationType;
  options?: string[];
  default?: any;
  required?: boolean;
  validation?: (value: any) => boolean | string;
  condition?: (context: Record<string, any>) => boolean;
  helpText?: string;
}

export interface ElicitationFlow {
  id: string;
  title: string;
  description?: string;
  questions: ElicitationQuestion[];
  onComplete?: (answers: Record<string, any>) => void;
}

export interface ElicitationContext {
  projectType?: string;
  testFramework?: string;
  language?: string;
  existingModules?: string[];
  [key: string]: any;
}

export interface ElicitationResult {
  answers: Record<string, any>;
  skipped: string[];
  context: ElicitationContext;
}