@formspec/core 0.1.0-alpha.19 → 0.1.0-alpha.21

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/core.d.ts CHANGED
@@ -14,15 +14,23 @@
14
14
  * Discriminated union of all annotation types.
15
15
  * Annotations are value-influencing: they describe or present a field
16
16
  * but do not affect which values are valid.
17
+ *
18
+ * @public
17
19
  */
18
- export declare type AnnotationNode = DisplayNameAnnotationNode | DescriptionAnnotationNode | FormatAnnotationNode | PlaceholderAnnotationNode | DefaultValueAnnotationNode | DeprecatedAnnotationNode | FormatHintAnnotationNode | CustomAnnotationNode;
20
+ export declare type AnnotationNode = DisplayNameAnnotationNode | DescriptionAnnotationNode | RemarksAnnotationNode | FormatAnnotationNode | PlaceholderAnnotationNode | DefaultValueAnnotationNode | DeprecatedAnnotationNode | FormatHintAnnotationNode | CustomAnnotationNode;
19
21
 
20
22
  /**
21
23
  * Union of all field types.
24
+ *
25
+ * @public
22
26
  */
23
27
  export declare type AnyField = TextField<string> | NumberField<string> | BooleanField<string> | StaticEnumField<string, readonly EnumOptionValue[]> | DynamicEnumField<string, string> | DynamicSchemaField<string> | ArrayField<string, readonly FormElement[]> | ObjectField<string, readonly FormElement[]>;
24
28
 
25
- /** Array uniqueness constraint. */
29
+ /**
30
+ * Array uniqueness constraint.
31
+ *
32
+ * @public
33
+ */
26
34
  export declare interface ArrayCardinalityConstraintNode {
27
35
  readonly kind: "constraint";
28
36
  readonly constraintKind: "uniqueItems";
@@ -38,6 +46,8 @@ export declare interface ArrayCardinalityConstraintNode {
38
46
  *
39
47
  * @typeParam N - The field name (string literal type)
40
48
  * @typeParam Items - The form elements that define each array item
49
+ *
50
+ * @public
41
51
  */
42
52
  export declare interface ArrayField<N extends string, Items extends readonly FormElement[]> {
43
53
  /** Type discriminator for form elements */
@@ -58,7 +68,11 @@ export declare interface ArrayField<N extends string, Items extends readonly For
58
68
  readonly maxItems?: number;
59
69
  }
60
70
 
61
- /** Array type with a single items type. */
71
+ /**
72
+ * Array type with a single items type.
73
+ *
74
+ * @public
75
+ */
62
76
  export declare interface ArrayTypeNode {
63
77
  readonly kind: "array";
64
78
  readonly items: TypeNode;
@@ -68,6 +82,8 @@ export declare interface ArrayTypeNode {
68
82
  * A boolean checkbox field.
69
83
  *
70
84
  * @typeParam N - The field name (string literal type)
85
+ *
86
+ * @public
71
87
  */
72
88
  export declare interface BooleanField<N extends string> {
73
89
  /** Type discriminator for form elements */
@@ -88,6 +104,8 @@ export declare interface BooleanField<N extends string> {
88
104
  * (e.g., `@minimum 0`) and chain DSL options (e.g., `{ minimum: 0 }`).
89
105
  *
90
106
  * Keys use camelCase matching JSON Schema property names.
107
+ *
108
+ * @public
91
109
  */
92
110
  export declare const BUILTIN_CONSTRAINT_DEFINITIONS: {
93
111
  readonly minimum: "number";
@@ -108,6 +126,8 @@ export declare const BUILTIN_CONSTRAINT_DEFINITIONS: {
108
126
  /**
109
127
  * Registration for mapping a built-in TSDoc tag onto a custom constraint when
110
128
  * it is used on a particular custom type.
129
+ *
130
+ * @public
111
131
  */
112
132
  export declare interface BuiltinConstraintBroadeningRegistration {
113
133
  /** The built-in tag being broadened, without the `@` prefix. */
@@ -118,7 +138,11 @@ export declare interface BuiltinConstraintBroadeningRegistration {
118
138
  readonly parseValue: (raw: string) => JsonValue;
119
139
  }
120
140
 
121
- /** Type of a built-in constraint name. */
141
+ /**
142
+ * Type of a built-in constraint name.
143
+ *
144
+ * @public
145
+ */
122
146
  export declare type BuiltinConstraintName = keyof typeof BUILTIN_CONSTRAINT_DEFINITIONS;
123
147
 
124
148
  /**
@@ -127,6 +151,8 @@ export declare type BuiltinConstraintName = keyof typeof BUILTIN_CONSTRAINT_DEFI
127
151
  * @typeParam FieldName - The field to check
128
152
  * @typeParam Value - The value that triggers the condition
129
153
  * @typeParam Elements - Tuple of contained form elements
154
+ *
155
+ * @public
130
156
  */
131
157
  export declare interface Conditional<FieldName extends string, Value, Elements extends readonly FormElement[]> {
132
158
  /** Type discriminator - identifies this as a conditional element */
@@ -139,7 +165,11 @@ export declare interface Conditional<FieldName extends string, Value, Elements e
139
165
  readonly elements: Elements;
140
166
  }
141
167
 
142
- /** Conditional visibility based on another field's value. */
168
+ /**
169
+ * Conditional visibility based on another field's value.
170
+ *
171
+ * @public
172
+ */
143
173
  export declare interface ConditionalLayoutNode {
144
174
  readonly kind: "conditional";
145
175
  /** The field whose value triggers visibility. */
@@ -151,7 +181,11 @@ export declare interface ConditionalLayoutNode {
151
181
  readonly provenance: Provenance;
152
182
  }
153
183
 
154
- /** Literal-value equality constraint. */
184
+ /**
185
+ * Literal-value equality constraint.
186
+ *
187
+ * @public
188
+ */
155
189
  export declare interface ConstConstraintNode {
156
190
  readonly kind: "constraint";
157
191
  readonly constraintKind: "const";
@@ -163,12 +197,16 @@ export declare interface ConstConstraintNode {
163
197
  /**
164
198
  * Discriminated union of all constraint types.
165
199
  * Constraints are set-influencing: they narrow the set of valid values.
200
+ *
201
+ * @public
166
202
  */
167
203
  export declare type ConstraintNode = NumericConstraintNode | LengthConstraintNode | PatternConstraintNode | ArrayCardinalityConstraintNode | EnumMemberConstraintNode | ConstConstraintNode | CustomConstraintNode;
168
204
 
169
205
  /**
170
206
  * Semantic metadata for ordered custom constraints that should participate in
171
207
  * the generic contradiction/broadening logic.
208
+ *
209
+ * @public
172
210
  */
173
211
  export declare interface ConstraintSemanticRole {
174
212
  /**
@@ -184,6 +222,8 @@ export declare interface ConstraintSemanticRole {
184
222
 
185
223
  /**
186
224
  * Declarative authoring-side registration for a custom TSDoc constraint tag.
225
+ *
226
+ * @public
187
227
  */
188
228
  export declare interface ConstraintTagRegistration {
189
229
  /** Tag name without the `@` prefix, e.g. `"maxSigFig"`. */
@@ -206,10 +246,16 @@ export declare interface ConstraintTagRegistration {
206
246
  * @typeParam T - The value type of the field
207
247
  * @param value - The initial value for the field
208
248
  * @returns Initial field state
249
+ *
250
+ * @public
209
251
  */
210
252
  export declare function createInitialFieldState<T>(value: T): FieldState<T>;
211
253
 
212
- /** Extension-registered custom annotation. */
254
+ /**
255
+ * Extension-registered custom annotation.
256
+ *
257
+ * @public
258
+ */
213
259
  export declare interface CustomAnnotationNode {
214
260
  readonly kind: "annotation";
215
261
  readonly annotationKind: "custom";
@@ -224,6 +270,8 @@ export declare interface CustomAnnotationNode {
224
270
  *
225
271
  * Custom annotations are referenced via {@link CustomAnnotationNode} in the IR.
226
272
  * They describe or present a field but do not affect which values are valid.
273
+ *
274
+ * @public
227
275
  */
228
276
  export declare interface CustomAnnotationRegistration {
229
277
  /** The annotation name, unique within the extension. */
@@ -235,7 +283,11 @@ export declare interface CustomAnnotationRegistration {
235
283
  readonly toJsonSchema?: (value: JsonValue, vendorPrefix: string) => Record<string, unknown>;
236
284
  }
237
285
 
238
- /** Extension-registered custom constraint. */
286
+ /**
287
+ * Extension-registered custom constraint.
288
+ *
289
+ * @public
290
+ */
239
291
  export declare interface CustomConstraintNode {
240
292
  readonly kind: "constraint";
241
293
  readonly constraintKind: "custom";
@@ -253,6 +305,8 @@ export declare interface CustomConstraintNode {
253
305
  * Registration for a custom constraint that maps to JSON Schema keywords.
254
306
  *
255
307
  * Custom constraints are referenced via {@link CustomConstraintNode} in the IR.
308
+ *
309
+ * @public
256
310
  */
257
311
  export declare interface CustomConstraintRegistration {
258
312
  /** The constraint name, unique within the extension. */
@@ -294,7 +348,11 @@ export declare interface CustomConstraintRegistration {
294
348
  readonly toJsonSchema: (payload: JsonValue, vendorPrefix: string) => Record<string, unknown>;
295
349
  }
296
350
 
297
- /** Custom type registered by an extension. */
351
+ /**
352
+ * Custom type registered by an extension.
353
+ *
354
+ * @public
355
+ */
298
356
  export declare interface CustomTypeNode {
299
357
  readonly kind: "custom";
300
358
  /**
@@ -315,6 +373,8 @@ export declare interface CustomTypeNode {
315
373
  *
316
374
  * Custom types are referenced via {@link CustomTypeNode} in the IR and
317
375
  * resolved to JSON Schema via `toJsonSchema` during generation.
376
+ *
377
+ * @public
318
378
  */
319
379
  export declare interface CustomTypeRegistration {
320
380
  /** The type name, unique within the extension. */
@@ -343,6 +403,8 @@ export declare interface CustomTypeRegistration {
343
403
  * A single option returned by a data source resolver.
344
404
  *
345
405
  * @typeParam T - The data type for additional option metadata
406
+ *
407
+ * @public
346
408
  */
347
409
  export declare interface DataSourceOption<T = unknown> {
348
410
  /** The value stored when this option is selected */
@@ -367,6 +429,8 @@ export declare interface DataSourceOption<T = unknown> {
367
429
  * }
368
430
  * }
369
431
  * ```
432
+ *
433
+ * @public
370
434
  */
371
435
  export declare interface DataSourceRegistry {
372
436
  }
@@ -376,11 +440,18 @@ export declare interface DataSourceRegistry {
376
440
  *
377
441
  * If the source has an `id` property, that becomes the value type.
378
442
  * Otherwise, defaults to `string`.
443
+ *
444
+ * @public
379
445
  */
380
446
  export declare type DataSourceValueType<Source extends string> = Source extends keyof DataSourceRegistry ? DataSourceRegistry[Source] extends {
381
447
  id: infer ID;
382
448
  } ? ID : string : string;
383
449
 
450
+ /**
451
+ * Default-value annotation.
452
+ *
453
+ * @public
454
+ */
384
455
  export declare interface DefaultValueAnnotationNode {
385
456
  readonly kind: "annotation";
386
457
  readonly annotationKind: "defaultValue";
@@ -395,6 +466,8 @@ export declare interface DefaultValueAnnotationNode {
395
466
  *
396
467
  * @param reg - The custom annotation registration.
397
468
  * @returns The same registration, validated at the type level.
469
+ *
470
+ * @public
398
471
  */
399
472
  export declare function defineAnnotation(reg: CustomAnnotationRegistration): CustomAnnotationRegistration;
400
473
 
@@ -404,6 +477,8 @@ export declare function defineAnnotation(reg: CustomAnnotationRegistration): Cus
404
477
  *
405
478
  * @param reg - The custom constraint registration.
406
479
  * @returns The same registration, validated at the type level.
480
+ *
481
+ * @public
407
482
  */
408
483
  export declare function defineConstraint(reg: CustomConstraintRegistration): CustomConstraintRegistration;
409
484
 
@@ -412,6 +487,8 @@ export declare function defineConstraint(reg: CustomConstraintRegistration): Cus
412
487
  *
413
488
  * @param reg - The custom tag registration.
414
489
  * @returns The same registration, validated at the type level.
490
+ *
491
+ * @public
415
492
  */
416
493
  export declare function defineConstraintTag(reg: ConstraintTagRegistration): ConstraintTagRegistration;
417
494
 
@@ -421,6 +498,8 @@ export declare function defineConstraintTag(reg: ConstraintTagRegistration): Con
421
498
  *
422
499
  * @param reg - The custom type registration.
423
500
  * @returns The same registration, validated at the type level.
501
+ *
502
+ * @public
424
503
  */
425
504
  export declare function defineCustomType(reg: CustomTypeRegistration): CustomTypeRegistration;
426
505
 
@@ -430,9 +509,16 @@ export declare function defineCustomType(reg: CustomTypeRegistration): CustomTyp
430
509
  *
431
510
  * @param def - The extension definition.
432
511
  * @returns The same definition, validated at the type level.
512
+ *
513
+ * @public
433
514
  */
434
515
  export declare function defineExtension(def: ExtensionDefinition): ExtensionDefinition;
435
516
 
517
+ /**
518
+ * Deprecated annotation.
519
+ *
520
+ * @public
521
+ */
436
522
  export declare interface DeprecatedAnnotationNode {
437
523
  readonly kind: "annotation";
438
524
  readonly annotationKind: "deprecated";
@@ -441,6 +527,11 @@ export declare interface DeprecatedAnnotationNode {
441
527
  readonly provenance: Provenance;
442
528
  }
443
529
 
530
+ /**
531
+ * Description annotation.
532
+ *
533
+ * @public
534
+ */
444
535
  export declare interface DescriptionAnnotationNode {
445
536
  readonly kind: "annotation";
446
537
  readonly annotationKind: "description";
@@ -448,6 +539,11 @@ export declare interface DescriptionAnnotationNode {
448
539
  readonly provenance: Provenance;
449
540
  }
450
541
 
542
+ /**
543
+ * Display-name annotation.
544
+ *
545
+ * @public
546
+ */
451
547
  export declare interface DisplayNameAnnotationNode {
452
548
  readonly kind: "annotation";
453
549
  readonly annotationKind: "displayName";
@@ -460,6 +556,8 @@ export declare interface DisplayNameAnnotationNode {
460
556
  *
461
557
  * @typeParam N - The field name (string literal type)
462
558
  * @typeParam Source - The data source key (from DataSourceRegistry)
559
+ *
560
+ * @public
463
561
  */
464
562
  export declare interface DynamicEnumField<N extends string, Source extends string> {
465
563
  /** Type discriminator for form elements */
@@ -482,6 +580,8 @@ export declare interface DynamicEnumField<N extends string, Source extends strin
482
580
  * A field that loads its schema dynamically (e.g., from an extension).
483
581
  *
484
582
  * @typeParam N - The field name (string literal type)
583
+ *
584
+ * @public
485
585
  */
486
586
  export declare interface DynamicSchemaField<N extends string> {
487
587
  /** Type discriminator for form elements */
@@ -500,7 +600,11 @@ export declare interface DynamicSchemaField<N extends string> {
500
600
  readonly params?: readonly string[];
501
601
  }
502
602
 
503
- /** Dynamic type — schema resolved at runtime from a named data source. */
603
+ /**
604
+ * Dynamic type whose schema is resolved at runtime from a named data source.
605
+ *
606
+ * @public
607
+ */
504
608
  export declare interface DynamicTypeNode {
505
609
  readonly kind: "dynamic";
506
610
  readonly dynamicKind: "enum" | "schema";
@@ -513,7 +617,11 @@ export declare interface DynamicTypeNode {
513
617
  readonly parameterFields: readonly string[];
514
618
  }
515
619
 
516
- /** A member of a static enum type. */
620
+ /**
621
+ * A member of a static enum type.
622
+ *
623
+ * @public
624
+ */
517
625
  export declare interface EnumMember {
518
626
  /** The serialized value stored in data. */
519
627
  readonly value: string | number;
@@ -521,7 +629,11 @@ export declare interface EnumMember {
521
629
  readonly displayName?: string;
522
630
  }
523
631
 
524
- /** Enum member subset constraint (refinement — only narrows). */
632
+ /**
633
+ * Enum member subset constraint that only narrows the allowed member set.
634
+ *
635
+ * @public
636
+ */
525
637
  export declare interface EnumMemberConstraintNode {
526
638
  readonly kind: "constraint";
527
639
  readonly constraintKind: "allowedMembers";
@@ -534,6 +646,8 @@ export declare interface EnumMemberConstraintNode {
534
646
  * An enum option with a separate ID and display label.
535
647
  *
536
648
  * Use this when the stored value (id) should differ from the display text (label).
649
+ *
650
+ * @public
537
651
  */
538
652
  export declare interface EnumOption {
539
653
  readonly id: string;
@@ -542,10 +656,16 @@ export declare interface EnumOption {
542
656
 
543
657
  /**
544
658
  * Valid enum option types: either plain strings or objects with id/label.
659
+ *
660
+ * @public
545
661
  */
546
662
  export declare type EnumOptionValue = string | EnumOption;
547
663
 
548
- /** Static enum type — members known at build time. */
664
+ /**
665
+ * Static enum type with members known at build time.
666
+ *
667
+ * @public
668
+ */
549
669
  export declare interface EnumTypeNode {
550
670
  readonly kind: "enum";
551
671
  readonly members: readonly EnumMember[];
@@ -561,6 +681,8 @@ export declare interface EnumTypeNode {
561
681
  *
562
682
  * @typeParam K - The field name to check
563
683
  * @typeParam V - The value to compare against
684
+ *
685
+ * @public
564
686
  */
565
687
  export declare interface EqualsPredicate<K extends string, V> {
566
688
  /** Predicate type discriminator */
@@ -590,6 +712,8 @@ export declare interface EqualsPredicate<K extends string, V> {
590
712
  * ],
591
713
  * });
592
714
  * ```
715
+ *
716
+ * @public
593
717
  */
594
718
  export declare interface ExtensionDefinition {
595
719
  /** Globally unique extension identifier, e.g., "x-stripe/monetary". */
@@ -610,6 +734,8 @@ export declare interface ExtensionDefinition {
610
734
  * Response from a data source resolver function.
611
735
  *
612
736
  * @typeParam T - The data type for option metadata
737
+ *
738
+ * @public
613
739
  */
614
740
  export declare interface FetchOptionsResponse<T = unknown> {
615
741
  /** The available options */
@@ -620,7 +746,11 @@ export declare interface FetchOptionsResponse<T = unknown> {
620
746
  readonly message?: string;
621
747
  }
622
748
 
623
- /** A single form field after canonicalization. */
749
+ /**
750
+ * A single form field after canonicalization.
751
+ *
752
+ * @public
753
+ */
624
754
  export declare interface FieldNode {
625
755
  readonly kind: "field";
626
756
  /** The field's key in the data schema. */
@@ -649,6 +779,8 @@ export declare interface FieldNode {
649
779
  * Represents the runtime state of a single form field.
650
780
  *
651
781
  * @typeParam T - The value type of the field
782
+ *
783
+ * @public
652
784
  */
653
785
  export declare interface FieldState<T> {
654
786
  /** Current value of the field */
@@ -663,7 +795,11 @@ export declare interface FieldState<T> {
663
795
  readonly errors: readonly string[];
664
796
  }
665
797
 
666
- /** Schema format annotation (e.g. email/date/uri). */
798
+ /**
799
+ * Schema format annotation, for example `email`, `date`, or `uri`.
800
+ *
801
+ * @public
802
+ */
667
803
  export declare interface FormatAnnotationNode {
668
804
  readonly kind: "annotation";
669
805
  readonly annotationKind: "format";
@@ -674,6 +810,8 @@ export declare interface FormatAnnotationNode {
674
810
  /**
675
811
  * UI rendering hint — does not affect schema validation.
676
812
  * Unlike FormatAnnotationNode, this never emits a JSON Schema `format`.
813
+ *
814
+ * @public
677
815
  */
678
816
  export declare interface FormatHintAnnotationNode {
679
817
  readonly kind: "annotation";
@@ -685,6 +823,8 @@ export declare interface FormatHintAnnotationNode {
685
823
 
686
824
  /**
687
825
  * Union of all form element types (fields and structural elements).
826
+ *
827
+ * @public
688
828
  */
689
829
  export declare type FormElement = AnyField | Group<readonly FormElement[]> | Conditional<string, unknown, readonly FormElement[]>;
690
830
 
@@ -695,6 +835,8 @@ export declare type FormElement = AnyField | Group<readonly FormElement[]> | Con
695
835
  * and Generate (UI Schema) phases.
696
836
  *
697
837
  * Serializable to JSON — no live compiler objects.
838
+ *
839
+ * @public
698
840
  */
699
841
  export declare interface FormIR {
700
842
  readonly kind: "form-ir";
@@ -718,13 +860,19 @@ export declare interface FormIR {
718
860
  readonly provenance: Provenance;
719
861
  }
720
862
 
721
- /** Union of all IR element types. */
863
+ /**
864
+ * Union of all IR element types.
865
+ *
866
+ * @public
867
+ */
722
868
  export declare type FormIRElement = FieldNode | LayoutNode;
723
869
 
724
870
  /**
725
871
  * A complete form specification.
726
872
  *
727
873
  * @typeParam Elements - Tuple of top-level form elements
874
+ *
875
+ * @public
728
876
  */
729
877
  export declare interface FormSpec<Elements extends readonly FormElement[]> {
730
878
  /** Top-level form elements */
@@ -735,6 +883,8 @@ export declare interface FormSpec<Elements extends readonly FormElement[]> {
735
883
  * Represents the runtime state of an entire form.
736
884
  *
737
885
  * @typeParam Schema - The form schema type (maps field names to value types)
886
+ *
887
+ * @public
738
888
  */
739
889
  export declare interface FormState<Schema extends Record<string, unknown>> {
740
890
  /** State for each field, keyed by field name */
@@ -755,6 +905,8 @@ export declare interface FormState<Schema extends Record<string, unknown>> {
755
905
  * Groups provide visual organization and can be rendered as fieldsets or sections.
756
906
  *
757
907
  * @typeParam Elements - Tuple of contained form elements
908
+ *
909
+ * @public
758
910
  */
759
911
  export declare interface Group<Elements extends readonly FormElement[]> {
760
912
  /** Type discriminator - identifies this as a group element */
@@ -765,7 +917,11 @@ export declare interface Group<Elements extends readonly FormElement[]> {
765
917
  readonly elements: Elements;
766
918
  }
767
919
 
768
- /** A visual grouping of form elements. */
920
+ /**
921
+ * A visual grouping of form elements.
922
+ *
923
+ * @public
924
+ */
769
925
  export declare interface GroupLayoutNode {
770
926
  readonly kind: "group";
771
927
  readonly label: string;
@@ -777,13 +933,23 @@ export declare interface GroupLayoutNode {
777
933
  /**
778
934
  * The current IR format version. Centralized here so all canonicalizers
779
935
  * and consumers reference a single source of truth.
936
+ *
937
+ * @public
780
938
  */
781
939
  export declare const IR_VERSION: "0.1.0";
782
940
 
783
- /** Narrows a FormElement to an array field. */
941
+ /**
942
+ * Narrows a `FormElement` to an array field.
943
+ *
944
+ * @public
945
+ */
784
946
  export declare function isArrayField(element: FormElement): element is ArrayField<string, readonly FormElement[]>;
785
947
 
786
- /** Narrows a FormElement to a boolean checkbox field. */
948
+ /**
949
+ * Narrows a `FormElement` to a boolean checkbox field.
950
+ *
951
+ * @public
952
+ */
787
953
  export declare function isBooleanField(element: FormElement): element is BooleanField<string>;
788
954
 
789
955
  /**
@@ -794,44 +960,88 @@ export declare function isBooleanField(element: FormElement): element is Boolean
794
960
  *
795
961
  * Callers should normalize with {@link normalizeConstraintTagName} first
796
962
  * if the input may be PascalCase.
963
+ *
964
+ * @public
797
965
  */
798
966
  export declare function isBuiltinConstraintName(tagName: string): tagName is BuiltinConstraintName;
799
967
 
800
- /** Narrows a FormElement to a conditional wrapper. */
968
+ /**
969
+ * Narrows a `FormElement` to a conditional wrapper.
970
+ *
971
+ * @public
972
+ */
801
973
  export declare function isConditional(element: FormElement): element is Conditional<string, unknown, readonly FormElement[]>;
802
974
 
803
- /** Narrows a FormElement to a dynamic enum field. */
975
+ /**
976
+ * Narrows a `FormElement` to a dynamic enum field.
977
+ *
978
+ * @public
979
+ */
804
980
  export declare function isDynamicEnumField(element: FormElement): element is DynamicEnumField<string, string>;
805
981
 
806
- /** Narrows a FormElement to a dynamic schema field. */
982
+ /**
983
+ * Narrows a `FormElement` to a dynamic schema field.
984
+ *
985
+ * @public
986
+ */
807
987
  export declare function isDynamicSchemaField(element: FormElement): element is DynamicSchemaField<string>;
808
988
 
809
- /** Narrows a FormElement to any field type. */
989
+ /**
990
+ * Narrows a `FormElement` to any field type.
991
+ *
992
+ * @public
993
+ */
810
994
  export declare function isField(element: FormElement): element is AnyField;
811
995
 
812
- /** Narrows a FormElement to a visual group. */
996
+ /**
997
+ * Narrows a `FormElement` to a visual group.
998
+ *
999
+ * @public
1000
+ */
813
1001
  export declare function isGroup(element: FormElement): element is Group<readonly FormElement[]>;
814
1002
 
815
- /** Narrows a FormElement to a numeric input field. */
1003
+ /**
1004
+ * Narrows a `FormElement` to a numeric input field.
1005
+ *
1006
+ * @public
1007
+ */
816
1008
  export declare function isNumberField(element: FormElement): element is NumberField<string>;
817
1009
 
818
- /** Narrows a FormElement to an object field. */
1010
+ /**
1011
+ * Narrows a `FormElement` to an object field.
1012
+ *
1013
+ * @public
1014
+ */
819
1015
  export declare function isObjectField(element: FormElement): element is ObjectField<string, readonly FormElement[]>;
820
1016
 
821
- /** Narrows a FormElement to a static enum field. */
1017
+ /**
1018
+ * Narrows a `FormElement` to a static enum field.
1019
+ *
1020
+ * @public
1021
+ */
822
1022
  export declare function isStaticEnumField(element: FormElement): element is StaticEnumField<string, readonly EnumOptionValue[]>;
823
1023
 
824
- /** Narrows a FormElement to a text input field. */
1024
+ /**
1025
+ * Narrows a `FormElement` to a text input field.
1026
+ *
1027
+ * @public
1028
+ */
825
1029
  export declare function isTextField(element: FormElement): element is TextField<string>;
826
1030
 
827
1031
  /**
828
1032
  * A JSON-serializable value. All IR nodes must be representable as JSON.
1033
+ *
1034
+ * @public
829
1035
  */
830
1036
  export declare type JsonValue = null | boolean | number | string | readonly JsonValue[] | {
831
1037
  readonly [key: string]: JsonValue;
832
1038
  };
833
1039
 
834
- /** Union of layout node types. */
1040
+ /**
1041
+ * Union of layout node types.
1042
+ *
1043
+ * @public
1044
+ */
835
1045
  export declare type LayoutNode = GroupLayoutNode | ConditionalLayoutNode;
836
1046
 
837
1047
  /**
@@ -843,6 +1053,8 @@ export declare type LayoutNode = GroupLayoutNode | ConditionalLayoutNode;
843
1053
  *
844
1054
  * Type applicability: `minLength`/`maxLength` require `PrimitiveTypeNode("string")`;
845
1055
  * `minItems`/`maxItems` require `ArrayTypeNode`.
1056
+ *
1057
+ * @public
846
1058
  */
847
1059
  export declare interface LengthConstraintNode {
848
1060
  readonly kind: "constraint";
@@ -862,6 +1074,8 @@ export declare interface LengthConstraintNode {
862
1074
  * normalizeConstraintTagName("Minimum") // "minimum"
863
1075
  * normalizeConstraintTagName("MinLength") // "minLength"
864
1076
  * normalizeConstraintTagName("minimum") // "minimum" (idempotent)
1077
+ *
1078
+ * @public
865
1079
  */
866
1080
  export declare function normalizeConstraintTagName(tagName: string): string;
867
1081
 
@@ -869,6 +1083,8 @@ export declare function normalizeConstraintTagName(tagName: string): string;
869
1083
  * A numeric input field.
870
1084
  *
871
1085
  * @typeParam N - The field name (string literal type)
1086
+ *
1087
+ * @public
872
1088
  */
873
1089
  export declare interface NumberField<N extends string> {
874
1090
  /** Type discriminator for form elements */
@@ -898,6 +1114,8 @@ export declare interface NumberField<N extends string> {
898
1114
  *
899
1115
  * Type applicability: may only attach to fields with `PrimitiveTypeNode("number")`
900
1116
  * or a `ReferenceTypeNode` that resolves to one.
1117
+ *
1118
+ * @public
901
1119
  */
902
1120
  export declare interface NumericConstraintNode {
903
1121
  readonly kind: "constraint";
@@ -915,6 +1133,8 @@ export declare interface NumericConstraintNode {
915
1133
  *
916
1134
  * @typeParam N - The field name (string literal type)
917
1135
  * @typeParam Properties - The form elements that define the object's properties
1136
+ *
1137
+ * @public
918
1138
  */
919
1139
  export declare interface ObjectField<N extends string, Properties extends readonly FormElement[]> {
920
1140
  /** Type discriminator for form elements */
@@ -931,7 +1151,11 @@ export declare interface ObjectField<N extends string, Properties extends readon
931
1151
  readonly required?: boolean;
932
1152
  }
933
1153
 
934
- /** A named property within an object type. */
1154
+ /**
1155
+ * A named property within an object type.
1156
+ *
1157
+ * @public
1158
+ */
935
1159
  export declare interface ObjectProperty {
936
1160
  readonly name: string;
937
1161
  readonly type: TypeNode;
@@ -948,7 +1172,11 @@ export declare interface ObjectProperty {
948
1172
  readonly provenance: Provenance;
949
1173
  }
950
1174
 
951
- /** Object type with named properties. */
1175
+ /**
1176
+ * Object type with named properties.
1177
+ *
1178
+ * @public
1179
+ */
952
1180
  export declare interface ObjectTypeNode {
953
1181
  readonly kind: "object";
954
1182
  /**
@@ -967,6 +1195,8 @@ export declare interface ObjectTypeNode {
967
1195
  /**
968
1196
  * A path targeting a sub-field within a complex type.
969
1197
  * Used by constraints and annotations to target nested properties.
1198
+ *
1199
+ * @public
970
1200
  */
971
1201
  export declare interface PathTarget {
972
1202
  /**
@@ -984,6 +1214,8 @@ export declare interface PathTarget {
984
1214
  * all patterns must match simultaneously.
985
1215
  *
986
1216
  * Type applicability: requires `PrimitiveTypeNode("string")`.
1217
+ *
1218
+ * @public
987
1219
  */
988
1220
  export declare interface PatternConstraintNode {
989
1221
  readonly kind: "constraint";
@@ -994,6 +1226,11 @@ export declare interface PatternConstraintNode {
994
1226
  readonly provenance: Provenance;
995
1227
  }
996
1228
 
1229
+ /**
1230
+ * Placeholder annotation.
1231
+ *
1232
+ * @public
1233
+ */
997
1234
  export declare interface PlaceholderAnnotationNode {
998
1235
  readonly kind: "annotation";
999
1236
  readonly annotationKind: "placeholder";
@@ -1008,6 +1245,8 @@ export declare interface PlaceholderAnnotationNode {
1008
1245
  * - `OneOfPredicate` - field value is one of several options
1009
1246
  * - `NotPredicate` - negation of another predicate
1010
1247
  * - `AndPredicate` / `OrPredicate` - logical combinations
1248
+ *
1249
+ * @public
1011
1250
  */
1012
1251
  export declare type Predicate<K extends string = string, V = unknown> = EqualsPredicate<K, V>;
1013
1252
 
@@ -1016,6 +1255,8 @@ export declare type Predicate<K extends string = string, V = unknown> = EqualsPr
1016
1255
  *
1017
1256
  * Note: integer is NOT a primitive kind — integer semantics are expressed
1018
1257
  * via a `multipleOf: 1` constraint on a number type.
1258
+ *
1259
+ * @public
1019
1260
  */
1020
1261
  export declare interface PrimitiveTypeNode {
1021
1262
  readonly kind: "primitive";
@@ -1025,6 +1266,8 @@ export declare interface PrimitiveTypeNode {
1025
1266
  /**
1026
1267
  * Describes the origin of an IR node.
1027
1268
  * Enables diagnostics that point to the source of a contradiction or error.
1269
+ *
1270
+ * @public
1028
1271
  */
1029
1272
  export declare interface Provenance {
1030
1273
  /** The authoring surface that produced this node. */
@@ -1050,6 +1293,8 @@ export declare interface Provenance {
1050
1293
  *
1051
1294
  * Emitted as `{ "type": "object", "additionalProperties": <value schema> }` in
1052
1295
  * JSON Schema per spec 003 §2.5.
1296
+ *
1297
+ * @public
1053
1298
  */
1054
1299
  export declare interface RecordTypeNode {
1055
1300
  readonly kind: "record";
@@ -1057,7 +1302,11 @@ export declare interface RecordTypeNode {
1057
1302
  readonly valueType: TypeNode;
1058
1303
  }
1059
1304
 
1060
- /** Named type reference — preserved as references for `$defs`/`$ref` emission. */
1305
+ /**
1306
+ * Named type reference preserved for `$defs` and `$ref` emission.
1307
+ *
1308
+ * @public
1309
+ */
1061
1310
  export declare interface ReferenceTypeNode {
1062
1311
  readonly kind: "reference";
1063
1312
  /**
@@ -1073,6 +1322,23 @@ export declare interface ReferenceTypeNode {
1073
1322
  readonly typeArguments: readonly TypeNode[];
1074
1323
  }
1075
1324
 
1325
+ /**
1326
+ * Remarks annotation — programmatic-persona documentation carried via
1327
+ * the `x-<vendor>-remarks` JSON Schema extension keyword.
1328
+ *
1329
+ * Populated from `@remarks` TSDoc tag content. SDK codegen can include
1330
+ * this in doc comments; API Documenter renders the source `@remarks`
1331
+ * natively in a dedicated Remarks section.
1332
+ *
1333
+ * @public
1334
+ */
1335
+ export declare interface RemarksAnnotationNode {
1336
+ readonly kind: "annotation";
1337
+ readonly annotationKind: "remarks";
1338
+ readonly value: string;
1339
+ readonly provenance: Provenance;
1340
+ }
1341
+
1076
1342
  /**
1077
1343
  * A field with static enum options (known at compile time).
1078
1344
  *
@@ -1080,6 +1346,8 @@ export declare interface ReferenceTypeNode {
1080
1346
  *
1081
1347
  * @typeParam N - The field name (string literal type)
1082
1348
  * @typeParam O - Tuple of option values (strings or EnumOption objects)
1349
+ *
1350
+ * @public
1083
1351
  */
1084
1352
  export declare interface StaticEnumField<N extends string, O extends readonly EnumOptionValue[]> {
1085
1353
  /** Type discriminator for form elements */
@@ -1106,6 +1374,8 @@ export declare interface StaticEnumField<N extends string, O extends readonly En
1106
1374
  * A text input field.
1107
1375
  *
1108
1376
  * @typeParam N - The field name (string literal type)
1377
+ *
1378
+ * @public
1109
1379
  */
1110
1380
  export declare interface TextField<N extends string> {
1111
1381
  /** Type discriminator for form elements */
@@ -1128,7 +1398,11 @@ export declare interface TextField<N extends string> {
1128
1398
  readonly pattern?: string;
1129
1399
  }
1130
1400
 
1131
- /** A named type definition stored in the type registry. */
1401
+ /**
1402
+ * A named type definition stored in the type registry.
1403
+ *
1404
+ * @public
1405
+ */
1132
1406
  export declare interface TypeDefinition {
1133
1407
  /** The fully-qualified reference name (key in the registry). */
1134
1408
  readonly name: string;
@@ -1144,10 +1418,16 @@ export declare interface TypeDefinition {
1144
1418
 
1145
1419
  /**
1146
1420
  * Discriminated union of all type representations in the IR.
1421
+ *
1422
+ * @public
1147
1423
  */
1148
1424
  export declare type TypeNode = PrimitiveTypeNode | EnumTypeNode | ArrayTypeNode | ObjectTypeNode | RecordTypeNode | UnionTypeNode | ReferenceTypeNode | DynamicTypeNode | CustomTypeNode;
1149
1425
 
1150
- /** Union type for non-enum unions. Nullable types are `T | null` using this. */
1426
+ /**
1427
+ * Union type for non-enum unions. Nullable types are represented as `T | null`.
1428
+ *
1429
+ * @public
1430
+ */
1151
1431
  export declare interface UnionTypeNode {
1152
1432
  readonly kind: "union";
1153
1433
  readonly members: readonly TypeNode[];
@@ -1159,11 +1439,15 @@ export declare interface UnionTypeNode {
1159
1439
  * - `"valid"` - All validations pass
1160
1440
  * - `"invalid"` - One or more validations failed
1161
1441
  * - `"unknown"` - Validation state not yet determined (e.g., async validation pending)
1442
+ *
1443
+ * @public
1162
1444
  */
1163
1445
  export declare type Validity = "valid" | "invalid" | "unknown";
1164
1446
 
1165
1447
  /**
1166
1448
  * Registration for a vocabulary keyword to include in a JSON Schema `$vocabulary` declaration.
1449
+ *
1450
+ * @public
1167
1451
  */
1168
1452
  export declare interface VocabularyKeywordRegistration {
1169
1453
  /** The keyword name (without vendor prefix). */