import { Organization } from "../types/organization.types.js";
import { Tag, TagData, TagDocument } from "../types/tag.types.js";
import { TagFilters } from "../utils/filtersAndPagination/getTagFiltersAndPagination.js";
import { Types } from "mongoose";

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

/**
 * Finds tags 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 tags matching the filters.
 */
declare const findTags: (filters: TagFilters, skip?: number, limit?: number, sortOptions?: Record<string, 1 | -1>) => Promise<TagDocument[]>;
/**
 * Finds a tag by its ID.
 * @param tagId - The ID of the tag to find.
 * @returns The tag matching the ID.
 */
declare const getTagById: (tagId: string | Types.ObjectId) => Promise<TagDocument>;
declare const getTagsByKeys: (keys: string[], organizationId: string | Organization["id"]) => Promise<TagDocument[]>;
/**
 * Counts the total number of tags that match the filters.
 * @param filters - MongoDB filter query.
 * @returns Total number of tags.
 */
declare const countTags: (filters: TagFilters) => Promise<number>;
/**
 * Creates a new tag in the database.
 * @param  tag - The tag data to create.
 * @returns The created tag.
 */
declare const createTag: (tag: TagData) => Promise<TagDocument>;
/**
 * Updates an existing tag in the database by its ID.
 * @param tagId - The ID of the tag to update.
 * @param tag - The updated tag data.
 * @returns The updated tag.
 */
declare const updateTagById: (tagId: string | Types.ObjectId, tag: Partial<Tag>) => Promise<TagDocument>;
/**
 * Deletes a tag from the database by its ID.
 * @param tagId - The ID of the tag to delete.
 * @returns The result of the deletion operation.
 */
declare const deleteTagById: (tagId: string | Types.ObjectId) => Promise<TagDocument>;
//#endregion
export { countTags, createTag, deleteTagById, findTags, getTagById, getTagsByKeys, updateTagById };
//# sourceMappingURL=tag.service.d.ts.map