import type { PicletType } from '../types/picletTypes'; // Enums export enum EncounterType { WILD_PICLET = 'wildPiclet', FIRST_PICLET = 'firstPiclet' } // PicletInstance - Individual monster instances owned by the player export interface PicletInstance { id?: number; // Basic Info typeId: string; nickname?: string; primaryType: PicletType; tier: string; // 'low' | 'medium' | 'high' | 'legendary' // Roster Management isInRoster: boolean; rosterPosition?: number; // 0-5 when in roster // Metadata caught: boolean; // Whether this Piclet has been caught by the player caughtAt?: Date; // When this Piclet was caught (undefined if not caught) // Original generation data imageUrl: string; imageData?: string; // Base64 encoded image with transparency imageCaption: string; concept: string; description: string; // Generated monster description imagePrompt: string; } // Encounter - Game encounters export interface Encounter { id?: number; // Type type: EncounterType; // Details title: string; description: string; picletTypeId?: string; // For wild piclet encounters picletInstanceId?: number; // For first piclet encounters - specific Piclet to catch enemyLevel?: number; // Timing createdAt: Date; } // GameState - Overall game progress export interface GameState { id?: number; // Timing lastEncounterRefresh: Date; lastPlayed: Date; // Progress (0-1000) progressPoints: number; trainersDefeated: number; picletsCapured: number; battlesLost: number; } // Trainer Scanning Progress - Track automated trainer piclet generation export interface TrainerScanProgress { id?: number; // Image Info imagePath: string; // e.g., "trainer_images/001_Willow_Snap/image_001.jpg" trainerName: string; // e.g., "001_Willow_Snap" imageIndex: number; // e.g., 1, 2, 3 for multiple images per trainer // Processing Status status: 'pending' | 'processing' | 'completed' | 'failed'; // Results picletInstanceId?: number; // ID of generated piclet if successful errorMessage?: string; // Error details if failed // Timing startedAt?: Date; completedAt?: Date; // Remote URL for reference remoteUrl: string; // Full HuggingFace URL }