import { ILeaveUpdateDto } from "../../api"; import { DateCodeModel, Weekday } from "../../utils"; import { DurationTypeEnum } from "../enums/duration_type_enum"; import { LeaveActionEnum } from "../enums/leave_action_enum"; import { LeaveStatusEnum } from "../enums/leave_status_enum"; import { LeaveTypeEnum } from "../enums/leave_type_enum"; import { ILeaveFlowConfigContextData } from "../flow-configs/leave_flow.config"; import { EntityEnum, VirtualEntityEnum } from "../interface/entity.utils.interface"; import { ILeaveEntity } from "../interface/leave.entity.interface"; import { RelationConfigs } from "../interface/relation-config.interface"; import { BaseEntityModel } from "./base.entity.model"; import { IRowActions } from "./interface/row-actions.interface"; import { LeaveApprovalEntityModel } from "./leave_approval.entity.model"; import { LeaveCountVirtualEntityModel } from "./leave_count.entity.model"; import { UserEntityModel } from "./user.entity.model"; export declare class LeaveEntityModel extends BaseEntityModel implements ILeaveEntity { id: number; employeeId: number; fromDate: string; toDate: string; reason: string; durationType: DurationTypeEnum; status: LeaveStatusEnum; remark?: string; type: LeaveTypeEnum; createdOn: number; updatedOn: number; createdBy: number; updatedBy: number; leaveCount?: LeaveCountVirtualEntityModel; createdByUser?: UserEntityModel; updatedByUser?: UserEntityModel; user?: UserEntityModel; leaveApprovals?: LeaveApprovalEntityModel[]; static fromEntity(data: ILeaveEntity): LeaveEntityModel; getLeaveDuration(excludeWeekdays?: Weekday[], excludeDates?: DateCodeModel[]): number; static getLeaveDuration(leaves: LeaveEntityModel[], excludeWeekdays?: Weekday[], excludeDates?: DateCodeModel[], leaveStatusEnum?: LeaveStatusEnum[]): number; getDateCodeModels(dateCodeIncludePredicates?: ((dateModel: DateCodeModel) => boolean)[], dateCodeExcludePredicates?: ((dateModel: DateCodeModel) => boolean)[]): DateCodeModel[]; static getLeaveApprovePredicate(): (leave: LeaveEntityModel) => boolean; static getLeavePendingPredicate(): (leave: LeaveEntityModel) => boolean; static getLeavesByPredicates(leaves: LeaveEntityModel[], includePredicates?: ((leave: LeaveEntityModel) => boolean)[], excludePredicates?: ((leave: LeaveEntityModel) => boolean)[]): LeaveEntityModel[]; static orderByFromDateAsc(leaves: LeaveEntityModel[]): LeaveEntityModel[]; isWeekendSucceeds(): boolean; isWeekendPrecedes(): boolean; isHolidaySucceeds(holidays: DateCodeModel[]): boolean; isHolidayPrecedes(holidays: DateCodeModel[]): boolean; getRelationConfigs(): any[]; static relationConfigs: RelationConfigs<[ VirtualEntityEnum.LEAVE_COUNT, EntityEnum.USER, EntityEnum.USER, EntityEnum.USER, EntityEnum.LEAVE_APPROVAL ], EntityEnum.LEAVE>; static fromApiEntity(apiEntity: ILeaveEntity): LeaveEntityModel; static getPendingApprovalStatuses(): LeaveStatusEnum[]; getStatusLabel(): string; getTypeLabel(): string; getLeaveCount(): number; static getLeaveCount(leaveEntities: LeaveEntityModel[]): number; isMoreThanOneDayLeave(): boolean; getFromDateLabel(): string; getToDateLabel(): string; getDateDurationLabel(): string; static getLeaveStatusPriority(): { CREATE_APPROVAL_PENDING: number; UPDATE_APPROVAL_PENDING: number; DELETE_APPROVAL_PENDING: number; APPROVED: number; REJECTED: number; }; getAvailableActions(currentUser: UserEntityModel, config?: { combinedActions?: Record; customLabels?: Partial>; }): IRowActions[]; getUpdateActionVisibility(currentUser: UserEntityModel): { [key: string]: () => boolean; }; getNextStatus(currentUser: UserEntityModel, dto: ILeaveUpdateDto, leaveFlowContext?: ILeaveFlowConfigContextData): LeaveStatusEnum; mapStatusLabel(status: LeaveStatusEnum): string; static getFormattedStatus(status: LeaveStatusEnum): string; getOverallStatusByLeaveApprovals(): LeaveStatusEnum; }