@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,3287 @@
1
+ import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
2
+ import { AXPAgentOutputKind, AXPOutputTranscriptSegmentId, AXPUserReference, AXPExecuteCommand, AXPKeyboardShortcutHelpEntry, AXPLogoConfig, AXPWidgetNode, AXPGridLayoutOptions, AXPPlatformScopeKey, AXPPlatformScope, AXPFileListItem, AXPFileStorageCreateRequest, AXPFileStorageInfo, AXPFileStorageUpdateRequest, AXPFileStorageFindRequest, AXPFileManyStorageInfo, AXPMetaDataDefinition, AXPIntegrationProviderDefinition, AXPIntegrationRuntimeContext, AXPIntegrationSecretPayload, AXPIntegrationAuthContext, AXPIntegrationResolvedCredentials, AXPSafeIntegrationConnectionDto, AXPMetaData, AXPKeyboardShortcut, AXPSystemActionType, AXPMultiLanguageString, AXPApplicationUserReference, AXPEntityReference, AXPOptionsData, AXPWidgetTriggers, AXPValidationRules, AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, EnvironmentProviders, Signal, Injector, ErrorHandler, ModuleWithProviders, EventEmitter, ElementRef, Renderer2, NgZone, ChangeDetectorRef } from '@angular/core';
5
+ import * as i4 from '@acorex/core/date-time';
6
+ import { AXCalendarService } from '@acorex/core/date-time';
7
+ import * as _angular_router from '@angular/router';
8
+ import { Route, Routes, UrlTree, Router, RedirectCommand, ActivatedRouteSnapshot, CanActivateFn, CanDeactivateFn, NavigationExtras, DetachedRouteHandle } from '@angular/router';
9
+ import { AXPEntity, AXPCommandActionLook, AXPCommandActionPriority, AXPEntityProperty } from '@acorex-platform/framework-shared/entity';
10
+ import { AXFormatterRegistryService, AXFormatter, AXFormatOptions, AXFormatService } from '@acorex/core/format';
11
+ import * as i1 from '@acorex-platform/framework-client/core';
12
+ import { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPNavigateActionCommand, AXPContextEvalFactory, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService, AXPValueTransformerFunctions } from '@acorex-platform/framework-client/core';
13
+ export { AXPDebugService } from '@acorex-platform/framework-client/core';
14
+ import * as i2 from '@acorex-platform/framework-client/workflow';
15
+ import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex-platform/framework-client/workflow';
16
+ import * as i3 from '@acorex/components/popup';
17
+ import { AXPopupService } from '@acorex/components/popup';
18
+ import * as i5 from '@acorex/components/toast';
19
+ import * as rxjs from 'rxjs';
20
+ import { Subject, ReplaySubject } from 'rxjs';
21
+ import { AXDataSourceFilterOption, AXDataSourceOperator, AXStyleColorType } from '@acorex/cdk/common';
22
+ import * as _ngrx_signals from '@ngrx/signals';
23
+ import { AXTranslationService } from '@acorex/core/translation';
24
+ import { AXPWidgetProperty, AXPWidgetTypesMap } from '@acorex-platform/framework-shared/widget-core';
25
+ import Dexie, { Table } from 'dexie';
26
+ import { AXLocaleProfile } from '@acorex/core/locale';
27
+
28
+ /** Platform common datasource registry names. */
29
+ declare const AXPPlatformCommonDataSourceKeys: {
30
+ readonly MenuItems: "platform-menu-items";
31
+ };
32
+
33
+ /**
34
+ * Minimal JSON-Schema-like object for native provider hints and local validation.
35
+ */
36
+ interface AXPJsonSchemaLike {
37
+ type?: 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
38
+ properties?: Record<string, AXPJsonSchemaLike>;
39
+ items?: AXPJsonSchemaLike | AXPJsonSchemaLike[];
40
+ required?: string[];
41
+ enum?: unknown[];
42
+ additionalProperties?: boolean | AXPJsonSchemaLike;
43
+ description?: string;
44
+ [key: string]: unknown;
45
+ }
46
+ /** Provider-native structured output hint (OpenAI `response_format`, Gemini `responseMimeType`). */
47
+ type AXPAgentResponseFormat = {
48
+ type: 'text';
49
+ } | {
50
+ type: 'json_object';
51
+ } | {
52
+ type: 'json_schema';
53
+ schema: AXPJsonSchemaLike;
54
+ name?: string;
55
+ strict?: boolean;
56
+ };
57
+ /**
58
+ * Catalog row contract for specialist final output (separate from domain `systemPrompt`).
59
+ * Field paths align with agent/assist entity `outputContract` JSON.
60
+ */
61
+ interface AXPAgentOutputContract {
62
+ kind: AXPAgentOutputKind;
63
+ /**
64
+ * When `kind` is `object`: `text` = generic JSON object as text; `node` = inner widget node in chat;
65
+ * `followUp` = `{"type":"followUp","content":[...]}` envelope.
66
+ */
67
+ transcriptSegment?: AXPOutputTranscriptSegmentId;
68
+ instruction?: string;
69
+ schemaSummary?: string;
70
+ schema?: AXPJsonSchemaLike;
71
+ schemaName?: string;
72
+ schemaStrict?: boolean;
73
+ validationCommandName?: string;
74
+ structuredRetries?: number;
75
+ providerResponseFormat?: AXPAgentResponseFormat;
76
+ }
77
+ /** Default structured retry count when `structuredRetries` is omitted on structured kinds. */
78
+ declare const AXP_AGENT_OUTPUT_CONTRACT_DEFAULT_STRUCTURED_RETRIES = 2;
79
+ /**
80
+ * Registered preset for an output-contract transcript segment.
81
+ * Modules register via {@link AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER}.
82
+ */
83
+ interface AXPOutputContractTranscriptSegmentDefinition {
84
+ /** Segment id (`text`, `node`, `followUp`). */
85
+ name: AXPOutputTranscriptSegmentId;
86
+ /** i18n key or display title for admin UI selects. */
87
+ title: string;
88
+ description?: string;
89
+ /** Contract kinds this segment applies to (defaults to `object` only). */
90
+ applicableKinds?: AXPAgentOutputKind[];
91
+ /** Default `outputContract` field values when this segment is chosen. */
92
+ contract: AXPAgentOutputContract;
93
+ }
94
+
95
+ type AXPOutputContractTranscriptSegmentProviderToken = AXPOutputContractTranscriptSegmentProvider | Promise<AXPOutputContractTranscriptSegmentProvider>;
96
+ /**
97
+ * Registers one or more transcript-segment presets for agent/assist `outputContract`.
98
+ * Use with `multi: true` in module providers.
99
+ */
100
+ interface AXPOutputContractTranscriptSegmentProvider {
101
+ provide(): AXPOutputContractTranscriptSegmentDefinition[] | Promise<AXPOutputContractTranscriptSegmentDefinition[]>;
102
+ }
103
+ declare const AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER: InjectionToken<AXPOutputContractTranscriptSegmentProviderToken[]>;
104
+
105
+ declare class AXPOutputContractTranscriptSegmentService {
106
+ private readonly segmentProviders;
107
+ private definitionsByName;
108
+ private loadPromise;
109
+ /** All registered transcript segment definitions (deduped by `name`). */
110
+ getAll(): Promise<AXPOutputContractTranscriptSegmentDefinition[]>;
111
+ /** Lookup by segment id (`text`, `node`, `followUp`). */
112
+ get(name: AXPOutputTranscriptSegmentId): Promise<AXPOutputContractTranscriptSegmentDefinition | undefined>;
113
+ /** Default `outputContract` for a segment, or `undefined` when not registered. */
114
+ getContractPreset(name: AXPOutputTranscriptSegmentId): Promise<AXPAgentOutputContract | undefined>;
115
+ /** Clears the in-memory registry (e.g. after hot reload in dev). */
116
+ clearCache(): void;
117
+ private ensureLoaded;
118
+ private loadDefinitions;
119
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPOutputContractTranscriptSegmentService, never>;
120
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPOutputContractTranscriptSegmentService>;
121
+ }
122
+
123
+ interface AXPAppVersion {
124
+ version: string;
125
+ build: number;
126
+ date: Date;
127
+ }
128
+ interface AXPAppVersionProvider {
129
+ provider(): Promise<AXPAppVersion>;
130
+ }
131
+ declare const AXP_APP_VERSION_PROVIDER: InjectionToken<AXPAppVersionProvider>;
132
+ declare class AXPAppVersionService {
133
+ private provider;
134
+ getAppVersion(): Promise<AXPAppVersion>;
135
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPAppVersionService, never>;
136
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPAppVersionService>;
137
+ }
138
+
139
+ interface AXPFilterOperator {
140
+ name: string;
141
+ title: string;
142
+ hasValue: boolean;
143
+ }
144
+ declare const EQ_OPER: AXPFilterOperator;
145
+ declare const NOT_EQ_OPER: AXPFilterOperator;
146
+ declare const GT_OPER: AXPFilterOperator;
147
+ declare const LT_OPER: AXPFilterOperator;
148
+ declare const GTE_OPER: AXPFilterOperator;
149
+ declare const LTE_OPER: AXPFilterOperator;
150
+ declare const CONTAINS_OPER: AXPFilterOperator;
151
+ declare const NOT_CONTAINS_OPER: AXPFilterOperator;
152
+ declare const IN_OPER: AXPFilterOperator;
153
+ declare const STARTS_WITH_OPER: AXPFilterOperator;
154
+ declare const ENDS_WITH_OPER: AXPFilterOperator;
155
+ declare const IS_EMPTY_OPER: AXPFilterOperator;
156
+ declare const IS_NOT_EMPTY_OPER: AXPFilterOperator;
157
+ declare const BETWEEN_OPER: AXPFilterOperator;
158
+ declare const STRING_OPERATORS: AXPFilterOperator[];
159
+ declare const NUMBER_OPERATORS: AXPFilterOperator[];
160
+ declare const BOOLEAN_OPERATORS: AXPFilterOperator[];
161
+ declare const DATE_OPERATORS: AXPFilterOperator[];
162
+ declare const ALL_DEFAULT_OPERATORS: AXPFilterOperator[];
163
+
164
+ type AXPDateTimeFilterPresetKind = 'computed' | 'manual';
165
+ interface AXPDateTimeFilterPreset {
166
+ id: string;
167
+ title: string;
168
+ kind: AXPDateTimeFilterPresetKind;
169
+ operationType?: string;
170
+ }
171
+ declare const DEFAULT_DATE_FILTER_PRESETS: AXPDateTimeFilterPreset[];
172
+ interface AXPDateTimeFilterValue {
173
+ operation?: {
174
+ type: string;
175
+ };
176
+ value?: string | {
177
+ from?: string;
178
+ to?: string;
179
+ };
180
+ }
181
+ declare function resolveDateFilterPresets(customPresets?: AXPDateTimeFilterPreset[], presetIds?: string[]): AXPDateTimeFilterPreset[];
182
+ declare function applyDateFilterPreset(presetId: string, calendarService: AXCalendarService): AXPDateTimeFilterValue | undefined;
183
+ declare function findManualPresetIdByOperation(operationType: string | undefined, presets: AXPDateTimeFilterPreset[]): string | undefined;
184
+
185
+ interface AXPHomePageDefinition {
186
+ key: string;
187
+ title: string;
188
+ route: Route;
189
+ }
190
+ declare const AXP_HOME_PAGES: InjectionToken<AXPHomePageDefinition[]>;
191
+ declare const AXP_HOME_PAGE_DEFAULT_KEY: InjectionToken<string>;
192
+
193
+ declare function provideDynamicHomePage(): EnvironmentProviders;
194
+
195
+ declare class AXPHomePageService {
196
+ private defaultHomePageKey;
197
+ private userHomePageKey;
198
+ private candidates;
199
+ private settingsService;
200
+ private sessionService;
201
+ private injector;
202
+ private originalConfig;
203
+ private loginPath;
204
+ private get flatCandidates();
205
+ constructor();
206
+ private init;
207
+ load(): Promise<void>;
208
+ getRegisteredList(): AXPHomePageDefinition[];
209
+ getRegisteredRoutes(): Routes;
210
+ getCurrent(): {
211
+ path: string;
212
+ title: string;
213
+ };
214
+ private findPath;
215
+ private buildFullPaths;
216
+ private refreshRoutes;
217
+ private applyMergedConfig;
218
+ /**
219
+ * Resolves the current user's home page as a router URL tree.
220
+ */
221
+ resolveHomeUrlTree(): UrlTree;
222
+ navigateTo(): Promise<void>;
223
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPHomePageService, never>;
224
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPHomePageService>;
225
+ }
226
+
227
+ declare class AXPHomePageModule {
228
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPHomePageModule, never>;
229
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPHomePageModule, never, never, never>;
230
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXPHomePageModule>;
231
+ }
232
+
233
+ type AXPInAppNotificationPriority = 'Notice' | 'Danger' | 'Warning';
234
+ interface AXPInAppNotificationCreateRequest {
235
+ id: string;
236
+ name: string;
237
+ title: string;
238
+ body: string;
239
+ icon: string;
240
+ priority: AXPInAppNotificationPriority;
241
+ receiver: AXPUserReference;
242
+ data?: Record<string, unknown>;
243
+ }
244
+ /**
245
+ * Persists in-app notifications. Notification-management registers an implementation
246
+ * backed by {@link AXMNotificationService}.
247
+ */
248
+ interface AXPInAppNotificationService {
249
+ create(request: AXPInAppNotificationCreateRequest): Promise<void>;
250
+ }
251
+ declare const AXP_IN_APP_NOTIFICATION_SERVICE: InjectionToken<AXPInAppNotificationService>;
252
+
253
+ type AXPBackgroundOperationStatus = 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
254
+ interface AXPBackgroundOperationCapabilities {
255
+ cancellable: boolean;
256
+ pausable: boolean;
257
+ resumable: boolean;
258
+ retryable: boolean;
259
+ /** When true, UI shows a progress bar only while {@link AXPBackgroundOperation.progress} is set. */
260
+ supportsProgress: boolean;
261
+ /** When true, UI may show ETA while {@link AXPBackgroundOperation.estimatedDurationMs} is set. */
262
+ supportsEstimate: boolean;
263
+ /** When true, the tray item is clickable and delegates to a registered handler. */
264
+ clickable: boolean;
265
+ /** When false, skip in-app notification on completed/cancelled. Default: true. */
266
+ notifyOnComplete?: boolean;
267
+ /** When false, skip in-app notification on failed. Default: true. */
268
+ notifyOnFailed?: boolean;
269
+ }
270
+ type AXPBackgroundOperationFailureMode = 'retry' | 'continue' | 'abort';
271
+ interface AXPBackgroundOperationFailurePolicy {
272
+ mode: AXPBackgroundOperationFailureMode;
273
+ currentStepId?: string;
274
+ maxRetries?: number;
275
+ retryCount?: number;
276
+ }
277
+ interface AXPBackgroundOperationError {
278
+ code?: string;
279
+ message: string;
280
+ detail?: string;
281
+ }
282
+ interface AXPBackgroundOperation {
283
+ id: string;
284
+ providerKey: string;
285
+ title: string;
286
+ status: AXPBackgroundOperationStatus;
287
+ progress?: number;
288
+ estimatedDurationMs?: number;
289
+ statusText?: string;
290
+ currentStep?: string;
291
+ createdAt: Date;
292
+ startedAt?: Date;
293
+ completedAt?: Date;
294
+ capabilities: AXPBackgroundOperationCapabilities;
295
+ failurePolicy: AXPBackgroundOperationFailurePolicy;
296
+ error?: AXPBackgroundOperationError;
297
+ /** Handler-specific payload (e.g. conversationId for chat navigation). */
298
+ data?: Record<string, unknown>;
299
+ }
300
+ interface AXPBackgroundOperationCreateRequest {
301
+ title: string;
302
+ progress?: number;
303
+ estimatedDurationMs?: number;
304
+ statusText?: string;
305
+ currentStep?: string;
306
+ capabilities: AXPBackgroundOperationCapabilities;
307
+ failurePolicy: AXPBackgroundOperationFailurePolicy;
308
+ }
309
+ type AXPBackgroundOperationActionKey = 'cancel' | 'pause' | 'resume' | 'retry' | 'dismiss';
310
+
311
+ /**
312
+ * Sends in-app notifications when a background operation finishes or fails.
313
+ */
314
+ declare class AXPBackgroundOperationNotificationService {
315
+ private readonly inAppNotificationService;
316
+ private readonly sessionService;
317
+ notify(operation: AXPBackgroundOperation): Promise<void>;
318
+ private shouldNotify;
319
+ private resolveBody;
320
+ private resolveTemplate;
321
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationNotificationService, never>;
322
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationNotificationService>;
323
+ }
324
+
325
+ /**
326
+ * Sends notifications and removes tray rows when a background operation reaches a terminal state.
327
+ */
328
+ declare class AXPBackgroundOperationCompletionService {
329
+ private readonly notificationService;
330
+ /** Whether the operation just reached a finished state (completed or cancelled). */
331
+ shouldAutoFinish(previousStatus: string | undefined, operation: AXPBackgroundOperation): boolean;
332
+ /** Whether the operation just transitioned to failed. */
333
+ shouldNotifyFailure(previousStatus: string | undefined, operation: AXPBackgroundOperation): boolean;
334
+ /** Notifies the user and invokes {@link remove} to drop the operation from the tray. */
335
+ notifyAndRemove(operation: AXPBackgroundOperation, remove: () => void): Promise<void>;
336
+ /** Notifies the user while keeping the failed operation in the tray for retry. */
337
+ notifyFailure(operation: AXPBackgroundOperation): Promise<void>;
338
+ private notify;
339
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationCompletionService, never>;
340
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationCompletionService>;
341
+ }
342
+
343
+ declare const AXPBackgroundOperationRootConfig: {
344
+ readonly module: {
345
+ readonly name: "Common";
346
+ readonly title: "@general:module.common.title";
347
+ readonly icon: "fa-light fa-layer-group";
348
+ };
349
+ readonly entities: {
350
+ readonly backgroundOperation: {
351
+ readonly name: "BackgroundOperations";
352
+ readonly title: "@general:background-operation.entity.title";
353
+ readonly titlePlural: "@general:background-operation.entity.plural";
354
+ readonly icon: "fa-light fa-spinner";
355
+ };
356
+ };
357
+ };
358
+ /** Full entity key used with {@link AXPEntityStorageService} (e.g. `Common.BackgroundOperations`). */
359
+ declare function axpBackgroundOperationEntityName(): string;
360
+
361
+ /** Persisted row shape for {@link axpBackgroundOperationEntityName}. */
362
+ interface AXPBackgroundOperationEntityModel {
363
+ id: string;
364
+ providerKey: string;
365
+ title: string;
366
+ status: AXPBackgroundOperationStatus;
367
+ progress?: number;
368
+ estimatedDurationMs?: number;
369
+ statusText?: string;
370
+ currentStep?: string;
371
+ createdAt: string;
372
+ startedAt?: string;
373
+ completedAt?: string;
374
+ capabilities: AXPBackgroundOperationCapabilities;
375
+ failurePolicy: AXPBackgroundOperationFailurePolicy;
376
+ error?: AXPBackgroundOperationError;
377
+ data?: Record<string, unknown>;
378
+ }
379
+
380
+ /**
381
+ * Optional persistence adapter for background-operation entity rows.
382
+ * Mock connectivity registers an implementation backed by {@link AXPEntityStorageService}.
383
+ */
384
+ interface AXPBackgroundOperationEntityStorageAdapter {
385
+ getAll(entityName: string): Promise<AXPBackgroundOperationEntityModel[]>;
386
+ upsertOne(entityName: string, row: AXPBackgroundOperationEntityModel): Promise<void>;
387
+ deleteOne(entityName: string, id: string): Promise<void>;
388
+ }
389
+ declare const AXP_BACKGROUND_OPERATION_ENTITY_STORAGE: InjectionToken<AXPBackgroundOperationEntityStorageAdapter>;
390
+
391
+ declare function axpBackgroundOperationToEntityModel(operation: AXPBackgroundOperation): AXPBackgroundOperationEntityModel;
392
+ declare function axpBackgroundOperationFromEntityModel(model: AXPBackgroundOperationEntityModel): AXPBackgroundOperation;
393
+
394
+ interface AXPBackgroundOperationProviderStore {
395
+ readonly operations: Signal<readonly AXPBackgroundOperation[]>;
396
+ upsert(operation: AXPBackgroundOperation): void;
397
+ patch(operationId: string, patch: Partial<AXPBackgroundOperation>): void;
398
+ find(operationId: string): AXPBackgroundOperation | undefined;
399
+ remove(id: string): void;
400
+ }
401
+ /**
402
+ * Entity-backed store for background operations (`Common.BackgroundOperations`).
403
+ * Uses in-memory signals for UI reactivity and optionally persists via {@link AXP_BACKGROUND_OPERATION_ENTITY_STORAGE}.
404
+ */
405
+ declare class AXPBackgroundOperationEntityStoreService {
406
+ private readonly entityStorage;
407
+ private readonly completionService;
408
+ private readonly entityName;
409
+ private hydrated;
410
+ private hydratePromise?;
411
+ private readonly innerStores;
412
+ ensureHydrated(): Promise<void>;
413
+ hasAnyOperationForProviders(providerKeys: readonly string[]): Promise<boolean>;
414
+ createProviderStore(providerKey: string): AXPBackgroundOperationProviderStore;
415
+ /** All operations across providers (post-hydration). */
416
+ readonly allOperations: Signal<AXPBackgroundOperation[]>;
417
+ private hydrateFromEntityStorage;
418
+ private persistOperation;
419
+ private deleteOperation;
420
+ private getOrCreateInnerStore;
421
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationEntityStoreService, never>;
422
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationEntityStoreService>;
423
+ }
424
+
425
+ /**
426
+ * Storage-only entity for background-operation tray rows (`Common.BackgroundOperations`).
427
+ * No master UI — persisted through {@link AXPEntityStorageService}.
428
+ */
429
+ declare function backgroundOperationEntityFactory(): Promise<AXPEntity | null>;
430
+
431
+ declare const AXP_BACKGROUND_OPERATION_HANDLERS: InjectionToken<AXPBackgroundOperationHandler[]>;
432
+ /**
433
+ * Handles user interactions for background operations (e.g. navigate on click).
434
+ * Register one handler per {@link AXPBackgroundOperation.providerKey}.
435
+ */
436
+ declare abstract class AXPBackgroundOperationHandler {
437
+ abstract readonly providerKey: string;
438
+ abstract execute(command: AXPExecuteCommand, operation: AXPBackgroundOperation): Promise<void>;
439
+ }
440
+
441
+ declare const AXP_BACKGROUND_OPERATION_PROVIDERS: InjectionToken<AXPBackgroundOperationProvider[]>;
442
+ /**
443
+ * Registers a source of background operations (multi-provider).
444
+ * Each feature module or mock can contribute one provider per domain key.
445
+ */
446
+ declare abstract class AXPBackgroundOperationProvider {
447
+ abstract readonly key: string;
448
+ abstract readonly operations: Signal<readonly AXPBackgroundOperation[]>;
449
+ abstract create(request: AXPBackgroundOperationCreateRequest): Promise<AXPBackgroundOperation>;
450
+ abstract cancel(operationId: string): Promise<void>;
451
+ /** Optional — only when {@link AXPBackgroundOperationCapabilities.pausable} is true. */
452
+ pause?(operationId: string): Promise<void>;
453
+ /** Optional — only when {@link AXPBackgroundOperationCapabilities.resumable} is true. */
454
+ resume?(operationId: string): Promise<void>;
455
+ /** Optional — only when {@link AXPBackgroundOperationCapabilities.retryable} is true. */
456
+ retry?(operationId: string): Promise<void>;
457
+ /** Optional — removes completed/failed operations from the tray. */
458
+ dismiss?(operationId: string): Promise<void>;
459
+ }
460
+
461
+ /**
462
+ * Lightweight in-memory store for a single background-operation provider.
463
+ */
464
+ declare function createBackgroundOperationStore(): {
465
+ readonly operations: Signal<readonly AXPBackgroundOperation[]>;
466
+ upsert(operation: AXPBackgroundOperation): void;
467
+ patch(id: string, patch: Partial<AXPBackgroundOperation>): void;
468
+ find(id: string): AXPBackgroundOperation | undefined;
469
+ remove(id: string): void;
470
+ };
471
+
472
+ declare function axpCreateBackgroundOperationId(): string;
473
+ declare function axpBuildBackgroundOperation(providerKey: string, request: AXPBackgroundOperationCreateRequest, overrides?: Partial<AXPBackgroundOperation>): AXPBackgroundOperation;
474
+ declare function axpCoerceBackgroundOperationDate(value: Date | string | undefined): Date | null;
475
+ declare function axpBackgroundOperationDisplayTime(operation: AXPBackgroundOperation): Date | null;
476
+ /**
477
+ * Remaining duration in milliseconds for ETA display.
478
+ */
479
+ declare function axpBackgroundOperationRemainingMs(operation: AXPBackgroundOperation): number | null;
480
+ /**
481
+ * Estimated completion instant for relative-time formatting (e.g. timeleft pipe).
482
+ */
483
+ declare function axpBackgroundOperationEstimateEndDate(operation: AXPBackgroundOperation): Date | null;
484
+ declare function axpBackgroundOperationCapabilities(partial?: Partial<AXPBackgroundOperationCapabilities>): AXPBackgroundOperationCapabilities;
485
+ declare function axpBackgroundOperationFailurePolicy(partial?: Partial<AXPBackgroundOperationFailurePolicy>): AXPBackgroundOperationFailurePolicy;
486
+ declare function axpIsActiveBackgroundOperationStatus(status: AXPBackgroundOperationStatus): boolean;
487
+ declare function axpIsCompletedBackgroundOperationStatus(status: AXPBackgroundOperationStatus): boolean;
488
+
489
+ declare class AXPBackgroundOperationService {
490
+ private readonly providers;
491
+ private readonly handlers;
492
+ private readonly busy;
493
+ readonly loading: i0.Signal<boolean>;
494
+ readonly operations: i0.Signal<readonly AXPBackgroundOperation[]>;
495
+ readonly activeCount: i0.Signal<number>;
496
+ readonly failedCount: i0.Signal<number>;
497
+ getAvailableActions(operation: AXPBackgroundOperation): AXPBackgroundOperationActionKey[];
498
+ create(providerKey: string, request: AXPBackgroundOperationCreateRequest): Promise<AXPBackgroundOperation>;
499
+ cancel(operationId: string): Promise<void>;
500
+ pause(operationId: string): Promise<void>;
501
+ resume(operationId: string): Promise<void>;
502
+ retry(operationId: string): Promise<void>;
503
+ dismiss(operationId: string): Promise<void>;
504
+ hasClickHandler(operation: AXPBackgroundOperation): boolean;
505
+ executeCommand(operationId: string, command: AXPExecuteCommand): Promise<void>;
506
+ executeClick(operationId: string): Promise<void>;
507
+ runAction(operationId: string, action: AXPBackgroundOperationActionKey): Promise<void>;
508
+ private resolveHandler;
509
+ private resolveProvider;
510
+ private resolveOperation;
511
+ private run;
512
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationService, never>;
513
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBackgroundOperationService>;
514
+ }
515
+
516
+ declare class AXPBackgroundOperationSlotComponent {
517
+ private readonly operationService;
518
+ private readonly popover;
519
+ protected readonly activeCount: i0.Signal<number>;
520
+ protected readonly failedCount: i0.Signal<number>;
521
+ protected readonly showSlot: i0.Signal<boolean>;
522
+ protected readonly slotShowsFailureOnly: i0.Signal<boolean>;
523
+ protected readonly slotLabelKey: i0.Signal<"@general:background-operation.slot.failed-single" | "@general:background-operation.slot.failed-multiple" | "@general:background-operation.slot.single" | "@general:background-operation.slot.multiple">;
524
+ protected readonly slotLabelParams: i0.Signal<{
525
+ count: number;
526
+ }>;
527
+ protected closePopover(): void;
528
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBackgroundOperationSlotComponent, never>;
529
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPBackgroundOperationSlotComponent, "axp-background-operation-slot", never, {}, {}, never, never, true, never>;
530
+ }
531
+
532
+ declare class AXPBrowserTitleService {
533
+ private readonly document;
534
+ private readonly translateService;
535
+ private readonly tabNavigation;
536
+ private readonly menuService;
537
+ private readonly sessionService;
538
+ private readonly router;
539
+ private readonly destroyRef;
540
+ private readonly simpleModePageTitle;
541
+ private readonly localeRevision;
542
+ private readonly sessionRevision;
543
+ private readonly routeRevision;
544
+ constructor();
545
+ /** Publishes the resolved page title for the given route key (ignored in tabular mode). */
546
+ setSimpleModePageTitle(title: string | null, routeKey: string): void;
547
+ private syncDocumentTitle;
548
+ private resolveTabularRouteTitle;
549
+ private resolveSimpleRouteTitle;
550
+ private resolveMenuRouteTitle;
551
+ private resolveApplicationTitle;
552
+ private resolveLocalizedText;
553
+ private buildDocumentTitle;
554
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPBrowserTitleService, never>;
555
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPBrowserTitleService>;
556
+ }
557
+
558
+ interface AXPErrorHandler {
559
+ handleError(error: Error, next: (error: Error) => void): void;
560
+ }
561
+
562
+ declare class AXPErrorHandlerRegistryService {
563
+ private injector;
564
+ private errorHandlers;
565
+ constructor(injector: Injector);
566
+ register(...plugins: (new () => AXPErrorHandler)[]): void;
567
+ get handlers(): AXPErrorHandler[];
568
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPErrorHandlerRegistryService, never>;
569
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPErrorHandlerRegistryService>;
570
+ }
571
+
572
+ declare class AXPGlobalErrorHandler extends ErrorHandler {
573
+ private injector;
574
+ private registry;
575
+ constructor(injector: Injector, registry: AXPErrorHandlerRegistryService);
576
+ handleError(error: Error): void;
577
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPGlobalErrorHandler, never>;
578
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPGlobalErrorHandler>;
579
+ }
580
+
581
+ /** Thrown when a requested platform resource cannot be resolved. */
582
+ declare class AXPNotFoundError extends Error {
583
+ constructor(message?: string);
584
+ }
585
+
586
+ /** Canonical route path for the platform 404 page. */
587
+ declare const AXP_NOT_FOUND_ROUTE = "/error/404";
588
+ /**
589
+ * Catch-all route that redirects unknown URLs to the platform 404 page.
590
+ * Register this as the **last** route source in the application (after all app and module routes).
591
+ */
592
+ declare const AXP_NOT_FOUND_CATCH_ALL_ROUTE: Route;
593
+ /**
594
+ * Registers the platform catch-all 404 route.
595
+ * Must be the last `ROUTES` provider in `app.config` so custom app routes are matched first.
596
+ */
597
+ declare function AXPNotFoundCatchAllRoute(): EnvironmentProviders;
598
+ /**
599
+ * Returns true when an entity byKey query did not resolve a record.
600
+ */
601
+ declare function axpIsEntityRecordNotFound(data: unknown): boolean;
602
+ /**
603
+ * Creates an Angular redirect command to the platform 404 page.
604
+ */
605
+ declare function axpRedirectToNotFound(router?: Router): RedirectCommand;
606
+
607
+ /** Canonical route path for the platform 401 page. */
608
+ declare const AXP_UNAUTHORIZED_ROUTE = "/error/401";
609
+ /**
610
+ * Creates an Angular redirect command to the platform 401 page.
611
+ */
612
+ declare function axpRedirectToUnauthorized(router?: Router): RedirectCommand;
613
+
614
+ interface AXPKeyboardShortcutHelpGroup {
615
+ label: string;
616
+ items: AXPKeyboardShortcutHelpEntry[];
617
+ }
618
+ declare class AXPKeyboardShortcutsHelpComponent {
619
+ private readonly shortcutRegistry;
620
+ protected readonly groups: i0.Signal<AXPKeyboardShortcutHelpGroup[]>;
621
+ protected chordToKbdKeys(chord: string): string[];
622
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPKeyboardShortcutsHelpComponent, never>;
623
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPKeyboardShortcutsHelpComponent, "axp-keyboard-shortcuts-help", never, {}, {}, never, never, true, never>;
624
+ }
625
+
626
+ declare class AXPKeyboardShortcutsHelpService {
627
+ private readonly popupService;
628
+ private readonly translationService;
629
+ private readonly shortcutRegistry;
630
+ private readonly document;
631
+ /** In-flight help popup session (open until the popup closes). */
632
+ private activeShow;
633
+ constructor();
634
+ /**
635
+ * Opens the keyboard shortcuts help popup, or no-ops when it is already open.
636
+ */
637
+ show(): Promise<void>;
638
+ private openHelpPopup;
639
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPKeyboardShortcutsHelpService, never>;
640
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPKeyboardShortcutsHelpService>;
641
+ }
642
+
643
+ interface AXPCommonModuleConfigs {
644
+ errorHandlers: (new () => AXPErrorHandler)[];
645
+ }
646
+ declare class AXPCommonModule {
647
+ static forRoot(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule>;
648
+ static forChild(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule>;
649
+ /**
650
+ * @ignore
651
+ */
652
+ constructor(instances: any[], _keyboardShortcutsHelp: AXPKeyboardShortcutsHelpService, formatterRegistry: AXFormatterRegistryService);
653
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPCommonModule, never>;
654
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPCommonModule, never, [typeof i1.AXPComponentSlotModule, typeof i2.AXPWorkflowModule, typeof i3.AXPopupModule, typeof i4.AXDateTimeModule, typeof i5.AXToastModule, typeof i1.AXPModuleManifestModule], [typeof _angular_router.RouterModule]>;
655
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXPCommonModule>;
656
+ }
657
+
658
+ declare const ENVIRONMENT: InjectionToken<any>;
659
+ declare const AXP_PLATFORM_CONFIG_TOKEN: InjectionToken<AXPPlatformConfigs>;
660
+ interface AXPPlatformConfigs {
661
+ title?: string;
662
+ copyright?: string;
663
+ logo?: {
664
+ icon: {
665
+ light: AXPLogoConfig;
666
+ dark: AXPLogoConfig;
667
+ };
668
+ text: {
669
+ light: AXPLogoConfig;
670
+ dark: AXPLogoConfig;
671
+ };
672
+ full: {
673
+ light: AXPLogoConfig;
674
+ dark: AXPLogoConfig;
675
+ };
676
+ };
677
+ network?: {
678
+ timeOut?: number;
679
+ };
680
+ }
681
+ declare const AXPPlatformDefaultConfigs: AXPPlatformConfigs;
682
+ declare function configPlatform(config?: Partial<AXPPlatformConfigs>): AXPPlatformConfigs;
683
+
684
+ declare enum AXPCommonSettings {
685
+ EnableOperationToasts = "Common:Setting:Notifications.EnableOperationToasts",
686
+ EntityFilterApplyMode = "Common:Setting:Entity.FilterApplyMode",
687
+ ShowCategoryColumnsByDefault = "Common:Setting:Entity.ShowCategoryColumnsByDefault",
688
+ ApplyLayoutOrdering = "Common:Setting:Entity.ApplyLayoutOrdering",
689
+ RedirectToDetailsAfterCreate = "Common:Setting:Entity.RedirectToDetailsAfterCreate",
690
+ HighlightAfterCreateInList = "Common:Setting:Entity.HighlightAfterCreateInList",
691
+ ShowPageBadge = "Common:Setting:Entity.ShowPageBadge",
692
+ ConfirmUnsavedChanges = "Common:Setting:Entity.ConfirmUnsavedChanges",
693
+ DebugMode = "PlatformDevTools:Setting:Developer.DebugMode",
694
+ ShowRowIndexColumn = "Common:Setting:Entity.ShowRowIndexColumn",
695
+ EntityListPersistenceMode = "Common:Setting:Entity.ListPersistenceMode",
696
+ NavigationMode = "Common:Setting:Navigation.Mode",
697
+ MaxOpenTabs = "Common:Setting:Navigation.MaxOpenTabs"
698
+ }
699
+
700
+ interface AXPSettingSetOptions {
701
+ /** When true, persist to remote immediately without debounce. */
702
+ flush?: boolean;
703
+ }
704
+ interface AXPSettingValueProvider {
705
+ get scope(): AXPPlatformScope;
706
+ load(): Promise<AXPSettingValue[]>;
707
+ set(key: string, value: any, options?: AXPSettingSetOptions): Promise<void>;
708
+ set(values: Record<string, any>, options?: AXPSettingSetOptions): Promise<void>;
709
+ /** Background refresh when local snapshot TTL expired or tab regains focus. */
710
+ revalidateIfNeeded?(): Promise<void>;
711
+ /** Force reload from local cache and remote. */
712
+ reload?(): Promise<void>;
713
+ }
714
+ /**
715
+ * Provider interface for supplying default setting values from higher layers (e.g., app, mocks, API).
716
+ * Providers are merged by ascending priority; later providers override earlier values on key conflicts.
717
+ */
718
+ interface AXPSettingDefaultValuesProvider {
719
+ /** Merge order; lower numbers are applied first. Default is 0. */
720
+ priority?: number;
721
+ /**
722
+ * When set, missing values from this provider are persisted at this scope instead of each
723
+ * setting's definition scope. Use for app-wide demo or deployment defaults (e.g. platform).
724
+ */
725
+ scope?: AXPPlatformScope;
726
+ /** Returns a flat map of setting key to default value. */
727
+ provide(): Promise<Record<string, unknown>>;
728
+ }
729
+ interface AXPSettingValue {
730
+ key: string;
731
+ value: any;
732
+ }
733
+ interface AXPSettingChangedEvent {
734
+ scope: AXPPlatformScope;
735
+ keys: string[];
736
+ values: Record<string, any>;
737
+ entries: AXPSettingValue[];
738
+ }
739
+ /** Layout options for a single setting row on the settings page. */
740
+ interface AXPSettingLayoutOptions extends AXPGridLayoutOptions {
741
+ /** When true, stack the label above a full-width control. */
742
+ stacked?: boolean;
743
+ }
744
+ interface AXPSettingDefinition {
745
+ name: string;
746
+ title: string;
747
+ description?: string;
748
+ /** Optional i18n keys (e.g. `@scope:key`) whose translated values are included in settings search. */
749
+ searchTagKeys?: string[];
750
+ widget: AXPWidgetNode;
751
+ layout?: AXPSettingLayoutOptions;
752
+ scope: AXPPlatformScopeKey;
753
+ isRequired?: boolean;
754
+ isInherited?: boolean;
755
+ isEncrypted?: boolean;
756
+ /** When true, saving this setting from the settings page reloads the browser. */
757
+ requiresPageRefresh?: boolean;
758
+ defaultValue?: unknown;
759
+ value?: unknown;
760
+ }
761
+ interface AXPSettingDefinitionGroup {
762
+ name: string;
763
+ /** Short label (e.g. sidebar); i18n key when using the translation pipe. */
764
+ title: string;
765
+ /** Optional fuller page heading; i18n key. When omitted, `title` is used for the page header. */
766
+ pageTitle?: string;
767
+ icon?: string;
768
+ description?: string;
769
+ /** Sidebar order; lower numbers appear first. Defaults to 1000 when omitted. */
770
+ priority?: number;
771
+ groups: AXPSettingDefinitionGroup[];
772
+ sections: AXPSettingDefinitionSection[];
773
+ }
774
+ interface AXPSettingDefinitionSection {
775
+ name: string;
776
+ title: string;
777
+ description?: string;
778
+ settings: AXPSettingDefinition[];
779
+ }
780
+ interface AXPGroupSearchResult {
781
+ breadcrumb: {
782
+ name: string;
783
+ title: string;
784
+ description?: string;
785
+ }[];
786
+ sections: AXPSettingDefinitionSection[] | null;
787
+ groups: AXPSettingDefinitionGroup[] | null;
788
+ }
789
+
790
+ interface AXPSettingsServiceInterface {
791
+ load(): Promise<AXPSettingValue[]>;
792
+ get<T = any>(key: string): Promise<T>;
793
+ defaultValues(scope: AXPPlatformScope): Promise<Record<string, unknown>>;
794
+ scope(scope: AXPPlatformScope): ScopedSettingService;
795
+ reload(scope?: AXPPlatformScope): Promise<void>;
796
+ }
797
+ declare class AXPSettingsService implements AXPSettingsServiceInterface {
798
+ private readonly providers;
799
+ private readonly injector;
800
+ private readonly eventService;
801
+ private readonly sessionService;
802
+ private readonly debugService;
803
+ private readonly scopedSettingsCache;
804
+ private readonly scopeLoaded;
805
+ private loadInFlight;
806
+ private lastUserContextKey;
807
+ private lastTenantId;
808
+ readonly onChanged: Subject<AXPSettingChangedEvent>;
809
+ readonly onLoaded: ReplaySubject<void>;
810
+ constructor();
811
+ reload(scope?: AXPPlatformScope, reason?: string): Promise<void>;
812
+ ensureLoaded(): Promise<void>;
813
+ load(reason?: string): Promise<AXPSettingValue[]>;
814
+ private awaitSessionReady;
815
+ private doLoad;
816
+ /** Platform always; tenant when selected; user when authenticated with tenant. */
817
+ private shouldLoadProvider;
818
+ private requiredScopes;
819
+ private isScopeReady;
820
+ private isFullyLoaded;
821
+ private clearScopedCache;
822
+ /**
823
+ * Returns the effective setting value. Primitive coercion (string, boolean, number, date) is inferred from the
824
+ * definition default and/or the stored shape (including `{ value: ... }`). Type argument `T` is compile-time only;
825
+ * it is not read at runtime—use it to document the expected result (e.g. `get<boolean>(key)`).
826
+ */
827
+ get<T = any>(key: string): Promise<T>;
828
+ /**
829
+ * Inherited settings at tenant/user scope may match the definition default while still being an explicit
830
+ * override of a different parent value (e.g. tenant enables lock while platform default is disabled).
831
+ */
832
+ private isInheritedPlaceholder;
833
+ private resolveEffectiveAndDefault;
834
+ defaultValues(scope: AXPPlatformScope): Promise<Record<string, unknown>>;
835
+ scope(scope: AXPPlatformScope): ScopedSettingService;
836
+ /** Applies remote values into the in-memory scope cache and notifies listeners. */
837
+ syncScopeCache(scope: AXPPlatformScope, values: Record<string, unknown>): void;
838
+ invokeChangeEvent(event: AXPSettingChangedEvent): void;
839
+ private applyDebugModeFromSettings;
840
+ private applyDebugModeFromEvent;
841
+ private isCachedInScopeOrAncestors;
842
+ private seedMissingDefaults;
843
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingsService, never>;
844
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingsService>;
845
+ }
846
+ declare class ScopedSettingService {
847
+ private parent;
848
+ private provider;
849
+ private scopeCache;
850
+ private isScopeActive;
851
+ constructor(parent: AXPSettingsService, provider: AXPSettingValueProvider, scopeCache: Map<string, any>, isScopeActive: (scope: AXPPlatformScope) => boolean);
852
+ get<T = any>(key: string): Promise<T>;
853
+ all(): Promise<any>;
854
+ defaultValues(): Promise<Record<string, unknown>>;
855
+ set<T = any>(key: string, value: T, options?: AXPSettingSetOptions): Promise<void>;
856
+ set<T = any>(values: Record<string, T>, options?: AXPSettingSetOptions): Promise<void>;
857
+ update<T = any>(key: string, updateFn: (currentValue: T) => T): Promise<void>;
858
+ }
859
+
860
+ interface AXPEntityCreateListBehaviorOptions {
861
+ redirect?: boolean;
862
+ }
863
+ interface AXPEntityCreateListBehavior {
864
+ shouldRedirect: boolean;
865
+ shouldHighlight: boolean;
866
+ }
867
+ /**
868
+ * Resolves post-create list behavior from user settings and optional action overrides.
869
+ */
870
+ declare function resolveEntityCreateListBehavior(settingsService: AXPSettingsService, options?: AXPEntityCreateListBehaviorOptions): Promise<AXPEntityCreateListBehavior>;
871
+
872
+ declare const AXP_ROOT_CONFIG_TOKEN: InjectionToken<AXPRootConfigs>;
873
+ interface AXPRootConfigs {
874
+ baseUrl: string;
875
+ }
876
+
877
+ declare abstract class AXPDataProvider {
878
+ abstract insertOne(entity: any, entityItem: any): Promise<any>;
879
+ abstract insertMany(entity: any, entityList: any): Promise<any>;
880
+ abstract getOne(entity: any, id: string): Promise<any>;
881
+ abstract getMany(entity: any, params?: any): Promise<any>;
882
+ abstract updateOne(entity: any, id?: string, data?: {
883
+ [key: string]: any;
884
+ }): Promise<any>;
885
+ abstract deleteOne(entity: any, id: string): Promise<any>;
886
+ abstract getFirst(entity: any): Promise<any>;
887
+ abstract uploadFile(file: File, title: string, customUrl?: string): Promise<string>;
888
+ abstract updateFile(id: string, file: File, title: string, customUrl?: string): Promise<string>;
889
+ abstract uploadMultipleFiles(files: File[], title: string): Promise<string[]>;
890
+ abstract viewFile(id: string, name: string): Promise<Blob>;
891
+ abstract downloadFile(id: string, name: string): Promise<Blob>;
892
+ }
893
+
894
+ declare abstract class AXPFilterOperatorMiddlewareService {
895
+ /**
896
+ * Middleware to transform selected filters into corresponding operators.
897
+ * @param filters Array of selected filters (e.g., user input).
898
+ * @param customOperators Optional custom operators map to override default operators.
899
+ * @returns Transformed filters based on custom or default operators.
900
+ */
901
+ abstract transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];
902
+ /**
903
+ * Helper method to transform a single filter. This handles recursion for nested filters.
904
+ * @param filter A single filter object.
905
+ * @returns Transformed filter.
906
+ */
907
+ abstract transformFilter(filters: AXDataSourceFilterOption): AXDataSourceFilterOption;
908
+ abstract getOperator(key: string): AXDataSourceOperator;
909
+ }
910
+ declare class AXPFilterOperatorMiddlewareServiceImpl extends AXPFilterOperatorMiddlewareService {
911
+ private customOperatorService;
912
+ private operators;
913
+ transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];
914
+ transformFilter(filter: AXDataSourceFilterOption): AXDataSourceFilterOption;
915
+ getOperator(key: string): AXDataSourceOperator;
916
+ private getDefaultOperators;
917
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPFilterOperatorMiddlewareServiceImpl, never>;
918
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPFilterOperatorMiddlewareServiceImpl>;
919
+ }
920
+
921
+ declare abstract class AXPCustomOperatorService {
922
+ abstract getCustomOperators(): {
923
+ [key: string]: AXDataSourceOperator;
924
+ };
925
+ }
926
+ declare class AXPCustomOperatorServiceImpl extends AXPCustomOperatorService {
927
+ getCustomOperators(): {
928
+ [key: string]: AXDataSourceOperator;
929
+ };
930
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPCustomOperatorServiceImpl, never>;
931
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPCustomOperatorServiceImpl>;
932
+ }
933
+
934
+ /**
935
+ * Capabilities API provided to file action providers.
936
+ * These methods allow actions to interact with the file uploader widget.
937
+ */
938
+ interface AXCFileUploaderCapabilities {
939
+ /**
940
+ * Get all current files in the uploader.
941
+ */
942
+ getFiles: () => AXPFileListItem[];
943
+ /**
944
+ * Replace all files in the uploader.
945
+ */
946
+ setFiles: (files: AXPFileListItem[]) => void;
947
+ /**
948
+ * Add new files to the uploader.
949
+ */
950
+ addFiles: (files: AXPFileListItem[]) => void;
951
+ /**
952
+ * Update files matching a predicate.
953
+ */
954
+ updateFile: (predicate: (f: AXPFileListItem) => boolean, updater: (f: AXPFileListItem) => AXPFileListItem) => void;
955
+ /**
956
+ * Remove a file from the uploader.
957
+ */
958
+ removeFile: (file: AXPFileListItem) => void;
959
+ /**
960
+ * Clear all files from the uploader.
961
+ */
962
+ clear: () => void;
963
+ /**
964
+ * Get a file by its ID.
965
+ */
966
+ getFileById: (id: string) => AXPFileListItem | undefined;
967
+ /**
968
+ * Update a file by its ID.
969
+ */
970
+ updateFileById: (id: string, next: Partial<AXPFileListItem>) => void;
971
+ }
972
+ /**
973
+ * A file uploader action that can be added by providers.
974
+ */
975
+ interface AXCFileUploaderAction {
976
+ /**
977
+ * Unique identifier for the action/plugin.
978
+ */
979
+ plugin: string;
980
+ /**
981
+ * Whether this action is global (available even if plugin is not explicitly enabled).
982
+ */
983
+ global?: boolean;
984
+ /**
985
+ * Display text for the action (optional if textKey is provided).
986
+ */
987
+ text?: string;
988
+ /**
989
+ * Translation key for the action text (optional if text is provided).
990
+ */
991
+ textKey?: string;
992
+ /**
993
+ * Icon class for the action (e.g., 'fa-light fa-file-arrow-up').
994
+ */
995
+ icon?: string;
996
+ /**
997
+ * Action execution handler.
998
+ * Receives capabilities to interact with the file uploader.
999
+ * @param capabilities The capabilities API for file operations.
1000
+ */
1001
+ run: (capabilities: AXCFileUploaderCapabilities) => void | Promise<void>;
1002
+ }
1003
+ /**
1004
+ * Payload passed to file action providers.
1005
+ */
1006
+ interface AXCFileUploaderActionsPayload {
1007
+ /**
1008
+ * Enabled plugins configuration.
1009
+ */
1010
+ plugins: {
1011
+ name: string;
1012
+ options?: unknown;
1013
+ }[];
1014
+ /**
1015
+ * List of plugin names to exclude.
1016
+ */
1017
+ excludePlugins: string[];
1018
+ /**
1019
+ * Capabilities API for interacting with the file uploader.
1020
+ */
1021
+ capabilities: AXCFileUploaderCapabilities;
1022
+ /**
1023
+ * Current list of actions (providers can add to this array).
1024
+ */
1025
+ actions: AXCFileUploaderAction[];
1026
+ /**
1027
+ * Widget options (optional, for accessing widget-specific settings).
1028
+ */
1029
+ options?: {
1030
+ /**
1031
+ * Whether multiple files are allowed.
1032
+ */
1033
+ multiple?: boolean;
1034
+ /**
1035
+ * Accepted file types (e.g., '.jpg,.png' or 'image/*').
1036
+ */
1037
+ accept?: string;
1038
+ };
1039
+ }
1040
+
1041
+ /**
1042
+ * Type for file action provider token (supports both direct and async providers).
1043
+ */
1044
+ type AXPFileActionProviderToken = AXPFileActionProvider | Promise<AXPFileActionProvider>;
1045
+ /**
1046
+ * File action provider interface.
1047
+ * Providers can add actions to the file uploader widget.
1048
+ */
1049
+ interface AXPFileActionProvider {
1050
+ /**
1051
+ * Unique key identifying this provider.
1052
+ * Should match the webhook key for backward compatibility: 'file-uploader.actions'
1053
+ */
1054
+ key: string;
1055
+ /**
1056
+ * Execute the provider to add actions.
1057
+ * @param payload The payload containing capabilities and current actions.
1058
+ * @returns The modified payload with new actions added.
1059
+ */
1060
+ execute(payload: AXCFileUploaderActionsPayload): Promise<AXCFileUploaderActionsPayload> | AXCFileUploaderActionsPayload;
1061
+ /**
1062
+ * Priority for execution order (lower numbers execute first).
1063
+ * Defaults to 0 if not specified.
1064
+ */
1065
+ priority?: number;
1066
+ }
1067
+ /**
1068
+ * Multi-provider injection token for file action providers.
1069
+ * Modules can provide multiple implementations using this token.
1070
+ */
1071
+ declare const AXP_FILE_ACTION_PROVIDER: InjectionToken<AXPFileActionProviderToken[]>;
1072
+
1073
+ /**
1074
+ * Service for managing file uploader actions.
1075
+ * Aggregates actions from multiple providers and filters them based on plugin configuration.
1076
+ * Wraps the hook system for backward compatibility.
1077
+ */
1078
+ declare class AXPFileActionsService {
1079
+ private readonly actionProviders;
1080
+ private readonly hookService;
1081
+ private readonly injector;
1082
+ /**
1083
+ * Get all actions from providers, filtered based on plugin configuration.
1084
+ * Wraps the hook system for backward compatibility.
1085
+ * @param payload Initial payload with capabilities and plugin configuration.
1086
+ * @returns Filtered list of actions.
1087
+ */
1088
+ getActions(payload: AXCFileUploaderActionsPayload): Promise<AXCFileUploaderAction[]>;
1089
+ /**
1090
+ * Resolve all providers (handle both direct providers and Promise<provider>).
1091
+ */
1092
+ private resolveProviders;
1093
+ /**
1094
+ * Filter actions based on enabled plugins and exclude list.
1095
+ */
1096
+ private filterActions;
1097
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileActionsService, never>;
1098
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileActionsService>;
1099
+ }
1100
+
1101
+ declare const UploadFromComputerActionProvider: AXPFileActionProvider;
1102
+
1103
+ interface AXPTranslateFormatterOptions extends AXFormatOptions {
1104
+ scope?: string;
1105
+ lang?: string;
1106
+ params?: Record<string, unknown>;
1107
+ }
1108
+ /**
1109
+ * Platform formatter for display text: resolves ML objects, i18n keys (`@scope:key`), and primitives.
1110
+ * Register via {@link AXPCommonModule} (auto) or `AXFormatModule.forRoot({ formatters: [AXPTranslateFormatter] })`.
1111
+ */
1112
+ declare class AXPTranslateFormatter implements AXFormatter {
1113
+ private readonly translationService;
1114
+ get name(): string;
1115
+ format(value: unknown, options?: AXPTranslateFormatterOptions | string): string;
1116
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPTranslateFormatter, never>;
1117
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPTranslateFormatter>;
1118
+ }
1119
+
1120
+ declare abstract class AXPFileStorageService {
1121
+ abstract save(request: AXPFileStorageCreateRequest): Promise<AXPFileStorageInfo>;
1122
+ abstract update(request: AXPFileStorageUpdateRequest): Promise<AXPFileStorageInfo>;
1123
+ abstract find(request: AXPFileStorageFindRequest): Promise<AXPFileStorageInfo[]>;
1124
+ abstract findMany(ids: string[]): Promise<AXPFileManyStorageInfo[]>;
1125
+ abstract getInfo(fileId: string): Promise<AXPFileStorageInfo>;
1126
+ /** Download file bytes via the storage connector (includes auth when using API). */
1127
+ abstract download(fileId: string): Promise<Blob>;
1128
+ abstract remove(fileId: string): Promise<void>;
1129
+ abstract commit(fileId: string): Promise<void>;
1130
+ abstract markForDeletion(fileId: string): Promise<void>;
1131
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileStorageService, never>;
1132
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileStorageService>;
1133
+ }
1134
+
1135
+ declare class AXPFileStorageEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
1136
+ private readonly fileStorageService;
1137
+ provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
1138
+ }
1139
+
1140
+ /** Strips the file-cast prefix and whitespace from a stored image reference. */
1141
+ declare function normalizeStoredImageRef(value: string | null | undefined): string | null;
1142
+ declare function isStoredImageFileId(value: string | null | undefined): boolean;
1143
+ declare function resolveStoredImageDisplayUrl(value: string, download: (fileId: string) => Promise<Blob>): Promise<string>;
1144
+
1145
+ interface AXPFileType {
1146
+ /**
1147
+ * The unique identifier for the file type.
1148
+ */
1149
+ /**
1150
+ * The name unique of the file type.
1151
+ */
1152
+ name: string;
1153
+ /**
1154
+ * The title of the file type.
1155
+ */
1156
+ title: string;
1157
+ /**
1158
+ * The description of the file type.
1159
+ */
1160
+ description?: string;
1161
+ extensions: AXPFileExtension[];
1162
+ /**
1163
+ * The icon of the file type.
1164
+ */
1165
+ icon?: string;
1166
+ /**
1167
+ * The metadata associated with the file type.
1168
+ */
1169
+ meta?: AXPMetaDataDefinition[];
1170
+ }
1171
+ interface AXPFileExtension {
1172
+ /**
1173
+ * The unique identifier for the file extension.
1174
+ */
1175
+ /**
1176
+ * The name unique of the file extension.
1177
+ */
1178
+ name: string;
1179
+ /**
1180
+ * The title of the file extension.
1181
+ */
1182
+ title: string;
1183
+ /**
1184
+ * The description of the file extension.
1185
+ */
1186
+ description?: string;
1187
+ /**
1188
+ * The icon of the file type.
1189
+ */
1190
+ icon?: string;
1191
+ /**
1192
+ * The color of the file type.
1193
+ */
1194
+ color?: string;
1195
+ /**
1196
+ * The metadata associated with the file extension.
1197
+ */
1198
+ meta?: AXPMetaDataDefinition[];
1199
+ }
1200
+
1201
+ interface AXPFileTypeInfoProvider {
1202
+ items(): Promise<AXPFileType[]>;
1203
+ }
1204
+ declare const AXP_FILE_TYPE_INFO_PROVIDER: InjectionToken<AXPFileTypeInfoProvider[]>;
1205
+ declare class AXPFileTypeProviderService implements AXPFileTypeInfoProvider {
1206
+ private providers;
1207
+ items(): Promise<AXPFileType[]>;
1208
+ get(name: string): Promise<AXPFileType | undefined>;
1209
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileTypeProviderService, never>;
1210
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileTypeProviderService>;
1211
+ }
1212
+
1213
+ declare class AXPIntegrationProviderContext {
1214
+ private readonly definitions;
1215
+ /**
1216
+ * Registers a provider definition. Throws when duplicate ids are registered.
1217
+ */
1218
+ register(definition: AXPIntegrationProviderDefinition): void;
1219
+ getDefinitions(): ReadonlyMap<string, AXPIntegrationProviderDefinition>;
1220
+ }
1221
+
1222
+ interface AXPIntegrationProvider {
1223
+ provide(context: AXPIntegrationProviderContext): Promise<void>;
1224
+ }
1225
+ declare const AXP_INTEGRATION_PROVIDER: InjectionToken<AXPIntegrationProvider[]>;
1226
+ interface AXPIntegrationRuntimeProvider {
1227
+ readonly providerId: string;
1228
+ getHooks(): Promise<_acorex_platform_framework_shared_core.AXPIntegrationProviderRuntimeHooks>;
1229
+ }
1230
+ declare const AXP_INTEGRATION_RUNTIME_PROVIDER: InjectionToken<AXPIntegrationRuntimeProvider[]>;
1231
+
1232
+ declare class AXPIntegrationProviderRegistryService {
1233
+ private readonly providers;
1234
+ private cache;
1235
+ list(): Promise<AXPIntegrationProviderDefinition[]>;
1236
+ get(id: string): Promise<AXPIntegrationProviderDefinition | null>;
1237
+ getOrThrow(id: string): Promise<AXPIntegrationProviderDefinition>;
1238
+ clearCache(): void;
1239
+ private load;
1240
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPIntegrationProviderRegistryService, never>;
1241
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPIntegrationProviderRegistryService>;
1242
+ }
1243
+
1244
+ interface AXPIntegrationSecretRefInput {
1245
+ providerId: string;
1246
+ connectionId: string;
1247
+ tenantId: string;
1248
+ userId: string;
1249
+ authMethodType: string;
1250
+ }
1251
+ interface AXPIntegrationSecretStore {
1252
+ store(ref: AXPIntegrationSecretRefInput, payload: AXPIntegrationSecretPayload): Promise<string>;
1253
+ rotate(secretRef: string, context: AXPIntegrationAuthContext, payload: Partial<AXPIntegrationSecretPayload>): Promise<void>;
1254
+ resolve(secretRef: string, context: AXPIntegrationAuthContext): Promise<AXPIntegrationResolvedCredentials>;
1255
+ revoke(secretRef: string, context: AXPIntegrationAuthContext): Promise<void>;
1256
+ delete(secretRef: string, context: AXPIntegrationAuthContext): Promise<void>;
1257
+ }
1258
+ declare const AXP_INTEGRATION_SECRET_STORE: InjectionToken<AXPIntegrationSecretStore>;
1259
+ interface AXPIntegrationWithClientOptions {
1260
+ providerId: string;
1261
+ connectionScope?: 'user' | 'tenant';
1262
+ connectionKey?: string;
1263
+ requiredCapabilities?: string[];
1264
+ requiredScopes?: string[];
1265
+ }
1266
+ declare abstract class AXPIntegrationRuntimeService {
1267
+ abstract getProvider(id: string): Promise<AXPIntegrationProviderDefinition>;
1268
+ abstract listProviders(): Promise<AXPIntegrationProviderDefinition[]>;
1269
+ abstract getConnection(options: AXPIntegrationWithClientOptions): Promise<_acorex_platform_framework_shared_core.AXPSafeIntegrationConnectionDto>;
1270
+ abstract withClient<T>(options: AXPIntegrationWithClientOptions, fn: (client: unknown, ctx: AXPIntegrationRuntimeContext) => Promise<T>): Promise<T>;
1271
+ abstract buildRuntimeContext(connection: _acorex_platform_framework_shared_core.AXPSafeIntegrationConnectionDto & {
1272
+ secretRef: string;
1273
+ }): Promise<AXPIntegrationRuntimeContext>;
1274
+ }
1275
+ interface AXPIntegrationOAuthStartInput {
1276
+ providerId: string;
1277
+ connectionScope: 'user' | 'tenant';
1278
+ connectionKey: string;
1279
+ displayName: string;
1280
+ redirectUri: string;
1281
+ tenantId: string;
1282
+ userId: string;
1283
+ scopes?: string[];
1284
+ }
1285
+ interface AXPIntegrationOAuthCompleteInput {
1286
+ providerId: string;
1287
+ state: string;
1288
+ code: string;
1289
+ }
1290
+ declare abstract class AXPIntegrationOAuthService {
1291
+ abstract startAuthorization(input: AXPIntegrationOAuthStartInput): Promise<{
1292
+ redirectUrl: string;
1293
+ state: string;
1294
+ }>;
1295
+ abstract completeCallback(input: AXPIntegrationOAuthCompleteInput): Promise<{
1296
+ connectionId: string;
1297
+ }>;
1298
+ }
1299
+ declare const AXP_INTEGRATION_OAUTH_SERVICE: InjectionToken<AXPIntegrationOAuthService>;
1300
+
1301
+ /**
1302
+ * Optional hook invoked after a connection is successfully established (OAuth callback or credentials connect).
1303
+ * Use to link provider-specific records (e.g. Jira/GitLab instance ↔ integration connection).
1304
+ */
1305
+ interface AXPIntegrationConnectionEstablishedHandler {
1306
+ readonly providerId: string;
1307
+ onEstablished(connection: AXPSafeIntegrationConnectionDto): Promise<void>;
1308
+ }
1309
+ declare const AXP_INTEGRATION_CONNECTION_ESTABLISHED: InjectionToken<AXPIntegrationConnectionEstablishedHandler[]>;
1310
+
1311
+ declare class AXPStickyDirective {
1312
+ private element;
1313
+ private renderer;
1314
+ private zone;
1315
+ private cdr;
1316
+ stickyClass: string;
1317
+ stickyOffset: number;
1318
+ isStickyChange: EventEmitter<boolean>;
1319
+ private _isSticky;
1320
+ get isSticky(): boolean;
1321
+ set isSticky(value: boolean);
1322
+ private parentElement;
1323
+ private targetElement;
1324
+ private mutationObserver;
1325
+ private readonly onWindowResize;
1326
+ stickyParent: string | HTMLElement;
1327
+ stickyTarget: string;
1328
+ constructor(element: ElementRef<HTMLDivElement>, renderer: Renderer2, zone: NgZone, cdr: ChangeDetectorRef);
1329
+ ngAfterViewInit(): void;
1330
+ private initSticky;
1331
+ private getScrollTop;
1332
+ /**
1333
+ * Toggle stuck styling only while this element is visually pinned (matches `position: sticky; top: 0`).
1334
+ * Scroll-offset thresholds would stay true for every section already passed, so multiple stacked stickies
1335
+ * would all keep `--stuck`; geometry fixes that.
1336
+ */
1337
+ private computeShouldStick;
1338
+ private applyStickyStateFromScrollPosition;
1339
+ private onParentScroll;
1340
+ private toggleStickyClasses;
1341
+ ngOnDestroy(): void;
1342
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPStickyDirective, never>;
1343
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXPStickyDirective, "[axpSticky]", ["axpSticky"], { "stickyClass": { "alias": "axpSticky"; "required": false; }; "stickyOffset": { "alias": "stickyOffset"; "required": false; }; "stickyParent": { "alias": "stickyParent"; "required": false; }; "stickyTarget": { "alias": "stickyTarget"; "required": false; }; }, { "isStickyChange": "isStickyChange"; }, never, never, true, never>;
1344
+ }
1345
+
1346
+ /**
1347
+ * Data source definition for menu items from {@link AXPMenuProviderService#rawItems}.
1348
+ */
1349
+ declare class AXPMenuItemsDataSourceDefinition implements AXPDataSourceDefinitionProvider {
1350
+ private readonly menuProviderService;
1351
+ items(): Promise<AXPDataSourceDefinition[]>;
1352
+ }
1353
+
1354
+ type AXPMenuInsertion = 'before' | 'after' | 'inside';
1355
+ type AXPMenuType = 'menu' | 'group' | 'break';
1356
+ type AXPMenuItemCommand = AXPNavigateActionCommand<'modal' | 'router'> | AXPExecuteCommand;
1357
+ interface AXPMenuItem {
1358
+ text: string;
1359
+ type?: AXPMenuType;
1360
+ name?: string;
1361
+ description?: string;
1362
+ icon?: string;
1363
+ priority?: number;
1364
+ children?: AXPMenuItem[];
1365
+ path?: string;
1366
+ command?: AXPMenuItemCommand | undefined;
1367
+ badgeKey?: string;
1368
+ data?: any;
1369
+ meta?: AXPMetaData;
1370
+ policy?: {
1371
+ permissions?: string[];
1372
+ features?: string[];
1373
+ };
1374
+ /**
1375
+ * Keyboard shortcuts for this menu item.
1376
+ * Use a chord string or `{ keys, allowInEditableFields, ... }`. Pass `[]` to disable.
1377
+ */
1378
+ shortcuts?: AXPKeyboardShortcut[];
1379
+ }
1380
+ interface AXPMenuFinderResult {
1381
+ readonly exists: boolean;
1382
+ insert(items: AXPMenuItem[], position: AXPMenuInsertion): void;
1383
+ remove(): void;
1384
+ update(updatedItem: Partial<AXPMenuItem>): void;
1385
+ addItems(items: AXPMenuItem[]): void;
1386
+ /**
1387
+ * Moves the item matched by the current `find` target to another place in the tree.
1388
+ * @param destination Name of the target menu item (group or item).
1389
+ * @param position `inside` — child of `destination` (default). `before` / `after` — sibling of `destination` in its parent's list.
1390
+ */
1391
+ moveTo(destination: string, position?: AXPMenuInsertion): void;
1392
+ }
1393
+ interface AXPMenuProviderContext {
1394
+ addItems(items: AXPMenuItem[]): void;
1395
+ find(target: string): AXPMenuFinderResult;
1396
+ }
1397
+
1398
+ interface AXPMenuProvider {
1399
+ provide(context: AXPMenuProviderContext): Promise<void>;
1400
+ }
1401
+ declare const AXP_MENU_PROVIDER: InjectionToken<AXPMenuProvider[]>;
1402
+ declare class AXPMenuProviderService {
1403
+ private providers;
1404
+ private middlewareRegistry;
1405
+ private cache;
1406
+ private pendingInserts;
1407
+ private pendingRemovals;
1408
+ private pendingUpdates;
1409
+ private pendingAdditions;
1410
+ private pendingMoves;
1411
+ /**
1412
+ * Observable for menu reload events
1413
+ * Emits when menu cache is cleared and consumers should reload
1414
+ */
1415
+ private menuReloadSubject;
1416
+ readonly menuReload$: rxjs.Observable<void>;
1417
+ /**
1418
+ * Get menu items with middlewares applied (for end-user display)
1419
+ */
1420
+ items(): Promise<AXPMenuItem[]>;
1421
+ /**
1422
+ * Get raw menu items WITHOUT middleware applied (for management/editing)
1423
+ * Used by menu management pages to show original items before customization
1424
+ */
1425
+ rawItems(): Promise<AXPMenuItem[]>;
1426
+ /**
1427
+ * Clear the cache to force reload of menu items
1428
+ * Notifies all subscribers to reload their menu data
1429
+ */
1430
+ clearCache(): void;
1431
+ /**
1432
+ * Apply middlewares in priority order using the enhanced context API
1433
+ */
1434
+ private applyMiddlewares;
1435
+ /**
1436
+ * Create provider context for menu providers
1437
+ */
1438
+ private createMenuProviderContext;
1439
+ private applyPendingOperations;
1440
+ private findItemWithParent;
1441
+ /**
1442
+ * Find menu item by name in the items tree (recursive search)
1443
+ */
1444
+ private findItemByName;
1445
+ private applyPendingMove;
1446
+ private itemIsInSubtreeOf;
1447
+ /**
1448
+ * Merge new item properties into existing item, handling children merge
1449
+ */
1450
+ private mergeMenuItem;
1451
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuProviderService, never>;
1452
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuProviderService>;
1453
+ }
1454
+
1455
+ /**
1456
+ * Rich context API for manipulating menu items within middleware
1457
+ * Provides helper methods to find, update, remove, and add menu items easily
1458
+ */
1459
+ interface AXPMenuMiddlewareContext {
1460
+ /**
1461
+ * Get all menu items
1462
+ */
1463
+ readonly items: AXPMenuItem[];
1464
+ /**
1465
+ * Find menu item(s) by name or pattern
1466
+ */
1467
+ find(nameOrPattern: string | RegExp): AXPMenuItemFinder;
1468
+ /**
1469
+ * Find menu item by name (exact match)
1470
+ */
1471
+ findByName(name: string): AXPMenuItemFinder;
1472
+ /**
1473
+ * Find menu items by pattern (regex or wildcard)
1474
+ */
1475
+ findByPattern(pattern: string | RegExp): AXPMenuItemFinder[];
1476
+ /**
1477
+ * Add new menu items to root level
1478
+ */
1479
+ add(...items: AXPMenuItem[]): AXPMenuMiddlewareContext;
1480
+ /**
1481
+ * Remove menu items by predicate
1482
+ */
1483
+ remove(predicate: (item: AXPMenuItem) => boolean): AXPMenuMiddlewareContext;
1484
+ /**
1485
+ * Sort all menu items recursively by priority
1486
+ */
1487
+ sort(): AXPMenuMiddlewareContext;
1488
+ /**
1489
+ * Get the final menu items array
1490
+ */
1491
+ toArray(): AXPMenuItem[];
1492
+ }
1493
+ /**
1494
+ * Helper for finding and manipulating a specific menu item
1495
+ */
1496
+ interface AXPMenuItemFinder {
1497
+ /**
1498
+ * Get the found menu item (or undefined)
1499
+ */
1500
+ get(): AXPMenuItem | undefined;
1501
+ /**
1502
+ * Check if menu item exists
1503
+ */
1504
+ exists(): boolean;
1505
+ /**
1506
+ * Update menu item properties
1507
+ */
1508
+ update(updater: Partial<AXPMenuItem> | ((item: AXPMenuItem) => Partial<AXPMenuItem>)): AXPMenuItemFinder;
1509
+ /**
1510
+ * Remove the menu item
1511
+ */
1512
+ remove(): AXPMenuItemFinder;
1513
+ /**
1514
+ * Hide the menu item (removes it from the menu)
1515
+ */
1516
+ hide(): AXPMenuItemFinder;
1517
+ /**
1518
+ * Show the menu item (currently a no-op as items are visible by default)
1519
+ * Note: To truly implement show, we'd need to track removed items
1520
+ */
1521
+ show(): AXPMenuItemFinder;
1522
+ /**
1523
+ * Set priority
1524
+ */
1525
+ setPriority(priority: number): AXPMenuItemFinder;
1526
+ /**
1527
+ * Add children to this menu item
1528
+ */
1529
+ addChildren(...children: AXPMenuItem[]): AXPMenuItemFinder;
1530
+ /**
1531
+ * Remove children by predicate
1532
+ */
1533
+ removeChildren(predicate: (child: AXPMenuItem) => boolean): AXPMenuItemFinder;
1534
+ /**
1535
+ * Move menu item to a different parent
1536
+ */
1537
+ moveTo(parentName: string | null | undefined): AXPMenuItemFinder;
1538
+ /**
1539
+ * Insert menu items before this item
1540
+ */
1541
+ insertBefore(...items: AXPMenuItem[]): AXPMenuItemFinder;
1542
+ /**
1543
+ * Insert menu items after this item
1544
+ */
1545
+ insertAfter(...items: AXPMenuItem[]): AXPMenuItemFinder;
1546
+ }
1547
+ /**
1548
+ * Middleware that processes menu items after all providers have executed
1549
+ * Middlewares are executed in order based on their priority (higher priority = earlier execution)
1550
+ */
1551
+ interface AXPMenuMiddleware {
1552
+ /**
1553
+ * Optional priority for execution order (higher = earlier)
1554
+ * Default: 0
1555
+ */
1556
+ readonly priority?: number;
1557
+ /**
1558
+ * Optional name for debugging and identification
1559
+ */
1560
+ readonly name?: string;
1561
+ /**
1562
+ * Process menu items using the rich context API
1563
+ * @param context - The menu middleware context with helper methods
1564
+ * @returns Processed context or void (context is mutable)
1565
+ */
1566
+ process(context: AXPMenuMiddlewareContext): Promise<void | AXPMenuMiddlewareContext>;
1567
+ }
1568
+ /**
1569
+ * Provider definition for registering middleware via multi-provider
1570
+ */
1571
+ interface AXPMenuMiddlewareProvider {
1572
+ /**
1573
+ * The middleware instance
1574
+ */
1575
+ middleware: AXPMenuMiddleware;
1576
+ /**
1577
+ * Optional priority override
1578
+ */
1579
+ priority?: number;
1580
+ }
1581
+ /**
1582
+ * Injection token for menu middlewares (multi-provider)
1583
+ */
1584
+ declare const AXP_MENU_MIDDLEWARE: InjectionToken<AXPMenuMiddleware[]>;
1585
+
1586
+ /**
1587
+ * Creates a rich context for menu manipulation
1588
+ * Similar to entity modifier context pattern
1589
+ */
1590
+ declare function createMenuContext(items: AXPMenuItem[]): AXPMenuMiddlewareContext;
1591
+
1592
+ /**
1593
+ * Central service for managing menu middlewares with priority-based ordering
1594
+ * Similar to token registry pattern used in identifier-management
1595
+ */
1596
+ declare class AXPMenuMiddlewareRegistry {
1597
+ /**
1598
+ * Manually registered middlewares
1599
+ */
1600
+ private readonly manualMiddlewares;
1601
+ /**
1602
+ * Provider-based middlewares (multi-provider injection)
1603
+ */
1604
+ private readonly providerMiddlewares;
1605
+ /**
1606
+ * Manually register a middleware
1607
+ * @param middleware - The middleware to register
1608
+ */
1609
+ register(middleware: AXPMenuMiddleware): void;
1610
+ /**
1611
+ * Unregister a middleware by name
1612
+ * @param name - The name of the middleware to remove
1613
+ */
1614
+ unregister(name: string): void;
1615
+ /**
1616
+ * Get a specific middleware by name
1617
+ * @param name - The middleware name
1618
+ */
1619
+ get(name: string): AXPMenuMiddleware | undefined;
1620
+ /**
1621
+ * Get all middlewares sorted by priority (highest first)
1622
+ * Combines provider-based and manually registered middlewares
1623
+ */
1624
+ list(): AXPMenuMiddleware[];
1625
+ /**
1626
+ * Check if a middleware exists
1627
+ * @param name - The middleware name
1628
+ */
1629
+ exists(name: string): boolean;
1630
+ /**
1631
+ * Clear all manually registered middlewares
1632
+ * Provider-based middlewares are not affected
1633
+ */
1634
+ clear(): void;
1635
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuMiddlewareRegistry, never>;
1636
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuMiddlewareRegistry>;
1637
+ }
1638
+
1639
+ /**
1640
+ * Helper function to provide menu middlewares with proper DI setup
1641
+ * Similar to provideCommandMiddleware pattern
1642
+ *
1643
+ * @example
1644
+ * ```typescript
1645
+ * // In app.config.ts or module providers
1646
+ * export const appConfig: ApplicationConfig = {
1647
+ * providers: [
1648
+ * provideMenuMiddleware([
1649
+ * customizationMiddleware,
1650
+ * securityMiddleware,
1651
+ * loggingMiddleware
1652
+ * ])
1653
+ * ]
1654
+ * };
1655
+ * ```
1656
+ */
1657
+ declare function provideMenuMiddleware(middlewares: AXPMenuMiddleware[]): EnvironmentProviders;
1658
+ /**
1659
+ * Helper to create a class-based middleware with priority
1660
+ *
1661
+ * @example
1662
+ * ```typescript
1663
+ * const myMiddleware = createMenuMiddleware({
1664
+ * name: 'my-middleware',
1665
+ * priority: 100,
1666
+ * process: async (context) => {
1667
+ * context.find('dashboard').setPriority(1);
1668
+ * }
1669
+ * });
1670
+ * ```
1671
+ */
1672
+ declare function createMenuMiddleware(config: {
1673
+ name: string;
1674
+ priority?: number;
1675
+ process: (context: AXPMenuMiddlewareContext) => Promise<void>;
1676
+ }): AXPMenuMiddleware;
1677
+
1678
+ declare const AXPMenuService: i0.Type<{
1679
+ items: i0.Signal<AXPMenuItem[]>;
1680
+ selectedMenuItem: _ngrx_signals.DeepSignal<{
1681
+ item: AXPMenuItem | null;
1682
+ isFullMatch: boolean;
1683
+ }>;
1684
+ setMenuItems: (items: AXPMenuItem[]) => void;
1685
+ selectMenuItemByRoute: (path: string) => void;
1686
+ executeCommand: (item: AXPMenuItem) => void;
1687
+ isItemOpen: (item: AXPMenuItem) => boolean;
1688
+ } & _ngrx_signals.StateSource<{
1689
+ items: AXPMenuItem[];
1690
+ selectedMenuItem: {
1691
+ item: AXPMenuItem | null;
1692
+ isFullMatch: boolean;
1693
+ };
1694
+ }>>;
1695
+
1696
+ declare class AXPMenuKeyboardShortcutService {
1697
+ private readonly destroyRef;
1698
+ private readonly injector;
1699
+ private readonly shortcutRegistry;
1700
+ private readonly visibilityService;
1701
+ private readonly sessionService;
1702
+ private readonly isAuthenticated;
1703
+ /**
1704
+ * Registers global keyboard shortcuts declared on menu items (`shortcuts` property).
1705
+ * Replaces the previous registration when the menu tree is reloaded.
1706
+ */
1707
+ sync(items: AXPMenuItem[]): void;
1708
+ private buildShortcutBindings;
1709
+ private collectShortcutEntries;
1710
+ private isShortcutActive;
1711
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuKeyboardShortcutService, never>;
1712
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuKeyboardShortcutService>;
1713
+ }
1714
+
1715
+ /**
1716
+ * Service for checking menu item visibility based on permissions, features, and children.
1717
+ * This service helps filter out empty menu items that have no visible children.
1718
+ */
1719
+ declare class AXPMenuVisibilityService {
1720
+ private sessionService;
1721
+ /**
1722
+ * Checks visibility for a menu branch, including ancestor policies.
1723
+ * Parent module features and permissions must pass before child routes are accessible.
1724
+ */
1725
+ isMenuBranchVisible(item: AXPMenuItem, ancestors?: AXPMenuItem[]): boolean;
1726
+ /**
1727
+ * Checks if a menu item should be visible based on permissions and features.
1728
+ */
1729
+ isItemVisible(item: AXPMenuItem): boolean;
1730
+ /**
1731
+ * Recursively checks if a menu item has any visible children.
1732
+ * @param item The menu item to check
1733
+ * @param getRouterLink Optional function to check if an item has a router link
1734
+ */
1735
+ hasVisibleChildren(item: AXPMenuItem, getRouterLink?: (item: AXPMenuItem) => unknown): boolean;
1736
+ /**
1737
+ * Determines if a menu item should be rendered.
1738
+ * A menu item should be rendered if:
1739
+ * 1. It has a routerLink, OR
1740
+ * 2. It has visible children, OR
1741
+ * 3. It has a command (for non-router navigation)
1742
+ *
1743
+ * @param item The menu item to check
1744
+ * @param getRouterLink Optional function to check if an item has a router link
1745
+ */
1746
+ shouldRenderMenuItem(item: AXPMenuItem, getRouterLink?: (item: AXPMenuItem) => unknown): boolean;
1747
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuVisibilityService, never>;
1748
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuVisibilityService>;
1749
+ }
1750
+
1751
+ interface AXPMenuRouteMatchResult {
1752
+ item: AXPMenuItem;
1753
+ /** Parent menu items from root down to the direct parent of the matched item. */
1754
+ ancestors: AXPMenuItem[];
1755
+ isPartialMatch: boolean;
1756
+ }
1757
+ /**
1758
+ * Compares a menu item path with the current browser path.
1759
+ * Mirrors the matching rules used when selecting the active menu item.
1760
+ */
1761
+ declare function axpMenuPathsMatch(itemPath: string, currentPath: string, trailingSegmentsToIgnore?: string[]): {
1762
+ isMatch: boolean;
1763
+ isPartial: boolean;
1764
+ };
1765
+ /**
1766
+ * Finds the most specific menu item that matches the given route path.
1767
+ */
1768
+ declare function axpFindMenuItemByRoute(items: AXPMenuItem[], currentPath: string, trailingSegmentsToIgnore?: string[]): AXPMenuRouteMatchResult | null;
1769
+
1770
+ /**
1771
+ * Resolves route access using menu policy, route metadata, permissions, and features.
1772
+ */
1773
+ declare class AXPMenuRouteAccessService {
1774
+ private readonly menuProvider;
1775
+ private readonly menuVisibility;
1776
+ private readonly sessionService;
1777
+ /**
1778
+ * Checks whether navigation to the target URL is allowed for the current user.
1779
+ */
1780
+ canAccess(route: ActivatedRouteSnapshot, url: string): Promise<boolean>;
1781
+ private shouldSkip;
1782
+ private hasRouteFlag;
1783
+ private hasExplicitRouteAccess;
1784
+ private getInheritedRouteData;
1785
+ private normalizeKeys;
1786
+ private normalizeUrl;
1787
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPMenuRouteAccessService, never>;
1788
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPMenuRouteAccessService>;
1789
+ }
1790
+
1791
+ /**
1792
+
1793
+ * Blocks navigation when the target route is not accessible for the current user.
1794
+
1795
+ * Evaluates menu policy, permissions, and features.
1796
+
1797
+ */
1798
+ declare const AXPMenuRouteGuard: CanActivateFn;
1799
+
1800
+ /** Standard guards for authenticated routes with menu-based access enforcement. */
1801
+ declare const AXP_PROTECTED_ROUTE_GUARDS: readonly [_angular_router.CanActivateFn, _angular_router.CanActivateFn];
1802
+
1803
+ interface AXPSearchDefinitionDisplayFormat {
1804
+ title?: string;
1805
+ description?: string;
1806
+ icon?: string;
1807
+ id?: string;
1808
+ /** Entity `single.title` / lookup / individual templates when primary `title` is empty. */
1809
+ titleFallbackTemplates?: string[];
1810
+ /** Entity property paths (from schema) when templates do not resolve. */
1811
+ titleFallbackFields?: string[];
1812
+ }
1813
+ interface AXPSearchDefinition {
1814
+ name: string;
1815
+ title: string;
1816
+ group: string;
1817
+ icon: string;
1818
+ order: number;
1819
+ format: AXPSearchDefinitionDisplayFormat;
1820
+ actions: AXPSearchAction[];
1821
+ }
1822
+ interface AXPSearchParentResult {
1823
+ title: string;
1824
+ data?: any;
1825
+ }
1826
+ interface AXPSearchResult {
1827
+ id?: string;
1828
+ group: string;
1829
+ data?: any;
1830
+ title?: string | AXPMultiLanguageString;
1831
+ description?: string | AXPMultiLanguageString;
1832
+ icon?: string;
1833
+ command: AXPExecuteCommand;
1834
+ parent?: AXPSearchParentResult;
1835
+ }
1836
+ interface AXPSearchDisplayGroupResult {
1837
+ name: string;
1838
+ title: string;
1839
+ order: number;
1840
+ children: AXPSearchDisplayResult[];
1841
+ }
1842
+ interface AXPSearchDisplayResult {
1843
+ id: string;
1844
+ definitionName?: string;
1845
+ definitionTitle?: string;
1846
+ name: string;
1847
+ title: string | AXPMultiLanguageString;
1848
+ description?: string | AXPMultiLanguageString;
1849
+ icon: string;
1850
+ data?: any;
1851
+ order?: any;
1852
+ command: AXPExecuteCommand;
1853
+ parent?: AXPSearchParentResult;
1854
+ actions: AXPSearchAction[];
1855
+ }
1856
+ interface AXPSearchDisplayResultForSave {
1857
+ id: string;
1858
+ name: string;
1859
+ title: string;
1860
+ description?: string;
1861
+ icon: string;
1862
+ command: AXPExecuteCommand;
1863
+ parent?: {
1864
+ title: string;
1865
+ description?: string;
1866
+ };
1867
+ }
1868
+ interface AXPSearchAction extends Partial<AXPCommandActionLook> {
1869
+ name: string;
1870
+ type: AXPSystemActionType | string;
1871
+ priority: AXPCommandActionPriority;
1872
+ separated?: boolean;
1873
+ }
1874
+
1875
+ /**
1876
+ * Optional hook to resolve entity search definitions on demand (e.g. Module.X.Entity).
1877
+ */
1878
+ interface AXPSearchDefinitionLazyResolver {
1879
+ resolve(definitionName: string): Promise<AXPSearchDefinition | null>;
1880
+ }
1881
+ declare const AXP_SEARCH_DEFINITION_LAZY_RESOLVER: InjectionToken<AXPSearchDefinitionLazyResolver>;
1882
+
1883
+ declare class AXPSearchDefinitionProviderContext {
1884
+ private definitions;
1885
+ private definitionMap;
1886
+ addDefinition(name: string, title: string, group: string, icon: string, order: number, options?: {
1887
+ format?: AXPSearchDefinitionDisplayFormat;
1888
+ actions?: AXPSearchAction[];
1889
+ }): AXPSearchDefinitionBuilder;
1890
+ getDefinitions(): AXPSearchDefinition[];
1891
+ hasEntity(name: string): boolean;
1892
+ getDefinition(name: string): AXPSearchDefinition | undefined;
1893
+ }
1894
+ declare class AXPSearchDefinitionBuilder {
1895
+ private context;
1896
+ private definition;
1897
+ constructor(context: AXPSearchDefinitionProviderContext, definition: AXPSearchDefinition);
1898
+ addAction(name: string): AXPSearchDefinitionActionBuilder;
1899
+ action(name: string): AXPSearchDefinitionActionBuilder | null;
1900
+ endEntity(): AXPSearchDefinitionProviderContext;
1901
+ }
1902
+ declare class AXPSearchDefinitionActionBuilder {
1903
+ private entityBuilder;
1904
+ constructor(entityBuilder: AXPSearchDefinitionBuilder);
1905
+ endAction(): AXPSearchDefinitionBuilder;
1906
+ }
1907
+
1908
+ interface AXPSearchDefinitionProvider {
1909
+ provide(context: AXPSearchDefinitionProviderContext): Promise<void>;
1910
+ }
1911
+ declare const AXP_SEARCH_DEFINITION_PROVIDER: InjectionToken<AXPSearchDefinitionProvider[]>;
1912
+ declare class AXPSearchDefinitionProviderService {
1913
+ private providers;
1914
+ private lazyResolver;
1915
+ private cache;
1916
+ private load;
1917
+ getListAsync(): Promise<AXPSearchDefinition[]>;
1918
+ getList(): AXPSearchDefinition[];
1919
+ findDefinition(definitionName: string): AXPSearchDefinition;
1920
+ findDefinitionAsync(definitionName: string): Promise<AXPSearchDefinition | null>;
1921
+ findDefinitionByGroup(definitionGroup: string): AXPSearchDefinition;
1922
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSearchDefinitionProviderService, never>;
1923
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSearchDefinitionProviderService>;
1924
+ }
1925
+
1926
+ interface AXPSearchProvider {
1927
+ search(text: string): Promise<AXPSearchResult[]>;
1928
+ }
1929
+ declare abstract class AXPSearchCommandProvider {
1930
+ private readonly translationService;
1931
+ abstract commands: AXPSearchResult[];
1932
+ search(text: string): Promise<AXPSearchResult[]>;
1933
+ }
1934
+
1935
+ declare const AXP_SEARCH_PROVIDER: InjectionToken<AXPSearchProvider[]>;
1936
+ declare class AXPSearchService {
1937
+ private providers;
1938
+ private definitionService;
1939
+ private formatService;
1940
+ private translationService;
1941
+ private expressionEvaluator;
1942
+ private contextEvalFactory;
1943
+ search(text: string): Promise<AXPSearchDisplayGroupResult[]>;
1944
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSearchService, never>;
1945
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSearchService>;
1946
+ }
1947
+
1948
+ /**
1949
+ * Resolves a value to plain text for global-search matching (i18n keys, locale maps, scalars).
1950
+ */
1951
+ declare function resolveSearchableText(value: unknown, locale: string, translationService: AXTranslationService): string;
1952
+ /**
1953
+ * Case-insensitive match against i18n keys, locale maps, and plain strings.
1954
+ */
1955
+ declare function searchInSearchableValue(value: unknown, query: string, locale: string, translationService: AXTranslationService): boolean;
1956
+ /**
1957
+ * Shallow + nested search over entity/command payloads (skips id / entityName keys).
1958
+ */
1959
+ declare function searchInRecordValues(value: unknown, query: string, locale: string, translationService: AXTranslationService, depth?: number): boolean;
1960
+ /** Standard display-tier row scope for entity title/search templates. */
1961
+ declare function createEntityRowExpressionScope(data: unknown, contextEvalFactory: AXPContextEvalFactory): AXPExpressionEvaluatorScope;
1962
+ /**
1963
+ * Evaluates a normalized entity display template via {@link AXPExpressionEvaluatorService}.
1964
+ */
1965
+ declare function evaluateEntityDisplayTemplate(template: string, data: unknown, expressionEvaluator: AXPExpressionEvaluatorService, locale: string, translationService: AXTranslationService, contextEvalFactory: AXPContextEvalFactory): Promise<unknown>;
1966
+ /**
1967
+ * Best display string from row values that contain the active search query (deep-match fallback).
1968
+ */
1969
+ declare function resolveQueryMatchingDisplayText(value: unknown, query: string, locale: string, translationService: AXTranslationService, depth?: number): string;
1970
+ /**
1971
+ * Resolves entity search display templates; coerces multi-language field values to readable text.
1972
+ */
1973
+ declare function resolveSearchDisplayTemplate(template: string | undefined, data: unknown, locale: string, translationService: AXTranslationService, formatService: AXFormatService, expressionEvaluator: AXPExpressionEvaluatorService, contextEvalFactory: AXPContextEvalFactory): Promise<AXPMultiLanguageString>;
1974
+
1975
+ /**
1976
+ * Modify/edit popup chrome: `{action} {individual} ({update.title ?? single.title})` when a record template exists.
1977
+ */
1978
+ declare function resolveEntityModifyPopupTitle(entity: AXPEntity, recordData: unknown, translationService: AXTranslationService, formatService: AXFormatService, expressionEvaluator: AXPExpressionEvaluatorService, contextEvalFactory: AXPContextEvalFactory, actionTitleKey?: string): Promise<string>;
1979
+ /**
1980
+ * Resolves an entity row title using entity-driven fallback templates and property paths.
1981
+ */
1982
+ declare function resolveEntitySearchTitleFallback(format: Pick<AXPSearchDefinitionDisplayFormat, 'titleFallbackTemplates' | 'titleFallbackFields'>, data: unknown, locale: string, translationService: AXTranslationService, formatService: AXFormatService, expressionEvaluator: AXPExpressionEvaluatorService, contextEvalFactory: AXPContextEvalFactory): Promise<string>;
1983
+
1984
+ interface AXPResolveEntityRowDisplayTitleOptions {
1985
+ /** Row or form context data used to evaluate title templates. */
1986
+ data: Record<string, unknown> | undefined;
1987
+ activeLang: string;
1988
+ formatService: AXFormatService;
1989
+ /** Entity definition when available (forms, columns with entity resolver). */
1990
+ entity?: AXPEntity | null;
1991
+ /** Widget/interface options — may contain `popupTitle` or `titleTemplate`. */
1992
+ widgetOptions?: Record<string, unknown> | undefined;
1993
+ }
1994
+ /** Resolves a row field or format result to a plain display string for the active locale. */
1995
+ declare function resolveEntityRowDisplayText(value: unknown, activeLang: string): string;
1996
+ /**
1997
+ * Resolves an entity row title for list columns, view widgets, and edit widgets.
1998
+ * Uses entity metadata when provided, otherwise widget title templates and common field paths.
1999
+ */
2000
+ declare function resolveEntityRowDisplayTitle(options: AXPResolveEntityRowDisplayTitleOptions): string;
2001
+ /**
2002
+ * @deprecated Use {@link resolveEntityRowDisplayTitle} instead.
2003
+ */
2004
+ declare function resolveEntityRowDisplayTitleFromColumnContext(rowData: Record<string, unknown> | undefined, columnOptions: Record<string, unknown> | undefined, formatService: AXFormatService, activeLang: string): string;
2005
+ /**
2006
+ * Formats the entity row title for display using entity-driven templates and property paths.
2007
+ */
2008
+ declare function formatEntityRowDisplayTitle(entity: AXPEntity | null | undefined, rowData: Record<string, unknown> | undefined, formatService: AXFormatService, activeLang: string): string;
2009
+
2010
+ /**
2011
+ * Shared utility for creating Entity:Create command options used in search command providers.
2012
+ * Use with command: { name: 'Entity:Create', options: createEntityCommandOptions(...) }
2013
+ */
2014
+ declare function createEntityCommandOptions(entityKey: string, entityInfo: {
2015
+ name: string;
2016
+ module: string;
2017
+ title: string;
2018
+ }): Record<string, unknown>;
2019
+ /**
2020
+ * Creates a search command for "Create {Entity}" with consistent i18n pattern.
2021
+ * Use titleKey/descriptionKey from module (e.g. @module:entity.permissions.create.title).
2022
+ * Standard: "Create {Entity}" for title, "Create new {entities}" for description.
2023
+ */
2024
+ declare function createEntitySearchCommand(config: {
2025
+ id: string;
2026
+ entityKey: string;
2027
+ entityInfo: {
2028
+ name: string;
2029
+ module: string;
2030
+ title: string;
2031
+ };
2032
+ titleKey: string;
2033
+ descriptionKey?: string;
2034
+ icon: string;
2035
+ }): AXPSearchResult;
2036
+
2037
+ declare class AXPMenuSearchDefinitionProvider implements AXPSearchDefinitionProvider {
2038
+ provide(context: AXPSearchDefinitionProviderContext): Promise<void>;
2039
+ }
2040
+
2041
+ interface AXPMenuItemWithParent extends AXPMenuItem {
2042
+ parent?: AXPMenuItem;
2043
+ }
2044
+ declare class AXPMenuSearchProvider implements AXPSearchProvider {
2045
+ menuService: AXPMenuProviderService;
2046
+ translateService: AXTranslationService;
2047
+ search(text: string): Promise<AXPSearchResult[]>;
2048
+ /**
2049
+ * Recursively searches AXPMenuItem and its children for a matching text.
2050
+ *
2051
+ * @param menuItems - The array of AXPMenuItem to search in.
2052
+ * @param searchText - The text to search for (case-insensitive).
2053
+ * @returns An array of AXPMenuItem that match the search text.
2054
+ */
2055
+ private searchMenuItems;
2056
+ }
2057
+
2058
+ declare class AXPFooterTextSlotComponent {
2059
+ text: string;
2060
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPFooterTextSlotComponent, never>;
2061
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPFooterTextSlotComponent, "ng-component", never, { "text": { "alias": "text"; "required": false; }; }, {}, never, never, true, never>;
2062
+ }
2063
+
2064
+ declare class AXPNavBarSlotComponent {
2065
+ items: AXPMenuItem[];
2066
+ protected handleCommand(action?: AXPMenuItemCommand): void;
2067
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPNavBarSlotComponent, never>;
2068
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPNavBarSlotComponent, "ng-component", never, { "items": { "alias": "items"; "required": false; }; }, {}, never, never, true, never>;
2069
+ }
2070
+
2071
+ interface AXPLockRequest {
2072
+ refId: string;
2073
+ refType: string;
2074
+ type: AXPLockType;
2075
+ date: string;
2076
+ expireAt?: Date;
2077
+ lockedBy: AXPEntityReference;
2078
+ }
2079
+ interface AXPUnLockRequest {
2080
+ refId: string;
2081
+ refType: string;
2082
+ type: AXPLockType;
2083
+ }
2084
+ interface AXPLockGetInfoRequest {
2085
+ refId: string;
2086
+ refType: string;
2087
+ type?: AXPLockType;
2088
+ }
2089
+ type AXPLockType = 'admin' | 'user';
2090
+ interface AXPLockInfo {
2091
+ id: string;
2092
+ refId: string;
2093
+ refType: string;
2094
+ type: AXPLockType;
2095
+ date: string;
2096
+ expireAt?: Date;
2097
+ lockedBy: AXPApplicationUserReference;
2098
+ }
2099
+
2100
+ declare abstract class AXPLockService {
2101
+ abstract lock(request: AXPLockRequest): Promise<AXPLockInfo>;
2102
+ abstract unlock(request: AXPUnLockRequest): Promise<void>;
2103
+ abstract check(request: AXPLockGetInfoRequest): Promise<boolean>;
2104
+ abstract getInfo(request: AXPLockGetInfoRequest): Promise<AXPLockInfo>;
2105
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPLockService, never>;
2106
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPLockService>;
2107
+ }
2108
+
2109
+ /**
2110
+ * Synchronous access to default multi-language behavior for named entity fields and widget
2111
+ * property bindings. Mirrors {@link AXPLayoutOrderingConfigService}: avoids async in entity
2112
+ * modifiers and startup deadlocks.
2113
+ */
2114
+ declare class AXPDefaultMultiLanguageConfigService {
2115
+ private readonly settingsService;
2116
+ private readonly _applyDefault;
2117
+ private syncScheduled;
2118
+ constructor();
2119
+ getApplyDefaultMultiLanguage(): boolean;
2120
+ private syncFromSettings;
2121
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDefaultMultiLanguageConfigService, never>;
2122
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPDefaultMultiLanguageConfigService>;
2123
+ }
2124
+
2125
+ /**
2126
+ * Shared multi-language defaults for entity properties and widget property bindings.
2127
+ *
2128
+ * **Circular dependencies:** use only `import type` for `AXPWidgetProperty` and
2129
+ * `AXPEntityProperty` so this module has no runtime imports from widget-core or application
2130
+ * types — `@acorex-platform/framework-client/layout/widget-core` does not import `@acorex-platform/framework-client/common`.
2131
+ */
2132
+
2133
+ /**
2134
+ * Widget types that support the multiLanguage option (text / rich text editors).
2135
+ */
2136
+ declare const MULTILANGUAGE_CAPABLE_WIDGET_TYPES: Set<string>;
2137
+ /**
2138
+ * Common property names / binding path segments that are usually translatable when the feature is
2139
+ * enabled in settings. Explicit `multiLanguage` on the property still wins.
2140
+ */
2141
+ declare const DEFAULT_MULTILANGUAGE_FIELD_NAMES: Set<string>;
2142
+ declare function shouldApplyDefaultMultiLanguageToEntityProperty(prop: AXPEntityProperty): boolean;
2143
+ declare function shouldApplyDefaultMultiLanguageToWidgetProperty(prop: AXPWidgetProperty): boolean;
2144
+ /**
2145
+ * Leaf widget nodes in entity `schema.interface` trees (e.g. GridLayout → RichText under `pre` /
2146
+ * `post`) — same path/type rules as {@link shouldApplyDefaultMultiLanguageToWidgetProperty}, without
2147
+ * `schema.dataType` (nodes do not carry entity schema).
2148
+ */
2149
+ declare function shouldApplyDefaultMultiLanguageToWidgetNode(node: AXPWidgetNode): boolean;
2150
+ /**
2151
+ * When {@link AXPDefaultMultiLanguageConfigService#getApplyDefaultMultiLanguage} is true, sets
2152
+ * `options.multiLanguage` on eligible editor leaves inside an entity property's widget tree
2153
+ * (including nested layouts). Used by entity middleware so object fields (e.g. `pre`, `post`) are
2154
+ * covered, not only top-level string properties.
2155
+ */
2156
+ declare function withDefaultMultiLanguageOnWidgetNodeTree(root: AXPWidgetNode | undefined | null, applyDefault: boolean): AXPWidgetNode | undefined | null;
2157
+ /**
2158
+ * When {@link AXPDefaultMultiLanguageConfigService#getApplyDefaultMultiLanguage} is true, sets
2159
+ * `schema.interface.options.multiLanguage` for eligible string widget properties (same rules as
2160
+ * entity middleware), unless the property already specifies `multiLanguage`.
2161
+ */
2162
+ declare function withDefaultMultiLanguageOnWidgetProperty(prop: AXPWidgetProperty, applyDefault: boolean): AXPWidgetProperty;
2163
+
2164
+ declare class AXPSettingDefinitionProviderContext {
2165
+ private rootGroups;
2166
+ private groupMap;
2167
+ addGroup(name: string, title: string, description?: string, icon?: string, pageTitle?: string, priority?: number): AXPSettingDefinitionGroupBuilder;
2168
+ group(name: string): AXPSettingDefinitionGroupBuilder | null;
2169
+ getGroups(): AXPSettingDefinitionGroup[];
2170
+ hasGroup(name: string): boolean;
2171
+ getGroup(name: string): AXPSettingDefinitionGroup | undefined;
2172
+ }
2173
+ declare class AXPSettingDefinitionGroupBuilder {
2174
+ private context;
2175
+ private group;
2176
+ constructor(context: AXPSettingDefinitionProviderContext, group: AXPSettingDefinitionGroup);
2177
+ addSection(name: string, title: string, description?: string): AXPSettingDefinitionSectionBuilder;
2178
+ section(name: string): AXPSettingDefinitionSectionBuilder | null;
2179
+ addGroup(name: string, title: string, description?: string, icon?: string, pageTitle?: string, priority?: number): AXPSettingDefinitionGroupBuilder;
2180
+ endGroup(): AXPSettingDefinitionProviderContext;
2181
+ }
2182
+ declare class AXPSettingDefinitionSectionBuilder {
2183
+ private groupBuilder;
2184
+ private section;
2185
+ constructor(groupBuilder: AXPSettingDefinitionGroupBuilder, section: AXPSettingDefinitionSection);
2186
+ addSetting(setting: {
2187
+ key: string;
2188
+ title: string;
2189
+ scope: AXPPlatformScopeKey;
2190
+ widget: {
2191
+ type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap] | string;
2192
+ options?: AXPOptionsData;
2193
+ triggers?: AXPWidgetTriggers;
2194
+ layout?: AXPSettingLayoutOptions;
2195
+ };
2196
+ description?: string;
2197
+ searchTagKeys?: string[];
2198
+ isRequired?: boolean;
2199
+ isInherited?: boolean;
2200
+ isEncrypted?: boolean;
2201
+ requiresPageRefresh?: boolean;
2202
+ defaultValue?: unknown;
2203
+ valueTransforms?: AXPValueTransformerFunctions;
2204
+ validationRules?: AXPValidationRules;
2205
+ }): this;
2206
+ endSection(): AXPSettingDefinitionGroupBuilder;
2207
+ }
2208
+
2209
+ interface AXPSettingDefinitionProvider {
2210
+ provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
2211
+ }
2212
+ declare const AXP_SETTING_DEFINITION_PROVIDER: InjectionToken<AXPSettingDefinitionProvider[]>;
2213
+ declare class AXPSettingDefinitionProviderService {
2214
+ private providers;
2215
+ private cache;
2216
+ private load;
2217
+ reload(): Promise<void>;
2218
+ getListAsync(scope: AXPPlatformScopeKey): Promise<AXPSettingDefinitionGroup[]>;
2219
+ getList(scope: AXPPlatformScopeKey): AXPSettingDefinitionGroup[];
2220
+ defaultValues(): Promise<Record<string, unknown>>;
2221
+ settingScopeByKey(): Promise<Record<string, AXPPlatformScope>>;
2222
+ settingInheritedByKey(): Promise<Record<string, boolean>>;
2223
+ requiresPageRefreshByKey(): Promise<Record<string, boolean>>;
2224
+ findGroup(scope: AXPPlatformScopeKey, groupName: string): AXPGroupSearchResult;
2225
+ private searchRecursive;
2226
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingDefinitionProviderService, never>;
2227
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingDefinitionProviderService>;
2228
+ }
2229
+ declare const AXP_SETTING_DEFAULT_VALUES_PROVIDERS: InjectionToken<AXPSettingDefaultValuesProvider[]>;
2230
+ interface AXPSettingMergedDefaults {
2231
+ defaults: Record<string, unknown>;
2232
+ /** Per-key scope override for seeding (from providers that set `scope`). */
2233
+ seedScopeByKey: Record<string, AXPPlatformScope>;
2234
+ }
2235
+ declare class AXPSettingDefaultValuesAggregatorService {
2236
+ private readonly definitionService;
2237
+ private readonly providers;
2238
+ getMerged(): Promise<AXPSettingMergedDefaults>;
2239
+ getDefaults(): Promise<Record<string, unknown>>;
2240
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingDefaultValuesAggregatorService, never>;
2241
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingDefaultValuesAggregatorService>;
2242
+ }
2243
+
2244
+ declare function createIndexedDbSettingValueProviders(injector: Injector): AXPSettingValueProvider[];
2245
+ declare const AXP_SETTING_VALUE_PROVIDER: InjectionToken<AXPSettingValueProvider[]>;
2246
+ declare function createDefaultSettingValueProviders(injector: Injector): AXPSettingValueProvider[];
2247
+
2248
+ /**
2249
+ * Supported primitive coercions for persisted setting values (including `{ value: ... }` wrappers).
2250
+ */
2251
+ type AXPSettingCoercionKind = 'string' | 'boolean' | 'number' | 'date';
2252
+ /**
2253
+ * If the payload uses the common `{ value: T }` shape from setting widgets, returns the inner value; otherwise returns `raw`.
2254
+ */
2255
+ declare function peelSettingValueKey(raw: unknown): unknown;
2256
+ /**
2257
+ * Picks a primitive coercion kind from the setting definition default and/or the effective stored value.
2258
+ * Type argument `T` on the settings service `get` method is compile-time only; runtime behavior follows this inference.
2259
+ */
2260
+ declare function inferSettingCoercionKind(defaultSample: unknown, effective: unknown): AXPSettingCoercionKind | null;
2261
+ declare function coerceAXPSettingRawValueByKind(raw: unknown, kind: AXPSettingCoercionKind): string | boolean | number | Date;
2262
+ declare function coerceAXPSettingRawValue(raw: unknown, kind: 'string'): string;
2263
+ declare function coerceAXPSettingRawValue(raw: unknown, kind: 'boolean'): boolean;
2264
+ declare function coerceAXPSettingRawValue(raw: unknown, kind: 'number'): number;
2265
+ declare function coerceAXPSettingRawValue(raw: unknown, kind: 'date'): Date;
2266
+
2267
+ /**
2268
+ * Exposes platform settings in expression strings, e.g.
2269
+ * `{{ settings.get('Common:Setting:Entity.ShowPageBadge') }}`.
2270
+ */
2271
+ declare class AXPSettingsEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
2272
+ private readonly settingsService;
2273
+ provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
2274
+ }
2275
+
2276
+ /** How long a local snapshot is considered fresh before background revalidation. */
2277
+ declare const AXP_SETTINGS_SYNC_TTL_MS: Record<AXPPlatformScope, number>;
2278
+ /** Trailing debounce before bulk PATCH for incremental UI saves (theme resize, etc.). */
2279
+ declare const AXP_SETTINGS_SYNC_DEBOUNCE_MS: number;
2280
+ /** Silent retry backoff steps (ms); last value repeats. */
2281
+ declare const AXP_SETTINGS_SYNC_RETRY_BACKOFF_MS: readonly [2000, 5000, 15000, 60000];
2282
+
2283
+ type AXPSettingsSyncStatus = 'idle' | 'syncing' | 'pending_retry';
2284
+ interface AXPScopedSettingsSnapshot {
2285
+ id: string;
2286
+ scope: AXPPlatformScope;
2287
+ values: Record<string, unknown>;
2288
+ serverUpdatedAt: string | null;
2289
+ lastRevalidatedAt: string | null;
2290
+ dirty: Record<string, unknown>;
2291
+ syncStatus: AXPSettingsSyncStatus;
2292
+ nextRetryAt: string | null;
2293
+ retryAttempt: number;
2294
+ }
2295
+ interface AXPSettingsScopedFetchInput {
2296
+ scope: AXPPlatformScope;
2297
+ since: string | null;
2298
+ }
2299
+ interface AXPSettingsScopedPatchInput {
2300
+ scope: AXPPlatformScope;
2301
+ values: Record<string, unknown>;
2302
+ }
2303
+ interface AXPSettingsBulkFetchResult {
2304
+ changed: boolean;
2305
+ updatedAt: string | null;
2306
+ values: Record<string, unknown>;
2307
+ }
2308
+ interface AXPSettingsBulkPatchResult {
2309
+ updatedAt: string;
2310
+ }
2311
+
2312
+ /** Debug namespace for all settings diagnostics. Filter console with `[AXP:Settings]`. */
2313
+ declare const SETTINGS_TRACE_NS = "Settings";
2314
+ declare const SETTINGS_TRACE_TITLE: {
2315
+ /** AXPSettingsService in-memory cache (load, reload, ensureLoaded). */
2316
+ readonly Cache: "Cache";
2317
+ /** IndexedDB scoped snapshot provider (hydrate, debounce, flush). */
2318
+ readonly LocalSnapshot: "LocalSnapshot";
2319
+ /** Query/command bulk sync — counts as a server request. */
2320
+ readonly ServerSync: "ServerSync";
2321
+ /** AXPAppStartUpService settings task on app boot. */
2322
+ readonly Startup: "Startup";
2323
+ /** Settings page route + view model. */
2324
+ readonly Page: "Page";
2325
+ /** Dev-only client storage tools (export / import / reset). */
2326
+ readonly ClientTools: "ClientTools";
2327
+ };
2328
+
2329
+ /** Query/command keys for scoped settings bulk sync; provided by settings-management connectivity wiring. */
2330
+ interface AXPSettingsSyncKeys {
2331
+ scopedFetchQueryKey: string;
2332
+ scopedPatchCommandKey: string;
2333
+ }
2334
+ declare const AXP_SETTINGS_SYNC_KEYS: InjectionToken<AXPSettingsSyncKeys>;
2335
+
2336
+ declare class AXPSettingsBulkSyncService {
2337
+ private readonly queryService;
2338
+ private readonly commandService;
2339
+ private readonly syncKeys;
2340
+ fetch(scope: AXPPlatformScope, since: string | null): Promise<AXPSettingsBulkFetchResult>;
2341
+ patch(scope: AXPPlatformScope, values: Record<string, unknown>): Promise<AXPSettingsBulkPatchResult>;
2342
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSettingsBulkSyncService, never>;
2343
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSettingsBulkSyncService>;
2344
+ }
2345
+
2346
+ /** Emitted immediately after values are written to the scoped IndexedDB snapshot. */
2347
+ declare function traceSettingsLocalPersist(scope: AXPPlatformScope, payload: {
2348
+ snapshotId: string;
2349
+ keys: string[];
2350
+ dirtyKeyCount: number;
2351
+ flush: boolean;
2352
+ }): void;
2353
+ /** Emitted once per bulk query/command call. Count these for server request frequency. */
2354
+ declare function traceSettingsServerApiCall(method: 'GET' | 'PATCH', scope: AXPPlatformScope, payload: Record<string, unknown>): void;
2355
+ declare function traceSettingsFlush(scope: AXPPlatformScope, payload: {
2356
+ snapshotId: string;
2357
+ keys: string[];
2358
+ }): void;
2359
+ declare function traceSettingsSyncFailed(scope: AXPPlatformScope, payload: {
2360
+ snapshotId: string;
2361
+ keys: string[];
2362
+ attempt: number;
2363
+ }): void;
2364
+ declare function traceSettingsRetryScheduled(scope: AXPPlatformScope, payload: {
2365
+ snapshotId: string;
2366
+ attempt: number;
2367
+ backoffMs: number;
2368
+ nextRetryAt: string;
2369
+ }): void;
2370
+ declare function traceSettingsRevalidateFailed(scope: AXPPlatformScope, payload: {
2371
+ snapshotId: string;
2372
+ since: string | null;
2373
+ }): void;
2374
+ declare function traceSettingsAppStartupLoadStarted(): void;
2375
+ declare function traceSettingsAppStartupLoadComplete(payload: {
2376
+ totalKeys: number;
2377
+ keysByScope: Record<string, number>;
2378
+ durationMs: number;
2379
+ }): void;
2380
+ declare function traceSettingsServiceLoadStarted(reason: string): void;
2381
+ declare function traceSettingsServiceLoadComplete(payload: {
2382
+ totalKeys: number;
2383
+ keysByScope: Record<string, number>;
2384
+ durationMs: number;
2385
+ }): void;
2386
+ declare function traceSettingsServiceReload(scope: AXPPlatformScope | 'all', reason: string): void;
2387
+ declare function traceSettingsServiceLoadFailed(error: unknown): void;
2388
+ declare function traceSettingsPageLoadStarted(scope: string, reason: string): void;
2389
+ declare function traceSettingsPageLoadComplete(payload: {
2390
+ scope: string;
2391
+ groupCount: number;
2392
+ valueKeyCount: number;
2393
+ durationMs: number;
2394
+ }): void;
2395
+ declare function traceSettingsPageRouteLoad(scope: string, reason: string): void;
2396
+ declare function traceSettingsClientTool(command: 'export' | 'import' | 'reset', message: string, payload?: Record<string, unknown>): void;
2397
+
2398
+ declare class AXPSettingsIndexedDb extends Dexie {
2399
+ scoped_snapshots: Table<AXPScopedSettingsSnapshot, string>;
2400
+ constructor();
2401
+ }
2402
+ declare const axpSettingsIndexedDb: AXPSettingsIndexedDb;
2403
+ declare function buildScopedSettingsSnapshotId(scope: AXPPlatformScope, contextKey: string): string;
2404
+ declare function createEmptyScopedSettingsSnapshot(id: string, scope: AXPPlatformScope): AXPScopedSettingsSnapshot;
2405
+
2406
+ declare class AXPIndexedDbSettingValueProvider implements AXPSettingValueProvider {
2407
+ private readonly _scope;
2408
+ private readonly injector;
2409
+ private readonly sessionService;
2410
+ private readonly bulkSync;
2411
+ private contextKey;
2412
+ private snapshotId;
2413
+ private snapshot;
2414
+ private hydrated;
2415
+ private hydratePromise;
2416
+ private debounceTimer;
2417
+ private retryTimer;
2418
+ private flushInFlight;
2419
+ private revalidateInFlight;
2420
+ constructor(_scope: AXPPlatformScope, injector: Injector);
2421
+ private bindSessionContextChanges;
2422
+ get scope(): AXPPlatformScope;
2423
+ load(): Promise<AXPSettingValue[]>;
2424
+ set(key: string, value: unknown, options?: AXPSettingSetOptions): Promise<void>;
2425
+ set(values: Record<string, unknown>, options?: AXPSettingSetOptions): Promise<void>;
2426
+ reload(): Promise<void>;
2427
+ revalidateIfNeeded(): Promise<void>;
2428
+ private hydrateFromIndexedDb;
2429
+ private resetHydration;
2430
+ private resolveContextKey;
2431
+ private unbindSessionContext;
2432
+ /**
2433
+ * Binds snapshot id from restored session data. Only resets hydration when the scoped context changes
2434
+ * (e.g. user switch), not when auth status re-emits for the same tenant/user.
2435
+ */
2436
+ private tryBindSessionContext;
2437
+ private applyLocalPatch;
2438
+ private persistSnapshot;
2439
+ private persistSnapshotRecord;
2440
+ private toSettingValues;
2441
+ private shouldRevalidate;
2442
+ private revalidateNow;
2443
+ private resolveFetchSince;
2444
+ private doRevalidate;
2445
+ private scheduleDebouncedFlush;
2446
+ flushNow(): Promise<void>;
2447
+ private doFlush;
2448
+ private scheduleSilentRetry;
2449
+ private scheduleRetryIfDue;
2450
+ }
2451
+
2452
+ interface AXPSettingsCacheSync {
2453
+ syncScopeCache(scope: AXPPlatformScope, values: Record<string, unknown>): void;
2454
+ }
2455
+ declare const AXP_SETTINGS_CACHE_SYNC: InjectionToken<AXPSettingsCacheSync>;
2456
+
2457
+ /**
2458
+ * Platform-provided {@link AXCalendarService} that applies locale profile week layout
2459
+ * (first day of week, weekends) through the core calendar service lifecycle.
2460
+ *
2461
+ * Temporary bridge until @acorex/components reads week layout from AXLocaleService.
2462
+ */
2463
+ declare class AXPRegionalCalendarService extends AXCalendarService {
2464
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPRegionalCalendarService, never>;
2465
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPRegionalCalendarService>;
2466
+ }
2467
+
2468
+ interface AXPUnsavedChangesConfirmOptions {
2469
+ /** When false, skips confirm even if the global setting is enabled (e.g. dialog `confirmCloseWhenDirty`). */
2470
+ enabled?: boolean;
2471
+ title?: AXPMultiLanguageString;
2472
+ message?: AXPMultiLanguageString;
2473
+ /**
2474
+ * When true (default), confirming sets leave approval for the next route deactivation.
2475
+ * Set false for in-place actions such as discarding edits without navigating away.
2476
+ */
2477
+ approveLeaveOnConfirm?: boolean;
2478
+ }
2479
+ interface AXPUnsavedChangesCanDeactivate {
2480
+ canDeactivate(): boolean | Promise<boolean>;
2481
+ }
2482
+ declare class AXPUnsavedChangesConfirmService {
2483
+ private readonly settingsService;
2484
+ private readonly dialogService;
2485
+ private readonly translateService;
2486
+ /** Ensures concurrent leave paths share a single unsaved-changes confirm dialog. */
2487
+ private confirmPromise?;
2488
+ /** Set after the user confirms leaving; cleared on {@link NavigationEnd} by popstate handler. */
2489
+ private leaveConfirmed;
2490
+ /**
2491
+ * Whether the global "confirm unsaved changes" setting is enabled.
2492
+ */
2493
+ isGloballyEnabled(): Promise<boolean>;
2494
+ /**
2495
+ * Marks the next route deactivation as already approved (avoids a second prompt after in-app navigation).
2496
+ */
2497
+ markLeaveConfirmed(): void;
2498
+ /** True while an unsaved-changes confirm dialog is open or being resolved. */
2499
+ isConfirmPending(): boolean;
2500
+ /** Whether the user already approved leaving during the current navigation. */
2501
+ hasLeaveConfirmed(): boolean;
2502
+ /** Clears leave approval after navigation settles. */
2503
+ clearLeaveConfirmed(): void;
2504
+ consumeLeaveConfirmed(): boolean;
2505
+ /**
2506
+ * Prompts when `isDirty` and the global setting (and optional per-instance `enabled`) allow it.
2507
+ * Returns true when navigation/dismiss may proceed.
2508
+ */
2509
+ confirmIfDirty(isDirty: boolean, options?: AXPUnsavedChangesConfirmOptions): Promise<boolean>;
2510
+ private resolveConfirmIfDirty;
2511
+ private prompt;
2512
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPUnsavedChangesConfirmService, never>;
2513
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPUnsavedChangesConfirmService>;
2514
+ }
2515
+
2516
+ interface AXPUnsavedChangesPopstateSource {
2517
+ id: string;
2518
+ isDirty: () => boolean;
2519
+ }
2520
+ /**
2521
+ * Intercepts browser back/forward (`popstate`) when a registered page is dirty.
2522
+ * Captures dirty state synchronously on {@link NavigationStart}, restores the current URL
2523
+ * before route activation, prompts once, then re-triggers `history.back()` only if confirmed.
2524
+ */
2525
+ declare class AXPUnsavedChangesPopstateService {
2526
+ private readonly router;
2527
+ private readonly location;
2528
+ private readonly confirm;
2529
+ private readonly destroyRef;
2530
+ private sources;
2531
+ private committedUrl;
2532
+ private handling;
2533
+ constructor();
2534
+ registerSource(source: AXPUnsavedChangesPopstateSource): void;
2535
+ unregisterSource(id: string): void;
2536
+ /** True while a popstate back/forward is being intercepted or confirmed. */
2537
+ isHandlingPopstate(): boolean;
2538
+ private handlePopstateNavigation;
2539
+ private isDirty;
2540
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPUnsavedChangesPopstateService, never>;
2541
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPUnsavedChangesPopstateService>;
2542
+ }
2543
+
2544
+ declare function createUnsavedChangesCanDeactivateGuard<T extends AXPUnsavedChangesCanDeactivate>(): CanDeactivateFn<T>;
2545
+
2546
+ /**
2547
+ * Injection token for status providers
2548
+ * Use with multi: true to register multiple providers
2549
+ */
2550
+ declare const AXP_STATUS_PROVIDERS: InjectionToken<AXPStatusProvider[]>;
2551
+ /**
2552
+ * Service for managing status definitions from multiple providers
2553
+ * Similar to AXPTaskBadgeService pattern - no cache, direct access
2554
+ *
2555
+ * @example
2556
+ * ```typescript
2557
+ * // In a module providers array:
2558
+ * {
2559
+ * provide: AXP_STATUS_PROVIDERS,
2560
+ * useClass: TaskStatusProvider,
2561
+ * multi: true,
2562
+ * }
2563
+ *
2564
+ * // Example provider implementation:
2565
+ * export class TaskStatusProvider extends AXPStatusProvider {
2566
+ * readonly key = 'task-management.status';
2567
+ * readonly statuses = [
2568
+ * { name: 'todo', title: 'To Do', color: '#6b7280', icon: 'fa-light fa-circle', isInitial: true },
2569
+ * { name: 'in-progress', title: 'In Progress', color: '#3b82f6', icon: 'fa-light fa-play' },
2570
+ * { name: 'done', title: 'Done', color: '#10b981', icon: 'fa-light fa-check-circle', isFinal: true },
2571
+ * ];
2572
+ * readonly transitions = [
2573
+ * { from: 'todo', to: 'in-progress', title: 'Start', condition: '{{user.canEdit}}' },
2574
+ * { from: 'in-progress', to: 'done', title: 'Complete' },
2575
+ * ];
2576
+ * readonly defaultStatus = 'todo';
2577
+ * }
2578
+ *
2579
+ * // Later, get the status:
2580
+ * const status = await statusService.getStatus('task-management.status');
2581
+ * if (status) {
2582
+ * console.log('Statuses:', status.statuses);
2583
+ * console.log('Transitions:', status.transitions);
2584
+ * }
2585
+ * ```
2586
+ */
2587
+ declare class AXPStatusDefinitionProviderService {
2588
+ private providers;
2589
+ private commandService;
2590
+ private statusMap;
2591
+ private initializationPromise;
2592
+ private isInitialized;
2593
+ /**
2594
+ * Initialize providers (resolve promises if needed)
2595
+ * Called lazily on first access
2596
+ */
2597
+ private initialize;
2598
+ private _doInitialize;
2599
+ /**
2600
+ * Get a status provider by key
2601
+ * Ensures initialization is complete before accessing the status map.
2602
+ *
2603
+ * @param key - Status key (e.g., 'task-management.status')
2604
+ * @returns Promise that resolves to status provider with all statuses and transitions, or undefined if not found
2605
+ *
2606
+ * @example
2607
+ * ```typescript
2608
+ * const status = await statusService.getStatus('task-management.status');
2609
+ * if (status) {
2610
+ * console.log('Statuses:', status.statuses);
2611
+ * console.log('Transitions:', status.transitions);
2612
+ * }
2613
+ * ```
2614
+ */
2615
+ getStatus(key: string): Promise<AXPStatusProvider | undefined>;
2616
+ /**
2617
+ * Execute a status transition workflow action
2618
+ * Uses transition.command if provided, otherwise defaults to Entity:UpdateStatus
2619
+ * Validates the transition is allowed before executing
2620
+ *
2621
+ * @param definitionKey - Status definition key
2622
+ * @param transition - The transition to execute
2623
+ * @param context - Context data for the command (must include entity name and id/ids)
2624
+ * @returns Promise that resolves when the command execution completes
2625
+ *
2626
+ * @example
2627
+ * ```typescript
2628
+ * await statusService.executeTransition(
2629
+ * 'task-management.status',
2630
+ * { from: 'todo', to: 'in-progress' },
2631
+ * { entity: 'TaskManagement.Task', id: '123', ...entityData }
2632
+ * );
2633
+ * ```
2634
+ */
2635
+ executeTransition(definitionKey: string, transition: AXPStatusTransition, context: Record<string, any>): Promise<void>;
2636
+ /**
2637
+ * Validate if a transition is allowed
2638
+ * Checks if the transition exists in the provider's transitions list
2639
+ */
2640
+ private isValidTransition;
2641
+ /**
2642
+ * Best-effort plain string for {@link Error} messages (no i18n lookup).
2643
+ */
2644
+ private commandMessageTextForError;
2645
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPStatusDefinitionProviderService, never>;
2646
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPStatusDefinitionProviderService>;
2647
+ }
2648
+
2649
+ /**
2650
+ * Builds a stable tab key from a router URL.
2651
+ * Path segments define identity; query params are excluded so the same entity record
2652
+ * or list reuses one tab even when filters or refresh tokens change.
2653
+ */
2654
+ declare function axpBuildTabKey(url: string): string;
2655
+ /** Normalizes a router URL for storage and navigation. */
2656
+ declare function normalizeRouterUrl(url: string): string;
2657
+ /** Human-readable fallback title from the URL path. */
2658
+ declare function axpFallbackTabTitle(url: string): string;
2659
+
2660
+ type AXPNavigationMode = 'simple' | 'tabular';
2661
+ declare const AXP_HOME_TAB_KEY = "axp:home";
2662
+ /** Route `data` key for tab-navigation behavior (`data.tab`). */
2663
+ declare const AXP_TAB_ROUTE_DATA_KEY = "tab";
2664
+ /**
2665
+ * Set `data.tab = true` on the route that should act as the tab boundary.
2666
+ * Child navigations under this route update the same tab rather than opening a new one.
2667
+ */
2668
+ type AXPTabRouteData = true;
2669
+ interface AXPTabDescriptor {
2670
+ /** Stable dedupe key derived from the route (path-based, query excluded). */
2671
+ key: string;
2672
+ /** Full router URL including query string and fragment. */
2673
+ url: string;
2674
+ title: string;
2675
+ /** Resolved breadcrumb segments used for tab chrome (leaf/prefix); avoids parsing joined titles. */
2676
+ titleSegments?: string[];
2677
+ icon?: string;
2678
+ pinned: boolean;
2679
+ closable: boolean;
2680
+ /** Timestamp used for LRU eviction when max tabs is reached. */
2681
+ openedAt: number;
2682
+ /** Updated whenever the tab becomes active. */
2683
+ lastActivatedAt: number;
2684
+ }
2685
+ interface AXPTabSessionState {
2686
+ tabs: AXPTabDescriptor[];
2687
+ activeTabKey: string | null;
2688
+ }
2689
+ /** Optional hook for confirming closure of a cached background tab (no router navigation). */
2690
+ interface AXPTabCloseConfirm {
2691
+ onBeforeTabClose(): boolean | Promise<boolean>;
2692
+ }
2693
+
2694
+ declare class AXPTabNavigationService {
2695
+ private readonly router;
2696
+ private readonly settingsService;
2697
+ private readonly deviceService;
2698
+ private readonly menuService;
2699
+ private readonly homePageService;
2700
+ private readonly sessionService;
2701
+ private readonly routeCacheRegistry;
2702
+ private readonly tabPreviewService;
2703
+ private readonly unsavedChangesConfirm;
2704
+ private readonly destroyRef;
2705
+ private readonly navigationMode;
2706
+ private readonly maxOpenTabs;
2707
+ private readonly tabs;
2708
+ private readonly activeTabKey;
2709
+ private suppressNavigationSync;
2710
+ /** Effective mode: mobile always uses simple navigation. */
2711
+ readonly effectiveMode: i0.Signal<AXPNavigationMode>;
2712
+ readonly isTabBarVisible: i0.Signal<boolean>;
2713
+ readonly tabList: i0.Signal<AXPTabDescriptor[]>;
2714
+ readonly activeKey: i0.Signal<string | null>;
2715
+ constructor();
2716
+ /** Navigates to a path, opening or activating a tab when tabular mode is active. */
2717
+ navigate(path: string, extras?: NavigationExtras): Promise<boolean>;
2718
+ /** Opens a tab or activates an existing tab with the same key. */
2719
+ openOrActivateTab(url: string, title?: string): Promise<void>;
2720
+ /**
2721
+ * Activates a tab and navigates to its URL. The previously active page is detached and cached by
2722
+ * the reuse strategy, so its state is preserved; this tab's cached instance is reattached when
2723
+ * available instead of being re-rendered.
2724
+ *
2725
+ * @param suspendDeactivateGuard When true (default for tab switches), unsaved-changes prompts are
2726
+ * skipped so switching tabs keeps a dirty page alive. Closing a tab passes false to keep the prompt.
2727
+ */
2728
+ activateTabKey(key: string, urlOverride?: string, suspendDeactivateGuard?: boolean): Promise<void>;
2729
+ /** Closes a tab and navigates to a neighbor when the active tab is closed. */
2730
+ closeTab(key: string): Promise<void>;
2731
+ /** Closes every closable tab except the given key (pinned tabs are kept). */
2732
+ closeOtherTabs(keepKey: string): Promise<void>;
2733
+ /** Closes all closable tabs (pinned tabs are kept). */
2734
+ closeAllTabs(): Promise<void>;
2735
+ /** Toggles whether a tab stays pinned in the strip (home tab is always pinned). */
2736
+ toggleTabPinned(key: string): void;
2737
+ /**
2738
+ * Reorders tabs after drag-and-drop. Home stays first; pinned and unpinned tabs cannot cross groups.
2739
+ */
2740
+ reorderTabs(previousIndex: number, currentIndex: number): void;
2741
+ /** Updates a tab title from the current page chrome (e.g. breadcrumb trail). */
2742
+ syncTabTitle(key: string, titleOrSegments: string | string[]): void;
2743
+ /** Updates a tab icon from the current page chrome or menu metadata. */
2744
+ syncTabIcon(key: string, icon: string): void;
2745
+ /** Closes multiple tabs in one update; navigates once when the active tab is closed. */
2746
+ private closeTabs;
2747
+ /**
2748
+ * Prompts before closing a cached background tab. Uses the page's {@link AXPTabCloseConfirm}
2749
+ * hook when available, otherwise falls back to the tab preview dirty flag.
2750
+ */
2751
+ private confirmBackgroundTabClose;
2752
+ /**
2753
+ * Navigates away from the active tab before it is removed so canDeactivate runs while the tab is still visible.
2754
+ * Returns false when navigation was cancelled (e.g. unsaved-changes confirmation declined).
2755
+ */
2756
+ private navigateAwayBeforeClosingActiveTab;
2757
+ /** Prefers the tab to the right after removal, then the tab to the left (browser-like). */
2758
+ private resolveFallbackTabIndex;
2759
+ /**
2760
+ * Keeps the route cache registry aligned with the current navigation mode and the set of open
2761
+ * tabs. Cached page instances for closed/evicted tabs are destroyed by the registry.
2762
+ */
2763
+ private bindRouteCacheSync;
2764
+ private bindRouterEvents;
2765
+ private handleNavigationEnd;
2766
+ private loadSettings;
2767
+ private bindSettingsChanges;
2768
+ private bindSessionChanges;
2769
+ private ensureHomeTab;
2770
+ private insertTab;
2771
+ /** Home first; preserves session order for the remaining tabs. */
2772
+ private ensureHomeTabFirst;
2773
+ private getLastPinnedTabIndex;
2774
+ /** Home first, then other pinned tabs, then unpinned tabs (stable by openedAt within each group). */
2775
+ private normalizeTabOrder;
2776
+ private enforceMaxTabs;
2777
+ private createTabDescriptor;
2778
+ /** Finds a tab by scoped key or legacy full-path key for the same URL. */
2779
+ private findTabForUrl;
2780
+ /** True when the URL is the configured application home page (e.g. dashboard). */
2781
+ private isHomePageUrl;
2782
+ private resolveHomeUrl;
2783
+ /** Activates the pinned home tab for a home-page URL instead of opening a duplicate tab. */
2784
+ private activateHomeTabForUrl;
2785
+ /** Drops non-home tabs that duplicate the home page URL after session restore. */
2786
+ private removeDuplicateHomeUrlTabs;
2787
+ /** Rewrites a tab key when route-scope resolution changes (e.g. profile sub-routes). */
2788
+ private migrateTabKey;
2789
+ /** Collapses restored tabs that share the same scoped route key. */
2790
+ private normalizeRestoredTabKeys;
2791
+ private updateTabUrl;
2792
+ private updateTabTitle;
2793
+ private updateTabIcon;
2794
+ private touchTab;
2795
+ private resolveTabTitle;
2796
+ private resolveTabIcon;
2797
+ private resolveHomePath;
2798
+ private resolveHomeTitle;
2799
+ private isGenericHomeTitle;
2800
+ private syncCurrentRouteAsTab;
2801
+ private normalizeMaxTabs;
2802
+ private sessionStorageKey;
2803
+ private persistSession;
2804
+ private clearSession;
2805
+ private restoreSessionIfNeeded;
2806
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPTabNavigationService, never>;
2807
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPTabNavigationService>;
2808
+ }
2809
+
2810
+ /** Structured hover-card payload for a tab (kept in memory; not session-persisted). */
2811
+ interface AXPTabStructuredPreview {
2812
+ /** Primary label (usually page title or breadcrumb trail). */
2813
+ title: string;
2814
+ /** Optional page description or secondary line. */
2815
+ subtitle?: string;
2816
+ /** Full router URL for the tab. */
2817
+ url: string;
2818
+ icon?: string;
2819
+ /** Whether the cached page reports unsaved user edits. */
2820
+ isDirty: boolean;
2821
+ /** Breadcrumb segments excluding home (for the hover card). */
2822
+ breadcrumbTrail: string[];
2823
+ }
2824
+
2825
+ /**
2826
+ * In-memory structured previews for tab hover cards and dirty indicators.
2827
+ * Populated by active/cached pages via {@link AXPPageLayoutBaseComponent}.
2828
+ */
2829
+ declare class AXPTabPreviewService {
2830
+ private readonly previewMap;
2831
+ readonly previews: i0.Signal<Readonly<Record<string, AXPTabStructuredPreview>>>;
2832
+ setPreview(key: string, preview: AXPTabStructuredPreview): void;
2833
+ patchPreview(key: string, patch: Partial<AXPTabStructuredPreview>): void;
2834
+ getPreview(key: string): AXPTabStructuredPreview | undefined;
2835
+ isTabDirty(key: string): boolean;
2836
+ clearPreview(key: string): void;
2837
+ clearPreviews(keys: Iterable<string>): void;
2838
+ clearAll(): void;
2839
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPTabPreviewService, never>;
2840
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPTabPreviewService>;
2841
+ }
2842
+
2843
+ /**
2844
+ * Holds detached Angular route component instances keyed by tab key so tabular navigation can
2845
+ * preserve a page's full state (data-table selection, scroll, unsaved form values, etc.) while it
2846
+ * is in the background, then reattach it without re-rendering.
2847
+ *
2848
+ * The registry has no `Router` dependency on purpose: it is consumed by the {@link RouteReuseStrategy}
2849
+ * implementation, so depending on `Router` here would create a construction-time cycle.
2850
+ */
2851
+ declare class AXPTabRouteCacheRegistry {
2852
+ private readonly handles;
2853
+ private openKeys;
2854
+ private enabled;
2855
+ private deactivateGuardSuspended;
2856
+ /**
2857
+ * Runs `action` while unsaved-changes `canDeactivate` guards are suspended, so switching between
2858
+ * tabs preserves a dirty page without prompting. Closing a tab does not use this path, so the
2859
+ * prompt still appears there.
2860
+ */
2861
+ runWithSuspendedDeactivateGuards<T>(action: () => Promise<T>): Promise<T>;
2862
+ isDeactivateGuardSuspended(): boolean;
2863
+ /** Enables caching (tabular mode). Disabling clears and destroys every cached component. */
2864
+ setEnabled(enabled: boolean): void;
2865
+ isEnabled(): boolean;
2866
+ /**
2867
+ * Reconciles open scoped tab keys and active tab URLs. Cached handles whose key is not an open
2868
+ * scoped tab key, an active tab URL, or a child path under an open scoped tab are destroyed.
2869
+ */
2870
+ syncOpenKeys(scopedKeys: string[], activeTabUrls?: string[]): void;
2871
+ isOpen(key: string): boolean;
2872
+ /**
2873
+ * Returns the live component instance for a cached background tab, when available.
2874
+ * Matches the tab key directly or any cached handle under a scoped tab prefix.
2875
+ */
2876
+ getComponentInstance<T>(key: string): T | null;
2877
+ /**
2878
+ * Caches a detached background handle. Overwrites without destroying the previous handle: on a
2879
+ * repeat visit Angular hands back a new handle object wrapping the same live `componentRef`, so
2880
+ * destroying the old one would destroy the live component and corrupt the view (NG0922).
2881
+ */
2882
+ store(key: string, handle: DetachedRouteHandle): void;
2883
+ /**
2884
+ * Returns the cached handle without mutating the map. Angular reads a handle twice per
2885
+ * navigation (once while building the future state, once while attaching), so `retrieve` must be
2886
+ * idempotent; the handle is released afterwards via {@link release} when Angular calls
2887
+ * `store(snapshot, null)`.
2888
+ */
2889
+ retrieve(key: string): DetachedRouteHandle | null;
2890
+ /**
2891
+ * Drops a handle that the router has just reattached (it is now a live foreground view, so it
2892
+ * must not be destroyed). The map keeps only truly backgrounded handles.
2893
+ */
2894
+ release(key: string): void;
2895
+ has(key: string): boolean;
2896
+ /** Destroys and removes a single cached handle (used when a tab closes). */
2897
+ evict(key: string): void;
2898
+ /** Destroys and removes every cached handle. */
2899
+ clear(): void;
2900
+ private readComponentInstance;
2901
+ private destroyHandle;
2902
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPTabRouteCacheRegistry, never>;
2903
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPTabRouteCacheRegistry>;
2904
+ }
2905
+
2906
+ /**
2907
+ * Returns true when the URL represents an in-app page that may appear in the tab bar.
2908
+ */
2909
+ declare function axpIsTabEligibleUrl(url: string): boolean;
2910
+
2911
+ /** True when the route declares itself as a scoped tab root (`data.tab = true`). */
2912
+ declare function axpHasTabScope(data: Record<string, unknown> | undefined): boolean;
2913
+ /** Resolved URL path for a snapshot (no query or fragment). */
2914
+ declare function axpPathFromSnapshot(snapshot: ActivatedRouteSnapshot): string;
2915
+ /** Returns the leaf snapshot under the router state root. */
2916
+ declare function axpGetLeafRouteSnapshot(root: ActivatedRouteSnapshot): ActivatedRouteSnapshot;
2917
+ /**
2918
+ * Resolves the tab dedupe key from an activated route tree.
2919
+ * Uses the nearest ancestor with `data.tab = true`; otherwise the leaf path.
2920
+ */
2921
+ declare function axpResolveTabKeyFromSnapshot(leaf: ActivatedRouteSnapshot): string;
2922
+ /**
2923
+ * Resolves a tab key for the given URL (or the current router URL).
2924
+ * Prefers the live route snapshot when it matches the target URL; otherwise matches route config.
2925
+ */
2926
+ declare function axpResolveTabKey(router: Router, url?: string): string;
2927
+ /**
2928
+ * Matches a URL path against registered routes and resolves the tab key from `data.tab`.
2929
+ */
2930
+ declare function axpResolveTabKeyFromRouteConfig(routes: Routes, pathOnly: string): string | null;
2931
+
2932
+ declare const AXP_TAB_BREADCRUMB_JOIN_SEPARATOR = " - ";
2933
+ interface AXPTabTitleParts {
2934
+ prefix: string | null;
2935
+ leaf: string;
2936
+ }
2937
+ /** Joins breadcrumb segments for the stored tab title and tooltip full label. */
2938
+ declare function axpJoinTabTitleSegments(segments: string[]): string;
2939
+ /** Derives compact tab label parts from structured breadcrumb segments. */
2940
+ declare function axpResolveTabTitleParts(tab: {
2941
+ titleSegments?: string[];
2942
+ }, fallbackTitle: string): AXPTabTitleParts;
2943
+
2944
+ interface AXPTokenDefinition {
2945
+ name: string;
2946
+ execute: () => Promise<any> | any;
2947
+ }
2948
+
2949
+ type AXPTokenDefinitionProviderToken = AXPTokenDefinitionProvider | Promise<AXPTokenDefinitionProvider>;
2950
+ declare const AXP_TOKEN_DEFINITION_PROVIDER: InjectionToken<AXPTokenDefinitionProviderToken[]>;
2951
+ interface AXPTokenDefinitionProvider<T = any> {
2952
+ name: string;
2953
+ title: string;
2954
+ description?: string;
2955
+ execute(): Promise<T> | T;
2956
+ }
2957
+
2958
+ declare class AXPTokenDefinitionService {
2959
+ private readonly definitionProviders;
2960
+ /** Cache for definitions by name. */
2961
+ private definitionsByName;
2962
+ /**
2963
+ * Returns a token definition by its name.
2964
+ * First checks the cache, then queries all providers if not found.
2965
+ * @param name The token name.
2966
+ * @returns The token definition if found, undefined otherwise.
2967
+ */
2968
+ getDefinition(name: string): Promise<AXPTokenDefinition | undefined>;
2969
+ /**
2970
+ * Gets the resolved value of a token by its name.
2971
+ * @param name The token name.
2972
+ * @returns The resolved token value, or undefined if the token is not found.
2973
+ */
2974
+ getValue(name: string): Promise<any>;
2975
+ /** Clears the definitions by name cache. */
2976
+ clearDefinitionsCache(): void;
2977
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPTokenDefinitionService, never>;
2978
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPTokenDefinitionService>;
2979
+ }
2980
+
2981
+ declare class AXPTokenEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
2982
+ protected tokenService: AXPTokenDefinitionService;
2983
+ provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
2984
+ }
2985
+
2986
+ interface AXPAppPathParts {
2987
+ segments: string[];
2988
+ queryParams?: Record<string, string>;
2989
+ fragment?: string;
2990
+ }
2991
+ /**
2992
+ * Splits an absolute app path (`/app/m/module/e/Entity/id/view`) into router command segments.
2993
+ * Prefer this over `navigate([fullPath])` or ambiguous single-segment navigation so browser history stays correct.
2994
+ */
2995
+ declare function axpParseAppPath(path: string): AXPAppPathParts;
2996
+ /** Navigates using explicit path segments (same pattern as entity preload filters). */
2997
+ declare function axpNavigateAppPath(router: Router, path: string, extras?: NavigationExtras): Promise<boolean>;
2998
+ /** True when a URL path is an entity master list route (`.../e/{Entity}/list`). */
2999
+ declare function axpIsEntityListPath(url: string): boolean;
3000
+ /** True when the current browser URL is an entity master list route (`.../e/{Entity}/list`). */
3001
+ declare function axpIsEntityListRoute(router: Router): boolean;
3002
+ /** True when a URL path is an entity details view route (`.../e/{Entity}/{id}/view`). */
3003
+ declare function axpIsEntityDetailsPath(url: string): boolean;
3004
+ /** True when the current browser URL is an entity details view route (`.../e/{Entity}/{id}/view`). */
3005
+ declare function axpIsEntityDetailsViewRoute(router: Router): boolean;
3006
+ /**
3007
+ * Merges query params on the current entity list route without pushing history.
3008
+ * Uses absolute path segments so a stale `relativeTo` cannot rewrite the active URL after navigating away.
3009
+ */
3010
+ declare function axpReplaceEntityListRouteQueryParams(router: Router, queryParams: Record<string, string | null | undefined>): void;
3011
+
3012
+ declare class AXPClipBoardService {
3013
+ private readonly toast;
3014
+ private readonly translationService;
3015
+ copy(title: string, value: string): Promise<void>;
3016
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPClipBoardService, never>;
3017
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPClipBoardService>;
3018
+ }
3019
+
3020
+ type AXPGraphicDownloadFormat = 'svg' | 'png' | 'jpeg';
3021
+ interface AXPGraphicPrintContent {
3022
+ bodyMarkup: string;
3023
+ styleRule: string;
3024
+ }
3025
+ interface AXPPrintGraphicOptions {
3026
+ /** Used when the rendered element has no measurable size. */
3027
+ fallbackSize?: number;
3028
+ title?: string;
3029
+ imageAlt?: string;
3030
+ }
3031
+ interface AXPGraphicDownloadOptions {
3032
+ format: AXPGraphicDownloadFormat;
3033
+ filename: string;
3034
+ /** Used when rasterizing SVG or sizing canvas output. */
3035
+ fallbackSize?: number;
3036
+ }
3037
+ /**
3038
+ * Normalizes widget option values to a positive finite number
3039
+ * (plain number, numeric string, or editor object with `value` / `id`).
3040
+ */
3041
+ declare function normalizePositiveNumberOption(value: unknown, fallback: number): number;
3042
+ /**
3043
+ * Resolves the rendered graphic size from a container (canvas or SVG).
3044
+ */
3045
+ declare function resolveGraphicElementSize(container: HTMLElement, fallback: number): number;
3046
+ /**
3047
+ * Serializes an SVG element to a string, optionally prefixing the XML declaration.
3048
+ */
3049
+ declare function serializeSvgElement(svg: SVGSVGElement, includeXmlDeclaration?: boolean): string;
3050
+ /**
3051
+ * Builds printable HTML body markup and CSS for an SVG or canvas inside a container.
3052
+ */
3053
+ declare function resolveGraphicPrintContent(container: HTMLElement, size: number, imageAlt?: string): AXPGraphicPrintContent | undefined;
3054
+ /**
3055
+ * Triggers a file download for the given blob via a temporary anchor element.
3056
+ */
3057
+ declare function triggerBrowserDownload(blob: Blob, filename: string): void;
3058
+ /**
3059
+ * Opens the system print dialog for an SVG or canvas graphic inside the given container.
3060
+ */
3061
+ declare function printGraphicFromElement(container: HTMLElement, options?: AXPPrintGraphicOptions): void;
3062
+ /**
3063
+ * Downloads an SVG or canvas graphic from a container as SVG, PNG, or JPEG.
3064
+ */
3065
+ declare function downloadGraphicFromElement(container: HTMLElement, options: AXPGraphicDownloadOptions): void;
3066
+
3067
+ declare class AXPExportService {
3068
+ popupService: AXPopupService;
3069
+ generateBlobFromElement(element: HTMLElement, blobOptions?: AXPDomToImageOptions): Promise<Blob>;
3070
+ download(blob: Blob, filename: string): void;
3071
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPExportService, never>;
3072
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPExportService>;
3073
+ }
3074
+ interface AXPDomToImageOptions {
3075
+ popup?: true;
3076
+ filter?: (node: Node) => boolean;
3077
+ bgcolor?: string;
3078
+ width?: number;
3079
+ height?: number;
3080
+ style?: {};
3081
+ quality?: number;
3082
+ imagePlaceholder?: string;
3083
+ cacheBust?: boolean;
3084
+ scale?: number;
3085
+ }
3086
+
3087
+ declare function AXPCleanNestedFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];
3088
+
3089
+ interface AXPLocaleProfile extends AXLocaleProfile {
3090
+ code: string;
3091
+ title: string;
3092
+ nativeTitle: string;
3093
+ }
3094
+ interface AXPLanguage {
3095
+ code: string;
3096
+ title: string;
3097
+ }
3098
+ interface AXPGeoLocation {
3099
+ id: string;
3100
+ code: string;
3101
+ title: string;
3102
+ timezone?: string;
3103
+ }
3104
+ interface AXPTimeZone {
3105
+ code: string;
3106
+ title: string;
3107
+ offset: number;
3108
+ iana: string;
3109
+ abbr: string;
3110
+ }
3111
+ interface AXPCurrency {
3112
+ code: string;
3113
+ title: string;
3114
+ symbol: string;
3115
+ format: string;
3116
+ }
3117
+
3118
+ /**
3119
+ * Narrow API for reading app locale profiles and active languages.
3120
+ * Implemented by locale-management; consumed by platform layout without importing the module (avoids circular deps).
3121
+ */
3122
+ interface AXPLocaleManagementPort {
3123
+ getLocaleProfiles(): Promise<AXPLocaleProfile[]>;
3124
+ getLanguages(): Promise<AXPLanguage[]>;
3125
+ }
3126
+ declare const AXP_LOCALE_MANAGEMENT_PORT: InjectionToken<AXPLocaleManagementPort>;
3127
+
3128
+ interface AXPVersionStream {
3129
+ id: string;
3130
+ entityType: string;
3131
+ entityId: string;
3132
+ createdAt: string;
3133
+ }
3134
+ declare enum AXVChangeType {
3135
+ Create = "Create",
3136
+ Update = "Update",
3137
+ Delete = "Delete"
3138
+ }
3139
+ type CanonicalChangeOp = 'add' | 'remove' | 'replace' | 'rename' | 'metadata';
3140
+ interface CanonicalChange {
3141
+ path: string;
3142
+ op: CanonicalChangeOp;
3143
+ oldValue?: unknown;
3144
+ newValue?: unknown;
3145
+ meta?: Record<string, unknown>;
3146
+ }
3147
+ interface AXPVersionEntry {
3148
+ id: string;
3149
+ streamId: string;
3150
+ versionNumber: number;
3151
+ changeType: AXVChangeType;
3152
+ changedBy: string;
3153
+ changedAt: string;
3154
+ snapshotJson: unknown;
3155
+ patchFromPrevJson: CanonicalChange[];
3156
+ summary?: string;
3157
+ metadataJson?: unknown;
3158
+ }
3159
+ interface AXPVersionChange {
3160
+ id?: number;
3161
+ versionEntryId: string;
3162
+ path: string;
3163
+ op: CanonicalChangeOp;
3164
+ oldValue?: unknown;
3165
+ newValue?: unknown;
3166
+ }
3167
+ interface VersionedFileInfo {
3168
+ id: string;
3169
+ name: string;
3170
+ size: number;
3171
+ mime: string;
3172
+ hash: string;
3173
+ url?: string;
3174
+ thumbUrl?: string;
3175
+ }
3176
+ declare abstract class AXPVersioningService {
3177
+ abstract getStreamIdIfExists(entityType: string, entityId: string): Promise<string | null>;
3178
+ abstract listEntries(streamId: string, options?: {
3179
+ limit?: number;
3180
+ offset?: number;
3181
+ }): Promise<AXPVersionEntry[]>;
3182
+ abstract getUiFriendlyDiff(streamId: string, v1: number, v2: number): Promise<Array<{
3183
+ badge: string;
3184
+ path: string;
3185
+ summary: string;
3186
+ oldValue?: unknown;
3187
+ newValue?: unknown;
3188
+ }>>;
3189
+ }
3190
+
3191
+ declare const AXPRedirectEvent: {
3192
+ (payload: {
3193
+ url: string;
3194
+ }): {
3195
+ type: string;
3196
+ payload: {
3197
+ url: string;
3198
+ };
3199
+ };
3200
+ type: string;
3201
+ };
3202
+ declare const AXPRefreshEvent: {
3203
+ (payload: {
3204
+ entity: string;
3205
+ meta?: any;
3206
+ }): {
3207
+ type: string;
3208
+ payload: {
3209
+ entity: string;
3210
+ meta?: any;
3211
+ };
3212
+ };
3213
+ type: string;
3214
+ };
3215
+ declare const AXPReloadEvent: {
3216
+ (payload: {
3217
+ entity: string;
3218
+ meta?: any;
3219
+ }): {
3220
+ type: string;
3221
+ payload: {
3222
+ entity: string;
3223
+ meta?: any;
3224
+ };
3225
+ };
3226
+ type: string;
3227
+ };
3228
+ declare class AXPWorkflowNavigateAction extends AXPWorkflowAction {
3229
+ private router;
3230
+ private tabNavigation;
3231
+ execute(context: AXPWorkflowContext): Promise<void>;
3232
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPWorkflowNavigateAction, never>;
3233
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPWorkflowNavigateAction>;
3234
+ }
3235
+ declare class AXPDialogConfirmAction extends AXPWorkflowAction {
3236
+ private dialogService;
3237
+ private translationService;
3238
+ title: string;
3239
+ message: string;
3240
+ type: AXStyleColorType;
3241
+ defaultAction: string;
3242
+ execute(context: AXPWorkflowContext): Promise<void>;
3243
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDialogConfirmAction, never>;
3244
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPDialogConfirmAction>;
3245
+ }
3246
+ declare class AXPToastAction extends AXPWorkflowAction {
3247
+ private toastService;
3248
+ private translationService;
3249
+ private settingsService;
3250
+ color: AXStyleColorType;
3251
+ title: string;
3252
+ content: string;
3253
+ execute(context: AXPWorkflowContext): Promise<void>;
3254
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPToastAction, never>;
3255
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPToastAction>;
3256
+ }
3257
+ declare class AXPReloadAction extends AXPWorkflowAction {
3258
+ execute(context: AXPWorkflowContext): Promise<void>;
3259
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPReloadAction, never>;
3260
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPReloadAction>;
3261
+ }
3262
+
3263
+ /** Workflow event type dispatched after a successful entity delete. */
3264
+ declare const AXP_ENTITY_DELETED_WORKFLOW_EVENT_TYPE = "[Entity] Deleted";
3265
+ interface AXPEntityDeletedEventPayload {
3266
+ entity: string;
3267
+ ids: string[];
3268
+ meta?: unknown;
3269
+ }
3270
+
3271
+ declare class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {
3272
+ private readonly tabNavigation;
3273
+ execute(context: AXPWorkflowContext): Promise<void>;
3274
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPWorkflowRouterNavigateAction, never>;
3275
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPWorkflowRouterNavigateAction>;
3276
+ }
3277
+ declare const AXPNavigateWorkflow: AXPWorkflow;
3278
+
3279
+ declare class AXMWorkflowErrorHandler implements AXPErrorHandler {
3280
+ private dialog;
3281
+ handleError(error: any, next: (error: any) => void): void;
3282
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMWorkflowErrorHandler, never>;
3283
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMWorkflowErrorHandler>;
3284
+ }
3285
+
3286
+ export { ALL_DEFAULT_OPERATORS, AXMWorkflowErrorHandler, AXPAppVersionService, AXPBackgroundOperationCompletionService, AXPBackgroundOperationEntityStoreService, AXPBackgroundOperationHandler, AXPBackgroundOperationNotificationService, AXPBackgroundOperationProvider, AXPBackgroundOperationRootConfig, AXPBackgroundOperationService, AXPBackgroundOperationSlotComponent, AXPBrowserTitleService, AXPCleanNestedFilters, AXPClipBoardService, AXPCommonModule, AXPCommonSettings, AXPCustomOperatorService, AXPCustomOperatorServiceImpl, AXPDataProvider, AXPDefaultMultiLanguageConfigService, AXPDialogConfirmAction, AXPErrorHandlerRegistryService, AXPExportService, AXPFileActionsService, AXPFileStorageEvaluatorScopeProvider, AXPFileStorageService, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFilterOperatorMiddlewareServiceImpl, AXPFooterTextSlotComponent, AXPGlobalErrorHandler, AXPHomePageModule, AXPHomePageService, AXPIndexedDbSettingValueProvider, AXPIntegrationOAuthService, AXPIntegrationProviderContext, AXPIntegrationProviderRegistryService, AXPIntegrationRuntimeService, AXPKeyboardShortcutsHelpComponent, AXPKeyboardShortcutsHelpService, AXPLockService, AXPMenuItemsDataSourceDefinition, AXPMenuKeyboardShortcutService, AXPMenuMiddlewareRegistry, AXPMenuProviderService, AXPMenuRouteAccessService, AXPMenuRouteGuard, AXPMenuSearchDefinitionProvider, AXPMenuSearchProvider, AXPMenuService, AXPMenuVisibilityService, AXPNavBarSlotComponent, AXPNavigateWorkflow, AXPNotFoundCatchAllRoute, AXPNotFoundError, AXPOutputContractTranscriptSegmentService, AXPPlatformCommonDataSourceKeys, AXPPlatformDefaultConfigs, AXPRedirectEvent, AXPRefreshEvent, AXPRegionalCalendarService, AXPReloadAction, AXPReloadEvent, AXPSearchCommandProvider, AXPSearchDefinitionActionBuilder, AXPSearchDefinitionBuilder, AXPSearchDefinitionProviderContext, AXPSearchDefinitionProviderService, AXPSearchService, AXPSettingDefaultValuesAggregatorService, AXPSettingDefinitionGroupBuilder, AXPSettingDefinitionProviderContext, AXPSettingDefinitionProviderService, AXPSettingDefinitionSectionBuilder, AXPSettingsBulkSyncService, AXPSettingsEvaluatorScopeProvider, AXPSettingsIndexedDb, AXPSettingsService, AXPStatusDefinitionProviderService, AXPStickyDirective, AXPTabNavigationService, AXPTabPreviewService, AXPTabRouteCacheRegistry, AXPToastAction, AXPTokenDefinitionService, AXPTokenEvaluatorScopeProvider, AXPTranslateFormatter, AXPUnsavedChangesConfirmService, AXPUnsavedChangesPopstateService, AXPVersioningService, AXPWorkflowNavigateAction, AXPWorkflowRouterNavigateAction, AXP_AGENT_OUTPUT_CONTRACT_DEFAULT_STRUCTURED_RETRIES, AXP_APP_VERSION_PROVIDER, AXP_BACKGROUND_OPERATION_ENTITY_STORAGE, AXP_BACKGROUND_OPERATION_HANDLERS, AXP_BACKGROUND_OPERATION_PROVIDERS, AXP_ENTITY_DELETED_WORKFLOW_EVENT_TYPE, AXP_FILE_ACTION_PROVIDER, AXP_FILE_TYPE_INFO_PROVIDER, AXP_HOME_PAGES, AXP_HOME_PAGE_DEFAULT_KEY, AXP_HOME_TAB_KEY, AXP_INTEGRATION_CONNECTION_ESTABLISHED, AXP_INTEGRATION_OAUTH_SERVICE, AXP_INTEGRATION_PROVIDER, AXP_INTEGRATION_RUNTIME_PROVIDER, AXP_INTEGRATION_SECRET_STORE, AXP_IN_APP_NOTIFICATION_SERVICE, AXP_LOCALE_MANAGEMENT_PORT, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER, AXP_NOT_FOUND_CATCH_ALL_ROUTE, AXP_NOT_FOUND_ROUTE, AXP_OUTPUT_CONTRACT_TRANSCRIPT_SEGMENT_PROVIDER, AXP_PLATFORM_CONFIG_TOKEN, AXP_PROTECTED_ROUTE_GUARDS, AXP_ROOT_CONFIG_TOKEN, AXP_SEARCH_DEFINITION_LAZY_RESOLVER, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTINGS_CACHE_SYNC, AXP_SETTINGS_SYNC_DEBOUNCE_MS, AXP_SETTINGS_SYNC_KEYS, AXP_SETTINGS_SYNC_RETRY_BACKOFF_MS, AXP_SETTINGS_SYNC_TTL_MS, AXP_SETTING_DEFAULT_VALUES_PROVIDERS, AXP_SETTING_DEFINITION_PROVIDER, AXP_SETTING_VALUE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TAB_BREADCRUMB_JOIN_SEPARATOR, AXP_TAB_ROUTE_DATA_KEY, AXP_TOKEN_DEFINITION_PROVIDER, AXP_UNAUTHORIZED_ROUTE, AXVChangeType, BETWEEN_OPER, BOOLEAN_OPERATORS, CONTAINS_OPER, DATE_OPERATORS, DEFAULT_DATE_FILTER_PRESETS, DEFAULT_MULTILANGUAGE_FIELD_NAMES, ENDS_WITH_OPER, ENVIRONMENT, EQ_OPER, GTE_OPER, GT_OPER, IN_OPER, IS_EMPTY_OPER, IS_NOT_EMPTY_OPER, LTE_OPER, LT_OPER, MULTILANGUAGE_CAPABLE_WIDGET_TYPES, NOT_CONTAINS_OPER, NOT_EQ_OPER, NUMBER_OPERATORS, SETTINGS_TRACE_NS, SETTINGS_TRACE_TITLE, STARTS_WITH_OPER, STRING_OPERATORS, UploadFromComputerActionProvider, applyDateFilterPreset, axpBackgroundOperationCapabilities, axpBackgroundOperationDisplayTime, axpBackgroundOperationEntityName, axpBackgroundOperationEstimateEndDate, axpBackgroundOperationFailurePolicy, axpBackgroundOperationFromEntityModel, axpBackgroundOperationRemainingMs, axpBackgroundOperationToEntityModel, axpBuildBackgroundOperation, axpBuildTabKey, axpCoerceBackgroundOperationDate, axpCreateBackgroundOperationId, axpFallbackTabTitle, axpFindMenuItemByRoute, axpGetLeafRouteSnapshot, axpHasTabScope, axpIsActiveBackgroundOperationStatus, axpIsCompletedBackgroundOperationStatus, axpIsEntityDetailsPath, axpIsEntityDetailsViewRoute, axpIsEntityListPath, axpIsEntityListRoute, axpIsEntityRecordNotFound, axpIsTabEligibleUrl, axpJoinTabTitleSegments, axpMenuPathsMatch, axpNavigateAppPath, axpParseAppPath, axpPathFromSnapshot, axpRedirectToNotFound, axpRedirectToUnauthorized, axpReplaceEntityListRouteQueryParams, axpResolveTabKey, axpResolveTabKeyFromRouteConfig, axpResolveTabKeyFromSnapshot, axpResolveTabTitleParts, axpSettingsIndexedDb, backgroundOperationEntityFactory, buildScopedSettingsSnapshotId, coerceAXPSettingRawValue, coerceAXPSettingRawValueByKind, configPlatform, createBackgroundOperationStore, createDefaultSettingValueProviders, createEmptyScopedSettingsSnapshot, createEntityCommandOptions, createEntityRowExpressionScope, createEntitySearchCommand, createIndexedDbSettingValueProviders, createMenuContext, createMenuMiddleware, createUnsavedChangesCanDeactivateGuard, downloadGraphicFromElement, evaluateEntityDisplayTemplate, findManualPresetIdByOperation, formatEntityRowDisplayTitle, inferSettingCoercionKind, isStoredImageFileId, normalizePositiveNumberOption, normalizeRouterUrl, normalizeStoredImageRef, peelSettingValueKey, printGraphicFromElement, provideDynamicHomePage, provideMenuMiddleware, resolveDateFilterPresets, resolveEntityCreateListBehavior, resolveEntityModifyPopupTitle, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, resolveEntityRowDisplayTitleFromColumnContext, resolveEntitySearchTitleFallback, resolveGraphicElementSize, resolveGraphicPrintContent, resolveQueryMatchingDisplayText, resolveSearchDisplayTemplate, resolveSearchableText, resolveStoredImageDisplayUrl, searchInRecordValues, searchInSearchableValue, serializeSvgElement, shouldApplyDefaultMultiLanguageToEntityProperty, shouldApplyDefaultMultiLanguageToWidgetNode, shouldApplyDefaultMultiLanguageToWidgetProperty, traceSettingsAppStartupLoadComplete, traceSettingsAppStartupLoadStarted, traceSettingsClientTool, traceSettingsFlush, traceSettingsLocalPersist, traceSettingsPageLoadComplete, traceSettingsPageLoadStarted, traceSettingsPageRouteLoad, traceSettingsRetryScheduled, traceSettingsRevalidateFailed, traceSettingsServerApiCall, traceSettingsServiceLoadComplete, traceSettingsServiceLoadFailed, traceSettingsServiceLoadStarted, traceSettingsServiceReload, traceSettingsSyncFailed, triggerBrowserDownload, withDefaultMultiLanguageOnWidgetNodeTree, withDefaultMultiLanguageOnWidgetProperty };
3287
+ export type { AXCFileUploaderAction, AXCFileUploaderActionsPayload, AXCFileUploaderCapabilities, AXPAgentOutputContract, AXPAgentResponseFormat, AXPAppPathParts, AXPAppVersion, AXPAppVersionProvider, AXPBackgroundOperation, AXPBackgroundOperationActionKey, AXPBackgroundOperationCapabilities, AXPBackgroundOperationCreateRequest, AXPBackgroundOperationEntityModel, AXPBackgroundOperationEntityStorageAdapter, AXPBackgroundOperationError, AXPBackgroundOperationFailureMode, AXPBackgroundOperationFailurePolicy, AXPBackgroundOperationProviderStore, AXPBackgroundOperationStatus, AXPCommonModuleConfigs, AXPCurrency, AXPDateTimeFilterPreset, AXPDateTimeFilterPresetKind, AXPDateTimeFilterValue, AXPDomToImageOptions, AXPEntityCreateListBehavior, AXPEntityCreateListBehaviorOptions, AXPEntityDeletedEventPayload, AXPErrorHandler, AXPFileActionProvider, AXPFileActionProviderToken, AXPFileExtension, AXPFileType, AXPFileTypeInfoProvider, AXPFilterOperator, AXPGeoLocation, AXPGraphicDownloadFormat, AXPGraphicDownloadOptions, AXPGraphicPrintContent, AXPGroupSearchResult, AXPHomePageDefinition, AXPInAppNotificationCreateRequest, AXPInAppNotificationPriority, AXPInAppNotificationService, AXPIntegrationConnectionEstablishedHandler, AXPIntegrationOAuthCompleteInput, AXPIntegrationOAuthStartInput, AXPIntegrationProvider, AXPIntegrationRuntimeProvider, AXPIntegrationSecretRefInput, AXPIntegrationSecretStore, AXPIntegrationWithClientOptions, AXPJsonSchemaLike, AXPLanguage, AXPLocaleManagementPort, AXPLocaleProfile, AXPLockGetInfoRequest, AXPLockInfo, AXPLockRequest, AXPLockType, AXPMenuFinderResult, AXPMenuInsertion, AXPMenuItem, AXPMenuItemCommand, AXPMenuItemFinder, AXPMenuItemWithParent, AXPMenuMiddleware, AXPMenuMiddlewareContext, AXPMenuMiddlewareProvider, AXPMenuProvider, AXPMenuProviderContext, AXPMenuRouteMatchResult, AXPMenuType, AXPNavigationMode, AXPOutputContractTranscriptSegmentDefinition, AXPOutputContractTranscriptSegmentProvider, AXPOutputContractTranscriptSegmentProviderToken, AXPPlatformConfigs, AXPPrintGraphicOptions, AXPResolveEntityRowDisplayTitleOptions, AXPRootConfigs, AXPScopedSettingsSnapshot, AXPSearchAction, AXPSearchDefinition, AXPSearchDefinitionDisplayFormat, AXPSearchDefinitionLazyResolver, AXPSearchDefinitionProvider, AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchDisplayResultForSave, AXPSearchParentResult, AXPSearchProvider, AXPSearchResult, AXPSettingChangedEvent, AXPSettingCoercionKind, AXPSettingDefaultValuesProvider, AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionProvider, AXPSettingDefinitionSection, AXPSettingLayoutOptions, AXPSettingMergedDefaults, AXPSettingSetOptions, AXPSettingValue, AXPSettingValueProvider, AXPSettingsBulkFetchResult, AXPSettingsBulkPatchResult, AXPSettingsCacheSync, AXPSettingsScopedFetchInput, AXPSettingsScopedPatchInput, AXPSettingsServiceInterface, AXPSettingsSyncKeys, AXPSettingsSyncStatus, AXPTabCloseConfirm, AXPTabDescriptor, AXPTabRouteData, AXPTabSessionState, AXPTabStructuredPreview, AXPTabTitleParts, AXPTimeZone, AXPTokenDefinition, AXPTokenDefinitionProvider, AXPTokenDefinitionProviderToken, AXPTranslateFormatterOptions, AXPUnLockRequest, AXPUnsavedChangesCanDeactivate, AXPUnsavedChangesConfirmOptions, AXPUnsavedChangesPopstateSource, AXPVersionChange, AXPVersionEntry, AXPVersionStream, CanonicalChange, CanonicalChangeOp, VersionedFileInfo };