/** Interaction question, answer and media response schemas. */ import { z } from 'zod'; export declare const answerFormat: z.ZodEnum<{ text: "text"; external: "external"; confirm: "confirm"; select: "select"; form: "form"; }>; export type AnswerFormat = z.infer; /** The kind of a question's display-only media item: a remote/inline image, or a link. */ export declare const mediaKind: z.ZodEnum<{ image: "image"; link: "link"; }>; export type MediaKind = z.infer; /** * One item of a question's display-only media. Applied PER ITEM by the renderer * (never as a strict array on the frame): the frame's `media` field is a loose * `z.array(z.unknown())`, and the renderer `safeParse`s each item with this schema * so one malformed/hostile item is a loud per-item notice, not a whole-frame parse * failure that would silently vanish an answerable question. * * `caption` is `.nullish()` (absent OR `null` both parse to a caption-less item): * a caption-less item may arrive with the key omitted OR with an explicit `null`, so * `.optional()` here would false-fail the explicit `null` and render a good image as * malformed. `url` and `kind` are the only load-bearing fields; the image * src scheme gate and the link neutralization are enforced by the renderer. */ export declare const interactionMediaItem: z.ZodObject<{ kind: z.ZodEnum<{ image: "image"; link: "link"; }>; url: z.ZodString; caption: z.ZodOptional>; }, z.core.$strip>; export type InteractionMediaItem = z.infer; /** * One per-send choice for a `form` property whose schema is a string (or array of * strings). `value` is what the answer carries; `label` (absent OR null both parse * to no label) is the human text shown in its place. A send may replace a property's * `enum` this way for one ask without republishing the form. Applied per property by * the form preview (safeParsed), so a malformed entry is a loud notice, never silent. */ export declare const formOption: z.ZodObject<{ value: z.ZodString; label: z.ZodOptional>; }, z.core.$strip>; export type FormOption = z.infer; /** * Per-send `form` data: `values` prefills top-level properties (keyed by property * name), `options` supplies per-send choice lists (keyed by property name). Both * default to empty. The form preview safeParses this off `format_payload.data`, so a * malformed block is a loud notice rather than a whole-frame parse failure. */ export declare const formData: z.ZodObject<{ values: z.ZodDefault>; options: z.ZodDefault>; }, z.core.$strip>>>>; }, z.core.$strip>; export type FormData = z.infer; /** * One page of a stepped `form`: a `title` and the ordered top-level property names it * groups. `format_payload.pages` is the ordered list of these; absent = one page. The * form preview safeParses the list, so a malformed page is a loud notice, never silent. */ export declare const formPage: z.ZodObject<{ title: z.ZodString; fields: z.ZodArray; }, z.core.$strip>; export type FormPage = z.infer; /** The `form` pages list (`format_payload.pages`), safeParsed as a whole by the preview. */ export declare const formPages: z.ZodArray; }, z.core.$strip>>; export type FormPages = z.infer; export declare const interaction: z.ZodObject<{ interaction_id: z.ZodString; group_id: z.ZodString; question: z.ZodDefault; answer_format: z.ZodEnum<{ text: "text"; external: "external"; confirm: "confirm"; select: "select"; form: "form"; }>; format_payload: z.ZodPipe>>, z.ZodTransform, Record | null | undefined>>; created_at: z.ZodString; timeout_at: z.ZodString; sensitive: z.ZodDefault; server_verified: z.ZodOptional; channel: z.ZodOptional; recipient: z.ZodOptional; origin: z.ZodOptional; audience: z.ZodOptional; media: z.ZodOptional>; }, z.core.$strip>; export type Interaction = z.infer; /** The answer door's response — the blocked caller was woken. */ export declare const interactionAnswered: z.ZodObject<{ interaction_id: z.ZodString; status: z.ZodString; }, z.core.$strip>; export type InteractionAnswered = z.infer; /** * The cancel door's response — a pending ask was WITHDRAWN without an answer (the * asking flow does not resume). `status` is `"cancelled"`; the shape mirrors the * answer door's terminal reply, but the door is distinct so it carries its own * schema. */ export declare const interactionCancelled: z.ZodObject<{ interaction_id: z.ZodString; status: z.ZodString; }, z.core.$strip>; export type InteractionCancelled = z.infer; /** * A page of pending interactions from `GET /api/interactions?page=&pageSize=`. Each * item is the same record the stream's `interaction.add` frame carries. The pending * set is the paged base the tail-only stream applies live deltas over. */ export declare const interactionsPage: z.ZodObject<{ total: z.ZodNumber; page: z.ZodNumber; page_size: z.ZodNumber; next_page: z.ZodNullable; truncated: z.ZodBoolean; items: z.ZodArray; answer_format: z.ZodEnum<{ text: "text"; external: "external"; confirm: "confirm"; select: "select"; form: "form"; }>; format_payload: z.ZodPipe>>, z.ZodTransform, Record | null | undefined>>; created_at: z.ZodString; timeout_at: z.ZodString; sensitive: z.ZodDefault; server_verified: z.ZodOptional; channel: z.ZodOptional; recipient: z.ZodOptional; origin: z.ZodOptional; audience: z.ZodOptional; media: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strip>; export type InteractionsPage = z.infer; //# sourceMappingURL=interactions.d.ts.map