/**
 * Repository Interface: AvatarGenerationRepository
 * 
 * Defines the contract for avatar generation request persistence.
 */

import type { AvatarGenerationRequest } from '../entities/AvatarGenerationRequest';

export interface AvatarGenerationRepository {
  /**
   * Save an avatar generation request
   */
  save(request: AvatarGenerationRequest): Promise<void>;

  /**
   * Find an avatar generation request by ID
   */
  findById(id: string): Promise<AvatarGenerationRequest | null>;

  /**
   * Find all avatar generation requests for a user
   */
  findByUserId(userId: string): Promise<AvatarGenerationRequest[]>;

  /**
   * Find the latest avatar generation request for a user
   */
  findLatestByUserId(userId: string): Promise<AvatarGenerationRequest | null>;

  /**
   * Delete an avatar generation request
   */
  delete(id: string): Promise<void>;
}