/**
 * Cell-field RPC specs — declarative contract for the three named-relation
 * verbs (`set` / `delete` / `list`).
 *
 * `(source_id, name) → target_id` edges modeled after JSON object
 * key/value pairs. One target per `(source_id, name)` pair: re-setting a
 * name overwrites the prior target. `cell_field_list` is bidirectional:
 * pass `source_id` for forward fields, `target_id` for reverse upfields
 * (the latter has 2-layer authz — see handler).
 *
 * @module
 */
import { z } from 'zod';
/** Error reason — `cell_field_list` got neither `source_id` nor `target_id`. */
export declare const ERROR_CELL_FIELD_LIST_REQUIRES_SOURCE_OR_TARGET: "cell_field_list_requires_source_or_target";
/**
 * Field name grammar — fuz snake_case identifier convention. Anchored
 * `^[a-z][a-z0-9_]{0,63}$`: leading letter, alphanumeric + underscore
 * trailing, 64-char cap. No reserved names yet.
 */
export declare const CELL_FIELD_NAME_REGEX: RegExp;
export declare const CellFieldName: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
export type CellFieldName = z.infer<typeof CellFieldName>;
/** Wire-format for a `cell_field` row. ISO `created_at`, branded UUIDs. */
export declare const FieldJson: z.ZodObject<{
    source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    name: z.ZodString;
    target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    created_at: z.ZodString;
}, z.core.$strict>;
export type FieldJson = z.infer<typeof FieldJson>;
/**
 * Input for `cell_field_set`. UPSERT on `(source_id, name)` — re-issuing
 * the same input updates `target_id` and bumps `created_at`.
 */
export declare const CellFieldSetInput: z.ZodObject<{
    source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    name: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
    target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
}, z.core.$strict>;
export type CellFieldSetInput = z.infer<typeof CellFieldSetInput>;
export declare const CellFieldSetOutput: z.ZodObject<{
    field: z.ZodObject<{
        source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        name: z.ZodString;
        target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        created_at: z.ZodString;
    }, z.core.$strict>;
}, z.core.$strict>;
export type CellFieldSetOutput = z.infer<typeof CellFieldSetOutput>;
/**
 * Input for `cell_field_delete`. Idempotent: a successful response is
 * returned even when no row matched.
 */
export declare const CellFieldDeleteInput: z.ZodObject<{
    source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    name: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
    acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
}, z.core.$strict>;
export type CellFieldDeleteInput = z.infer<typeof CellFieldDeleteInput>;
export declare const CellFieldDeleteOutput: z.ZodObject<{
    ok: z.ZodLiteral<true>;
    deleted: z.ZodBoolean;
}, z.core.$strict>;
export type CellFieldDeleteOutput = z.infer<typeof CellFieldDeleteOutput>;
/**
 * Input for `cell_field_list`. Pass `source_id` for forward fields or
 * `target_id` for reverse upfields — exactly one (the schema rejects
 * both / neither). Reverse listing has 2-layer authz (target view-check
 * gates the call; per-source view-check filters the rows).
 *
 * Forward listing supports cursor pagination via `name_after` (return
 * rows whose `name > name_after` lex). The reverse listing doesn't
 * paginate (the result set is small in practice — number of sources
 * pointing at a given target).
 */
export declare const CellFieldListInput: z.ZodObject<{
    source_id: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    target_id: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    name_after: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">>;
    limit: z.ZodOptional<z.ZodNumber>;
    acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
}, z.core.$strict>;
export type CellFieldListInput = z.infer<typeof CellFieldListInput>;
export declare const CellFieldListOutput: z.ZodObject<{
    fields: z.ZodArray<z.ZodObject<{
        source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        name: z.ZodString;
        target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        created_at: z.ZodString;
    }, z.core.$strict>>;
}, z.core.$strict>;
export type CellFieldListOutput = z.infer<typeof CellFieldListOutput>;
export declare const cell_field_set_action_spec: {
    method: string;
    kind: "request_response";
    initiator: "frontend";
    auth: {
        account: "required";
        actor: "required";
    };
    side_effects: true;
    input: z.ZodObject<{
        source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        name: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
        target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$strict>;
    output: z.ZodObject<{
        field: z.ZodObject<{
            source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            name: z.ZodString;
            target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            created_at: z.ZodString;
        }, z.core.$strict>;
    }, z.core.$strict>;
    async: true;
    description: string;
};
export declare const cell_field_delete_action_spec: {
    method: string;
    kind: "request_response";
    initiator: "frontend";
    auth: {
        account: "required";
        actor: "required";
    };
    side_effects: true;
    input: z.ZodObject<{
        source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        name: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
        acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$strict>;
    output: z.ZodObject<{
        ok: z.ZodLiteral<true>;
        deleted: z.ZodBoolean;
    }, z.core.$strict>;
    async: true;
    description: string;
};
export declare const cell_field_list_action_spec: {
    method: string;
    kind: "request_response";
    initiator: "frontend";
    auth: {
        account: "optional";
        actor: "optional";
    };
    side_effects: false;
    input: z.ZodObject<{
        source_id: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
        target_id: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
        name_after: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">>;
        limit: z.ZodOptional<z.ZodNumber>;
        acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$strict>;
    output: z.ZodObject<{
        fields: z.ZodArray<z.ZodObject<{
            source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            name: z.ZodString;
            target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            created_at: z.ZodString;
        }, z.core.$strict>>;
    }, z.core.$strict>;
    async: true;
    rate_limit: "ip";
    description: string;
};
/** All cell_field action specs — composed into `all_cell_action_specs`. */
export declare const all_cell_field_action_specs: readonly [{
    method: string;
    kind: "request_response";
    initiator: "frontend";
    auth: {
        account: "required";
        actor: "required";
    };
    side_effects: true;
    input: z.ZodObject<{
        source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        name: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
        target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$strict>;
    output: z.ZodObject<{
        field: z.ZodObject<{
            source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            name: z.ZodString;
            target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            created_at: z.ZodString;
        }, z.core.$strict>;
    }, z.core.$strict>;
    async: true;
    description: string;
}, {
    method: string;
    kind: "request_response";
    initiator: "frontend";
    auth: {
        account: "required";
        actor: "required";
    };
    side_effects: true;
    input: z.ZodObject<{
        source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
        name: z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">;
        acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$strict>;
    output: z.ZodObject<{
        ok: z.ZodLiteral<true>;
        deleted: z.ZodBoolean;
    }, z.core.$strict>;
    async: true;
    description: string;
}, {
    method: string;
    kind: "request_response";
    initiator: "frontend";
    auth: {
        account: "optional";
        actor: "optional";
    };
    side_effects: false;
    input: z.ZodObject<{
        source_id: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
        target_id: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
        name_after: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "CellFieldName", "out">>;
        limit: z.ZodOptional<z.ZodNumber>;
        acting: z.ZodOptional<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$strict>;
    output: z.ZodObject<{
        fields: z.ZodArray<z.ZodObject<{
            source_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            name: z.ZodString;
            target_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
            created_at: z.ZodString;
        }, z.core.$strict>>;
    }, z.core.$strict>;
    async: true;
    rate_limit: "ip";
    description: string;
}];
//# sourceMappingURL=cell_field_action_specs.d.ts.map