@neta-art/cohub 5.10.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +42 -46
  2. package/dist/board/animation.d.ts +156 -67
  3. package/dist/board/animation.js +161 -305
  4. package/dist/board/geometry.js +4 -4
  5. package/dist/board/index.d.ts +4 -4
  6. package/dist/board/index.js +3 -4
  7. package/dist/board/mutation.d.ts +5 -11
  8. package/dist/board/mutation.js +9 -46
  9. package/dist/chunks/http.d.ts +23 -12
  10. package/dist/chunks/http.js +674 -316
  11. package/dist/chunks/websocket.d.ts +2623 -201
  12. package/dist/http.d.ts +3 -3
  13. package/dist/index.d.ts +158 -299
  14. package/dist/index.js +164 -306
  15. package/dist/protocol/dist/board-authoring.d.ts +1 -0
  16. package/dist/protocol/dist/board-authoring.js +217 -0
  17. package/dist/protocol/dist/board-capability-registry.d.ts +2 -0
  18. package/dist/protocol/dist/board-capability-registry.js +74 -0
  19. package/dist/protocol/dist/board-codec.d.ts +2 -0
  20. package/dist/protocol/dist/board-codec.js +4 -0
  21. package/dist/protocol/dist/board-composition.d.ts +258 -0
  22. package/dist/protocol/dist/board-composition.js +318 -0
  23. package/dist/protocol/dist/board-constants.js +0 -25
  24. package/dist/protocol/dist/board-node.d.ts +1 -12
  25. package/dist/protocol/dist/board-node.js +1 -81
  26. package/dist/protocol/dist/board-upgrade.d.ts +1 -0
  27. package/dist/protocol/dist/board-upgrade.js +2 -0
  28. package/dist/protocol/dist/board.d.ts +19 -92
  29. package/dist/protocol/dist/board.js +18 -78
  30. package/dist/protocol/dist/index.d.ts +8 -3
  31. package/dist/protocol/dist/index.js +9 -4
  32. package/dist/types.d.ts +2 -1
  33. package/docs/work-runtime-guide.md +19 -3
  34. package/package.json +3 -2
  35. package/dist/board/nodes.d.ts +0 -113
  36. package/dist/board/nodes.js +0 -154
@@ -0,0 +1,217 @@
1
+ import "./board-constants.js";
2
+ import { z } from "zod";
3
+ //#region ../protocol/dist/board-authoring.js
4
+ const BOARD_COLOR_IDS = [
5
+ "brand",
6
+ "neutral",
7
+ "black",
8
+ "white",
9
+ "blue",
10
+ "green",
11
+ "amber",
12
+ "violet",
13
+ "rose"
14
+ ];
15
+ const BOARD_GEO_KINDS = [
16
+ "rectangle",
17
+ "rounded",
18
+ "ellipse",
19
+ "diamond",
20
+ "triangle"
21
+ ];
22
+ const idSchema = z.string().min(1).max(160);
23
+ const jsonObjectSchema = z.record(z.string(), z.unknown());
24
+ const finiteSchema = z.number().finite();
25
+ const extensionTypeSchema = z.string().regex(/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$/).max(160);
26
+ const BoardAuthoringFrameSchema = z.object({
27
+ x: finiteSchema,
28
+ y: finiteSchema,
29
+ width: finiteSchema.positive(),
30
+ height: finiteSchema.positive(),
31
+ rotation: finiteSchema.default(0)
32
+ }).strict();
33
+ const pointSchema = z.object({
34
+ x: finiteSchema,
35
+ y: finiteSchema,
36
+ p: finiteSchema.min(0).max(1).default(.5)
37
+ }).strict();
38
+ const worldPointSchema = z.object({
39
+ x: finiteSchema,
40
+ y: finiteSchema
41
+ }).strict();
42
+ const cropSchema = z.object({
43
+ x: finiteSchema.min(0).max(1),
44
+ y: finiteSchema.min(0).max(1),
45
+ w: finiteSchema.min(0).max(1),
46
+ h: finiteSchema.min(0).max(1)
47
+ }).strict();
48
+ const BoardItemStyleSchema = z.object({
49
+ color: z.enum(BOARD_COLOR_IDS).optional(),
50
+ strokeWidth: finiteSchema.min(1).max(64).optional(),
51
+ fillOpacity: finiteSchema.min(0).max(1).optional()
52
+ }).strict();
53
+ const sourceSnapshotSchema = z.record(z.string(), z.unknown());
54
+ function isSafeBoardSourcePath(value) {
55
+ return value.length > 0 && value.length <= 4096 && !value.startsWith("/") && !value.startsWith("\\") && !value.includes("\\") && value.split("/").every((part) => part.length > 0 && part !== "." && part !== "..");
56
+ }
57
+ const BoardItemSourceSchema = z.object({
58
+ kind: z.literal("space-file"),
59
+ path: z.string().refine(isSafeBoardSourcePath, "source path must be a safe relative Board file path"),
60
+ snapshot: sourceSnapshotSchema.optional()
61
+ }).strict();
62
+ const baseFields = {
63
+ id: idSchema,
64
+ frame: BoardAuthoringFrameSchema,
65
+ parentId: idSchema.nullable().optional(),
66
+ locked: z.boolean().optional(),
67
+ metadata: jsonObjectSchema.optional()
68
+ };
69
+ const styledBaseFields = {
70
+ ...baseFields,
71
+ style: BoardItemStyleSchema.optional()
72
+ };
73
+ const BoardTextAuthoringItemSchema = z.object({
74
+ ...styledBaseFields,
75
+ type: z.literal("text"),
76
+ props: z.object({
77
+ text: z.string().default(""),
78
+ fontSize: finiteSchema.min(2).max(512).default(24)
79
+ }).strict()
80
+ }).strict();
81
+ const BoardGeoAuthoringItemSchema = z.object({
82
+ ...styledBaseFields,
83
+ type: z.literal("geo"),
84
+ props: z.object({
85
+ shape: z.enum(BOARD_GEO_KINDS).default("rectangle"),
86
+ text: z.string().default("")
87
+ }).strict()
88
+ }).strict();
89
+ const BoardDrawAuthoringItemSchema = z.object({
90
+ ...styledBaseFields,
91
+ type: z.literal("draw"),
92
+ props: z.object({ points: z.array(pointSchema).min(1) }).strict()
93
+ }).strict();
94
+ const BoardArrowAuthoringItemSchema = z.object({
95
+ ...styledBaseFields,
96
+ type: z.literal("arrow"),
97
+ props: z.object({
98
+ start: worldPointSchema,
99
+ end: worldPointSchema,
100
+ bend: finiteSchema.min(-.85).max(.85).default(0),
101
+ arrowStart: z.boolean().default(false),
102
+ arrowEnd: z.boolean().default(true),
103
+ label: z.string().default("")
104
+ }).strict()
105
+ }).strict();
106
+ const BoardFrameAuthoringItemSchema = z.object({
107
+ ...styledBaseFields,
108
+ type: z.literal("frame"),
109
+ props: z.object({ label: z.string().default("Frame") }).strict()
110
+ }).strict();
111
+ const fileBackedFields = {
112
+ ...baseFields,
113
+ style: z.object({}).strict().optional(),
114
+ source: BoardItemSourceSchema
115
+ };
116
+ const BoardImageAuthoringItemSchema = z.object({
117
+ ...fileBackedFields,
118
+ type: z.literal("image"),
119
+ props: z.object({ crop: cropSchema.optional() }).strict()
120
+ }).strict();
121
+ const BoardVideoAuthoringItemSchema = z.object({
122
+ ...fileBackedFields,
123
+ type: z.literal("video"),
124
+ props: z.object({}).strict()
125
+ }).strict();
126
+ const BoardAudioAuthoringItemSchema = z.object({
127
+ ...fileBackedFields,
128
+ type: z.literal("audio"),
129
+ props: z.object({}).strict()
130
+ }).strict();
131
+ const BoardFileAuthoringItemSchema = z.object({
132
+ ...fileBackedFields,
133
+ type: z.literal("file"),
134
+ props: z.object({}).strict()
135
+ }).strict();
136
+ const BoardTaskAuthoringItemSchema = z.object({
137
+ ...baseFields,
138
+ type: z.literal("task"),
139
+ props: z.object({
140
+ taskRunId: z.string().min(1),
141
+ snapshot: z.record(z.string(), z.unknown())
142
+ }).strict(),
143
+ style: z.object({}).strict().optional()
144
+ }).strict();
145
+ const builtinItemSchemas = [
146
+ BoardTextAuthoringItemSchema,
147
+ BoardGeoAuthoringItemSchema,
148
+ BoardDrawAuthoringItemSchema,
149
+ BoardArrowAuthoringItemSchema,
150
+ BoardFrameAuthoringItemSchema,
151
+ BoardImageAuthoringItemSchema,
152
+ BoardVideoAuthoringItemSchema,
153
+ BoardAudioAuthoringItemSchema,
154
+ BoardFileAuthoringItemSchema,
155
+ BoardTaskAuthoringItemSchema
156
+ ];
157
+ const BoardBuiltinAuthoringItemSchema = z.discriminatedUnion("type", builtinItemSchemas);
158
+ const BoardExtensionAuthoringItemSchema = z.object({
159
+ ...baseFields,
160
+ type: extensionTypeSchema,
161
+ kindVersion: z.number().int().positive(),
162
+ props: jsonObjectSchema,
163
+ style: jsonObjectSchema.optional(),
164
+ source: z.object({
165
+ kind: z.string().min(1).max(80),
166
+ ref: z.string().min(1).max(4096),
167
+ snapshot: jsonObjectSchema.optional()
168
+ }).strict().optional()
169
+ }).strict();
170
+ const BoardAuthoringItemSchema = z.union([BoardBuiltinAuthoringItemSchema, BoardExtensionAuthoringItemSchema]);
171
+ const framePatchSchema = z.object({
172
+ x: finiteSchema.optional(),
173
+ y: finiteSchema.optional(),
174
+ width: finiteSchema.positive().optional(),
175
+ height: finiteSchema.positive().optional(),
176
+ rotation: finiteSchema.optional()
177
+ }).strict();
178
+ /** JSON Merge Patch semantics, constrained to the stable Item envelope. */
179
+ const BoardItemPatchSchema = z.object({
180
+ frame: framePatchSchema.optional(),
181
+ parentId: idSchema.nullable().optional(),
182
+ locked: z.boolean().nullable().optional(),
183
+ props: jsonObjectSchema.optional(),
184
+ style: jsonObjectSchema.nullable().optional(),
185
+ source: jsonObjectSchema.nullable().optional(),
186
+ metadata: jsonObjectSchema.nullable().optional()
187
+ }).strict().refine((patch) => Object.keys(patch).length > 0, "item patch is empty");
188
+ const BoardSemanticCommandSchema = z.discriminatedUnion("type", [
189
+ z.object({
190
+ type: z.literal("item.create"),
191
+ item: BoardAuthoringItemSchema
192
+ }).strict(),
193
+ z.object({
194
+ type: z.literal("item.patch"),
195
+ itemId: idSchema,
196
+ patch: BoardItemPatchSchema
197
+ }).strict(),
198
+ z.object({
199
+ type: z.literal("item.replace"),
200
+ itemId: idSchema,
201
+ item: BoardAuthoringItemSchema
202
+ }).strict(),
203
+ z.object({
204
+ type: z.literal("item.delete"),
205
+ itemId: idSchema,
206
+ cascade: z.boolean().default(false)
207
+ }).strict()
208
+ ]);
209
+ z.object({
210
+ mutationId: idSchema,
211
+ baseVersion: z.number().int().nonnegative(),
212
+ clientId: idSchema.optional(),
213
+ undoGroupId: idSchema.optional(),
214
+ commands: z.array(BoardSemanticCommandSchema).min(1).max(5e4)
215
+ }).strict();
216
+ //#endregion
217
+ export { BoardArrowAuthoringItemSchema, BoardAudioAuthoringItemSchema, BoardAuthoringItemSchema, BoardBuiltinAuthoringItemSchema, BoardDrawAuthoringItemSchema, BoardExtensionAuthoringItemSchema, BoardFileAuthoringItemSchema, BoardFrameAuthoringItemSchema, BoardGeoAuthoringItemSchema, BoardImageAuthoringItemSchema, BoardItemPatchSchema, BoardItemSourceSchema, BoardItemStyleSchema, BoardSemanticCommandSchema, BoardTaskAuthoringItemSchema, BoardTextAuthoringItemSchema, BoardVideoAuthoringItemSchema, isSafeBoardSourcePath };
@@ -0,0 +1,2 @@
1
+ import "./board-composition.js";
2
+ import "./board.js";
@@ -0,0 +1,74 @@
1
+ import { BOARD_BUILTIN_CLIP_KINDS, BOARD_BUILTIN_EFFECT_KINDS, DEFAULT_BOARD_RENDER_LIMITS } from "./board-constants.js";
2
+ import { BoardCameraFocusParamsSchema } from "./board.js";
3
+ //#region ../protocol/dist/board-capability-registry.js
4
+ const CLIPS = new Set(BOARD_BUILTIN_CLIP_KINDS);
5
+ new Set(BOARD_BUILTIN_EFFECT_KINDS);
6
+ const record = (value) => Boolean(value && typeof value === "object" && !Array.isArray(value));
7
+ const finite = (value) => typeof value === "number" && Number.isFinite(value);
8
+ function validateBuiltinBoardClip(clip, path = "clip") {
9
+ if (!CLIPS.has(clip.kind)) return [];
10
+ const errors = [];
11
+ const error = (message, suffix, coordinateSpace, code = "INVALID_BOARD_CLIP") => {
12
+ errors.push({
13
+ severity: "error",
14
+ code,
15
+ message,
16
+ path: `${path}.${suffix}`,
17
+ ...coordinateSpace ? { coordinateSpace } : {}
18
+ });
19
+ };
20
+ if ((clip.kind.startsWith("motion.") || clip.kind.startsWith("draw.") || clip.kind === "text.reveal" || clip.kind === "effects.trail") && clip.target.type !== "item") error(`${clip.kind} must target an item`, "target");
21
+ if (clip.kind.startsWith("camera.") && clip.target.type !== "camera") error(`${clip.kind} must target the camera`, "target");
22
+ if (clip.kind === "motion.path") {
23
+ const points = clip.params.points;
24
+ if (!Array.isArray(points) || points.length < 2 || points.length > 1e4) error("motion path must contain 2 to 10000 world-offset points", "params.points", "world-offset");
25
+ else for (const [index, point] of points.entries()) if (!record(point) || !finite(point.x) || !finite(point.y)) error("motion path point must contain finite x and y", `params.points.${index}`, "world-offset");
26
+ }
27
+ if (clip.kind === "effects.particles") {
28
+ const count = clip.params.count;
29
+ if (!Number.isSafeInteger(count) || count < 1 || count > DEFAULT_BOARD_RENDER_LIMITS.particles) error(`particle count must be an integer from 1 to ${DEFAULT_BOARD_RENDER_LIMITS.particles}`, "params.count", void 0, "INVALID_PARTICLE_COUNT");
30
+ const bounds = clip.params.bounds;
31
+ if (!record(bounds) || !finite(bounds.x) || !finite(bounds.y) || !finite(bounds.width) || !finite(bounds.height) || bounds.width <= 0 || bounds.height <= 0) error("particles require positive finite world bounds", "params.bounds", "world", "PARTICLE_BOUNDS_REQUIRED");
32
+ }
33
+ if (clip.kind === "camera.focus") {
34
+ const parsed = BoardCameraFocusParamsSchema.safeParse(clip.params);
35
+ if (!parsed.success) error(parsed.error.issues[0]?.message ?? "invalid camera focus", "params", "world");
36
+ }
37
+ return errors;
38
+ }
39
+ function estimateBuiltinBoardClipCost(clip) {
40
+ switch (clip.kind) {
41
+ case "effects.particles": {
42
+ const count = Number.isSafeInteger(clip.params.count) ? Math.max(0, clip.params.count) : 0;
43
+ return {
44
+ particles: count,
45
+ vertices: count * 4,
46
+ dynamicVertices: count * 4,
47
+ drawCalls: 1,
48
+ bufferBytes: count * 48,
49
+ simulationSteps: count
50
+ };
51
+ }
52
+ case "effects.trail": return {
53
+ vertices: 32,
54
+ dynamicVertices: 32,
55
+ drawCalls: 1,
56
+ bufferBytes: 1024,
57
+ simulationSteps: 16
58
+ };
59
+ case "effects.impact":
60
+ case "effects.flash": return {
61
+ vertices: 64,
62
+ drawCalls: 1
63
+ };
64
+ case "draw.reveal":
65
+ case "draw.handwrite": return {
66
+ drawCalls: 1,
67
+ dynamicVertices: 1
68
+ };
69
+ case "motion.path": return { simulationSteps: Array.isArray(clip.params.points) ? clip.params.points.length : 0 };
70
+ default: return {};
71
+ }
72
+ }
73
+ //#endregion
74
+ export { estimateBuiltinBoardClipCost, validateBuiltinBoardClip };
@@ -0,0 +1,2 @@
1
+ import "./board.js";
2
+ import "./board-authoring.js";
@@ -0,0 +1,4 @@
1
+ import "./board-authoring.js";
2
+ import "./board.js";
3
+ import "./board-node.js";
4
+ export {};
@@ -0,0 +1,258 @@
1
+ import { z } from "zod";
2
+ //#region ../protocol/dist/board-composition.d.ts
3
+ declare const BoardEasingSchema: z.ZodEnum<{
4
+ "ease-in-cubic": "ease-in-cubic";
5
+ "ease-in-out-cubic": "ease-in-out-cubic";
6
+ "ease-in-out-quad": "ease-in-out-quad";
7
+ "ease-in-quad": "ease-in-quad";
8
+ "ease-out-cubic": "ease-out-cubic";
9
+ "ease-out-expo": "ease-out-expo";
10
+ "ease-out-quad": "ease-out-quad";
11
+ "ease-out-quart": "ease-out-quart";
12
+ linear: "linear";
13
+ }>;
14
+ type BoardEasing = z.infer<typeof BoardEasingSchema>;
15
+ declare const BoardAnimationTargetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
+ type: z.ZodLiteral<"item">;
17
+ itemId: z.ZodString;
18
+ }, z.core.$strict>, z.ZodObject<{
19
+ type: z.ZodLiteral<"effect">;
20
+ effectId: z.ZodString;
21
+ }, z.core.$strict>, z.ZodObject<{
22
+ type: z.ZodLiteral<"camera">;
23
+ }, z.core.$strict>, z.ZodObject<{
24
+ type: z.ZodLiteral<"board">;
25
+ }, z.core.$strict>], "type">;
26
+ type BoardAnimationTarget = z.infer<typeof BoardAnimationTargetSchema>;
27
+ type BoardTrackInterpolation = "linear" | "step";
28
+ declare const BoardTrackSchema: z.ZodObject<{
29
+ id: z.ZodString;
30
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
31
+ type: z.ZodLiteral<"item">;
32
+ itemId: z.ZodString;
33
+ }, z.core.$strict>, z.ZodObject<{
34
+ type: z.ZodLiteral<"effect">;
35
+ effectId: z.ZodString;
36
+ }, z.core.$strict>, z.ZodObject<{
37
+ type: z.ZodLiteral<"camera">;
38
+ }, z.core.$strict>, z.ZodObject<{
39
+ type: z.ZodLiteral<"board">;
40
+ }, z.core.$strict>], "type">;
41
+ channel: z.ZodString;
42
+ channelVersion: z.ZodDefault<z.ZodNumber>;
43
+ interpolation: z.ZodDefault<z.ZodEnum<{
44
+ linear: "linear";
45
+ step: "step";
46
+ }>>;
47
+ fill: z.ZodDefault<z.ZodEnum<{
48
+ backwards: "backwards";
49
+ both: "both";
50
+ forwards: "forwards";
51
+ none: "none";
52
+ }>>;
53
+ keyframes: z.ZodArray<z.ZodObject<{
54
+ time: z.ZodNumber;
55
+ value: z.ZodUnknown;
56
+ easing: z.ZodOptional<z.ZodEnum<{
57
+ "ease-in-cubic": "ease-in-cubic";
58
+ "ease-in-out-cubic": "ease-in-out-cubic";
59
+ "ease-in-out-quad": "ease-in-out-quad";
60
+ "ease-in-quad": "ease-in-quad";
61
+ "ease-out-cubic": "ease-out-cubic";
62
+ "ease-out-expo": "ease-out-expo";
63
+ "ease-out-quad": "ease-out-quad";
64
+ "ease-out-quart": "ease-out-quart";
65
+ linear: "linear";
66
+ }>>;
67
+ }, z.core.$strict>>;
68
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
69
+ }, z.core.$strict>;
70
+ type BoardTrack = z.infer<typeof BoardTrackSchema>;
71
+ declare const BoardProceduralClipSchema: z.ZodObject<{
72
+ id: z.ZodString;
73
+ kind: z.ZodString;
74
+ kindVersion: z.ZodNumber;
75
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
76
+ type: z.ZodLiteral<"item">;
77
+ itemId: z.ZodString;
78
+ }, z.core.$strict>, z.ZodObject<{
79
+ type: z.ZodLiteral<"effect">;
80
+ effectId: z.ZodString;
81
+ }, z.core.$strict>, z.ZodObject<{
82
+ type: z.ZodLiteral<"camera">;
83
+ }, z.core.$strict>, z.ZodObject<{
84
+ type: z.ZodLiteral<"board">;
85
+ }, z.core.$strict>], "type">;
86
+ start: z.ZodNumber;
87
+ duration: z.ZodNumber;
88
+ layer: z.ZodDefault<z.ZodEnum<{
89
+ behind: "behind";
90
+ content: "content";
91
+ front: "front";
92
+ screen: "screen";
93
+ }>>;
94
+ fill: z.ZodDefault<z.ZodEnum<{
95
+ backwards: "backwards";
96
+ both: "both";
97
+ forwards: "forwards";
98
+ none: "none";
99
+ }>>;
100
+ easing: z.ZodDefault<z.ZodEnum<{
101
+ "ease-in-cubic": "ease-in-cubic";
102
+ "ease-in-out-cubic": "ease-in-out-cubic";
103
+ "ease-in-out-quad": "ease-in-out-quad";
104
+ "ease-in-quad": "ease-in-quad";
105
+ "ease-out-cubic": "ease-out-cubic";
106
+ "ease-out-expo": "ease-out-expo";
107
+ "ease-out-quad": "ease-out-quad";
108
+ "ease-out-quart": "ease-out-quart";
109
+ linear: "linear";
110
+ }>>;
111
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
112
+ assetRefs: z.ZodDefault<z.ZodArray<z.ZodObject<{
113
+ type: z.ZodEnum<{
114
+ extension: "extension";
115
+ "space-file": "space-file";
116
+ }>;
117
+ ref: z.ZodString;
118
+ digest: z.ZodOptional<z.ZodString>;
119
+ }, z.core.$strict>>>;
120
+ seed: z.ZodString;
121
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
122
+ }, z.core.$strict>;
123
+ type BoardProceduralClip = z.infer<typeof BoardProceduralClipSchema>;
124
+ declare const BoardTimelineMarkerSchema: z.ZodObject<{
125
+ id: z.ZodString;
126
+ time: z.ZodNumber;
127
+ duration: z.ZodOptional<z.ZodNumber>;
128
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
129
+ }, z.core.$strict>;
130
+ type BoardTimelineMarker = z.infer<typeof BoardTimelineMarkerSchema>;
131
+ declare const BoardCompositionSchema: z.ZodObject<{
132
+ id: z.ZodString;
133
+ name: z.ZodString;
134
+ timeline: z.ZodObject<{
135
+ duration: z.ZodNumber;
136
+ tracks: z.ZodDefault<z.ZodArray<z.ZodObject<{
137
+ id: z.ZodString;
138
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
139
+ type: z.ZodLiteral<"item">;
140
+ itemId: z.ZodString;
141
+ }, z.core.$strict>, z.ZodObject<{
142
+ type: z.ZodLiteral<"effect">;
143
+ effectId: z.ZodString;
144
+ }, z.core.$strict>, z.ZodObject<{
145
+ type: z.ZodLiteral<"camera">;
146
+ }, z.core.$strict>, z.ZodObject<{
147
+ type: z.ZodLiteral<"board">;
148
+ }, z.core.$strict>], "type">;
149
+ channel: z.ZodString;
150
+ channelVersion: z.ZodDefault<z.ZodNumber>;
151
+ interpolation: z.ZodDefault<z.ZodEnum<{
152
+ linear: "linear";
153
+ step: "step";
154
+ }>>;
155
+ fill: z.ZodDefault<z.ZodEnum<{
156
+ backwards: "backwards";
157
+ both: "both";
158
+ forwards: "forwards";
159
+ none: "none";
160
+ }>>;
161
+ keyframes: z.ZodArray<z.ZodObject<{
162
+ time: z.ZodNumber;
163
+ value: z.ZodUnknown;
164
+ easing: z.ZodOptional<z.ZodEnum<{
165
+ "ease-in-cubic": "ease-in-cubic";
166
+ "ease-in-out-cubic": "ease-in-out-cubic";
167
+ "ease-in-out-quad": "ease-in-out-quad";
168
+ "ease-in-quad": "ease-in-quad";
169
+ "ease-out-cubic": "ease-out-cubic";
170
+ "ease-out-expo": "ease-out-expo";
171
+ "ease-out-quad": "ease-out-quad";
172
+ "ease-out-quart": "ease-out-quart";
173
+ linear: "linear";
174
+ }>>;
175
+ }, z.core.$strict>>;
176
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
177
+ }, z.core.$strict>>>;
178
+ clips: z.ZodDefault<z.ZodArray<z.ZodObject<{
179
+ id: z.ZodString;
180
+ kind: z.ZodString;
181
+ kindVersion: z.ZodNumber;
182
+ target: z.ZodDiscriminatedUnion<[z.ZodObject<{
183
+ type: z.ZodLiteral<"item">;
184
+ itemId: z.ZodString;
185
+ }, z.core.$strict>, z.ZodObject<{
186
+ type: z.ZodLiteral<"effect">;
187
+ effectId: z.ZodString;
188
+ }, z.core.$strict>, z.ZodObject<{
189
+ type: z.ZodLiteral<"camera">;
190
+ }, z.core.$strict>, z.ZodObject<{
191
+ type: z.ZodLiteral<"board">;
192
+ }, z.core.$strict>], "type">;
193
+ start: z.ZodNumber;
194
+ duration: z.ZodNumber;
195
+ layer: z.ZodDefault<z.ZodEnum<{
196
+ behind: "behind";
197
+ content: "content";
198
+ front: "front";
199
+ screen: "screen";
200
+ }>>;
201
+ fill: z.ZodDefault<z.ZodEnum<{
202
+ backwards: "backwards";
203
+ both: "both";
204
+ forwards: "forwards";
205
+ none: "none";
206
+ }>>;
207
+ easing: z.ZodDefault<z.ZodEnum<{
208
+ "ease-in-cubic": "ease-in-cubic";
209
+ "ease-in-out-cubic": "ease-in-out-cubic";
210
+ "ease-in-out-quad": "ease-in-out-quad";
211
+ "ease-in-quad": "ease-in-quad";
212
+ "ease-out-cubic": "ease-out-cubic";
213
+ "ease-out-expo": "ease-out-expo";
214
+ "ease-out-quad": "ease-out-quad";
215
+ "ease-out-quart": "ease-out-quart";
216
+ linear: "linear";
217
+ }>>;
218
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
219
+ assetRefs: z.ZodDefault<z.ZodArray<z.ZodObject<{
220
+ type: z.ZodEnum<{
221
+ extension: "extension";
222
+ "space-file": "space-file";
223
+ }>;
224
+ ref: z.ZodString;
225
+ digest: z.ZodOptional<z.ZodString>;
226
+ }, z.core.$strict>>>;
227
+ seed: z.ZodString;
228
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
229
+ }, z.core.$strict>>>;
230
+ markers: z.ZodDefault<z.ZodArray<z.ZodObject<{
231
+ id: z.ZodString;
232
+ time: z.ZodNumber;
233
+ duration: z.ZodOptional<z.ZodNumber>;
234
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
235
+ }, z.core.$strict>>>;
236
+ }, z.core.$strict>;
237
+ playback: z.ZodDefault<z.ZodObject<{
238
+ loop: z.ZodDefault<z.ZodBoolean>;
239
+ endBehavior: z.ZodDefault<z.ZodEnum<{
240
+ hold: "hold";
241
+ reset: "reset";
242
+ }>>;
243
+ reducedMotion: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
244
+ mode: z.ZodLiteral<"base">;
245
+ }, z.core.$strict>, z.ZodObject<{
246
+ mode: z.ZodLiteral<"time">;
247
+ time: z.ZodNumber;
248
+ }, z.core.$strict>, z.ZodObject<{
249
+ mode: z.ZodLiteral<"marker">;
250
+ markerId: z.ZodString;
251
+ }, z.core.$strict>], "mode">>;
252
+ }, z.core.$strict>>;
253
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
254
+ revision: z.ZodDefault<z.ZodNumber>;
255
+ }, z.core.$strict>;
256
+ type BoardComposition = z.infer<typeof BoardCompositionSchema>;
257
+ //#endregion
258
+ export { BoardAnimationTarget, BoardAnimationTargetSchema, BoardComposition, BoardCompositionSchema, BoardEasing, BoardEasingSchema, BoardProceduralClip, BoardProceduralClipSchema, BoardTimelineMarker, BoardTimelineMarkerSchema, BoardTrack, BoardTrackInterpolation, BoardTrackSchema };