import type { Frame, Request } from "./index";
export declare namespace VisualDecision {
export type Values = { optionPadding: 4 | 6 | 8; selectedColor: string };
export type Definition = {
specimen: "decision-card-v1";
bundleDigest: string;
baseline: Values;
controls: [
{ id: "optionPadding"; type: "number"; min: 4; max: 8; step: 2 },
{ id: "selectedColor"; type: "color"; format: "#RRGGBB" },
];
};
export type Saved = { revision: number; values: Values; by: string; at: string };
export type State = {
id: string;
definition: Definition;
revision: number;
values: Values;
saved?: Saved;
};
export type Result =
| { ok: true; state: State }
| {
ok: false;
reason: "stale" | "saving" | "saved" | "invalid";
state?: State;
message?: string;
};
export type Incoming =
| Request
| Request
| Request<
Frame & { kind: "visual-decision:edit"; id: string; key: string; patch: Partial }
>
| Request;
export type Outgoing =
| (Frame & {
kind:
| "visual-decision:create"
| "visual-decision:open"
| "visual-decision:edit"
| "visual-decision:save";
} & Result)
| (Frame & { kind: "visual-decision:changed"; state: State });
}