import { DataViewRegistry, type DataViewSpec } from '../data-views';
import { OperationSpecRegistry } from '../operations';
import type { HandlerCtx } from '../types';
export interface DataViewRuntimeConfig {
    registry: DataViewRegistry;
    operationRegistry: OperationSpecRegistry;
}
export interface DataViewResult<T = unknown> {
    data: T[];
    total: number;
    loading: boolean;
    error?: Error;
}
export declare class DataViewRuntime {
    private config;
    private cache;
    private subscriptions;
    constructor(config: DataViewRuntimeConfig);
    register(spec: DataViewSpec): void;
    getSpec(name: string, version?: string): DataViewSpec | undefined;
    executeQuery(specName: string, params: unknown, ctx: HandlerCtx): Promise<DataViewResult>;
    invalidate(specName: string): void;
    subscribe(specName: string, callback: () => void): () => void;
    private notifySubscribers;
}
