@fungi.computer/sprite-zdog 0.0.0-stage → 0.0.1

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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +125 -2
  3. package/dist/agent-proof/moth.d.ts +50 -0
  4. package/dist/agent-proof/moth.js +52 -0
  5. package/dist/author.d.ts +217 -0
  6. package/dist/author.js +372 -0
  7. package/dist/avatar.d.ts +69 -0
  8. package/dist/avatar.js +40 -0
  9. package/dist/builtins/base-face.d.ts +290 -0
  10. package/dist/builtins/base-face.js +615 -0
  11. package/dist/builtins/base.d.ts +331 -0
  12. package/dist/builtins/base.js +579 -0
  13. package/dist/builtins/burger-input.d.ts +310 -0
  14. package/dist/builtins/burger-input.js +517 -0
  15. package/dist/builtins/burger.d.ts +305 -0
  16. package/dist/builtins/burger.js +4 -0
  17. package/dist/builtins/cat-input.d.ts +316 -0
  18. package/dist/builtins/cat-input.js +255 -0
  19. package/dist/builtins/cat.d.ts +311 -0
  20. package/dist/builtins/cat.js +4 -0
  21. package/dist/builtins/index.d.ts +4 -0
  22. package/dist/builtins/index.js +4 -0
  23. package/dist/builtins/mushroom-input.d.ts +314 -0
  24. package/dist/builtins/mushroom-input.js +94 -0
  25. package/dist/builtins/mushroom.d.ts +310 -0
  26. package/dist/builtins/mushroom.js +4 -0
  27. package/dist/burger.d.ts +9 -0
  28. package/dist/burger.js +15 -0
  29. package/dist/cat.d.ts +9 -0
  30. package/dist/cat.js +15 -0
  31. package/dist/catalog.d.ts +3 -0
  32. package/dist/catalog.js +63 -0
  33. package/dist/document.d.ts +444 -0
  34. package/dist/document.js +204 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.js +10 -0
  37. package/dist/internal.d.ts +41 -0
  38. package/dist/internal.js +21 -0
  39. package/dist/mushroom.character.json +1930 -0
  40. package/dist/mushroom.d.ts +4 -0
  41. package/dist/mushroom.js +9 -0
  42. package/dist/palette.d.ts +3 -0
  43. package/dist/palette.js +5 -0
  44. package/dist/portable.d.ts +4 -0
  45. package/dist/portable.js +61 -0
  46. package/dist/renderer.d.ts +4 -0
  47. package/dist/renderer.js +106 -0
  48. package/dist/zdog-runtime.d.ts +21 -0
  49. package/dist/zdog-runtime.js +622 -0
  50. package/package.json +112 -3
@@ -0,0 +1,4 @@
1
+ import { defineSprite } from "../author.js";
2
+ import { mushroomInput } from "./mushroom-input.js";
3
+ const mushroom = defineSprite(mushroomInput);
4
+ export default mushroom;
@@ -0,0 +1,9 @@
1
+ import { type LocalCharacter } from "@fungi.computer/sprite";
2
+ /**
3
+ * The burger as one portable character plus its native renderer. Unlike the
4
+ * retained mushroom, this is computed from the builtin at import time rather
5
+ * than a generated JSON file: `toCharacter` is a pure scene-graph walk (no
6
+ * `zdog` import), so there is nothing to keep in sync by hand.
7
+ */
8
+ declare const burgerCharacter: LocalCharacter;
9
+ export default burgerCharacter;
package/dist/burger.js ADDED
@@ -0,0 +1,15 @@
1
+ import { characterSchema } from "@fungi.computer/sprite";
2
+ import burger from "./builtins/burger.js";
3
+ import renderZdog from "./renderer.js";
4
+ import { toCharacter } from "./portable.js";
5
+ /**
6
+ * The burger as one portable character plus its native renderer. Unlike the
7
+ * retained mushroom, this is computed from the builtin at import time rather
8
+ * than a generated JSON file: `toCharacter` is a pure scene-graph walk (no
9
+ * `zdog` import), so there is nothing to keep in sync by hand.
10
+ */
11
+ const burgerCharacter = {
12
+ document: characterSchema.parse(toCharacter(burger)),
13
+ render: renderZdog,
14
+ };
15
+ export default burgerCharacter;
package/dist/cat.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { type LocalCharacter } from "@fungi.computer/sprite";
2
+ /**
3
+ * The cat as one portable character plus its native renderer. Unlike the
4
+ * retained mushroom, this is computed from the builtin at import time rather
5
+ * than a generated JSON file: `toCharacter` is a pure scene-graph walk (no
6
+ * `zdog` import), so there is nothing to keep in sync by hand.
7
+ */
8
+ declare const catCharacter: LocalCharacter;
9
+ export default catCharacter;
package/dist/cat.js ADDED
@@ -0,0 +1,15 @@
1
+ import { characterSchema } from "@fungi.computer/sprite";
2
+ import cat from "./builtins/cat.js";
3
+ import renderZdog from "./renderer.js";
4
+ import { toCharacter } from "./portable.js";
5
+ /**
6
+ * The cat as one portable character plus its native renderer. Unlike the
7
+ * retained mushroom, this is computed from the builtin at import time rather
8
+ * than a generated JSON file: `toCharacter` is a pure scene-graph walk (no
9
+ * `zdog` import), so there is nothing to keep in sync by hand.
10
+ */
11
+ const catCharacter = {
12
+ document: characterSchema.parse(toCharacter(cat)),
13
+ render: renderZdog,
14
+ };
15
+ export default catCharacter;
@@ -0,0 +1,3 @@
1
+ import { type AvatarCatalog } from "@fungi.computer/sprite/avatar";
2
+ /** Pure per-character facts for every v1 avatar character. No `zdog` import. */
3
+ export declare const avatarCatalog: AvatarCatalog;
@@ -0,0 +1,63 @@
1
+ import {} from "@fungi.computer/sprite/avatar";
2
+ import { defineSprite } from "./author.js";
3
+ import { burgerInput } from "./builtins/burger-input.js";
4
+ import { catInput } from "./builtins/cat-input.js";
5
+ import { mushroomInput } from "./builtins/mushroom-input.js";
6
+ import { zdogDocumentSchema } from "./document.js";
7
+ import { toCharacter } from "./portable.js";
8
+ /**
9
+ * Controls that carry each character's identity colour, in priority order.
10
+ * The first slot is the one a rendered preview (and `deriveAgentAvatar`'s
11
+ * hue search) treats as "the" identity colour.
12
+ */
13
+ const identitySlots = {
14
+ mushroom: ["cap", "capSpot"],
15
+ cat: ["body", "stripes"],
16
+ burger: ["topBun", "bottomBun"],
17
+ };
18
+ const inputs = { mushroom: mushroomInput, cat: catInput, burger: burgerInput };
19
+ /**
20
+ * This never imports `zdog`: `toCharacter` only walks the renderer-neutral
21
+ * scene graph authored by `defineSprite`, so a Hub (or anywhere else that
22
+ * only needs to validate an avatar) can import this catalog without pulling
23
+ * in a canvas renderer.
24
+ */
25
+ function catalogEntryFor(character) {
26
+ const document = toCharacter(defineSprite(inputs[character]));
27
+ const scene = zdogDocumentSchema.parse(document.data);
28
+ return {
29
+ controls: document.controls,
30
+ expressions: Object.keys(scene.expressions),
31
+ identitySlots: identitySlots[character],
32
+ };
33
+ }
34
+ const entries = new Map();
35
+ /**
36
+ * Building, walking and parsing a character is real work, and the Hub and
37
+ * State Workers import this catalog on their cold-start path only to build an
38
+ * avatar schema. The catalog therefore imports each character's authoring
39
+ * input rather than its eager `builtins/*` definition, and each entry is
40
+ * defined, derived on first read and memoised, so module evaluation stays
41
+ * cheap and only a request that validates an avatar pays for the character
42
+ * it names.
43
+ */
44
+ function entry(character) {
45
+ let found = entries.get(character);
46
+ if (!found) {
47
+ found = catalogEntryFor(character);
48
+ entries.set(character, found);
49
+ }
50
+ return found;
51
+ }
52
+ /** Pure per-character facts for every v1 avatar character. No `zdog` import. */
53
+ export const avatarCatalog = Object.freeze({
54
+ get mushroom() {
55
+ return entry("mushroom");
56
+ },
57
+ get cat() {
58
+ return entry("cat");
59
+ },
60
+ get burger() {
61
+ return entry("burger");
62
+ },
63
+ });
@@ -0,0 +1,444 @@
1
+ import * as z from "zod";
2
+ export declare const zdogNodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ kind: z.ZodLiteral<"group">;
4
+ options: z.ZodObject<{
5
+ name: z.ZodOptional<z.ZodString>;
6
+ x: z.ZodOptional<z.ZodNumber>;
7
+ y: z.ZodOptional<z.ZodNumber>;
8
+ z: z.ZodOptional<z.ZodNumber>;
9
+ translate: z.ZodOptional<z.ZodObject<{
10
+ x: z.ZodOptional<z.ZodNumber>;
11
+ y: z.ZodOptional<z.ZodNumber>;
12
+ z: z.ZodOptional<z.ZodNumber>;
13
+ }, z.core.$strict>>;
14
+ rotate: z.ZodOptional<z.ZodObject<{
15
+ x: z.ZodOptional<z.ZodNumber>;
16
+ y: z.ZodOptional<z.ZodNumber>;
17
+ z: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strict>>;
19
+ scale: z.ZodOptional<z.ZodObject<{
20
+ x: z.ZodOptional<z.ZodNumber>;
21
+ y: z.ZodOptional<z.ZodNumber>;
22
+ z: z.ZodOptional<z.ZodNumber>;
23
+ }, z.core.$strict>>;
24
+ visible: z.ZodOptional<z.ZodBoolean>;
25
+ color: z.ZodOptional<z.ZodString>;
26
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
27
+ fill: z.ZodOptional<z.ZodBoolean>;
28
+ backface: z.ZodOptional<z.ZodString>;
29
+ frontFace: z.ZodOptional<z.ZodString>;
30
+ updateSort: z.ZodOptional<z.ZodBoolean>;
31
+ }, z.core.$strict>;
32
+ id: z.ZodString;
33
+ parent: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strict>, z.ZodObject<{
35
+ kind: z.ZodLiteral<"shape">;
36
+ options: z.ZodObject<{
37
+ name: z.ZodOptional<z.ZodString>;
38
+ x: z.ZodOptional<z.ZodNumber>;
39
+ y: z.ZodOptional<z.ZodNumber>;
40
+ z: z.ZodOptional<z.ZodNumber>;
41
+ translate: z.ZodOptional<z.ZodObject<{
42
+ x: z.ZodOptional<z.ZodNumber>;
43
+ y: z.ZodOptional<z.ZodNumber>;
44
+ z: z.ZodOptional<z.ZodNumber>;
45
+ }, z.core.$strict>>;
46
+ rotate: z.ZodOptional<z.ZodObject<{
47
+ x: z.ZodOptional<z.ZodNumber>;
48
+ y: z.ZodOptional<z.ZodNumber>;
49
+ z: z.ZodOptional<z.ZodNumber>;
50
+ }, z.core.$strict>>;
51
+ scale: z.ZodOptional<z.ZodObject<{
52
+ x: z.ZodOptional<z.ZodNumber>;
53
+ y: z.ZodOptional<z.ZodNumber>;
54
+ z: z.ZodOptional<z.ZodNumber>;
55
+ }, z.core.$strict>>;
56
+ visible: z.ZodOptional<z.ZodBoolean>;
57
+ color: z.ZodOptional<z.ZodString>;
58
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
59
+ fill: z.ZodOptional<z.ZodBoolean>;
60
+ backface: z.ZodOptional<z.ZodString>;
61
+ frontFace: z.ZodOptional<z.ZodString>;
62
+ updateSort: z.ZodOptional<z.ZodBoolean>;
63
+ path: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
64
+ x: z.ZodNumber;
65
+ y: z.ZodNumber;
66
+ z: z.ZodOptional<z.ZodNumber>;
67
+ }, z.core.$strict>, z.ZodObject<{
68
+ bezier: z.ZodTuple<[z.ZodObject<{
69
+ x: z.ZodNumber;
70
+ y: z.ZodNumber;
71
+ z: z.ZodOptional<z.ZodNumber>;
72
+ }, z.core.$strict>, z.ZodObject<{
73
+ x: z.ZodNumber;
74
+ y: z.ZodNumber;
75
+ z: z.ZodOptional<z.ZodNumber>;
76
+ }, z.core.$strict>, z.ZodObject<{
77
+ x: z.ZodNumber;
78
+ y: z.ZodNumber;
79
+ z: z.ZodOptional<z.ZodNumber>;
80
+ }, z.core.$strict>], null>;
81
+ }, z.core.$strict>]>>>;
82
+ closed: z.ZodOptional<z.ZodBoolean>;
83
+ }, z.core.$strict>;
84
+ id: z.ZodString;
85
+ parent: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$strict>, z.ZodObject<{
87
+ kind: z.ZodLiteral<"ellipse">;
88
+ options: z.ZodObject<{
89
+ name: z.ZodOptional<z.ZodString>;
90
+ x: z.ZodOptional<z.ZodNumber>;
91
+ y: z.ZodOptional<z.ZodNumber>;
92
+ z: z.ZodOptional<z.ZodNumber>;
93
+ translate: z.ZodOptional<z.ZodObject<{
94
+ x: z.ZodOptional<z.ZodNumber>;
95
+ y: z.ZodOptional<z.ZodNumber>;
96
+ z: z.ZodOptional<z.ZodNumber>;
97
+ }, z.core.$strict>>;
98
+ rotate: z.ZodOptional<z.ZodObject<{
99
+ x: z.ZodOptional<z.ZodNumber>;
100
+ y: z.ZodOptional<z.ZodNumber>;
101
+ z: z.ZodOptional<z.ZodNumber>;
102
+ }, z.core.$strict>>;
103
+ scale: z.ZodOptional<z.ZodObject<{
104
+ x: z.ZodOptional<z.ZodNumber>;
105
+ y: z.ZodOptional<z.ZodNumber>;
106
+ z: z.ZodOptional<z.ZodNumber>;
107
+ }, z.core.$strict>>;
108
+ visible: z.ZodOptional<z.ZodBoolean>;
109
+ color: z.ZodOptional<z.ZodString>;
110
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
111
+ fill: z.ZodOptional<z.ZodBoolean>;
112
+ backface: z.ZodOptional<z.ZodString>;
113
+ frontFace: z.ZodOptional<z.ZodString>;
114
+ updateSort: z.ZodOptional<z.ZodBoolean>;
115
+ width: z.ZodNumber;
116
+ height: z.ZodNumber;
117
+ }, z.core.$strict>;
118
+ id: z.ZodString;
119
+ parent: z.ZodOptional<z.ZodString>;
120
+ }, z.core.$strict>, z.ZodObject<{
121
+ kind: z.ZodLiteral<"hemisphere">;
122
+ options: z.ZodObject<{
123
+ name: z.ZodOptional<z.ZodString>;
124
+ x: z.ZodOptional<z.ZodNumber>;
125
+ y: z.ZodOptional<z.ZodNumber>;
126
+ z: z.ZodOptional<z.ZodNumber>;
127
+ translate: z.ZodOptional<z.ZodObject<{
128
+ x: z.ZodOptional<z.ZodNumber>;
129
+ y: z.ZodOptional<z.ZodNumber>;
130
+ z: z.ZodOptional<z.ZodNumber>;
131
+ }, z.core.$strict>>;
132
+ rotate: z.ZodOptional<z.ZodObject<{
133
+ x: z.ZodOptional<z.ZodNumber>;
134
+ y: z.ZodOptional<z.ZodNumber>;
135
+ z: z.ZodOptional<z.ZodNumber>;
136
+ }, z.core.$strict>>;
137
+ scale: z.ZodOptional<z.ZodObject<{
138
+ x: z.ZodOptional<z.ZodNumber>;
139
+ y: z.ZodOptional<z.ZodNumber>;
140
+ z: z.ZodOptional<z.ZodNumber>;
141
+ }, z.core.$strict>>;
142
+ visible: z.ZodOptional<z.ZodBoolean>;
143
+ color: z.ZodOptional<z.ZodString>;
144
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
145
+ fill: z.ZodOptional<z.ZodBoolean>;
146
+ backface: z.ZodOptional<z.ZodString>;
147
+ frontFace: z.ZodOptional<z.ZodString>;
148
+ updateSort: z.ZodOptional<z.ZodBoolean>;
149
+ diameter: z.ZodNumber;
150
+ }, z.core.$strict>;
151
+ id: z.ZodString;
152
+ parent: z.ZodOptional<z.ZodString>;
153
+ }, z.core.$strict>, z.ZodObject<{
154
+ kind: z.ZodLiteral<"cylinder">;
155
+ options: z.ZodObject<{
156
+ name: z.ZodOptional<z.ZodString>;
157
+ x: z.ZodOptional<z.ZodNumber>;
158
+ y: z.ZodOptional<z.ZodNumber>;
159
+ z: z.ZodOptional<z.ZodNumber>;
160
+ translate: z.ZodOptional<z.ZodObject<{
161
+ x: z.ZodOptional<z.ZodNumber>;
162
+ y: z.ZodOptional<z.ZodNumber>;
163
+ z: z.ZodOptional<z.ZodNumber>;
164
+ }, z.core.$strict>>;
165
+ rotate: z.ZodOptional<z.ZodObject<{
166
+ x: z.ZodOptional<z.ZodNumber>;
167
+ y: z.ZodOptional<z.ZodNumber>;
168
+ z: z.ZodOptional<z.ZodNumber>;
169
+ }, z.core.$strict>>;
170
+ scale: z.ZodOptional<z.ZodObject<{
171
+ x: z.ZodOptional<z.ZodNumber>;
172
+ y: z.ZodOptional<z.ZodNumber>;
173
+ z: z.ZodOptional<z.ZodNumber>;
174
+ }, z.core.$strict>>;
175
+ visible: z.ZodOptional<z.ZodBoolean>;
176
+ color: z.ZodOptional<z.ZodString>;
177
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
178
+ fill: z.ZodOptional<z.ZodBoolean>;
179
+ backface: z.ZodOptional<z.ZodString>;
180
+ frontFace: z.ZodOptional<z.ZodString>;
181
+ updateSort: z.ZodOptional<z.ZodBoolean>;
182
+ diameter: z.ZodNumber;
183
+ length: z.ZodNumber;
184
+ }, z.core.$strict>;
185
+ id: z.ZodString;
186
+ parent: z.ZodOptional<z.ZodString>;
187
+ }, z.core.$strict>], "kind">;
188
+ /** Zdog's portable native data, not a new cross-renderer animation language. */
189
+ export declare const zdogDocumentSchema: z.ZodObject<{
190
+ root: z.ZodString;
191
+ nodes: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
192
+ kind: z.ZodLiteral<"group">;
193
+ options: z.ZodObject<{
194
+ name: z.ZodOptional<z.ZodString>;
195
+ x: z.ZodOptional<z.ZodNumber>;
196
+ y: z.ZodOptional<z.ZodNumber>;
197
+ z: z.ZodOptional<z.ZodNumber>;
198
+ translate: z.ZodOptional<z.ZodObject<{
199
+ x: z.ZodOptional<z.ZodNumber>;
200
+ y: z.ZodOptional<z.ZodNumber>;
201
+ z: z.ZodOptional<z.ZodNumber>;
202
+ }, z.core.$strict>>;
203
+ rotate: z.ZodOptional<z.ZodObject<{
204
+ x: z.ZodOptional<z.ZodNumber>;
205
+ y: z.ZodOptional<z.ZodNumber>;
206
+ z: z.ZodOptional<z.ZodNumber>;
207
+ }, z.core.$strict>>;
208
+ scale: z.ZodOptional<z.ZodObject<{
209
+ x: z.ZodOptional<z.ZodNumber>;
210
+ y: z.ZodOptional<z.ZodNumber>;
211
+ z: z.ZodOptional<z.ZodNumber>;
212
+ }, z.core.$strict>>;
213
+ visible: z.ZodOptional<z.ZodBoolean>;
214
+ color: z.ZodOptional<z.ZodString>;
215
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
216
+ fill: z.ZodOptional<z.ZodBoolean>;
217
+ backface: z.ZodOptional<z.ZodString>;
218
+ frontFace: z.ZodOptional<z.ZodString>;
219
+ updateSort: z.ZodOptional<z.ZodBoolean>;
220
+ }, z.core.$strict>;
221
+ id: z.ZodString;
222
+ parent: z.ZodOptional<z.ZodString>;
223
+ }, z.core.$strict>, z.ZodObject<{
224
+ kind: z.ZodLiteral<"shape">;
225
+ options: z.ZodObject<{
226
+ name: z.ZodOptional<z.ZodString>;
227
+ x: z.ZodOptional<z.ZodNumber>;
228
+ y: z.ZodOptional<z.ZodNumber>;
229
+ z: z.ZodOptional<z.ZodNumber>;
230
+ translate: z.ZodOptional<z.ZodObject<{
231
+ x: z.ZodOptional<z.ZodNumber>;
232
+ y: z.ZodOptional<z.ZodNumber>;
233
+ z: z.ZodOptional<z.ZodNumber>;
234
+ }, z.core.$strict>>;
235
+ rotate: z.ZodOptional<z.ZodObject<{
236
+ x: z.ZodOptional<z.ZodNumber>;
237
+ y: z.ZodOptional<z.ZodNumber>;
238
+ z: z.ZodOptional<z.ZodNumber>;
239
+ }, z.core.$strict>>;
240
+ scale: z.ZodOptional<z.ZodObject<{
241
+ x: z.ZodOptional<z.ZodNumber>;
242
+ y: z.ZodOptional<z.ZodNumber>;
243
+ z: z.ZodOptional<z.ZodNumber>;
244
+ }, z.core.$strict>>;
245
+ visible: z.ZodOptional<z.ZodBoolean>;
246
+ color: z.ZodOptional<z.ZodString>;
247
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
248
+ fill: z.ZodOptional<z.ZodBoolean>;
249
+ backface: z.ZodOptional<z.ZodString>;
250
+ frontFace: z.ZodOptional<z.ZodString>;
251
+ updateSort: z.ZodOptional<z.ZodBoolean>;
252
+ path: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
253
+ x: z.ZodNumber;
254
+ y: z.ZodNumber;
255
+ z: z.ZodOptional<z.ZodNumber>;
256
+ }, z.core.$strict>, z.ZodObject<{
257
+ bezier: z.ZodTuple<[z.ZodObject<{
258
+ x: z.ZodNumber;
259
+ y: z.ZodNumber;
260
+ z: z.ZodOptional<z.ZodNumber>;
261
+ }, z.core.$strict>, z.ZodObject<{
262
+ x: z.ZodNumber;
263
+ y: z.ZodNumber;
264
+ z: z.ZodOptional<z.ZodNumber>;
265
+ }, z.core.$strict>, z.ZodObject<{
266
+ x: z.ZodNumber;
267
+ y: z.ZodNumber;
268
+ z: z.ZodOptional<z.ZodNumber>;
269
+ }, z.core.$strict>], null>;
270
+ }, z.core.$strict>]>>>;
271
+ closed: z.ZodOptional<z.ZodBoolean>;
272
+ }, z.core.$strict>;
273
+ id: z.ZodString;
274
+ parent: z.ZodOptional<z.ZodString>;
275
+ }, z.core.$strict>, z.ZodObject<{
276
+ kind: z.ZodLiteral<"ellipse">;
277
+ options: z.ZodObject<{
278
+ name: z.ZodOptional<z.ZodString>;
279
+ x: z.ZodOptional<z.ZodNumber>;
280
+ y: z.ZodOptional<z.ZodNumber>;
281
+ z: z.ZodOptional<z.ZodNumber>;
282
+ translate: z.ZodOptional<z.ZodObject<{
283
+ x: z.ZodOptional<z.ZodNumber>;
284
+ y: z.ZodOptional<z.ZodNumber>;
285
+ z: z.ZodOptional<z.ZodNumber>;
286
+ }, z.core.$strict>>;
287
+ rotate: z.ZodOptional<z.ZodObject<{
288
+ x: z.ZodOptional<z.ZodNumber>;
289
+ y: z.ZodOptional<z.ZodNumber>;
290
+ z: z.ZodOptional<z.ZodNumber>;
291
+ }, z.core.$strict>>;
292
+ scale: z.ZodOptional<z.ZodObject<{
293
+ x: z.ZodOptional<z.ZodNumber>;
294
+ y: z.ZodOptional<z.ZodNumber>;
295
+ z: z.ZodOptional<z.ZodNumber>;
296
+ }, z.core.$strict>>;
297
+ visible: z.ZodOptional<z.ZodBoolean>;
298
+ color: z.ZodOptional<z.ZodString>;
299
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
300
+ fill: z.ZodOptional<z.ZodBoolean>;
301
+ backface: z.ZodOptional<z.ZodString>;
302
+ frontFace: z.ZodOptional<z.ZodString>;
303
+ updateSort: z.ZodOptional<z.ZodBoolean>;
304
+ width: z.ZodNumber;
305
+ height: z.ZodNumber;
306
+ }, z.core.$strict>;
307
+ id: z.ZodString;
308
+ parent: z.ZodOptional<z.ZodString>;
309
+ }, z.core.$strict>, z.ZodObject<{
310
+ kind: z.ZodLiteral<"hemisphere">;
311
+ options: z.ZodObject<{
312
+ name: z.ZodOptional<z.ZodString>;
313
+ x: z.ZodOptional<z.ZodNumber>;
314
+ y: z.ZodOptional<z.ZodNumber>;
315
+ z: z.ZodOptional<z.ZodNumber>;
316
+ translate: z.ZodOptional<z.ZodObject<{
317
+ x: z.ZodOptional<z.ZodNumber>;
318
+ y: z.ZodOptional<z.ZodNumber>;
319
+ z: z.ZodOptional<z.ZodNumber>;
320
+ }, z.core.$strict>>;
321
+ rotate: z.ZodOptional<z.ZodObject<{
322
+ x: z.ZodOptional<z.ZodNumber>;
323
+ y: z.ZodOptional<z.ZodNumber>;
324
+ z: z.ZodOptional<z.ZodNumber>;
325
+ }, z.core.$strict>>;
326
+ scale: z.ZodOptional<z.ZodObject<{
327
+ x: z.ZodOptional<z.ZodNumber>;
328
+ y: z.ZodOptional<z.ZodNumber>;
329
+ z: z.ZodOptional<z.ZodNumber>;
330
+ }, z.core.$strict>>;
331
+ visible: z.ZodOptional<z.ZodBoolean>;
332
+ color: z.ZodOptional<z.ZodString>;
333
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
334
+ fill: z.ZodOptional<z.ZodBoolean>;
335
+ backface: z.ZodOptional<z.ZodString>;
336
+ frontFace: z.ZodOptional<z.ZodString>;
337
+ updateSort: z.ZodOptional<z.ZodBoolean>;
338
+ diameter: z.ZodNumber;
339
+ }, z.core.$strict>;
340
+ id: z.ZodString;
341
+ parent: z.ZodOptional<z.ZodString>;
342
+ }, z.core.$strict>, z.ZodObject<{
343
+ kind: z.ZodLiteral<"cylinder">;
344
+ options: z.ZodObject<{
345
+ name: z.ZodOptional<z.ZodString>;
346
+ x: z.ZodOptional<z.ZodNumber>;
347
+ y: z.ZodOptional<z.ZodNumber>;
348
+ z: z.ZodOptional<z.ZodNumber>;
349
+ translate: z.ZodOptional<z.ZodObject<{
350
+ x: z.ZodOptional<z.ZodNumber>;
351
+ y: z.ZodOptional<z.ZodNumber>;
352
+ z: z.ZodOptional<z.ZodNumber>;
353
+ }, z.core.$strict>>;
354
+ rotate: z.ZodOptional<z.ZodObject<{
355
+ x: z.ZodOptional<z.ZodNumber>;
356
+ y: z.ZodOptional<z.ZodNumber>;
357
+ z: z.ZodOptional<z.ZodNumber>;
358
+ }, z.core.$strict>>;
359
+ scale: z.ZodOptional<z.ZodObject<{
360
+ x: z.ZodOptional<z.ZodNumber>;
361
+ y: z.ZodOptional<z.ZodNumber>;
362
+ z: z.ZodOptional<z.ZodNumber>;
363
+ }, z.core.$strict>>;
364
+ visible: z.ZodOptional<z.ZodBoolean>;
365
+ color: z.ZodOptional<z.ZodString>;
366
+ stroke: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>>;
367
+ fill: z.ZodOptional<z.ZodBoolean>;
368
+ backface: z.ZodOptional<z.ZodString>;
369
+ frontFace: z.ZodOptional<z.ZodString>;
370
+ updateSort: z.ZodOptional<z.ZodBoolean>;
371
+ diameter: z.ZodNumber;
372
+ length: z.ZodNumber;
373
+ }, z.core.$strict>;
374
+ id: z.ZodString;
375
+ parent: z.ZodOptional<z.ZodString>;
376
+ }, z.core.$strict>], "kind">>;
377
+ palette: z.ZodRecord<z.ZodString, z.ZodString>;
378
+ variants: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>;
379
+ expressions: z.ZodRecord<z.ZodString, z.ZodObject<{
380
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
381
+ variantChoices: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
382
+ blush: z.ZodOptional<z.ZodNumber>;
383
+ motion: z.ZodOptional<z.ZodObject<{
384
+ target: z.ZodString;
385
+ translate: z.ZodOptional<z.ZodObject<{
386
+ x: z.ZodOptional<z.ZodNumber>;
387
+ y: z.ZodOptional<z.ZodNumber>;
388
+ z: z.ZodOptional<z.ZodNumber>;
389
+ }, z.core.$strict>>;
390
+ rotate: z.ZodOptional<z.ZodObject<{
391
+ x: z.ZodOptional<z.ZodNumber>;
392
+ y: z.ZodOptional<z.ZodNumber>;
393
+ z: z.ZodOptional<z.ZodNumber>;
394
+ }, z.core.$strict>>;
395
+ durationMs: z.ZodOptional<z.ZodNumber>;
396
+ repeat: z.ZodOptional<z.ZodEnum<{
397
+ none: "none";
398
+ loop: "loop";
399
+ yoyo: "yoyo";
400
+ }>>;
401
+ }, z.core.$strict>>;
402
+ }, z.core.$strict>>;
403
+ activities: z.ZodRecord<z.ZodString, z.ZodObject<{
404
+ motion: z.ZodOptional<z.ZodObject<{
405
+ target: z.ZodString;
406
+ translate: z.ZodOptional<z.ZodObject<{
407
+ x: z.ZodOptional<z.ZodNumber>;
408
+ y: z.ZodOptional<z.ZodNumber>;
409
+ z: z.ZodOptional<z.ZodNumber>;
410
+ }, z.core.$strict>>;
411
+ rotate: z.ZodOptional<z.ZodObject<{
412
+ x: z.ZodOptional<z.ZodNumber>;
413
+ y: z.ZodOptional<z.ZodNumber>;
414
+ z: z.ZodOptional<z.ZodNumber>;
415
+ }, z.core.$strict>>;
416
+ durationMs: z.ZodOptional<z.ZodNumber>;
417
+ repeat: z.ZodOptional<z.ZodEnum<{
418
+ none: "none";
419
+ loop: "loop";
420
+ yoyo: "yoyo";
421
+ }>>;
422
+ }, z.core.$strict>>;
423
+ mouseInfluence: z.ZodOptional<z.ZodNumber>;
424
+ geometry: z.ZodOptional<z.ZodObject<{
425
+ expression: z.ZodOptional<z.ZodString>;
426
+ eyes: z.ZodOptional<z.ZodString>;
427
+ mouth: z.ZodOptional<z.ZodString>;
428
+ blush: z.ZodOptional<z.ZodNumber>;
429
+ }, z.core.$strict>>;
430
+ mouthCycle: z.ZodOptional<z.ZodArray<z.ZodObject<{
431
+ durationMs: z.ZodNumber;
432
+ mouth: z.ZodEnum<{
433
+ base: "base";
434
+ open: "open";
435
+ }>;
436
+ }, z.core.$strict>>>;
437
+ }, z.core.$strict>>;
438
+ defaultPresentation: z.ZodObject<{
439
+ activity: z.ZodString;
440
+ expression: z.ZodString;
441
+ }, z.core.$strict>;
442
+ }, z.core.$strict>;
443
+ /** Validated portable native scene. */
444
+ export type ZdogDocument = z.infer<typeof zdogDocumentSchema>;