import { PoolInjectionBatch } from '../aggregates/pool-injection-batch.aggregate';
import { BatchStatus } from '../value-objects/batch-status.enum';

export interface IPoolInjectionBatchRepository {
  save(batch: PoolInjectionBatch): Promise<void>;
  findById(batchId: bigint): Promise<PoolInjectionBatch | null>;
  findByBatchNo(batchNo: string): Promise<PoolInjectionBatch | null>;
  findByStatus(status: BatchStatus): Promise<PoolInjectionBatch[]>;
  findCurrentBatch(): Promise<PoolInjectionBatch | null>;
  findOrCreateCurrentBatch(): Promise<PoolInjectionBatch>;
  findScheduledBatchesReadyForInjection(): Promise<PoolInjectionBatch[]>;
}

export const POOL_INJECTION_BATCH_REPOSITORY = Symbol(
  'IPoolInjectionBatchRepository',
);
