import { Project } from "../types/project.types.js";
import { Dictionary, DictionaryData, DictionaryDocument } from "../types/dictionary.types.js";
import { DictionaryFilters } from "../utils/filtersAndPagination/getDictionaryFiltersAndPagination.js";
import { Types } from "mongoose";

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

/**
 * Finds dictionaries 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 dictionaries matching the filters.
 */
declare const findDictionaries: (filters: DictionaryFilters, skip?: number, limit?: number, sortOptions?: Record<string, 1 | -1>) => Promise<DictionaryDocument[]>;
/**
 * Finds a dictionary by its ID.
 * @param dictionaryId - The ID of the dictionary to find.
 * @returns The dictionary matching the ID.
 */
/**
 * Finds a dictionary by its ID and includes the 'versions' field.
 * @param dictionaryId - The ID of the dictionary to find.
 * @returns The dictionary matching the ID with available versions.
 */
declare const getDictionaryById: (dictionaryId: string | Types.ObjectId) => Promise<DictionaryDocument>;
/**
 * Finds a dictionary by its ID.
 * @param dictionaryKey - The ID of the dictionary to find.
 * @returns The dictionary matching the ID.
 */
declare const getDictionaryByKey: (dictionaryKey: string, projectId: string | Types.ObjectId) => Promise<DictionaryDocument>;
declare const getDictionariesByKeys: (dictionaryKeys: string[], projectId: string | Types.ObjectId) => Promise<DictionaryDocument[]>;
declare const getDictionariesByTags: (tags: string[], projectId: string | Project["id"]) => Promise<DictionaryDocument[]>;
/**
 * Counts the total number of dictionaries that match the filters.
 * @param filters - MongoDB filter query.
 * @returns Total number of dictionaries.
 */
declare const countDictionaries: (filters: DictionaryFilters) => Promise<number>;
/**
 * Creates a new dictionary in the database.
 * @param  dictionary - The dictionary data to create.
 * @returns The created dictionary.
 */
declare const createDictionary: (dictionary: DictionaryData) => Promise<DictionaryDocument>;
/**
 * Updates an existing dictionary in the database by its ID.
 * @param dictionaryId - The ID of the dictionary to update.
 * @param dictionary - The updated dictionary data.
 * @returns The updated dictionary.
 */
declare const updateDictionaryById: (dictionaryId: string | Types.ObjectId, dictionary: Partial<Dictionary>) => Promise<DictionaryDocument>;
/**
 * Updates an existing dictionary in the database by its key.
 * @param dictionaryKey - The ID of the dictionary to update.
 * @param dictionary - The updated dictionary data.
 * @returns The updated dictionary.
 */
declare const updateDictionaryByKey: (dictionaryKey: string, dictionary: Partial<Dictionary>, projectId: string | Types.ObjectId) => Promise<DictionaryDocument>;
/**
 * Deletes a dictionary from the database by its ID.
 * @param dictionaryId - The ID of the dictionary to delete.
 * @returns The result of the deletion operation.
 */
declare const deleteDictionaryById: (dictionaryId: string) => Promise<DictionaryDocument>;
declare const incrementVersion: (dictionary: Dictionary) => string;
//#endregion
export { countDictionaries, createDictionary, deleteDictionaryById, findDictionaries, getDictionariesByKeys, getDictionariesByTags, getDictionaryById, getDictionaryByKey, incrementVersion, updateDictionaryById, updateDictionaryByKey };
//# sourceMappingURL=dictionary.service.d.ts.map