import { MaximCache } from "./cache/cache";
import { LoggerConfig, MaximLogger } from "./logger/logger";
import { DatasetEntry } from "./models/dataset";
import { Folder } from "./models/folder";
import { Prompt } from "./models/prompt";
import { PromptChain } from "./models/promptChain";
import { QueryRule } from "./models/queryBuilder";
import { type TestRunBuilder } from "./models/testRun";
declare global {
    var __maxim__sdk__instances__: Map<string, Maxim>;
}
export type Config = {
    baseUrl?: string;
    apiKey: string;
    promptManagement?: boolean;
    cache?: MaximCache;
    debug?: boolean;
    raiseExceptions?: boolean;
};
export declare class Maxim {
    private readonly apiKey;
    private readonly baseUrl;
    private readonly isDebug;
    private intervalHandle?;
    private cache;
    private isPromptManagementEnabled;
    private sync?;
    private loggers;
    private APIService;
    private _raiseExceptions;
    constructor(config: Config);
    private syncEntities;
    private syncPrompts;
    private syncPromptChains;
    private syncFolders;
    private getPromptFromCache;
    private getAllPromptsFromCache;
    private getPromptChainFromCache;
    private getAllPromptChainsFromCache;
    private getFolderFromCache;
    private getAllFoldersFromCache;
    private getCacheKey;
    private getPromptVersionForRule;
    private getPromptChainVersionForRule;
    private getFoldersForRule;
    getPrompt(promptId: string, rule: QueryRule): Promise<Prompt | undefined>;
    getPrompts(rule: QueryRule): Promise<Prompt[] | undefined>;
    getPromptChain(promptChainId: string, rule: QueryRule): Promise<PromptChain | undefined>;
    getPromptChains(rule: QueryRule): Promise<PromptChain[] | undefined>;
    getFolderById(folderId: string): Promise<Folder | undefined>;
    getFolders(rule: QueryRule): Promise<Folder[] | undefined>;
    addDatasetEntries(datasetId: string, entries: DatasetEntry[]): Promise<void>;
    logger(config: LoggerConfig): Promise<MaximLogger | undefined>;
    createTestRun(name: string, inWorkspaceId: string): TestRunBuilder<undefined>;
    cleanup(): Promise<void>;
}
