@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
  *
@@ -150,24 +145,6 @@ export declare interface _ConfigTypeRef {
150
145
  */
151
146
  export declare type _ConfigUiSchema = UISchema;
152
147
 
153
- /**
154
- * Complete constraint configuration for a FormSpec project.
155
- *
156
- * @public
157
- */
158
- declare interface ConstraintConfig {
159
- /** Field type constraints */
160
- fieldTypes?: FieldTypeConstraints;
161
- /** Layout and structure constraints */
162
- layout?: LayoutConstraints;
163
- /** UI Schema feature constraints */
164
- uiSchema?: UISchemaConstraints;
165
- /** Field configuration option constraints */
166
- fieldOptions?: FieldOptionConstraints;
167
- /** Control options constraints */
168
- controlOptions?: ControlOptionConstraints;
169
- }
170
-
171
148
  /**
172
149
  * Semantic metadata for ordered custom constraints that should participate in
173
150
  * the generic contradiction/broadening logic.
@@ -204,24 +181,6 @@ export declare interface ConstraintSemanticRole {
204
181
  readonly inclusive: boolean;
205
182
  }
206
183
 
207
- /**
208
- * Semantic metadata for ordered custom constraints that should participate in
209
- * the generic contradiction/broadening logic.
210
- *
211
- * @public
212
- */
213
- declare interface ConstraintSemanticRole_2 {
214
- /**
215
- * Logical family identifier shared by related constraints, for example
216
- * `"decimal-bound"` or `"date-bound"`.
217
- */
218
- readonly family: string;
219
- /** Whether this constraint acts as a lower or upper bound. */
220
- readonly bound: "exact" | "lower" | "upper";
221
- /** Whether equality is allowed when comparing against the bound. */
222
- readonly inclusive: boolean;
223
- }
224
-
225
184
  /**
226
185
  * Declarative authoring-side registration for a custom TSDoc constraint tag.
227
186
  *
@@ -262,26 +221,6 @@ declare interface ConstraintTagRegistration_2 {
262
221
  readonly isApplicableToType?: (type: ExtensionApplicableType$1) => boolean;
263
222
  }
264
223
 
265
- /**
266
- * Declarative authoring-side registration for a custom TSDoc constraint tag.
267
- *
268
- * @public
269
- */
270
- declare interface ConstraintTagRegistration_3 {
271
- /** Tag name without the `@` prefix, e.g. `"maxSigFig"`. */
272
- readonly tagName: string;
273
- /** The custom constraint that this tag should produce. */
274
- readonly constraintName: string;
275
- /** Parser from raw TSDoc text to JSON-serializable payload. */
276
- readonly parseValue: (raw: string) => ExtensionPayloadValue_2;
277
- /**
278
- * Optional precise applicability predicate for the field type being parsed.
279
- * When omitted, the target custom constraint registration controls type
280
- * applicability during validation.
281
- */
282
- readonly isApplicableToType?: (type: ExtensionApplicableType_2) => boolean;
283
- }
284
-
285
224
  /**
286
225
  * A Control element that binds to a JSON Schema property.
287
226
  *
@@ -302,27 +241,6 @@ export declare interface ControlElement {
302
241
  readonly [k: string]: unknown;
303
242
  }
304
243
 
305
- /**
306
- * Control options constraints - control which JSONForms Control.options are allowed.
307
- * These are renderer-specific options that may not be universally supported.
308
- *
309
- * @public
310
- */
311
- declare interface ControlOptionConstraints {
312
- /** format - renderer format hint (e.g., "radio", "textarea") */
313
- format?: Severity;
314
- /** readonly - read-only mode */
315
- readonly?: Severity;
316
- /** multi - multi-select for enums */
317
- multi?: Severity;
318
- /** showUnfocusedDescription - show description when unfocused */
319
- showUnfocusedDescription?: Severity;
320
- /** hideRequiredAsterisk - hide required indicator */
321
- hideRequiredAsterisk?: Severity;
322
- /** Custom control options (extensible dictionary) */
323
- custom?: Record<string, Severity>;
324
- }
325
-
326
244
  /**
327
245
  * Registration for a custom annotation that may produce JSON Schema keywords.
328
246
  *
@@ -334,6 +252,19 @@ declare interface ControlOptionConstraints {
334
252
  export declare interface CustomAnnotationRegistration {
335
253
  /** The annotation name, unique within the extension. */
336
254
  readonly annotationName: string;
255
+ /**
256
+ * Optional type-level inheritance behavior for semantic consumers.
257
+ *
258
+ * `"local-wins"` means a derived declaration inherits this annotation from
259
+ * its base declaration only when the derived declaration does not provide the
260
+ * same extension annotation identity locally. Omitted registrations behave as
261
+ * `"never"`.
262
+ */
263
+ readonly inheritFromBase?: AnnotationInheritancePolicy;
264
+ /**
265
+ * Optional editor documentation for the annotation's TSDoc authoring tag.
266
+ */
267
+ readonly tagDocumentation?: CustomAnnotationTagDocumentation;
337
268
  /**
338
269
  * Optionally converts the annotation value into JSON Schema keywords.
339
270
  * If omitted, the annotation has no JSON Schema representation (UI-only).
@@ -352,6 +283,19 @@ export declare interface CustomAnnotationRegistration {
352
283
  declare interface CustomAnnotationRegistration_2 {
353
284
  /** The annotation name, unique within the extension. */
354
285
  readonly annotationName: string;
286
+ /**
287
+ * Optional type-level inheritance behavior for semantic consumers.
288
+ *
289
+ * `"local-wins"` means a derived declaration inherits this annotation from
290
+ * its base declaration only when the derived declaration does not provide the
291
+ * same extension annotation identity locally. Omitted registrations behave as
292
+ * `"never"`.
293
+ */
294
+ readonly inheritFromBase?: AnnotationInheritancePolicy$1;
295
+ /**
296
+ * Optional editor documentation for the annotation's TSDoc authoring tag.
297
+ */
298
+ readonly tagDocumentation?: CustomAnnotationTagDocumentation$1;
355
299
  /**
356
300
  * Optionally converts the annotation value into JSON Schema keywords.
357
301
  * If omitted, the annotation has no JSON Schema representation (UI-only).
@@ -360,21 +304,53 @@ declare interface CustomAnnotationRegistration_2 {
360
304
  }
361
305
 
362
306
  /**
363
- * Registration for a custom annotation that may produce JSON Schema keywords.
307
+ * Documentation text for an extension annotation's TSDoc authoring tag.
364
308
  *
365
- * Custom annotations are referenced by FormSpec's internal custom-annotation nodes.
366
- * They describe or present a field but do not affect which values are valid.
309
+ * These strings are consumed by editor integrations for completion details and
310
+ * hover text. They do not affect annotation parsing, inheritance, or schema
311
+ * emission.
367
312
  *
368
313
  * @public
369
314
  */
370
- declare interface CustomAnnotationRegistration_3 {
371
- /** The annotation name, unique within the extension. */
372
- readonly annotationName: string;
315
+ declare interface CustomAnnotationTagDocumentation$1 {
316
+ /** Completion detail shown beside the annotation tag. */
317
+ readonly completionDetail?: string;
373
318
  /**
374
- * Optionally converts the annotation value into JSON Schema keywords.
375
- * If omitted, the annotation has no JSON Schema representation (UI-only).
319
+ * Label for the payload portion of the annotation tag signature.
320
+ *
321
+ * The payload remains the full authored text after the tag name, so this can
322
+ * describe single-argument or multi-argument annotation syntaxes.
323
+ */
324
+ readonly payloadLabel?: string;
325
+ /** Short hover summary shown for the annotation tag. */
326
+ readonly hoverSummary?: string;
327
+ /** Full markdown hover body for the annotation tag. */
328
+ readonly hoverMarkdown?: string;
329
+ }
330
+
331
+ /**
332
+ * Documentation text for an extension annotation's TSDoc authoring tag.
333
+ *
334
+ * These strings are consumed by editor integrations for completion details and
335
+ * hover text. They do not affect annotation parsing, inheritance, or schema
336
+ * emission.
337
+ *
338
+ * @public
339
+ */
340
+ declare interface CustomAnnotationTagDocumentation {
341
+ /** Completion detail shown beside the annotation tag. */
342
+ readonly completionDetail?: string;
343
+ /**
344
+ * Label for the payload portion of the annotation tag signature.
345
+ *
346
+ * The payload remains the full authored text after the tag name, so this can
347
+ * describe single-argument or multi-argument annotation syntaxes.
376
348
  */
377
- readonly toJsonSchema?: (value: ExtensionPayloadValue_2, vendorPrefix: string) => Record<string, unknown>;
349
+ readonly payloadLabel?: string;
350
+ /** Short hover summary shown for the annotation tag. */
351
+ readonly hoverSummary?: string;
352
+ /** Full markdown hover body for the annotation tag. */
353
+ readonly hoverMarkdown?: string;
378
354
  }
379
355
 
380
356
  /**
@@ -493,64 +469,6 @@ declare interface CustomConstraintRegistration_2 {
493
469
  readonly emitsVocabularyKeywords?: boolean;
494
470
  }
495
471
 
496
- /**
497
- * Registration for a custom constraint that maps to JSON Schema keywords.
498
- *
499
- * Custom constraints are referenced by FormSpec's internal custom-constraint nodes.
500
- *
501
- * @public
502
- */
503
- declare interface CustomConstraintRegistration_3 {
504
- /** The constraint name, unique within the extension. */
505
- readonly constraintName: string;
506
- /**
507
- * How this constraint composes with other constraints of the same kind.
508
- * - "intersect": combine with logical AND (both must hold)
509
- * - "override": last writer wins
510
- */
511
- readonly compositionRule: "intersect" | "override";
512
- /**
513
- * TypeNode kinds this constraint is applicable to, or `null` for any type.
514
- * Used by the validator to emit TYPE_MISMATCH diagnostics.
515
- */
516
- readonly applicableTypes: null | readonly ExtensionApplicableType_2["kind"][];
517
- /**
518
- * Optional precise type predicate used when kind-level applicability is too
519
- * broad (for example, constraints that apply to integer-like primitives but
520
- * not strings).
521
- */
522
- readonly isApplicableToType?: (type: ExtensionApplicableType_2) => boolean;
523
- /**
524
- * Optional comparator for payloads belonging to the same custom constraint.
525
- * Return values follow the `Array.prototype.sort()` contract.
526
- */
527
- readonly comparePayloads?: (left: ExtensionPayloadValue_2, right: ExtensionPayloadValue_2) => number;
528
- /**
529
- * Optional semantic family metadata for generic contradiction/broadening
530
- * handling across ordered constraints.
531
- */
532
- readonly semanticRole?: ConstraintSemanticRole_2;
533
- /**
534
- * Converts the custom constraint's payload into JSON Schema keywords.
535
- *
536
- * @param payload - The opaque JSON payload stored on the custom constraint node.
537
- * @param vendorPrefix - The vendor prefix for extension keywords.
538
- * @returns A JSON Schema fragment with the constraint keywords.
539
- */
540
- readonly toJsonSchema: (payload: ExtensionPayloadValue_2, vendorPrefix: string) => Record<string, unknown>;
541
- /**
542
- * When true, `toJsonSchema` may emit vocabulary keywords that do not carry
543
- * the vendor prefix. By default, all keys returned from `toJsonSchema` must
544
- * start with `${vendorPrefix}-`; setting this flag relaxes that check so
545
- * the constraint can produce standard or custom vocabulary keywords such as
546
- * `decimalMinimum`.
547
- *
548
- * Use this for constraints that define their own JSON Schema vocabulary
549
- * rather than namespacing under the vendor prefix.
550
- */
551
- readonly emitsVocabularyKeywords?: boolean;
552
- }
553
-
554
472
  /**
555
473
  * Registration for a custom type that maps to a JSON Schema representation.
556
474
  *
@@ -665,63 +583,6 @@ declare interface CustomTypeRegistration_2 {
665
583
  readonly builtinConstraintBroadenings?: readonly BuiltinConstraintBroadeningRegistration_2[];
666
584
  }
667
585
 
668
- /**
669
- * Registration for a custom type that maps to a JSON Schema representation.
670
- *
671
- * Custom types are referenced by FormSpec's internal custom-type IR nodes and
672
- * resolved to JSON Schema via `toJsonSchema` during generation.
673
- *
674
- * @public
675
- */
676
- declare interface CustomTypeRegistration_3 {
677
- /** The type name, unique within the extension. */
678
- readonly typeName: string;
679
- /**
680
- * Optional TypeScript surface names that should resolve to this custom type
681
- * during TSDoc/class analysis. Defaults to `typeName` when omitted.
682
- * @deprecated Prefer `brand` for structural detection or type parameters
683
- * on `defineCustomType<T>()` for symbol-based detection. String name
684
- * matching will be removed in a future major version.
685
- */
686
- readonly tsTypeNames?: readonly string[];
687
- /**
688
- * Optional brand identifier for structural type detection.
689
- *
690
- * When provided, the type resolver checks `type.getProperties()` for a
691
- * computed property whose name matches this identifier. This is more
692
- * reliable than `tsTypeNames` for aliased branded types because it does not
693
- * depend on the local type name.
694
- *
695
- * Brand detection is attempted after name-based resolution (`tsTypeNames`)
696
- * as a structural fallback. If both match, name-based resolution wins.
697
- *
698
- * The value should match the identifier text of a `unique symbol` declaration
699
- * used as a computed property key on the branded type. For example, if the
700
- * type is `string & { readonly [__decimalBrand]: true }`, the brand is
701
- * `"__decimalBrand"`.
702
- *
703
- * Brand identifiers are stored as plain strings in the extension registry, so
704
- * they must be unique across the extensions loaded into the same build.
705
- *
706
- * Note: `"__integerBrand"` is reserved for the builtin Integer type.
707
- */
708
- readonly brand?: string;
709
- /**
710
- * Converts the custom type's payload into a JSON Schema fragment.
711
- *
712
- * @param payload - The opaque JSON payload stored on the custom type node.
713
- * @param vendorPrefix - The vendor prefix for extension keywords (e.g., "x-stripe").
714
- * @returns A JSON Schema fragment representing this type.
715
- */
716
- readonly toJsonSchema: (payload: ExtensionPayloadValue_2, vendorPrefix: string) => Record<string, unknown>;
717
- /* Excluded from this release type: serializeDefault */
718
- /**
719
- * Optional broadening of built-in constraint tags so they can apply to this
720
- * custom type without modifying the core built-in constraint tables.
721
- */
722
- readonly builtinConstraintBroadenings?: readonly BuiltinConstraintBroadeningRegistration_3[];
723
- }
724
-
725
586
  /**
726
587
  * Per-declaration metadata policy input.
727
588
  *
@@ -734,18 +595,6 @@ declare interface DeclarationMetadataPolicyInput$1 {
734
595
  readonly displayName?: MetadataValuePolicyInput$1 | undefined;
735
596
  }
736
597
 
737
- /**
738
- * Per-declaration metadata policy input.
739
- *
740
- * @public
741
- */
742
- declare interface DeclarationMetadataPolicyInput$2 {
743
- /** Policy for JSON-facing serialized names. */
744
- readonly apiName?: MetadataValuePolicyInput$2 | undefined;
745
- /** Policy for human-facing labels and titles. */
746
- readonly displayName?: MetadataValuePolicyInput$2 | undefined;
747
- }
748
-
749
598
  /**
750
599
  * Per-declaration metadata policy input.
751
600
  *
@@ -783,16 +632,6 @@ declare interface EnumMemberDisplayNameDisabledPolicyInput$1 {
783
632
  readonly mode: "disabled";
784
633
  }
785
634
 
786
- /**
787
- * Enum-member display names remain unset unless authored explicitly.
788
- *
789
- * @public
790
- */
791
- declare interface EnumMemberDisplayNameDisabledPolicyInput$2 {
792
- /** Leaves missing enum-member display names unresolved. */
793
- readonly mode: "disabled";
794
- }
795
-
796
635
  /**
797
636
  * Enum-member display names remain unset unless authored explicitly.
798
637
  *
@@ -815,18 +654,6 @@ declare interface EnumMemberDisplayNameInferIfMissingPolicyInput$1 {
815
654
  readonly infer: EnumMemberMetadataInferenceFn$1;
816
655
  }
817
656
 
818
- /**
819
- * Missing enum-member display names may be inferred.
820
- *
821
- * @public
822
- */
823
- declare interface EnumMemberDisplayNameInferIfMissingPolicyInput$2 {
824
- /** Infers an enum-member display name when it is not authored explicitly. */
825
- readonly mode: "infer-if-missing";
826
- /** Callback used to infer the missing display name. */
827
- readonly infer: EnumMemberMetadataInferenceFn$2;
828
- }
829
-
830
657
  /**
831
658
  * Missing enum-member display names may be inferred.
832
659
  *
@@ -846,13 +673,6 @@ declare interface EnumMemberDisplayNameInferIfMissingPolicyInput {
846
673
  */
847
674
  declare type EnumMemberDisplayNamePolicyInput$1 = EnumMemberDisplayNameDisabledPolicyInput$1 | EnumMemberDisplayNameInferIfMissingPolicyInput$1 | EnumMemberDisplayNameRequireExplicitPolicyInput$1;
848
675
 
849
- /**
850
- * Enum-member display-name policy input.
851
- *
852
- * @public
853
- */
854
- declare type EnumMemberDisplayNamePolicyInput$2 = EnumMemberDisplayNameDisabledPolicyInput$2 | EnumMemberDisplayNameInferIfMissingPolicyInput$2 | EnumMemberDisplayNameRequireExplicitPolicyInput$2;
855
-
856
676
  /**
857
677
  * Enum-member display-name policy input.
858
678
  *
@@ -870,16 +690,6 @@ declare interface EnumMemberDisplayNameRequireExplicitPolicyInput$1 {
870
690
  readonly mode: "require-explicit";
871
691
  }
872
692
 
873
- /**
874
- * Enum members must declare display names explicitly.
875
- *
876
- * @public
877
- */
878
- declare interface EnumMemberDisplayNameRequireExplicitPolicyInput$2 {
879
- /** Fails when an enum member has no authored display name. */
880
- readonly mode: "require-explicit";
881
- }
882
-
883
693
  /**
884
694
  * Enum members must declare display names explicitly.
885
695
  *
@@ -900,26 +710,6 @@ declare interface EnumMemberDisplayNameRequireExplicitPolicyInput {
900
710
  * @public
901
711
  */
902
712
  declare interface EnumMemberMetadataInferenceContext$1 {
903
- /** Authoring surface the enum originated from. */
904
- readonly surface: MetadataAuthoringSurface_2;
905
- /** Logical member identifier used for policy inference. */
906
- readonly logicalName: string;
907
- /** Underlying enum value before stringification. */
908
- readonly memberValue: number | string;
909
- /** Optional build-only context supplied by the resolver. */
910
- readonly buildContext?: unknown;
911
- }
912
-
913
- /**
914
- * Build-facing context passed to enum-member metadata inference callbacks.
915
- *
916
- * Enum members are resolved separately from declaration-level metadata so they
917
- * do not participate in the shared declaration-kind model used by TSDoc and
918
- * extension metadata slots.
919
- *
920
- * @public
921
- */
922
- declare interface EnumMemberMetadataInferenceContext$2 {
923
713
  /** Authoring surface the enum originated from. */
924
714
  readonly surface: MetadataAuthoringSurface$2;
925
715
  /** Logical member identifier used for policy inference. */
@@ -957,13 +747,6 @@ declare interface EnumMemberMetadataInferenceContext {
957
747
  */
958
748
  declare type EnumMemberMetadataInferenceFn$1 = (context: EnumMemberMetadataInferenceContext$1) => string;
959
749
 
960
- /**
961
- * Callback used to infer enum-member display names.
962
- *
963
- * @public
964
- */
965
- declare type EnumMemberMetadataInferenceFn$2 = (context: EnumMemberMetadataInferenceContext$2) => string;
966
-
967
750
  /**
968
751
  * Callback used to infer enum-member display names.
969
752
  *
@@ -981,16 +764,6 @@ declare interface EnumMemberMetadataPolicyInput$1 {
981
764
  readonly displayName?: EnumMemberDisplayNamePolicyInput$1 | undefined;
982
765
  }
983
766
 
984
- /**
985
- * User-facing enum-member metadata policy input.
986
- *
987
- * @public
988
- */
989
- declare interface EnumMemberMetadataPolicyInput$2 {
990
- /** Policy for human-facing enum-member labels. */
991
- readonly displayName?: EnumMemberDisplayNamePolicyInput$2 | undefined;
992
- }
993
-
994
767
  /**
995
768
  * User-facing enum-member metadata policy input.
996
769
  *
@@ -1037,23 +810,6 @@ export declare type ExtensionApplicableType = {
1037
810
  readonly primitiveKind: "bigint" | "boolean" | "integer" | "null" | "number" | "string";
1038
811
  } | { readonly kind: Exclude<ExtensionTypeKind, "custom" | "primitive"> };
1039
812
 
1040
- /**
1041
- * A curated type shape exposed to extension applicability hooks.
1042
- *
1043
- * This intentionally exposes only the fields needed to determine tag/type
1044
- * applicability without committing the entire canonical IR as public API.
1045
- *
1046
- * @public
1047
- */
1048
- declare type ExtensionApplicableType_2 = {
1049
- readonly kind: "custom";
1050
- readonly payload: ExtensionPayloadValue_2;
1051
- readonly typeId: string;
1052
- } | {
1053
- readonly kind: "primitive";
1054
- readonly primitiveKind: "bigint" | "boolean" | "integer" | "null" | "number" | "string";
1055
- } | { readonly kind: Exclude<ExtensionTypeKind_2, "custom" | "primitive"> };
1056
-
1057
813
  /**
1058
814
  * A complete extension definition bundling types, constraints, annotations,
1059
815
  * and vocabulary keywords.
@@ -1132,45 +888,6 @@ declare interface ExtensionDefinition_2 {
1132
888
  readonly vocabularyKeywords?: readonly VocabularyKeywordRegistration$1[];
1133
889
  }
1134
890
 
1135
- /**
1136
- * A complete extension definition bundling types, constraints, annotations,
1137
- * and vocabulary keywords.
1138
- *
1139
- * @example
1140
- * ```typescript
1141
- * const monetaryExtension = defineExtension({
1142
- * extensionId: "x-stripe/monetary",
1143
- * types: [
1144
- * defineCustomType({
1145
- * typeName: "Decimal",
1146
- * toJsonSchema: (_payload, prefix) => ({
1147
- * type: "string",
1148
- * [`${prefix}-decimal`]: true,
1149
- * }),
1150
- * }),
1151
- * ],
1152
- * });
1153
- * ```
1154
- *
1155
- * @public
1156
- */
1157
- declare interface ExtensionDefinition_3 {
1158
- /** Globally unique extension identifier, e.g., "x-stripe/monetary". */
1159
- readonly extensionId: string;
1160
- /** Custom type registrations provided by this extension. */
1161
- readonly types?: readonly CustomTypeRegistration_3[];
1162
- /** Custom constraint registrations provided by this extension. */
1163
- readonly constraints?: readonly CustomConstraintRegistration_3[];
1164
- /** Authoring-side TSDoc tag registrations provided by this extension. */
1165
- readonly constraintTags?: readonly ConstraintTagRegistration_3[];
1166
- /** Metadata-slot registrations shared by build- and lint-time analysis. */
1167
- readonly metadataSlots?: readonly MetadataSlotRegistration_2[];
1168
- /** Custom annotation registrations provided by this extension. */
1169
- readonly annotations?: readonly CustomAnnotationRegistration_3[];
1170
- /** Vocabulary keyword registrations provided by this extension. */
1171
- readonly vocabularyKeywords?: readonly VocabularyKeywordRegistration_2[];
1172
- }
1173
-
1174
891
  /**
1175
892
  * A JSON-serializable payload value used by extension registration hooks.
1176
893
  *
@@ -1185,13 +902,6 @@ declare type ExtensionPayloadValue$1 = { readonly [key: string]: ExtensionPayloa
1185
902
  */
1186
903
  export declare type ExtensionPayloadValue = { readonly [key: string]: ExtensionPayloadValue } | boolean | null | number | readonly ExtensionPayloadValue[] | string;
1187
904
 
1188
- /**
1189
- * A JSON-serializable payload value used by extension registration hooks.
1190
- *
1191
- * @public
1192
- */
1193
- declare type ExtensionPayloadValue_2 = { readonly [key: string]: ExtensionPayloadValue_2 } | boolean | null | number | readonly ExtensionPayloadValue_2[] | string;
1194
-
1195
905
  /**
1196
906
  * A registry of extensions that provides lookup by fully-qualified ID.
1197
907
  *
@@ -1288,13 +998,6 @@ declare type ExtensionTypeKind$1 = "array" | "custom" | "dynamic" | "enum" | "ob
1288
998
  */
1289
999
  export declare type ExtensionTypeKind = "array" | "custom" | "dynamic" | "enum" | "object" | "primitive" | "record" | "reference" | "union";
1290
1000
 
1291
- /**
1292
- * Top-level type kinds that extension applicability hooks may inspect.
1293
- *
1294
- * @public
1295
- */
1296
- declare type ExtensionTypeKind_2 = "array" | "custom" | "dynamic" | "enum" | "object" | "primitive" | "record" | "reference" | "union";
1297
-
1298
1001
  /**
1299
1002
  * The result of a successful extension type lookup.
1300
1003
  *
@@ -1362,120 +1065,18 @@ export declare interface _ExtractConfigSchemasResult {
1362
1065
  }
1363
1066
 
1364
1067
  /**
1365
- * Field configuration option constraints - control which field options are allowed.
1366
- *
1367
- * @public
1368
- */
1369
- declare interface FieldOptionConstraints {
1370
- /** label - field label text */
1371
- label?: Severity;
1372
- /** placeholder - input placeholder text */
1373
- placeholder?: Severity;
1374
- /** required - whether field is required */
1375
- required?: Severity;
1376
- /** minValue - minimum value for numbers */
1377
- minValue?: Severity;
1378
- /** maxValue - maximum value for numbers */
1379
- maxValue?: Severity;
1380
- /** minItems - minimum array length */
1381
- minItems?: Severity;
1382
- /** maxItems - maximum array length */
1383
- maxItems?: Severity;
1384
- }
1385
-
1386
- /**
1387
- * Field type constraints - control which field types are allowed.
1388
- * Fine-grained control over each DSL field builder.
1389
- *
1390
- * @public
1391
- */
1392
- declare interface FieldTypeConstraints {
1393
- /** field.text() - basic text input */
1394
- text?: Severity;
1395
- /** field.number() - numeric input */
1396
- number?: Severity;
1397
- /** field.boolean() - checkbox/toggle */
1398
- boolean?: Severity;
1399
- /** field.enum() with literal options */
1400
- staticEnum?: Severity;
1401
- /** field.dynamicEnum() - runtime-fetched options */
1402
- dynamicEnum?: Severity;
1403
- /** field.dynamicSchema() - runtime-fetched schema */
1404
- dynamicSchema?: Severity;
1405
- /** field.array() / field.arrayWithConfig() */
1406
- array?: Severity;
1407
- /** field.object() / field.objectWithConfig() */
1408
- object?: Severity;
1409
- }
1410
-
1411
- /**
1412
- * Post-processes a generated JSON Schema to fix path-targeted constraints on
1413
- * Decimal sub-properties. Mutates the schema in place for efficiency.
1414
- *
1415
- * When formspec emits `$ref` + sibling `properties` for path-targeted
1416
- * constraints, any numeric constraint keywords targeting a Decimal sub-property
1417
- * must be broadened to the corresponding `decimal*` keyword with a string value.
1418
- *
1419
- * @internal
1420
- */
1421
- export declare function _fixupDecimalPathConstraints(schema: JsonSchema2020): JsonSchema2020;
1422
-
1423
- /**
1424
- * Top-level FormSpec configuration file structure.
1425
- * The .formspec.yml file uses this structure.
1426
- *
1427
- * @public
1428
- */
1429
- export declare interface FormSpecConfig {
1430
- /**
1431
- * Extension definitions providing custom types, constraints,
1432
- * annotations, and vocabulary keywords.
1433
- */
1434
- readonly extensions?: readonly ExtensionDefinition_3[];
1435
- /** Constraint surface configuration — controls which field types,
1436
- * layouts, UI features, and field/control options are allowed. */
1437
- readonly constraints?: ConstraintConfig;
1438
- /**
1439
- * Metadata inference and naming policy. Controls how apiName,
1440
- * displayName, and plural forms are derived when not authored.
1441
- */
1442
- readonly metadata?: MetadataPolicyInput_2;
1443
- /**
1444
- * Vendor prefix for extension-emitted JSON Schema keywords.
1445
- * Must start with "x-".
1446
- * @defaultValue "x-formspec"
1447
- */
1448
- readonly vendorPrefix?: string;
1449
- /**
1450
- * JSON Schema representation for static enums.
1451
- * - "enum": compact `enum` output, plus a display-name extension when labels exist
1452
- * - "oneOf": per-member `const` output, with `title` only for distinct labels
1453
- * - "smart-size": uses `enum` unless a distinct display label would be lost
1454
- * @defaultValue "enum"
1455
- */
1456
- readonly enumSerialization?: "enum" | "oneOf" | "smart-size";
1457
- /**
1458
- * Per-package configuration overrides for monorepos.
1459
- * Keys are glob patterns matched against file paths relative to
1460
- * the config file's directory. Values merge with root settings.
1461
- */
1462
- readonly packages?: Readonly<Record<string, FormSpecPackageOverride>>;
1463
- }
1464
-
1465
- /**
1466
- * Per-package overrides that merge with the root config.
1467
- * Only settings that genuinely vary per package are overridable.
1068
+ * Post-processes a generated JSON Schema to fix path-targeted constraints on
1069
+ * Decimal sub-properties. Mutates the schema in place for efficiency.
1468
1070
  *
1469
- * @public
1071
+ * When formspec emits `$ref` + sibling `properties` for path-targeted
1072
+ * constraints, any numeric constraint keywords targeting a Decimal sub-property
1073
+ * must be broadened to the corresponding `decimal*` keyword with a string value.
1074
+ *
1075
+ * @internal
1470
1076
  */
1471
- declare interface FormSpecPackageOverride {
1472
- /** Override constraint surface for this package. */
1473
- readonly constraints?: ConstraintConfig;
1474
- /** Override enum serialization for this package. */
1475
- readonly enumSerialization?: "enum" | "oneOf" | "smart-size";
1476
- /** Override metadata policy for this package. */
1477
- readonly metadata?: MetadataPolicyInput_2;
1478
- }
1077
+ export declare function _fixupDecimalPathConstraints(schema: JsonSchema2020): JsonSchema2020;
1078
+
1079
+ export { FormSpecConfig }
1479
1080
 
1480
1081
  /**
1481
1082
  * Options for generating schemas from a decorated class.
@@ -1656,6 +1257,8 @@ export declare interface JsonSchema2020 {
1656
1257
  description?: string;
1657
1258
  /** Default value suggested for the schema node. */
1658
1259
  default?: unknown;
1260
+ /** Documentation example values (from one or more `@example` tags). */
1261
+ examples?: unknown[];
1659
1262
  /** Whether the schema node is deprecated. */
1660
1263
  deprecated?: boolean;
1661
1264
  /** Additional vendor-prefixed extension keywords. */
@@ -1682,38 +1285,6 @@ export declare interface LabelElement {
1682
1285
  readonly [k: string]: unknown;
1683
1286
  }
1684
1287
 
1685
- /**
1686
- * Layout and structure constraints - control grouping, conditionals, nesting.
1687
- *
1688
- * @public
1689
- */
1690
- declare interface LayoutConstraints {
1691
- /** group() - visual grouping of fields */
1692
- group?: Severity;
1693
- /** when() - conditional field visibility */
1694
- conditionals?: Severity;
1695
- /** Maximum nesting depth for objects/arrays (0 = flat only) */
1696
- maxNestingDepth?: number;
1697
- }
1698
-
1699
- /**
1700
- * JSONForms layout type constraints.
1701
- *
1702
- * @public
1703
- */
1704
- declare interface LayoutTypeConstraints {
1705
- /** VerticalLayout - stack elements vertically */
1706
- VerticalLayout?: Severity;
1707
- /** HorizontalLayout - arrange elements horizontally */
1708
- HorizontalLayout?: Severity;
1709
- /** Group - visual grouping with label */
1710
- Group?: Severity;
1711
- /** Categorization - tabbed/wizard interface */
1712
- Categorization?: Severity;
1713
- /** Category - individual tab/step in Categorization */
1714
- Category?: Severity;
1715
- }
1716
-
1717
1288
  /**
1718
1289
  * Authoring surfaces that can contribute metadata.
1719
1290
  *
@@ -1735,13 +1306,6 @@ declare type MetadataAuthoringSurface$2 = "chain-dsl" | "tsdoc";
1735
1306
  */
1736
1307
  export declare type MetadataAuthoringSurface = "chain-dsl" | "tsdoc";
1737
1308
 
1738
- /**
1739
- * Authoring surfaces that can contribute metadata.
1740
- *
1741
- * @public
1742
- */
1743
- declare type MetadataAuthoringSurface_2 = "chain-dsl" | "tsdoc";
1744
-
1745
1309
  /**
1746
1310
  * Declaration categories that metadata policy can target.
1747
1311
  *
@@ -1763,13 +1327,6 @@ declare type MetadataDeclarationKind$2 = "field" | "method" | "type";
1763
1327
  */
1764
1328
  export declare type MetadataDeclarationKind = "field" | "method" | "type";
1765
1329
 
1766
- /**
1767
- * Declaration categories that metadata policy can target.
1768
- *
1769
- * @public
1770
- */
1771
- declare type MetadataDeclarationKind_2 = "field" | "method" | "type";
1772
-
1773
1330
  /**
1774
1331
  * Build-facing context passed to metadata inference callbacks.
1775
1332
  *
@@ -1827,38 +1384,12 @@ export declare interface MetadataInferenceContext {
1827
1384
  readonly buildContext?: unknown;
1828
1385
  }
1829
1386
 
1830
- /**
1831
- * Build-facing context passed to metadata inference callbacks.
1832
- *
1833
- * `buildContext` is intentionally opaque so browser/runtime packages do not
1834
- * need to depend on TypeScript compiler types.
1835
- *
1836
- * @public
1837
- */
1838
- declare interface MetadataInferenceContext_2 {
1839
- /** Authoring surface the metadata is being resolved for. */
1840
- readonly surface: MetadataAuthoringSurface_2;
1841
- /** Declaration kind currently being resolved. */
1842
- readonly declarationKind: MetadataDeclarationKind_2;
1843
- /** Logical identifier before any metadata policy is applied. */
1844
- readonly logicalName: string;
1845
- /** Optional build-only context supplied by the resolver. */
1846
- readonly buildContext?: unknown;
1847
- }
1848
-
1849
- /**
1850
- * Callback used to infer a scalar metadata value.
1851
- *
1852
- * @public
1853
- */
1854
- declare type MetadataInferenceFn$1 = (context: MetadataInferenceContext_2) => string;
1855
-
1856
1387
  /**
1857
1388
  * Callback used to infer a scalar metadata value.
1858
1389
  *
1859
1390
  * @public
1860
1391
  */
1861
- declare type MetadataInferenceFn$2 = (context: MetadataInferenceContext$2) => string;
1392
+ declare type MetadataInferenceFn$1 = (context: MetadataInferenceContext$2) => string;
1862
1393
 
1863
1394
  /**
1864
1395
  * Callback used to infer a scalar metadata value.
@@ -1872,17 +1403,7 @@ export declare type MetadataInferenceFn = (context: MetadataInferenceContext) =>
1872
1403
  *
1873
1404
  * @public
1874
1405
  */
1875
- declare interface MetadataPluralizationContext$1 extends MetadataInferenceContext_2 {
1876
- /** Singular value that pluralization should derive from. */
1877
- readonly singular: string;
1878
- }
1879
-
1880
- /**
1881
- * Context passed to pluralization callbacks.
1882
- *
1883
- * @public
1884
- */
1885
- declare interface MetadataPluralizationContext$2 extends MetadataInferenceContext$2 {
1406
+ declare interface MetadataPluralizationContext$1 extends MetadataInferenceContext$2 {
1886
1407
  /** Singular value that pluralization should derive from. */
1887
1408
  readonly singular: string;
1888
1409
  }
@@ -1907,16 +1428,6 @@ declare interface MetadataPluralizationDisabledPolicyInput$1 {
1907
1428
  readonly mode?: "disabled" | undefined;
1908
1429
  }
1909
1430
 
1910
- /**
1911
- * Pluralization disabled.
1912
- *
1913
- * @public
1914
- */
1915
- declare interface MetadataPluralizationDisabledPolicyInput$2 {
1916
- /** Disables automatic plural-value generation. */
1917
- readonly mode?: "disabled" | undefined;
1918
- }
1919
-
1920
1431
  /**
1921
1432
  * Pluralization disabled.
1922
1433
  *
@@ -1934,13 +1445,6 @@ export declare interface MetadataPluralizationDisabledPolicyInput {
1934
1445
  */
1935
1446
  declare type MetadataPluralizationFn$1 = (context: MetadataPluralizationContext$1) => string;
1936
1447
 
1937
- /**
1938
- * Callback used to derive plural metadata from a singular value.
1939
- *
1940
- * @public
1941
- */
1942
- declare type MetadataPluralizationFn$2 = (context: MetadataPluralizationContext$2) => string;
1943
-
1944
1448
  /**
1945
1449
  * Callback used to derive plural metadata from a singular value.
1946
1450
  *
@@ -1960,18 +1464,6 @@ declare interface MetadataPluralizationInferIfMissingPolicyInput$1 {
1960
1464
  readonly inflect: MetadataPluralizationFn$1;
1961
1465
  }
1962
1466
 
1963
- /**
1964
- * Pluralization may be inferred when absent.
1965
- *
1966
- * @public
1967
- */
1968
- declare interface MetadataPluralizationInferIfMissingPolicyInput$2 {
1969
- /** Infers plural values whenever no explicit plural is present. */
1970
- readonly mode: "infer-if-missing";
1971
- /** Callback that derives a plural form from the resolved singular value. */
1972
- readonly inflect: MetadataPluralizationFn$2;
1973
- }
1974
-
1975
1467
  /**
1976
1468
  * Pluralization may be inferred when absent.
1977
1469
  *
@@ -1991,13 +1483,6 @@ export declare interface MetadataPluralizationInferIfMissingPolicyInput {
1991
1483
  */
1992
1484
  declare type MetadataPluralizationPolicyInput$1 = MetadataPluralizationDisabledPolicyInput$1 | MetadataPluralizationInferIfMissingPolicyInput$1 | MetadataPluralizationRequireExplicitPolicyInput$1;
1993
1485
 
1994
- /**
1995
- * Pluralization policy input.
1996
- *
1997
- * @public
1998
- */
1999
- declare type MetadataPluralizationPolicyInput$2 = MetadataPluralizationDisabledPolicyInput$2 | MetadataPluralizationInferIfMissingPolicyInput$2 | MetadataPluralizationRequireExplicitPolicyInput$2;
2000
-
2001
1486
  /**
2002
1487
  * Pluralization policy input.
2003
1488
  *
@@ -2015,16 +1500,6 @@ declare interface MetadataPluralizationRequireExplicitPolicyInput$1 {
2015
1500
  readonly mode: "require-explicit";
2016
1501
  }
2017
1502
 
2018
- /**
2019
- * Pluralization must be authored explicitly.
2020
- *
2021
- * @public
2022
- */
2023
- declare interface MetadataPluralizationRequireExplicitPolicyInput$2 {
2024
- /** Requires plural values to be authored directly. */
2025
- readonly mode: "require-explicit";
2026
- }
2027
-
2028
1503
  /**
2029
1504
  * Pluralization must be authored explicitly.
2030
1505
  *
@@ -2042,13 +1517,13 @@ export declare interface MetadataPluralizationRequireExplicitPolicyInput {
2042
1517
  */
2043
1518
  declare interface MetadataPolicyInput$1 {
2044
1519
  /** Policy applied to named types and the analyzed root declaration. */
2045
- readonly type?: DeclarationMetadataPolicyInput$2 | undefined;
1520
+ readonly type?: DeclarationMetadataPolicyInput$1 | undefined;
2046
1521
  /** Policy applied to fields and object properties. */
2047
- readonly field?: DeclarationMetadataPolicyInput$2 | undefined;
1522
+ readonly field?: DeclarationMetadataPolicyInput$1 | undefined;
2048
1523
  /** Policy applied to callable/method declarations. */
2049
- readonly method?: DeclarationMetadataPolicyInput$2 | undefined;
1524
+ readonly method?: DeclarationMetadataPolicyInput$1 | undefined;
2050
1525
  /** Policy applied to enum-member display names during build-time IR resolution. */
2051
- readonly enumMember?: EnumMemberMetadataPolicyInput$2 | undefined;
1526
+ readonly enumMember?: EnumMemberMetadataPolicyInput$1 | undefined;
2052
1527
  }
2053
1528
 
2054
1529
  /**
@@ -2067,22 +1542,6 @@ export declare interface MetadataPolicyInput {
2067
1542
  readonly enumMember?: EnumMemberMetadataPolicyInput | undefined;
2068
1543
  }
2069
1544
 
2070
- /**
2071
- * User-facing metadata policy configuration.
2072
- *
2073
- * @public
2074
- */
2075
- declare interface MetadataPolicyInput_2 {
2076
- /** Policy applied to named types and the analyzed root declaration. */
2077
- readonly type?: DeclarationMetadataPolicyInput$1 | undefined;
2078
- /** Policy applied to fields and object properties. */
2079
- readonly field?: DeclarationMetadataPolicyInput$1 | undefined;
2080
- /** Policy applied to callable/method declarations. */
2081
- readonly method?: DeclarationMetadataPolicyInput$1 | undefined;
2082
- /** Policy applied to enum-member display names during build-time IR resolution. */
2083
- readonly enumMember?: EnumMemberMetadataPolicyInput$1 | undefined;
2084
- }
2085
-
2086
1545
  /**
2087
1546
  * Supported qualifier registration for an extensible metadata slot.
2088
1547
  *
@@ -2117,23 +1576,6 @@ export declare interface MetadataQualifierRegistration {
2117
1576
  readonly inferValue?: MetadataSlotInferenceFn | undefined;
2118
1577
  }
2119
1578
 
2120
- /**
2121
- * Supported qualifier registration for an extensible metadata slot.
2122
- *
2123
- * @public
2124
- */
2125
- declare interface MetadataQualifierRegistration_2 {
2126
- /** Qualifier text without the leading colon. */
2127
- readonly qualifier: string;
2128
- /**
2129
- * Optional source qualifier to use as the base input for this qualifier's
2130
- * inference hook. Defaults to the slot's bare/default value when omitted.
2131
- */
2132
- readonly sourceQualifier?: string | undefined;
2133
- /** Optional inference hook for this qualified value. */
2134
- readonly inferValue?: MetadataSlotInferenceFn_2 | undefined;
2135
- }
2136
-
2137
1579
  /**
2138
1580
  * Stable slot identifier for extensible metadata analysis.
2139
1581
  *
@@ -2148,13 +1590,6 @@ declare type MetadataSlotId$1 = string;
2148
1590
  */
2149
1591
  export declare type MetadataSlotId = string;
2150
1592
 
2151
- /**
2152
- * Stable slot identifier for extensible metadata analysis.
2153
- *
2154
- * @public
2155
- */
2156
- declare type MetadataSlotId_2 = string;
2157
-
2158
1593
  /**
2159
1594
  * Context passed to extensible metadata inference hooks.
2160
1595
  *
@@ -2187,22 +1622,6 @@ export declare interface MetadataSlotInferenceContext extends MetadataInferenceC
2187
1622
  readonly baseValue?: string | undefined;
2188
1623
  }
2189
1624
 
2190
- /**
2191
- * Context passed to extensible metadata inference hooks.
2192
- *
2193
- * @public
2194
- */
2195
- declare interface MetadataSlotInferenceContext_2 extends MetadataInferenceContext_2 {
2196
- /** Stable logical slot identifier. */
2197
- readonly slotId: MetadataSlotId_2;
2198
- /** Tag name associated with the slot, without the `@` prefix. */
2199
- readonly tagName: string;
2200
- /** Optional qualifier being inferred (for example `plural`). */
2201
- readonly qualifier?: string | undefined;
2202
- /** Resolved bare/default value used as the base input for derived qualifiers. */
2203
- readonly baseValue?: string | undefined;
2204
- }
2205
-
2206
1625
  /**
2207
1626
  * Callback used to infer an extensible metadata slot value.
2208
1627
  *
@@ -2217,13 +1636,6 @@ declare type MetadataSlotInferenceFn$1 = (context: MetadataSlotInferenceContext$
2217
1636
  */
2218
1637
  export declare type MetadataSlotInferenceFn = (context: MetadataSlotInferenceContext) => string;
2219
1638
 
2220
- /**
2221
- * Callback used to infer an extensible metadata slot value.
2222
- *
2223
- * @public
2224
- */
2225
- declare type MetadataSlotInferenceFn_2 = (context: MetadataSlotInferenceContext_2) => string;
2226
-
2227
1639
  /**
2228
1640
  * Extensible metadata slot definition shared across build- and lint-time analysis.
2229
1641
  *
@@ -2274,31 +1686,6 @@ export declare interface MetadataSlotRegistration {
2274
1686
  readonly isApplicable?: ((context: MetadataInferenceContext) => boolean) | undefined;
2275
1687
  }
2276
1688
 
2277
- /**
2278
- * Extensible metadata slot definition shared across build- and lint-time analysis.
2279
- *
2280
- * @public
2281
- */
2282
- declare interface MetadataSlotRegistration_2 {
2283
- /** Stable logical slot identifier. */
2284
- readonly slotId: MetadataSlotId_2;
2285
- /** Tag name associated with this slot, without the `@` prefix. */
2286
- readonly tagName: string;
2287
- /** Declaration kinds where the slot is meaningful. */
2288
- readonly declarationKinds: readonly MetadataDeclarationKind_2[];
2289
- /** Whether a bare tag without a qualifier is supported. Defaults to true. */
2290
- readonly allowBare?: boolean | undefined;
2291
- /** Supported qualifiers for this slot. */
2292
- readonly qualifiers?: readonly MetadataQualifierRegistration_2[] | undefined;
2293
- /** Optional inference hook for the bare/default slot value. */
2294
- readonly inferValue?: MetadataSlotInferenceFn_2 | undefined;
2295
- /**
2296
- * Optional applicability hook for declaration-specific rules beyond
2297
- * declaration kind. `buildContext` may carry compiler objects.
2298
- */
2299
- readonly isApplicable?: ((context: MetadataInferenceContext_2) => boolean) | undefined;
2300
- }
2301
-
2302
1689
  /**
2303
1690
  * Scalar metadata disabled unless provided explicitly elsewhere.
2304
1691
  *
@@ -2311,18 +1698,6 @@ declare interface MetadataValueDisabledPolicyInput$1 {
2311
1698
  readonly pluralization?: MetadataPluralizationPolicyInput$1 | undefined;
2312
1699
  }
2313
1700
 
2314
- /**
2315
- * Scalar metadata disabled unless provided explicitly elsewhere.
2316
- *
2317
- * @public
2318
- */
2319
- declare interface MetadataValueDisabledPolicyInput$2 {
2320
- /** Disables inference for this scalar metadata value. */
2321
- readonly mode?: "disabled" | undefined;
2322
- /** Optional policy controlling plural forms of this scalar value. */
2323
- readonly pluralization?: MetadataPluralizationPolicyInput$2 | undefined;
2324
- }
2325
-
2326
1701
  /**
2327
1702
  * Scalar metadata disabled unless provided explicitly elsewhere.
2328
1703
  *
@@ -2349,20 +1724,6 @@ declare interface MetadataValueInferIfMissingPolicyInput$1 {
2349
1724
  readonly pluralization?: MetadataPluralizationPolicyInput$1 | undefined;
2350
1725
  }
2351
1726
 
2352
- /**
2353
- * Scalar metadata may be inferred when missing.
2354
- *
2355
- * @public
2356
- */
2357
- declare interface MetadataValueInferIfMissingPolicyInput$2 {
2358
- /** Infers this scalar metadata value when it is not authored explicitly. */
2359
- readonly mode: "infer-if-missing";
2360
- /** Callback used to infer the missing singular value. */
2361
- readonly infer: MetadataInferenceFn$2;
2362
- /** Optional policy controlling plural forms of this scalar value. */
2363
- readonly pluralization?: MetadataPluralizationPolicyInput$2 | undefined;
2364
- }
2365
-
2366
1727
  /**
2367
1728
  * Scalar metadata may be inferred when missing.
2368
1729
  *
@@ -2384,13 +1745,6 @@ export declare interface MetadataValueInferIfMissingPolicyInput {
2384
1745
  */
2385
1746
  declare type MetadataValuePolicyInput$1 = MetadataValueDisabledPolicyInput$1 | MetadataValueInferIfMissingPolicyInput$1 | MetadataValueRequireExplicitPolicyInput$1;
2386
1747
 
2387
- /**
2388
- * Scalar metadata policy input.
2389
- *
2390
- * @public
2391
- */
2392
- declare type MetadataValuePolicyInput$2 = MetadataValueDisabledPolicyInput$2 | MetadataValueInferIfMissingPolicyInput$2 | MetadataValueRequireExplicitPolicyInput$2;
2393
-
2394
1748
  /**
2395
1749
  * Scalar metadata policy input.
2396
1750
  *
@@ -2410,18 +1764,6 @@ declare interface MetadataValueRequireExplicitPolicyInput$1 {
2410
1764
  readonly pluralization?: MetadataPluralizationPolicyInput$1 | undefined;
2411
1765
  }
2412
1766
 
2413
- /**
2414
- * Scalar metadata must be authored explicitly.
2415
- *
2416
- * @public
2417
- */
2418
- declare interface MetadataValueRequireExplicitPolicyInput$2 {
2419
- /** Requires this scalar metadata value to be authored directly. */
2420
- readonly mode: "require-explicit";
2421
- /** Optional policy controlling plural forms of this scalar value. */
2422
- readonly pluralization?: MetadataPluralizationPolicyInput$2 | undefined;
2423
- }
2424
-
2425
1767
  /**
2426
1768
  * Scalar metadata must be authored explicitly.
2427
1769
  *
@@ -2505,18 +1847,6 @@ export declare interface RuleConditionSchema {
2505
1847
  allOf?: RuleConditionSchema[];
2506
1848
  }
2507
1849
 
2508
- /**
2509
- * JSONForms rule constraints.
2510
- *
2511
- * @public
2512
- */
2513
- declare interface RuleConstraints {
2514
- /** Whether rules are enabled at all */
2515
- enabled?: Severity;
2516
- /** Fine-grained control over rule effects */
2517
- effects?: RuleEffectConstraints;
2518
- }
2519
-
2520
1850
  /**
2521
1851
  * JSON Forms UI Schema type definitions.
2522
1852
  *
@@ -2532,22 +1862,6 @@ declare interface RuleConstraints {
2532
1862
  */
2533
1863
  export declare type RuleEffect = "DISABLE" | "ENABLE" | "HIDE" | "SHOW";
2534
1864
 
2535
- /**
2536
- * JSONForms rule effect constraints.
2537
- *
2538
- * @public
2539
- */
2540
- declare interface RuleEffectConstraints {
2541
- /** SHOW - show element when condition is true */
2542
- SHOW?: Severity;
2543
- /** HIDE - hide element when condition is true */
2544
- HIDE?: Severity;
2545
- /** ENABLE - enable element when condition is true */
2546
- ENABLE?: Severity;
2547
- /** DISABLE - disable element when condition is true */
2548
- DISABLE?: Severity;
2549
- }
2550
-
2551
1865
  /**
2552
1866
  * Condition for a rule.
2553
1867
  *
@@ -2562,16 +1876,6 @@ export declare interface SchemaBasedCondition {
2562
1876
 
2563
1877
  export { setSchemaExtension }
2564
1878
 
2565
- /**
2566
- * Severity level for constraint violations.
2567
- * - "error": Violation fails validation
2568
- * - "warn": Violation emits warning but passes
2569
- * - "off": Feature is allowed (no violation)
2570
- *
2571
- * @public
2572
- */
2573
- declare type Severity = "error" | "off" | "warn";
2574
-
2575
1879
  /**
2576
1880
  * Shared options for schema generation flows that support custom extensions.
2577
1881
  *
@@ -2683,18 +1987,6 @@ export declare const _stripeStdlibExtension: ExtensionDefinition;
2683
1987
  */
2684
1988
  export declare type UISchema = Categorization | GroupLayout | HorizontalLayout | VerticalLayout;
2685
1989
 
2686
- /**
2687
- * UI Schema feature constraints - control JSONForms-specific features.
2688
- *
2689
- * @public
2690
- */
2691
- declare interface UISchemaConstraints {
2692
- /** Layout type constraints */
2693
- layouts?: LayoutTypeConstraints;
2694
- /** Rule (conditional) constraints */
2695
- rules?: RuleConstraints;
2696
- }
2697
-
2698
1990
  /**
2699
1991
  * Union of all UI Schema element types.
2700
1992
  *
@@ -2746,16 +2038,4 @@ export declare interface VocabularyKeywordRegistration {
2746
2038
  readonly schema: ExtensionPayloadValue;
2747
2039
  }
2748
2040
 
2749
- /**
2750
- * Registration for a vocabulary keyword to include in a JSON Schema `$vocabulary` declaration.
2751
- *
2752
- * @public
2753
- */
2754
- declare interface VocabularyKeywordRegistration_2 {
2755
- /** The keyword name (without vendor prefix). */
2756
- readonly keyword: string;
2757
- /** JSON Schema that describes the valid values for this keyword. */
2758
- readonly schema: ExtensionPayloadValue_2;
2759
- }
2760
-
2761
2041
  export { }