import { FindManyOptions } from 'typeorm';
import { WeightLimitRule } from '../entities/weight-limit-rule.entity';

export interface IWeightLimitRulesRepository {
  findById(id: string): Promise<WeightLimitRule | null>;
  findActiveByContainerTypeId(
    containerTypeId: string,
    tradeDirection: string,
  ): Promise<WeightLimitRule[]>;
  findAll(options?: FindManyOptions<WeightLimitRule>): Promise<WeightLimitRule[]>;
  findAndCount(options?: FindManyOptions<WeightLimitRule>): Promise<[WeightLimitRule[], number]>;
  create(data: Partial<WeightLimitRule>): Promise<WeightLimitRule>;
  update(id: string, data: Partial<WeightLimitRule>): Promise<WeightLimitRule | null>;
  softDelete(id: string): Promise<void>;
}

export const WEIGHT_LIMIT_RULES_REPOSITORY = Symbol('WEIGHT_LIMIT_RULES_REPOSITORY');
