@cbm-common/cbm-types 0.0.347 → 0.0.349

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 (21) hide show
  1. package/lib/components/accounting-seat/directives/drop-down-menu.directive.d.ts +13 -0
  2. package/lib/components/accounting-seat/directives/drop-down.directive.d.ts +10 -0
  3. package/lib/components/add-client/add-client.d.ts +0 -12
  4. package/lib/components/add-provider/add-provider.d.ts +6 -0
  5. package/lib/components/add-provider/add-provider.model.d.ts +4 -0
  6. package/lib/components/add-provider/constants.d.ts +7 -0
  7. package/lib/components/record-detail-metadata/components/options/options.d.ts +13 -0
  8. package/lib/components/record-detail-metadata/directives/drop-down-menu.directive.d.ts +13 -0
  9. package/lib/components/record-detail-metadata/directives/drop-down.directive.d.ts +9 -0
  10. package/lib/domain/models/provider.domain.model.d.ts +9 -0
  11. package/lib/domain/models/sales-pending-document.domain.model.d.ts +91 -0
  12. package/lib/domain/repositories/sales-pending-document.domain.repository.d.ts +8 -0
  13. package/lib/domain/services/web-socket/ai-web-socket.model.d.ts +39 -0
  14. package/lib/domain/services/web-socket/ai-web-socket.service.d.ts +46 -0
  15. package/lib/environments/environment.d.ts +1 -0
  16. package/lib/environments/environment.development.d.ts +1 -0
  17. package/lib/infrastructure/repositories/blanket-agreement-category-service..infrastructure.repository.d.ts +7 -0
  18. package/lib/infrastructure/repositories/sales-pending-document.infrastructure.repository.d.ts +5 -0
  19. package/lib/infrastructure/services/sales-pending-document.infrastructure.service.d.ts +9 -0
  20. package/package.json +1 -1
  21. package/public-api.d.ts +2 -0
@@ -0,0 +1,13 @@
1
+ import { AfterViewInit, ElementRef, OnChanges, Renderer2, SimpleChanges } from '@angular/core';
2
+ export declare class DropdownMenuDirective implements OnChanges, AfterViewInit {
3
+ private element;
4
+ private renderer2;
5
+ hiddenMenu: import("@angular/core").InputSignal<boolean>;
6
+ hiddenMenuOp: import("@angular/core").WritableSignal<boolean>;
7
+ constructor(element: ElementRef, renderer2: Renderer2);
8
+ ngAfterViewInit(): void;
9
+ ngOnChanges(changes: SimpleChanges): void;
10
+ toggle(event: Event): void;
11
+ private toggleMenu;
12
+ initStyle(): void;
13
+ }
@@ -0,0 +1,10 @@
1
+ import { AfterViewInit, ElementRef, Renderer2 } from '@angular/core';
2
+ export declare class DropdownDirective implements AfterViewInit {
3
+ private elementRef;
4
+ private renderer;
5
+ private isOpen;
6
+ constructor(elementRef: ElementRef, renderer: Renderer2);
7
+ ngAfterViewInit(): void;
8
+ toggleDropdown(event: MouseEvent): void;
9
+ closeDropdown(event: MouseEvent): void;
10
+ }
@@ -94,16 +94,6 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
94
94
  saveOption: import("@angular/core").WritableSignal<TSaveOptions | null>;
95
95
  readonly carDelear: import("@angular/core").Signal<boolean>;
96
96
  readonly pms: import("@angular/core").Signal<boolean>;
97
- readonly CAR_DEALER_TYPES: readonly [{
98
- readonly label: "Empleado privado";
99
- readonly value: "privat_sector_employee";
100
- }, {
101
- readonly label: "Empleado publico";
102
- readonly value: "civil_servant";
103
- }, {
104
- readonly label: "Sociedad";
105
- readonly value: "society";
106
- }];
107
97
  modalConfirmRef: import("@angular/core").Signal<CbmModalConfirmComponent | undefined>;
108
98
  clientForm: FormGroup<{
109
99
  documentType: FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
@@ -128,7 +118,6 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
128
118
  requestCredit: FormControl<string | null>;
129
119
  reasonOfCredit: FormControl<string | null>;
130
120
  profession: FormControl<CbmSettingsProfessionsModel.ListResponse.Item | null>;
131
- carDealerType: FormControl<"society" | "privat_sector_employee" | "civil_servant" | null>;
132
121
  carDealerValue: FormControl<string | null>;
133
122
  }>;
134
123
  ngOnInit(): void;
@@ -155,7 +144,6 @@ export declare class CbmAddClientComponent implements OnInit, AfterViewInit {
155
144
  get creditApplicationControl(): FormControl<boolean>;
156
145
  get requestCreditControl(): FormControl<string | null>;
157
146
  get professionControl(): FormControl<CbmSettingsProfessionsModel.ListResponse.Item | null>;
158
- get carDealerTypeControl(): FormControl<"society" | "privat_sector_employee" | "civil_servant" | null>;
159
147
  get carDealerValueControl(): FormControl<string | null>;
160
148
  private fetchGeneralSettingsConfiguration;
161
149
  private syncConfigurationDrivenControls;
@@ -71,12 +71,14 @@ export declare class CbmAddProviderComponent {
71
71
  readonly VENTA_A_CONSUMIDOR_FINAL: "07";
72
72
  readonly IDENTIFICACION_DEL_EXTERIOR: "08";
73
73
  };
74
+ SUBJECT_CLASSES: CbmAddProviderModel.SubjectClass[];
74
75
  previousDealerConfiguration: import("@angular/core").WritableSignal<boolean>;
75
76
  documentNumberDisplay: FormControl<string | null>;
76
77
  providerForm: FormGroup<{
77
78
  documentType: FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
78
79
  documentNumber: FormControl<string | null>;
79
80
  category: FormControl<CbmProviderGroupModel.ListAsTreeResponse.Category | null>;
81
+ subjectClass: FormControl<CbmAddProviderModel.SubjectClass | null>;
80
82
  businessName: FormControl<string | null>;
81
83
  tradename: FormControl<string | null>;
82
84
  address: FormControl<string | null>;
@@ -89,11 +91,14 @@ export declare class CbmAddProviderComponent {
89
91
  isRelatedParty: FormControl<boolean>;
90
92
  economicActivitySelector: FormControl<CbmEconomicActivitiesDomainModel.ListResponse.Data | null>;
91
93
  }>;
94
+ subjectClass: import("@angular/core").Signal<CbmAddProviderModel.SubjectClass | null>;
95
+ filteredDocumentTypes: import("@angular/core").Signal<CbmDocumentTypeModel.ListResponse.Data[]>;
92
96
  economicActivity$: PaginatedListService<CbmEconomicActivitiesDomainModel.ListResponse, CbmEconomicActivitiesDomainModel.ListParams, CbmEconomicActivitiesDomainModel.ListResponse.Data[]>;
93
97
  ngOnInit(): void;
94
98
  get documentTypeControl(): FormControl<CbmDocumentTypeModel.ListResponse.Data | null>;
95
99
  get documentNumberControl(): FormControl<string | null>;
96
100
  get categoryControl(): FormControl<CbmProviderGroupModel.ListAsTreeResponse.Category | null>;
101
+ get subjectClassControl(): FormControl<CbmAddProviderModel.SubjectClass | null>;
97
102
  get businessNameControl(): FormControl<string | null>;
98
103
  get tradenameControl(): FormControl<string | null>;
99
104
  get addressControl(): FormControl<string | null>;
@@ -110,6 +115,7 @@ export declare class CbmAddProviderComponent {
110
115
  }, b: {
111
116
  _id: string;
112
117
  }): boolean;
118
+ private isDocumentTypeAllowed;
113
119
  documentNumberValidator(): ValidatorFn;
114
120
  asyncDocumentNumberValidator(): AsyncValidatorFn;
115
121
  noWhitespaceValidator(): ValidatorFn;
@@ -3,4 +3,8 @@ export declare namespace CbmAddProviderModel {
3
3
  visualization: 'component' | 'modal';
4
4
  show_title: boolean;
5
5
  }
6
+ interface SubjectClass {
7
+ code: string;
8
+ description: string;
9
+ }
6
10
  }
@@ -1,3 +1,4 @@
1
+ import { CbmAddProviderModel } from "./add-provider.model";
1
2
  export declare const DOCUMENT_TYPES_CODES: {
2
3
  readonly RUC: "04";
3
4
  readonly CEDULA: "05";
@@ -5,3 +6,9 @@ export declare const DOCUMENT_TYPES_CODES: {
5
6
  readonly VENTA_A_CONSUMIDOR_FINAL: "07";
6
7
  readonly IDENTIFICACION_DEL_EXTERIOR: "08";
7
8
  };
9
+ export declare const SUBJECT_CLASS_CODES: {
10
+ readonly PERSONA_NATURAL: "01";
11
+ readonly PERSONA_JURIDICA: "02";
12
+ };
13
+ export declare const SUBJECT_CLASSES: CbmAddProviderModel.SubjectClass[];
14
+ export declare const PERSONA_JURIDICA_DOCUMENT_TYPE_CODES: string[];
@@ -0,0 +1,13 @@
1
+ import { WritableSignal } from '@angular/core';
2
+ import { Router, ActivatedRoute, Params } from '@angular/router';
3
+ import { CbmRecordDetailMetadataModel } from "../../types";
4
+ export declare class OptionsComponent {
5
+ private router;
6
+ private route;
7
+ constructor(router: Router, route: ActivatedRoute);
8
+ metadata: import("@angular/core").InputSignal<CbmRecordDetailMetadataModel.metadata | null>;
9
+ options: import("@angular/core").InputSignal<CbmRecordDetailMetadataModel.options[] | undefined>;
10
+ optionInSignals: WritableSignal<WritableSignal<CbmRecordDetailMetadataModel.options>[]>;
11
+ executeFunction(option: WritableSignal<CbmRecordDetailMetadataModel.options>): void;
12
+ navigate(routerLink?: string, queryParams?: Params): void;
13
+ }
@@ -0,0 +1,13 @@
1
+ import { AfterViewInit, ElementRef, OnChanges, Renderer2, SimpleChanges } from '@angular/core';
2
+ export declare class DropdownMenuDirective implements OnChanges, AfterViewInit {
3
+ private element;
4
+ private renderer2;
5
+ hiddenMenu: import("@angular/core").InputSignal<boolean>;
6
+ hiddenMenuOp: import("@angular/core").WritableSignal<boolean>;
7
+ constructor(element: ElementRef, renderer2: Renderer2);
8
+ ngAfterViewInit(): void;
9
+ ngOnChanges(changes: SimpleChanges): void;
10
+ toggle(event: Event): void;
11
+ private toggleMenu;
12
+ initStyle(): void;
13
+ }
@@ -0,0 +1,9 @@
1
+ import { ElementRef, Renderer2 } from '@angular/core';
2
+ export declare class DropdownDirective {
3
+ private elementRef;
4
+ private renderer;
5
+ private isOpen;
6
+ constructor(elementRef: ElementRef, renderer: Renderer2);
7
+ toggleDropdown(event: MouseEvent): void;
8
+ closeDropdown(event: MouseEvent): void;
9
+ }
@@ -75,6 +75,9 @@ export declare namespace CbmProviderModel {
75
75
  payment_destination_country_name?: string;
76
76
  double_taxation_treaty_applies?: boolean;
77
77
  legal_withholding_applies?: string;
78
+ is_related_party?: boolean;
79
+ subject_class_code?: string;
80
+ subject_class_description?: string;
78
81
  }
79
82
  }
80
83
  interface GetOneResponse {
@@ -142,6 +145,8 @@ export declare namespace CbmProviderModel {
142
145
  economic_activity_id?: string;
143
146
  economic_activity_code?: string;
144
147
  is_related_party?: boolean;
148
+ subject_class_code?: string;
149
+ subject_class_description?: string;
145
150
  }
146
151
  export namespace Data {
147
152
  interface ProviderContact {
@@ -216,6 +221,8 @@ export declare namespace CbmProviderModel {
216
221
  economic_activity_id?: string;
217
222
  economic_activity_code?: string;
218
223
  is_related_party?: boolean;
224
+ subject_class_code: string;
225
+ subject_class_description: string;
219
226
  }
220
227
  interface UpdateBody {
221
228
  category_provider_id?: string;
@@ -235,6 +242,8 @@ export declare namespace CbmProviderModel {
235
242
  employee_salary?: number;
236
243
  economic_activity_id?: string;
237
244
  economic_activity_code?: string;
245
+ subject_class_code?: string;
246
+ subject_class_description?: string;
238
247
  }
239
248
  interface UpdateManagementBody {
240
249
  bank_id?: string;
@@ -0,0 +1,91 @@
1
+ export declare namespace CbmSalesPendingDocumentModel {
2
+ type TTypeEstablishment = 'matrix' | 'branch';
3
+ export interface ListParams {
4
+ page: number;
5
+ size: number;
6
+ document_number?: string;
7
+ date_end?: number;
8
+ date_begin?: number;
9
+ client_id?: string;
10
+ client_branch_id?: string;
11
+ type?: string;
12
+ }
13
+ export interface ListResponse {
14
+ success: boolean;
15
+ pageNum: number;
16
+ pageSize: number;
17
+ pages: number;
18
+ total: number;
19
+ totales: ListResponse.totales;
20
+ items: ListResponse.Item[];
21
+ }
22
+ export namespace ListResponse {
23
+ interface Item {
24
+ _id: string;
25
+ created_at: number;
26
+ document_nomenclature: string;
27
+ document_emission_point_number: string;
28
+ document_sequence: string;
29
+ balance: number;
30
+ client_id: string;
31
+ client_payment_deadline?: number;
32
+ client_credit_limit?: number;
33
+ client_business_name: string;
34
+ client_trade_name: string;
35
+ client_document_number: string;
36
+ client_credit_application: boolean;
37
+ client_price_list_id: string;
38
+ client_price_list_code: string;
39
+ client_price_list_name: string;
40
+ client_document_type_id: string;
41
+ client_document_type_name: string;
42
+ client_document_type_code: string;
43
+ client_category_id: string;
44
+ client_category_name: string;
45
+ client_branch_id: string;
46
+ client_branch_code: string;
47
+ client_branch_name: string;
48
+ client_branch_address: string;
49
+ client_branch_email: string[];
50
+ client_branch_phone_code?: string;
51
+ client_branch_phone?: string;
52
+ client_branch_cellphone?: string;
53
+ client_branch_type_establishment: `${TTypeEstablishment}`;
54
+ client_branch_province_id?: string;
55
+ client_branch_province_code?: string;
56
+ client_branch_province_name?: string;
57
+ client_branch_canton_id?: string;
58
+ client_branch_canton_code?: string;
59
+ client_branch_canton_name?: string;
60
+ client_branch_parish_id?: string;
61
+ client_branch_parish_code?: string;
62
+ client_branch_parish_name?: string;
63
+ client_branch_longitude?: number;
64
+ client_branch_latitude?: number;
65
+ client_branch_seller_id: string;
66
+ client_branch_seller_identification_number: string;
67
+ client_branch_seller_full_name: string;
68
+ client_branch_seller_address: string;
69
+ client_branch_seller_email: string[];
70
+ client_branch_seller_cellphone: string;
71
+ client_branch_contact_id?: string;
72
+ client_branch_contact_identification_number?: string;
73
+ client_branch_contact_full_name?: string;
74
+ client_branch_contact_cellphone?: string;
75
+ client_branch_contact_email?: string[];
76
+ new_document_number: string;
77
+ date: number;
78
+ type: string;
79
+ checked?: boolean;
80
+ }
81
+ interface totales {
82
+ total_retention?: number;
83
+ total_down_payment?: number;
84
+ total_credit_note?: number;
85
+ total_initial_balance_retention?: number;
86
+ total_initial_balance_down_payment?: number;
87
+ total_initial_balance_credit_note?: number;
88
+ }
89
+ }
90
+ export {};
91
+ }
@@ -0,0 +1,8 @@
1
+ import { Observable } from 'rxjs';
2
+ import { CbmSalesPendingDocumentModel } from '../models/sales-pending-document.domain.model';
3
+ import { ICbmSalesPendingDocumentRepository } from '../../infrastructure/repositories/sales-pending-document.infrastructure.repository';
4
+ export declare class CbmSalesPendingDocumentRepository implements ICbmSalesPendingDocumentRepository {
5
+ private service;
6
+ constructor(service: ICbmSalesPendingDocumentRepository);
7
+ list(params: CbmSalesPendingDocumentModel.ListParams): Observable<CbmSalesPendingDocumentModel.ListResponse>;
8
+ }
@@ -0,0 +1,39 @@
1
+ /** Contrato de `ai-web-socket` (namespace `/ai`): tiempo real del chat de IA. Ver cbm-backend/ai-web-socket/README.md. */
2
+ export declare namespace CbmAiWebSocketModel {
3
+ type RunStatus = 'running' | 'done' | 'error' | 'cancelled' | 'interrupted';
4
+ /** Evento numerado de una corrida; `event` es el JSON del SSE de ai-gateway (más `run-end`), sin interpretar. */
5
+ interface RunEnvelope {
6
+ seq: number;
7
+ /** Hora del servidor (epoch ms). */
8
+ at: number;
9
+ event: unknown;
10
+ }
11
+ /** `run:events`: eventos en vivo de una corrida vigilada. */
12
+ interface RunEvents {
13
+ runId: string;
14
+ events: RunEnvelope[];
15
+ }
16
+ /** Acuse de `run:watch`. `truncated`: hay más eventos; repetir con `afterSeq` = último `seq` recibido. */
17
+ type WatchAck = {
18
+ ok: true;
19
+ status: RunStatus;
20
+ lastSeq: number;
21
+ events: RunEnvelope[];
22
+ truncated: boolean;
23
+ } | {
24
+ ok: false;
25
+ error: string;
26
+ };
27
+ interface ActiveRun {
28
+ runId: string;
29
+ conversationId?: string;
30
+ status: RunStatus;
31
+ startedAt: number;
32
+ lastSeq: number;
33
+ }
34
+ /** Acuse de `runs:active`. */
35
+ interface ActiveRunsAck {
36
+ ok: boolean;
37
+ runs?: ActiveRun[];
38
+ }
39
+ }
@@ -0,0 +1,46 @@
1
+ import { ApplicationRef } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { CbmAuthReactiveService } from '../auth-reactive.domain.service';
4
+ import { CbmAiWebSocketModel } from './ai-web-socket.model';
5
+ /** `name` del error con que se rechazan los mensajes en espera cuando el socket se corta (se vuelve a pedir al reconectar). */
6
+ export declare const CBM_AI_SOCKET_DISCONNECTED = "AiSocketDisconnected";
7
+ /**
8
+ * Conexión con `ai-web-socket` (namespace `/ai`), el tiempo real del chat de IA: el backend ejecuta la respuesta en segundo plano
9
+ * (`POST /chat/runs` de ai-gateway) y los eventos llegan por aquí. Es otro servicio que `ws.cbmerp.com`, por eso tiene su propio
10
+ * `Socket` (se crea sin conectar; `connect()` abre la conexión). Solo transporte: orden, repetidos y reintentos de los eventos
11
+ * los resuelve quien lo consume con `seq`.
12
+ *
13
+ * Se autentica con el token global del ERP, leído en cada (re)conexión. Sin sesión el servidor rechaza con `connect_error`
14
+ * `unauthorized`; si la sesión se cierra llega `session:expired` y el servidor desconecta.
15
+ */
16
+ export declare class CbmAiWebSocketService {
17
+ private readonly authReactive;
18
+ private readonly socket;
19
+ private readonly pending;
20
+ constructor(appRef: ApplicationRef, authReactive: CbmAuthReactiveService);
21
+ get connected(): boolean;
22
+ /** Abre la conexión (si ya está abierta o conectándose no hace nada). */
23
+ connect(): void;
24
+ /** Cierra la conexión y no reconecta. */
25
+ disconnect(): void;
26
+ onConnect(): Observable<void>;
27
+ /** Motivo del corte (`io server disconnect`: lo cerró el servidor y socket.io NO reconecta solo). */
28
+ onDisconnect(): Observable<string>;
29
+ /** Mensaje del fallo al conectar (`unauthorized` = sin sesión). Se repite en cada intento fallido de reconexión. */
30
+ onConnectError(): Observable<string>;
31
+ onSessionExpired(): Observable<void>;
32
+ /** Eventos en vivo de las corridas vigiladas (`run:events`). */
33
+ onRunEvents(): Observable<CbmAiWebSocketModel.RunEvents>;
34
+ /**
35
+ * Se une a una corrida y devuelve lo perdido desde `afterSeq` (0 = todo). Rechaza con `name === CBM_AI_SOCKET_DISCONNECTED` si el
36
+ * socket no está conectado o se corta mientras espera, y con otro error si el servidor no acusa a tiempo.
37
+ */
38
+ watchRun(runId: string, afterSeq?: number): Promise<CbmAiWebSocketModel.WatchAck>;
39
+ /** Deja de recibir eventos de la corrida (no la cancela). */
40
+ unwatchRun(runId: string): void;
41
+ /** Corridas en curso del usuario (retomar al recargar o desde otra pestaña). */
42
+ activeRuns(): Promise<CbmAiWebSocketModel.ActiveRunsAck>;
43
+ private request;
44
+ private rejectPending;
45
+ private disconnectedError;
46
+ }
@@ -23,6 +23,7 @@ export declare const environment: {
23
23
  readonly msRrhhEc: string;
24
24
  readonly msAssistant: string;
25
25
  webSocket: string;
26
+ aiWebSocket: string;
26
27
  hostAuth: string;
27
28
  hostApp: string;
28
29
  sessionTokenUser: string | null;
@@ -23,6 +23,7 @@ export declare const environment: {
23
23
  readonly msRrhhEc: string;
24
24
  readonly msAssistant: string;
25
25
  webSocket: string;
26
+ aiWebSocket: string;
26
27
  hostAuth: string;
27
28
  hostApp: string;
28
29
  manifestPath: string;
@@ -0,0 +1,7 @@
1
+ import { Observable } from "rxjs";
2
+ import { CbmBlanketAgreementCategoryServiceModel } from "../../domain/models/blanket-agreement-category-service.domain.model";
3
+ export interface ICbmBlanketAgreementCategoryServiceRepository {
4
+ list(params: CbmBlanketAgreementCategoryServiceModel.ListParams): Observable<CbmBlanketAgreementCategoryServiceModel.ListResponse>;
5
+ save(data: CbmBlanketAgreementCategoryServiceModel.SaveBody): Observable<CbmBlanketAgreementCategoryServiceModel.ConfirmResponse>;
6
+ delete(id: string): Observable<CbmBlanketAgreementCategoryServiceModel.ConfirmResponse>;
7
+ }
@@ -0,0 +1,5 @@
1
+ import { Observable } from 'rxjs';
2
+ import { CbmSalesPendingDocumentModel } from '../../domain/models/sales-pending-document.domain.model';
3
+ export interface ICbmSalesPendingDocumentRepository {
4
+ list(params: CbmSalesPendingDocumentModel.ListParams): Observable<CbmSalesPendingDocumentModel.ListResponse>;
5
+ }
@@ -0,0 +1,9 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { CbmSalesPendingDocumentModel } from '../../domain/models/sales-pending-document.domain.model';
4
+ export declare class CbmSalesPendingDocumentService {
5
+ private http;
6
+ constructor(http: HttpClient);
7
+ private readonly url;
8
+ list(params: CbmSalesPendingDocumentModel.ListParams): Observable<CbmSalesPendingDocumentModel.ListResponse>;
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cbm-common/cbm-types",
3
- "version": "0.0.347",
3
+ "version": "0.0.349",
4
4
  "main": "index.js",
5
5
  "types": "public-api.d.ts",
6
6
  "exports": {
package/public-api.d.ts CHANGED
@@ -37,6 +37,8 @@ export * from './lib/domain/services/notification/notification.service';
37
37
  //#region web socket service
38
38
  export * from './lib/domain/services/web-socket/web-socket.model';
39
39
  export * from './lib/domain/services/web-socket/web-socket.service';
40
+ export * from './lib/domain/services/web-socket/ai-web-socket.model';
41
+ export * from './lib/domain/services/web-socket/ai-web-socket.service';
40
42
 
41
43
  //#region user repository
42
44
  export * from './lib/domain/repositories/user.domain.repository';