import type { UserEntity, UserCreationData, UserUpdateData } from '../entities/User';

/**
 * Port interface for User domain
 * This interface defines the contract that adapters must implement
 */
export interface UserPort {
  /**
   * Get all user entities
   */
  getAll(): Promise<UserEntity[]>;

  /**
   * Get a user entity by ID
   */
  getById(id: string): Promise<UserEntity>;

  /**
   * Create a new user entity
   */
  create(data: UserCreationData): Promise<UserEntity>;

  /**
   * Update an existing user entity
   */
  update(id: string, data: UserUpdateData): Promise<UserEntity>;

  /**
   * Delete a user entity
   */
  delete(id: string): Promise<void>;
}