import { CallbackManager } from "./callbacks/CallbackManager.js";
import { PromptHelper } from "./PromptHelper.js";
import type { ServiceContext } from "./ServiceContext.js";
import type { BaseEmbedding } from "./embeddings/types.js";
import type { LLM } from "./llm/types.js";
import type { NodeParser } from "./nodeParsers/types.js";
export type PromptConfig = {
    llm?: string;
    lang?: string;
};
export interface Config {
    prompt: PromptConfig;
    llm: LLM | null;
    promptHelper: PromptHelper | null;
    embedModel: BaseEmbedding | null;
    nodeParser: NodeParser | null;
    callbackManager: CallbackManager | null;
    chunkSize?: number;
    chunkOverlap?: number;
}
/**
 * @internal
 */
declare class GlobalSettings implements Config {
    #private;
    get debug(): boolean;
    get llm(): LLM;
    set llm(llm: LLM);
    withLLM<Result>(llm: LLM, fn: () => Result): Result;
    get promptHelper(): PromptHelper;
    set promptHelper(promptHelper: PromptHelper);
    withPromptHelper<Result>(promptHelper: PromptHelper, fn: () => Result): Result;
    get embedModel(): BaseEmbedding;
    set embedModel(embedModel: BaseEmbedding);
    withEmbedModel<Result>(embedModel: BaseEmbedding, fn: () => Result): Result;
    get nodeParser(): NodeParser;
    set nodeParser(nodeParser: NodeParser);
    withNodeParser<Result>(nodeParser: NodeParser, fn: () => Result): Result;
    get callbackManager(): CallbackManager;
    set callbackManager(callbackManager: CallbackManager);
    withCallbackManager<Result>(callbackManager: CallbackManager, fn: () => Result): Result;
    set chunkSize(chunkSize: number | undefined);
    get chunkSize(): number | undefined;
    withChunkSize<Result>(chunkSize: number, fn: () => Result): Result;
    get chunkOverlap(): number | undefined;
    set chunkOverlap(chunkOverlap: number | undefined);
    withChunkOverlap<Result>(chunkOverlap: number, fn: () => Result): Result;
    get prompt(): PromptConfig;
    set prompt(prompt: PromptConfig);
    withPrompt<Result>(prompt: PromptConfig, fn: () => Result): Result;
}
export declare const llmFromSettingsOrContext: (serviceContext?: ServiceContext) => LLM<object, object>;
export declare const nodeParserFromSettingsOrContext: (serviceContext?: ServiceContext) => NodeParser;
export declare const embedModelFromSettingsOrContext: (serviceContext?: ServiceContext) => BaseEmbedding;
export declare const promptHelperFromSettingsOrContext: (serviceContext?: ServiceContext) => PromptHelper;
export declare const Settings: GlobalSettings;
export {};
