import { Langcode, plugins } from "langcode";
export interface Chain {
    run(input: any): Promise<any>;
}
export interface ChainConfig {
    type: string;
    options?: Record<string, any>;
}
export type ManagerStatus = "INITIALIZING" | "READY";
export interface PluginRunTask {
    type: "PLUGIN_RUN";
    pluginName: plugins;
    pluginParams: any;
    resolve: (value: any) => void;
    reject: (reason?: any) => void;
}
export interface ChainRunTask {
    type: "CHAIN_RUN";
    chainId: string;
    input: any;
    resolve: (value: any) => void;
    reject: (reason?: any) => void;
}
export type ManagerTask = PluginRunTask | ChainRunTask;
/** ManagerEntry: manager + meta veriler + chain'ler + paylaşılan data + run queue + vs. */
export interface ManagerEntry {
    sessionId: string;
    manager: Langcode | null;
    status: ManagerStatus;
    createdAt: number;
    lastUsedAt: number;
    activeRunsCount: number;
    taskQueue: ManagerTask[];
    chains: Map<string, Chain>;
    chainOutputs: Map<string, any>;
    sharedMemory: Record<string, any>;
    faissIndex: any;
}
export interface ManagerStoreOptions {
    maxConcurrentRunsPerManager?: number;
    maxConcurrentRunsGlobal?: number;
    maxIdleTimeMs?: number;
    maxLifeTimeMs?: number;
    cleanupIntervalMs?: number;
    logsDir?: string;
    logLevel?: string;
}
