import type { CoreExecutionContext, ExecutionContext, TypedExecutionContext } from './types/base-types';
export type { CoreExecutionContext, ExecutionContext, TypedExecutionContext };
export type MutableContext<T> = {
    -readonly [P in keyof T]: T[P];
};
export type TestExpressionContext = MutableContext<TypedExecutionContext> & {
    performanceMetrics?: {
        totalEvaluations: number;
        averageExecutionTime: number;
        lastEvaluationTime: number;
    };
    [key: string]: unknown;
};
export type TypedExpressionContext = TestExpressionContext;
export declare function createMockElement(tag?: string, properties?: Record<string, any>, attributes?: Record<string, string>): HTMLElement;
export interface TestContextOptions {
    me?: Element | null;
    you?: Element | null;
    it?: unknown;
    event?: Event | null;
    locals?: Map<string, unknown>;
    globals?: Map<string, unknown>;
    variables?: Map<string, unknown>;
    result?: unknown;
    expressionStack?: string[];
    evaluationDepth?: number;
    validationMode?: 'strict' | 'permissive';
    evaluationHistory?: Array<{
        expressionName: string;
        category: string;
        input: unknown;
        output: unknown;
        timestamp: number;
        duration: number;
        success: boolean;
    }>;
    meta?: Record<string, unknown>;
}
export declare function createCoreTestContext(options?: Partial<CoreExecutionContext>): CoreExecutionContext;
export declare function createTestContext(options?: TestContextOptions): ExecutionContext;
export declare function createTypedExecutionContext(options?: TestContextOptions): TypedExecutionContext;
export declare function createTypedExpressionContext(data?: Record<string, unknown>): TestExpressionContext;
export declare function setupMockDOM(): void;
export declare function waitForTick(): Promise<void>;
export declare function createPerformanceContext(): {
    mark: (name: string) => number;
    measure: <T>(name: string, operation: () => Promise<T> | T) => Promise<{
        result: T;
        duration: number;
    }>;
};
//# sourceMappingURL=test-utilities.d.ts.map