import { BaseTool } from '@llamaindex/core/llms';
import { BaseObjectNodeMapping, ObjectRetriever } from '@llamaindex/core/objects';
import { TextNode, BaseNode, Metadata } from '@llamaindex/core/schema';

declare class SimpleToolNodeMapping extends BaseObjectNodeMapping {
    private _tools;
    private constructor();
    objNodeMapping(): Record<any, any>;
    toNode(tool: BaseTool): TextNode;
    _addObj(tool: BaseTool): void;
    _fromNode(node: BaseNode): BaseTool;
    persist(persistDir: string, objNodeMappingFilename: string): void;
    toNodes(objs: BaseTool[]): TextNode<Metadata>[];
    addObj(obj: BaseTool): void;
    fromNode(node: BaseNode): BaseTool;
    static fromObjects(objs: any, ...args: any[]): BaseObjectNodeMapping;
    fromObjects<OT>(objs: any, ...args: any[]): BaseObjectNodeMapping;
}
declare class ObjectIndex {
    private _index;
    private _objectNodeMapping;
    private constructor();
    static fromObjects(objects: any, objectMapping: BaseObjectNodeMapping, indexCls: any, indexKwargs?: Record<string, any>): Promise<ObjectIndex>;
    insertObject(obj: any): Promise<void>;
    get tools(): Record<string, BaseTool>;
    asRetriever(kwargs: any): Promise<ObjectRetriever<any>>;
    asNodeRetriever(kwargs: any): any;
}

export { ObjectIndex, SimpleToolNodeMapping };
