/**
 * Cell-field RPC handlers.
 *
 * Three `request_response` actions bound to the specs in
 * `./cell_field_action_specs.ts`:
 *
 * - `cell_field_set` — admin / owner / editor-grant on `source` may set;
 *   `target` must be view-admitted (so a caller can't link to a cell they
 *   couldn't otherwise see). Idempotent UPSERT on `(source_id, name)`.
 * - `cell_field_delete` — admin / owner / editor-grant on `source`.
 *   Idempotent: `deleted: false` when no row matched.
 * - `cell_field_list` — bidirectional. Forward (pass `source_id`) is
 *   gated on `can_view_cell(source)` and filters targets to those the
 *   caller may view (strict target-visibility, batched). Reverse (pass
 *   `target_id`) has 2-layer authz: gate on `can_view_cell(target)`
 *   first, then filter rows by `can_view_cell(source)`.
 *
 * IDOR-mask 404s on cell-miss / cell-unviewable, mirroring the existence-
 * leak guards in `cell_actions.ts` / `cell_grant_actions.ts`.
 *
 * Audit events `cell_field_set` / `cell_field_delete` carry IDs only —
 * see `./cell_field_audit_metadata.ts`.
 *
 * @module
 */
import { type RpcAction } from '../actions/action_rpc.js';
import type { RouteFactoryDeps } from './deps.js';
import { type FieldJson } from './cell_field_action_specs.js';
import { type CellFieldRow } from '../db/cell_field_queries.js';
export type CellFieldActionDeps = Pick<RouteFactoryDeps, 'log' | 'audit'>;
export declare const to_field_json: (row: CellFieldRow) => FieldJson;
/** Create the three `cell_field_*` RPC actions. */
export declare const create_cell_field_actions: (deps: CellFieldActionDeps) => Array<RpcAction>;
//# sourceMappingURL=cell_field_actions.d.ts.map