@mathscan/math-exercise-engine 1.0.10 → 1.0.12

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.
package/dist/index.d.ts CHANGED
@@ -39,6 +39,10 @@ export declare const AST_TYPES: {
39
39
  readonly NUMBER_LINE_BLOCK: "NumberLineBlock";
40
40
  /** A position marker on the number line */
41
41
  readonly NUMBER_LINE_POSITION: "NumberLinePosition";
42
+ /** A dynamic subdivision counter embedded in a number line */
43
+ readonly NUMBER_LINE_COUNTER: "NumberLineCounter";
44
+ /** A highlighted range on the number line axis */
45
+ readonly NUMBER_LINE_HIGHLIGHT: "NumberLineHighlight";
42
46
  /** Drag-and-drop options tool */
43
47
  readonly DRAG_OPTIONS: "DragOptions";
44
48
  /** Radio button options tool */
@@ -265,8 +269,23 @@ export declare function compileWithAST(dsl: string): {
265
269
  answer?: string | number | undefined;
266
270
  })[];
267
271
  }[];
272
+ counter?: {
273
+ type: "NumberLineCounter";
274
+ min: number;
275
+ max: number;
276
+ name?: string | undefined;
277
+ default?: number | undefined;
278
+ } | undefined;
268
279
  minorTicks?: number | undefined;
269
280
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
281
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
282
+ highlights?: {
283
+ type: "NumberLineHighlight";
284
+ from: number;
285
+ to: number;
286
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
287
+ label?: string | undefined;
288
+ }[] | undefined;
270
289
  } | {
271
290
  type: "TableBlock";
272
291
  cols: number;
@@ -879,6 +898,69 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
879
898
  step: z.ZodDefault<z.ZodNumber>;
880
899
  minorTicks: z.ZodOptional<z.ZodNumber>;
881
900
  style: z.ZodOptional<z.ZodEnum<["arrow-right", "arrow-left", "arrow-both", "line"]>>;
901
+ labelVisibility: z.ZodOptional<z.ZodEnum<["all", "extremes", "min-only", "max-only", "none"]>>;
902
+ counter: z.ZodOptional<z.ZodEffects<z.ZodObject<{
903
+ type: z.ZodLiteral<"NumberLineCounter">;
904
+ min: z.ZodNumber;
905
+ max: z.ZodNumber;
906
+ default: z.ZodOptional<z.ZodNumber>;
907
+ name: z.ZodOptional<z.ZodString>;
908
+ }, "strip", z.ZodTypeAny, {
909
+ type: "NumberLineCounter";
910
+ min: number;
911
+ max: number;
912
+ name?: string | undefined;
913
+ default?: number | undefined;
914
+ }, {
915
+ type: "NumberLineCounter";
916
+ min: number;
917
+ max: number;
918
+ name?: string | undefined;
919
+ default?: number | undefined;
920
+ }>, {
921
+ type: "NumberLineCounter";
922
+ min: number;
923
+ max: number;
924
+ name?: string | undefined;
925
+ default?: number | undefined;
926
+ }, {
927
+ type: "NumberLineCounter";
928
+ min: number;
929
+ max: number;
930
+ name?: string | undefined;
931
+ default?: number | undefined;
932
+ }>>;
933
+ highlights: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
934
+ type: z.ZodLiteral<"NumberLineHighlight">;
935
+ from: z.ZodNumber;
936
+ to: z.ZodNumber;
937
+ color: z.ZodOptional<z.ZodEnum<["blue", "red", "green", "orange", "purple", "yellow"]>>;
938
+ label: z.ZodOptional<z.ZodString>;
939
+ }, "strip", z.ZodTypeAny, {
940
+ type: "NumberLineHighlight";
941
+ from: number;
942
+ to: number;
943
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
944
+ label?: string | undefined;
945
+ }, {
946
+ type: "NumberLineHighlight";
947
+ from: number;
948
+ to: number;
949
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
950
+ label?: string | undefined;
951
+ }>, {
952
+ type: "NumberLineHighlight";
953
+ from: number;
954
+ to: number;
955
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
956
+ label?: string | undefined;
957
+ }, {
958
+ type: "NumberLineHighlight";
959
+ from: number;
960
+ to: number;
961
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
962
+ label?: string | undefined;
963
+ }>, "many">>;
882
964
  positions: z.ZodArray<z.ZodObject<{
883
965
  type: z.ZodLiteral<"NumberLinePosition">;
884
966
  value: z.ZodNumber;
@@ -1082,8 +1164,23 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
1082
1164
  answer?: string | number | undefined;
1083
1165
  })[];
1084
1166
  }[];
1167
+ counter?: {
1168
+ type: "NumberLineCounter";
1169
+ min: number;
1170
+ max: number;
1171
+ name?: string | undefined;
1172
+ default?: number | undefined;
1173
+ } | undefined;
1085
1174
  minorTicks?: number | undefined;
1086
1175
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
1176
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
1177
+ highlights?: {
1178
+ type: "NumberLineHighlight";
1179
+ from: number;
1180
+ to: number;
1181
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
1182
+ label?: string | undefined;
1183
+ }[] | undefined;
1087
1184
  }, {
1088
1185
  type: "NumberLineBlock";
1089
1186
  min: number;
@@ -1123,9 +1220,24 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
1123
1220
  answer?: string | number | undefined;
1124
1221
  })[];
1125
1222
  }[];
1223
+ counter?: {
1224
+ type: "NumberLineCounter";
1225
+ min: number;
1226
+ max: number;
1227
+ name?: string | undefined;
1228
+ default?: number | undefined;
1229
+ } | undefined;
1126
1230
  step?: number | undefined;
1127
1231
  minorTicks?: number | undefined;
1128
1232
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
1233
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
1234
+ highlights?: {
1235
+ type: "NumberLineHighlight";
1236
+ from: number;
1237
+ to: number;
1238
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
1239
+ label?: string | undefined;
1240
+ }[] | undefined;
1129
1241
  }>, {
1130
1242
  type: "NumberLineBlock";
1131
1243
  min: number;
@@ -1166,8 +1278,23 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
1166
1278
  answer?: string | number | undefined;
1167
1279
  })[];
1168
1280
  }[];
1281
+ counter?: {
1282
+ type: "NumberLineCounter";
1283
+ min: number;
1284
+ max: number;
1285
+ name?: string | undefined;
1286
+ default?: number | undefined;
1287
+ } | undefined;
1169
1288
  minorTicks?: number | undefined;
1170
1289
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
1290
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
1291
+ highlights?: {
1292
+ type: "NumberLineHighlight";
1293
+ from: number;
1294
+ to: number;
1295
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
1296
+ label?: string | undefined;
1297
+ }[] | undefined;
1171
1298
  }, {
1172
1299
  type: "NumberLineBlock";
1173
1300
  min: number;
@@ -1207,9 +1334,24 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
1207
1334
  answer?: string | number | undefined;
1208
1335
  })[];
1209
1336
  }[];
1337
+ counter?: {
1338
+ type: "NumberLineCounter";
1339
+ min: number;
1340
+ max: number;
1341
+ name?: string | undefined;
1342
+ default?: number | undefined;
1343
+ } | undefined;
1210
1344
  step?: number | undefined;
1211
1345
  minorTicks?: number | undefined;
1212
1346
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
1347
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
1348
+ highlights?: {
1349
+ type: "NumberLineHighlight";
1350
+ from: number;
1351
+ to: number;
1352
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
1353
+ label?: string | undefined;
1354
+ }[] | undefined;
1213
1355
  }>, {
1214
1356
  type: "NumberLineBlock";
1215
1357
  min: number;
@@ -1250,8 +1392,23 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
1250
1392
  answer?: string | number | undefined;
1251
1393
  })[];
1252
1394
  }[];
1395
+ counter?: {
1396
+ type: "NumberLineCounter";
1397
+ min: number;
1398
+ max: number;
1399
+ name?: string | undefined;
1400
+ default?: number | undefined;
1401
+ } | undefined;
1253
1402
  minorTicks?: number | undefined;
1254
1403
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
1404
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
1405
+ highlights?: {
1406
+ type: "NumberLineHighlight";
1407
+ from: number;
1408
+ to: number;
1409
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
1410
+ label?: string | undefined;
1411
+ }[] | undefined;
1255
1412
  }, {
1256
1413
  type: "NumberLineBlock";
1257
1414
  min: number;
@@ -1291,9 +1448,24 @@ export declare const ContentBlockSchema: z.ZodUnion<[z.ZodObject<{
1291
1448
  answer?: string | number | undefined;
1292
1449
  })[];
1293
1450
  }[];
1451
+ counter?: {
1452
+ type: "NumberLineCounter";
1453
+ min: number;
1454
+ max: number;
1455
+ name?: string | undefined;
1456
+ default?: number | undefined;
1457
+ } | undefined;
1294
1458
  step?: number | undefined;
1295
1459
  minorTicks?: number | undefined;
1296
1460
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
1461
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
1462
+ highlights?: {
1463
+ type: "NumberLineHighlight";
1464
+ from: number;
1465
+ to: number;
1466
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
1467
+ label?: string | undefined;
1468
+ }[] | undefined;
1297
1469
  }>]>;
1298
1470
 
1299
1471
  /**
@@ -1977,6 +2149,69 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
1977
2149
  step: z.ZodDefault<z.ZodNumber>;
1978
2150
  minorTicks: z.ZodOptional<z.ZodNumber>;
1979
2151
  style: z.ZodOptional<z.ZodEnum<["arrow-right", "arrow-left", "arrow-both", "line"]>>;
2152
+ labelVisibility: z.ZodOptional<z.ZodEnum<["all", "extremes", "min-only", "max-only", "none"]>>;
2153
+ counter: z.ZodOptional<z.ZodEffects<z.ZodObject<{
2154
+ type: z.ZodLiteral<"NumberLineCounter">;
2155
+ min: z.ZodNumber;
2156
+ max: z.ZodNumber;
2157
+ default: z.ZodOptional<z.ZodNumber>;
2158
+ name: z.ZodOptional<z.ZodString>;
2159
+ }, "strip", z.ZodTypeAny, {
2160
+ type: "NumberLineCounter";
2161
+ min: number;
2162
+ max: number;
2163
+ name?: string | undefined;
2164
+ default?: number | undefined;
2165
+ }, {
2166
+ type: "NumberLineCounter";
2167
+ min: number;
2168
+ max: number;
2169
+ name?: string | undefined;
2170
+ default?: number | undefined;
2171
+ }>, {
2172
+ type: "NumberLineCounter";
2173
+ min: number;
2174
+ max: number;
2175
+ name?: string | undefined;
2176
+ default?: number | undefined;
2177
+ }, {
2178
+ type: "NumberLineCounter";
2179
+ min: number;
2180
+ max: number;
2181
+ name?: string | undefined;
2182
+ default?: number | undefined;
2183
+ }>>;
2184
+ highlights: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
2185
+ type: z.ZodLiteral<"NumberLineHighlight">;
2186
+ from: z.ZodNumber;
2187
+ to: z.ZodNumber;
2188
+ color: z.ZodOptional<z.ZodEnum<["blue", "red", "green", "orange", "purple", "yellow"]>>;
2189
+ label: z.ZodOptional<z.ZodString>;
2190
+ }, "strip", z.ZodTypeAny, {
2191
+ type: "NumberLineHighlight";
2192
+ from: number;
2193
+ to: number;
2194
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2195
+ label?: string | undefined;
2196
+ }, {
2197
+ type: "NumberLineHighlight";
2198
+ from: number;
2199
+ to: number;
2200
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2201
+ label?: string | undefined;
2202
+ }>, {
2203
+ type: "NumberLineHighlight";
2204
+ from: number;
2205
+ to: number;
2206
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2207
+ label?: string | undefined;
2208
+ }, {
2209
+ type: "NumberLineHighlight";
2210
+ from: number;
2211
+ to: number;
2212
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2213
+ label?: string | undefined;
2214
+ }>, "many">>;
1980
2215
  positions: z.ZodArray<z.ZodObject<{
1981
2216
  type: z.ZodLiteral<"NumberLinePosition">;
1982
2217
  value: z.ZodNumber;
@@ -2180,8 +2415,23 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2180
2415
  answer?: string | number | undefined;
2181
2416
  })[];
2182
2417
  }[];
2418
+ counter?: {
2419
+ type: "NumberLineCounter";
2420
+ min: number;
2421
+ max: number;
2422
+ name?: string | undefined;
2423
+ default?: number | undefined;
2424
+ } | undefined;
2183
2425
  minorTicks?: number | undefined;
2184
2426
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2427
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2428
+ highlights?: {
2429
+ type: "NumberLineHighlight";
2430
+ from: number;
2431
+ to: number;
2432
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2433
+ label?: string | undefined;
2434
+ }[] | undefined;
2185
2435
  }, {
2186
2436
  type: "NumberLineBlock";
2187
2437
  min: number;
@@ -2221,9 +2471,24 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2221
2471
  answer?: string | number | undefined;
2222
2472
  })[];
2223
2473
  }[];
2474
+ counter?: {
2475
+ type: "NumberLineCounter";
2476
+ min: number;
2477
+ max: number;
2478
+ name?: string | undefined;
2479
+ default?: number | undefined;
2480
+ } | undefined;
2224
2481
  step?: number | undefined;
2225
2482
  minorTicks?: number | undefined;
2226
2483
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2484
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2485
+ highlights?: {
2486
+ type: "NumberLineHighlight";
2487
+ from: number;
2488
+ to: number;
2489
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2490
+ label?: string | undefined;
2491
+ }[] | undefined;
2227
2492
  }>, {
2228
2493
  type: "NumberLineBlock";
2229
2494
  min: number;
@@ -2264,8 +2529,23 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2264
2529
  answer?: string | number | undefined;
2265
2530
  })[];
2266
2531
  }[];
2532
+ counter?: {
2533
+ type: "NumberLineCounter";
2534
+ min: number;
2535
+ max: number;
2536
+ name?: string | undefined;
2537
+ default?: number | undefined;
2538
+ } | undefined;
2267
2539
  minorTicks?: number | undefined;
2268
2540
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2541
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2542
+ highlights?: {
2543
+ type: "NumberLineHighlight";
2544
+ from: number;
2545
+ to: number;
2546
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2547
+ label?: string | undefined;
2548
+ }[] | undefined;
2269
2549
  }, {
2270
2550
  type: "NumberLineBlock";
2271
2551
  min: number;
@@ -2305,9 +2585,24 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2305
2585
  answer?: string | number | undefined;
2306
2586
  })[];
2307
2587
  }[];
2588
+ counter?: {
2589
+ type: "NumberLineCounter";
2590
+ min: number;
2591
+ max: number;
2592
+ name?: string | undefined;
2593
+ default?: number | undefined;
2594
+ } | undefined;
2308
2595
  step?: number | undefined;
2309
2596
  minorTicks?: number | undefined;
2310
2597
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2598
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2599
+ highlights?: {
2600
+ type: "NumberLineHighlight";
2601
+ from: number;
2602
+ to: number;
2603
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2604
+ label?: string | undefined;
2605
+ }[] | undefined;
2311
2606
  }>, {
2312
2607
  type: "NumberLineBlock";
2313
2608
  min: number;
@@ -2348,8 +2643,23 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2348
2643
  answer?: string | number | undefined;
2349
2644
  })[];
2350
2645
  }[];
2646
+ counter?: {
2647
+ type: "NumberLineCounter";
2648
+ min: number;
2649
+ max: number;
2650
+ name?: string | undefined;
2651
+ default?: number | undefined;
2652
+ } | undefined;
2351
2653
  minorTicks?: number | undefined;
2352
2654
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2655
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2656
+ highlights?: {
2657
+ type: "NumberLineHighlight";
2658
+ from: number;
2659
+ to: number;
2660
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2661
+ label?: string | undefined;
2662
+ }[] | undefined;
2353
2663
  }, {
2354
2664
  type: "NumberLineBlock";
2355
2665
  min: number;
@@ -2389,9 +2699,24 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2389
2699
  answer?: string | number | undefined;
2390
2700
  })[];
2391
2701
  }[];
2702
+ counter?: {
2703
+ type: "NumberLineCounter";
2704
+ min: number;
2705
+ max: number;
2706
+ name?: string | undefined;
2707
+ default?: number | undefined;
2708
+ } | undefined;
2392
2709
  step?: number | undefined;
2393
2710
  minorTicks?: number | undefined;
2394
2711
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2712
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2713
+ highlights?: {
2714
+ type: "NumberLineHighlight";
2715
+ from: number;
2716
+ to: number;
2717
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2718
+ label?: string | undefined;
2719
+ }[] | undefined;
2395
2720
  }>]>, "many">;
2396
2721
  tools: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2397
2722
  type: z.ZodLiteral<"DragOptions">;
@@ -2506,8 +2831,23 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2506
2831
  answer?: string | number | undefined;
2507
2832
  })[];
2508
2833
  }[];
2834
+ counter?: {
2835
+ type: "NumberLineCounter";
2836
+ min: number;
2837
+ max: number;
2838
+ name?: string | undefined;
2839
+ default?: number | undefined;
2840
+ } | undefined;
2509
2841
  minorTicks?: number | undefined;
2510
2842
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
2843
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
2844
+ highlights?: {
2845
+ type: "NumberLineHighlight";
2846
+ from: number;
2847
+ to: number;
2848
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
2849
+ label?: string | undefined;
2850
+ }[] | undefined;
2511
2851
  } | {
2512
2852
  type: "TableBlock";
2513
2853
  cols: number;
@@ -2647,9 +2987,24 @@ export declare const ExerciseDocumentSchema: z.ZodObject<{
2647
2987
  answer?: string | number | undefined;
2648
2988
  })[];
2649
2989
  }[];
2990
+ counter?: {
2991
+ type: "NumberLineCounter";
2992
+ min: number;
2993
+ max: number;
2994
+ name?: string | undefined;
2995
+ default?: number | undefined;
2996
+ } | undefined;
2650
2997
  step?: number | undefined;
2651
2998
  minorTicks?: number | undefined;
2652
2999
  style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
3000
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
3001
+ highlights?: {
3002
+ type: "NumberLineHighlight";
3003
+ from: number;
3004
+ to: number;
3005
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
3006
+ label?: string | undefined;
3007
+ }[] | undefined;
2653
3008
  } | {
2654
3009
  type: "TableBlock";
2655
3010
  cols: number;
@@ -3287,9 +3642,7 @@ export declare function isFreeText(value: unknown): value is FreeTextInline;
3287
3642
  /**
3288
3643
  * Type guard for GroupItem
3289
3644
  */
3290
- export declare function isGroupItem(item: LayoutItem): item is Extract<LayoutItem, {
3291
- type: 'group';
3292
- }>;
3645
+ export declare function isGroupItem(item: LayoutItem): item is GroupItem;
3293
3646
 
3294
3647
  /**
3295
3648
  * Type guard for HighlightedText
@@ -3444,6 +3797,10 @@ export declare const JSON_TYPES: {
3444
3797
  readonly NUMBER_LINE: "number-line";
3445
3798
  /** Position marker within a number line */
3446
3799
  readonly NUMBER_LINE_POSITION: "number-line-position";
3800
+ /** Dynamic subdivision counter embedded in a number line */
3801
+ readonly NUMBER_LINE_COUNTER: "number-line-counter";
3802
+ /** Highlighted range within a number line */
3803
+ readonly NUMBER_LINE_HIGHLIGHT: "number-line-highlight";
3447
3804
  /** Inline input widget (string or numeric) */
3448
3805
  readonly INLINE_INPUT: "inline-input";
3449
3806
  /** Drag-and-drop options widget */
@@ -3678,6 +4035,1060 @@ export declare const LinebreakSchema: z.ZodObject<{
3678
4035
  id: string;
3679
4036
  }>;
3680
4037
 
4038
+ export declare type NumberLineBlock = z.infer<typeof NumberLineBlockSchema>;
4039
+
4040
+ /**
4041
+ * Number line block schema — the root node for a number line exercise element.
4042
+ *
4043
+ * @example
4044
+ * {
4045
+ * type: "NumberLineBlock",
4046
+ * min: 0, max: 100, step: 10, minorTicks: 0, style: "arrow-right",
4047
+ * positions: [
4048
+ * { type: "NumberLinePosition", value: 20, inlines: [...] }
4049
+ * ]
4050
+ * }
4051
+ */
4052
+ declare const NumberLineBlockSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
4053
+ type: z.ZodLiteral<"NumberLineBlock">;
4054
+ min: z.ZodNumber;
4055
+ max: z.ZodNumber;
4056
+ step: z.ZodDefault<z.ZodNumber>;
4057
+ minorTicks: z.ZodOptional<z.ZodNumber>;
4058
+ style: z.ZodOptional<z.ZodEnum<["arrow-right", "arrow-left", "arrow-both", "line"]>>;
4059
+ labelVisibility: z.ZodOptional<z.ZodEnum<["all", "extremes", "min-only", "max-only", "none"]>>;
4060
+ counter: z.ZodOptional<z.ZodEffects<z.ZodObject<{
4061
+ type: z.ZodLiteral<"NumberLineCounter">;
4062
+ min: z.ZodNumber;
4063
+ max: z.ZodNumber;
4064
+ default: z.ZodOptional<z.ZodNumber>;
4065
+ name: z.ZodOptional<z.ZodString>;
4066
+ }, "strip", z.ZodTypeAny, {
4067
+ type: "NumberLineCounter";
4068
+ min: number;
4069
+ max: number;
4070
+ name?: string | undefined;
4071
+ default?: number | undefined;
4072
+ }, {
4073
+ type: "NumberLineCounter";
4074
+ min: number;
4075
+ max: number;
4076
+ name?: string | undefined;
4077
+ default?: number | undefined;
4078
+ }>, {
4079
+ type: "NumberLineCounter";
4080
+ min: number;
4081
+ max: number;
4082
+ name?: string | undefined;
4083
+ default?: number | undefined;
4084
+ }, {
4085
+ type: "NumberLineCounter";
4086
+ min: number;
4087
+ max: number;
4088
+ name?: string | undefined;
4089
+ default?: number | undefined;
4090
+ }>>;
4091
+ highlights: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
4092
+ type: z.ZodLiteral<"NumberLineHighlight">;
4093
+ from: z.ZodNumber;
4094
+ to: z.ZodNumber;
4095
+ color: z.ZodOptional<z.ZodEnum<["blue", "red", "green", "orange", "purple", "yellow"]>>;
4096
+ label: z.ZodOptional<z.ZodString>;
4097
+ }, "strip", z.ZodTypeAny, {
4098
+ type: "NumberLineHighlight";
4099
+ from: number;
4100
+ to: number;
4101
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4102
+ label?: string | undefined;
4103
+ }, {
4104
+ type: "NumberLineHighlight";
4105
+ from: number;
4106
+ to: number;
4107
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4108
+ label?: string | undefined;
4109
+ }>, {
4110
+ type: "NumberLineHighlight";
4111
+ from: number;
4112
+ to: number;
4113
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4114
+ label?: string | undefined;
4115
+ }, {
4116
+ type: "NumberLineHighlight";
4117
+ from: number;
4118
+ to: number;
4119
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4120
+ label?: string | undefined;
4121
+ }>, "many">>;
4122
+ positions: z.ZodArray<z.ZodObject<{
4123
+ type: z.ZodLiteral<"NumberLinePosition">;
4124
+ value: z.ZodNumber;
4125
+ inlines: z.ZodArray<z.ZodUnion<[z.ZodObject<{
4126
+ type: z.ZodLiteral<"FreeText">;
4127
+ value: z.ZodString;
4128
+ }, "strip", z.ZodTypeAny, {
4129
+ value: string;
4130
+ type: "FreeText";
4131
+ }, {
4132
+ value: string;
4133
+ type: "FreeText";
4134
+ }>, z.ZodObject<{
4135
+ type: z.ZodLiteral<"Space">;
4136
+ }, "strip", z.ZodTypeAny, {
4137
+ type: "Space";
4138
+ }, {
4139
+ type: "Space";
4140
+ }>, z.ZodObject<{
4141
+ type: z.ZodLiteral<"HighlightedText">;
4142
+ value: z.ZodString;
4143
+ highlight: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4144
+ }, "strip", z.ZodTypeAny, {
4145
+ value: string;
4146
+ type: "HighlightedText";
4147
+ highlight?: [number, number] | undefined;
4148
+ }, {
4149
+ value: string;
4150
+ type: "HighlightedText";
4151
+ highlight?: [number, number] | undefined;
4152
+ }>, z.ZodObject<{
4153
+ type: z.ZodLiteral<"ColorText">;
4154
+ value: z.ZodString;
4155
+ color: z.ZodString;
4156
+ highlight: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4157
+ }, "strip", z.ZodTypeAny, {
4158
+ value: string;
4159
+ type: "ColorText";
4160
+ color: string;
4161
+ highlight?: [number, number] | undefined;
4162
+ }, {
4163
+ value: string;
4164
+ type: "ColorText";
4165
+ color: string;
4166
+ highlight?: [number, number] | undefined;
4167
+ }>, z.ZodObject<{
4168
+ type: z.ZodLiteral<"BoldText">;
4169
+ value: z.ZodString;
4170
+ highlight: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4171
+ }, "strip", z.ZodTypeAny, {
4172
+ value: string;
4173
+ type: "BoldText";
4174
+ highlight?: [number, number] | undefined;
4175
+ }, {
4176
+ value: string;
4177
+ type: "BoldText";
4178
+ highlight?: [number, number] | undefined;
4179
+ }>, z.ZodDiscriminatedUnion<"inputType", [z.ZodObject<{
4180
+ type: z.ZodLiteral<"InlineInput">;
4181
+ name: z.ZodString;
4182
+ inputType: z.ZodLiteral<"string">;
4183
+ length: z.ZodNumber;
4184
+ answer: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
4185
+ }, "strip", z.ZodTypeAny, {
4186
+ length: number;
4187
+ type: "InlineInput";
4188
+ inputType: "string";
4189
+ name: string;
4190
+ answer?: string | number | undefined;
4191
+ }, {
4192
+ length: number;
4193
+ type: "InlineInput";
4194
+ inputType: "string";
4195
+ name: string;
4196
+ answer?: string | number | undefined;
4197
+ }>, z.ZodObject<{
4198
+ type: z.ZodLiteral<"InlineInput">;
4199
+ name: z.ZodString;
4200
+ inputType: z.ZodLiteral<"numeric">;
4201
+ digits: z.ZodNumber;
4202
+ answer: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
4203
+ }, "strip", z.ZodTypeAny, {
4204
+ type: "InlineInput";
4205
+ inputType: "numeric";
4206
+ name: string;
4207
+ digits: number;
4208
+ answer?: string | number | undefined;
4209
+ }, {
4210
+ type: "InlineInput";
4211
+ inputType: "numeric";
4212
+ name: string;
4213
+ digits: number;
4214
+ answer?: string | number | undefined;
4215
+ }>]>]>, "many">;
4216
+ }, "strip", z.ZodTypeAny, {
4217
+ value: number;
4218
+ type: "NumberLinePosition";
4219
+ inlines: ({
4220
+ value: string;
4221
+ type: "FreeText";
4222
+ } | {
4223
+ type: "Space";
4224
+ } | {
4225
+ value: string;
4226
+ type: "HighlightedText";
4227
+ highlight?: [number, number] | undefined;
4228
+ } | {
4229
+ value: string;
4230
+ type: "ColorText";
4231
+ color: string;
4232
+ highlight?: [number, number] | undefined;
4233
+ } | {
4234
+ value: string;
4235
+ type: "BoldText";
4236
+ highlight?: [number, number] | undefined;
4237
+ } | {
4238
+ length: number;
4239
+ type: "InlineInput";
4240
+ inputType: "string";
4241
+ name: string;
4242
+ answer?: string | number | undefined;
4243
+ } | {
4244
+ type: "InlineInput";
4245
+ inputType: "numeric";
4246
+ name: string;
4247
+ digits: number;
4248
+ answer?: string | number | undefined;
4249
+ })[];
4250
+ }, {
4251
+ value: number;
4252
+ type: "NumberLinePosition";
4253
+ inlines: ({
4254
+ value: string;
4255
+ type: "FreeText";
4256
+ } | {
4257
+ type: "Space";
4258
+ } | {
4259
+ value: string;
4260
+ type: "HighlightedText";
4261
+ highlight?: [number, number] | undefined;
4262
+ } | {
4263
+ value: string;
4264
+ type: "ColorText";
4265
+ color: string;
4266
+ highlight?: [number, number] | undefined;
4267
+ } | {
4268
+ value: string;
4269
+ type: "BoldText";
4270
+ highlight?: [number, number] | undefined;
4271
+ } | {
4272
+ length: number;
4273
+ type: "InlineInput";
4274
+ inputType: "string";
4275
+ name: string;
4276
+ answer?: string | number | undefined;
4277
+ } | {
4278
+ type: "InlineInput";
4279
+ inputType: "numeric";
4280
+ name: string;
4281
+ digits: number;
4282
+ answer?: string | number | undefined;
4283
+ })[];
4284
+ }>, "many">;
4285
+ }, "strip", z.ZodTypeAny, {
4286
+ type: "NumberLineBlock";
4287
+ min: number;
4288
+ max: number;
4289
+ step: number;
4290
+ positions: {
4291
+ value: number;
4292
+ type: "NumberLinePosition";
4293
+ inlines: ({
4294
+ value: string;
4295
+ type: "FreeText";
4296
+ } | {
4297
+ type: "Space";
4298
+ } | {
4299
+ value: string;
4300
+ type: "HighlightedText";
4301
+ highlight?: [number, number] | undefined;
4302
+ } | {
4303
+ value: string;
4304
+ type: "ColorText";
4305
+ color: string;
4306
+ highlight?: [number, number] | undefined;
4307
+ } | {
4308
+ value: string;
4309
+ type: "BoldText";
4310
+ highlight?: [number, number] | undefined;
4311
+ } | {
4312
+ length: number;
4313
+ type: "InlineInput";
4314
+ inputType: "string";
4315
+ name: string;
4316
+ answer?: string | number | undefined;
4317
+ } | {
4318
+ type: "InlineInput";
4319
+ inputType: "numeric";
4320
+ name: string;
4321
+ digits: number;
4322
+ answer?: string | number | undefined;
4323
+ })[];
4324
+ }[];
4325
+ counter?: {
4326
+ type: "NumberLineCounter";
4327
+ min: number;
4328
+ max: number;
4329
+ name?: string | undefined;
4330
+ default?: number | undefined;
4331
+ } | undefined;
4332
+ minorTicks?: number | undefined;
4333
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4334
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4335
+ highlights?: {
4336
+ type: "NumberLineHighlight";
4337
+ from: number;
4338
+ to: number;
4339
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4340
+ label?: string | undefined;
4341
+ }[] | undefined;
4342
+ }, {
4343
+ type: "NumberLineBlock";
4344
+ min: number;
4345
+ max: number;
4346
+ positions: {
4347
+ value: number;
4348
+ type: "NumberLinePosition";
4349
+ inlines: ({
4350
+ value: string;
4351
+ type: "FreeText";
4352
+ } | {
4353
+ type: "Space";
4354
+ } | {
4355
+ value: string;
4356
+ type: "HighlightedText";
4357
+ highlight?: [number, number] | undefined;
4358
+ } | {
4359
+ value: string;
4360
+ type: "ColorText";
4361
+ color: string;
4362
+ highlight?: [number, number] | undefined;
4363
+ } | {
4364
+ value: string;
4365
+ type: "BoldText";
4366
+ highlight?: [number, number] | undefined;
4367
+ } | {
4368
+ length: number;
4369
+ type: "InlineInput";
4370
+ inputType: "string";
4371
+ name: string;
4372
+ answer?: string | number | undefined;
4373
+ } | {
4374
+ type: "InlineInput";
4375
+ inputType: "numeric";
4376
+ name: string;
4377
+ digits: number;
4378
+ answer?: string | number | undefined;
4379
+ })[];
4380
+ }[];
4381
+ counter?: {
4382
+ type: "NumberLineCounter";
4383
+ min: number;
4384
+ max: number;
4385
+ name?: string | undefined;
4386
+ default?: number | undefined;
4387
+ } | undefined;
4388
+ step?: number | undefined;
4389
+ minorTicks?: number | undefined;
4390
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4391
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4392
+ highlights?: {
4393
+ type: "NumberLineHighlight";
4394
+ from: number;
4395
+ to: number;
4396
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4397
+ label?: string | undefined;
4398
+ }[] | undefined;
4399
+ }>, {
4400
+ type: "NumberLineBlock";
4401
+ min: number;
4402
+ max: number;
4403
+ step: number;
4404
+ positions: {
4405
+ value: number;
4406
+ type: "NumberLinePosition";
4407
+ inlines: ({
4408
+ value: string;
4409
+ type: "FreeText";
4410
+ } | {
4411
+ type: "Space";
4412
+ } | {
4413
+ value: string;
4414
+ type: "HighlightedText";
4415
+ highlight?: [number, number] | undefined;
4416
+ } | {
4417
+ value: string;
4418
+ type: "ColorText";
4419
+ color: string;
4420
+ highlight?: [number, number] | undefined;
4421
+ } | {
4422
+ value: string;
4423
+ type: "BoldText";
4424
+ highlight?: [number, number] | undefined;
4425
+ } | {
4426
+ length: number;
4427
+ type: "InlineInput";
4428
+ inputType: "string";
4429
+ name: string;
4430
+ answer?: string | number | undefined;
4431
+ } | {
4432
+ type: "InlineInput";
4433
+ inputType: "numeric";
4434
+ name: string;
4435
+ digits: number;
4436
+ answer?: string | number | undefined;
4437
+ })[];
4438
+ }[];
4439
+ counter?: {
4440
+ type: "NumberLineCounter";
4441
+ min: number;
4442
+ max: number;
4443
+ name?: string | undefined;
4444
+ default?: number | undefined;
4445
+ } | undefined;
4446
+ minorTicks?: number | undefined;
4447
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4448
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4449
+ highlights?: {
4450
+ type: "NumberLineHighlight";
4451
+ from: number;
4452
+ to: number;
4453
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4454
+ label?: string | undefined;
4455
+ }[] | undefined;
4456
+ }, {
4457
+ type: "NumberLineBlock";
4458
+ min: number;
4459
+ max: number;
4460
+ positions: {
4461
+ value: number;
4462
+ type: "NumberLinePosition";
4463
+ inlines: ({
4464
+ value: string;
4465
+ type: "FreeText";
4466
+ } | {
4467
+ type: "Space";
4468
+ } | {
4469
+ value: string;
4470
+ type: "HighlightedText";
4471
+ highlight?: [number, number] | undefined;
4472
+ } | {
4473
+ value: string;
4474
+ type: "ColorText";
4475
+ color: string;
4476
+ highlight?: [number, number] | undefined;
4477
+ } | {
4478
+ value: string;
4479
+ type: "BoldText";
4480
+ highlight?: [number, number] | undefined;
4481
+ } | {
4482
+ length: number;
4483
+ type: "InlineInput";
4484
+ inputType: "string";
4485
+ name: string;
4486
+ answer?: string | number | undefined;
4487
+ } | {
4488
+ type: "InlineInput";
4489
+ inputType: "numeric";
4490
+ name: string;
4491
+ digits: number;
4492
+ answer?: string | number | undefined;
4493
+ })[];
4494
+ }[];
4495
+ counter?: {
4496
+ type: "NumberLineCounter";
4497
+ min: number;
4498
+ max: number;
4499
+ name?: string | undefined;
4500
+ default?: number | undefined;
4501
+ } | undefined;
4502
+ step?: number | undefined;
4503
+ minorTicks?: number | undefined;
4504
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4505
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4506
+ highlights?: {
4507
+ type: "NumberLineHighlight";
4508
+ from: number;
4509
+ to: number;
4510
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4511
+ label?: string | undefined;
4512
+ }[] | undefined;
4513
+ }>, {
4514
+ type: "NumberLineBlock";
4515
+ min: number;
4516
+ max: number;
4517
+ step: number;
4518
+ positions: {
4519
+ value: number;
4520
+ type: "NumberLinePosition";
4521
+ inlines: ({
4522
+ value: string;
4523
+ type: "FreeText";
4524
+ } | {
4525
+ type: "Space";
4526
+ } | {
4527
+ value: string;
4528
+ type: "HighlightedText";
4529
+ highlight?: [number, number] | undefined;
4530
+ } | {
4531
+ value: string;
4532
+ type: "ColorText";
4533
+ color: string;
4534
+ highlight?: [number, number] | undefined;
4535
+ } | {
4536
+ value: string;
4537
+ type: "BoldText";
4538
+ highlight?: [number, number] | undefined;
4539
+ } | {
4540
+ length: number;
4541
+ type: "InlineInput";
4542
+ inputType: "string";
4543
+ name: string;
4544
+ answer?: string | number | undefined;
4545
+ } | {
4546
+ type: "InlineInput";
4547
+ inputType: "numeric";
4548
+ name: string;
4549
+ digits: number;
4550
+ answer?: string | number | undefined;
4551
+ })[];
4552
+ }[];
4553
+ counter?: {
4554
+ type: "NumberLineCounter";
4555
+ min: number;
4556
+ max: number;
4557
+ name?: string | undefined;
4558
+ default?: number | undefined;
4559
+ } | undefined;
4560
+ minorTicks?: number | undefined;
4561
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4562
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4563
+ highlights?: {
4564
+ type: "NumberLineHighlight";
4565
+ from: number;
4566
+ to: number;
4567
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4568
+ label?: string | undefined;
4569
+ }[] | undefined;
4570
+ }, {
4571
+ type: "NumberLineBlock";
4572
+ min: number;
4573
+ max: number;
4574
+ positions: {
4575
+ value: number;
4576
+ type: "NumberLinePosition";
4577
+ inlines: ({
4578
+ value: string;
4579
+ type: "FreeText";
4580
+ } | {
4581
+ type: "Space";
4582
+ } | {
4583
+ value: string;
4584
+ type: "HighlightedText";
4585
+ highlight?: [number, number] | undefined;
4586
+ } | {
4587
+ value: string;
4588
+ type: "ColorText";
4589
+ color: string;
4590
+ highlight?: [number, number] | undefined;
4591
+ } | {
4592
+ value: string;
4593
+ type: "BoldText";
4594
+ highlight?: [number, number] | undefined;
4595
+ } | {
4596
+ length: number;
4597
+ type: "InlineInput";
4598
+ inputType: "string";
4599
+ name: string;
4600
+ answer?: string | number | undefined;
4601
+ } | {
4602
+ type: "InlineInput";
4603
+ inputType: "numeric";
4604
+ name: string;
4605
+ digits: number;
4606
+ answer?: string | number | undefined;
4607
+ })[];
4608
+ }[];
4609
+ counter?: {
4610
+ type: "NumberLineCounter";
4611
+ min: number;
4612
+ max: number;
4613
+ name?: string | undefined;
4614
+ default?: number | undefined;
4615
+ } | undefined;
4616
+ step?: number | undefined;
4617
+ minorTicks?: number | undefined;
4618
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4619
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4620
+ highlights?: {
4621
+ type: "NumberLineHighlight";
4622
+ from: number;
4623
+ to: number;
4624
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4625
+ label?: string | undefined;
4626
+ }[] | undefined;
4627
+ }>;
4628
+
4629
+ export declare type NumberLineCounter = z.infer<typeof NumberLineCounterSchema>;
4630
+
4631
+ export declare type NumberLineCounterItem = z.infer<typeof NumberLineCounterItemSchema>;
4632
+
4633
+ export declare const NumberLineCounterItemSchema: z.ZodObject<{
4634
+ id: z.ZodString;
4635
+ type: z.ZodLiteral<"number-line-counter">;
4636
+ min: z.ZodNumber;
4637
+ max: z.ZodNumber;
4638
+ default: z.ZodOptional<z.ZodNumber>;
4639
+ name: z.ZodOptional<z.ZodString>;
4640
+ }, "strip", z.ZodTypeAny, {
4641
+ type: "number-line-counter";
4642
+ min: number;
4643
+ max: number;
4644
+ id: string;
4645
+ name?: string | undefined;
4646
+ default?: number | undefined;
4647
+ }, {
4648
+ type: "number-line-counter";
4649
+ min: number;
4650
+ max: number;
4651
+ id: string;
4652
+ name?: string | undefined;
4653
+ default?: number | undefined;
4654
+ }>;
4655
+
4656
+ /**
4657
+ * Counter node — dynamic subdivision control embedded in a number line.
4658
+ * The number line step is recomputed as: (max - min) / counter_value.
4659
+ *
4660
+ * Invariant: min >= 1 (a subdivision of 0 is meaningless).
4661
+ * The `default` fallback lives only in createNumberLineCounter, not here,
4662
+ * to avoid Zod transform side-effects on the parsed shape.
4663
+ */
4664
+ declare const NumberLineCounterSchema: z.ZodEffects<z.ZodObject<{
4665
+ type: z.ZodLiteral<"NumberLineCounter">;
4666
+ min: z.ZodNumber;
4667
+ max: z.ZodNumber;
4668
+ default: z.ZodOptional<z.ZodNumber>;
4669
+ name: z.ZodOptional<z.ZodString>;
4670
+ }, "strip", z.ZodTypeAny, {
4671
+ type: "NumberLineCounter";
4672
+ min: number;
4673
+ max: number;
4674
+ name?: string | undefined;
4675
+ default?: number | undefined;
4676
+ }, {
4677
+ type: "NumberLineCounter";
4678
+ min: number;
4679
+ max: number;
4680
+ name?: string | undefined;
4681
+ default?: number | undefined;
4682
+ }>, {
4683
+ type: "NumberLineCounter";
4684
+ min: number;
4685
+ max: number;
4686
+ name?: string | undefined;
4687
+ default?: number | undefined;
4688
+ }, {
4689
+ type: "NumberLineCounter";
4690
+ min: number;
4691
+ max: number;
4692
+ name?: string | undefined;
4693
+ default?: number | undefined;
4694
+ }>;
4695
+
4696
+ export declare type NumberLineHighlight = z.infer<typeof NumberLineHighlightSchema>;
4697
+
4698
+ export declare type NumberLineHighlightItem = z.infer<typeof NumberLineHighlightItemSchema>;
4699
+
4700
+ export declare const NumberLineHighlightItemSchema: z.ZodObject<{
4701
+ id: z.ZodString;
4702
+ type: z.ZodLiteral<"number-line-highlight">;
4703
+ from: z.ZodNumber;
4704
+ to: z.ZodNumber;
4705
+ color: z.ZodOptional<z.ZodEnum<["blue", "red", "green", "orange", "purple", "yellow"]>>;
4706
+ label: z.ZodOptional<z.ZodString>;
4707
+ }, "strip", z.ZodTypeAny, {
4708
+ type: "number-line-highlight";
4709
+ from: number;
4710
+ to: number;
4711
+ id: string;
4712
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4713
+ label?: string | undefined;
4714
+ }, {
4715
+ type: "number-line-highlight";
4716
+ from: number;
4717
+ to: number;
4718
+ id: string;
4719
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4720
+ label?: string | undefined;
4721
+ }>;
4722
+
4723
+ /**
4724
+ * A highlighted range on the number line axis.
4725
+ *
4726
+ * `color` is constrained to the semantic set in NUMBER_LINE_HIGHLIGHT_COLORS
4727
+ * so renderers can safely map values to design tokens.
4728
+ */
4729
+ declare const NumberLineHighlightSchema: z.ZodEffects<z.ZodObject<{
4730
+ type: z.ZodLiteral<"NumberLineHighlight">;
4731
+ from: z.ZodNumber;
4732
+ to: z.ZodNumber;
4733
+ color: z.ZodOptional<z.ZodEnum<["blue", "red", "green", "orange", "purple", "yellow"]>>;
4734
+ label: z.ZodOptional<z.ZodString>;
4735
+ }, "strip", z.ZodTypeAny, {
4736
+ type: "NumberLineHighlight";
4737
+ from: number;
4738
+ to: number;
4739
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4740
+ label?: string | undefined;
4741
+ }, {
4742
+ type: "NumberLineHighlight";
4743
+ from: number;
4744
+ to: number;
4745
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4746
+ label?: string | undefined;
4747
+ }>, {
4748
+ type: "NumberLineHighlight";
4749
+ from: number;
4750
+ to: number;
4751
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4752
+ label?: string | undefined;
4753
+ }, {
4754
+ type: "NumberLineHighlight";
4755
+ from: number;
4756
+ to: number;
4757
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4758
+ label?: string | undefined;
4759
+ }>;
4760
+
4761
+ export declare type NumberLineItem = z.infer<typeof NumberLineItemSchema>;
4762
+
4763
+ export declare const NumberLineItemSchema: z.ZodObject<{
4764
+ id: z.ZodString;
4765
+ type: z.ZodLiteral<"number-line">;
4766
+ min: z.ZodNumber;
4767
+ max: z.ZodNumber;
4768
+ step: z.ZodNumber;
4769
+ minorTicks: z.ZodOptional<z.ZodNumber>;
4770
+ style: z.ZodOptional<z.ZodEnum<["arrow-right", "arrow-left", "arrow-both", "line"]>>;
4771
+ labelVisibility: z.ZodOptional<z.ZodEnum<["all", "extremes", "min-only", "max-only", "none"]>>;
4772
+ counter: z.ZodOptional<z.ZodObject<{
4773
+ id: z.ZodString;
4774
+ type: z.ZodLiteral<"number-line-counter">;
4775
+ min: z.ZodNumber;
4776
+ max: z.ZodNumber;
4777
+ default: z.ZodOptional<z.ZodNumber>;
4778
+ name: z.ZodOptional<z.ZodString>;
4779
+ }, "strip", z.ZodTypeAny, {
4780
+ type: "number-line-counter";
4781
+ min: number;
4782
+ max: number;
4783
+ id: string;
4784
+ name?: string | undefined;
4785
+ default?: number | undefined;
4786
+ }, {
4787
+ type: "number-line-counter";
4788
+ min: number;
4789
+ max: number;
4790
+ id: string;
4791
+ name?: string | undefined;
4792
+ default?: number | undefined;
4793
+ }>>;
4794
+ highlights: z.ZodOptional<z.ZodArray<z.ZodObject<{
4795
+ id: z.ZodString;
4796
+ type: z.ZodLiteral<"number-line-highlight">;
4797
+ from: z.ZodNumber;
4798
+ to: z.ZodNumber;
4799
+ color: z.ZodOptional<z.ZodEnum<["blue", "red", "green", "orange", "purple", "yellow"]>>;
4800
+ label: z.ZodOptional<z.ZodString>;
4801
+ }, "strip", z.ZodTypeAny, {
4802
+ type: "number-line-highlight";
4803
+ from: number;
4804
+ to: number;
4805
+ id: string;
4806
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4807
+ label?: string | undefined;
4808
+ }, {
4809
+ type: "number-line-highlight";
4810
+ from: number;
4811
+ to: number;
4812
+ id: string;
4813
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4814
+ label?: string | undefined;
4815
+ }>, "many">>;
4816
+ positions: z.ZodArray<z.ZodObject<{
4817
+ id: z.ZodString;
4818
+ type: z.ZodLiteral<"number-line-position">;
4819
+ value: z.ZodNumber;
4820
+ content: z.ZodArray<z.ZodType<any, z.ZodTypeDef, any>, "many">;
4821
+ }, "strip", z.ZodTypeAny, {
4822
+ value: number;
4823
+ type: "number-line-position";
4824
+ id: string;
4825
+ content: any[];
4826
+ }, {
4827
+ value: number;
4828
+ type: "number-line-position";
4829
+ id: string;
4830
+ content: any[];
4831
+ }>, "many">;
4832
+ }, "strip", z.ZodTypeAny, {
4833
+ type: "number-line";
4834
+ min: number;
4835
+ max: number;
4836
+ step: number;
4837
+ positions: {
4838
+ value: number;
4839
+ type: "number-line-position";
4840
+ id: string;
4841
+ content: any[];
4842
+ }[];
4843
+ id: string;
4844
+ counter?: {
4845
+ type: "number-line-counter";
4846
+ min: number;
4847
+ max: number;
4848
+ id: string;
4849
+ name?: string | undefined;
4850
+ default?: number | undefined;
4851
+ } | undefined;
4852
+ minorTicks?: number | undefined;
4853
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4854
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4855
+ highlights?: {
4856
+ type: "number-line-highlight";
4857
+ from: number;
4858
+ to: number;
4859
+ id: string;
4860
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4861
+ label?: string | undefined;
4862
+ }[] | undefined;
4863
+ }, {
4864
+ type: "number-line";
4865
+ min: number;
4866
+ max: number;
4867
+ step: number;
4868
+ positions: {
4869
+ value: number;
4870
+ type: "number-line-position";
4871
+ id: string;
4872
+ content: any[];
4873
+ }[];
4874
+ id: string;
4875
+ counter?: {
4876
+ type: "number-line-counter";
4877
+ min: number;
4878
+ max: number;
4879
+ id: string;
4880
+ name?: string | undefined;
4881
+ default?: number | undefined;
4882
+ } | undefined;
4883
+ minorTicks?: number | undefined;
4884
+ style?: "arrow-right" | "arrow-left" | "arrow-both" | "line" | undefined;
4885
+ labelVisibility?: "all" | "extremes" | "min-only" | "max-only" | "none" | undefined;
4886
+ highlights?: {
4887
+ type: "number-line-highlight";
4888
+ from: number;
4889
+ to: number;
4890
+ id: string;
4891
+ color?: "blue" | "red" | "green" | "orange" | "purple" | "yellow" | undefined;
4892
+ label?: string | undefined;
4893
+ }[] | undefined;
4894
+ }>;
4895
+
4896
+ export declare type NumberLinePosition = z.infer<typeof NumberLinePositionSchema>;
4897
+
4898
+ export declare type NumberLinePositionItem = z.infer<typeof NumberLinePositionItemSchema>;
4899
+
4900
+ export declare const NumberLinePositionItemSchema: z.ZodObject<{
4901
+ id: z.ZodString;
4902
+ type: z.ZodLiteral<"number-line-position">;
4903
+ value: z.ZodNumber;
4904
+ content: z.ZodArray<z.ZodType<any, z.ZodTypeDef, any>, "many">;
4905
+ }, "strip", z.ZodTypeAny, {
4906
+ value: number;
4907
+ type: "number-line-position";
4908
+ id: string;
4909
+ content: any[];
4910
+ }, {
4911
+ value: number;
4912
+ type: "number-line-position";
4913
+ id: string;
4914
+ content: any[];
4915
+ }>;
4916
+
4917
+ /**
4918
+ * A single position marker on the number line.
4919
+ * Contains at least one inline element (text, input, etc.).
4920
+ *
4921
+ * @example
4922
+ * {
4923
+ * type: "NumberLinePosition",
4924
+ * value: 20,
4925
+ * inlines: [{ type: "InlineInput", name: "a", digits: 3 }]
4926
+ * }
4927
+ */
4928
+ declare const NumberLinePositionSchema: z.ZodObject<{
4929
+ type: z.ZodLiteral<"NumberLinePosition">;
4930
+ value: z.ZodNumber;
4931
+ inlines: z.ZodArray<z.ZodUnion<[z.ZodObject<{
4932
+ type: z.ZodLiteral<"FreeText">;
4933
+ value: z.ZodString;
4934
+ }, "strip", z.ZodTypeAny, {
4935
+ value: string;
4936
+ type: "FreeText";
4937
+ }, {
4938
+ value: string;
4939
+ type: "FreeText";
4940
+ }>, z.ZodObject<{
4941
+ type: z.ZodLiteral<"Space">;
4942
+ }, "strip", z.ZodTypeAny, {
4943
+ type: "Space";
4944
+ }, {
4945
+ type: "Space";
4946
+ }>, z.ZodObject<{
4947
+ type: z.ZodLiteral<"HighlightedText">;
4948
+ value: z.ZodString;
4949
+ highlight: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4950
+ }, "strip", z.ZodTypeAny, {
4951
+ value: string;
4952
+ type: "HighlightedText";
4953
+ highlight?: [number, number] | undefined;
4954
+ }, {
4955
+ value: string;
4956
+ type: "HighlightedText";
4957
+ highlight?: [number, number] | undefined;
4958
+ }>, z.ZodObject<{
4959
+ type: z.ZodLiteral<"ColorText">;
4960
+ value: z.ZodString;
4961
+ color: z.ZodString;
4962
+ highlight: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4963
+ }, "strip", z.ZodTypeAny, {
4964
+ value: string;
4965
+ type: "ColorText";
4966
+ color: string;
4967
+ highlight?: [number, number] | undefined;
4968
+ }, {
4969
+ value: string;
4970
+ type: "ColorText";
4971
+ color: string;
4972
+ highlight?: [number, number] | undefined;
4973
+ }>, z.ZodObject<{
4974
+ type: z.ZodLiteral<"BoldText">;
4975
+ value: z.ZodString;
4976
+ highlight: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4977
+ }, "strip", z.ZodTypeAny, {
4978
+ value: string;
4979
+ type: "BoldText";
4980
+ highlight?: [number, number] | undefined;
4981
+ }, {
4982
+ value: string;
4983
+ type: "BoldText";
4984
+ highlight?: [number, number] | undefined;
4985
+ }>, z.ZodDiscriminatedUnion<"inputType", [z.ZodObject<{
4986
+ type: z.ZodLiteral<"InlineInput">;
4987
+ name: z.ZodString;
4988
+ inputType: z.ZodLiteral<"string">;
4989
+ length: z.ZodNumber;
4990
+ answer: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
4991
+ }, "strip", z.ZodTypeAny, {
4992
+ length: number;
4993
+ type: "InlineInput";
4994
+ inputType: "string";
4995
+ name: string;
4996
+ answer?: string | number | undefined;
4997
+ }, {
4998
+ length: number;
4999
+ type: "InlineInput";
5000
+ inputType: "string";
5001
+ name: string;
5002
+ answer?: string | number | undefined;
5003
+ }>, z.ZodObject<{
5004
+ type: z.ZodLiteral<"InlineInput">;
5005
+ name: z.ZodString;
5006
+ inputType: z.ZodLiteral<"numeric">;
5007
+ digits: z.ZodNumber;
5008
+ answer: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
5009
+ }, "strip", z.ZodTypeAny, {
5010
+ type: "InlineInput";
5011
+ inputType: "numeric";
5012
+ name: string;
5013
+ digits: number;
5014
+ answer?: string | number | undefined;
5015
+ }, {
5016
+ type: "InlineInput";
5017
+ inputType: "numeric";
5018
+ name: string;
5019
+ digits: number;
5020
+ answer?: string | number | undefined;
5021
+ }>]>]>, "many">;
5022
+ }, "strip", z.ZodTypeAny, {
5023
+ value: number;
5024
+ type: "NumberLinePosition";
5025
+ inlines: ({
5026
+ value: string;
5027
+ type: "FreeText";
5028
+ } | {
5029
+ type: "Space";
5030
+ } | {
5031
+ value: string;
5032
+ type: "HighlightedText";
5033
+ highlight?: [number, number] | undefined;
5034
+ } | {
5035
+ value: string;
5036
+ type: "ColorText";
5037
+ color: string;
5038
+ highlight?: [number, number] | undefined;
5039
+ } | {
5040
+ value: string;
5041
+ type: "BoldText";
5042
+ highlight?: [number, number] | undefined;
5043
+ } | {
5044
+ length: number;
5045
+ type: "InlineInput";
5046
+ inputType: "string";
5047
+ name: string;
5048
+ answer?: string | number | undefined;
5049
+ } | {
5050
+ type: "InlineInput";
5051
+ inputType: "numeric";
5052
+ name: string;
5053
+ digits: number;
5054
+ answer?: string | number | undefined;
5055
+ })[];
5056
+ }, {
5057
+ value: number;
5058
+ type: "NumberLinePosition";
5059
+ inlines: ({
5060
+ value: string;
5061
+ type: "FreeText";
5062
+ } | {
5063
+ type: "Space";
5064
+ } | {
5065
+ value: string;
5066
+ type: "HighlightedText";
5067
+ highlight?: [number, number] | undefined;
5068
+ } | {
5069
+ value: string;
5070
+ type: "ColorText";
5071
+ color: string;
5072
+ highlight?: [number, number] | undefined;
5073
+ } | {
5074
+ value: string;
5075
+ type: "BoldText";
5076
+ highlight?: [number, number] | undefined;
5077
+ } | {
5078
+ length: number;
5079
+ type: "InlineInput";
5080
+ inputType: "string";
5081
+ name: string;
5082
+ answer?: string | number | undefined;
5083
+ } | {
5084
+ type: "InlineInput";
5085
+ inputType: "numeric";
5086
+ name: string;
5087
+ digits: number;
5088
+ answer?: string | number | undefined;
5089
+ })[];
5090
+ }>;
5091
+
3681
5092
  export declare type NumericKeypadJSON = z.infer<typeof NumericKeypadJSONSchema>;
3682
5093
 
3683
5094
  export declare const NumericKeypadJSONSchema: z.ZodObject<{