import WarpState from './state/WarpState.ts';
import type Patch from '../types/Patch.ts';
export interface VisibleStateScopePrefixFilter {
    include?: string[];
    exclude?: string[];
}
export interface VisibleStateScope {
    nodeIdPrefixes?: VisibleStateScopePrefixFilter;
}
/**
 * Normalizes a substrate-generic visible-state scope.
 *
 * Current scope stays intentionally narrow:
 * - include/exclude node-id prefixes
 *
 * Edges, edge properties, and attachment metadata follow node visibility.
 */
export declare function normalizeVisibleStateScope(scope: unknown, field?: string): VisibleStateScope | null;
/**
 * Tests whether a node ID falls within the visible state scope.
 */
export declare function nodeIdInVisibleStateScope(nodeId: string, scope: VisibleStateScope | null | undefined): boolean;
/**
 * Projects a full materialized state down to only the nodes/edges/props in scope.
 */
export declare function scopeMaterializedState(state: WarpState, scope: VisibleStateScope | null | undefined): WarpState;
/**
 * Filters patch entries down to patches with at least one in-scope op.
 */
export declare function scopePatchEntries(entries: Array<{
    patch: Patch;
    sha: string;
}>, scope: VisibleStateScope | null | undefined): Array<{
    patch: Patch;
    sha: string;
}>;
