/**
 * Explicit Data Exposure Analysis
 *
 * Phase 6: Analyzes expressions to detect data dependencies and ensure
 * all data references are explicit (loader, props, stores) rather than implicit globals
 */
import type { ExpressionIR } from '../ir/types';
/**
 * Data dependency information for an expression
 */
export interface ExpressionDataDependencies {
    expressionId: string;
    usesLoaderData: boolean;
    usesProps: boolean;
    usesStores: boolean;
    usesState: boolean;
    loaderProperties: string[];
    propNames: string[];
    storeNames: string[];
    stateProperties: string[];
}
/**
 * Analyze an expression to detect its data dependencies
 *
 * This is a simple heuristic-based analyzer that looks for patterns like:
 * - user.name, user.email → loader data
 * - props.title, props.showWelcome → props
 * - stores.cart, stores.notifications → stores
 * - count, isLoading → state (top-level properties)
 */
export declare function analyzeExpressionDependencies(expr: ExpressionIR, declaredLoaderProps?: string[], declaredProps?: string[], declaredStores?: string[]): ExpressionDataDependencies;
/**
 * Validate that all referenced data exists
 */
export declare function validateDataDependencies(dependencies: ExpressionDataDependencies, filePath: string, declaredLoaderProps?: string[], declaredProps?: string[], declaredStores?: string[]): void;
/**
 * Transform expression code to use explicit data arguments
 *
 * Converts patterns like:
 * - user.name → loaderData.user.name
 * - title → props.title (if declared as prop)
 * - cart.items → stores.cart.items
 */
export declare function transformExpressionCode(code: string, dependencies: ExpressionDataDependencies, declaredProps?: string[]): string;
/**
 * Generate expression wrapper with explicit data arguments
 */
export declare function generateExplicitExpressionWrapper(expr: ExpressionIR, dependencies: ExpressionDataDependencies): string;
/**
 * Analyze all expressions in a template
 */
export declare function analyzeAllExpressions(expressions: ExpressionIR[], filePath: string, declaredLoaderProps?: string[], declaredProps?: string[], declaredStores?: string[]): ExpressionDataDependencies[];
