@blackcode_sa/metaestetics-api 1.5.11 → 1.5.13

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.
@@ -74,23 +74,23 @@ interface Category {
74
74
  }
75
75
 
76
76
  /**
77
- * Proizvod koji se koristi u procedurama
78
- * Može biti potrošni materijal, oprema ili bilo koji drugi proizvod potreban za izvođenje procedure
77
+ * Product used in procedures
78
+ * Can be consumables, equipment, or any other product needed for performing procedures
79
79
  *
80
- * @property id - Jedinstveni identifikator proizvoda
81
- * @property name - Naziv proizvoda
82
- * @property description - Detaljan opis proizvoda i njegove namene
83
- * @property brandId - ID brenda koji proizvodi ovaj proizvod
84
- * @property technologyId - ID tehnologije sa kojom se proizvod koristi
85
- * @property technicalDetails - Tehnički detalji i specifikacije proizvoda
86
- * @property warnings - Lista upozorenja vezanih za korišćenje proizvoda
87
- * @property dosage - Informacije o doziranju (ako je primenljivo)
88
- * @property composition - Sastav proizvoda
89
- * @property indications - Lista indikacija za korišćenje
90
- * @property contraindications - Lista kontraindikacija
91
- * @property isActive - Da li je proizvod aktivan u sistemu
92
- * @property createdAt - Datum kreiranja
93
- * @property updatedAt - Datum poslednjeg ažuriranja
80
+ * @property id - Unique identifier of the product
81
+ * @property name - Name of the product
82
+ * @property description - Detailed description of the product and its purpose
83
+ * @property brandId - ID of the brand that manufactures this product
84
+ * @property technologyId - ID of the technology this product is used with
85
+ * @property technicalDetails - Technical details and specifications
86
+ * @property warnings - List of warnings related to product use
87
+ * @property dosage - Dosage information (if applicable)
88
+ * @property composition - Product composition
89
+ * @property indications - List of indications for use
90
+ * @property contraindications - List of contraindications
91
+ * @property isActive - Whether the product is active in the system
92
+ * @property createdAt - Creation date
93
+ * @property updatedAt - Last update date
94
94
  */
95
95
  interface Product {
96
96
  id?: string;
@@ -108,6 +108,47 @@ interface Product {
108
108
  indications?: string[];
109
109
  contraindications?: string[];
110
110
  }
111
+ /**
112
+ * Interface for the ProductService class
113
+ */
114
+ interface IProductService {
115
+ /**
116
+ * Creates a new product
117
+ * @param technologyId - ID of the technology this product is used with
118
+ * @param brandId - ID of the brand that manufactures this product
119
+ * @param product - Product data
120
+ */
121
+ create(technologyId: string, brandId: string, product: Omit<Product, "id" | "createdAt" | "updatedAt" | "brandId" | "technologyId">): Promise<Product>;
122
+ /**
123
+ * Gets all products for a technology
124
+ * @param technologyId - ID of the technology
125
+ */
126
+ getAllByTechnology(technologyId: string): Promise<Product[]>;
127
+ /**
128
+ * Gets all products for a brand
129
+ * @param brandId - ID of the brand
130
+ */
131
+ getAllByBrand(brandId: string): Promise<Product[]>;
132
+ /**
133
+ * Updates a product
134
+ * @param technologyId - ID of the technology
135
+ * @param productId - ID of the product to update
136
+ * @param product - Updated product data
137
+ */
138
+ update(technologyId: string, productId: string, product: Partial<Omit<Product, "id" | "createdAt" | "brandId" | "technologyId">>): Promise<Product | null>;
139
+ /**
140
+ * Deletes a product (soft delete)
141
+ * @param technologyId - ID of the technology
142
+ * @param productId - ID of the product to delete
143
+ */
144
+ delete(technologyId: string, productId: string): Promise<void>;
145
+ /**
146
+ * Gets a product by ID
147
+ * @param technologyId - ID of the technology
148
+ * @param productId - ID of the product
149
+ */
150
+ getById(technologyId: string, productId: string): Promise<Product | null>;
151
+ }
111
152
 
112
153
  /**
113
154
  * Jedinica mere za vremenski period
@@ -521,40 +562,24 @@ interface TechnologyRequirements {
521
562
  * @property updatedAt - Last update date
522
563
  */
523
564
  interface Technology {
524
- /** Jedinstveni identifikator tehnologije (automatski generisan od strane Firestore) */
525
565
  id?: string;
526
- /** Naziv tehnologije */
527
566
  name: string;
528
- /** Detaljan opis tehnologije */
529
567
  description: string;
530
- /** Familija procedura kojoj tehnologija pripada */
531
568
  family: ProcedureFamily;
532
- /** ID kategorije kojoj tehnologija pripada */
533
569
  categoryId: string;
534
- /** ID potkategorije kojoj tehnologija pripada */
535
570
  subcategoryId: string;
536
- /** Tehnički detalji i specifikacije */
537
571
  technicalDetails?: string;
538
- /** Zahtevi pre i posle tretmana */
539
572
  requirements: {
540
573
  pre: Requirement[];
541
574
  post: Requirement[];
542
575
  };
543
- /** Apsolutne kontraindikacije koje sprečavaju tretman */
544
576
  blockingConditions: BlockingCondition[];
545
- /** Relativne kontraindikacije koje zahtevaju posebnu pažnju */
546
577
  contraindications: Contraindication[];
547
- /** Očekivane dobrobiti tretmana */
548
578
  benefits: TreatmentBenefit[];
549
- /** Potrebna sertifikacija za korišćenje tehnologije */
550
579
  certificationRequirement: CertificationRequirement;
551
- /** Dokumentacioni šabloni potrebni za ovu tehnologiju */
552
580
  documentationTemplates?: DocumentTemplate[];
553
- /** Da li je tehnologija trenutno aktivna */
554
581
  isActive: boolean;
555
- /** Datum kreiranja */
556
582
  createdAt: Date;
557
- /** Datum poslednjeg ažuriranja */
558
583
  updatedAt: Date;
559
584
  }
560
585
 
@@ -1755,8 +1780,9 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
1755
1780
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1756
1781
  isActive: z.ZodOptional<z.ZodBoolean>;
1757
1782
  }, "strip", z.ZodTypeAny, {
1758
- title?: string | undefined;
1783
+ isActive?: boolean | undefined;
1759
1784
  description?: string | undefined;
1785
+ title?: string | undefined;
1760
1786
  elements?: ({
1761
1787
  type: DocumentElementType.HEADING;
1762
1788
  text: string;
@@ -1824,10 +1850,10 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
1824
1850
  maxFileSizeMB?: number | undefined;
1825
1851
  })[] | undefined;
1826
1852
  tags?: string[] | undefined;
1827
- isActive?: boolean | undefined;
1828
1853
  }, {
1829
- title?: string | undefined;
1854
+ isActive?: boolean | undefined;
1830
1855
  description?: string | undefined;
1856
+ title?: string | undefined;
1831
1857
  elements?: ({
1832
1858
  type: DocumentElementType.HEADING;
1833
1859
  text: string;
@@ -1895,7 +1921,6 @@ declare const updateDocumentTemplateSchema: z.ZodObject<{
1895
1921
  maxFileSizeMB?: number | undefined;
1896
1922
  })[] | undefined;
1897
1923
  tags?: string[] | undefined;
1898
- isActive?: boolean | undefined;
1899
1924
  }>;
1900
1925
  declare const documentTemplateSchema: z.ZodObject<{
1901
1926
  id: z.ZodString;
@@ -2165,6 +2190,9 @@ declare const documentTemplateSchema: z.ZodObject<{
2165
2190
  isActive: z.ZodBoolean;
2166
2191
  }, "strip", z.ZodTypeAny, {
2167
2192
  id: string;
2193
+ createdAt: number;
2194
+ updatedAt: number;
2195
+ isActive: boolean;
2168
2196
  title: string;
2169
2197
  elements: ({
2170
2198
  type: DocumentElementType.HEADING;
@@ -2244,15 +2272,15 @@ declare const documentTemplateSchema: z.ZodObject<{
2244
2272
  allowedFileTypes?: string[] | undefined;
2245
2273
  maxFileSizeMB?: number | undefined;
2246
2274
  })[];
2247
- isActive: boolean;
2248
- createdAt: number;
2249
- updatedAt: number;
2250
2275
  createdBy: string;
2251
2276
  version: number;
2252
2277
  description?: string | undefined;
2253
2278
  tags?: string[] | undefined;
2254
2279
  }, {
2255
2280
  id: string;
2281
+ createdAt: number;
2282
+ updatedAt: number;
2283
+ isActive: boolean;
2256
2284
  title: string;
2257
2285
  elements: ({
2258
2286
  type: DocumentElementType.HEADING;
@@ -2332,9 +2360,6 @@ declare const documentTemplateSchema: z.ZodObject<{
2332
2360
  allowedFileTypes?: string[] | undefined;
2333
2361
  maxFileSizeMB?: number | undefined;
2334
2362
  })[];
2335
- isActive: boolean;
2336
- createdAt: number;
2337
- updatedAt: number;
2338
2363
  createdBy: string;
2339
2364
  version: number;
2340
2365
  description?: string | undefined;
@@ -2404,10 +2429,10 @@ declare const requirementSchema: z.ZodObject<{
2404
2429
  importance: z.ZodEnum<["low", "medium", "high"]>;
2405
2430
  isActive: z.ZodDefault<z.ZodBoolean>;
2406
2431
  }, "strip", z.ZodTypeAny, {
2407
- type: RequirementType;
2408
- description: string;
2409
- isActive: boolean;
2410
2432
  name: string;
2433
+ isActive: boolean;
2434
+ description: string;
2435
+ type: RequirementType;
2411
2436
  timeframe: {
2412
2437
  duration: number;
2413
2438
  unit: TimeUnit;
@@ -2415,9 +2440,9 @@ declare const requirementSchema: z.ZodObject<{
2415
2440
  };
2416
2441
  importance: "low" | "medium" | "high";
2417
2442
  }, {
2418
- type: RequirementType;
2419
- description: string;
2420
2443
  name: string;
2444
+ description: string;
2445
+ type: RequirementType;
2421
2446
  timeframe: {
2422
2447
  duration: number;
2423
2448
  unit: TimeUnit;
@@ -2450,10 +2475,10 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2450
2475
  importance: z.ZodEnum<["low", "medium", "high"]>;
2451
2476
  isActive: z.ZodDefault<z.ZodBoolean>;
2452
2477
  }, "strip", z.ZodTypeAny, {
2453
- type: RequirementType;
2454
- description: string;
2455
- isActive: boolean;
2456
2478
  name: string;
2479
+ isActive: boolean;
2480
+ description: string;
2481
+ type: RequirementType;
2457
2482
  timeframe: {
2458
2483
  duration: number;
2459
2484
  unit: TimeUnit;
@@ -2461,9 +2486,9 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2461
2486
  };
2462
2487
  importance: "low" | "medium" | "high";
2463
2488
  }, {
2464
- type: RequirementType;
2465
- description: string;
2466
2489
  name: string;
2490
+ description: string;
2491
+ type: RequirementType;
2467
2492
  timeframe: {
2468
2493
  duration: number;
2469
2494
  unit: TimeUnit;
@@ -2492,10 +2517,10 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2492
2517
  importance: z.ZodEnum<["low", "medium", "high"]>;
2493
2518
  isActive: z.ZodDefault<z.ZodBoolean>;
2494
2519
  }, "strip", z.ZodTypeAny, {
2495
- type: RequirementType;
2496
- description: string;
2497
- isActive: boolean;
2498
2520
  name: string;
2521
+ isActive: boolean;
2522
+ description: string;
2523
+ type: RequirementType;
2499
2524
  timeframe: {
2500
2525
  duration: number;
2501
2526
  unit: TimeUnit;
@@ -2503,9 +2528,9 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2503
2528
  };
2504
2529
  importance: "low" | "medium" | "high";
2505
2530
  }, {
2506
- type: RequirementType;
2507
- description: string;
2508
2531
  name: string;
2532
+ description: string;
2533
+ type: RequirementType;
2509
2534
  timeframe: {
2510
2535
  duration: number;
2511
2536
  unit: TimeUnit;
@@ -2516,10 +2541,10 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2516
2541
  }>, "many">;
2517
2542
  }, "strip", z.ZodTypeAny, {
2518
2543
  pre: {
2519
- type: RequirementType;
2520
- description: string;
2521
- isActive: boolean;
2522
2544
  name: string;
2545
+ isActive: boolean;
2546
+ description: string;
2547
+ type: RequirementType;
2523
2548
  timeframe: {
2524
2549
  duration: number;
2525
2550
  unit: TimeUnit;
@@ -2528,10 +2553,10 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2528
2553
  importance: "low" | "medium" | "high";
2529
2554
  }[];
2530
2555
  post: {
2531
- type: RequirementType;
2532
- description: string;
2533
- isActive: boolean;
2534
2556
  name: string;
2557
+ isActive: boolean;
2558
+ description: string;
2559
+ type: RequirementType;
2535
2560
  timeframe: {
2536
2561
  duration: number;
2537
2562
  unit: TimeUnit;
@@ -2541,9 +2566,9 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2541
2566
  }[];
2542
2567
  }, {
2543
2568
  pre: {
2544
- type: RequirementType;
2545
- description: string;
2546
2569
  name: string;
2570
+ description: string;
2571
+ type: RequirementType;
2547
2572
  timeframe: {
2548
2573
  duration: number;
2549
2574
  unit: TimeUnit;
@@ -2553,9 +2578,9 @@ declare const technologyRequirementsSchema: z.ZodObject<{
2553
2578
  isActive?: boolean | undefined;
2554
2579
  }[];
2555
2580
  post: {
2556
- type: RequirementType;
2557
- description: string;
2558
2581
  name: string;
2582
+ description: string;
2583
+ type: RequirementType;
2559
2584
  timeframe: {
2560
2585
  duration: number;
2561
2586
  unit: TimeUnit;
@@ -2572,6 +2597,8 @@ declare const technologySchema: z.ZodObject<{
2572
2597
  name: z.ZodString;
2573
2598
  description: z.ZodOptional<z.ZodString>;
2574
2599
  technicalDetails: z.ZodOptional<z.ZodString>;
2600
+ family: z.ZodNativeEnum<typeof ProcedureFamily>;
2601
+ categoryId: z.ZodString;
2575
2602
  subcategoryId: z.ZodString;
2576
2603
  requirements: z.ZodDefault<z.ZodObject<{
2577
2604
  pre: z.ZodArray<z.ZodObject<{
@@ -2594,10 +2621,10 @@ declare const technologySchema: z.ZodObject<{
2594
2621
  importance: z.ZodEnum<["low", "medium", "high"]>;
2595
2622
  isActive: z.ZodDefault<z.ZodBoolean>;
2596
2623
  }, "strip", z.ZodTypeAny, {
2597
- type: RequirementType;
2598
- description: string;
2599
- isActive: boolean;
2600
2624
  name: string;
2625
+ isActive: boolean;
2626
+ description: string;
2627
+ type: RequirementType;
2601
2628
  timeframe: {
2602
2629
  duration: number;
2603
2630
  unit: TimeUnit;
@@ -2605,9 +2632,9 @@ declare const technologySchema: z.ZodObject<{
2605
2632
  };
2606
2633
  importance: "low" | "medium" | "high";
2607
2634
  }, {
2608
- type: RequirementType;
2609
- description: string;
2610
2635
  name: string;
2636
+ description: string;
2637
+ type: RequirementType;
2611
2638
  timeframe: {
2612
2639
  duration: number;
2613
2640
  unit: TimeUnit;
@@ -2636,10 +2663,10 @@ declare const technologySchema: z.ZodObject<{
2636
2663
  importance: z.ZodEnum<["low", "medium", "high"]>;
2637
2664
  isActive: z.ZodDefault<z.ZodBoolean>;
2638
2665
  }, "strip", z.ZodTypeAny, {
2639
- type: RequirementType;
2640
- description: string;
2641
- isActive: boolean;
2642
2666
  name: string;
2667
+ isActive: boolean;
2668
+ description: string;
2669
+ type: RequirementType;
2643
2670
  timeframe: {
2644
2671
  duration: number;
2645
2672
  unit: TimeUnit;
@@ -2647,9 +2674,9 @@ declare const technologySchema: z.ZodObject<{
2647
2674
  };
2648
2675
  importance: "low" | "medium" | "high";
2649
2676
  }, {
2650
- type: RequirementType;
2651
- description: string;
2652
2677
  name: string;
2678
+ description: string;
2679
+ type: RequirementType;
2653
2680
  timeframe: {
2654
2681
  duration: number;
2655
2682
  unit: TimeUnit;
@@ -2660,10 +2687,10 @@ declare const technologySchema: z.ZodObject<{
2660
2687
  }>, "many">;
2661
2688
  }, "strip", z.ZodTypeAny, {
2662
2689
  pre: {
2663
- type: RequirementType;
2664
- description: string;
2665
- isActive: boolean;
2666
2690
  name: string;
2691
+ isActive: boolean;
2692
+ description: string;
2693
+ type: RequirementType;
2667
2694
  timeframe: {
2668
2695
  duration: number;
2669
2696
  unit: TimeUnit;
@@ -2672,10 +2699,10 @@ declare const technologySchema: z.ZodObject<{
2672
2699
  importance: "low" | "medium" | "high";
2673
2700
  }[];
2674
2701
  post: {
2675
- type: RequirementType;
2676
- description: string;
2677
- isActive: boolean;
2678
2702
  name: string;
2703
+ isActive: boolean;
2704
+ description: string;
2705
+ type: RequirementType;
2679
2706
  timeframe: {
2680
2707
  duration: number;
2681
2708
  unit: TimeUnit;
@@ -2685,9 +2712,9 @@ declare const technologySchema: z.ZodObject<{
2685
2712
  }[];
2686
2713
  }, {
2687
2714
  pre: {
2688
- type: RequirementType;
2689
- description: string;
2690
2715
  name: string;
2716
+ description: string;
2717
+ type: RequirementType;
2691
2718
  timeframe: {
2692
2719
  duration: number;
2693
2720
  unit: TimeUnit;
@@ -2697,9 +2724,9 @@ declare const technologySchema: z.ZodObject<{
2697
2724
  isActive?: boolean | undefined;
2698
2725
  }[];
2699
2726
  post: {
2700
- type: RequirementType;
2701
- description: string;
2702
2727
  name: string;
2728
+ description: string;
2729
+ type: RequirementType;
2703
2730
  timeframe: {
2704
2731
  duration: number;
2705
2732
  unit: TimeUnit;
@@ -2979,6 +3006,9 @@ declare const technologySchema: z.ZodObject<{
2979
3006
  isActive: z.ZodBoolean;
2980
3007
  }, "strip", z.ZodTypeAny, {
2981
3008
  id: string;
3009
+ createdAt: number;
3010
+ updatedAt: number;
3011
+ isActive: boolean;
2982
3012
  title: string;
2983
3013
  elements: ({
2984
3014
  type: DocumentElementType.HEADING;
@@ -3058,15 +3088,15 @@ declare const technologySchema: z.ZodObject<{
3058
3088
  allowedFileTypes?: string[] | undefined;
3059
3089
  maxFileSizeMB?: number | undefined;
3060
3090
  })[];
3061
- isActive: boolean;
3062
- createdAt: number;
3063
- updatedAt: number;
3064
3091
  createdBy: string;
3065
3092
  version: number;
3066
3093
  description?: string | undefined;
3067
3094
  tags?: string[] | undefined;
3068
3095
  }, {
3069
3096
  id: string;
3097
+ createdAt: number;
3098
+ updatedAt: number;
3099
+ isActive: boolean;
3070
3100
  title: string;
3071
3101
  elements: ({
3072
3102
  type: DocumentElementType.HEADING;
@@ -3146,9 +3176,6 @@ declare const technologySchema: z.ZodObject<{
3146
3176
  allowedFileTypes?: string[] | undefined;
3147
3177
  maxFileSizeMB?: number | undefined;
3148
3178
  })[];
3149
- isActive: boolean;
3150
- createdAt: number;
3151
- updatedAt: number;
3152
3179
  createdBy: string;
3153
3180
  version: number;
3154
3181
  description?: string | undefined;
@@ -3167,15 +3194,18 @@ declare const technologySchema: z.ZodObject<{
3167
3194
  }>;
3168
3195
  isActive: z.ZodDefault<z.ZodBoolean>;
3169
3196
  }, "strip", z.ZodTypeAny, {
3170
- isActive: boolean;
3171
3197
  name: string;
3198
+ isActive: boolean;
3199
+ contraindications: Contraindication[];
3200
+ family: ProcedureFamily;
3201
+ categoryId: string;
3172
3202
  subcategoryId: string;
3173
3203
  requirements: {
3174
3204
  pre: {
3175
- type: RequirementType;
3176
- description: string;
3177
- isActive: boolean;
3178
3205
  name: string;
3206
+ isActive: boolean;
3207
+ description: string;
3208
+ type: RequirementType;
3179
3209
  timeframe: {
3180
3210
  duration: number;
3181
3211
  unit: TimeUnit;
@@ -3184,10 +3214,10 @@ declare const technologySchema: z.ZodObject<{
3184
3214
  importance: "low" | "medium" | "high";
3185
3215
  }[];
3186
3216
  post: {
3187
- type: RequirementType;
3188
- description: string;
3189
- isActive: boolean;
3190
3217
  name: string;
3218
+ isActive: boolean;
3219
+ description: string;
3220
+ type: RequirementType;
3191
3221
  timeframe: {
3192
3222
  duration: number;
3193
3223
  unit: TimeUnit;
@@ -3197,9 +3227,11 @@ declare const technologySchema: z.ZodObject<{
3197
3227
  }[];
3198
3228
  };
3199
3229
  blockingConditions: BlockingCondition[];
3200
- contraindications: Contraindication[];
3201
3230
  documentationTemplates: {
3202
3231
  id: string;
3232
+ createdAt: number;
3233
+ updatedAt: number;
3234
+ isActive: boolean;
3203
3235
  title: string;
3204
3236
  elements: ({
3205
3237
  type: DocumentElementType.HEADING;
@@ -3279,9 +3311,6 @@ declare const technologySchema: z.ZodObject<{
3279
3311
  allowedFileTypes?: string[] | undefined;
3280
3312
  maxFileSizeMB?: number | undefined;
3281
3313
  })[];
3282
- isActive: boolean;
3283
- createdAt: number;
3284
- updatedAt: number;
3285
3314
  createdBy: string;
3286
3315
  version: number;
3287
3316
  description?: string | undefined;
@@ -3296,11 +3325,16 @@ declare const technologySchema: z.ZodObject<{
3296
3325
  technicalDetails?: string | undefined;
3297
3326
  }, {
3298
3327
  name: string;
3328
+ contraindications: Contraindication[];
3329
+ family: ProcedureFamily;
3330
+ categoryId: string;
3299
3331
  subcategoryId: string;
3300
3332
  blockingConditions: BlockingCondition[];
3301
- contraindications: Contraindication[];
3302
3333
  documentationTemplates: {
3303
3334
  id: string;
3335
+ createdAt: number;
3336
+ updatedAt: number;
3337
+ isActive: boolean;
3304
3338
  title: string;
3305
3339
  elements: ({
3306
3340
  type: DocumentElementType.HEADING;
@@ -3380,9 +3414,6 @@ declare const technologySchema: z.ZodObject<{
3380
3414
  allowedFileTypes?: string[] | undefined;
3381
3415
  maxFileSizeMB?: number | undefined;
3382
3416
  })[];
3383
- isActive: boolean;
3384
- createdAt: number;
3385
- updatedAt: number;
3386
3417
  createdBy: string;
3387
3418
  version: number;
3388
3419
  description?: string | undefined;
@@ -3393,14 +3424,14 @@ declare const technologySchema: z.ZodObject<{
3393
3424
  minimumLevel: CertificationLevel;
3394
3425
  requiredSpecialties?: CertificationSpecialty[] | undefined;
3395
3426
  };
3396
- description?: string | undefined;
3397
3427
  isActive?: boolean | undefined;
3428
+ description?: string | undefined;
3398
3429
  technicalDetails?: string | undefined;
3399
3430
  requirements?: {
3400
3431
  pre: {
3401
- type: RequirementType;
3402
- description: string;
3403
3432
  name: string;
3433
+ description: string;
3434
+ type: RequirementType;
3404
3435
  timeframe: {
3405
3436
  duration: number;
3406
3437
  unit: TimeUnit;
@@ -3410,9 +3441,9 @@ declare const technologySchema: z.ZodObject<{
3410
3441
  isActive?: boolean | undefined;
3411
3442
  }[];
3412
3443
  post: {
3413
- type: RequirementType;
3414
- description: string;
3415
3444
  name: string;
3445
+ description: string;
3446
+ type: RequirementType;
3416
3447
  timeframe: {
3417
3448
  duration: number;
3418
3449
  unit: TimeUnit;
@@ -3432,15 +3463,15 @@ declare const categorySchema: z.ZodObject<{
3432
3463
  family: z.ZodNativeEnum<typeof ProcedureFamily>;
3433
3464
  isActive: z.ZodDefault<z.ZodBoolean>;
3434
3465
  }, "strip", z.ZodTypeAny, {
3435
- isActive: boolean;
3436
3466
  name: string;
3467
+ isActive: boolean;
3437
3468
  family: ProcedureFamily;
3438
3469
  description?: string | undefined;
3439
3470
  }, {
3440
3471
  name: string;
3441
3472
  family: ProcedureFamily;
3442
- description?: string | undefined;
3443
3473
  isActive?: boolean | undefined;
3474
+ description?: string | undefined;
3444
3475
  }>;
3445
3476
  /**
3446
3477
  * Subcategory validation schema
@@ -3451,15 +3482,15 @@ declare const subcategorySchema: z.ZodObject<{
3451
3482
  categoryId: z.ZodString;
3452
3483
  isActive: z.ZodDefault<z.ZodBoolean>;
3453
3484
  }, "strip", z.ZodTypeAny, {
3454
- isActive: boolean;
3455
3485
  name: string;
3486
+ isActive: boolean;
3456
3487
  categoryId: string;
3457
3488
  description?: string | undefined;
3458
3489
  }, {
3459
3490
  name: string;
3460
3491
  categoryId: string;
3461
- description?: string | undefined;
3462
3492
  isActive?: boolean | undefined;
3493
+ description?: string | undefined;
3463
3494
  }>;
3464
3495
  /**
3465
3496
  * Partial schemas for updates
@@ -3470,14 +3501,14 @@ declare const categoryUpdateSchema: z.ZodObject<{
3470
3501
  family: z.ZodOptional<z.ZodNativeEnum<typeof ProcedureFamily>>;
3471
3502
  isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
3472
3503
  }, "strip", z.ZodTypeAny, {
3473
- description?: string | undefined;
3474
- isActive?: boolean | undefined;
3475
3504
  name?: string | undefined;
3505
+ isActive?: boolean | undefined;
3506
+ description?: string | undefined;
3476
3507
  family?: ProcedureFamily | undefined;
3477
3508
  }, {
3478
- description?: string | undefined;
3479
- isActive?: boolean | undefined;
3480
3509
  name?: string | undefined;
3510
+ isActive?: boolean | undefined;
3511
+ description?: string | undefined;
3481
3512
  family?: ProcedureFamily | undefined;
3482
3513
  }>;
3483
3514
  declare const subcategoryUpdateSchema: z.ZodObject<{
@@ -3486,20 +3517,22 @@ declare const subcategoryUpdateSchema: z.ZodObject<{
3486
3517
  categoryId: z.ZodOptional<z.ZodString>;
3487
3518
  isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
3488
3519
  }, "strip", z.ZodTypeAny, {
3489
- description?: string | undefined;
3490
- isActive?: boolean | undefined;
3491
3520
  name?: string | undefined;
3521
+ isActive?: boolean | undefined;
3522
+ description?: string | undefined;
3492
3523
  categoryId?: string | undefined;
3493
3524
  }, {
3494
- description?: string | undefined;
3495
- isActive?: boolean | undefined;
3496
3525
  name?: string | undefined;
3526
+ isActive?: boolean | undefined;
3527
+ description?: string | undefined;
3497
3528
  categoryId?: string | undefined;
3498
3529
  }>;
3499
3530
  declare const technologyUpdateSchema: z.ZodObject<{
3500
3531
  name: z.ZodOptional<z.ZodString>;
3501
3532
  description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
3502
3533
  technicalDetails: z.ZodOptional<z.ZodOptional<z.ZodString>>;
3534
+ family: z.ZodOptional<z.ZodNativeEnum<typeof ProcedureFamily>>;
3535
+ categoryId: z.ZodOptional<z.ZodString>;
3503
3536
  subcategoryId: z.ZodOptional<z.ZodString>;
3504
3537
  requirements: z.ZodOptional<z.ZodDefault<z.ZodObject<{
3505
3538
  pre: z.ZodArray<z.ZodObject<{
@@ -3522,10 +3555,10 @@ declare const technologyUpdateSchema: z.ZodObject<{
3522
3555
  importance: z.ZodEnum<["low", "medium", "high"]>;
3523
3556
  isActive: z.ZodDefault<z.ZodBoolean>;
3524
3557
  }, "strip", z.ZodTypeAny, {
3525
- type: RequirementType;
3526
- description: string;
3527
- isActive: boolean;
3528
3558
  name: string;
3559
+ isActive: boolean;
3560
+ description: string;
3561
+ type: RequirementType;
3529
3562
  timeframe: {
3530
3563
  duration: number;
3531
3564
  unit: TimeUnit;
@@ -3533,9 +3566,9 @@ declare const technologyUpdateSchema: z.ZodObject<{
3533
3566
  };
3534
3567
  importance: "low" | "medium" | "high";
3535
3568
  }, {
3536
- type: RequirementType;
3537
- description: string;
3538
3569
  name: string;
3570
+ description: string;
3571
+ type: RequirementType;
3539
3572
  timeframe: {
3540
3573
  duration: number;
3541
3574
  unit: TimeUnit;
@@ -3564,10 +3597,10 @@ declare const technologyUpdateSchema: z.ZodObject<{
3564
3597
  importance: z.ZodEnum<["low", "medium", "high"]>;
3565
3598
  isActive: z.ZodDefault<z.ZodBoolean>;
3566
3599
  }, "strip", z.ZodTypeAny, {
3567
- type: RequirementType;
3568
- description: string;
3569
- isActive: boolean;
3570
3600
  name: string;
3601
+ isActive: boolean;
3602
+ description: string;
3603
+ type: RequirementType;
3571
3604
  timeframe: {
3572
3605
  duration: number;
3573
3606
  unit: TimeUnit;
@@ -3575,9 +3608,9 @@ declare const technologyUpdateSchema: z.ZodObject<{
3575
3608
  };
3576
3609
  importance: "low" | "medium" | "high";
3577
3610
  }, {
3578
- type: RequirementType;
3579
- description: string;
3580
3611
  name: string;
3612
+ description: string;
3613
+ type: RequirementType;
3581
3614
  timeframe: {
3582
3615
  duration: number;
3583
3616
  unit: TimeUnit;
@@ -3588,10 +3621,10 @@ declare const technologyUpdateSchema: z.ZodObject<{
3588
3621
  }>, "many">;
3589
3622
  }, "strip", z.ZodTypeAny, {
3590
3623
  pre: {
3591
- type: RequirementType;
3592
- description: string;
3593
- isActive: boolean;
3594
3624
  name: string;
3625
+ isActive: boolean;
3626
+ description: string;
3627
+ type: RequirementType;
3595
3628
  timeframe: {
3596
3629
  duration: number;
3597
3630
  unit: TimeUnit;
@@ -3600,10 +3633,10 @@ declare const technologyUpdateSchema: z.ZodObject<{
3600
3633
  importance: "low" | "medium" | "high";
3601
3634
  }[];
3602
3635
  post: {
3603
- type: RequirementType;
3604
- description: string;
3605
- isActive: boolean;
3606
3636
  name: string;
3637
+ isActive: boolean;
3638
+ description: string;
3639
+ type: RequirementType;
3607
3640
  timeframe: {
3608
3641
  duration: number;
3609
3642
  unit: TimeUnit;
@@ -3613,9 +3646,9 @@ declare const technologyUpdateSchema: z.ZodObject<{
3613
3646
  }[];
3614
3647
  }, {
3615
3648
  pre: {
3616
- type: RequirementType;
3617
- description: string;
3618
3649
  name: string;
3650
+ description: string;
3651
+ type: RequirementType;
3619
3652
  timeframe: {
3620
3653
  duration: number;
3621
3654
  unit: TimeUnit;
@@ -3625,9 +3658,9 @@ declare const technologyUpdateSchema: z.ZodObject<{
3625
3658
  isActive?: boolean | undefined;
3626
3659
  }[];
3627
3660
  post: {
3628
- type: RequirementType;
3629
- description: string;
3630
3661
  name: string;
3662
+ description: string;
3663
+ type: RequirementType;
3631
3664
  timeframe: {
3632
3665
  duration: number;
3633
3666
  unit: TimeUnit;
@@ -3907,6 +3940,9 @@ declare const technologyUpdateSchema: z.ZodObject<{
3907
3940
  isActive: z.ZodBoolean;
3908
3941
  }, "strip", z.ZodTypeAny, {
3909
3942
  id: string;
3943
+ createdAt: number;
3944
+ updatedAt: number;
3945
+ isActive: boolean;
3910
3946
  title: string;
3911
3947
  elements: ({
3912
3948
  type: DocumentElementType.HEADING;
@@ -3986,15 +4022,15 @@ declare const technologyUpdateSchema: z.ZodObject<{
3986
4022
  allowedFileTypes?: string[] | undefined;
3987
4023
  maxFileSizeMB?: number | undefined;
3988
4024
  })[];
3989
- isActive: boolean;
3990
- createdAt: number;
3991
- updatedAt: number;
3992
4025
  createdBy: string;
3993
4026
  version: number;
3994
4027
  description?: string | undefined;
3995
4028
  tags?: string[] | undefined;
3996
4029
  }, {
3997
4030
  id: string;
4031
+ createdAt: number;
4032
+ updatedAt: number;
4033
+ isActive: boolean;
3998
4034
  title: string;
3999
4035
  elements: ({
4000
4036
  type: DocumentElementType.HEADING;
@@ -4074,9 +4110,6 @@ declare const technologyUpdateSchema: z.ZodObject<{
4074
4110
  allowedFileTypes?: string[] | undefined;
4075
4111
  maxFileSizeMB?: number | undefined;
4076
4112
  })[];
4077
- isActive: boolean;
4078
- createdAt: number;
4079
- updatedAt: number;
4080
4113
  createdBy: string;
4081
4114
  version: number;
4082
4115
  description?: string | undefined;
@@ -4095,17 +4128,20 @@ declare const technologyUpdateSchema: z.ZodObject<{
4095
4128
  }>>;
4096
4129
  isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
4097
4130
  }, "strip", z.ZodTypeAny, {
4098
- description?: string | undefined;
4099
- isActive?: boolean | undefined;
4100
4131
  name?: string | undefined;
4132
+ isActive?: boolean | undefined;
4133
+ description?: string | undefined;
4101
4134
  technicalDetails?: string | undefined;
4135
+ contraindications?: Contraindication[] | undefined;
4136
+ family?: ProcedureFamily | undefined;
4137
+ categoryId?: string | undefined;
4102
4138
  subcategoryId?: string | undefined;
4103
4139
  requirements?: {
4104
4140
  pre: {
4105
- type: RequirementType;
4106
- description: string;
4107
- isActive: boolean;
4108
4141
  name: string;
4142
+ isActive: boolean;
4143
+ description: string;
4144
+ type: RequirementType;
4109
4145
  timeframe: {
4110
4146
  duration: number;
4111
4147
  unit: TimeUnit;
@@ -4114,10 +4150,10 @@ declare const technologyUpdateSchema: z.ZodObject<{
4114
4150
  importance: "low" | "medium" | "high";
4115
4151
  }[];
4116
4152
  post: {
4117
- type: RequirementType;
4118
- description: string;
4119
- isActive: boolean;
4120
4153
  name: string;
4154
+ isActive: boolean;
4155
+ description: string;
4156
+ type: RequirementType;
4121
4157
  timeframe: {
4122
4158
  duration: number;
4123
4159
  unit: TimeUnit;
@@ -4127,9 +4163,11 @@ declare const technologyUpdateSchema: z.ZodObject<{
4127
4163
  }[];
4128
4164
  } | undefined;
4129
4165
  blockingConditions?: BlockingCondition[] | undefined;
4130
- contraindications?: Contraindication[] | undefined;
4131
4166
  documentationTemplates?: {
4132
4167
  id: string;
4168
+ createdAt: number;
4169
+ updatedAt: number;
4170
+ isActive: boolean;
4133
4171
  title: string;
4134
4172
  elements: ({
4135
4173
  type: DocumentElementType.HEADING;
@@ -4209,9 +4247,6 @@ declare const technologyUpdateSchema: z.ZodObject<{
4209
4247
  allowedFileTypes?: string[] | undefined;
4210
4248
  maxFileSizeMB?: number | undefined;
4211
4249
  })[];
4212
- isActive: boolean;
4213
- createdAt: number;
4214
- updatedAt: number;
4215
4250
  createdBy: string;
4216
4251
  version: number;
4217
4252
  description?: string | undefined;
@@ -4223,16 +4258,19 @@ declare const technologyUpdateSchema: z.ZodObject<{
4223
4258
  requiredSpecialties?: CertificationSpecialty[] | undefined;
4224
4259
  } | undefined;
4225
4260
  }, {
4226
- description?: string | undefined;
4227
- isActive?: boolean | undefined;
4228
4261
  name?: string | undefined;
4262
+ isActive?: boolean | undefined;
4263
+ description?: string | undefined;
4229
4264
  technicalDetails?: string | undefined;
4265
+ contraindications?: Contraindication[] | undefined;
4266
+ family?: ProcedureFamily | undefined;
4267
+ categoryId?: string | undefined;
4230
4268
  subcategoryId?: string | undefined;
4231
4269
  requirements?: {
4232
4270
  pre: {
4233
- type: RequirementType;
4234
- description: string;
4235
4271
  name: string;
4272
+ description: string;
4273
+ type: RequirementType;
4236
4274
  timeframe: {
4237
4275
  duration: number;
4238
4276
  unit: TimeUnit;
@@ -4242,9 +4280,9 @@ declare const technologyUpdateSchema: z.ZodObject<{
4242
4280
  isActive?: boolean | undefined;
4243
4281
  }[];
4244
4282
  post: {
4245
- type: RequirementType;
4246
- description: string;
4247
4283
  name: string;
4284
+ description: string;
4285
+ type: RequirementType;
4248
4286
  timeframe: {
4249
4287
  duration: number;
4250
4288
  unit: TimeUnit;
@@ -4255,9 +4293,11 @@ declare const technologyUpdateSchema: z.ZodObject<{
4255
4293
  }[];
4256
4294
  } | undefined;
4257
4295
  blockingConditions?: BlockingCondition[] | undefined;
4258
- contraindications?: Contraindication[] | undefined;
4259
4296
  documentationTemplates?: {
4260
4297
  id: string;
4298
+ createdAt: number;
4299
+ updatedAt: number;
4300
+ isActive: boolean;
4261
4301
  title: string;
4262
4302
  elements: ({
4263
4303
  type: DocumentElementType.HEADING;
@@ -4337,9 +4377,6 @@ declare const technologyUpdateSchema: z.ZodObject<{
4337
4377
  allowedFileTypes?: string[] | undefined;
4338
4378
  maxFileSizeMB?: number | undefined;
4339
4379
  })[];
4340
- isActive: boolean;
4341
- createdAt: number;
4342
- updatedAt: number;
4343
4380
  createdBy: string;
4344
4381
  version: number;
4345
4382
  description?: string | undefined;
@@ -4371,10 +4408,10 @@ declare const requirementUpdateSchema: z.ZodObject<{
4371
4408
  importance: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
4372
4409
  isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
4373
4410
  }, "strip", z.ZodTypeAny, {
4374
- type?: RequirementType | undefined;
4375
- description?: string | undefined;
4376
- isActive?: boolean | undefined;
4377
4411
  name?: string | undefined;
4412
+ isActive?: boolean | undefined;
4413
+ description?: string | undefined;
4414
+ type?: RequirementType | undefined;
4378
4415
  timeframe?: {
4379
4416
  duration: number;
4380
4417
  unit: TimeUnit;
@@ -4382,10 +4419,10 @@ declare const requirementUpdateSchema: z.ZodObject<{
4382
4419
  } | undefined;
4383
4420
  importance?: "low" | "medium" | "high" | undefined;
4384
4421
  }, {
4385
- type?: RequirementType | undefined;
4386
- description?: string | undefined;
4387
- isActive?: boolean | undefined;
4388
4422
  name?: string | undefined;
4423
+ isActive?: boolean | undefined;
4424
+ description?: string | undefined;
4425
+ type?: RequirementType | undefined;
4389
4426
  timeframe?: {
4390
4427
  duration: number;
4391
4428
  unit: TimeUnit;
@@ -4432,11 +4469,11 @@ declare class CategoryService extends BaseService {
4432
4469
  * @returns Kreirana kategorija sa generisanim ID-em
4433
4470
  */
4434
4471
  create(category: Omit<Category, "id" | "createdAt" | "updatedAt">): Promise<{
4435
- description: string;
4436
- isActive: boolean;
4437
4472
  createdAt: Date;
4438
4473
  updatedAt: Date;
4439
4474
  name: string;
4475
+ isActive: boolean;
4476
+ description: string;
4440
4477
  family: ProcedureFamily;
4441
4478
  id: string;
4442
4479
  }>;
@@ -4497,11 +4534,11 @@ declare class SubcategoryService extends BaseService {
4497
4534
  * @returns Kreirana podkategorija sa generisanim ID-em
4498
4535
  */
4499
4536
  create(categoryId: string, subcategory: Omit<Subcategory, "id" | "createdAt" | "updatedAt">): Promise<{
4500
- description?: string | undefined;
4501
- isActive: boolean;
4502
4537
  createdAt: Date;
4503
4538
  updatedAt: Date;
4504
4539
  name: string;
4540
+ isActive: boolean;
4541
+ description?: string | undefined;
4505
4542
  categoryId: string;
4506
4543
  id: string;
4507
4544
  }>;
@@ -4659,24 +4696,24 @@ declare class TechnologyService extends BaseService {
4659
4696
  * @returns Kreirana tehnologija sa generisanim ID-em
4660
4697
  */
4661
4698
  create(technology: Omit<Technology, "id" | "createdAt" | "updatedAt">): Promise<{
4662
- description: string;
4663
- isActive: boolean;
4664
4699
  createdAt: Date;
4665
4700
  updatedAt: Date;
4666
4701
  name: string;
4702
+ isActive: boolean;
4703
+ description: string;
4667
4704
  technicalDetails?: string | undefined;
4705
+ contraindications: Contraindication[];
4706
+ family: ProcedureFamily;
4707
+ categoryId: string;
4668
4708
  subcategoryId: string;
4669
4709
  requirements: {
4670
4710
  pre: Requirement[];
4671
4711
  post: Requirement[];
4672
4712
  };
4673
4713
  blockingConditions: BlockingCondition[];
4674
- contraindications: Contraindication[];
4675
4714
  documentationTemplates?: DocumentTemplate[] | undefined;
4676
4715
  benefits: TreatmentBenefit[];
4677
4716
  certificationRequirement: CertificationRequirement;
4678
- family: ProcedureFamily;
4679
- categoryId: string;
4680
4717
  id: string;
4681
4718
  }>;
4682
4719
  /**
@@ -4905,12 +4942,12 @@ declare class RequirementService extends BaseService {
4905
4942
  * @returns Kreirani zahtev sa generisanim ID-em
4906
4943
  */
4907
4944
  create(requirement: Omit<Requirement, "id" | "createdAt" | "updatedAt">): Promise<{
4908
- type: RequirementType;
4909
- description: string;
4910
- isActive: boolean;
4911
4945
  createdAt: Date;
4912
4946
  updatedAt: Date;
4913
4947
  name: string;
4948
+ isActive: boolean;
4949
+ description: string;
4950
+ type: RequirementType;
4914
4951
  timeframe: TimeFrame;
4915
4952
  importance: RequirementImportance;
4916
4953
  id: string;
@@ -4947,47 +4984,72 @@ declare class RequirementService extends BaseService {
4947
4984
  }
4948
4985
 
4949
4986
  declare class BrandService extends BaseService {
4950
- private get brandsRef();
4987
+ /**
4988
+ * Gets reference to brands collection
4989
+ */
4990
+ private getBrandsRef;
4991
+ /**
4992
+ * Creates a new brand
4993
+ */
4951
4994
  create(brand: Omit<Brand, "id" | "createdAt" | "updatedAt">): Promise<{
4952
- description?: string | undefined;
4953
- isActive: boolean;
4954
4995
  createdAt: Date;
4955
4996
  updatedAt: Date;
4956
4997
  name: string;
4998
+ isActive: boolean;
4999
+ description?: string | undefined;
4957
5000
  manufacturer: string;
4958
5001
  website?: string | undefined;
4959
5002
  id: string;
4960
5003
  }>;
5004
+ /**
5005
+ * Gets all active brands
5006
+ */
4961
5007
  getAll(): Promise<Brand[]>;
4962
- update(id: string, brand: Partial<Omit<Brand, "id" | "createdAt">>): Promise<Brand | null>;
4963
- delete(id: string): Promise<void>;
4964
- getById(id: string): Promise<Brand | null>;
5008
+ /**
5009
+ * Updates a brand
5010
+ */
5011
+ update(brandId: string, brand: Partial<Omit<Brand, "id" | "createdAt">>): Promise<Brand | null>;
5012
+ /**
5013
+ * Soft deletes a brand
5014
+ */
5015
+ delete(brandId: string): Promise<void>;
5016
+ /**
5017
+ * Gets a brand by ID
5018
+ */
5019
+ getById(brandId: string): Promise<Brand | null>;
4965
5020
  }
4966
5021
 
4967
- declare class ProductService extends BaseService {
4968
- private getProductsRefByTechnology;
4969
- private getProductsRefByBrand;
4970
- create(categoryId: string, subcategoryId: string, technologyId: string, brandId: string, product: Omit<Product, "id" | "createdAt" | "updatedAt" | "brandId" | "technologyId">): Promise<{
4971
- description?: string | undefined;
4972
- isActive: boolean;
4973
- createdAt: Date;
4974
- updatedAt: Date;
4975
- name: string;
4976
- technicalDetails?: string | undefined;
4977
- contraindications?: string[] | undefined;
4978
- brandId: string;
4979
- technologyId: string;
4980
- warnings?: string[] | undefined;
4981
- dosage?: string | undefined;
4982
- composition?: string | undefined;
4983
- indications?: string[] | undefined;
4984
- id: string;
4985
- }>;
4986
- getAllByTechnology(categoryId: string, subcategoryId: string, technologyId: string): Promise<Product[]>;
5022
+ declare class ProductService extends BaseService implements IProductService {
5023
+ /**
5024
+ * Gets reference to products collection under a technology
5025
+ * @param technologyId - ID of the technology
5026
+ * @returns Firestore collection reference
5027
+ */
5028
+ private getProductsRef;
5029
+ /**
5030
+ * Creates a new product under technology
5031
+ */
5032
+ create(technologyId: string, brandId: string, product: Omit<Product, "id" | "createdAt" | "updatedAt" | "brandId" | "technologyId">): Promise<Product>;
5033
+ /**
5034
+ * Gets all products for a technology
5035
+ */
5036
+ getAllByTechnology(technologyId: string): Promise<Product[]>;
5037
+ /**
5038
+ * Gets all products for a brand by filtering through all technologies
5039
+ */
4987
5040
  getAllByBrand(brandId: string): Promise<Product[]>;
4988
- update(categoryId: string, subcategoryId: string, technologyId: string, productId: string, product: Partial<Omit<Product, "id" | "createdAt" | "brandId" | "technologyId">>): Promise<Product | null>;
4989
- delete(categoryId: string, subcategoryId: string, technologyId: string, productId: string): Promise<void>;
4990
- getById(categoryId: string, subcategoryId: string, technologyId: string, productId: string): Promise<Product | null>;
5041
+ /**
5042
+ * Updates a product
5043
+ */
5044
+ update(technologyId: string, productId: string, product: Partial<Omit<Product, "id" | "createdAt" | "brandId" | "technologyId">>): Promise<Product | null>;
5045
+ /**
5046
+ * Soft deletes a product
5047
+ */
5048
+ delete(technologyId: string, productId: string): Promise<void>;
5049
+ /**
5050
+ * Gets a product by ID
5051
+ */
5052
+ getById(technologyId: string, productId: string): Promise<Product | null>;
4991
5053
  }
4992
5054
 
4993
5055
  /**