/**
 * Sales ID Generator Port
 * Generates unique identifiers for sales domain entities
 */

export interface SalesIdGeneratorPort {
  /**
   * Generate next tax invoice number in format: S/YYYY/XXXX
   * Example: S/2024/0001, S/2024/0002, etc
   */
  generateInvoiceNumber(): Promise<string>;

  /**
   * Generate next shipment number in format: SHP/YYYY/XXXX
   * Example: SHP/2024/0001, SHP/2024/0002, etc
   */
  generateShipmentNumber(): Promise<string>;

  /**
   * Generate next store invoice number in format: ST/YYYY/XXXX
   * Example: ST/2024/0001, ST/2024/0002, etc
   */
  generateStoreInvoiceNumber(): Promise<string>;

  /**
   * Generate UUID for invoice ID
   */
  generateInvoiceId(): Promise<string>;

  /**
   * Generate UUID for activity log entry
   */
  generateActivityLogId(): Promise<string>;

  /**
   * Generate UUID for document attachment
   */
  generateDocumentId(): Promise<string>;
}
