import type { OrderEntity, OrderCreationData, OrderUpdateData } from '../entities/Order';

/**
 * Port interface for Order domain
 * This interface defines the contract that adapters must implement
 */
export interface OrderPort {
  /**
   * Get all order entities
   */
  getAll(): Promise<OrderEntity[]>;

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

  /**
   * Create a new order entity
   */
  create(data: OrderCreationData): Promise<OrderEntity>;

  /**
   * Update an existing order entity
   */
  update(id: string, data: OrderUpdateData): Promise<OrderEntity>;

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