import { Dictionary as Dictionary$1, DictionaryAPI, DictionaryCreationData } from "../types/dictionary.types.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 { FastifyReply, FastifyRequest } from "fastify";

//#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: (request: FastifyRequest<{
  Querystring: GetDictionariesParams;
}>, reply: FastifyReply) => Promise<void>;
type GetDictionariesKeysResult = ResponseData<string[]>;
/**
 * Retrieves a list of dictionaries keys based on filters and pagination.
 */
declare const getDictionariesKeys: (_request: FastifyRequest, reply: FastifyReply) => 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: (_request: FastifyRequest, reply: FastifyReply) => 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: (request: FastifyRequest<{
  Params: GetDictionaryParams;
  Querystring: GetDictionaryQuery;
}>, reply: FastifyReply) => Promise<void>;
type AddDictionaryBody = {
  dictionary: DictionaryCreationData;
};
type AddDictionaryResult = ResponseData<DictionaryAPI>;
/**
 * Adds a new dictionary to the database.
 */
declare const addDictionary: (request: FastifyRequest<{
  Body: AddDictionaryBody;
}>, reply: FastifyReply) => 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.
 */
declare const pushDictionaries: (request: FastifyRequest<{
  Body: PushDictionariesBody;
}>, reply: FastifyReply) => 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: (request: FastifyRequest<{
  Params: UpdateDictionaryParam;
  Body: UpdateDictionaryBody;
}>, reply: FastifyReply) => Promise<void>;
type DeleteDictionaryParam = {
  dictionaryId: string;
};
type DeleteDictionaryResult = ResponseData<DictionaryAPI>;
/**
 * Deletes a dictionary from the database by its ID.
 */
declare const deleteDictionary: (request: FastifyRequest<{
  Params: DeleteDictionaryParam;
}>, reply: FastifyReply) => 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