/**
 * Context management for V3.1 Inference Engine
 * Provides shared context and relationship analysis for inference rules
 */
import { InferenceContext, ModelDefinition, RelationshipAnalysis } from './types.js';
export declare class InferenceContextManager {
    private debug;
    constructor(debug?: boolean);
    /**
     * Create inference context for logical inference
     */
    createLogicalContext(models: ModelDefinition[], currentModel?: ModelDefinition, metadata?: Record<string, any>): InferenceContext;
    /**
     * Create inference context for deployment inference
     */
    createDeploymentContext(models: ModelDefinition[], environment: {
        target: 'development' | 'staging' | 'production';
        constraints: Record<string, any>;
    }, metadata?: Record<string, any>): InferenceContext;
    /**
     * Analyze relationships for a specific model
     */
    analyzeModelRelationships(model: ModelDefinition, allModels: ModelDefinition[]): RelationshipAnalysis;
    /**
     * Check if a model has specific relationship patterns
     */
    hasRelationshipPattern(model: ModelDefinition, pattern: string): boolean;
    /**
     * Get related models by relationship type
     */
    getRelatedModels(model: ModelDefinition, relationshipType: 'parent' | 'child' | 'sibling' | 'manyToMany', allModels: ModelDefinition[]): ModelDefinition[];
    /**
     * Calculate inference complexity score for a model
     */
    calculateComplexityScore(model: ModelDefinition, allModels: ModelDefinition[]): number;
    private logRelationshipAnalysis;
}
/**
 * Utility functions for common context operations
 */
export declare class ContextUtils {
    /**
     * Create a model-specific context from a general context
     */
    static withCurrentModel(baseContext: InferenceContext, currentModel: ModelDefinition, contextManager: InferenceContextManager): InferenceContext;
    /**
     * Extract common naming patterns from context
     */
    static extractNames(context: InferenceContext): {
        modelName?: string;
        controllerName?: string;
        serviceName?: string;
        pluralModelName?: string;
    };
    /**
     * Simple pluralization (could be enhanced with proper library)
     */
    private static pluralize;
}
//# sourceMappingURL=context.d.ts.map