/**
 * QueryController — read-only query surface for materialized graph state.
 *
 * Thin facade composing QueryReads (graph reads), QueryContent
 * (blob access), and query/observer/worldline factory methods.
 */
import Observer from '../query/Observer.ts';
import type CheckpointTailOpticSource from '../optic/CheckpointTailOpticSource.ts';
import WorldlineSelector from '../../types/WorldlineSelector.ts';
import type DetachedGraphFactory from '../../capabilities/DetachedGraphFactory.ts';
import type QueryCapability from '../../capabilities/QueryCapability.ts';
import type WarpState from '../state/WarpState.ts';
import type { Aperture } from '../../types/Aperture.ts';
import type { QueryContentHost, QueryReadHost } from './ReadGraphHost.ts';
/**
 * The raw selector input accepted by callers of `observer()` and
 * `worldline()`. Mirrors the parameter shape of `WorldlineSelector.from`.
 */
export type ObserverSource = Exclude<Parameters<typeof WorldlineSelector.from>[0], WorldlineSelector | null | undefined>;
type QueryObserverFactoryHost = {
    observer(config: ObserverConfig, options?: ObserverOptions): Promise<Observer>;
    observer(name: string, config: ObserverConfig, options?: ObserverOptions): Promise<Observer>;
};
type LiveFrontierHost = {
    _lastFrontier: Map<string, string> | null;
    _stateDirty: boolean;
    getFrontier(): Promise<Map<string, string>>;
};
type MaterializableHost = QueryReadHost & QueryContentHost & QueryObserverFactoryHost & Pick<QueryCapability, 'hasNode' | 'getNodes' | 'getNodeProps' | 'getEdges'> & Partial<CheckpointTailOpticSource> & Partial<LiveFrontierHost>;
type QueryStateHasher = (state: WarpState) => Promise<string>;
type QueryControllerDeps = {
    hostGraph: MaterializableHost;
    graphCloner: DetachedGraphFactory;
    hashState: QueryStateHasher;
};
type ObserverOptions = {
    source?: ObserverSource;
};
type ObserverConfig = Aperture;
export default class QueryController {
    _host: MaterializableHost;
    _graphCloner: DetachedGraphFactory;
    _hashState: QueryStateHasher;
    hasNode: QueryCapability['hasNode'];
    getNodeProps: QueryCapability['getNodeProps'];
    getEdgeProps: QueryCapability['getEdgeProps'];
    neighbors: QueryCapability['neighbors'];
    getStateSnapshot: QueryCapability['getStateSnapshot'];
    getNodes: QueryCapability['getNodes'];
    getEdges: QueryCapability['getEdges'];
    getPropertyCount: QueryCapability['getPropertyCount'];
    query: QueryCapability['query'];
    worldline: QueryCapability['worldline'];
    observer: QueryCapability['observer'];
    translationCost: QueryCapability['translationCost'];
    getContentOid: QueryCapability['getContentOid'];
    getContentMeta: QueryCapability['getContentMeta'];
    getContent: QueryCapability['getContent'];
    getEdgeContentOid: QueryCapability['getEdgeContentOid'];
    getEdgeContentMeta: QueryCapability['getEdgeContentMeta'];
    getEdgeContent: QueryCapability['getEdgeContent'];
    getContentStream: QueryCapability['getContentStream'];
    getEdgeContentStream: QueryCapability['getEdgeContentStream'];
    constructor(deps: QueryControllerDeps);
}
export {};
