import { Dictionary as Dictionary$1, DictionaryAPI, DictionaryCreationData } from "../types/dictionary.types.js";
import { ResponseWithSession } from "../middlewares/sessionAuth.middleware.js";
import { FiltersAndPagination } from "../utils/filtersAndPagination/getFiltersAndPaginationFromBody.js";
import { PaginatedResponse, ResponseData } from "../utils/responseData.js";
import { DictionaryFiltersParams } from "../utils/filtersAndPagination/getDictionaryFiltersAndPagination.js";
import { Dictionary, DictionaryId, LocalDictionaryId } from "@intlayer/types";
import { NextFunction, Request } from "express";

//#region src/controllers/dictionary.controller.d.ts
type GetDictionariesParams = FiltersAndPagination<DictionaryFiltersParams>;
type GetDictionariesResult = PaginatedResponse<DictionaryAPI>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const getDictionaries: (req: Request<GetDictionariesParams>, res: ResponseWithSession<GetDictionariesResult>, _next: NextFunction) => Promise<void>;
type GetDictionariesKeysResult = ResponseData<string[]>;
/**
 * Retrieves a list of dictionaries keys based on filters and pagination.
 */
declare const getDictionariesKeys: (_req: Request, res: ResponseWithSession<GetDictionariesKeysResult>, _next: NextFunction) => Promise<void>;
type GetDictionariesUpdateTimestampResult = ResponseData<Record<DictionaryId, {
  key: string;
  updatedAt: number;
}>>;
/**
 * Retrieves a list of dictionaries keys based on filters and pagination.
 */
declare const getDictionariesUpdateTimestamp: (_req: Request, res: ResponseWithSession<GetDictionariesUpdateTimestampResult>, _next: NextFunction) => Promise<void>;
type GetDictionaryParams = {
  dictionaryKey: string;
};
type GetDictionaryQuery = {
  version?: string;
};
type GetDictionaryResult = ResponseData<DictionaryAPI>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const getDictionaryByKey: (req: Request<GetDictionaryParams, any, any, GetDictionaryQuery>, res: ResponseWithSession<GetDictionaryResult>, _next: NextFunction) => Promise<void>;
type AddDictionaryBody = {
  dictionary: DictionaryCreationData;
};
type AddDictionaryResult = ResponseData<DictionaryAPI>;
/**
 * Adds a new dictionary to the database.
 */
declare const addDictionary: (req: Request<any, any, AddDictionaryBody>, res: ResponseWithSession<AddDictionaryResult>, _next: NextFunction) => Promise<void>;
type PushDictionariesBody = {
  dictionaries: Dictionary[];
};
type PushDictionariesResultData = {
  newDictionaries: {
    key: string;
    localId: LocalDictionaryId;
    id: string | undefined;
  }[];
  updatedDictionaries: {
    key: string;
    localId: LocalDictionaryId;
    id: string | undefined;
  }[];
  error: {
    id: string | undefined;
    key: string;
    localId: LocalDictionaryId | undefined;
    message: string;
  }[];
};
type PushDictionariesResult = ResponseData<PushDictionariesResultData>;
/**
 * Check each dictionaries, add the new ones and update the existing ones.
 * @param req - Express request object.
 * @param res - Express response object.
 * @returns Response containing the created dictionary.
 */
declare const pushDictionaries: (req: Request<any, any, PushDictionariesBody>, res: ResponseWithSession<PushDictionariesResult>, _next: NextFunction) => Promise<void>;
type UpdateDictionaryParam = {
  dictionaryId: string;
};
type UpdateDictionaryBody = Partial<Dictionary$1>;
type UpdateDictionaryResult = ResponseData<DictionaryAPI>;
/**
 * Updates an existing dictionary in the database.
 */
declare const updateDictionary: (req: Request<UpdateDictionaryParam, any, UpdateDictionaryBody>, res: ResponseWithSession<UpdateDictionaryResult>, _next: NextFunction) => Promise<void>;
type DeleteDictionaryParam = {
  dictionaryId: string;
};
type DeleteDictionaryResult = ResponseData<DictionaryAPI>;
/**
 * Deletes a dictionary from the database by its ID.
 */
declare const deleteDictionary: (req: Request<DeleteDictionaryParam>, res: ResponseWithSession<DeleteDictionaryResult>, _next: NextFunction) => Promise<void>;
//#endregion
export { AddDictionaryBody, AddDictionaryResult, DeleteDictionaryParam, DeleteDictionaryResult, GetDictionariesKeysResult, GetDictionariesParams, GetDictionariesResult, GetDictionariesUpdateTimestampResult, GetDictionaryParams, GetDictionaryQuery, GetDictionaryResult, PushDictionariesBody, PushDictionariesResult, UpdateDictionaryBody, UpdateDictionaryParam, UpdateDictionaryResult, addDictionary, deleteDictionary, getDictionaries, getDictionariesKeys, getDictionariesUpdateTimestamp, getDictionaryByKey, pushDictionaries, updateDictionary };
//# sourceMappingURL=dictionary.controller.d.ts.map