import { Document, Types } from 'mongoose';
import { IPaginateModel } from '@/shared/interfaces/model.interface';
import { AuditFields } from '@/shared/types/common';

export type DynamicRules = Map<string, boolean>;

export interface IRulesBase {
  companyId: Types.ObjectId;
  rules: DynamicRules;
}

export interface IRules extends IRulesBase, AuditFields {}

export interface IRulesDoc extends IRules, Document {}

export interface IRulesModel extends IPaginateModel<IRulesDoc> {
  isRuleSetExists(companyId: Types.ObjectId): Promise<boolean>;
}

export type NewCreatedRules = IRulesBase & Partial<Pick<AuditFields, 'createdBy' | 'updatedBy'>>;
export type UpdateRulesBody = Partial<IRulesBase>;
