import { TagAPI } from "../types/tag.types.js";
import { ResponseWithSession } from "../middlewares/sessionAuth.middleware.js";
import { AskDocQuestionResult as AskDocQuestionResult$1 } from "../utils/AI/askDocQuestion/askDocQuestion.js";
import { AuditFileResultData } from "../utils/AI/auditDictionary/index.js";
import { AuditDictionaryFieldResultData } from "../utils/AI/auditDictionaryField/index.js";
import { AuditFileResultData as AuditFileResultData$1 } from "../utils/AI/auditDictionaryMetadata/index.js";
import { TranslateJSONResultData } from "../utils/AI/auditTag/index.js";
import { CustomQueryOptions, CustomQueryResultData } from "../utils/AI/customQuery/index.js";
import { TranslateJSONOptions, TranslateJSONResultData as TranslateJSONResultData$1 } from "../utils/AI/translateJSON/index.js";
import { DiscussionAPI } from "../types/discussion.types.js";
import { DiscussionFiltersParams } from "../utils/filtersAndPagination/getDiscussionFiltersAndPagination.js";
import { PaginatedResponse, ResponseData } from "../utils/responseData.js";
import { AIOptions, ChatCompletionRequestMessage } from "@intlayer/ai";
import { KeyPath, Locale } from "@intlayer/types";
import { NextFunction, Request } from "express";

//#region src/controllers/ai.controller.d.ts
type ReplaceAIConfigByOptions<T> = Omit<T, 'aiConfig'> & {
  aiOptions?: AIOptions;
};
type CustomQueryBody = ReplaceAIConfigByOptions<CustomQueryOptions> & {
  tagsKeys?: string[];
  applicationContext?: string;
};
type CustomQueryResult = ResponseData<CustomQueryResultData>;
declare const customQuery: (req: Request<CustomQueryBody>, res: ResponseWithSession<CustomQueryResult>, _next: NextFunction) => Promise<void>;
type TranslateJSONBody = Omit<ReplaceAIConfigByOptions<TranslateJSONOptions>, 'tags'> & {
  tagsKeys?: string[];
};
type TranslateJSONResult = ResponseData<TranslateJSONResultData$1>;
declare const translateJSON: (req: Request<TranslateJSONBody>, res: ResponseWithSession<TranslateJSONResult>, _next: NextFunction) => Promise<void>;
type AuditContentDeclarationBody = {
  aiOptions?: AIOptions;
  locales: Locale[];
  defaultLocale: Locale;
  fileContent: string;
  filePath?: string;
  tagsKeys?: string[];
};
type AuditContentDeclarationResult = ResponseData<AuditFileResultData>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const auditContentDeclaration: (req: Request<AuditContentDeclarationBody>, res: ResponseWithSession<AuditContentDeclarationResult>, _next: NextFunction) => Promise<void>;
type AuditContentDeclarationFieldBody = {
  aiOptions?: AIOptions;
  locales: Locale[];
  fileContent: string;
  filePath?: string;
  tagsKeys?: string[];
  keyPath: KeyPath[];
};
type AuditContentDeclarationFieldResult = ResponseData<AuditDictionaryFieldResultData>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const auditContentDeclarationField: (req: Request<AuditContentDeclarationFieldBody>, res: ResponseWithSession<AuditContentDeclarationFieldResult>, _next: NextFunction) => Promise<void>;
type AuditContentDeclarationMetadataBody = {
  aiOptions?: AIOptions;
  fileContent: string;
};
type AuditContentDeclarationMetadataResult = ResponseData<AuditFileResultData$1>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const auditContentDeclarationMetadata: (req: Request<AuditContentDeclarationMetadataBody>, res: ResponseWithSession<AuditContentDeclarationMetadataResult>, _next: NextFunction) => Promise<void>;
type AuditTagBody = {
  aiOptions?: AIOptions;
  tag: TagAPI;
};
type AuditTagResult = ResponseData<TranslateJSONResultData>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const auditTag: (req: Request<undefined, undefined, AuditTagBody>, res: ResponseWithSession<AuditTagResult>, _next: NextFunction) => Promise<void>;
type AskDocQuestionBody = {
  messages: ChatCompletionRequestMessage[];
  discussionId: string;
};
type AskDocQuestionResult = ResponseData<AskDocQuestionResult$1>;
declare const askDocQuestion: (req: Request<undefined, undefined, AskDocQuestionBody>, res: ResponseWithSession<AskDocQuestionResult>, _next: NextFunction) => Promise<void>;
type AutocompleteBody = {
  text: string;
  aiOptions?: AIOptions;
  contextBefore?: string;
  currentLine?: string;
  contextAfter?: string;
};
type AutocompleteResponse = ResponseData<{
  autocompletion: string;
}>;
declare const autocomplete: (req: Request<AutocompleteBody>, res: ResponseWithSession<AutocompleteResponse>, _next: NextFunction) => Promise<void>;
type GetDiscussionsParams = ({
  page?: string | number;
  pageSize?: string | number;
  includeMessages?: 'true' | 'false';
} & DiscussionFiltersParams) | undefined;
type GetDiscussionsResult = PaginatedResponse<DiscussionAPI>;
/**
 * Retrieves a list of discussions with filters and pagination.
 * Only the owner or admins can access. By default, users only see their own.
 */
declare const getDiscussions: (req: Request<GetDiscussionsParams>, res: ResponseWithSession<GetDiscussionsResult>, _next: NextFunction) => Promise<void>;
//#endregion
export { AskDocQuestionBody, AskDocQuestionResult, AuditContentDeclarationBody, AuditContentDeclarationFieldBody, AuditContentDeclarationFieldResult, AuditContentDeclarationMetadataBody, AuditContentDeclarationMetadataResult, AuditContentDeclarationResult, AuditTagBody, AuditTagResult, AutocompleteBody, AutocompleteResponse, CustomQueryBody, CustomQueryResult, GetDiscussionsParams, GetDiscussionsResult, TranslateJSONBody, TranslateJSONResult, askDocQuestion, auditContentDeclaration, auditContentDeclarationField, auditContentDeclarationMetadata, auditTag, autocomplete, customQuery, getDiscussions, translateJSON };
//# sourceMappingURL=ai.controller.d.ts.map