import { Driver } from 'neo4j-driver';
import { CypherQAConfig, GraphSchema, CypherQAResponse, CypherQAMetrics, CypherQAErrorCode } from './types';
export declare class CypherQAError extends Error {
    code: CypherQAErrorCode;
    details: any;
    timestamp: Date;
    query?: string;
    cypher?: string;
    context?: any;
    constructor(code: CypherQAErrorCode, message: string, details?: any, query?: string, cypher?: string, context?: any);
}
export declare class GraphCypherQAChain {
    private config;
    private driver;
    private llm;
    private schema;
    private schemaCache;
    private queryPatterns;
    private metrics;
    constructor(config: CypherQAConfig, driver: Driver);
    private initializeMetrics;
    private initializeLLM;
    private loadQueryPatterns;
    query(naturalLanguageQuery: string): Promise<CypherQAResponse>;
    private ensureSchema;
    private introspectSchema;
    private parseNaturalLanguageQuery;
    private detectIntent;
    private extractEntities;
    private extractFilters;
    private extractAggregations;
    private extractOrderBy;
    private extractLimit;
    private generateCypherQuery;
    private findBestPattern;
    private generateFromPattern;
    private generateWithLLM;
    private buildSchemaContext;
    private estimateQueryCost;
    private validateCypherQuery;
    private executeCypherQuery;
    private formatResponse;
    private generateExplanation;
    private generateSuggestions;
    private updateMetrics;
    private getSchemaVersion;
    getMetrics(): Promise<CypherQAMetrics>;
    getSchema(): Promise<GraphSchema | null>;
    refreshSchema(): Promise<void>;
    shutdown(): Promise<void>;
}
//# sourceMappingURL=GraphCypherQAChain.d.ts.map