
export type Platform = 'instagram' | 'youtube' | 'strava';
export type ContextType = 'relacja' | 'opowiesc';
export type StoryStyle = 'noir' | 'fantasy'; // New sub-step type
export type EventType = 'sport' | 'culture' | 'trip' | 'party' | 'work' | 'other';
export type Tone = 'funny' | 'serious' | 'inspirational';
export type Goal = 'engagement' | 'viral' | 'sales';

export interface ActivityStats {
  distance: string;
  duration: string;
  elevation: string;
}

export interface Waypoint {
  id: string;
  header: string;
  context: string;
}

export interface UploadedFile {
  id: string;
  file: File;
  previewUrl?: string; // For images
  content?: string; // Base64 or Text content
  mimeType: string;
}

export interface TripPoint {
  place: string;
  description: string;
  addressPreview?: string; // Full address for UI confirmation
}

export interface TripStop {
  id: string;
  place: string;
  description: string;
  addressPreview?: string; // Full address for UI confirmation
}

export interface TripData {
  startPoint: TripPoint;
  endPoint: TripPoint;
  stops: TripStop[];
  travelMode: 'DRIVING' | 'WALKING' | null;
  googleMapsKey?: string; // Restored for manual fallback
}

export interface WizardState {
  step: number;
  context: ContextType | null;
  storyStyle: StoryStyle | null; // New field
  platform: Platform | null;
  eventType: EventType | null;
  tone: Tone | null;
  goal: Goal | null;
  title: string;
  description: string;
  files: UploadedFile[];
  stats: ActivityStats;
  waypoints: Waypoint[];
  tripData?: TripData; // Optional, only for eventType === 'trip'
}

export interface SlideContent {
  overlay_text: string;
  image_prompt: string;
  notes: string;
}

export interface GeneratedContent {
  caption: string;
  slides: SlideContent[];
}

export enum Step {
  CONTEXT = 0,
  EVENT_TYPE = 1,
  PLATFORM = 2,
  TONE_GOAL = 3,
  DETAILS = 4,
  RESULT = 5,
}