import { AskDocQuestionResult as AskDocQuestionResult$1 } from "../utils/AI/askDocQuestion/askDocQuestion.js";
import { TagAPI } from "../types/tag.types.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 { AIConfig, AIOptions, AIOptions as AIOptions$1, AIProvider, ChatCompletionRequestMessage, ChatCompletionRequestMessage as ChatCompletionRequestMessage$1 } from "@intlayer/ai";
import { Locale } from "@intlayer/types/allLocales";
import { KeyPath } from "@intlayer/types/keyPath";
import { FastifyReply, FastifyRequest } from "fastify";

//#region src/controllers/ai.controller.d.ts
type ReplaceAIConfigByOptions<T> = Omit<T, 'aiConfig'> & {
  aiOptions?: AIOptions$1;
};
type CustomQueryBody = ReplaceAIConfigByOptions<CustomQueryOptions> & {
  tagsKeys?: string[];
  applicationContext?: string;
};
type CustomQueryResult = ResponseData<CustomQueryResultData>;
declare const customQuery: (request: FastifyRequest<{
  Body: CustomQueryBody;
}>, reply: FastifyReply) => Promise<void>;
type TranslateJSONBody = Omit<ReplaceAIConfigByOptions<TranslateJSONOptions<JSON>>, 'tags'> & {
  tagsKeys?: string[];
};
type TranslateJSONResult = ResponseData<TranslateJSONResultData$1<JSON>>;
declare const translateJSON: (request: FastifyRequest<{
  Body: TranslateJSONBody;
}>, reply: FastifyReply) => Promise<void>;
type AuditContentDeclarationBody = {
  aiOptions?: AIOptions$1;
  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: (request: FastifyRequest<{
  Body: AuditContentDeclarationBody;
}>, reply: FastifyReply) => Promise<void>;
type AuditContentDeclarationFieldBody = {
  aiOptions?: AIOptions$1;
  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: (request: FastifyRequest<{
  Body: AuditContentDeclarationFieldBody;
}>, reply: FastifyReply) => Promise<void>;
type AuditContentDeclarationMetadataBody = {
  aiOptions?: AIOptions$1;
  fileContent: string;
};
type AuditContentDeclarationMetadataResult = ResponseData<AuditFileResultData$1>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const auditContentDeclarationMetadata: (request: FastifyRequest<{
  Body: AuditContentDeclarationMetadataBody;
}>, reply: FastifyReply) => Promise<void>;
type AuditTagBody = {
  aiOptions?: AIOptions$1;
  tag: TagAPI;
};
type AuditTagResult = ResponseData<TranslateJSONResultData>;
/**
 * Retrieves a list of dictionaries based on filters and pagination.
 */
declare const auditTag: (request: FastifyRequest<{
  Body: AuditTagBody;
}>, reply: FastifyReply) => Promise<void>;
type AskDocQuestionBody = {
  messages: ChatCompletionRequestMessage$1[];
  discussionId: string;
};
type AskDocQuestionResult = ResponseData<AskDocQuestionResult$1>;
declare const askDocQuestion: (request: FastifyRequest<{
  Body: AskDocQuestionBody;
}>, reply: FastifyReply) => Promise<void>;
type AutocompleteBody = {
  text: string;
  aiOptions?: AIOptions$1;
  contextBefore?: string;
  currentLine?: string;
  contextAfter?: string;
};
type AutocompleteResponse = ResponseData<{
  autocompletion: string;
}>;
declare const autocomplete: (request: FastifyRequest<{
  Body: AutocompleteBody;
}>, reply: FastifyReply) => 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: (request: FastifyRequest<{
  Querystring: GetDiscussionsParams;
}>, reply: FastifyReply) => Promise<void>;
//#endregion
export { type AIConfig, type AIOptions, type AIProvider, AskDocQuestionBody, AskDocQuestionResult, AuditContentDeclarationBody, AuditContentDeclarationFieldBody, AuditContentDeclarationFieldResult, AuditContentDeclarationMetadataBody, AuditContentDeclarationMetadataResult, AuditContentDeclarationResult, AuditTagBody, AuditTagResult, AutocompleteBody, AutocompleteResponse, type ChatCompletionRequestMessage, CustomQueryBody, CustomQueryResult, GetDiscussionsParams, GetDiscussionsResult, TranslateJSONBody, TranslateJSONResult, askDocQuestion, auditContentDeclaration, auditContentDeclarationField, auditContentDeclarationMetadata, auditTag, autocomplete, customQuery, getDiscussions, translateJSON };
//# sourceMappingURL=ai.controller.d.ts.map