import { CreateProjectDto } from "./dto/create-project.dto";
import { UpdateProjectDto } from "./dto/update-project.dto";
import { ProjectFiltersDto } from "./dto/project-filters.dto";
import { AssignPartyDto } from "./dto/assign-party.dto";
import { PartyAssignmentFiltersDto } from "./dto/party-assignment-filters.dto";
import { DeletePartyAssignmentDto } from "./dto/delete-party-assignment.dto";
import { ProjectRepository } from "./repositories/project.repository";
import { ProjectEmployeeRepository } from "./repositories/project-employee.repository";
import { ProjectPartyAssignmentRepository } from "./repositories/project-party-assignment.repository";
import { Project } from "./entities/project.entity";
import { ProjectEmployee } from "./entities/project-employee.entity";
import { ProjectPartyAssignment } from "./entities/project-party-assignment.entity";
import { TimeTrackingRepository } from "../time-tracking/repositories/time-tracking.repository";
import { TimeTracking } from "../time-tracking/entities/time-tracking.entity";
import { Repository, DataSource } from "typeorm";
import { Vendor } from "../vendors/entities/vendor.entity";
import { Contractor } from "../contractors/entities/contractor.entity";
import { Consultant } from "../consultants/entities/consultant.entity";
import { PartyPayment } from "../party-types/entities/party-payment.entity";
import { PartyPaymentHistory } from "../party-types/entities/party-payment-history.entity";
import { NotificationService } from "../notification/notification.service";
import { ProjectCompletionLogRepository } from "./repositories/project-completion-log.repository";
import { ProjectCompletionLog } from "./entities/project-completion-log.entity";
import { UpdateCompletionPercentageDto } from "./dto/update-completion-percentage.dto";
import { PermissionRepository } from "../permissions/repositories/permission.repository";
import { RolePermissionRepository } from "../role-permissions/repositories/role-permission.repository";
export declare class ProjectsService {
    private readonly projectRepository;
    private readonly projectEmployeeRepository;
    private readonly projectPartyAssignmentRepository;
    private readonly timeTrackingRepository;
    private readonly projectCompletionLogRepository;
    private readonly projectEmployeeEntityRepository;
    private readonly projectPartyAssignmentEntityRepository;
    private readonly timeTrackingEntityRepository;
    private readonly vendorEntityRepository;
    private readonly contractorEntityRepository;
    private readonly consultantEntityRepository;
    private readonly projectEntityRepository;
    private readonly partyPaymentEntityRepository;
    private readonly partyPaymentHistoryRepository;
    private readonly projectCompletionLogEntityRepository;
    private readonly notificationService;
    private readonly dataSource;
    private readonly permissionRepository;
    private readonly rolePermissionRepository;
    constructor(projectRepository: ProjectRepository, projectEmployeeRepository: ProjectEmployeeRepository, projectPartyAssignmentRepository: ProjectPartyAssignmentRepository, timeTrackingRepository: TimeTrackingRepository, projectCompletionLogRepository: ProjectCompletionLogRepository, projectEmployeeEntityRepository: Repository<ProjectEmployee>, projectPartyAssignmentEntityRepository: Repository<ProjectPartyAssignment>, timeTrackingEntityRepository: Repository<TimeTracking>, vendorEntityRepository: Repository<Vendor>, contractorEntityRepository: Repository<Contractor>, consultantEntityRepository: Repository<Consultant>, projectEntityRepository: Repository<Project>, partyPaymentEntityRepository: Repository<PartyPayment>, partyPaymentHistoryRepository: Repository<PartyPaymentHistory>, projectCompletionLogEntityRepository: Repository<ProjectCompletionLog>, notificationService: NotificationService, dataSource: DataSource, permissionRepository: PermissionRepository, rolePermissionRepository: RolePermissionRepository);
    create(createProjectDto: CreateProjectDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    findAll(query: ProjectFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    findOne(id: number): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    update(id: number, updateProjectDto: UpdateProjectDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private sendProjectStatusChangeNotifications;
    remove(id: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    activeInactive(id: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    checkProjectExist(name: string, companyId: number): Promise<boolean>;
    assignEmployee(projectId: number, employeeId: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getProjectEmployees(projectId: number, token: string, query: any): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    removeEmployeeAssignment(projectId: number, assignmentId: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    assignParty(assignPartyDto: AssignPartyDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getAssignedParties(query: PartyAssignmentFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    deletePartyAssignment(deletePartyAssignmentDto: DeletePartyAssignmentDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private getBudgetBreakdownByActivity;
    private getBudgetBreakdownByEmployee;
    private getBudgetBreakdownByParty;
    private calculateUsedBudget;
    private calculatePartyTotalCost;
    updateCompletionPercentage(projectId: number, updateCompletionPercentageDto: UpdateCompletionPercentageDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
}
