@acorex-platform/framework-client 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +7 -0
  2. package/auth/README.md +3 -0
  3. package/common/README.md +3 -0
  4. package/core/README.md +4 -0
  5. package/fesm2022/acorex-platform-framework-client-auth.mjs +1383 -0
  6. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CbzOYCnI.mjs +190 -0
  8. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CbzOYCnI.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-framework-client-common.mjs +9467 -0
  10. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-framework-client-core.mjs +4655 -0
  12. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-framework-client-domain.mjs +3189 -0
  14. package/fesm2022/acorex-platform-framework-client-domain.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +3439 -0
  16. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CWVU3wXL.mjs +134 -0
  18. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CWVU3wXL.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +9777 -0
  20. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +2799 -0
  22. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-CxBxxpmA.mjs +376 -0
  24. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-CxBxxpmA.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-l0JAHKIH.mjs +100 -0
  26. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-l0JAHKIH.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +26299 -0
  28. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +2960 -0
  30. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +4711 -0
  32. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CpkWwygb.mjs +72 -0
  34. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CpkWwygb.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-C_EPAvCU.mjs +29 -0
  36. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CmtTq2Mt.mjs +172 -0
  38. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CmtTq2Mt.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DSx0E3NV.mjs +513 -0
  40. package/fesm2022/acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DSx0E3NV.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-DdfcGV1C.mjs +274 -0
  42. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-DdfcGV1C.mjs.map +1 -0
  43. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs +64 -0
  44. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs.map +1 -0
  45. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-B5kSWxGk.mjs +34 -0
  46. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-B5kSWxGk.mjs.map +1 -0
  47. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +28553 -0
  48. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-framework-client-native.mjs +155 -0
  50. package/fesm2022/acorex-platform-framework-client-native.mjs.map +1 -0
  51. package/fesm2022/acorex-platform-framework-client-runtime.mjs +911 -0
  52. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DnTHwsDJ.mjs +160 -0
  54. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DnTHwsDJ.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BpR9g6QS.mjs +121 -0
  56. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BpR9g6QS.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-D1a7UI71.mjs +236 -0
  58. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-D1a7UI71.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-D--_MIar.mjs +48 -0
  60. package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-D--_MIar.mjs.map +1 -0
  61. package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-Byyqk8pH.mjs +42 -0
  62. package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-Byyqk8pH.mjs.map +1 -0
  63. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  64. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +4160 -0
  66. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CXSGiTCK.mjs +55 -0
  68. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CXSGiTCK.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BY5clQ1J.mjs +57 -0
  70. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BY5clQ1J.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DEL2YOTP.mjs +234 -0
  72. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DEL2YOTP.mjs.map +1 -0
  73. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BXl8u4Yp.mjs +94 -0
  74. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BXl8u4Yp.mjs.map +1 -0
  75. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-i2sOOkVj.mjs +86 -0
  76. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-i2sOOkVj.mjs.map +1 -0
  77. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +2375 -0
  78. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -0
  79. package/fesm2022/acorex-platform-framework-client-workflow.mjs +2836 -0
  80. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -0
  81. package/fesm2022/acorex-platform-framework-client.mjs +6 -0
  82. package/fesm2022/acorex-platform-framework-client.mjs.map +1 -0
  83. package/layout/builder/README.md +1578 -0
  84. package/layout/components/README.md +3 -0
  85. package/layout/designer/README.md +4 -0
  86. package/layout/entity/README.md +4 -0
  87. package/layout/views/README.md +3 -0
  88. package/layout/widget-core/README.md +4 -0
  89. package/layout/widgets/README.md +3 -0
  90. package/native/README.md +4 -0
  91. package/package.json +98 -0
  92. package/runtime/README.md +3 -0
  93. package/themes/default/README.md +3 -0
  94. package/themes/shared/README.md +3 -0
  95. package/types/acorex-platform-framework-client-auth.d.ts +690 -0
  96. package/types/acorex-platform-framework-client-common.d.ts +3287 -0
  97. package/types/acorex-platform-framework-client-core.d.ts +1849 -0
  98. package/types/acorex-platform-framework-client-domain.d.ts +1968 -0
  99. package/types/acorex-platform-framework-client-layout-builder.d.ts +1058 -0
  100. package/types/acorex-platform-framework-client-layout-components.d.ts +3362 -0
  101. package/types/acorex-platform-framework-client-layout-designer.d.ts +501 -0
  102. package/types/acorex-platform-framework-client-layout-entity.d.ts +4374 -0
  103. package/types/acorex-platform-framework-client-layout-views.d.ts +975 -0
  104. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +1080 -0
  105. package/types/acorex-platform-framework-client-layout-widgets.d.ts +5263 -0
  106. package/types/acorex-platform-framework-client-native.d.ts +28 -0
  107. package/types/acorex-platform-framework-client-runtime.d.ts +301 -0
  108. package/types/acorex-platform-framework-client-themes-default.d.ts +889 -0
  109. package/types/acorex-platform-framework-client-themes-shared.d.ts +202 -0
  110. package/types/acorex-platform-framework-client-workflow.d.ts +1345 -0
  111. package/types/acorex-platform-framework-client.d.ts +2 -0
  112. package/workflow/README.md +4 -0
@@ -0,0 +1,1968 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Type, EnvironmentProviders } from '@angular/core';
3
+ import { AXPInterfaceDefinition, AXPPluginDefinition, AXPValidationRuleDefinition, AXPRelationDefinition, AXPMenuDefinitionRecord, AXPPermissionGroupDefinitionRecord, AXPCommandRegistryRecord, AXPQueryRegistryRecord, AXPWidgetCatalogRecord, AXPDomainAction, AXPAggregateDefinition, AXPModuleDefinition, AXPInterfaceDefinitionValue, AXPPropertyFeatures, AXPPropertyDefinition, AXPEntityPropertyFeatures, AXPEntityPropertyDefinition, AXPEntityType, AXPEntityDefinition, AXPRelationshipCardinality, AXPRelationshipKind } from '@acorex-platform/framework-shared/domain';
4
+ import * as i1 from '@acorex-platform/framework-client/runtime';
5
+ import { AXPValidationRules, AXPMetaData, AXPDataType, AXPOptionsData } from '@acorex-platform/framework-shared/core';
6
+
7
+ /**
8
+ * Token for entity CRUD setup. Consumed by AXPDomainModule.
9
+ * The actual provider is provideEntity() from @acorex-platform/framework-client/layout/entity
10
+ * to avoid circular dependency (domain must not depend on layout/entity).
11
+ */
12
+ declare const AXP_ENTITY_CRUD_SETUP: InjectionToken<void>;
13
+
14
+ /**
15
+ * Service interface for CRUD operations on entity and related definition records stored in Dexie/Firestore.
16
+ * Provided by connectivity mock when using Dexie or Firestore as entity definition source.
17
+ * Use this service from anywhere in the app (not just mock).
18
+ */
19
+ interface AXPEntityDefinitionCrudService {
20
+ list(): Promise<{
21
+ name: string;
22
+ module: string;
23
+ entityName?: string;
24
+ }[]>;
25
+ getRaw(moduleName: string, entityName: string): Promise<Record<string, unknown> | null>;
26
+ create(entityName: string, definition: Record<string, unknown>): Promise<void>;
27
+ update(entityName: string, definition: Record<string, unknown>): Promise<void>;
28
+ delete(entityName: string): Promise<void>;
29
+ listInterfaces(): Promise<AXPInterfaceDefinition[]>;
30
+ listInterfacesByCategory(categoryName: string): Promise<AXPInterfaceDefinition[]>;
31
+ getInterface(name: string): Promise<AXPInterfaceDefinition | null>;
32
+ createInterface(name: string, definition: AXPInterfaceDefinition): Promise<void>;
33
+ updateInterface(name: string, definition: AXPInterfaceDefinition): Promise<void>;
34
+ deleteInterface(name: string): Promise<void>;
35
+ listPlugins(): Promise<AXPPluginDefinition[]>;
36
+ getPlugin(name: string): Promise<AXPPluginDefinition | null>;
37
+ createPlugin(name: string, definition: AXPPluginDefinition): Promise<void>;
38
+ updatePlugin(name: string, definition: AXPPluginDefinition): Promise<void>;
39
+ deletePlugin(name: string): Promise<void>;
40
+ listValidations(): Promise<AXPValidationRuleDefinition[]>;
41
+ getValidation(name: string): Promise<AXPValidationRuleDefinition | null>;
42
+ createValidation(name: string, definition: AXPValidationRuleDefinition): Promise<void>;
43
+ updateValidation(name: string, definition: AXPValidationRuleDefinition): Promise<void>;
44
+ deleteValidation(name: string): Promise<void>;
45
+ listRelations(): Promise<Array<AXPRelationDefinition & {
46
+ id: string;
47
+ }>>;
48
+ getRelation(id: string): Promise<AXPRelationDefinition | null>;
49
+ createRelation(id: string, definition: AXPRelationDefinition): Promise<void>;
50
+ updateRelation(id: string, definition: AXPRelationDefinition): Promise<void>;
51
+ deleteRelation(id: string): Promise<void>;
52
+ listModules(): Promise<Array<{
53
+ name: string;
54
+ title?: string;
55
+ icon?: string;
56
+ }>>;
57
+ getModule(name: string): Promise<{
58
+ name: string;
59
+ title?: string;
60
+ icon?: string;
61
+ } | null>;
62
+ createModule(name: string, definition: {
63
+ name: string;
64
+ title?: string;
65
+ icon?: string;
66
+ }): Promise<void>;
67
+ updateModule(name: string, definition: {
68
+ name: string;
69
+ title?: string;
70
+ icon?: string;
71
+ }): Promise<void>;
72
+ deleteModule(name: string): Promise<void>;
73
+ listAggregates(filter?: {
74
+ module?: string;
75
+ }): Promise<Array<{
76
+ id: string;
77
+ definition: Record<string, unknown>;
78
+ }>>;
79
+ getAggregate(id: string): Promise<Record<string, unknown> | null>;
80
+ createAggregate(id: string, definition: Record<string, unknown>): Promise<void>;
81
+ updateAggregate(id: string, definition: Record<string, unknown>): Promise<void>;
82
+ deleteAggregate(id: string): Promise<void>;
83
+ listMenus(): Promise<Array<{
84
+ id: string;
85
+ definition: AXPMenuDefinitionRecord;
86
+ }>>;
87
+ getMenu(id: string): Promise<AXPMenuDefinitionRecord | null>;
88
+ createMenu(id: string, definition: AXPMenuDefinitionRecord): Promise<void>;
89
+ updateMenu(id: string, definition: AXPMenuDefinitionRecord): Promise<void>;
90
+ deleteMenu(id: string): Promise<void>;
91
+ listPermissionGroups(): Promise<Array<{
92
+ id: string;
93
+ definition: AXPPermissionGroupDefinitionRecord;
94
+ }>>;
95
+ getPermissionGroup(id: string): Promise<AXPPermissionGroupDefinitionRecord | null>;
96
+ createPermissionGroup(id: string, definition: AXPPermissionGroupDefinitionRecord): Promise<void>;
97
+ updatePermissionGroup(id: string, definition: AXPPermissionGroupDefinitionRecord): Promise<void>;
98
+ deletePermissionGroup(id: string): Promise<void>;
99
+ listCommands(): Promise<Array<{
100
+ id: string;
101
+ definition: AXPCommandRegistryRecord;
102
+ }>>;
103
+ getCommand(id: string): Promise<AXPCommandRegistryRecord | null>;
104
+ createCommand(id: string, definition: AXPCommandRegistryRecord): Promise<void>;
105
+ updateCommand(id: string, definition: AXPCommandRegistryRecord): Promise<void>;
106
+ deleteCommand(id: string): Promise<void>;
107
+ listQueries(): Promise<Array<{
108
+ id: string;
109
+ definition: AXPQueryRegistryRecord;
110
+ }>>;
111
+ getQuery(id: string): Promise<AXPQueryRegistryRecord | null>;
112
+ createQuery(id: string, definition: AXPQueryRegistryRecord): Promise<void>;
113
+ updateQuery(id: string, definition: AXPQueryRegistryRecord): Promise<void>;
114
+ deleteQuery(id: string): Promise<void>;
115
+ listWidgets(): Promise<Array<{
116
+ id: string;
117
+ definition: AXPWidgetCatalogRecord;
118
+ }>>;
119
+ getWidget(id: string): Promise<AXPWidgetCatalogRecord | null>;
120
+ createWidget(id: string, definition: AXPWidgetCatalogRecord): Promise<void>;
121
+ updateWidget(id: string, definition: AXPWidgetCatalogRecord): Promise<void>;
122
+ deleteWidget(id: string): Promise<void>;
123
+ }
124
+ declare const AXP_ENTITY_DEFINITION_CRUD_SERVICE: InjectionToken<AXPEntityDefinitionCrudService | null>;
125
+
126
+ declare class AXPDomainModule {
127
+ private _commandSetup;
128
+ /**
129
+ * Optional bootstrap hooks for registered property definitions (see {@link AXP_PROPERTY_SETUP} and related tokens).
130
+ */
131
+ private _propertySetup;
132
+ private _propertyMiddlewareSetup;
133
+ private _propertyLoaderSetup;
134
+ /**
135
+ * Injection token for domain loader setup initialization.
136
+ *
137
+ * Used during application bootstrap to register domain loaders
138
+ * that can provide domain definitions on-demand when they're not found in
139
+ * the registry.
140
+ */
141
+ private _domainLoaderSetup;
142
+ private _domainMiddlewareSetup;
143
+ private _domainSetup;
144
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDomainModule, never>;
145
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPDomainModule, never, [typeof i1.AXPRuntimeModule], never>;
146
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXPDomainModule>;
147
+ }
148
+
149
+ /**
150
+ * Simple runtime model for aggregate definitions with parent references and navigation helpers.
151
+ * Relations are stored in a separate collection; join when needed.
152
+ */
153
+ declare class AXPAggregateModel {
154
+ readonly name: string;
155
+ readonly title: string;
156
+ readonly validations: AXPValidationRules;
157
+ readonly actions: AXPDomainAction[];
158
+ readonly parent: any;
159
+ readonly entityReferences: Record<string, string>;
160
+ constructor(definition: AXPAggregateDefinition, parent: any);
161
+ /**
162
+ * Extract entity references from various entity definition formats
163
+ * and convert to simple string map
164
+ */
165
+ private extractEntityReferences;
166
+ /**
167
+ * Get entity reference by name
168
+ *
169
+ * @param entityName Name of the entity
170
+ * @returns Entity reference string or undefined if not found
171
+ */
172
+ getEntityReference(entityName: string): string | undefined;
173
+ /**
174
+ * Get full path for an entity in this aggregate
175
+ *
176
+ * @param entityName Name of the entity
177
+ * @returns Full entity path
178
+ */
179
+ getEntityPath(entityName: string): string;
180
+ /**
181
+ * Get all available entity names
182
+ *
183
+ * @returns Array of entity names
184
+ */
185
+ getEntityNames(): string[];
186
+ /**
187
+ * Check if entity exists in this aggregate
188
+ *
189
+ * @param entityName Name of the entity
190
+ * @returns True if entity exists
191
+ */
192
+ hasEntity(entityName: string): boolean;
193
+ /**
194
+ * Get parent module
195
+ *
196
+ * @returns Parent module model
197
+ */
198
+ getModule(): any;
199
+ /**
200
+ * Get full aggregate path (module.aggregate)
201
+ *
202
+ * @returns Full path string
203
+ */
204
+ getPath(): string;
205
+ /**
206
+ * Get aggregate statistics
207
+ *
208
+ * @returns Statistics object
209
+ */
210
+ getStatistics(): {
211
+ entityCount: number;
212
+ actionCount: number;
213
+ validationCount: number;
214
+ };
215
+ /**
216
+ * Convert back to interface definition
217
+ *
218
+ * @returns Aggregate definition
219
+ */
220
+ toDefinition(): AXPAggregateDefinition;
221
+ /**
222
+ * Validate the aggregate structure (synchronous validation only)
223
+ *
224
+ * @returns Array of validation errors
225
+ */
226
+ validate(): string[];
227
+ }
228
+
229
+ /**
230
+ * Simple runtime model for module definitions with navigation helpers.
231
+ *
232
+ * This model is a pure data structure that provides:
233
+ * - Access to module properties and metadata
234
+ * - Navigation helpers for finding aggregates
235
+ * - Hierarchy navigation and path generation
236
+ *
237
+ * All loading and resolution logic has been moved to AXPDomainRegistry.
238
+ */
239
+ declare class AXPModuleModel {
240
+ readonly name: string;
241
+ readonly title: string;
242
+ readonly aggregates: AXPAggregateModel[];
243
+ constructor(definition: AXPModuleDefinition);
244
+ /**
245
+ * Find aggregate by name
246
+ *
247
+ * @param name Aggregate name
248
+ * @returns Aggregate model or undefined if not found
249
+ */
250
+ findAggregate(name: string): AXPAggregateModel | undefined;
251
+ /**
252
+ * Get all aggregates
253
+ *
254
+ * @returns Array of all aggregate models
255
+ */
256
+ getAllAggregates(): AXPAggregateModel[];
257
+ /**
258
+ * Check if aggregate exists in this module
259
+ *
260
+ * @param name Aggregate name
261
+ * @returns True if aggregate exists
262
+ */
263
+ hasAggregate(name: string): boolean;
264
+ /**
265
+ * Get all aggregate names
266
+ *
267
+ * @returns Array of aggregate names
268
+ */
269
+ getAggregateNames(): string[];
270
+ /**
271
+ * Find entity reference across all aggregates
272
+ *
273
+ * @param entityName Entity name to search for
274
+ * @returns Object with aggregate and entity reference, or undefined if not found
275
+ */
276
+ findEntityReference(entityName: string): {
277
+ aggregate: AXPAggregateModel;
278
+ entityReference: string;
279
+ } | undefined;
280
+ /**
281
+ * Get entity path for a specific entity in a specific aggregate
282
+ *
283
+ * @param aggregateName Aggregate name
284
+ * @param entityName Entity name
285
+ * @returns Full entity path
286
+ */
287
+ getEntityPath(aggregateName: string, entityName: string): string;
288
+ /**
289
+ * Get aggregate path
290
+ *
291
+ * @param aggregateName Aggregate name
292
+ * @returns Full aggregate path
293
+ */
294
+ getAggregatePath(aggregateName: string): string;
295
+ /**
296
+ * Get all entity references across all aggregates
297
+ *
298
+ * @returns Map of entity name to full path
299
+ */
300
+ getAllEntityReferences(): Record<string, string>;
301
+ /**
302
+ * Relations are stored in a separate collection. Use relation queries for join when needed.
303
+ * @deprecated Relations are no longer nested in aggregates.
304
+ */
305
+ getAllRelations(): Array<{
306
+ aggregate: AXPAggregateModel;
307
+ relation: any;
308
+ }>;
309
+ /**
310
+ * Validate the module structure (synchronous validation only)
311
+ *
312
+ * @returns Array of validation errors
313
+ */
314
+ validate(): string[];
315
+ /**
316
+ * Get module statistics
317
+ *
318
+ * @returns Statistics object
319
+ */
320
+ getStatistics(): {
321
+ aggregateCount: number;
322
+ entityCount: number;
323
+ actionCount: number;
324
+ validationCount: number;
325
+ };
326
+ /**
327
+ * Convert back to interface definition
328
+ *
329
+ * @returns Module definition
330
+ */
331
+ toDefinition(): AXPModuleDefinition;
332
+ }
333
+
334
+ /**
335
+ * Runtime model for a {@link AXPPropertyDefinition} with helper methods.
336
+ */
337
+ declare class AXPPropertyModel {
338
+ readonly name: string;
339
+ readonly title: string;
340
+ readonly interface: AXPInterfaceDefinitionValue;
341
+ readonly validations: AXPValidationRules;
342
+ readonly features: AXPPropertyFeatures;
343
+ readonly metadata?: AXPMetaData;
344
+ readonly description?: string;
345
+ readonly icon?: string;
346
+ readonly defaultValue?: unknown;
347
+ readonly disabled?: boolean;
348
+ readonly dataType: AXPDataType;
349
+ constructor(definition: AXPPropertyDefinition);
350
+ /**
351
+ * Get widget options
352
+ */
353
+ getWidgetOptions(): AXPOptionsData | undefined;
354
+ /**
355
+ * Check if the property is disabled
356
+ */
357
+ isDisabled(): boolean;
358
+ /**
359
+ * Check if searchable
360
+ */
361
+ isSearchable(): boolean;
362
+ /**
363
+ * Check if full text searchable
364
+ */
365
+ isFullTextSearchable(): boolean;
366
+ /**
367
+ * Check if filterable
368
+ */
369
+ isFilterable(): boolean;
370
+ /**
371
+ * Check if inline filterable
372
+ */
373
+ isInlineFilterable(): boolean;
374
+ /**
375
+ * Check if sortable
376
+ */
377
+ isSortable(): boolean;
378
+ /**
379
+ * Check if auditable
380
+ */
381
+ isAuditable(): boolean;
382
+ /**
383
+ * Validate the property definition structure
384
+ */
385
+ validate(): Promise<string[]>;
386
+ /**
387
+ * Get property capabilities
388
+ */
389
+ getCapabilities(): {
390
+ searchable: boolean;
391
+ fullTextSearchable: boolean;
392
+ filterable: boolean;
393
+ inlineFilterable: boolean;
394
+ sortable: boolean;
395
+ auditable: boolean;
396
+ disabled: boolean;
397
+ };
398
+ /**
399
+ * Get property summary
400
+ */
401
+ getSummary(): {
402
+ widget: string;
403
+ hasOptions: boolean;
404
+ hasMetadata: boolean;
405
+ hasValidations: boolean;
406
+ capabilityCount: number;
407
+ };
408
+ /**
409
+ * Convert back to interface definition
410
+ */
411
+ toDefinition(): AXPPropertyDefinition;
412
+ }
413
+
414
+ /**
415
+ * Loads {@link AXPPropertyDefinition} instances on demand when not registered in {@link AXPPropertyRegistry}.
416
+ */
417
+ interface AXPPropertyLoader {
418
+ /**
419
+ * Optional priority for loader ordering. Higher numbers = higher priority.
420
+ * If not specified, uses registration order.
421
+ */
422
+ readonly priority?: number;
423
+ /**
424
+ * Determines if this loader can handle the given registered property name.
425
+ */
426
+ canLoad(propertyName: string): boolean;
427
+ /**
428
+ * Loads the property definition for the given name, or null if not found.
429
+ */
430
+ load(propertyName: string): Promise<AXPPropertyDefinition | null>;
431
+ }
432
+
433
+ /**
434
+ * Context class for schema middleware operations providing a fluent API for schema manipulation.
435
+ *
436
+ * This class serves as the interface between middleware functions and schema definitions,
437
+ * offering methods to modify various aspects of a schema including:
438
+ * - Widget configuration and options
439
+ * - Validation rules
440
+ * - Feature flags (searchable, filterable, sortable)
441
+ * - Metadata and custom properties
442
+ * - UI behavior (visibility, readonly state)
443
+ *
444
+ * All methods return `this` to enable fluent method chaining.
445
+ *
446
+ * @example
447
+ * ```typescript
448
+ * // Example middleware using the context
449
+ * (context) => {
450
+ * context
451
+ * .addValidation({ rule: 'required' })
452
+ * .searchable(true)
453
+ * .withDefaultValue('default text')
454
+ * .readonly(false);
455
+ * }
456
+ * ```
457
+ */
458
+ declare class AXPPropertyMiddlewareContext {
459
+ private _definition;
460
+ constructor(definition: AXPPropertyDefinition);
461
+ /**
462
+ * Get the current schema definition (readonly access)
463
+ */
464
+ get definition(): Readonly<AXPPropertyDefinition>;
465
+ /**
466
+ * Get the schema name for conditional logic
467
+ */
468
+ get name(): string;
469
+ /**
470
+ * Set a default value for the widget
471
+ * @param defaultValue The default value to set
472
+ */
473
+ withDefaultValue(defaultValue: unknown): this;
474
+ /**
475
+ * Remove the default value from the widget
476
+ */
477
+ removeDefaultValue(): this;
478
+ /**
479
+ * Add multiple validation rules to the schema
480
+ * @param rules Array of validation rules to add
481
+ */
482
+ withValidation(rules: any[]): this;
483
+ /**
484
+ * Add a single validation rule to the schema
485
+ * @param rule The validation rule to add
486
+ */
487
+ addValidation(rule: any): this;
488
+ /**
489
+ * Add a single validation rule (alias for addValidation for backward compatibility)
490
+ * @param rule The validation rule to add
491
+ */
492
+ withValidationRule(rule: any): this;
493
+ /**
494
+ * Remove all validation rules from the schema
495
+ */
496
+ clearValidations(): this;
497
+ /**
498
+ * Remove a specific validation rule by its rule name
499
+ * @param ruleName The name of the rule to remove (e.g., 'required', 'email')
500
+ */
501
+ removeValidation(ruleName: string): this;
502
+ /**
503
+ * Set or merge widget options
504
+ * @param options Object containing widget-specific options to merge
505
+ */
506
+ withWidgetOptions(options: Record<string, unknown>): this;
507
+ /**
508
+ * Remove a specific widget option by key
509
+ * @param optionKey The key of the option to remove
510
+ */
511
+ removeWidgetOption(optionKey: string): this;
512
+ /**
513
+ * Change the widget type for this schema
514
+ * @param widgetType The new widget type identifier
515
+ */
516
+ withWidgetType(widgetType: string): this;
517
+ /**
518
+ * Configure general features using an object
519
+ * @param features Object containing feature configurations to merge
520
+ */
521
+ withFeatures(features: Partial<any>): this;
522
+ /**
523
+ * Configure searchable feature with fine-grained control
524
+ * @param enabled Whether searching is enabled
525
+ * @param fullText Whether full-text search is enabled
526
+ */
527
+ searchable(enabled?: boolean, fullText?: boolean): this;
528
+ /**
529
+ * Configure filterable feature with inline filter support
530
+ * @param enabled Whether filtering is enabled
531
+ * @param inline Whether inline filtering is supported
532
+ */
533
+ filterable(enabled?: boolean, inline?: boolean): this;
534
+ /**
535
+ * Configure sortable feature
536
+ * @param enabled Whether sorting is enabled
537
+ */
538
+ sortable(enabled?: boolean): this;
539
+ /**
540
+ * Add or merge metadata to the schema
541
+ * @param metadata Object containing metadata to merge
542
+ */
543
+ withMetadata(metadata: any): this;
544
+ /**
545
+ * Remove a specific metadata property by key
546
+ * @param key The metadata key to remove
547
+ */
548
+ removeMetadata(key: string): this;
549
+ /**
550
+ * Set the disabled state of the widget
551
+ * @param isDisabled Whether the widget should be disabled
552
+ */
553
+ disabled(isDisabled?: boolean): this;
554
+ /**
555
+ * Set the visibility of the widget
556
+ * @param visible Whether the widget should be visible
557
+ */
558
+ withVisibility(visible: boolean): this;
559
+ /**
560
+ * Set the readonly state of the widget
561
+ * @param isReadonly Whether the widget should be readonly
562
+ */
563
+ readonly(isReadonly?: boolean): this;
564
+ }
565
+
566
+ /**
567
+ * Middleware that can transform a property definition during resolution.
568
+ *
569
+ * @param context - Mutable {@link AXPPropertyMiddlewareContext} wrapping a cloned {@link AXPPropertyDefinition}.
570
+ */
571
+ type AXPPropertyMiddleware = (context: AXPPropertyMiddlewareContext) => void | Promise<void>;
572
+
573
+ /**
574
+ * Options for registering a schema with additional metadata and middleware
575
+ */
576
+ interface AXPPropertyRegistrationOptions {
577
+ /** Optional description for documentation purposes */
578
+ description?: string;
579
+ /** Tags for categorizing and finding schemas */
580
+ tags?: string[];
581
+ /** Version information for schema evolution */
582
+ version?: string;
583
+ /** Schema-specific middleware that applies only to this schema */
584
+ middleware?: AXPPropertyMiddleware[];
585
+ }
586
+ /**
587
+ * Internal representation of a registered schema with metadata
588
+ */
589
+ interface AXPRegisteredProperty {
590
+ /** Unique identifier for the schema */
591
+ name: string;
592
+ /** The actual schema definition */
593
+ definition: AXPPropertyDefinition;
594
+ /** Registration options and metadata */
595
+ options: AXPPropertyRegistrationOptions;
596
+ /** Timestamp when the schema was registered */
597
+ registeredAt: Date;
598
+ }
599
+ /**
600
+ * Central registry for managing schema definitions, middleware, and dynamic loading.
601
+ *
602
+ * Provides:
603
+ * - Schema registration and retrieval
604
+ * - Middleware processing pipeline
605
+ * - On-demand schema loading
606
+ * - Caching and performance optimization
607
+ */
608
+ declare class AXPPropertyRegistry {
609
+ private readonly _registrations;
610
+ private readonly _globalMiddleware;
611
+ private readonly _modelCache;
612
+ private _loaders;
613
+ constructor();
614
+ /**
615
+ * Register a schema definition with optional metadata and middleware
616
+ */
617
+ register(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): void;
618
+ /**
619
+ * Register multiple schemas at once for batch operations
620
+ */
621
+ registerBatch(entries: {
622
+ name: string;
623
+ definition: AXPPropertyDefinition;
624
+ options?: AXPPropertyRegistrationOptions;
625
+ }[]): void;
626
+ /**
627
+ * Remove a schema from the registry
628
+ */
629
+ unregister(name: string): boolean;
630
+ /**
631
+ * Check if a schema is currently registered
632
+ */
633
+ isRegistered(name: string): boolean;
634
+ /**
635
+ * Resolve a schema by name with full middleware processing and caching.
636
+ * Supports on-demand loading if schema is not registered.
637
+ */
638
+ resolve(name: string): Promise<AXPPropertyModel>;
639
+ /**
640
+ * Synchronous resolution without middleware processing.
641
+ * Use only when middleware is not needed for performance.
642
+ */
643
+ resolveSync(name: string): AXPPropertyModel;
644
+ /**
645
+ * Add global middleware that applies to all schema resolutions
646
+ */
647
+ addGlobalMiddleware(middleware: AXPPropertyMiddleware): void;
648
+ /**
649
+ * Remove specific global middleware
650
+ */
651
+ removeGlobalMiddleware(middleware: AXPPropertyMiddleware): boolean;
652
+ /**
653
+ * Clear all global middleware
654
+ */
655
+ clearGlobalMiddleware(): void;
656
+ /**
657
+ * Add a schema loader for on-demand loading
658
+ */
659
+ addLoader(loader: Type<AXPPropertyLoader>): void;
660
+ /**
661
+ * Get all registered schema names
662
+ */
663
+ getRegisteredNames(): string[];
664
+ /**
665
+ * Get detailed registration information for a schema
666
+ */
667
+ getRegisteredProperty(name: string): AXPRegisteredProperty | undefined;
668
+ /**
669
+ * Get all registered properties with their metadata
670
+ */
671
+ getAllRegisteredProperties(): AXPRegisteredProperty[];
672
+ /**
673
+ * Find registered properties by tag for categorization
674
+ */
675
+ findByTag(tag: string): AXPRegisteredProperty[];
676
+ /**
677
+ * Find registered properties by widget type for widget-specific operations
678
+ */
679
+ findByWidget(widgetType: string): AXPRegisteredProperty[];
680
+ /**
681
+ * Get comprehensive registry statistics
682
+ */
683
+ getStatistics(): {
684
+ propertyCount: number;
685
+ globalMiddlewareCount: number;
686
+ propertiesByWidget: {
687
+ [widget: string]: number;
688
+ };
689
+ propertiesByTag: {
690
+ [tag: string]: number;
691
+ };
692
+ };
693
+ /**
694
+ * Clear all cached models (useful when schemas need to be reloaded)
695
+ */
696
+ clearCache(): void;
697
+ /**
698
+ * Invalidate cache for a specific schema
699
+ */
700
+ invalidateCache(name: string): void;
701
+ /**
702
+ * Clear all registered schemas, middleware, and cached models
703
+ */
704
+ clear(): void;
705
+ /**
706
+ * Attempt to load schema from registered loaders
707
+ */
708
+ private loadFromLoaders;
709
+ /**
710
+ * Get loaders sorted by priority (lazy initialization)
711
+ */
712
+ private getLoaders;
713
+ /**
714
+ * Create a deep clone of a schema definition to prevent mutations
715
+ */
716
+ private cloneDefinition;
717
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPropertyRegistry, never>;
718
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPPropertyRegistry>;
719
+ }
720
+
721
+ /**
722
+ * High-level facade for registered property definitions ({@link AXPPropertyDefinition}).
723
+ *
724
+ * Wraps {@link AXPPropertyRegistry} with convenience methods for resolution and discovery.
725
+ */
726
+ declare class AXPPropertyService {
727
+ private readonly registry;
728
+ /**
729
+ * Register a property definition with optional configuration
730
+ */
731
+ register(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): void;
732
+ /**
733
+ * Register multiple property definitions at once
734
+ */
735
+ registerBatch(entries: {
736
+ name: string;
737
+ definition: AXPPropertyDefinition;
738
+ options?: AXPPropertyRegistrationOptions;
739
+ }[]): void;
740
+ /**
741
+ * Remove a property definition from the registry
742
+ */
743
+ unregister(name: string): boolean;
744
+ /**
745
+ * Check if a property definition is registered by name
746
+ */
747
+ isRegistered(name: string): boolean;
748
+ /**
749
+ * Get all registered property names
750
+ */
751
+ getRegisteredNames(): string[];
752
+ /**
753
+ * Clear all registrations and reset the registry
754
+ */
755
+ clear(): void;
756
+ /**
757
+ * Resolve a registered property by name with full middleware processing
758
+ */
759
+ resolve(name: string): Promise<AXPPropertyModel>;
760
+ /**
761
+ * Resolve synchronously without middleware (for performance)
762
+ */
763
+ resolveSync(name: string): AXPPropertyModel;
764
+ /**
765
+ * Resolve multiple registered properties for form building and batch operations
766
+ */
767
+ resolveMultiple(fieldConfigs: {
768
+ name: string;
769
+ propertyName: string;
770
+ }[]): Promise<{
771
+ name: string;
772
+ property: AXPPropertyModel;
773
+ }[]>;
774
+ /**
775
+ * Add global middleware that applies to all property resolutions
776
+ */
777
+ addGlobalMiddleware(middleware: AXPPropertyMiddleware): void;
778
+ /**
779
+ * Remove specific global middleware
780
+ */
781
+ removeGlobalMiddleware(middleware: AXPPropertyMiddleware): boolean;
782
+ /**
783
+ * Clear all global middleware
784
+ */
785
+ clearGlobalMiddleware(): void;
786
+ /**
787
+ * Get detailed information about a registered property definition
788
+ */
789
+ getRegisteredProperty(name: string): AXPRegisteredProperty | undefined;
790
+ /**
791
+ * Get all registered property definitions with their metadata
792
+ */
793
+ getAllRegisteredProperties(): AXPRegisteredProperty[];
794
+ /**
795
+ * Find registered properties by tag for categorization and grouping
796
+ */
797
+ findByTag(tag: string): AXPRegisteredProperty[];
798
+ /**
799
+ * Find registered properties by widget type for widget-specific operations
800
+ */
801
+ findByWidget(widgetType: string): AXPRegisteredProperty[];
802
+ /**
803
+ * Get comprehensive registry statistics and analytics
804
+ */
805
+ getStatistics(): {
806
+ mostUsedWidgets: string[];
807
+ mostUsedTags: string[];
808
+ propertyCount: number;
809
+ globalMiddlewareCount: number;
810
+ propertiesByWidget: {
811
+ [widget: string]: number;
812
+ };
813
+ propertiesByTag: {
814
+ [tag: string]: number;
815
+ };
816
+ };
817
+ /**
818
+ * Validate that all referenced property names exist in the registry
819
+ */
820
+ validatePropertyReferences(propertyNames: string[]): {
821
+ valid: boolean;
822
+ missingPropertyNames: string[];
823
+ };
824
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPropertyService, never>;
825
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPPropertyService>;
826
+ }
827
+
828
+ /**
829
+ * Configuration for a schema loader with optional priority setting
830
+ */
831
+ interface AXPPropertyLoaderConfig {
832
+ /** The loader class to instantiate */
833
+ loader: Type<AXPPropertyLoader>;
834
+ /** Optional priority for loader ordering (higher = higher priority) */
835
+ priority?: number;
836
+ }
837
+ /**
838
+ * Provide schema loaders for on-demand schema loading.
839
+ *
840
+ * Schema loaders enable the registry to load schemas that are not registered
841
+ * at build time. This is useful for:
842
+ * - Loading schemas from external APIs
843
+ * - Dynamic schema generation
844
+ * - Lazy loading of large schema sets
845
+ * - Development-time schema hot-reloading
846
+ *
847
+ * @param loaders Array of loader classes or loader configurations
848
+ * @returns Environment providers for dependency injection
849
+ *
850
+ * @example
851
+ * ```typescript
852
+ * // Simple loader registration
853
+ * providePropertyLoaders([
854
+ * HttpSchemaLoader,
855
+ * FileSystemSchemaLoader
856
+ * ])
857
+ *
858
+ * // With priority configuration
859
+ * providePropertyLoaders([
860
+ * { loader: HttpSchemaLoader, priority: 10 },
861
+ * { loader: FileSystemSchemaLoader, priority: 5 }
862
+ * ])
863
+ * ```
864
+ */
865
+ declare function providePropertyLoaders(loaders: Array<Type<AXPPropertyLoader> | AXPPropertyLoaderConfig>): EnvironmentProviders;
866
+
867
+ /**
868
+ * Schema entry for registration containing definition and optional metadata
869
+ */
870
+ interface AXPPropertyEntry {
871
+ /** The schema definition to register */
872
+ definition: AXPPropertyDefinition;
873
+ /** Optional registration options and metadata */
874
+ options?: AXPPropertyRegistrationOptions;
875
+ }
876
+ /**
877
+ * Provide schema setups for registration during application bootstrap.
878
+ *
879
+ * This is the primary way to register schemas that are known at build time.
880
+ * Schemas registered this way are immediately available in the registry.
881
+ *
882
+ * @param schemas Array of schema entries to register
883
+ * @returns Environment providers for dependency injection
884
+ *
885
+ * @example
886
+ * ```typescript
887
+ * providePropertySetups([
888
+ * {
889
+ * definition: emailSchema,
890
+ * options: {
891
+ * tags: ['user', 'contact'],
892
+ * description: 'Email field schema'
893
+ * }
894
+ * },
895
+ * {
896
+ * definition: phoneSchema,
897
+ * options: { tags: ['contact'] }
898
+ * }
899
+ * ])
900
+ * ```
901
+ */
902
+ declare function providePropertySetups(entries: AXPPropertyEntry[]): EnvironmentProviders;
903
+ /**
904
+ * Convenience function to provide a single schema setup.
905
+ *
906
+ * Useful when you need to register just one schema or want to keep
907
+ * schema registrations separate for organizational purposes.
908
+ *
909
+ * @param definition The schema definition to register
910
+ * @param options Optional registration options and metadata
911
+ * @returns Environment providers for dependency injection
912
+ *
913
+ * @example
914
+ * ```typescript
915
+ * provideProperty(emailSchema, {
916
+ * tags: ['user', 'contact'],
917
+ * description: 'User email field'
918
+ * })
919
+ * ```
920
+ */
921
+ declare function provideProperty(definition: AXPPropertyDefinition, options?: AXPPropertyRegistrationOptions): EnvironmentProviders;
922
+ /**
923
+ * Provide schema setups from a factory function for dynamic registration.
924
+ *
925
+ * Useful when schemas need to be generated at runtime, loaded from external
926
+ * sources, or depend on configuration that's not available at build time.
927
+ *
928
+ * @param schemaFactory Factory function that returns schema entries
929
+ * @returns Environment providers for dependency injection
930
+ *
931
+ * @example
932
+ * ```typescript
933
+ * providePropertiesFromFactory(async () => {
934
+ * const config = await loadConfiguration();
935
+ * return config.schemas.map(schema => ({
936
+ * definition: schema,
937
+ * options: { tags: ['dynamic'] }
938
+ * }));
939
+ * })
940
+ * ```
941
+ */
942
+ declare function providePropertiesFromFactory(factory: () => AXPPropertyEntry[] | Promise<AXPPropertyEntry[]>): EnvironmentProviders;
943
+
944
+ /**
945
+ * Middleware entry for registration - can be either a simple function or targeted middleware
946
+ */
947
+ type AXPPropertyMiddlewareEntry = AXPPropertyMiddleware | {
948
+ target: string | RegExp;
949
+ middleware: AXPPropertyMiddleware;
950
+ };
951
+ /**
952
+ * Provide schema middleware for registration in the application.
953
+ *
954
+ * Supports both global middleware (applies to all schemas) and targeted middleware
955
+ * (applies only to schemas matching specific patterns).
956
+ *
957
+ * @param middleware Array of middleware entries to register
958
+ * @returns Environment providers for dependency injection
959
+ *
960
+ * @example
961
+ * ```typescript
962
+ * // Global middleware
963
+ * providePropertyMiddleware([
964
+ * (context) => {
965
+ * if (context.definition.dataType === 'string') {
966
+ * context.searchable(true);
967
+ * }
968
+ * }
969
+ * ])
970
+ *
971
+ * // Targeted middleware
972
+ * providePropertyMiddleware([
973
+ * {
974
+ * target: /^user_/,
975
+ * middleware: (context) => context.withMetadata({ category: 'user' })
976
+ * }
977
+ * ])
978
+ * ```
979
+ */
980
+ declare function providePropertyMiddleware(middleware: AXPPropertyMiddlewareEntry[]): EnvironmentProviders;
981
+
982
+ /**
983
+ * Targeted middleware extension (name or regex) for property resolution.
984
+ */
985
+ declare const AXP_PROPERTY_EXTENSION: InjectionToken<{
986
+ target: string | RegExp;
987
+ middleware: AXPPropertyMiddleware;
988
+ }>;
989
+ /**
990
+ * Bootstrap hook: register property definitions known at build time.
991
+ */
992
+ declare const AXP_PROPERTY_SETUP: InjectionToken<void>;
993
+ /**
994
+ * Bootstrap hook: register global middleware for every property resolution.
995
+ */
996
+ declare const AXP_PROPERTY_MIDDLEWARE_SETUP: InjectionToken<void>;
997
+ /**
998
+ * Bootstrap hook: register on-demand property loaders.
999
+ */
1000
+ declare const AXP_PROPERTY_LOADER_SETUP: InjectionToken<void>;
1001
+
1002
+ /**
1003
+ * Strips entity-only fields so the payload matches {@link AXPPropertyDefinition}.
1004
+ */
1005
+ declare function toPropertyDefinition(def: AXPEntityPropertyDefinition): AXPPropertyDefinition;
1006
+ /**
1007
+ * Runtime model for entity field definitions with parent references and helper methods
1008
+ */
1009
+ declare class AXPEntityFieldModel {
1010
+ readonly name: string;
1011
+ readonly title: string;
1012
+ readonly description?: string;
1013
+ readonly validations?: AXPValidationRules;
1014
+ readonly actions?: AXPDomainAction[];
1015
+ readonly fieldFeatures?: AXPEntityPropertyFeatures;
1016
+ readonly defaultValue?: unknown;
1017
+ /** Resolved property definition model (interface, validations, features). */
1018
+ readonly property: AXPPropertyModel;
1019
+ /** Same as entity field name; aligns with registered property definition name when applicable. */
1020
+ readonly propertyName: string;
1021
+ readonly parent: any;
1022
+ readonly propertyService: AXPPropertyService;
1023
+ private readonly entityPropertyDefinition;
1024
+ constructor(definition: AXPEntityPropertyDefinition, parent: any, propertyService: AXPPropertyService);
1025
+ /**
1026
+ * Check if field is nullable
1027
+ */
1028
+ isNullable(): boolean;
1029
+ /**
1030
+ * Check if field is readonly
1031
+ */
1032
+ isReadonly(): boolean;
1033
+ /**
1034
+ * Check if field is required (has required validation)
1035
+ */
1036
+ isRequired(): boolean;
1037
+ /**
1038
+ * Check if field is searchable
1039
+ */
1040
+ isSearchable(): boolean;
1041
+ /**
1042
+ * Check if field supports full text search
1043
+ */
1044
+ isFullTextSearchable(): boolean;
1045
+ /**
1046
+ * Check if field is filterable
1047
+ */
1048
+ isFilterable(): boolean;
1049
+ /**
1050
+ * Check if field has inline filtering
1051
+ */
1052
+ hasInlineFiltering(): boolean;
1053
+ /**
1054
+ * Check if field is sortable
1055
+ */
1056
+ isSortable(): boolean;
1057
+ /**
1058
+ * Check if field is auditable
1059
+ */
1060
+ isAuditable(): boolean;
1061
+ /**
1062
+ * Registered property name (same as entity field name in the embedded model).
1063
+ */
1064
+ getPropertyName(): string;
1065
+ /**
1066
+ * Registration metadata when this field's definition name is registered; otherwise embedded summary.
1067
+ */
1068
+ getPropertyInfo(): unknown;
1069
+ /**
1070
+ * Rebuild the property model from embedded definition (e.g. after definition updates).
1071
+ */
1072
+ refreshProperty(): void;
1073
+ /**
1074
+ * Get parent entity
1075
+ */
1076
+ getEntity(): any;
1077
+ /**
1078
+ * Get parent aggregate
1079
+ */
1080
+ getAggregate(): any;
1081
+ /**
1082
+ * Get parent module
1083
+ */
1084
+ getModule(): any;
1085
+ /**
1086
+ * Get full path (module.aggregate.entity.field)
1087
+ */
1088
+ getPath(): string;
1089
+ /**
1090
+ * Validate the field structure
1091
+ */
1092
+ validate(): Promise<string[]>;
1093
+ /**
1094
+ * Get field statistics
1095
+ */
1096
+ getStatistics(): {
1097
+ hasValidations: boolean;
1098
+ hasActions: boolean;
1099
+ hasFieldFeatures: boolean;
1100
+ hasDefaultValue: boolean;
1101
+ validationCount: number;
1102
+ actionCount: number;
1103
+ };
1104
+ /**
1105
+ * Get field capabilities
1106
+ */
1107
+ getCapabilities(): {
1108
+ searchable: boolean;
1109
+ filterable: boolean;
1110
+ sortable: boolean;
1111
+ auditable: boolean;
1112
+ nullable: boolean;
1113
+ readonly: boolean;
1114
+ required: boolean;
1115
+ };
1116
+ /**
1117
+ * Convert back to interface definition
1118
+ */
1119
+ toDefinition(): AXPEntityPropertyDefinition;
1120
+ }
1121
+
1122
+ /**
1123
+ * Runtime model for entity definitions with parent references and helper methods
1124
+ */
1125
+ declare class AXPEntityModel {
1126
+ readonly name: string;
1127
+ readonly title: string;
1128
+ readonly fields: AXPEntityFieldModel[];
1129
+ readonly type: AXPEntityType;
1130
+ readonly parent: any;
1131
+ readonly propertyService: AXPPropertyService;
1132
+ constructor(definition: AXPEntityDefinition, parent: any, propertyService: AXPPropertyService);
1133
+ /**
1134
+ * Find field by name
1135
+ */
1136
+ findField(name: string): AXPEntityFieldModel | undefined;
1137
+ /**
1138
+ * Get all fields
1139
+ */
1140
+ getAllFields(): AXPEntityFieldModel[];
1141
+ /**
1142
+ * Get required fields
1143
+ */
1144
+ getRequiredFields(): AXPEntityFieldModel[];
1145
+ /**
1146
+ * Get readonly fields
1147
+ */
1148
+ getReadonlyFields(): AXPEntityFieldModel[];
1149
+ /**
1150
+ * Get searchable fields
1151
+ */
1152
+ getSearchableFields(): AXPEntityFieldModel[];
1153
+ /**
1154
+ * Get filterable fields
1155
+ */
1156
+ getFilterableFields(): AXPEntityFieldModel[];
1157
+ /**
1158
+ * Get sortable fields
1159
+ */
1160
+ getSortableFields(): AXPEntityFieldModel[];
1161
+ /**
1162
+ * Check if this entity is an aggregate root
1163
+ */
1164
+ isAggregateRoot(): boolean;
1165
+ /**
1166
+ * Check if this entity is a regular entity
1167
+ */
1168
+ isEntity(): boolean;
1169
+ /**
1170
+ * Check if this entity is a value object
1171
+ */
1172
+ isValueObject(): boolean;
1173
+ /**
1174
+ * Get parent aggregate
1175
+ */
1176
+ getAggregate(): any;
1177
+ /**
1178
+ * Get parent module
1179
+ */
1180
+ getModule(): any;
1181
+ /**
1182
+ * Get full path (module.aggregate.entity)
1183
+ */
1184
+ getPath(): string;
1185
+ /**
1186
+ * Validate the entity structure
1187
+ */
1188
+ validate(): Promise<string[]>;
1189
+ /**
1190
+ * Get entity statistics
1191
+ */
1192
+ getStatistics(): {
1193
+ fieldCount: number;
1194
+ requiredFieldCount: number;
1195
+ readonlyFieldCount: number;
1196
+ searchableFieldCount: number;
1197
+ filterableFieldCount: number;
1198
+ sortableFieldCount: number;
1199
+ };
1200
+ /**
1201
+ * Convert back to interface definition
1202
+ */
1203
+ toDefinition(): AXPEntityDefinition;
1204
+ }
1205
+
1206
+ /**
1207
+ * Runtime model for standalone relation definitions.
1208
+ * Relations live in their own collection; join when needed.
1209
+ */
1210
+ declare class AXPRelationModel {
1211
+ readonly type: AXPRelationshipCardinality;
1212
+ readonly kind: AXPRelationshipKind;
1213
+ readonly target: {
1214
+ aggregate: string;
1215
+ entity: string;
1216
+ key: string;
1217
+ };
1218
+ readonly source: {
1219
+ aggregate: string;
1220
+ entity: string;
1221
+ key: string;
1222
+ };
1223
+ readonly isRequired: boolean;
1224
+ readonly parent: any;
1225
+ constructor(definition: AXPRelationDefinition, parent: any);
1226
+ /**
1227
+ * Check if relation is one-to-one
1228
+ */
1229
+ isOneToOne(): boolean;
1230
+ /**
1231
+ * Check if relation is one-to-many
1232
+ */
1233
+ isOneToMany(): boolean;
1234
+ /**
1235
+ * Check if relation is many-to-many
1236
+ */
1237
+ isManyToMany(): boolean;
1238
+ /**
1239
+ * Check if relation is association
1240
+ */
1241
+ isAssociation(): boolean;
1242
+ /**
1243
+ * Check if relation is composition
1244
+ */
1245
+ isComposition(): boolean;
1246
+ /**
1247
+ * Check if relation is aggregation
1248
+ */
1249
+ isAggregation(): boolean;
1250
+ /**
1251
+ * Get parent aggregate
1252
+ */
1253
+ getAggregate(): any;
1254
+ /**
1255
+ * Get parent module
1256
+ */
1257
+ getModule(): any;
1258
+ /**
1259
+ * Get full path (module.aggregate.relation)
1260
+ */
1261
+ getPath(): string;
1262
+ /**
1263
+ * Get relation description
1264
+ */
1265
+ getDescription(): string;
1266
+ /**
1267
+ * Get cardinality description
1268
+ */
1269
+ getCardinalityDescription(): string;
1270
+ /**
1271
+ * Get kind description
1272
+ */
1273
+ getKindDescription(): string;
1274
+ /**
1275
+ * Get relation summary
1276
+ */
1277
+ getSummary(): string;
1278
+ /**
1279
+ * Validate the relation structure
1280
+ */
1281
+ validate(): string[];
1282
+ /**
1283
+ * Get relation characteristics
1284
+ */
1285
+ getCharacteristics(): {
1286
+ type: string;
1287
+ kind: string;
1288
+ required: boolean;
1289
+ isOwning: boolean;
1290
+ isNavigable: boolean;
1291
+ };
1292
+ /**
1293
+ * Check if relation involves entity
1294
+ */
1295
+ involvesEntity(entityName: string): boolean;
1296
+ /**
1297
+ * Check if relation targets aggregate
1298
+ */
1299
+ targetsAggregate(aggregateName: string): boolean;
1300
+ /**
1301
+ * Get the other entity in the relation
1302
+ */
1303
+ getOtherEntity(entityName: string): string | null;
1304
+ /**
1305
+ * Convert back to interface definition (AXPRelationDefinition with full source/target)
1306
+ */
1307
+ toDefinition(): AXPRelationDefinition;
1308
+ }
1309
+
1310
+ /**
1311
+ * Helper utility class for working with module models
1312
+ *
1313
+ * @deprecated This helper class is deprecated and will be updated to work with the new domain registry system.
1314
+ * Use AXPDomainService for domain operations instead.
1315
+ *
1316
+ * TODO: Update this helper to work with the new simplified models and domain registry system.
1317
+ */
1318
+ declare class AXPModuleHelper {
1319
+ /**
1320
+ * @deprecated Use AXPDomainService.findEntitiesByName() instead
1321
+ */
1322
+ static findEntitiesByName(module: AXPModuleModel, name: string): AXPEntityModel[];
1323
+ /**
1324
+ * @deprecated Use AXPDomainService with entity field queries instead
1325
+ */
1326
+ static findFieldsByName(module: AXPModuleModel, fieldName: string): AXPEntityFieldModel[];
1327
+ /**
1328
+ * @deprecated Use AXPDomainService with entity type queries instead
1329
+ */
1330
+ static findEntitiesByType(module: AXPModuleModel, type: AXPEntityType): AXPEntityModel[];
1331
+ /**
1332
+ * @deprecated Use AXPDomainService with field validation queries instead
1333
+ */
1334
+ static findFieldsWithValidation(module: AXPModuleModel, validationRule: string): AXPEntityFieldModel[];
1335
+ /**
1336
+ * @deprecated Use AXPDomainService with field queries instead
1337
+ */
1338
+ static findFieldsByDataType(module: AXPModuleModel, dataType: string): AXPEntityFieldModel[];
1339
+ /**
1340
+ * @deprecated Use AXPDomainService with required field queries instead
1341
+ */
1342
+ static findRequiredFields(module: AXPModuleModel): AXPEntityFieldModel[];
1343
+ /**
1344
+ * @deprecated Use AXPDomainService with nullable field queries instead
1345
+ */
1346
+ static findNullableFields(module: AXPModuleModel): AXPEntityFieldModel[];
1347
+ /**
1348
+ * @deprecated Use AXPDomainService with default value queries instead
1349
+ */
1350
+ static findFieldsWithDefaultValues(module: AXPModuleModel): AXPEntityFieldModel[];
1351
+ /**
1352
+ * @deprecated Use AXPDomainService with registered property name queries instead
1353
+ */
1354
+ static findFieldsByRegisteredPropertyName(module: AXPModuleModel, propertyName: string): AXPEntityFieldModel[];
1355
+ /**
1356
+ * @deprecated Use module.validate() method instead
1357
+ */
1358
+ static validateModule(module: AXPModuleModel): string[];
1359
+ /**
1360
+ * @deprecated Use aggregate relation queries instead
1361
+ */
1362
+ static findRelationsByType(module: AXPModuleModel, relationType: string): any[];
1363
+ /**
1364
+ * @deprecated Use AXPDomainService with entity dependency queries instead
1365
+ */
1366
+ static findEntityDependencies(module: AXPModuleModel, entityName: string): any[];
1367
+ /**
1368
+ * @deprecated Use module.getStatistics() method instead
1369
+ */
1370
+ static getModuleStatistics(module: AXPModuleModel): any;
1371
+ /**
1372
+ * @deprecated Use AXPDomainService with entity queries instead
1373
+ */
1374
+ static getAllEntities(module: AXPModuleModel): AXPEntityModel[];
1375
+ /**
1376
+ * @deprecated Use AXPDomainService with field queries instead
1377
+ */
1378
+ static getAllFields(module: AXPModuleModel): AXPEntityFieldModel[];
1379
+ }
1380
+
1381
+ /**
1382
+ * Union type for all domain definition types
1383
+ */
1384
+ type AXPDomainDefinition = AXPModuleDefinition | AXPAggregateDefinition | AXPEntityDefinition;
1385
+ /**
1386
+ * Domain path information parsed from path string
1387
+ */
1388
+ interface AXPDomainPathInfo {
1389
+ module: string;
1390
+ aggregate?: string;
1391
+ entity?: string;
1392
+ type: 'module' | 'aggregate' | 'entity';
1393
+ fullPath: string;
1394
+ }
1395
+ /**
1396
+ * Interface for domain loaders that can provide domain definitions on-demand
1397
+ */
1398
+ interface AXPDomainLoader {
1399
+ /**
1400
+ * Optional priority for loader ordering. Higher numbers = higher priority.
1401
+ * If not specified, uses registration order.
1402
+ */
1403
+ readonly priority?: number;
1404
+ /**
1405
+ * Determines if this loader can handle the given domain path
1406
+ * @param path The domain path to load (e.g., "user-management.user-aggregate.user")
1407
+ * @param type The type of domain object being requested
1408
+ * @returns true if this loader can load the domain definition
1409
+ */
1410
+ canLoad(path: string, type: 'module' | 'aggregate' | 'entity'): boolean;
1411
+ /**
1412
+ * Loads the domain definition for the given path
1413
+ * @param path The domain path to load
1414
+ * @param type The type of domain object being requested
1415
+ * @returns Promise that resolves to the domain definition or null if not found
1416
+ */
1417
+ load(path: string, type: 'module' | 'aggregate' | 'entity'): Promise<AXPDomainDefinition | null>;
1418
+ }
1419
+
1420
+ /**
1421
+ * Context class for domain middleware operations providing a fluent API for domain definition manipulation.
1422
+ *
1423
+ * This class serves as the interface between middleware functions and domain definitions,
1424
+ * offering methods to modify various aspects of a domain definition including:
1425
+ * - Metadata and custom properties
1426
+ * - Validation rules
1427
+ * - Feature flags and configuration
1428
+ * - Transformations and augmentations
1429
+ *
1430
+ * All methods return `this` to enable fluent method chaining.
1431
+ */
1432
+ declare class AXPDomainMiddlewareContext {
1433
+ private _definition;
1434
+ private _type;
1435
+ constructor(definition: AXPDomainDefinition, type: 'module' | 'aggregate' | 'entity');
1436
+ /**
1437
+ * Get the current definition (read-only access)
1438
+ */
1439
+ get definition(): AXPDomainDefinition;
1440
+ /**
1441
+ * Get the type of domain object being processed
1442
+ */
1443
+ get type(): 'module' | 'aggregate' | 'entity';
1444
+ /**
1445
+ * Set metadata for the domain definition
1446
+ */
1447
+ setMetadata(key: string, value: any): this;
1448
+ /**
1449
+ * Get metadata value
1450
+ */
1451
+ getMetadata(key: string): any;
1452
+ /**
1453
+ * Add validation rule to the definition (for entities and aggregates)
1454
+ */
1455
+ addValidation(rule: any): this;
1456
+ /**
1457
+ * Transform fields (for entities)
1458
+ */
1459
+ transformFields(transformer: (field: any) => any): this;
1460
+ /**
1461
+ * Add field to entity definition
1462
+ */
1463
+ addField(field: any): this;
1464
+ /**
1465
+ * Set title with transformation
1466
+ */
1467
+ setTitle(title: string): this;
1468
+ /**
1469
+ * Apply conditional logic
1470
+ */
1471
+ when(condition: boolean, callback: (context: this) => void): this;
1472
+ /**
1473
+ * Replace the entire definition
1474
+ */
1475
+ replaceDefinition(newDefinition: AXPDomainDefinition): this;
1476
+ }
1477
+ /**
1478
+ * Middleware function that can transform domain definitions
1479
+ * @param context - Domain middleware context providing definition info and configuration methods
1480
+ */
1481
+ type AXPDomainMiddleware = (context: AXPDomainMiddlewareContext) => void | Promise<void>;
1482
+
1483
+ /**
1484
+ * Central registry for managing domain definitions, middleware, and dynamic loading.
1485
+ *
1486
+ * Provides:
1487
+ * - Path-based domain resolution (module.aggregate.entity)
1488
+ * - Definition-level caching with fresh model creation
1489
+ * - Type-specific middleware processing
1490
+ * - On-demand domain loading with first-wins strategy
1491
+ * - Model creation and dependency injection
1492
+ */
1493
+ declare class AXPDomainRegistry {
1494
+ private readonly _definitionCache;
1495
+ private readonly _moduleMiddleware;
1496
+ private readonly _aggregateMiddleware;
1497
+ private readonly _entityMiddleware;
1498
+ private _loaders;
1499
+ private readonly propertyService;
1500
+ /**
1501
+ * Resolve a domain object by path with full middleware processing.
1502
+ * Supports definition-level caching with fresh model creation.
1503
+ *
1504
+ * @param path Domain path (e.g., "user-management.user-aggregate.user")
1505
+ * @returns Promise that resolves to the domain model
1506
+ */
1507
+ resolve<T>(path: string): Promise<T>;
1508
+ /**
1509
+ * Parse domain path string into structured information
1510
+ *
1511
+ * @param path Domain path to parse
1512
+ * @returns Parsed path information
1513
+ */
1514
+ private parsePath;
1515
+ /**
1516
+ * Register a domain loader for on-demand loading
1517
+ *
1518
+ * @param loader The loader instance to register
1519
+ */
1520
+ addLoader(loader: AXPDomainLoader): void;
1521
+ /**
1522
+ * Load definition from registered loaders using first-wins strategy
1523
+ *
1524
+ * @param path Domain path to load
1525
+ * @param type Type of domain object
1526
+ * @returns Promise that resolves to definition or undefined
1527
+ */
1528
+ private loadFromLoaders;
1529
+ /**
1530
+ * Add middleware for module processing
1531
+ */
1532
+ addModuleMiddleware(middleware: AXPDomainMiddleware): void;
1533
+ /**
1534
+ * Add middleware for aggregate processing
1535
+ */
1536
+ addAggregateMiddleware(middleware: AXPDomainMiddleware): void;
1537
+ /**
1538
+ * Add middleware for entity processing
1539
+ */
1540
+ addEntityMiddleware(middleware: AXPDomainMiddleware): void;
1541
+ /**
1542
+ * Apply type-specific middleware to definition
1543
+ *
1544
+ * @param definition Raw definition from cache or loader
1545
+ * @param type Type of domain object
1546
+ * @param path Original path for context
1547
+ * @returns Processed definition
1548
+ */
1549
+ private applyTypeMiddleware;
1550
+ /**
1551
+ * Get middleware collection for specific type
1552
+ *
1553
+ * @param type Domain object type
1554
+ * @returns Array of middleware functions
1555
+ */
1556
+ private getMiddlewareForType;
1557
+ /**
1558
+ * Create domain model from processed definition
1559
+ *
1560
+ * @param definition Processed definition (after middleware)
1561
+ * @param pathInfo Parsed path information
1562
+ * @returns Created domain model
1563
+ */
1564
+ private createModel;
1565
+ /**
1566
+ * Clear definition cache for a specific path
1567
+ *
1568
+ * @param path Path to clear from cache
1569
+ */
1570
+ invalidateCache(path: string): void;
1571
+ /**
1572
+ * Clear all cached definitions
1573
+ */
1574
+ clearCache(): void;
1575
+ /**
1576
+ * Get cache statistics
1577
+ */
1578
+ getCacheStats(): {
1579
+ size: number;
1580
+ paths: string[];
1581
+ };
1582
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDomainRegistry, never>;
1583
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPDomainRegistry>;
1584
+ }
1585
+
1586
+ /**
1587
+ * High-level facade service for domain operations.
1588
+ *
1589
+ * Provides simplified interfaces to the domain registry with additional
1590
+ * business logic and convenience methods for common operations.
1591
+ *
1592
+ * This service acts as the main entry point for domain model resolution
1593
+ * and provides a clean API for consuming applications.
1594
+ */
1595
+ declare class AXPDomainService {
1596
+ private readonly registry;
1597
+ /**
1598
+ * Get module by name
1599
+ *
1600
+ * @param name Module name
1601
+ * @returns Promise that resolves to module model
1602
+ */
1603
+ getModule(name: string): Promise<AXPModuleModel>;
1604
+ /**
1605
+ * Check if module exists
1606
+ *
1607
+ * @param name Module name
1608
+ * @returns Promise that resolves to boolean
1609
+ */
1610
+ moduleExists(name: string): Promise<boolean>;
1611
+ /**
1612
+ * Get aggregate by module and aggregate names
1613
+ *
1614
+ * @param moduleName Module name
1615
+ * @param aggregateName Aggregate name
1616
+ * @returns Promise that resolves to aggregate model
1617
+ */
1618
+ getAggregate(moduleName: string, aggregateName: string): Promise<AXPAggregateModel>;
1619
+ /**
1620
+ * Get aggregate by path
1621
+ *
1622
+ * @param path Aggregate path (module.aggregate)
1623
+ * @returns Promise that resolves to aggregate model
1624
+ */
1625
+ getAggregateByPath(path: string): Promise<AXPAggregateModel>;
1626
+ /**
1627
+ * Check if aggregate exists
1628
+ *
1629
+ * @param moduleName Module name
1630
+ * @param aggregateName Aggregate name
1631
+ * @returns Promise that resolves to boolean
1632
+ */
1633
+ aggregateExists(moduleName: string, aggregateName: string): Promise<boolean>;
1634
+ /**
1635
+ * Get entity by full path
1636
+ *
1637
+ * @param path Full entity path (module.aggregate.entity)
1638
+ * @returns Promise that resolves to entity model
1639
+ */
1640
+ getEntity(path: string): Promise<AXPEntityModel>;
1641
+ /**
1642
+ * Get entity by component parts
1643
+ *
1644
+ * @param moduleName Module name
1645
+ * @param aggregateName Aggregate name
1646
+ * @param entityName Entity name
1647
+ * @returns Promise that resolves to entity model
1648
+ */
1649
+ getEntityByParts(moduleName: string, aggregateName: string, entityName: string): Promise<AXPEntityModel>;
1650
+ /**
1651
+ * Check if entity exists
1652
+ *
1653
+ * @param path Full entity path
1654
+ * @returns Promise that resolves to boolean
1655
+ */
1656
+ entityExists(path: string): Promise<boolean>;
1657
+ /**
1658
+ * Get multiple modules in parallel
1659
+ *
1660
+ * @param moduleNames Array of module names
1661
+ * @returns Promise that resolves to array of module models
1662
+ */
1663
+ getModules(moduleNames: string[]): Promise<AXPModuleModel[]>;
1664
+ /**
1665
+ * Get multiple aggregates in parallel
1666
+ *
1667
+ * @param aggregatePaths Array of aggregate paths
1668
+ * @returns Promise that resolves to array of aggregate models
1669
+ */
1670
+ getAggregates(aggregatePaths: string[]): Promise<AXPAggregateModel[]>;
1671
+ /**
1672
+ * Get multiple entities in parallel
1673
+ *
1674
+ * @param entityPaths Array of entity paths
1675
+ * @returns Promise that resolves to array of entity models
1676
+ */
1677
+ getEntities(entityPaths: string[]): Promise<AXPEntityModel[]>;
1678
+ /**
1679
+ * Find entities by name across all loaded modules
1680
+ *
1681
+ * @param entityName Entity name to search for
1682
+ * @returns Promise that resolves to array of matching entity paths
1683
+ */
1684
+ findEntitiesByName(entityName: string): Promise<string[]>;
1685
+ /**
1686
+ * Get all aggregates for a module
1687
+ *
1688
+ * @param moduleName Module name
1689
+ * @returns Promise that resolves to array of aggregate models
1690
+ */
1691
+ getModuleAggregates(moduleName: string): Promise<AXPAggregateModel[]>;
1692
+ /**
1693
+ * Get all entity references for an aggregate
1694
+ *
1695
+ * @param moduleName Module name
1696
+ * @param aggregateName Aggregate name
1697
+ * @returns Promise that resolves to entity references map
1698
+ */
1699
+ getAggregateEntityReferences(moduleName: string, aggregateName: string): Promise<Record<string, string>>;
1700
+ /**
1701
+ * Validate module and all its components
1702
+ *
1703
+ * @param moduleName Module name
1704
+ * @returns Promise that resolves to validation errors array
1705
+ */
1706
+ validateModule(moduleName: string): Promise<string[]>;
1707
+ /**
1708
+ * Validate aggregate and its components
1709
+ *
1710
+ * @param moduleName Module name
1711
+ * @param aggregateName Aggregate name
1712
+ * @returns Promise that resolves to validation errors array
1713
+ */
1714
+ validateAggregate(moduleName: string, aggregateName: string): Promise<string[]>;
1715
+ /**
1716
+ * Get statistics for a module
1717
+ *
1718
+ * @param moduleName Module name
1719
+ * @returns Promise that resolves to module statistics
1720
+ */
1721
+ getModuleStatistics(moduleName: string): Promise<any>;
1722
+ /**
1723
+ * Get statistics for an aggregate
1724
+ *
1725
+ * @param moduleName Module name
1726
+ * @param aggregateName Aggregate name
1727
+ * @returns Promise that resolves to aggregate statistics
1728
+ */
1729
+ getAggregateStatistics(moduleName: string, aggregateName: string): Promise<any>;
1730
+ /**
1731
+ * Clear registry cache
1732
+ */
1733
+ clearCache(): void;
1734
+ /**
1735
+ * Get cache statistics
1736
+ *
1737
+ * @returns Cache statistics object
1738
+ */
1739
+ getCacheStatistics(): {
1740
+ size: number;
1741
+ paths: string[];
1742
+ };
1743
+ /**
1744
+ * Invalidate cache for specific path
1745
+ *
1746
+ * @param path Domain path to invalidate
1747
+ */
1748
+ invalidateCache(path: string): void;
1749
+ /**
1750
+ * Parse domain path into components
1751
+ *
1752
+ * @param path Domain path to parse
1753
+ * @returns Parsed path components
1754
+ */
1755
+ parsePath(path: string): {
1756
+ module: string;
1757
+ aggregate?: string;
1758
+ entity?: string;
1759
+ type: string;
1760
+ };
1761
+ /**
1762
+ * Build path from components
1763
+ *
1764
+ * @param module Module name
1765
+ * @param aggregate Aggregate name (optional)
1766
+ * @param entity Entity name (optional)
1767
+ * @returns Built path string
1768
+ */
1769
+ buildPath(module: string, aggregate?: string, entity?: string): string;
1770
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDomainService, never>;
1771
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPDomainService>;
1772
+ }
1773
+
1774
+ /**
1775
+ * Configuration for a domain loader with optional priority setting
1776
+ */
1777
+ interface AXPDomainLoaderConfig {
1778
+ /** The loader class or instance to register */
1779
+ loader: Type<AXPDomainLoader> | AXPDomainLoader;
1780
+ /** Optional priority for loader ordering (higher = higher priority) */
1781
+ priority?: number;
1782
+ }
1783
+ /**
1784
+ * Provide domain loaders for on-demand domain loading.
1785
+ *
1786
+ * Domain loaders enable the registry to load domain definitions that are not registered
1787
+ * at build time. This is useful for:
1788
+ * - Loading domain definitions from external APIs
1789
+ * - Dynamic domain generation
1790
+ * - Lazy loading of large domain sets
1791
+ * - Development-time domain hot-reloading
1792
+ *
1793
+ * @param loaders Array of loader classes, instances, or loader configurations
1794
+ * @returns Environment providers for dependency injection
1795
+ *
1796
+ * @example
1797
+ * ```typescript
1798
+ * // Simple loader registration
1799
+ * provideDomainLoaders([
1800
+ * HttpDomainLoader,
1801
+ * FileSystemDomainLoader,
1802
+ * new MemoryDomainLoader()
1803
+ * ])
1804
+ *
1805
+ * // With priority configuration
1806
+ * provideDomainLoaders([
1807
+ * { loader: HttpDomainLoader, priority: 10 },
1808
+ * { loader: FileSystemDomainLoader, priority: 5 },
1809
+ * { loader: new MemoryDomainLoader(), priority: 15 }
1810
+ * ])
1811
+ * ```
1812
+ */
1813
+ declare function provideDomainLoaders(loaders: Array<Type<AXPDomainLoader> | AXPDomainLoader | AXPDomainLoaderConfig>): EnvironmentProviders;
1814
+ /**
1815
+ * Provide a single domain loader for convenience
1816
+ *
1817
+ * @param loader Loader class, instance, or configuration
1818
+ * @returns Environment providers for dependency injection
1819
+ */
1820
+ declare function provideDomainLoader(loader: Type<AXPDomainLoader> | AXPDomainLoader | AXPDomainLoaderConfig): EnvironmentProviders;
1821
+
1822
+ /**
1823
+ * Injection tokens for type-specific middleware setup
1824
+ */
1825
+ declare const AXP_MODULE_MIDDLEWARE_SETUP = "AXP_MODULE_MIDDLEWARE_SETUP";
1826
+ declare const AXP_AGGREGATE_MIDDLEWARE_SETUP = "AXP_AGGREGATE_MIDDLEWARE_SETUP";
1827
+ declare const AXP_ENTITY_MIDDLEWARE_SETUP = "AXP_ENTITY_MIDDLEWARE_SETUP";
1828
+ /**
1829
+ * Provide middleware for module processing.
1830
+ *
1831
+ * Module middleware is applied when resolving module definitions and can:
1832
+ * - Add metadata and custom properties
1833
+ * - Validate module structure
1834
+ * - Transform module definitions
1835
+ * - Add computed properties
1836
+ *
1837
+ * @param middleware Array of middleware functions to register
1838
+ * @returns Environment providers for dependency injection
1839
+ *
1840
+ * @example
1841
+ * ```typescript
1842
+ * provideModuleMiddleware([
1843
+ * (context) => {
1844
+ * // Add common module metadata
1845
+ * context.setMetadata('loadedAt', new Date());
1846
+ * context.setMetadata('version', '1.0.0');
1847
+ * },
1848
+ * (context) => {
1849
+ * // Add namespace prefix if not present
1850
+ * if (!context.definition.name.includes('.')) {
1851
+ * context.definition.name = `app.${context.definition.name}`;
1852
+ * }
1853
+ * }
1854
+ * ])
1855
+ * ```
1856
+ */
1857
+ declare function provideModuleMiddleware(middleware: AXPDomainMiddleware[]): EnvironmentProviders;
1858
+ /**
1859
+ * Provide middleware for aggregate processing.
1860
+ *
1861
+ * Aggregate middleware is applied when resolving aggregate definitions and can:
1862
+ * - Add metadata and custom properties
1863
+ * - Validate aggregate structure
1864
+ * - Transform entity references
1865
+ * - Add computed relations
1866
+ *
1867
+ * @param middleware Array of middleware functions to register
1868
+ * @returns Environment providers for dependency injection
1869
+ *
1870
+ * @example
1871
+ * ```typescript
1872
+ * provideAggregateMiddleware([
1873
+ * (context) => {
1874
+ * // Add aggregate metadata
1875
+ * context.setMetadata('type', 'business-aggregate');
1876
+ * },
1877
+ * (context) => {
1878
+ * // Validate entity references
1879
+ * const entities = context.definition.entities;
1880
+ * if (Object.keys(entities).length === 0) {
1881
+ * throw new Error('Aggregate must have at least one entity');
1882
+ * }
1883
+ * }
1884
+ * ])
1885
+ * ```
1886
+ */
1887
+ declare function provideAggregateMiddleware(middleware: AXPDomainMiddleware[]): EnvironmentProviders;
1888
+ /**
1889
+ * Provide middleware for entity processing.
1890
+ *
1891
+ * Entity middleware is applied when resolving entity definitions and can:
1892
+ * - Add auto-generated fields (id, timestamps)
1893
+ * - Apply field transformations
1894
+ * - Add validation rules
1895
+ * - Set default values
1896
+ *
1897
+ * @param middleware Array of middleware functions to register
1898
+ * @returns Environment providers for dependency injection
1899
+ *
1900
+ * @example
1901
+ * ```typescript
1902
+ * provideEntityMiddleware([
1903
+ * (context) => {
1904
+ * // Add auto-generated ID field if not present
1905
+ * if (!context.definition.fields.some(f => f.name === 'id')) {
1906
+ * context.addField({
1907
+ * name: 'id',
1908
+ * type: 'uuid',
1909
+ * required: true,
1910
+ * generated: true
1911
+ * });
1912
+ * }
1913
+ * },
1914
+ * (context) => {
1915
+ * // Add timestamp fields
1916
+ * context.addField({
1917
+ * name: 'createdAt',
1918
+ * type: 'datetime',
1919
+ * required: true,
1920
+ * generated: true
1921
+ * });
1922
+ * context.addField({
1923
+ * name: 'updatedAt',
1924
+ * type: 'datetime',
1925
+ * required: true,
1926
+ * generated: true
1927
+ * });
1928
+ * }
1929
+ * ])
1930
+ * ```
1931
+ */
1932
+ declare function provideEntityMiddleware(middleware: AXPDomainMiddleware[]): EnvironmentProviders;
1933
+ /**
1934
+ * Provide combined middleware for all domain types.
1935
+ *
1936
+ * This is a convenience function that allows registering middleware for multiple
1937
+ * domain types in a single call.
1938
+ *
1939
+ * @param config Configuration object with middleware for each type
1940
+ * @returns Environment providers for dependency injection
1941
+ *
1942
+ * @example
1943
+ * ```typescript
1944
+ * provideDomainMiddleware({
1945
+ * modules: [
1946
+ * (context) => context.setMetadata('loadedAt', new Date())
1947
+ * ],
1948
+ * aggregates: [
1949
+ * (context) => context.setMetadata('type', 'business-aggregate')
1950
+ * ],
1951
+ * entities: [
1952
+ * (context) => {
1953
+ * if (!context.definition.fields.some(f => f.name === 'id')) {
1954
+ * context.addField({ name: 'id', type: 'uuid', required: true });
1955
+ * }
1956
+ * }
1957
+ * ]
1958
+ * })
1959
+ * ```
1960
+ */
1961
+ declare function provideDomainMiddleware(config: {
1962
+ modules?: AXPDomainMiddleware[];
1963
+ aggregates?: AXPDomainMiddleware[];
1964
+ entities?: AXPDomainMiddleware[];
1965
+ }): EnvironmentProviders;
1966
+
1967
+ export { AXPAggregateModel, AXPDomainMiddlewareContext, AXPDomainModule, AXPDomainRegistry, AXPDomainService, AXPEntityFieldModel, AXPEntityModel, AXPModuleHelper, AXPModuleModel, AXPPropertyMiddlewareContext, AXPPropertyModel, AXPPropertyRegistry, AXPPropertyService, AXPRelationModel, AXP_AGGREGATE_MIDDLEWARE_SETUP, AXP_ENTITY_CRUD_SETUP, AXP_ENTITY_DEFINITION_CRUD_SERVICE, AXP_ENTITY_MIDDLEWARE_SETUP, AXP_MODULE_MIDDLEWARE_SETUP, AXP_PROPERTY_EXTENSION, AXP_PROPERTY_LOADER_SETUP, AXP_PROPERTY_MIDDLEWARE_SETUP, AXP_PROPERTY_SETUP, provideAggregateMiddleware, provideDomainLoader, provideDomainLoaders, provideDomainMiddleware, provideEntityMiddleware, provideModuleMiddleware, providePropertiesFromFactory, provideProperty, providePropertyLoaders, providePropertyMiddleware, providePropertySetups, toPropertyDefinition };
1968
+ export type { AXPDomainDefinition, AXPDomainLoader, AXPDomainLoaderConfig, AXPDomainMiddleware, AXPDomainPathInfo, AXPEntityDefinitionCrudService, AXPPropertyEntry, AXPPropertyLoader, AXPPropertyLoaderConfig, AXPPropertyMiddleware, AXPPropertyMiddlewareEntry, AXPPropertyRegistrationOptions, AXPRegisteredProperty };