import { CrontabSchedule, HttpRequestOptions, PrinterFunction, WorkflowKey } from './types';
import { Workflow } from './core';
import { ProviderClass } from './io/providerClass';
import { AxiosRequestConfig } from 'axios';
/**
 * Genera un UUID único con posibilidad de tener un prefijo.
 * @param prefix Prefijo opcional para el UUID.
 * @returns El UUID generado.
 */
declare const generateRef: (prefix?: string) => string;
/**
 * Genera un timestamp en milisegundos sin prefijo hex.
 * @returns El timestamp generado.
 */
declare const generateTime: () => number;
/**
 * Genera un HASH MD5 a partir de un objeto serializado como cadena JSON.
 * @param param0 Objeto con propiedades index, answer y keyword.
 * @returns El HASH MD5 generado.
 */
declare const generateRefSerialize: ({ index, answer, keyword, }: {
    index: number;
    answer: string | string[];
    keyword?: string | string[];
}) => string;
/**
 * Generamos un UUID único con posibilidad de tener un prefijo
 * @param prefix - Prefijo opcional para el UUID
 * @returns Un UUID único, opcionalmente con prefijo
 */
declare const generateRefProvider: (prefix?: string) => string;
/**
 * Encriptar data
 * @param data - Datos a encriptar
 * @returns Datos encriptados en base64
 */
declare const encryptData: (data: string) => string;
/**
 * Desencriptar data
 * @param encryptedData - Datos encriptados en base64
 * @returns Datos desencriptados o 'FAIL' en caso de error
 */
declare const decryptData: (encryptedData: string) => string;
/**
 *
 * @param prefix
 * @returns
 */
declare const generateRegex: (prefix: string) => RegExp;
declare function sleep(ms: number): Promise<void>;
/**
 *
 * @param message
 * @param title
 * @param cName
 */
declare const printer: PrinterFunction;
declare function saveCheckpointInDatabase(serializedData: string): Promise<void>;
declare function loadCheckpointFromDatabase(thread_id: string): Promise<string>;
declare function isValidCrontab(schedule: CrontabSchedule): boolean;
declare function toCrontabString(schedule: CrontabSchedule): string;
declare function dynamicDelay(min: number, max: number, total_tokens: number): number;
declare function createDirectoryIfNotExists(directory: string): Promise<void>;
declare function makeHttpRequest<T>(options: HttpRequestOptions<T>): Promise<T>;
declare function event_to_regexp(ev: WorkflowKey): WorkflowKey;
declare function deepClone(obj: any): any;
declare function loadFlows(): Promise<Workflow<string>[]>;
declare function loadProvider(): Promise<Partial<ProviderClass>>;
declare const generalDownload: (url: string, pathToSave?: string) => Promise<string>;
declare function convertOpusToMp3(inputPath: string): Promise<string>;
declare function convertToOgg(inputPath: string): Promise<string>;
export interface FormatOptions {
    code: string;
    ext: 'mp4' | 'opus' | 'mp3';
}
declare const convertTo: (filePath: string, format?: FormatOptions["ext"]) => Promise<string>;
declare function sendToOpenaiWhisper(mp3FilePath: string, model?: "whisper-1", extra?: {
    prompt: string;
}): Promise<string>;
declare function sendToGroqWhisper(mp3FilePath: string, model?: "whisper-large-v3-turbo" | "whisper-large-v3" | "distil-whisper-large-v3-en", extra?: {
    prompt: string;
}): Promise<string>;
declare function validateEnvVar(envVar: string | string[]): void;
export { validateEnvVar, toCrontabString, isValidCrontab, convertToOgg, convertTo, convertOpusToMp3, sendToGroqWhisper, sendToOpenaiWhisper, generalDownload, sleep, printer, saveCheckpointInDatabase, loadCheckpointFromDatabase, dynamicDelay, createDirectoryIfNotExists, makeHttpRequest, event_to_regexp, deepClone, loadFlows, loadProvider, generateRef, generateRefSerialize, generateTime, generateRegex, generateRefProvider, encryptData, decryptData };
type ApiError = {
    details?: unknown;
    err_code?: string | number;
    message: string;
};
export type ApiResponse<T> = {
    data: T | null;
    error?: ApiError | null;
    status: number;
};
export declare function apiRequest<T = unknown>(config: AxiosRequestConfig): Promise<ApiResponse<T>>;
