@en-solutions/tgm-client-sdk 1.8.4 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/esm2022/lib/models/api/ai-usage.models.mjs +6 -0
  2. package/esm2022/lib/models/api/grid.models.mjs +6 -0
  3. package/esm2022/lib/models/api/plugin.models.mjs +3 -0
  4. package/esm2022/lib/models/auth/index.mjs +2 -1
  5. package/esm2022/lib/models/auth/webauthn.models.mjs +2 -0
  6. package/esm2022/lib/models/index.mjs +3 -1
  7. package/esm2022/lib/services/api/ai-usage.service.mjs +36 -0
  8. package/esm2022/lib/services/api/asset-lifecycle.service.mjs +7 -4
  9. package/esm2022/lib/services/api/export.service.mjs +14 -1
  10. package/esm2022/lib/services/api/grid.service.mjs +80 -0
  11. package/esm2022/lib/services/api/index.mjs +4 -1
  12. package/esm2022/lib/services/api/plugin.service.mjs +49 -0
  13. package/esm2022/lib/services/auth/index.mjs +2 -1
  14. package/esm2022/lib/services/auth/webauthn.service.mjs +63 -0
  15. package/fesm2022/en-solutions-tgm-client-sdk.mjs +240 -5
  16. package/fesm2022/en-solutions-tgm-client-sdk.mjs.map +1 -1
  17. package/lib/models/api/ai-usage.models.d.ts +24 -0
  18. package/lib/models/api/grid.models.d.ts +55 -0
  19. package/lib/models/api/plugin.models.d.ts +20 -0
  20. package/lib/models/auth/index.d.ts +1 -0
  21. package/lib/models/auth/webauthn.models.d.ts +8 -0
  22. package/lib/models/index.d.ts +2 -0
  23. package/lib/services/api/ai-usage.service.d.ts +22 -0
  24. package/lib/services/api/asset-lifecycle.service.d.ts +2 -1
  25. package/lib/services/api/export.service.d.ts +4 -0
  26. package/lib/services/api/grid.service.d.ts +54 -0
  27. package/lib/services/api/index.d.ts +3 -0
  28. package/lib/services/api/plugin.service.d.ts +25 -0
  29. package/lib/services/auth/index.d.ts +1 -0
  30. package/lib/services/auth/webauthn.service.d.ts +32 -0
  31. package/package.json +5 -3
@@ -0,0 +1,63 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { firstValueFrom } from 'rxjs';
3
+ import { create, get, supported } from '@github/webauthn-json';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../core/http-client.service";
6
+ /**
7
+ * WebAuthn / passkeys / security keys.
8
+ *
9
+ * Registration & key management require an authenticated session; passkey login is public.
10
+ * Uses @github/webauthn-json (the matching browser library for the backend's Yubico server).
11
+ */
12
+ export class WebAuthnService {
13
+ http;
14
+ base = '/auth/webauthn';
15
+ constructor(http) {
16
+ this.http = http;
17
+ }
18
+ /** True if this browser supports WebAuthn. */
19
+ isSupported() {
20
+ return supported();
21
+ }
22
+ /** Register a new passkey / security key for the current (logged-in) user. */
23
+ async registerKey(deviceName) {
24
+ const start = await firstValueFrom(this.http.post(`${this.base}/register/start`, {}));
25
+ const credential = await create(start.data.options);
26
+ await firstValueFrom(this.http.post(`${this.base}/register/finish`, {
27
+ flowId: start.data.flowId,
28
+ credential,
29
+ deviceName,
30
+ }));
31
+ }
32
+ /**
33
+ * Log in with a passkey. Pass a username for username-first flows, or omit it for a
34
+ * usernameless (discoverable credential) login. Stores the JWT on success.
35
+ */
36
+ async loginWithPasskey(username) {
37
+ const start = await firstValueFrom(this.http.post(`${this.base}/login/start`, { username }, { skipAuth: true }));
38
+ const credential = await get(start.data.options);
39
+ const res = await firstValueFrom(this.http.post(`${this.base}/login/finish`, { flowId: start.data.flowId, credential }, { skipAuth: true }));
40
+ if (res?.jwt) {
41
+ this.http.setToken(res.jwt);
42
+ const refresh = res.refreshToken;
43
+ if (refresh)
44
+ this.http.setRefreshToken(refresh);
45
+ }
46
+ return res;
47
+ }
48
+ /** List the current user's registered keys. */
49
+ listKeys() {
50
+ return this.http.get(`${this.base}/credentials`);
51
+ }
52
+ /** Remove a registered key. */
53
+ deleteKey(id) {
54
+ return this.http.delete(`${this.base}/credentials/${id}`);
55
+ }
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebAuthnService, deps: [{ token: i1.TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
57
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebAuthnService, providedIn: 'root' });
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebAuthnService, decorators: [{
60
+ type: Injectable,
61
+ args: [{ providedIn: 'root' }]
62
+ }], ctorParameters: () => [{ type: i1.TgmHttpClient }] });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYXV0aC93ZWJhdXRobi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBVy9EOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFHTjtJQUZaLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztJQUVoQyxZQUFvQixJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO0lBQUcsQ0FBQztJQUUzQyw4Q0FBOEM7SUFDOUMsV0FBVztRQUNULE9BQU8sU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQW1CO1FBQ25DLE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNkIsR0FBRyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FDOUUsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxjQUFjLENBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFvQixHQUFHLElBQUksQ0FBQyxJQUFJLGtCQUFrQixFQUFFO1lBQ2hFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDekIsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBaUI7UUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLEdBQUcsSUFBSSxDQUFDLElBQUksY0FBYyxFQUMxQixFQUFFLFFBQVEsRUFBRSxFQUNaLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNuQixDQUNGLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixHQUFHLElBQUksQ0FBQyxJQUFJLGVBQWUsRUFDM0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQ3pDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNuQixDQUNGLENBQUM7UUFDRixJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixNQUFNLE9BQU8sR0FBSSxHQUFXLENBQUMsWUFBWSxDQUFDO1lBQzFDLElBQUksT0FBTztnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsK0NBQStDO0lBQy9DLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF3QyxHQUFHLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsU0FBUyxDQUFDLEVBQVU7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO3dHQTdEVSxlQUFlOzRHQUFmLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlLCBnZXQsIHN1cHBvcnRlZCB9IGZyb20gJ0BnaXRodWIvd2ViYXV0aG4tanNvbic7XG5pbXBvcnQgeyBUZ21IdHRwQ2xpZW50IH0gZnJvbSAnLi4vLi4vY29yZS9odHRwLWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2UubW9kZWxzJztcbmltcG9ydCB7IEF1dGhSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9hdXRoL2xvZ2luLm1vZGVscyc7XG5pbXBvcnQgeyBXZWJBdXRobkNyZWRlbnRpYWxWaWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dGgvd2ViYXV0aG4ubW9kZWxzJztcblxuaW50ZXJmYWNlIENlcmVtb255U3RhcnQge1xuICBmbG93SWQ6IHN0cmluZztcbiAgb3B0aW9uczogYW55OyAvLyB7IHB1YmxpY0tleTogey4uLn0gfSBmcm9tIHRoZSBiYWNrZW5kIChZdWJpY28gdG9DcmVkZW50aWFscypKc29uKVxufVxuXG4vKipcbiAqIFdlYkF1dGhuIC8gcGFzc2tleXMgLyBzZWN1cml0eSBrZXlzLlxuICpcbiAqIFJlZ2lzdHJhdGlvbiAmIGtleSBtYW5hZ2VtZW50IHJlcXVpcmUgYW4gYXV0aGVudGljYXRlZCBzZXNzaW9uOyBwYXNza2V5IGxvZ2luIGlzIHB1YmxpYy5cbiAqIFVzZXMgQGdpdGh1Yi93ZWJhdXRobi1qc29uICh0aGUgbWF0Y2hpbmcgYnJvd3NlciBsaWJyYXJ5IGZvciB0aGUgYmFja2VuZCdzIFl1YmljbyBzZXJ2ZXIpLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdlYkF1dGhuU2VydmljZSB7XG4gIHByaXZhdGUgYmFzZSA9ICcvYXV0aC93ZWJhdXRobic7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBUZ21IdHRwQ2xpZW50KSB7fVxuXG4gIC8qKiBUcnVlIGlmIHRoaXMgYnJvd3NlciBzdXBwb3J0cyBXZWJBdXRobi4gKi9cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cHBvcnRlZCgpO1xuICB9XG5cbiAgLyoqIFJlZ2lzdGVyIGEgbmV3IHBhc3NrZXkgLyBzZWN1cml0eSBrZXkgZm9yIHRoZSBjdXJyZW50IChsb2dnZWQtaW4pIHVzZXIuICovXG4gIGFzeW5jIHJlZ2lzdGVyS2V5KGRldmljZU5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdGFydCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5odHRwLnBvc3Q8QXBpUmVzcG9uc2U8Q2VyZW1vbnlTdGFydD4+KGAke3RoaXMuYmFzZX0vcmVnaXN0ZXIvc3RhcnRgLCB7fSksXG4gICAgKTtcbiAgICBjb25zdCBjcmVkZW50aWFsID0gYXdhaXQgY3JlYXRlKHN0YXJ0LmRhdGEub3B0aW9ucyk7XG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmh0dHAucG9zdDxBcGlSZXNwb25zZTx2b2lkPj4oYCR7dGhpcy5iYXNlfS9yZWdpc3Rlci9maW5pc2hgLCB7XG4gICAgICAgIGZsb3dJZDogc3RhcnQuZGF0YS5mbG93SWQsXG4gICAgICAgIGNyZWRlbnRpYWwsXG4gICAgICAgIGRldmljZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBpbiB3aXRoIGEgcGFzc2tleS4gUGFzcyBhIHVzZXJuYW1lIGZvciB1c2VybmFtZS1maXJzdCBmbG93cywgb3Igb21pdCBpdCBmb3IgYVxuICAgKiB1c2VybmFtZWxlc3MgKGRpc2NvdmVyYWJsZSBjcmVkZW50aWFsKSBsb2dpbi4gU3RvcmVzIHRoZSBKV1Qgb24gc3VjY2Vzcy5cbiAgICovXG4gIGFzeW5jIGxvZ2luV2l0aFBhc3NrZXkodXNlcm5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmh0dHAucG9zdDxBcGlSZXNwb25zZTxDZXJlbW9ueVN0YXJ0Pj4oXG4gICAgICAgIGAke3RoaXMuYmFzZX0vbG9naW4vc3RhcnRgLFxuICAgICAgICB7IHVzZXJuYW1lIH0sXG4gICAgICAgIHsgc2tpcEF1dGg6IHRydWUgfSxcbiAgICAgICksXG4gICAgKTtcbiAgICBjb25zdCBjcmVkZW50aWFsID0gYXdhaXQgZ2V0KHN0YXJ0LmRhdGEub3B0aW9ucyk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmh0dHAucG9zdDxBdXRoUmVzcG9uc2U+KFxuICAgICAgICBgJHt0aGlzLmJhc2V9L2xvZ2luL2ZpbmlzaGAsXG4gICAgICAgIHsgZmxvd0lkOiBzdGFydC5kYXRhLmZsb3dJZCwgY3JlZGVudGlhbCB9LFxuICAgICAgICB7IHNraXBBdXRoOiB0cnVlIH0sXG4gICAgICApLFxuICAgICk7XG4gICAgaWYgKHJlcz8uand0KSB7XG4gICAgICB0aGlzLmh0dHAuc2V0VG9rZW4ocmVzLmp3dCk7XG4gICAgICBjb25zdCByZWZyZXNoID0gKHJlcyBhcyBhbnkpLnJlZnJlc2hUb2tlbjtcbiAgICAgIGlmIChyZWZyZXNoKSB0aGlzLmh0dHAuc2V0UmVmcmVzaFRva2VuKHJlZnJlc2gpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqIExpc3QgdGhlIGN1cnJlbnQgdXNlcidzIHJlZ2lzdGVyZWQga2V5cy4gKi9cbiAgbGlzdEtleXMoKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZTxXZWJBdXRobkNyZWRlbnRpYWxWaWV3W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpUmVzcG9uc2U8V2ViQXV0aG5DcmVkZW50aWFsVmlld1tdPj4oYCR7dGhpcy5iYXNlfS9jcmVkZW50aWFsc2ApO1xuICB9XG5cbiAgLyoqIFJlbW92ZSBhIHJlZ2lzdGVyZWQga2V5LiAqL1xuICBkZWxldGVLZXkoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2U8dm9pZD4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlSZXNwb25zZTx2b2lkPj4oYCR7dGhpcy5iYXNlfS9jcmVkZW50aWFscy8ke2lkfWApO1xuICB9XG59XG4iXX0=
@@ -2,9 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, Inject, Optional, NgModule, inject, ViewChild, Input, Component, EventEmitter, Output, HostListener } from '@angular/core';
3
3
  import * as i1 from '@angular/common/http';
4
4
  import { HttpClient, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
5
- import { BehaviorSubject, Subject, catchError, throwError, take, switchMap, takeUntil, share, tap, shareReplay, map } from 'rxjs';
5
+ import { BehaviorSubject, Subject, catchError, throwError, take, switchMap, takeUntil, share, tap, firstValueFrom, shareReplay, map, Observable } from 'rxjs';
6
6
  import { Client } from '@stomp/stompjs';
7
7
  import * as SockJSModule from 'sockjs-client';
8
+ import { supported, create, get } from '@github/webauthn-json';
8
9
  import * as i2 from '@angular/common';
9
10
  import { CommonModule } from '@angular/common';
10
11
  import { ConnectionState, Room, RoomEvent, Track } from 'livekit-client';
@@ -966,6 +967,13 @@ function isBulkSensorMessage(msg) {
966
967
  return 'readings' in msg && Array.isArray(msg.readings);
967
968
  }
968
969
 
970
+ /**
971
+ * Grid Management plugin models — distribution network nodes/links and live status.
972
+ * Mirrors the backend `ca.ensolutions.tgm.grid` entities and DTOs.
973
+ */
974
+
975
+ /** Plugin framework models — installable per-tenant modules. */
976
+
969
977
  class AuthService {
970
978
  http;
971
979
  currentUser$ = new BehaviorSubject(null);
@@ -1133,6 +1141,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1133
1141
  args: [{ providedIn: 'root' }]
1134
1142
  }], ctorParameters: () => [{ type: TgmHttpClient }] });
1135
1143
 
1144
+ /**
1145
+ * WebAuthn / passkeys / security keys.
1146
+ *
1147
+ * Registration & key management require an authenticated session; passkey login is public.
1148
+ * Uses @github/webauthn-json (the matching browser library for the backend's Yubico server).
1149
+ */
1150
+ class WebAuthnService {
1151
+ http;
1152
+ base = '/auth/webauthn';
1153
+ constructor(http) {
1154
+ this.http = http;
1155
+ }
1156
+ /** True if this browser supports WebAuthn. */
1157
+ isSupported() {
1158
+ return supported();
1159
+ }
1160
+ /** Register a new passkey / security key for the current (logged-in) user. */
1161
+ async registerKey(deviceName) {
1162
+ const start = await firstValueFrom(this.http.post(`${this.base}/register/start`, {}));
1163
+ const credential = await create(start.data.options);
1164
+ await firstValueFrom(this.http.post(`${this.base}/register/finish`, {
1165
+ flowId: start.data.flowId,
1166
+ credential,
1167
+ deviceName,
1168
+ }));
1169
+ }
1170
+ /**
1171
+ * Log in with a passkey. Pass a username for username-first flows, or omit it for a
1172
+ * usernameless (discoverable credential) login. Stores the JWT on success.
1173
+ */
1174
+ async loginWithPasskey(username) {
1175
+ const start = await firstValueFrom(this.http.post(`${this.base}/login/start`, { username }, { skipAuth: true }));
1176
+ const credential = await get(start.data.options);
1177
+ const res = await firstValueFrom(this.http.post(`${this.base}/login/finish`, { flowId: start.data.flowId, credential }, { skipAuth: true }));
1178
+ if (res?.jwt) {
1179
+ this.http.setToken(res.jwt);
1180
+ const refresh = res.refreshToken;
1181
+ if (refresh)
1182
+ this.http.setRefreshToken(refresh);
1183
+ }
1184
+ return res;
1185
+ }
1186
+ /** List the current user's registered keys. */
1187
+ listKeys() {
1188
+ return this.http.get(`${this.base}/credentials`);
1189
+ }
1190
+ /** Remove a registered key. */
1191
+ deleteKey(id) {
1192
+ return this.http.delete(`${this.base}/credentials/${id}`);
1193
+ }
1194
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebAuthnService, deps: [{ token: TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
1195
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebAuthnService, providedIn: 'root' });
1196
+ }
1197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebAuthnService, decorators: [{
1198
+ type: Injectable,
1199
+ args: [{ providedIn: 'root' }]
1200
+ }], ctorParameters: () => [{ type: TgmHttpClient }] });
1201
+
1136
1202
  class PlatformAuthService {
1137
1203
  http;
1138
1204
  currentAdmin$ = new BehaviorSubject(null);
@@ -2485,6 +2551,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2485
2551
  type: Injectable
2486
2552
  }], ctorParameters: () => [{ type: TgmHttpClient }] });
2487
2553
 
2554
+ /**
2555
+ * AI usage & cost attribution for the current tenant.
2556
+ * Backend: AiUsageController (admin-only).
2557
+ */
2558
+ class AiUsageService {
2559
+ http;
2560
+ basePath = '/api/ai/usage';
2561
+ constructor(http) {
2562
+ this.http = http;
2563
+ }
2564
+ /**
2565
+ * Usage summary (calls, tokens, cost) broken down by feature / provider / model.
2566
+ * @param from optional ISO date (yyyy-MM-dd), defaults server-side to 30 days ago
2567
+ * @param to optional ISO date (yyyy-MM-dd), defaults server-side to today
2568
+ */
2569
+ getSummary(from, to) {
2570
+ const params = {};
2571
+ if (from)
2572
+ params['from'] = from;
2573
+ if (to)
2574
+ params['to'] = to;
2575
+ return this.http.get(`${this.basePath}/summary`, {
2576
+ params: Object.keys(params).length ? params : undefined,
2577
+ });
2578
+ }
2579
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiUsageService, deps: [{ token: TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2580
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiUsageService, providedIn: 'root' });
2581
+ }
2582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiUsageService, decorators: [{
2583
+ type: Injectable,
2584
+ args: [{ providedIn: 'root' }]
2585
+ }], ctorParameters: () => [{ type: TgmHttpClient }] });
2586
+
2488
2587
  class CompanyService extends BaseCrudService {
2489
2588
  resourcePath = '/api/companies';
2490
2589
  constructor(http) {
@@ -4470,6 +4569,19 @@ class ExportService {
4470
4569
  constructor(http) {
4471
4570
  this.http = http;
4472
4571
  }
4572
+ // ================== DASHBOARD ==================
4573
+ /** Export the dashboard KPIs as CSV (period in days, default 30). */
4574
+ exportDashboardCsv(periodDays = 30) {
4575
+ return this.http.download(`${this.basePath}/dashboard`, {
4576
+ params: { format: 'csv', periodDays },
4577
+ });
4578
+ }
4579
+ /** Export the dashboard KPIs as Excel (period in days, default 30). */
4580
+ exportDashboardExcel(periodDays = 30) {
4581
+ return this.http.download(`${this.basePath}/dashboard`, {
4582
+ params: { format: 'excel', periodDays },
4583
+ });
4584
+ }
4473
4585
  exportInspectionsExcel(ids) {
4474
4586
  return this.http.download(`${this.basePath}/inspections/excel`, {
4475
4587
  params: ids?.length ? { ids: ids.join(',') } : undefined,
@@ -5511,7 +5623,9 @@ class AssetLifecycleService {
5511
5623
  return this.http.get(`${this.basePath}/component/${componentId}`);
5512
5624
  }
5513
5625
  update(lifecycleId, data) {
5514
- return this.http.patch(`${this.basePath}/${lifecycleId}`, data);
5626
+ // Use the standard CRUD endpoint — the custom PATCH /asset-lifecycle/:id returns 200 but does
5627
+ // not persist. PUT /api/asset-lifecycles/:id saves correctly (matches getAll/createRecord).
5628
+ return this.http.put(`/api/asset-lifecycles/${lifecycleId}`, data);
5515
5629
  }
5516
5630
  transition(lifecycleId, newStage) {
5517
5631
  return this.http.post(`${this.basePath}/${lifecycleId}/transition`, null, {
@@ -5556,9 +5670,10 @@ class AssetLifecycleService {
5556
5670
  getStageEnums() {
5557
5671
  return this.http.get(`${this.basePath}/enums/stages`);
5558
5672
  }
5559
- /** Create a lifecycle record via the collection endpoint (wraps data in { data } if needed) */
5673
+ /** Create a lifecycle record via the standard collection endpoint. The backend expects a FLAT
5674
+ * payload — wrapping it in { data } makes Spring ignore every field and persist an empty record. */
5560
5675
  createRecord(data) {
5561
- return this.http.post('/api/asset-lifecycles', { data });
5676
+ return this.http.post('/api/asset-lifecycles', data);
5562
5677
  }
5563
5678
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AssetLifecycleService, deps: [{ token: TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
5564
5679
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AssetLifecycleService, providedIn: 'root' });
@@ -6998,6 +7113,126 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6998
7113
  args: [{ providedIn: 'root' }]
6999
7114
  }] });
7000
7115
 
7116
+ /** CRUD for grid nodes (`/api/grid/nodes`). Requires the grid-management plugin. */
7117
+ class GridNodeService extends BaseCrudService {
7118
+ resourcePath = '/api/grid/nodes';
7119
+ constructor(http) {
7120
+ super(http);
7121
+ }
7122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridNodeService, deps: [{ token: TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
7123
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridNodeService, providedIn: 'root' });
7124
+ }
7125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridNodeService, decorators: [{
7126
+ type: Injectable,
7127
+ args: [{ providedIn: 'root' }]
7128
+ }], ctorParameters: () => [{ type: TgmHttpClient }] });
7129
+ /** CRUD for grid links/edges (`/api/grid/links`). */
7130
+ class GridLinkService extends BaseCrudService {
7131
+ resourcePath = '/api/grid/links';
7132
+ constructor(http) {
7133
+ super(http);
7134
+ }
7135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridLinkService, deps: [{ token: TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
7136
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridLinkService, providedIn: 'root' });
7137
+ }
7138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridLinkService, decorators: [{
7139
+ type: Injectable,
7140
+ args: [{ providedIn: 'root' }]
7141
+ }], ctorParameters: () => [{ type: TgmHttpClient }] });
7142
+ /**
7143
+ * Real-time distribution-grid view: the status snapshot that powers the map plus a live STOMP feed.
7144
+ *
7145
+ * Typical usage:
7146
+ * ```ts
7147
+ * grid.status().subscribe(r => this.render(r.data)); // initial map render
7148
+ * grid.liveStatus().subscribe(snapshot => this.render(snapshot)); // live updates
7149
+ * ```
7150
+ */
7151
+ class GridService {
7152
+ http;
7153
+ ws;
7154
+ base = '/api/grid';
7155
+ static TOPIC_STATUS = '/topic/grid/status';
7156
+ constructor(http, ws) {
7157
+ this.http = http;
7158
+ this.ws = ws;
7159
+ }
7160
+ /** Live status snapshot of every node (for the initial map render). */
7161
+ status() {
7162
+ return this.http.get(`${this.base}/status`);
7163
+ }
7164
+ /** All links/edges (for drawing the topology). */
7165
+ links() {
7166
+ return this.http.get(`${this.base}/links`);
7167
+ }
7168
+ /** Admin: recompute and persist live states, then broadcast over WebSocket. */
7169
+ recompute() {
7170
+ return this.http.post(`${this.base}/status/recompute`, {});
7171
+ }
7172
+ /**
7173
+ * Live stream of full status snapshots pushed on `/topic/grid/status`.
7174
+ * Ensure {@link WebSocketService.connect} has been called once after login.
7175
+ */
7176
+ liveStatus() {
7177
+ return this.ws.subscribe(GridService.TOPIC_STATUS);
7178
+ }
7179
+ /** Live stream for a single node pushed on `/topic/grid/node/{id}`. */
7180
+ liveNode(nodeId) {
7181
+ return this.ws.subscribe(`/topic/grid/node/${nodeId}`);
7182
+ }
7183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridService, deps: [{ token: TgmHttpClient }, { token: WebSocketService }], target: i0.ɵɵFactoryTarget.Injectable });
7184
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridService, providedIn: 'root' });
7185
+ }
7186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridService, decorators: [{
7187
+ type: Injectable,
7188
+ args: [{ providedIn: 'root' }]
7189
+ }], ctorParameters: () => [{ type: TgmHttpClient }, { type: WebSocketService }] });
7190
+
7191
+ /**
7192
+ * Installable modules (plugins) for the current organization.
7193
+ *
7194
+ * `list()` is readable by any authenticated user — the frontend uses it to decide which modules /
7195
+ * menus to reveal. `install()` / `uninstall()` require an admin and run the plugin's isolated
7196
+ * migrations on the tenant DB.
7197
+ */
7198
+ class PluginService {
7199
+ http;
7200
+ base = '/api/plugins';
7201
+ constructor(http) {
7202
+ this.http = http;
7203
+ }
7204
+ /** Catalog of all plugins with this organization's install status. */
7205
+ list() {
7206
+ return this.http.get(this.base);
7207
+ }
7208
+ /** True if the given plugin is installed for the current organization. */
7209
+ isInstalled(pluginId) {
7210
+ return new Observable((sub) => {
7211
+ const s = this.list().subscribe({
7212
+ next: (r) => {
7213
+ const found = (r.data ?? []).find((p) => p.id === pluginId);
7214
+ sub.next(!!found?.installed);
7215
+ sub.complete();
7216
+ },
7217
+ error: (e) => sub.error(e),
7218
+ });
7219
+ return () => s.unsubscribe();
7220
+ });
7221
+ }
7222
+ install(pluginId) {
7223
+ return this.http.post(`${this.base}/${pluginId}/install`, {});
7224
+ }
7225
+ uninstall(pluginId) {
7226
+ return this.http.post(`${this.base}/${pluginId}/uninstall`, {});
7227
+ }
7228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PluginService, deps: [{ token: TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
7229
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PluginService, providedIn: 'root' });
7230
+ }
7231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PluginService, decorators: [{
7232
+ type: Injectable,
7233
+ args: [{ providedIn: 'root' }]
7234
+ }], ctorParameters: () => [{ type: TgmHttpClient }] });
7235
+
7001
7236
  class ChatRestService {
7002
7237
  http;
7003
7238
  basePath = '/api/chat';
@@ -11376,5 +11611,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
11376
11611
  * Generated bundle index. Do not edit.
11377
11612
  */
11378
11613
 
11379
- export { AIScenarioService, AIScenarioType, ActivePermitHolder, ActivityLogService, AgentService, AiFeedbackService, AiProvider, AiService, AipAnalysisService, AipAssessmentService, AipFinancialService, AipGeographicService, AipNetworkAnalysisService, AipNetworkNodeService, AipPerformanceRecordService, AipPerformanceService, AipPlanService, AipResourceConstraintService, AipResourceService, AipRiskAnalysisService, AipScenarioService, AipSettingsService, AipWorkflowService, AlertDefinitionService, AlertService, AlertSeverity, AlertStatus, AncillaryServiceCrudService, AncillaryServiceStatus, AncillaryServiceType, AnnouncementService, AnnouncementType, AnomalyDetectionService, ApiTokenStatus, AppLanguage, ApprovalStatus, ArticleAdminService, ArticleCategoryService, ArticleService, ArticleTopicService, AssetLifecycleService, AssetLifecycleStage, AssetLifecycleStatus, AssetPhase, AuditEntryService, AuditLogService, AuthInterceptor, AuthService, BackupService, BackupStatus, BaseCrudService, BathymetricSurveyService, BestPracticeCategoryService, BestPracticeService, BidService, BudgetService, BulkOperationService, CAPAStatus, CAPAType, CacheAdminService, CalendarPlanning, CapexProjectService, CatAttachmentCategory, CatAttachmentPhase, CatAttachmentService, CatComponentType, CatDoneBy, CatEquipmentOwner, CatExecutionResultService, CatMachineCondition, CatOutageType, CatPersonnelAssignmentService, CatPlanningEquipmentItemService, CatRecommendedAction, CatSignOffRole, CatSignOffService, CatStatus, CatTestResult, CatTestTrigger, CatTrendVsPrevious, CatTypeOfTest, CatWhereDone, CertificationService, ChatMessageType, ChatRestService, ChatWebSocketService, ChecklistPeriodicity, ChecklistRunningMode, ClientAdminService, ClientApiKeyService, ClientArticleService, ClientInterceptor, ClientOcrService, ClientStatus, ClientUsageService, CmsContentTypeService, CmsDataService, CmsMenuHelper, CommunityCommentService, CommunityPostService, CompanyMaterialService, CompanyMaterialTypeService, CompanyService, ComplianceObligationService, ComplianceSubmissionService, ComplianceSubmissionStatus, ComponentCategory, ComponentChecklistGroupService, ComponentChecklistService, ComponentChecklistTemplateService, ComponentGroupService, ComponentInfoCategory, ComponentInfoService, ComponentInfoStatus, ComponentInfoType, ComponentLocationService, ComponentService, ComponentType, ConditionAssessmentTestService, ConversationType, CorrectiveActionService, CortexEventService, CortexInsightService, CortexNodeService, CortexService, CostAllocation, CountryService, CurtailmentEventService, CurtailmentStatus, CurtailmentType, CustomFieldDefinitionService, CustomFieldService, CustomFieldType, CustomFormService, CustomService, DEFAULT_EXCLUDED_ENTITIES, DashboardService, DataExportService, DatabaseManagerComponent, DatabaseManagerModule, DeferralConstraintRuleService, DeferralDecisionService, DeferralEvaluationService, DepartmentService, DeploymentType, DepreciationMethod, DeviceGatewayService, DiagnosticReportService, DigitalTwinService, DocumentAdminService, DrawingCategoryService, DrawingService, DriverService, DriverStatus, DynamicCrudService, ENTITY_REGISTRY, ENTITY_SERVICE_MAP, ElevationStorageCurveService, EmailAdminService, EmailProviderAdminService, EmailProviderType, EnergyAnalyticsService, EnergyProductionService, EnergySourceType, EntityCommentService, EntitySchemaService, EnvironmentalPermitService, ErpAdminService, ErpAuthType, ErpType, EventNature, EventService, ExportButtonComponent, ExportService, ExtensionEventType, ExtensionService, ExtensionStatus, FailureActionService, FailureCauseService, FailureImpact, FailureLikelihood, FailureRiskLevel, FailureService, FaqCategoryService, FaqService, FeedbackService, FilterParams, FishMonitoringService, FishboneCategory, FontService, FormCategoryService, FormService, FuelRecordService, FuelType, GateControlService, GateControlType, GateSystemService, GateType, GeneratedReportListComponent, GeofenceEventService, GeofenceEventType, GeofenceService, GeofenceType, GoodsReceiptService, GpsLocationService, GridConnectionService, GridConnectionStatus, IdentityProviderAdminService, ImpersonationService, InMemoryTokenStorage, InactiveComponentService, IncidentCategory, IncidentService, IncidentType, IncomingCallComponent, InspectionComponentService, InspectionLevel, InspectionNature, InspectionService, InspectionType, InterventionRequestService, InterventionRequestStatus, InterventionService, InvestmentOptionService, JobTitleService, JsaItemService, JsaStepService, KpiEventService, LOTOBoxStatus, LOTOBoxType, LOTOLockRole, LOTOLockStatus, LOTOLockType, LOTOOverallStatus, LaboratoryResultService, LayoutType, LearningModuleCategoryService, LessonLearnedOrigin, LessonLearnedService, LessonLearnedStatus, LicenseService, LivekitRoomService, LocationService, LogService, LoginHistoryService, LoginRequestService, MODULE_LABELS, MaintenanceJsaService, MaintenancePlanService, MaintenanceRecordService, MaintenanceStatus, MaintenanceType, ManualReadingService, MaterialCategoryService, MaterialConsumableCategoryService, MaterialConsumableHistoryService, MaterialConsumableService, MaterialInstrumentHistoryService, MaterialInstrumentService, MaterialItemHistoryService, MaterialItemService, MaterialToolingCategoryService, MaterialToolingHistoryService, MaterialToolingService, MeasurementService, MeasurementUnitService, MeasurementUnitSystem, MessageChannel, MessageService, MessagingProviderAdminService, MessagingProviderType, MeteringParameterStatus, MeteringParameterSubType, MeteringParameterType, MiHistoryService, MiRequestService, MigrationStatus, ModelFileService, ModelService, ModuleLearningService, ModuleService, ModuleVideoService, MonitoringLocationType, MonitoringMethod, NoteService, ObjectBrowserComponent, ObligationFrequency, ObligationStatus, ObligationType, ObservationCategory, ObservationSeverity, OcrProcessingStatus, OperatingEventService, OperatingMode, OperationalObservationService, OutageEventService, OutageResourceService, OutageStatus, OutageType, PC2PermitSubType, ParticipantRole, Periodicity, PermissionService, PermitOrigin, PermitStatus, PermitType, PlantDataService, PlantSize, PlantStatus, PlatformAdminRole, PlatformAdminService, PlatformAuthService, PlatformNotificationService, PlatformWebhookService, PremiseType, PresenceStatus, PresetProvider, Priority, ProfilePermissionService, ProfileService, ProjectService, PropertiesGroupService, PropertiesTemplateService, PropertyService, PropertyTemplateService, ProviderType, ProvisioningStep, PurchaseOrderService, QueryEditorComponent, QueryExecutorService, QueryToolbarComponent, QueueAdminService, RCAMethodology, RCAStatus, RcaEventCause, RcaWorkOrderType, ReadingType, RealtimeEventService, ReasonForInspection, ReasonForIntervention, RechargeRequestService, RecordDetailComponent, RecurringEventService, RefurbishmentService, Region, RegulatoryUpdateService, RegulatoryUpdateType, ReportDefinitionFormComponent, ReportDefinitionListComponent, ReportGenerateDialogComponent, ReportStatsComponent, ReportTemplateListComponent, ReportingModule, ReportingService, ReservoirDataService, ReservoirTimeSeriesService, ReservoirWebSocketService, ResourceCategoryService, ResourceService, ResourceTopicService, ResultsGridComponent, RoleAdminService, RoleService, RoleType, RoomService, RootCauseAnalysisService, SampleType, SandboxAccessLevel, SandboxAdminService, SandboxService, SandboxStatus, ScheduledReportService, SchedulerAdminService, SearchService, SedimentManagementPlanService, SedimentRemovalOperationService, SensorService, SensorType, SiteAssessmentService, SlaBreachRecordService, SlaPolicyService, SparePartService, SsoAuthService, StockCountService, StockMovementService, SubAssemblyService, SubscriptionPlan, SubscriptionService, SubscriptionStatus, SupplierService, SurveyMethod, SyncDirection, SystemHealthService, SystemicRiskAssessmentService, TGM_SDK_CONFIG, TableDataViewerComponent, TableStructureComponent, TaskRunStatus, TermsOfUseService, TgFileService, TgFolderService, TgmApiError, TgmEntityType, TgmHttpClient, TgmSdkModule, ThresholdAlertRuleService, TicketPriority, TicketService, TicketStatus, TimeEntryService, TodoService, TotpService, TrackedEntityService, TrackedEntityType, TrackingStatus, TrainingCertificateService, TripStatus, TurbineTypeService, UnitService, UnitShutdownHistoryService, UnitStatus, UploadService, UserAdminService, UserLearningService, UserNotificationService, UserPermissionService, UserProfileService, UserService, VehicleInspectionService, VehicleInspectionType, VehicleMaintenanceService, VehicleMaintenanceType, VehicleService, VehicleStatus, VehicleTripService, VehicleType, VerificationStatus, VideoCallModule, VideoCallRestService, VideoCallSignalingService, VideoCallStateService, VideoCallStatus, VideoCallType, VideoCallWebSocketService, VideoControlsComponent, VideoParticipantComponent, VideoParticipantRole, VideoParticipantStatus, VideoRoomComponent, WarehouseService, WarehouseStockService, WarrantyClaimService, WarrantyClaimStatus, WarrantyContractService, WarrantyStatus, WarrantyType, WaterLevel, WebSocketService, WebhookAdminService, WorkOrderService, WorkOrderSourceType, WorkOrderStatus, WorkPermitCategory, WorkPermitService, WorkPermitStatus, ApprovalWorkflowService as WorkflowService, WorkflowStatus, WorkflowType, YesNo, isBulkSensorMessage, mapHttpError };
11614
+ export { AIScenarioService, AIScenarioType, ActivePermitHolder, ActivityLogService, AgentService, AiFeedbackService, AiProvider, AiService, AiUsageService, AipAnalysisService, AipAssessmentService, AipFinancialService, AipGeographicService, AipNetworkAnalysisService, AipNetworkNodeService, AipPerformanceRecordService, AipPerformanceService, AipPlanService, AipResourceConstraintService, AipResourceService, AipRiskAnalysisService, AipScenarioService, AipSettingsService, AipWorkflowService, AlertDefinitionService, AlertService, AlertSeverity, AlertStatus, AncillaryServiceCrudService, AncillaryServiceStatus, AncillaryServiceType, AnnouncementService, AnnouncementType, AnomalyDetectionService, ApiTokenStatus, AppLanguage, ApprovalStatus, ArticleAdminService, ArticleCategoryService, ArticleService, ArticleTopicService, AssetLifecycleService, AssetLifecycleStage, AssetLifecycleStatus, AssetPhase, AuditEntryService, AuditLogService, AuthInterceptor, AuthService, BackupService, BackupStatus, BaseCrudService, BathymetricSurveyService, BestPracticeCategoryService, BestPracticeService, BidService, BudgetService, BulkOperationService, CAPAStatus, CAPAType, CacheAdminService, CalendarPlanning, CapexProjectService, CatAttachmentCategory, CatAttachmentPhase, CatAttachmentService, CatComponentType, CatDoneBy, CatEquipmentOwner, CatExecutionResultService, CatMachineCondition, CatOutageType, CatPersonnelAssignmentService, CatPlanningEquipmentItemService, CatRecommendedAction, CatSignOffRole, CatSignOffService, CatStatus, CatTestResult, CatTestTrigger, CatTrendVsPrevious, CatTypeOfTest, CatWhereDone, CertificationService, ChatMessageType, ChatRestService, ChatWebSocketService, ChecklistPeriodicity, ChecklistRunningMode, ClientAdminService, ClientApiKeyService, ClientArticleService, ClientInterceptor, ClientOcrService, ClientStatus, ClientUsageService, CmsContentTypeService, CmsDataService, CmsMenuHelper, CommunityCommentService, CommunityPostService, CompanyMaterialService, CompanyMaterialTypeService, CompanyService, ComplianceObligationService, ComplianceSubmissionService, ComplianceSubmissionStatus, ComponentCategory, ComponentChecklistGroupService, ComponentChecklistService, ComponentChecklistTemplateService, ComponentGroupService, ComponentInfoCategory, ComponentInfoService, ComponentInfoStatus, ComponentInfoType, ComponentLocationService, ComponentService, ComponentType, ConditionAssessmentTestService, ConversationType, CorrectiveActionService, CortexEventService, CortexInsightService, CortexNodeService, CortexService, CostAllocation, CountryService, CurtailmentEventService, CurtailmentStatus, CurtailmentType, CustomFieldDefinitionService, CustomFieldService, CustomFieldType, CustomFormService, CustomService, DEFAULT_EXCLUDED_ENTITIES, DashboardService, DataExportService, DatabaseManagerComponent, DatabaseManagerModule, DeferralConstraintRuleService, DeferralDecisionService, DeferralEvaluationService, DepartmentService, DeploymentType, DepreciationMethod, DeviceGatewayService, DiagnosticReportService, DigitalTwinService, DocumentAdminService, DrawingCategoryService, DrawingService, DriverService, DriverStatus, DynamicCrudService, ENTITY_REGISTRY, ENTITY_SERVICE_MAP, ElevationStorageCurveService, EmailAdminService, EmailProviderAdminService, EmailProviderType, EnergyAnalyticsService, EnergyProductionService, EnergySourceType, EntityCommentService, EntitySchemaService, EnvironmentalPermitService, ErpAdminService, ErpAuthType, ErpType, EventNature, EventService, ExportButtonComponent, ExportService, ExtensionEventType, ExtensionService, ExtensionStatus, FailureActionService, FailureCauseService, FailureImpact, FailureLikelihood, FailureRiskLevel, FailureService, FaqCategoryService, FaqService, FeedbackService, FilterParams, FishMonitoringService, FishboneCategory, FontService, FormCategoryService, FormService, FuelRecordService, FuelType, GateControlService, GateControlType, GateSystemService, GateType, GeneratedReportListComponent, GeofenceEventService, GeofenceEventType, GeofenceService, GeofenceType, GoodsReceiptService, GpsLocationService, GridConnectionService, GridConnectionStatus, GridLinkService, GridNodeService, GridService, IdentityProviderAdminService, ImpersonationService, InMemoryTokenStorage, InactiveComponentService, IncidentCategory, IncidentService, IncidentType, IncomingCallComponent, InspectionComponentService, InspectionLevel, InspectionNature, InspectionService, InspectionType, InterventionRequestService, InterventionRequestStatus, InterventionService, InvestmentOptionService, JobTitleService, JsaItemService, JsaStepService, KpiEventService, LOTOBoxStatus, LOTOBoxType, LOTOLockRole, LOTOLockStatus, LOTOLockType, LOTOOverallStatus, LaboratoryResultService, LayoutType, LearningModuleCategoryService, LessonLearnedOrigin, LessonLearnedService, LessonLearnedStatus, LicenseService, LivekitRoomService, LocationService, LogService, LoginHistoryService, LoginRequestService, MODULE_LABELS, MaintenanceJsaService, MaintenancePlanService, MaintenanceRecordService, MaintenanceStatus, MaintenanceType, ManualReadingService, MaterialCategoryService, MaterialConsumableCategoryService, MaterialConsumableHistoryService, MaterialConsumableService, MaterialInstrumentHistoryService, MaterialInstrumentService, MaterialItemHistoryService, MaterialItemService, MaterialToolingCategoryService, MaterialToolingHistoryService, MaterialToolingService, MeasurementService, MeasurementUnitService, MeasurementUnitSystem, MessageChannel, MessageService, MessagingProviderAdminService, MessagingProviderType, MeteringParameterStatus, MeteringParameterSubType, MeteringParameterType, MiHistoryService, MiRequestService, MigrationStatus, ModelFileService, ModelService, ModuleLearningService, ModuleService, ModuleVideoService, MonitoringLocationType, MonitoringMethod, NoteService, ObjectBrowserComponent, ObligationFrequency, ObligationStatus, ObligationType, ObservationCategory, ObservationSeverity, OcrProcessingStatus, OperatingEventService, OperatingMode, OperationalObservationService, OutageEventService, OutageResourceService, OutageStatus, OutageType, PC2PermitSubType, ParticipantRole, Periodicity, PermissionService, PermitOrigin, PermitStatus, PermitType, PlantDataService, PlantSize, PlantStatus, PlatformAdminRole, PlatformAdminService, PlatformAuthService, PlatformNotificationService, PlatformWebhookService, PluginService, PremiseType, PresenceStatus, PresetProvider, Priority, ProfilePermissionService, ProfileService, ProjectService, PropertiesGroupService, PropertiesTemplateService, PropertyService, PropertyTemplateService, ProviderType, ProvisioningStep, PurchaseOrderService, QueryEditorComponent, QueryExecutorService, QueryToolbarComponent, QueueAdminService, RCAMethodology, RCAStatus, RcaEventCause, RcaWorkOrderType, ReadingType, RealtimeEventService, ReasonForInspection, ReasonForIntervention, RechargeRequestService, RecordDetailComponent, RecurringEventService, RefurbishmentService, Region, RegulatoryUpdateService, RegulatoryUpdateType, ReportDefinitionFormComponent, ReportDefinitionListComponent, ReportGenerateDialogComponent, ReportStatsComponent, ReportTemplateListComponent, ReportingModule, ReportingService, ReservoirDataService, ReservoirTimeSeriesService, ReservoirWebSocketService, ResourceCategoryService, ResourceService, ResourceTopicService, ResultsGridComponent, RoleAdminService, RoleService, RoleType, RoomService, RootCauseAnalysisService, SampleType, SandboxAccessLevel, SandboxAdminService, SandboxService, SandboxStatus, ScheduledReportService, SchedulerAdminService, SearchService, SedimentManagementPlanService, SedimentRemovalOperationService, SensorService, SensorType, SiteAssessmentService, SlaBreachRecordService, SlaPolicyService, SparePartService, SsoAuthService, StockCountService, StockMovementService, SubAssemblyService, SubscriptionPlan, SubscriptionService, SubscriptionStatus, SupplierService, SurveyMethod, SyncDirection, SystemHealthService, SystemicRiskAssessmentService, TGM_SDK_CONFIG, TableDataViewerComponent, TableStructureComponent, TaskRunStatus, TermsOfUseService, TgFileService, TgFolderService, TgmApiError, TgmEntityType, TgmHttpClient, TgmSdkModule, ThresholdAlertRuleService, TicketPriority, TicketService, TicketStatus, TimeEntryService, TodoService, TotpService, TrackedEntityService, TrackedEntityType, TrackingStatus, TrainingCertificateService, TripStatus, TurbineTypeService, UnitService, UnitShutdownHistoryService, UnitStatus, UploadService, UserAdminService, UserLearningService, UserNotificationService, UserPermissionService, UserProfileService, UserService, VehicleInspectionService, VehicleInspectionType, VehicleMaintenanceService, VehicleMaintenanceType, VehicleService, VehicleStatus, VehicleTripService, VehicleType, VerificationStatus, VideoCallModule, VideoCallRestService, VideoCallSignalingService, VideoCallStateService, VideoCallStatus, VideoCallType, VideoCallWebSocketService, VideoControlsComponent, VideoParticipantComponent, VideoParticipantRole, VideoParticipantStatus, VideoRoomComponent, WarehouseService, WarehouseStockService, WarrantyClaimService, WarrantyClaimStatus, WarrantyContractService, WarrantyStatus, WarrantyType, WaterLevel, WebAuthnService, WebSocketService, WebhookAdminService, WorkOrderService, WorkOrderSourceType, WorkOrderStatus, WorkPermitCategory, WorkPermitService, WorkPermitStatus, ApprovalWorkflowService as WorkflowService, WorkflowStatus, WorkflowType, YesNo, isBulkSensorMessage, mapHttpError };
11380
11615
  //# sourceMappingURL=en-solutions-tgm-client-sdk.mjs.map