@stripe/extensibility-jsonschema-tools 1.0.0 → 1.0.2

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.
@@ -1,9 +1,26 @@
1
- import { ExtendedJSONSchema7 } from '@formspec/build/browser';
2
- import { getSchemaExtension } from '@formspec/build/browser';
3
- import { jsonSchema7Schema } from '@formspec/build/browser';
4
- import { setSchemaExtension } from '@formspec/build/browser';
1
+ import { ExtendedJSONSchema7 } from '@stripe/formspec-build/browser';
2
+ import { FormSpecConfig } from '@stripe/formspec-config';
3
+ import { getSchemaExtension } from '@stripe/formspec-build/browser';
4
+ import { jsonSchema7Schema } from '@stripe/formspec-build/browser';
5
+ import { setSchemaExtension } from '@stripe/formspec-build/browser';
5
6
  import * as ts from 'typescript';
6
- import { uiSchemaSchema } from '@formspec/build/browser';
7
+ import { uiSchemaSchema } from '@stripe/formspec-build/browser';
8
+
9
+ /**
10
+ * Controls whether a type-level annotation can flow from a base declaration to
11
+ * a derived declaration during semantic analysis.
12
+ *
13
+ * @public
14
+ */
15
+ declare type AnnotationInheritancePolicy$1 = "local-wins" | "never";
16
+
17
+ /**
18
+ * Controls whether a type-level annotation can flow from a base declaration to
19
+ * a derived declaration during semantic analysis.
20
+ *
21
+ * @public
22
+ */
23
+ declare type AnnotationInheritancePolicy = "local-wins" | "never";
7
24
 
8
25
  /**
9
26
  * Registration for mapping a built-in TSDoc tag onto a custom constraint when
@@ -35,21 +52,6 @@ declare interface BuiltinConstraintBroadeningRegistration_2 {
35
52
  readonly parseValue: (raw: string) => ExtensionPayloadValue$1;
36
53
  }
37
54
 
38
- /**
39
- * Registration for mapping a built-in TSDoc tag onto a custom constraint when
40
- * it is used on a particular custom type.
41
- *
42
- * @public
43
- */
44
- declare interface BuiltinConstraintBroadeningRegistration_3 {
45
- /** The built-in tag being broadened, without the `@` prefix. */
46
- readonly tagName: BuiltinConstraintName_2;
47
- /** The custom constraint to emit for this built-in tag. */
48
- readonly constraintName: string;
49
- /** Parser from raw TSDoc text to extension payload. */
50
- readonly parseValue: (raw: string) => ExtensionPayloadValue_2;
51
- }
52
-
53
55
  /**
54
56
  * Type of a built-in constraint name.
55
57
  *
@@ -64,13 +66,6 @@ declare type BuiltinConstraintName$1 = "const" | "enumOptions" | "exclusiveMaxim
64
66
  */
65
67
  export declare type BuiltinConstraintName = "const" | "enumOptions" | "exclusiveMaximum" | "exclusiveMinimum" | "maximum" | "maxItems" | "maxLength" | "minimum" | "minItems" | "minLength" | "multipleOf" | "pattern" | "uniqueItems";
66
68
 
67
- /**
68
- * Type of a built-in constraint name.
69
- *
70
- * @public
71
- */
72
- declare type BuiltinConstraintName_2 = "const" | "enumOptions" | "exclusiveMaximum" | "exclusiveMinimum" | "maximum" | "maxItems" | "maxLength" | "minimum" | "minItems" | "minLength" | "multipleOf" | "pattern" | "uniqueItems";
73
-
74
69
  /**
75
70
  * A Categorization element (tab-based layout).
76
71
  *
@@ -117,24 +112,6 @@ export declare interface Category {
117
112
 
118
113
  /* Excluded from this release type: _ConfigUiSchema */
119
114
 
120
- /**
121
- * Complete constraint configuration for a FormSpec project.
122
- *
123
- * @public
124
- */
125
- declare interface ConstraintConfig {
126
- /** Field type constraints */
127
- fieldTypes?: FieldTypeConstraints;
128
- /** Layout and structure constraints */
129
- layout?: LayoutConstraints;
130
- /** UI Schema feature constraints */
131
- uiSchema?: UISchemaConstraints;
132
- /** Field configuration option constraints */
133
- fieldOptions?: FieldOptionConstraints;
134
- /** Control options constraints */
135
- controlOptions?: ControlOptionConstraints;
136
- }
137
-
138
115
  /**
139
116
  * Semantic metadata for ordered custom constraints that should participate in
140
117
  * the generic contradiction/broadening logic.
@@ -171,24 +148,6 @@ export declare interface ConstraintSemanticRole {
171
148
  readonly inclusive: boolean;
172
149
  }
173
150
 
174
- /**
175
- * Semantic metadata for ordered custom constraints that should participate in
176
- * the generic contradiction/broadening logic.
177
- *
178
- * @public
179
- */
180
- declare interface ConstraintSemanticRole_2 {
181
- /**
182
- * Logical family identifier shared by related constraints, for example
183
- * `"decimal-bound"` or `"date-bound"`.
184
- */
185
- readonly family: string;
186
- /** Whether this constraint acts as a lower or upper bound. */
187
- readonly bound: "exact" | "lower" | "upper";
188
- /** Whether equality is allowed when comparing against the bound. */
189
- readonly inclusive: boolean;
190
- }
191
-
192
151
  /**
193
152
  * Declarative authoring-side registration for a custom TSDoc constraint tag.
194
153
  *
@@ -229,26 +188,6 @@ declare interface ConstraintTagRegistration_2 {
229
188
  readonly isApplicableToType?: (type: ExtensionApplicableType$1) => boolean;
230
189
  }
231
190
 
232
- /**
233
- * Declarative authoring-side registration for a custom TSDoc constraint tag.
234
- *
235
- * @public
236
- */
237
- declare interface ConstraintTagRegistration_3 {
238
- /** Tag name without the `@` prefix, e.g. `"maxSigFig"`. */
239
- readonly tagName: string;
240
- /** The custom constraint that this tag should produce. */
241
- readonly constraintName: string;
242
- /** Parser from raw TSDoc text to JSON-serializable payload. */
243
- readonly parseValue: (raw: string) => ExtensionPayloadValue_2;
244
- /**
245
- * Optional precise applicability predicate for the field type being parsed.
246
- * When omitted, the target custom constraint registration controls type
247
- * applicability during validation.
248
- */
249
- readonly isApplicableToType?: (type: ExtensionApplicableType_2) => boolean;
250
- }
251
-
252
191
  /**
253
192
  * A Control element that binds to a JSON Schema property.
254
193
  *
@@ -269,27 +208,6 @@ export declare interface ControlElement {
269
208
  readonly [k: string]: unknown;
270
209
  }
271
210
 
272
- /**
273
- * Control options constraints - control which JSONForms Control.options are allowed.
274
- * These are renderer-specific options that may not be universally supported.
275
- *
276
- * @public
277
- */
278
- declare interface ControlOptionConstraints {
279
- /** format - renderer format hint (e.g., "radio", "textarea") */
280
- format?: Severity;
281
- /** readonly - read-only mode */
282
- readonly?: Severity;
283
- /** multi - multi-select for enums */
284
- multi?: Severity;
285
- /** showUnfocusedDescription - show description when unfocused */
286
- showUnfocusedDescription?: Severity;
287
- /** hideRequiredAsterisk - hide required indicator */
288
- hideRequiredAsterisk?: Severity;
289
- /** Custom control options (extensible dictionary) */
290
- custom?: Record<string, Severity>;
291
- }
292
-
293
211
  /**
294
212
  * Registration for a custom annotation that may produce JSON Schema keywords.
295
213
  *
@@ -301,6 +219,19 @@ declare interface ControlOptionConstraints {
301
219
  export declare interface CustomAnnotationRegistration {
302
220
  /** The annotation name, unique within the extension. */
303
221
  readonly annotationName: string;
222
+ /**
223
+ * Optional type-level inheritance behavior for semantic consumers.
224
+ *
225
+ * `"local-wins"` means a derived declaration inherits this annotation from
226
+ * its base declaration only when the derived declaration does not provide the
227
+ * same extension annotation identity locally. Omitted registrations behave as
228
+ * `"never"`.
229
+ */
230
+ readonly inheritFromBase?: AnnotationInheritancePolicy;
231
+ /**
232
+ * Optional editor documentation for the annotation's TSDoc authoring tag.
233
+ */
234
+ readonly tagDocumentation?: CustomAnnotationTagDocumentation;
304
235
  /**
305
236
  * Optionally converts the annotation value into JSON Schema keywords.
306
237
  * If omitted, the annotation has no JSON Schema representation (UI-only).
@@ -319,6 +250,19 @@ export declare interface CustomAnnotationRegistration {
319
250
  declare interface CustomAnnotationRegistration_2 {
320
251
  /** The annotation name, unique within the extension. */
321
252
  readonly annotationName: string;
253
+ /**
254
+ * Optional type-level inheritance behavior for semantic consumers.
255
+ *
256
+ * `"local-wins"` means a derived declaration inherits this annotation from
257
+ * its base declaration only when the derived declaration does not provide the
258
+ * same extension annotation identity locally. Omitted registrations behave as
259
+ * `"never"`.
260
+ */
261
+ readonly inheritFromBase?: AnnotationInheritancePolicy$1;
262
+ /**
263
+ * Optional editor documentation for the annotation's TSDoc authoring tag.
264
+ */
265
+ readonly tagDocumentation?: CustomAnnotationTagDocumentation$1;
322
266
  /**
323
267
  * Optionally converts the annotation value into JSON Schema keywords.
324
268
  * If omitted, the annotation has no JSON Schema representation (UI-only).
@@ -327,21 +271,53 @@ declare interface CustomAnnotationRegistration_2 {
327
271
  }
328
272
 
329
273
  /**
330
- * Registration for a custom annotation that may produce JSON Schema keywords.
274
+ * Documentation text for an extension annotation's TSDoc authoring tag.
331
275
  *
332
- * Custom annotations are referenced by FormSpec's internal custom-annotation nodes.
333
- * They describe or present a field but do not affect which values are valid.
276
+ * These strings are consumed by editor integrations for completion details and
277
+ * hover text. They do not affect annotation parsing, inheritance, or schema
278
+ * emission.
334
279
  *
335
280
  * @public
336
281
  */
337
- declare interface CustomAnnotationRegistration_3 {
338
- /** The annotation name, unique within the extension. */
339
- readonly annotationName: string;
282
+ declare interface CustomAnnotationTagDocumentation$1 {
283
+ /** Completion detail shown beside the annotation tag. */
284
+ readonly completionDetail?: string;
340
285
  /**
341
- * Optionally converts the annotation value into JSON Schema keywords.
342
- * If omitted, the annotation has no JSON Schema representation (UI-only).
286
+ * Label for the payload portion of the annotation tag signature.
287
+ *
288
+ * The payload remains the full authored text after the tag name, so this can
289
+ * describe single-argument or multi-argument annotation syntaxes.
290
+ */
291
+ readonly payloadLabel?: string;
292
+ /** Short hover summary shown for the annotation tag. */
293
+ readonly hoverSummary?: string;
294
+ /** Full markdown hover body for the annotation tag. */
295
+ readonly hoverMarkdown?: string;
296
+ }
297
+
298
+ /**
299
+ * Documentation text for an extension annotation's TSDoc authoring tag.
300
+ *
301
+ * These strings are consumed by editor integrations for completion details and
302
+ * hover text. They do not affect annotation parsing, inheritance, or schema
303
+ * emission.
304
+ *
305
+ * @public
306
+ */
307
+ declare interface CustomAnnotationTagDocumentation {
308
+ /** Completion detail shown beside the annotation tag. */
309
+ readonly completionDetail?: string;
310
+ /**
311
+ * Label for the payload portion of the annotation tag signature.
312
+ *
313
+ * The payload remains the full authored text after the tag name, so this can
314
+ * describe single-argument or multi-argument annotation syntaxes.
343
315
  */
344
- readonly toJsonSchema?: (value: ExtensionPayloadValue_2, vendorPrefix: string) => Record<string, unknown>;
316
+ readonly payloadLabel?: string;
317
+ /** Short hover summary shown for the annotation tag. */
318
+ readonly hoverSummary?: string;
319
+ /** Full markdown hover body for the annotation tag. */
320
+ readonly hoverMarkdown?: string;
345
321
  }
346
322
 
347
323
  /**
@@ -460,64 +436,6 @@ declare interface CustomConstraintRegistration_2 {
460
436
  readonly emitsVocabularyKeywords?: boolean;
461
437
  }
462
438
 
463
- /**
464
- * Registration for a custom constraint that maps to JSON Schema keywords.
465
- *
466
- * Custom constraints are referenced by FormSpec's internal custom-constraint nodes.
467
- *
468
- * @public
469
- */
470
- declare interface CustomConstraintRegistration_3 {
471
- /** The constraint name, unique within the extension. */
472
- readonly constraintName: string;
473
- /**
474
- * How this constraint composes with other constraints of the same kind.
475
- * - "intersect": combine with logical AND (both must hold)
476
- * - "override": last writer wins
477
- */
478
- readonly compositionRule: "intersect" | "override";
479
- /**
480
- * TypeNode kinds this constraint is applicable to, or `null` for any type.
481
- * Used by the validator to emit TYPE_MISMATCH diagnostics.
482
- */
483
- readonly applicableTypes: null | readonly ExtensionApplicableType_2["kind"][];
484
- /**
485
- * Optional precise type predicate used when kind-level applicability is too
486
- * broad (for example, constraints that apply to integer-like primitives but
487
- * not strings).
488
- */
489
- readonly isApplicableToType?: (type: ExtensionApplicableType_2) => boolean;
490
- /**
491
- * Optional comparator for payloads belonging to the same custom constraint.
492
- * Return values follow the `Array.prototype.sort()` contract.
493
- */
494
- readonly comparePayloads?: (left: ExtensionPayloadValue_2, right: ExtensionPayloadValue_2) => number;
495
- /**
496
- * Optional semantic family metadata for generic contradiction/broadening
497
- * handling across ordered constraints.
498
- */
499
- readonly semanticRole?: ConstraintSemanticRole_2;
500
- /**
501
- * Converts the custom constraint's payload into JSON Schema keywords.
502
- *
503
- * @param payload - The opaque JSON payload stored on the custom constraint node.
504
- * @param vendorPrefix - The vendor prefix for extension keywords.
505
- * @returns A JSON Schema fragment with the constraint keywords.
506
- */
507
- readonly toJsonSchema: (payload: ExtensionPayloadValue_2, vendorPrefix: string) => Record<string, unknown>;
508
- /**
509
- * When true, `toJsonSchema` may emit vocabulary keywords that do not carry
510
- * the vendor prefix. By default, all keys returned from `toJsonSchema` must
511
- * start with `${vendorPrefix}-`; setting this flag relaxes that check so
512
- * the constraint can produce standard or custom vocabulary keywords such as
513
- * `decimalMinimum`.
514
- *
515
- * Use this for constraints that define their own JSON Schema vocabulary
516
- * rather than namespacing under the vendor prefix.
517
- */
518
- readonly emitsVocabularyKeywords?: boolean;
519
- }
520
-
521
439
  /**
522
440
  * Registration for a custom type that maps to a JSON Schema representation.
523
441
  *
@@ -632,63 +550,6 @@ declare interface CustomTypeRegistration_2 {
632
550
  readonly builtinConstraintBroadenings?: readonly BuiltinConstraintBroadeningRegistration_2[];
633
551
  }
634
552
 
635
- /**
636
- * Registration for a custom type that maps to a JSON Schema representation.
637
- *
638
- * Custom types are referenced by FormSpec's internal custom-type IR nodes and
639
- * resolved to JSON Schema via `toJsonSchema` during generation.
640
- *
641
- * @public
642
- */
643
- declare interface CustomTypeRegistration_3 {
644
- /** The type name, unique within the extension. */
645
- readonly typeName: string;
646
- /**
647
- * Optional TypeScript surface names that should resolve to this custom type
648
- * during TSDoc/class analysis. Defaults to `typeName` when omitted.
649
- * @deprecated Prefer `brand` for structural detection or type parameters
650
- * on `defineCustomType<T>()` for symbol-based detection. String name
651
- * matching will be removed in a future major version.
652
- */
653
- readonly tsTypeNames?: readonly string[];
654
- /**
655
- * Optional brand identifier for structural type detection.
656
- *
657
- * When provided, the type resolver checks `type.getProperties()` for a
658
- * computed property whose name matches this identifier. This is more
659
- * reliable than `tsTypeNames` for aliased branded types because it does not
660
- * depend on the local type name.
661
- *
662
- * Brand detection is attempted after name-based resolution (`tsTypeNames`)
663
- * as a structural fallback. If both match, name-based resolution wins.
664
- *
665
- * The value should match the identifier text of a `unique symbol` declaration
666
- * used as a computed property key on the branded type. For example, if the
667
- * type is `string & { readonly [__decimalBrand]: true }`, the brand is
668
- * `"__decimalBrand"`.
669
- *
670
- * Brand identifiers are stored as plain strings in the extension registry, so
671
- * they must be unique across the extensions loaded into the same build.
672
- *
673
- * Note: `"__integerBrand"` is reserved for the builtin Integer type.
674
- */
675
- readonly brand?: string;
676
- /**
677
- * Converts the custom type's payload into a JSON Schema fragment.
678
- *
679
- * @param payload - The opaque JSON payload stored on the custom type node.
680
- * @param vendorPrefix - The vendor prefix for extension keywords (e.g., "x-stripe").
681
- * @returns A JSON Schema fragment representing this type.
682
- */
683
- readonly toJsonSchema: (payload: ExtensionPayloadValue_2, vendorPrefix: string) => Record<string, unknown>;
684
- /* Excluded from this release type: serializeDefault */
685
- /**
686
- * Optional broadening of built-in constraint tags so they can apply to this
687
- * custom type without modifying the core built-in constraint tables.
688
- */
689
- readonly builtinConstraintBroadenings?: readonly BuiltinConstraintBroadeningRegistration_3[];
690
- }
691
-
692
553
  /**
693
554
  * Per-declaration metadata policy input.
694
555
  *
@@ -701,18 +562,6 @@ declare interface DeclarationMetadataPolicyInput$1 {
701
562
  readonly displayName?: MetadataValuePolicyInput$1 | undefined;
702
563
  }
703
564
 
704
- /**
705
- * Per-declaration metadata policy input.
706
- *
707
- * @public
708
- */
709
- declare interface DeclarationMetadataPolicyInput$2 {
710
- /** Policy for JSON-facing serialized names. */
711
- readonly apiName?: MetadataValuePolicyInput$2 | undefined;
712
- /** Policy for human-facing labels and titles. */
713
- readonly displayName?: MetadataValuePolicyInput$2 | undefined;
714
- }
715
-
716
565
  /**
717
566
  * Per-declaration metadata policy input.
718
567
  *
@@ -750,16 +599,6 @@ declare interface EnumMemberDisplayNameDisabledPolicyInput$1 {
750
599
  readonly mode: "disabled";
751
600
  }
752
601
 
753
- /**
754
- * Enum-member display names remain unset unless authored explicitly.
755
- *
756
- * @public
757
- */
758
- declare interface EnumMemberDisplayNameDisabledPolicyInput$2 {
759
- /** Leaves missing enum-member display names unresolved. */
760
- readonly mode: "disabled";
761
- }
762
-
763
602
  /**
764
603
  * Enum-member display names remain unset unless authored explicitly.
765
604
  *
@@ -782,18 +621,6 @@ declare interface EnumMemberDisplayNameInferIfMissingPolicyInput$1 {
782
621
  readonly infer: EnumMemberMetadataInferenceFn$1;
783
622
  }
784
623
 
785
- /**
786
- * Missing enum-member display names may be inferred.
787
- *
788
- * @public
789
- */
790
- declare interface EnumMemberDisplayNameInferIfMissingPolicyInput$2 {
791
- /** Infers an enum-member display name when it is not authored explicitly. */
792
- readonly mode: "infer-if-missing";
793
- /** Callback used to infer the missing display name. */
794
- readonly infer: EnumMemberMetadataInferenceFn$2;
795
- }
796
-
797
624
  /**
798
625
  * Missing enum-member display names may be inferred.
799
626
  *
@@ -813,13 +640,6 @@ declare interface EnumMemberDisplayNameInferIfMissingPolicyInput {
813
640
  */
814
641
  declare type EnumMemberDisplayNamePolicyInput$1 = EnumMemberDisplayNameDisabledPolicyInput$1 | EnumMemberDisplayNameInferIfMissingPolicyInput$1 | EnumMemberDisplayNameRequireExplicitPolicyInput$1;
815
642
 
816
- /**
817
- * Enum-member display-name policy input.
818
- *
819
- * @public
820
- */
821
- declare type EnumMemberDisplayNamePolicyInput$2 = EnumMemberDisplayNameDisabledPolicyInput$2 | EnumMemberDisplayNameInferIfMissingPolicyInput$2 | EnumMemberDisplayNameRequireExplicitPolicyInput$2;
822
-
823
643
  /**
824
644
  * Enum-member display-name policy input.
825
645
  *
@@ -837,16 +657,6 @@ declare interface EnumMemberDisplayNameRequireExplicitPolicyInput$1 {
837
657
  readonly mode: "require-explicit";
838
658
  }
839
659
 
840
- /**
841
- * Enum members must declare display names explicitly.
842
- *
843
- * @public
844
- */
845
- declare interface EnumMemberDisplayNameRequireExplicitPolicyInput$2 {
846
- /** Fails when an enum member has no authored display name. */
847
- readonly mode: "require-explicit";
848
- }
849
-
850
660
  /**
851
661
  * Enum members must declare display names explicitly.
852
662
  *
@@ -867,26 +677,6 @@ declare interface EnumMemberDisplayNameRequireExplicitPolicyInput {
867
677
  * @public
868
678
  */
869
679
  declare interface EnumMemberMetadataInferenceContext$1 {
870
- /** Authoring surface the enum originated from. */
871
- readonly surface: MetadataAuthoringSurface_2;
872
- /** Logical member identifier used for policy inference. */
873
- readonly logicalName: string;
874
- /** Underlying enum value before stringification. */
875
- readonly memberValue: number | string;
876
- /** Optional build-only context supplied by the resolver. */
877
- readonly buildContext?: unknown;
878
- }
879
-
880
- /**
881
- * Build-facing context passed to enum-member metadata inference callbacks.
882
- *
883
- * Enum members are resolved separately from declaration-level metadata so they
884
- * do not participate in the shared declaration-kind model used by TSDoc and
885
- * extension metadata slots.
886
- *
887
- * @public
888
- */
889
- declare interface EnumMemberMetadataInferenceContext$2 {
890
680
  /** Authoring surface the enum originated from. */
891
681
  readonly surface: MetadataAuthoringSurface$2;
892
682
  /** Logical member identifier used for policy inference. */
@@ -924,13 +714,6 @@ declare interface EnumMemberMetadataInferenceContext {
924
714
  */
925
715
  declare type EnumMemberMetadataInferenceFn$1 = (context: EnumMemberMetadataInferenceContext$1) => string;
926
716
 
927
- /**
928
- * Callback used to infer enum-member display names.
929
- *
930
- * @public
931
- */
932
- declare type EnumMemberMetadataInferenceFn$2 = (context: EnumMemberMetadataInferenceContext$2) => string;
933
-
934
717
  /**
935
718
  * Callback used to infer enum-member display names.
936
719
  *
@@ -948,16 +731,6 @@ declare interface EnumMemberMetadataPolicyInput$1 {
948
731
  readonly displayName?: EnumMemberDisplayNamePolicyInput$1 | undefined;
949
732
  }
950
733
 
951
- /**
952
- * User-facing enum-member metadata policy input.
953
- *
954
- * @public
955
- */
956
- declare interface EnumMemberMetadataPolicyInput$2 {
957
- /** Policy for human-facing enum-member labels. */
958
- readonly displayName?: EnumMemberDisplayNamePolicyInput$2 | undefined;
959
- }
960
-
961
734
  /**
962
735
  * User-facing enum-member metadata policy input.
963
736
  *
@@ -1004,23 +777,6 @@ export declare type ExtensionApplicableType = {
1004
777
  readonly primitiveKind: "bigint" | "boolean" | "integer" | "null" | "number" | "string";
1005
778
  } | { readonly kind: Exclude<ExtensionTypeKind, "custom" | "primitive"> };
1006
779
 
1007
- /**
1008
- * A curated type shape exposed to extension applicability hooks.
1009
- *
1010
- * This intentionally exposes only the fields needed to determine tag/type
1011
- * applicability without committing the entire canonical IR as public API.
1012
- *
1013
- * @public
1014
- */
1015
- declare type ExtensionApplicableType_2 = {
1016
- readonly kind: "custom";
1017
- readonly payload: ExtensionPayloadValue_2;
1018
- readonly typeId: string;
1019
- } | {
1020
- readonly kind: "primitive";
1021
- readonly primitiveKind: "bigint" | "boolean" | "integer" | "null" | "number" | "string";
1022
- } | { readonly kind: Exclude<ExtensionTypeKind_2, "custom" | "primitive"> };
1023
-
1024
780
  /**
1025
781
  * A complete extension definition bundling types, constraints, annotations,
1026
782
  * and vocabulary keywords.
@@ -1099,45 +855,6 @@ declare interface ExtensionDefinition_2 {
1099
855
  readonly vocabularyKeywords?: readonly VocabularyKeywordRegistration$1[];
1100
856
  }
1101
857
 
1102
- /**
1103
- * A complete extension definition bundling types, constraints, annotations,
1104
- * and vocabulary keywords.
1105
- *
1106
- * @example
1107
- * ```typescript
1108
- * const monetaryExtension = defineExtension({
1109
- * extensionId: "x-stripe/monetary",
1110
- * types: [
1111
- * defineCustomType({
1112
- * typeName: "Decimal",
1113
- * toJsonSchema: (_payload, prefix) => ({
1114
- * type: "string",
1115
- * [`${prefix}-decimal`]: true,
1116
- * }),
1117
- * }),
1118
- * ],
1119
- * });
1120
- * ```
1121
- *
1122
- * @public
1123
- */
1124
- declare interface ExtensionDefinition_3 {
1125
- /** Globally unique extension identifier, e.g., "x-stripe/monetary". */
1126
- readonly extensionId: string;
1127
- /** Custom type registrations provided by this extension. */
1128
- readonly types?: readonly CustomTypeRegistration_3[];
1129
- /** Custom constraint registrations provided by this extension. */
1130
- readonly constraints?: readonly CustomConstraintRegistration_3[];
1131
- /** Authoring-side TSDoc tag registrations provided by this extension. */
1132
- readonly constraintTags?: readonly ConstraintTagRegistration_3[];
1133
- /** Metadata-slot registrations shared by build- and lint-time analysis. */
1134
- readonly metadataSlots?: readonly MetadataSlotRegistration_2[];
1135
- /** Custom annotation registrations provided by this extension. */
1136
- readonly annotations?: readonly CustomAnnotationRegistration_3[];
1137
- /** Vocabulary keyword registrations provided by this extension. */
1138
- readonly vocabularyKeywords?: readonly VocabularyKeywordRegistration_2[];
1139
- }
1140
-
1141
858
  /**
1142
859
  * A JSON-serializable payload value used by extension registration hooks.
1143
860
  *
@@ -1152,13 +869,6 @@ declare type ExtensionPayloadValue$1 = { readonly [key: string]: ExtensionPayloa
1152
869
  */
1153
870
  export declare type ExtensionPayloadValue = { readonly [key: string]: ExtensionPayloadValue } | boolean | null | number | readonly ExtensionPayloadValue[] | string;
1154
871
 
1155
- /**
1156
- * A JSON-serializable payload value used by extension registration hooks.
1157
- *
1158
- * @public
1159
- */
1160
- declare type ExtensionPayloadValue_2 = { readonly [key: string]: ExtensionPayloadValue_2 } | boolean | null | number | readonly ExtensionPayloadValue_2[] | string;
1161
-
1162
872
  /**
1163
873
  * A registry of extensions that provides lookup by fully-qualified ID.
1164
874
  *
@@ -1255,13 +965,6 @@ declare type ExtensionTypeKind$1 = "array" | "custom" | "dynamic" | "enum" | "ob
1255
965
  */
1256
966
  export declare type ExtensionTypeKind = "array" | "custom" | "dynamic" | "enum" | "object" | "primitive" | "record" | "reference" | "union";
1257
967
 
1258
- /**
1259
- * Top-level type kinds that extension applicability hooks may inspect.
1260
- *
1261
- * @public
1262
- */
1263
- declare type ExtensionTypeKind_2 = "array" | "custom" | "dynamic" | "enum" | "object" | "primitive" | "record" | "reference" | "union";
1264
-
1265
968
  /**
1266
969
  * The result of a successful extension type lookup.
1267
970
  *
@@ -1272,124 +975,21 @@ declare type ExtensionTypeKind_2 = "array" | "custom" | "dynamic" | "enum" | "ob
1272
975
  * @public
1273
976
  */
1274
977
  export declare interface ExtensionTypeLookupResult {
1275
- /** The fully-qualified extension ID (e.g., "x-stripe/monetary"). */
1276
- readonly extensionId: string;
1277
- /** The custom type registration matched by this lookup. */
1278
- readonly registration: CustomTypeRegistration_2;
1279
- }
1280
-
1281
- /* Excluded from this release type: _extractConfigSchemas */
1282
-
1283
- /* Excluded from this release type: _ExtractConfigSchemasOptions */
1284
-
1285
- /* Excluded from this release type: _ExtractConfigSchemasResult */
1286
-
1287
- /**
1288
- * Field configuration option constraints - control which field options are allowed.
1289
- *
1290
- * @public
1291
- */
1292
- declare interface FieldOptionConstraints {
1293
- /** label - field label text */
1294
- label?: Severity;
1295
- /** placeholder - input placeholder text */
1296
- placeholder?: Severity;
1297
- /** required - whether field is required */
1298
- required?: Severity;
1299
- /** minValue - minimum value for numbers */
1300
- minValue?: Severity;
1301
- /** maxValue - maximum value for numbers */
1302
- maxValue?: Severity;
1303
- /** minItems - minimum array length */
1304
- minItems?: Severity;
1305
- /** maxItems - maximum array length */
1306
- maxItems?: Severity;
1307
- }
1308
-
1309
- /**
1310
- * Field type constraints - control which field types are allowed.
1311
- * Fine-grained control over each DSL field builder.
1312
- *
1313
- * @public
1314
- */
1315
- declare interface FieldTypeConstraints {
1316
- /** field.text() - basic text input */
1317
- text?: Severity;
1318
- /** field.number() - numeric input */
1319
- number?: Severity;
1320
- /** field.boolean() - checkbox/toggle */
1321
- boolean?: Severity;
1322
- /** field.enum() with literal options */
1323
- staticEnum?: Severity;
1324
- /** field.dynamicEnum() - runtime-fetched options */
1325
- dynamicEnum?: Severity;
1326
- /** field.dynamicSchema() - runtime-fetched schema */
1327
- dynamicSchema?: Severity;
1328
- /** field.array() / field.arrayWithConfig() */
1329
- array?: Severity;
1330
- /** field.object() / field.objectWithConfig() */
1331
- object?: Severity;
1332
- }
1333
-
1334
- /* Excluded from this release type: _fixupDecimalPathConstraints */
1335
-
1336
- /**
1337
- * Top-level FormSpec configuration file structure.
1338
- * The .formspec.yml file uses this structure.
1339
- *
1340
- * @public
1341
- */
1342
- export declare interface FormSpecConfig {
1343
- /**
1344
- * Extension definitions providing custom types, constraints,
1345
- * annotations, and vocabulary keywords.
1346
- */
1347
- readonly extensions?: readonly ExtensionDefinition_3[];
1348
- /** Constraint surface configuration — controls which field types,
1349
- * layouts, UI features, and field/control options are allowed. */
1350
- readonly constraints?: ConstraintConfig;
1351
- /**
1352
- * Metadata inference and naming policy. Controls how apiName,
1353
- * displayName, and plural forms are derived when not authored.
1354
- */
1355
- readonly metadata?: MetadataPolicyInput_2;
1356
- /**
1357
- * Vendor prefix for extension-emitted JSON Schema keywords.
1358
- * Must start with "x-".
1359
- * @defaultValue "x-formspec"
1360
- */
1361
- readonly vendorPrefix?: string;
1362
- /**
1363
- * JSON Schema representation for static enums.
1364
- * - "enum": compact `enum` output, plus a display-name extension when labels exist
1365
- * - "oneOf": per-member `const` output, with `title` only for distinct labels
1366
- * - "smart-size": uses `enum` unless a distinct display label would be lost
1367
- * @defaultValue "enum"
1368
- */
1369
- readonly enumSerialization?: "enum" | "oneOf" | "smart-size";
1370
- /**
1371
- * Per-package configuration overrides for monorepos.
1372
- * Keys are glob patterns matched against file paths relative to
1373
- * the config file's directory. Values merge with root settings.
1374
- */
1375
- readonly packages?: Readonly<Record<string, FormSpecPackageOverride>>;
1376
- }
1377
-
1378
- /**
1379
- * Per-package overrides that merge with the root config.
1380
- * Only settings that genuinely vary per package are overridable.
1381
- *
1382
- * @public
1383
- */
1384
- declare interface FormSpecPackageOverride {
1385
- /** Override constraint surface for this package. */
1386
- readonly constraints?: ConstraintConfig;
1387
- /** Override enum serialization for this package. */
1388
- readonly enumSerialization?: "enum" | "oneOf" | "smart-size";
1389
- /** Override metadata policy for this package. */
1390
- readonly metadata?: MetadataPolicyInput_2;
978
+ /** The fully-qualified extension ID (e.g., "x-stripe/monetary"). */
979
+ readonly extensionId: string;
980
+ /** The custom type registration matched by this lookup. */
981
+ readonly registration: CustomTypeRegistration_2;
1391
982
  }
1392
983
 
984
+ /* Excluded from this release type: _extractConfigSchemas */
985
+
986
+ /* Excluded from this release type: _ExtractConfigSchemasOptions */
987
+
988
+ /* Excluded from this release type: _ExtractConfigSchemasResult */
989
+
990
+ /* Excluded from this release type: _fixupDecimalPathConstraints */
991
+ export { FormSpecConfig }
992
+
1393
993
  /**
1394
994
  * Options for generating schemas from a decorated class.
1395
995
  *
@@ -1560,6 +1160,8 @@ export declare interface JsonSchema2020 {
1560
1160
  description?: string;
1561
1161
  /** Default value suggested for the schema node. */
1562
1162
  default?: unknown;
1163
+ /** Documentation example values (from one or more `@example` tags). */
1164
+ examples?: unknown[];
1563
1165
  /** Whether the schema node is deprecated. */
1564
1166
  deprecated?: boolean;
1565
1167
  /** Additional vendor-prefixed extension keywords. */
@@ -1586,38 +1188,6 @@ export declare interface LabelElement {
1586
1188
  readonly [k: string]: unknown;
1587
1189
  }
1588
1190
 
1589
- /**
1590
- * Layout and structure constraints - control grouping, conditionals, nesting.
1591
- *
1592
- * @public
1593
- */
1594
- declare interface LayoutConstraints {
1595
- /** group() - visual grouping of fields */
1596
- group?: Severity;
1597
- /** when() - conditional field visibility */
1598
- conditionals?: Severity;
1599
- /** Maximum nesting depth for objects/arrays (0 = flat only) */
1600
- maxNestingDepth?: number;
1601
- }
1602
-
1603
- /**
1604
- * JSONForms layout type constraints.
1605
- *
1606
- * @public
1607
- */
1608
- declare interface LayoutTypeConstraints {
1609
- /** VerticalLayout - stack elements vertically */
1610
- VerticalLayout?: Severity;
1611
- /** HorizontalLayout - arrange elements horizontally */
1612
- HorizontalLayout?: Severity;
1613
- /** Group - visual grouping with label */
1614
- Group?: Severity;
1615
- /** Categorization - tabbed/wizard interface */
1616
- Categorization?: Severity;
1617
- /** Category - individual tab/step in Categorization */
1618
- Category?: Severity;
1619
- }
1620
-
1621
1191
  /**
1622
1192
  * Authoring surfaces that can contribute metadata.
1623
1193
  *
@@ -1639,13 +1209,6 @@ declare type MetadataAuthoringSurface$2 = "chain-dsl" | "tsdoc";
1639
1209
  */
1640
1210
  export declare type MetadataAuthoringSurface = "chain-dsl" | "tsdoc";
1641
1211
 
1642
- /**
1643
- * Authoring surfaces that can contribute metadata.
1644
- *
1645
- * @public
1646
- */
1647
- declare type MetadataAuthoringSurface_2 = "chain-dsl" | "tsdoc";
1648
-
1649
1212
  /**
1650
1213
  * Declaration categories that metadata policy can target.
1651
1214
  *
@@ -1667,13 +1230,6 @@ declare type MetadataDeclarationKind$2 = "field" | "method" | "type";
1667
1230
  */
1668
1231
  export declare type MetadataDeclarationKind = "field" | "method" | "type";
1669
1232
 
1670
- /**
1671
- * Declaration categories that metadata policy can target.
1672
- *
1673
- * @public
1674
- */
1675
- declare type MetadataDeclarationKind_2 = "field" | "method" | "type";
1676
-
1677
1233
  /**
1678
1234
  * Build-facing context passed to metadata inference callbacks.
1679
1235
  *
@@ -1731,38 +1287,12 @@ export declare interface MetadataInferenceContext {
1731
1287
  readonly buildContext?: unknown;
1732
1288
  }
1733
1289
 
1734
- /**
1735
- * Build-facing context passed to metadata inference callbacks.
1736
- *
1737
- * `buildContext` is intentionally opaque so browser/runtime packages do not
1738
- * need to depend on TypeScript compiler types.
1739
- *
1740
- * @public
1741
- */
1742
- declare interface MetadataInferenceContext_2 {
1743
- /** Authoring surface the metadata is being resolved for. */
1744
- readonly surface: MetadataAuthoringSurface_2;
1745
- /** Declaration kind currently being resolved. */
1746
- readonly declarationKind: MetadataDeclarationKind_2;
1747
- /** Logical identifier before any metadata policy is applied. */
1748
- readonly logicalName: string;
1749
- /** Optional build-only context supplied by the resolver. */
1750
- readonly buildContext?: unknown;
1751
- }
1752
-
1753
- /**
1754
- * Callback used to infer a scalar metadata value.
1755
- *
1756
- * @public
1757
- */
1758
- declare type MetadataInferenceFn$1 = (context: MetadataInferenceContext_2) => string;
1759
-
1760
1290
  /**
1761
1291
  * Callback used to infer a scalar metadata value.
1762
1292
  *
1763
1293
  * @public
1764
1294
  */
1765
- declare type MetadataInferenceFn$2 = (context: MetadataInferenceContext$2) => string;
1295
+ declare type MetadataInferenceFn$1 = (context: MetadataInferenceContext$2) => string;
1766
1296
 
1767
1297
  /**
1768
1298
  * Callback used to infer a scalar metadata value.
@@ -1776,17 +1306,7 @@ export declare type MetadataInferenceFn = (context: MetadataInferenceContext) =>
1776
1306
  *
1777
1307
  * @public
1778
1308
  */
1779
- declare interface MetadataPluralizationContext$1 extends MetadataInferenceContext_2 {
1780
- /** Singular value that pluralization should derive from. */
1781
- readonly singular: string;
1782
- }
1783
-
1784
- /**
1785
- * Context passed to pluralization callbacks.
1786
- *
1787
- * @public
1788
- */
1789
- declare interface MetadataPluralizationContext$2 extends MetadataInferenceContext$2 {
1309
+ declare interface MetadataPluralizationContext$1 extends MetadataInferenceContext$2 {
1790
1310
  /** Singular value that pluralization should derive from. */
1791
1311
  readonly singular: string;
1792
1312
  }
@@ -1811,16 +1331,6 @@ declare interface MetadataPluralizationDisabledPolicyInput$1 {
1811
1331
  readonly mode?: "disabled" | undefined;
1812
1332
  }
1813
1333
 
1814
- /**
1815
- * Pluralization disabled.
1816
- *
1817
- * @public
1818
- */
1819
- declare interface MetadataPluralizationDisabledPolicyInput$2 {
1820
- /** Disables automatic plural-value generation. */
1821
- readonly mode?: "disabled" | undefined;
1822
- }
1823
-
1824
1334
  /**
1825
1335
  * Pluralization disabled.
1826
1336
  *
@@ -1838,13 +1348,6 @@ export declare interface MetadataPluralizationDisabledPolicyInput {
1838
1348
  */
1839
1349
  declare type MetadataPluralizationFn$1 = (context: MetadataPluralizationContext$1) => string;
1840
1350
 
1841
- /**
1842
- * Callback used to derive plural metadata from a singular value.
1843
- *
1844
- * @public
1845
- */
1846
- declare type MetadataPluralizationFn$2 = (context: MetadataPluralizationContext$2) => string;
1847
-
1848
1351
  /**
1849
1352
  * Callback used to derive plural metadata from a singular value.
1850
1353
  *
@@ -1864,18 +1367,6 @@ declare interface MetadataPluralizationInferIfMissingPolicyInput$1 {
1864
1367
  readonly inflect: MetadataPluralizationFn$1;
1865
1368
  }
1866
1369
 
1867
- /**
1868
- * Pluralization may be inferred when absent.
1869
- *
1870
- * @public
1871
- */
1872
- declare interface MetadataPluralizationInferIfMissingPolicyInput$2 {
1873
- /** Infers plural values whenever no explicit plural is present. */
1874
- readonly mode: "infer-if-missing";
1875
- /** Callback that derives a plural form from the resolved singular value. */
1876
- readonly inflect: MetadataPluralizationFn$2;
1877
- }
1878
-
1879
1370
  /**
1880
1371
  * Pluralization may be inferred when absent.
1881
1372
  *
@@ -1895,13 +1386,6 @@ export declare interface MetadataPluralizationInferIfMissingPolicyInput {
1895
1386
  */
1896
1387
  declare type MetadataPluralizationPolicyInput$1 = MetadataPluralizationDisabledPolicyInput$1 | MetadataPluralizationInferIfMissingPolicyInput$1 | MetadataPluralizationRequireExplicitPolicyInput$1;
1897
1388
 
1898
- /**
1899
- * Pluralization policy input.
1900
- *
1901
- * @public
1902
- */
1903
- declare type MetadataPluralizationPolicyInput$2 = MetadataPluralizationDisabledPolicyInput$2 | MetadataPluralizationInferIfMissingPolicyInput$2 | MetadataPluralizationRequireExplicitPolicyInput$2;
1904
-
1905
1389
  /**
1906
1390
  * Pluralization policy input.
1907
1391
  *
@@ -1919,16 +1403,6 @@ declare interface MetadataPluralizationRequireExplicitPolicyInput$1 {
1919
1403
  readonly mode: "require-explicit";
1920
1404
  }
1921
1405
 
1922
- /**
1923
- * Pluralization must be authored explicitly.
1924
- *
1925
- * @public
1926
- */
1927
- declare interface MetadataPluralizationRequireExplicitPolicyInput$2 {
1928
- /** Requires plural values to be authored directly. */
1929
- readonly mode: "require-explicit";
1930
- }
1931
-
1932
1406
  /**
1933
1407
  * Pluralization must be authored explicitly.
1934
1408
  *
@@ -1946,13 +1420,13 @@ export declare interface MetadataPluralizationRequireExplicitPolicyInput {
1946
1420
  */
1947
1421
  declare interface MetadataPolicyInput$1 {
1948
1422
  /** Policy applied to named types and the analyzed root declaration. */
1949
- readonly type?: DeclarationMetadataPolicyInput$2 | undefined;
1423
+ readonly type?: DeclarationMetadataPolicyInput$1 | undefined;
1950
1424
  /** Policy applied to fields and object properties. */
1951
- readonly field?: DeclarationMetadataPolicyInput$2 | undefined;
1425
+ readonly field?: DeclarationMetadataPolicyInput$1 | undefined;
1952
1426
  /** Policy applied to callable/method declarations. */
1953
- readonly method?: DeclarationMetadataPolicyInput$2 | undefined;
1427
+ readonly method?: DeclarationMetadataPolicyInput$1 | undefined;
1954
1428
  /** Policy applied to enum-member display names during build-time IR resolution. */
1955
- readonly enumMember?: EnumMemberMetadataPolicyInput$2 | undefined;
1429
+ readonly enumMember?: EnumMemberMetadataPolicyInput$1 | undefined;
1956
1430
  }
1957
1431
 
1958
1432
  /**
@@ -1971,22 +1445,6 @@ export declare interface MetadataPolicyInput {
1971
1445
  readonly enumMember?: EnumMemberMetadataPolicyInput | undefined;
1972
1446
  }
1973
1447
 
1974
- /**
1975
- * User-facing metadata policy configuration.
1976
- *
1977
- * @public
1978
- */
1979
- declare interface MetadataPolicyInput_2 {
1980
- /** Policy applied to named types and the analyzed root declaration. */
1981
- readonly type?: DeclarationMetadataPolicyInput$1 | undefined;
1982
- /** Policy applied to fields and object properties. */
1983
- readonly field?: DeclarationMetadataPolicyInput$1 | undefined;
1984
- /** Policy applied to callable/method declarations. */
1985
- readonly method?: DeclarationMetadataPolicyInput$1 | undefined;
1986
- /** Policy applied to enum-member display names during build-time IR resolution. */
1987
- readonly enumMember?: EnumMemberMetadataPolicyInput$1 | undefined;
1988
- }
1989
-
1990
1448
  /**
1991
1449
  * Supported qualifier registration for an extensible metadata slot.
1992
1450
  *
@@ -2021,23 +1479,6 @@ export declare interface MetadataQualifierRegistration {
2021
1479
  readonly inferValue?: MetadataSlotInferenceFn | undefined;
2022
1480
  }
2023
1481
 
2024
- /**
2025
- * Supported qualifier registration for an extensible metadata slot.
2026
- *
2027
- * @public
2028
- */
2029
- declare interface MetadataQualifierRegistration_2 {
2030
- /** Qualifier text without the leading colon. */
2031
- readonly qualifier: string;
2032
- /**
2033
- * Optional source qualifier to use as the base input for this qualifier's
2034
- * inference hook. Defaults to the slot's bare/default value when omitted.
2035
- */
2036
- readonly sourceQualifier?: string | undefined;
2037
- /** Optional inference hook for this qualified value. */
2038
- readonly inferValue?: MetadataSlotInferenceFn_2 | undefined;
2039
- }
2040
-
2041
1482
  /**
2042
1483
  * Stable slot identifier for extensible metadata analysis.
2043
1484
  *
@@ -2052,13 +1493,6 @@ declare type MetadataSlotId$1 = string;
2052
1493
  */
2053
1494
  export declare type MetadataSlotId = string;
2054
1495
 
2055
- /**
2056
- * Stable slot identifier for extensible metadata analysis.
2057
- *
2058
- * @public
2059
- */
2060
- declare type MetadataSlotId_2 = string;
2061
-
2062
1496
  /**
2063
1497
  * Context passed to extensible metadata inference hooks.
2064
1498
  *
@@ -2091,22 +1525,6 @@ export declare interface MetadataSlotInferenceContext extends MetadataInferenceC
2091
1525
  readonly baseValue?: string | undefined;
2092
1526
  }
2093
1527
 
2094
- /**
2095
- * Context passed to extensible metadata inference hooks.
2096
- *
2097
- * @public
2098
- */
2099
- declare interface MetadataSlotInferenceContext_2 extends MetadataInferenceContext_2 {
2100
- /** Stable logical slot identifier. */
2101
- readonly slotId: MetadataSlotId_2;
2102
- /** Tag name associated with the slot, without the `@` prefix. */
2103
- readonly tagName: string;
2104
- /** Optional qualifier being inferred (for example `plural`). */
2105
- readonly qualifier?: string | undefined;
2106
- /** Resolved bare/default value used as the base input for derived qualifiers. */
2107
- readonly baseValue?: string | undefined;
2108
- }
2109
-
2110
1528
  /**
2111
1529
  * Callback used to infer an extensible metadata slot value.
2112
1530
  *
@@ -2121,13 +1539,6 @@ declare type MetadataSlotInferenceFn$1 = (context: MetadataSlotInferenceContext$
2121
1539
  */
2122
1540
  export declare type MetadataSlotInferenceFn = (context: MetadataSlotInferenceContext) => string;
2123
1541
 
2124
- /**
2125
- * Callback used to infer an extensible metadata slot value.
2126
- *
2127
- * @public
2128
- */
2129
- declare type MetadataSlotInferenceFn_2 = (context: MetadataSlotInferenceContext_2) => string;
2130
-
2131
1542
  /**
2132
1543
  * Extensible metadata slot definition shared across build- and lint-time analysis.
2133
1544
  *
@@ -2178,31 +1589,6 @@ export declare interface MetadataSlotRegistration {
2178
1589
  readonly isApplicable?: ((context: MetadataInferenceContext) => boolean) | undefined;
2179
1590
  }
2180
1591
 
2181
- /**
2182
- * Extensible metadata slot definition shared across build- and lint-time analysis.
2183
- *
2184
- * @public
2185
- */
2186
- declare interface MetadataSlotRegistration_2 {
2187
- /** Stable logical slot identifier. */
2188
- readonly slotId: MetadataSlotId_2;
2189
- /** Tag name associated with this slot, without the `@` prefix. */
2190
- readonly tagName: string;
2191
- /** Declaration kinds where the slot is meaningful. */
2192
- readonly declarationKinds: readonly MetadataDeclarationKind_2[];
2193
- /** Whether a bare tag without a qualifier is supported. Defaults to true. */
2194
- readonly allowBare?: boolean | undefined;
2195
- /** Supported qualifiers for this slot. */
2196
- readonly qualifiers?: readonly MetadataQualifierRegistration_2[] | undefined;
2197
- /** Optional inference hook for the bare/default slot value. */
2198
- readonly inferValue?: MetadataSlotInferenceFn_2 | undefined;
2199
- /**
2200
- * Optional applicability hook for declaration-specific rules beyond
2201
- * declaration kind. `buildContext` may carry compiler objects.
2202
- */
2203
- readonly isApplicable?: ((context: MetadataInferenceContext_2) => boolean) | undefined;
2204
- }
2205
-
2206
1592
  /**
2207
1593
  * Scalar metadata disabled unless provided explicitly elsewhere.
2208
1594
  *
@@ -2215,18 +1601,6 @@ declare interface MetadataValueDisabledPolicyInput$1 {
2215
1601
  readonly pluralization?: MetadataPluralizationPolicyInput$1 | undefined;
2216
1602
  }
2217
1603
 
2218
- /**
2219
- * Scalar metadata disabled unless provided explicitly elsewhere.
2220
- *
2221
- * @public
2222
- */
2223
- declare interface MetadataValueDisabledPolicyInput$2 {
2224
- /** Disables inference for this scalar metadata value. */
2225
- readonly mode?: "disabled" | undefined;
2226
- /** Optional policy controlling plural forms of this scalar value. */
2227
- readonly pluralization?: MetadataPluralizationPolicyInput$2 | undefined;
2228
- }
2229
-
2230
1604
  /**
2231
1605
  * Scalar metadata disabled unless provided explicitly elsewhere.
2232
1606
  *
@@ -2253,20 +1627,6 @@ declare interface MetadataValueInferIfMissingPolicyInput$1 {
2253
1627
  readonly pluralization?: MetadataPluralizationPolicyInput$1 | undefined;
2254
1628
  }
2255
1629
 
2256
- /**
2257
- * Scalar metadata may be inferred when missing.
2258
- *
2259
- * @public
2260
- */
2261
- declare interface MetadataValueInferIfMissingPolicyInput$2 {
2262
- /** Infers this scalar metadata value when it is not authored explicitly. */
2263
- readonly mode: "infer-if-missing";
2264
- /** Callback used to infer the missing singular value. */
2265
- readonly infer: MetadataInferenceFn$2;
2266
- /** Optional policy controlling plural forms of this scalar value. */
2267
- readonly pluralization?: MetadataPluralizationPolicyInput$2 | undefined;
2268
- }
2269
-
2270
1630
  /**
2271
1631
  * Scalar metadata may be inferred when missing.
2272
1632
  *
@@ -2288,13 +1648,6 @@ export declare interface MetadataValueInferIfMissingPolicyInput {
2288
1648
  */
2289
1649
  declare type MetadataValuePolicyInput$1 = MetadataValueDisabledPolicyInput$1 | MetadataValueInferIfMissingPolicyInput$1 | MetadataValueRequireExplicitPolicyInput$1;
2290
1650
 
2291
- /**
2292
- * Scalar metadata policy input.
2293
- *
2294
- * @public
2295
- */
2296
- declare type MetadataValuePolicyInput$2 = MetadataValueDisabledPolicyInput$2 | MetadataValueInferIfMissingPolicyInput$2 | MetadataValueRequireExplicitPolicyInput$2;
2297
-
2298
1651
  /**
2299
1652
  * Scalar metadata policy input.
2300
1653
  *
@@ -2314,18 +1667,6 @@ declare interface MetadataValueRequireExplicitPolicyInput$1 {
2314
1667
  readonly pluralization?: MetadataPluralizationPolicyInput$1 | undefined;
2315
1668
  }
2316
1669
 
2317
- /**
2318
- * Scalar metadata must be authored explicitly.
2319
- *
2320
- * @public
2321
- */
2322
- declare interface MetadataValueRequireExplicitPolicyInput$2 {
2323
- /** Requires this scalar metadata value to be authored directly. */
2324
- readonly mode: "require-explicit";
2325
- /** Optional policy controlling plural forms of this scalar value. */
2326
- readonly pluralization?: MetadataPluralizationPolicyInput$2 | undefined;
2327
- }
2328
-
2329
1670
  /**
2330
1671
  * Scalar metadata must be authored explicitly.
2331
1672
  *
@@ -2384,18 +1725,6 @@ export declare interface RuleConditionSchema {
2384
1725
  allOf?: RuleConditionSchema[];
2385
1726
  }
2386
1727
 
2387
- /**
2388
- * JSONForms rule constraints.
2389
- *
2390
- * @public
2391
- */
2392
- declare interface RuleConstraints {
2393
- /** Whether rules are enabled at all */
2394
- enabled?: Severity;
2395
- /** Fine-grained control over rule effects */
2396
- effects?: RuleEffectConstraints;
2397
- }
2398
-
2399
1728
  /**
2400
1729
  * JSON Forms UI Schema type definitions.
2401
1730
  *
@@ -2411,22 +1740,6 @@ declare interface RuleConstraints {
2411
1740
  */
2412
1741
  export declare type RuleEffect = "DISABLE" | "ENABLE" | "HIDE" | "SHOW";
2413
1742
 
2414
- /**
2415
- * JSONForms rule effect constraints.
2416
- *
2417
- * @public
2418
- */
2419
- declare interface RuleEffectConstraints {
2420
- /** SHOW - show element when condition is true */
2421
- SHOW?: Severity;
2422
- /** HIDE - hide element when condition is true */
2423
- HIDE?: Severity;
2424
- /** ENABLE - enable element when condition is true */
2425
- ENABLE?: Severity;
2426
- /** DISABLE - disable element when condition is true */
2427
- DISABLE?: Severity;
2428
- }
2429
-
2430
1743
  /**
2431
1744
  * Condition for a rule.
2432
1745
  *
@@ -2441,16 +1754,6 @@ export declare interface SchemaBasedCondition {
2441
1754
 
2442
1755
  export { setSchemaExtension }
2443
1756
 
2444
- /**
2445
- * Severity level for constraint violations.
2446
- * - "error": Violation fails validation
2447
- * - "warn": Violation emits warning but passes
2448
- * - "off": Feature is allowed (no violation)
2449
- *
2450
- * @public
2451
- */
2452
- declare type Severity = "error" | "off" | "warn";
2453
-
2454
1757
  /**
2455
1758
  * Shared options for schema generation flows that support custom extensions.
2456
1759
  *
@@ -2520,18 +1823,6 @@ export declare interface StaticSchemaGenerationOptions {
2520
1823
  */
2521
1824
  export declare type UISchema = Categorization | GroupLayout | HorizontalLayout | VerticalLayout;
2522
1825
 
2523
- /**
2524
- * UI Schema feature constraints - control JSONForms-specific features.
2525
- *
2526
- * @public
2527
- */
2528
- declare interface UISchemaConstraints {
2529
- /** Layout type constraints */
2530
- layouts?: LayoutTypeConstraints;
2531
- /** Rule (conditional) constraints */
2532
- rules?: RuleConstraints;
2533
- }
2534
-
2535
1826
  /**
2536
1827
  * Union of all UI Schema element types.
2537
1828
  *
@@ -2583,16 +1874,4 @@ export declare interface VocabularyKeywordRegistration {
2583
1874
  readonly schema: ExtensionPayloadValue;
2584
1875
  }
2585
1876
 
2586
- /**
2587
- * Registration for a vocabulary keyword to include in a JSON Schema `$vocabulary` declaration.
2588
- *
2589
- * @public
2590
- */
2591
- declare interface VocabularyKeywordRegistration_2 {
2592
- /** The keyword name (without vendor prefix). */
2593
- readonly keyword: string;
2594
- /** JSON Schema that describes the valid values for this keyword. */
2595
- readonly schema: ExtensionPayloadValue_2;
2596
- }
2597
-
2598
1877
  export { }