import { Effect } from 'effect';
import type { Fetch } from 'fx-fetch';
/**
 * The form's initial-state source. Mirrors the table's `dataSource` shape: an
 * optional HTTP `request` whose response feeds the `data` expression, which
 * produces the seed object. With no `request`, `data` is evaluated directly
 * against the CEL context (a static default, or one referencing `form`).
 */
export type InitialSource = Readonly<{
    request?: string;
    data: string;
}>;
/**
 * Evaluates a CEL expression against the host's context. A CEL `http.*`
 * expression only *builds* a request, so this never performs IO itself —
 * `evaluateInitial` issues the request separately.
 */
export type CelEvaluator = <T>(expression: string, context?: Record<string, unknown>) => Effect.Effect<T, unknown, never>;
/**
 * Resolve an `InitialSource` to the seed value. When `request` is set it is
 * built by CEL, then issued here as `.json()` — issued only when the expression
 * produces a request (it may opt out, yielding `None`). The host owns the IO,
 * CEL only describes it. The response is exposed to `data` as the `json`
 * variable (an `Option`, so a missing response is `None`, never a crash). The
 * returned Effect needs a `Fetch` layer.
 */
export declare function evaluateInitial(initial: InitialSource, cel: CelEvaluator, context: Record<string, unknown>): Effect.Effect<unknown, unknown, Fetch.Fetch>;
