import { ProjectActionEnum } from "../enums/project_action_enum"; import { IProjectFlowConfigContextData } from "../flow-configs/project_flow.config"; import { IUserEntity } from "../interface/user.entity.interface"; import { IRowActions } from "./interface/row-actions.interface"; import { IProjectUserDto } from "../../api"; import { CurrencyEnum } from "../../enums"; import { ProjectBillingTypeEnum } from "../enums/project_billing_type_enum"; import { ProjectRevenueSplitEnum } from "../enums/project_revenue_split_enum"; import { ProjectStatusEnum } from "../enums/project_status_enum"; import { UsageNotificationThresholdEnum } from "../enums/project_usage_notification_threshold_enum"; import { EntityEnum, Nullable } from "../interface/entity.utils.interface"; import { IProjectEntity } from "../interface/project.entity.interface"; import { RelationConfigs } from "../interface/relation-config.interface"; import { BaseEntityModel } from "./base.entity.model"; import { BillingEntityModel } from "./billing.entity.model"; import { ClientEntityModel } from "./client.entity.model"; import { ProjectUserMappingEntityModel } from "./project_user_mapping.entity.model"; import { TimesheetEntityModel } from "./timesheet.entity.model"; import { UserEntityModel } from "./user.entity.model"; export declare class ProjectEntityModel extends BaseEntityModel implements IProjectEntity { id: number; name: string; clientId: number; startDate: string; currency: CurrencyEnum; billingType: ProjectBillingTypeEnum; billingRate: string; status: ProjectStatusEnum; organizationId: number; description?: string; expectedEndDate?: string; actualEndDate?: string; createdBy: number; updatedBy: number; createdOn: number; updatedOn: number; billToClientAffiliateId?: number | null; revenueSplit: ProjectRevenueSplitEnum; usageNotificationSentPercentage?: Nullable; clientQuoteId?: Nullable; users?: IProjectUserDto[]; billingOverdueDays?: number; userMappings?: (UserEntityModel & ProjectUserMappingEntityModel)[]; projectUserMappings?: ProjectUserMappingEntityModel[]; client: ClientEntityModel; billings?: BillingEntityModel[]; timesheets: TimesheetEntityModel[]; static fromEntity(entity: IProjectEntity): ProjectEntityModel; static relationConfigs: RelationConfigs<[EntityEnum.PROJECT_USER_MAPPING, EntityEnum.BILLING, EntityEnum.CLIENT, EntityEnum.TIMESHEET], EntityEnum.PROJECT>; populateUsers(users: UserEntityModel[], projectUserMapping: ProjectUserMappingEntityModel[]): void; getRelationConfigs(): [import("../interface/relation-config.interface").IRelationConfig, import("../interface/relation-config.interface").IRelationConfig, import("../interface/relation-config.interface").IRelationConfig, import("../interface/relation-config.interface").IRelationConfig]; isForeignCurrencyProject(): boolean; get parsedBillingRate(): any; isHourlyProject(): boolean; isFixedProject(): boolean; isAdhocProject(): boolean; get partnersOwnerUsersOfProject(): UserEntityModel[]; get clientName(): string; get clientGSTNumber(): string; get clientVendorCode(): string; get timesheetsOfProject(): TimesheetEntityModel[]; getTimesheetsGroupedByUserId(): Map; getAllPartnersClassificationData(): Map; getNextStatus(currentUser: IUserEntity, action: ProjectActionEnum, projectFlowConfigContextData: IProjectFlowConfigContextData): ProjectStatusEnum; getAvailableActions(currentUser: UserEntityModel, config?: { combinedActions?: Record; customLabels?: Partial>; }): IRowActions[]; getUpdateActionVisibility(currentUser: UserEntityModel): { [key: string]: () => boolean; }; }