import '../assert_dev_env.js';
import { type RoleSchemaResult } from '../../auth/role_schema.js';
import { type SessionOptions } from '../../auth/session_cookie.js';
import { type RouteSpec } from '../../http/route_spec.js';
import type { AppSurfaceSpec, RpcEndpointSpec } from '../../http/surface.js';
import type { AppServerContext } from '../../server/app_server.js';
/**
 * Session config — cookie name matches the binary's issued session cookie
 * (`fuz_session`) so cookie-attribute assertions + jar extraction line up.
 */
export declare const spine_session_options: SessionOptions<string>;
/**
 * App role the role-shaped-`cell_grant` cross suite exercises. Registered
 * with no grant path (`grant_paths: []`) so it stays a valid registry member
 * without entering the admin / self-service grant flows — holders are seeded
 * directly via `extra_accounts`. Must match the `cell_editor` entry in the
 * Rust `testing_spine_stub`'s `known_roles` (cross-language test contract).
 */
export declare const SPINE_CELL_EDITOR_ROLE = "cell_editor";
/**
 * The spine's closed role registry: built-ins plus `SPINE_CELL_EDITOR_ROLE`.
 * Threaded into the cell spec set's role-validity gate; the Rust stub mirrors
 * the same membership. When the spine grows additional grantable roles,
 * thread their registry through `create_role_schema` here so the admin suite
 * picks up grant-path coverage.
 */
export declare const spine_roles: RoleSchemaResult;
/** RPC endpoint mount path — matches the binary's `/api/rpc`. */
export declare const SPINE_RPC_PATH = "/api/rpc";
/**
 * Audit-log SSE stream path — `/api/admin` prefix + the
 * `create_audit_log_route_specs` `/audit/stream` route. Matches the default
 * `BackendConfig.sse_path` and the cross-process SSE suite's default. Only
 * mounted by the TS spine binary (which wires `audit_log_sse`); the shared
 * surface stub leaves `ctx.audit_sse` null so the snapshot stays SSE-free.
 */
export declare const SPINE_SSE_PATH = "/api/admin/audit/stream";
/**
 * Factory-form RPC endpoints over the per-test `ctx.deps`. `create_app_server`
 * (in the binary) owns live dispatch; the surface builder invokes the factory
 * once with a stub ctx for setup-time path/method lookup, so the handler
 * closures are never called across the process boundary.
 *
 * Test binaries append their own `_testing_reset` action to this endpoint's
 * `actions` (see `testing_reset_actions.ts`); it is intentionally excluded
 * here so it stays off the declared surface (the harness calls it directly
 * over the daemon-token channel).
 */
export declare const spine_rpc_endpoints: (ctx: AppServerContext) => Array<RpcEndpointSpec>;
/**
 * Account REST + signup route specs under `/api/account` (bootstrap
 * auto-mounted by the surface builder / `create_app_server`), plus the
 * audit-log SSE stream under `/api/admin` **only when `ctx.audit_sse` is
 * set** (the TS spine binary passes `audit_log_sse: true`).
 *
 * The shared `create_spine_surface_spec()` builds its ctx with
 * `audit_sse: null`, so the declared surface snapshot stays SSE-free and the
 * Rust `spine_stub` cross test is unaffected — only the live TS binary mounts
 * the stream at `SPINE_SSE_PATH`.
 */
export declare const create_spine_route_specs: (ctx: AppServerContext) => Array<RouteSpec>;
/**
 * The `AppSurfaceSpec` for the standard spine surface — the wire-shape
 * source the cross-process round-trip + RPC-round-trip suites validate
 * against. `bootstrap: {mode: 'surface_only'}` mounts
 * `POST /api/account/bootstrap`'s shape to match the binary (which wires
 * bootstrap for real); the harness's `globalSetup` already consumed the
 * live bootstrap, so the cross-process round-trip validates the binary's
 * 409 against the route's declared error schema.
 */
export declare const create_spine_surface_spec: () => AppSurfaceSpec;
//# sourceMappingURL=default_spine_surface.d.ts.map