import { Tag, TagAPI, TagCreationData, TagData } from "../types/tag.types.js";
import { ResponseWithSession } from "../middlewares/sessionAuth.middleware.js";
import { FiltersAndPagination } from "../utils/filtersAndPagination/getFiltersAndPaginationFromBody.js";
import { PaginatedResponse, ResponseData } from "../utils/responseData.js";
import { TagFiltersParams } from "../utils/filtersAndPagination/getTagFiltersAndPagination.js";
import { NextFunction, Request } from "express";

//#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: (req: Request<GetTagsParams>, res: ResponseWithSession<GetTagsResult>, _next: NextFunction) => Promise<void>;
type AddTagBody = TagCreationData;
type AddTagResult = ResponseData<TagAPI>;
/**
 * Adds a new tag to the database.
 */
declare const addTag: (req: Request<any, any, AddTagBody>, res: ResponseWithSession<AddTagResult>, _next: NextFunction) => 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: (req: Request<UpdateTagParams, any, UpdateTagBody>, res: ResponseWithSession<UpdateTagResult>, _next: NextFunction) => Promise<void>;
type DeleteTagParams = {
  tagId: string | Tag['id'];
};
type DeleteTagResult = ResponseData<TagAPI>;
/**
 * Deletes a tag from the database by its ID.
 * @param req - Express request object.
 * @param  res - Express response object.
 * @returns Response confirming the deletion.
 */
declare const deleteTag: (req: Request<DeleteTagParams>, res: ResponseWithSession<DeleteTagResult>, _next: NextFunction) => Promise<void>;
//#endregion
export { AddTagBody, AddTagResult, DeleteTagParams, DeleteTagResult, GetTagsParams, GetTagsResult, UpdateTagBody, UpdateTagParams, UpdateTagResult, addTag, deleteTag, getTags, updateTag };
//# sourceMappingURL=tag.controller.d.ts.map