import { Company } from '../entities/Company';

/**
 * Domain Repository: CompanyRepository
 *
 * Repository interface for Company entity operations.
 */
export interface CompanyRepository {
  /**
   * Create a new company (returns unsaved entity)
   */
  create(company: Pick<Company, 'getName' | 'getOwnerUserId' | 'getContactEmail'>): Company;

  /**
   * Save a company to the database
   */
  save(company: Company): Promise<void>;

  /**
   * Delete a company by ID
   */
  delete(id: string): Promise<void>;

  /**
   * Find company by ID
   */
  findById(id: string): Promise<Company | null>;

  /**
   * Find company by owner user ID
   */
  findByOwnerUserId(userId: string): Promise<Company | null>;
}