import { AdminEntity } from '../entities/admin.entity';
import { AdminRole } from '../value-objects/admin-role.enum';

export interface IAdminRepository {
  save(admin: AdminEntity): Promise<void>;
  findById(id: string): Promise<AdminEntity | null>;
  findByUsername(username: string): Promise<AdminEntity | null>;
  findAll(options?: {
    role?: AdminRole;
    isActive?: boolean;
    limit?: number;
    offset?: number;
  }): Promise<AdminEntity[]>;
  count(options?: {
    role?: AdminRole;
    isActive?: boolean;
  }): Promise<number>;
  update(admin: AdminEntity): Promise<void>;
  delete(id: string): Promise<void>;
}

export const ADMIN_REPOSITORY = Symbol('IAdminRepository');
