/**
 * Strict relation-read visibility filter.
 *
 * Forward relation reads (the `cell_get` bundle, forward `cell_field_list`
 * / `cell_item_list`, the deep-clone walk) must not surface edges whose
 * target the caller cannot view — otherwise an editor of a public parent
 * could enumerate private children by id, or a public cell could leak the
 * existence of private linked cells. This helper bulk-loads the target
 * cells + their grants and runs `can_view_cell` per target in memory,
 * returning the set of viewable target ids. Batched (two queries for the
 * whole id-set) to avoid the N+1 a naive per-row check would cause.
 *
 * @module
 */
import type { Uuid } from '@fuzdev/fuz_util/id.js';
import type { QueryDeps } from '../db/query_deps.js';
import type { RequestContext } from './request_context.js';
/**
 * Return the subset of `target_ids` the caller may view.
 *
 * Soft-deleted targets and ids with no matching cell are absent from the
 * result (treated as not-viewable). Grants are loaded only for
 * authenticated callers — `null` auth admits solely via the public
 * branch of `can_view_cell`, so the grant load is skipped entirely.
 *
 * @param deps - query deps
 * @param auth - request context, or `null` for unauthenticated callers
 * @param target_ids - candidate cell ids (duplicates are harmless)
 * @returns the set of ids the caller may view
 */
export declare const filter_visible_target_ids: (deps: QueryDeps, auth: RequestContext | null, target_ids: ReadonlyArray<Uuid>) => Promise<Set<Uuid>>;
//# sourceMappingURL=cell_relation_visibility.d.ts.map