import { Tag, TagAPI, TagCreationData, TagData } from "../types/tag.types.js";
import { FiltersAndPagination } from "../utils/filtersAndPagination/getFiltersAndPaginationFromBody.js";
import { PaginatedResponse, ResponseData } from "../utils/responseData.js";
import { TagFiltersParams } from "../utils/filtersAndPagination/getTagFiltersAndPagination.js";
import { FastifyReply, FastifyRequest } from "fastify";

//#region src/controllers/tag.controller.d.ts
type GetTagsParams = FiltersAndPagination<TagFiltersParams>;
type GetTagsResult = PaginatedResponse<TagAPI>;
/**
 * Retrieves a list of tags based on filters and pagination.
 */
declare const getTags: (request: FastifyRequest<{
  Querystring: GetTagsParams;
}>, reply: FastifyReply) => Promise<void>;
type AddTagBody = TagCreationData;
type AddTagResult = ResponseData<TagAPI>;
/**
 * Adds a new tag to the database.
 */
declare const addTag: (request: FastifyRequest<{
  Body: AddTagBody;
}>, reply: FastifyReply) => Promise<void>;
type UpdateTagParams = {
  tagId: string | Tag['id'];
};
type UpdateTagBody = Partial<TagData>;
type UpdateTagResult = ResponseData<TagAPI>;
/**
 * Updates an existing tag in the database.
 */
declare const updateTag: (request: FastifyRequest<{
  Params: UpdateTagParams;
  Body: UpdateTagBody;
}>, reply: FastifyReply) => Promise<void>;
type DeleteTagParams = {
  tagId: string | Tag['id'];
};
type DeleteTagResult = ResponseData<TagAPI>;
/**
 * Deletes a tag from the database by its ID.
 */
declare const deleteTag: (request: FastifyRequest<{
  Params: DeleteTagParams;
}>, reply: FastifyReply) => Promise<void>;
//#endregion
export { AddTagBody, AddTagResult, DeleteTagParams, DeleteTagResult, GetTagsParams, GetTagsResult, UpdateTagBody, UpdateTagParams, UpdateTagResult, addTag, deleteTag, getTags, updateTag };
//# sourceMappingURL=tag.controller.d.ts.map