import { Project, ProjectAPI, ProjectData, ProjectDocument } from "../types/project.types.js";
import { ProjectFilters } from "../utils/filtersAndPagination/getProjectFiltersAndPagination.js";
import { Types } from "mongoose";

//#region src/services/project.service.d.ts

/**
 * Finds projects based on filters and pagination options.
 * @param filters - MongoDB filter query.
 * @param skip - Number of documents to skip.
 * @param limit - Number of documents to limit.
 * @returns List of projects matching the filters.
 */
declare const findProjects: (filters: ProjectFilters, skip?: number, limit?: number, sortOptions?: Record<string, 1 | -1>) => Promise<ProjectDocument[]>;
/**
 * Finds a project by its ID.
 * @param projectId - The ID of the project to find.
 * @returns The project matching the ID.
 */
declare const getProjectById: (projectId: string | Types.ObjectId) => Promise<ProjectDocument>;
/**
 * Counts the total number of projects that match the filters.
 * @param filters - MongoDB filter query.
 * @returns Total number of projects.
 */
declare const countProjects: (filters: ProjectFilters) => Promise<number>;
/**
 * Creates a new project in the database.
 * @param  project - The project data to create.
 * @returns The created project.
 */
declare const createProject: (project: ProjectData) => Promise<ProjectDocument>;
/**
 * Updates an existing project in the database by its ID.
 * @param projectId - The ID of the project to update.
 * @param project - The updated project data.
 * @returns The updated project.
 */
declare const updateProjectById: (projectId: string | Types.ObjectId, project: Partial<Project | ProjectAPI>) => Promise<ProjectDocument>;
/**
 * Deletes a project from the database by its ID.
 * @param projectId - The ID of the project to delete.
 * @returns The result of the deletion operation.
 */
declare const deleteProjectById: (projectId: string | Types.ObjectId) => Promise<ProjectDocument>;
//#endregion
export { countProjects, createProject, deleteProjectById, findProjects, getProjectById, updateProjectById };
//# sourceMappingURL=project.service.d.ts.map