import type { PaymentEntity, PaymentCreationData, PaymentUpdateData } from '../entities/Payment';

/**
 * Port interface for Payment domain
 * This interface defines the contract that adapters must implement
 */
export interface PaymentPort {
  /**
   * Get all payment entities
   */
  getAll(): Promise<PaymentEntity[]>;

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

  /**
   * Create a new payment entity
   */
  create(data: PaymentCreationData): Promise<PaymentEntity>;

  /**
   * Update an existing payment entity
   */
  update(id: string, data: PaymentUpdateData): Promise<PaymentEntity>;

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