import * as grpc from '@grpc/grpc-js';
import { type DeepPartial, type FunctionMessage, FunctionRequest, RunFunctionsRequest, type RunFunctionsResponse } from './generated/nlp_server.js';
import { GetContentRequest, type GetContentResponse, GetIntentsRequest, GetScoreLimitsRequest, GetScoreLimitsResponse, Intent, RemoveContentRequest, type RemoveContentResponse, UpdateContentRequest, type UpdateContentResponse } from './generated/intents.js';
import { AddProjectRequest, type AddProjectResponse, GetProjectsRequest, type Project, RemoveProjectRequest, RemoveProjectResponse, UpdateProjectRequest, UpdateProjectResponse } from './generated/projects.js';
export * as NlpServer from './generated/nlp_server.js';
export * as Projects from './generated/projects.js';
export * as Intents from './generated/intents.js';
export interface ConnectionOptions {
    /**
     * The Aristech NLP-Server uri e.g. nlp.example.com
     */
    host?: string;
    /**
     * Whether to use SSL/TLS. Automatically enabled when rootCert is provided
     */
    ssl?: boolean;
    /**
     * Allows providing a custom root certificate that might not exist
     * in the root certificate chain
     */
    rootCert?: string;
    /**
     * Optionally instead of providing a root cert path via `rootCert` the root cert content can be provided directly
     */
    rootCertContent?: string;
    /**
     * Further grpc client options
     */
    grpcClientOptions?: grpc.ClientOptions;
    /**
     * Authentication options.
     * **Note:** Can only be used in combination with SSL/TLS.
     */
    auth?: {
        token: string;
        secret: string;
    };
}
export declare class NlpClient {
    private cOptions;
    constructor(options: ConnectionOptions);
    /**
     * List all available functions on the server
     * @param request An optional request object
     * @returns A promise that resolves with an array of function messages
     */
    listFunctions(request?: DeepPartial<FunctionRequest>): Promise<Array<FunctionMessage>>;
    /**
     * Performs a processing request with the given request
     * @param request The request object
     * @returns A promise that resolves with the response object
     */
    runFunctions(request: DeepPartial<RunFunctionsRequest>): Promise<RunFunctionsResponse>;
    /**
     * Performs a processing request with the given request
     * @deprecated Use `runFunctions` instead
     * @param request The request object
     * @returns A promise that resolves with the response object
     */
    process(request: DeepPartial<RunFunctionsRequest>): Promise<RunFunctionsResponse>;
    /**
     * Get all projects available on the server
     * @param request An optional request object
     * @returns A promise that resolves with an array of projects
     */
    listProjects(request?: DeepPartial<GetProjectsRequest>): Promise<Array<Project>>;
    /**
     * Add a new project to the server
     * @param project The project to add
     * @returns A promise that resolves with the added project
     */
    addProject(request: DeepPartial<AddProjectRequest>): Promise<AddProjectResponse>;
    /**
     * Update a project on the server
     * @param project The project to update
     * @returns A promise that resolves with the updated project
     */
    updateProject(request: DeepPartial<UpdateProjectRequest>): Promise<UpdateProjectResponse>;
    /**
     * Remove a project from the server
     * @param projectId The id of the project to remove
     * @returns A promise that resolves when the project was removed
     */
    removeProject(request: DeepPartial<RemoveProjectRequest>): Promise<RemoveProjectResponse>;
    /**
     * Get all intents for a given project
     * @param request The request object
     * @returns A promise that resolves with the response objects
     */
    listIntents(request: DeepPartial<GetIntentsRequest>): Promise<Array<Intent>>;
    /**
     * This function allows to find out good thresholds by providing prompts that should match
     * an intent and negative prompts that should not match an intent.
     *
     * @param request The request object
     * @returns A promise that resolves with the response object
     */
    getScoreLimits(request: DeepPartial<GetScoreLimitsRequest>): Promise<GetScoreLimitsResponse>;
    /**
     * Get the content of a given id
     * @param request The request object
     * @returns A promise that resolves with the response object
     */
    getContent(request: DeepPartial<GetContentRequest>): Promise<GetContentResponse>;
    /**
     * Updates content inside the vector database
     * @param request The request object
     * @returns A promise that resolves with the response object
     */
    updateContent(request: DeepPartial<UpdateContentRequest>): Promise<UpdateContentResponse>;
    /**
     * Removes content from the vector database
     * @param request The request object
     * @returns A promise that resolves when the content was removed
     */
    removeContent(request: DeepPartial<RemoveContentRequest>): Promise<RemoveContentResponse>;
    private getClient;
}
