import '../assert_dev_env.js';
import type { z } from 'zod';
import type { FetchTransport } from '../transports/fetch_transport.js';
import type { BackendCapabilities } from './capabilities.js';
import type { SetupTest } from './setup.js';
/** Shared options for the cell cross-backend parity suites. */
export interface CellCrossTestOptions {
    /** Per-test fixture-producing function (fresh keeper + db per call). */
    readonly setup_test: SetupTest;
    /** Backend capability declarations — each suite gates on its own flag. */
    readonly capabilities: BackendCapabilities;
    /** RPC endpoint path the cell verbs are mounted on. Default `/api/rpc`. */
    readonly rpc_path?: string;
}
/** Minimal JSON-RPC envelope shape the suites read off responses. */
export interface RpcResult {
    readonly ok: boolean;
    readonly result?: unknown;
    readonly error?: {
        readonly code: number;
        readonly message: string;
        readonly data?: unknown;
    };
}
/**
 * POST a JSON-RPC call over a cross-process `FetchTransport` with the given
 * auth headers. Distinct from `rpc_helpers.ts`'s `app`-based `rpc_call`: this
 * variant drives the cookie-jar `FetchTransport` the cross-backend harness
 * spawns against, and returns the slim `RpcResult` the cell suites read.
 */
export declare const cross_rpc_call: (transport: FetchTransport, path: string, method: string, params: unknown, headers: Record<string, string>) => Promise<RpcResult>;
/** Pull `error.data.reason` off an RPC error envelope (undefined if absent). */
export declare const error_reason: (r: RpcResult) => unknown;
/**
 * Assert the call succeeded and the `result` matches the verb's declared
 * output schema — the wire-shape parity gate. Returns the parsed output.
 */
export declare const expect_output: <T>(r: RpcResult, schema: z.ZodType<T>) => T;
//# sourceMappingURL=cell_cross_helpers.d.ts.map