import { RoutingControl } from "neo4j-driver"; import { GraphDocument } from "./graph_document.js"; type Any = any; interface Neo4jGraphConfig { url: string; username: string; password: string; database?: string; timeoutMs?: number; enhancedSchema?: boolean; } interface StructuredSchema { nodeProps: { [key: NodeType["labels"]]: NodeType["properties"]; }; relProps: { [key: RelType["type"]]: RelType["properties"]; }; relationships: PathType[]; metadata?: { constraint: Record; index: Record; }; } export interface AddGraphDocumentsConfig { baseEntityLabel?: boolean; includeSource?: boolean; } export type NodeType = { labels: string; properties: { property: string; type: string; }[]; }; export type RelType = { type: string; properties: { property: string; type: string; }[]; }; export type PathType = { start: string; type: string; end: string; }; export declare const BASE_ENTITY_LABEL = "__Entity__"; /** * @security *Security note*: Make sure that the database connection uses credentials * that are narrowly-scoped to only include necessary permissions. * Failure to do so may result in data corruption or loss, since the calling * code may attempt commands that would result in deletion, mutation * of data if appropriately prompted or reading sensitive data if such * data is present in the database. * The best way to guard against such negative outcomes is to (as appropriate) * limit the permissions granted to the credentials used with this tool. * For example, creating read only users for the database is a good way to * ensure that the calling code cannot mutate or delete data. * * @link See https://js.langchain.com/docs/security for more information. */ export declare class Neo4jGraph { private driver; private database; private timeoutMs; private enhancedSchema; protected schema: string; protected structuredSchema: StructuredSchema; constructor({ url, username, password, database, timeoutMs, enhancedSchema, }: Neo4jGraphConfig); static initialize(config: Neo4jGraphConfig): Promise; getSchema(): string; getStructuredSchema(): StructuredSchema; query = Record>(query: string, params?: Record, routing?: RoutingControl): Promise; verifyConnectivity(): Promise; refreshSchema(): Promise; enhancedSchemaCypher(labelOrType: string, properties: { property: string; type: string; }[], exhaustive: boolean, isRelationship?: boolean): Promise; addGraphDocuments(graphDocuments: GraphDocument[], config?: AddGraphDocumentsConfig): Promise; close(): Promise; } export {};