tickera-angular-components 0.0.1-dev.2 → 0.0.1-dev.200

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.
package/index.d.ts CHANGED
@@ -1,33 +1,39 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, WritableSignal, EventEmitter, Injector, Type, OnInit, OnDestroy, ElementRef, OnChanges, SimpleChanges } from '@angular/core';
3
- import { ValidatorFn, FormGroup, FormBuilder, ControlValueAccessor, NgControl, Validator, AbstractControl, FormControl } from '@angular/forms';
4
- import { HttpClient, HttpInterceptorFn } from '@angular/common/http';
2
+ import { InjectionToken, EnvironmentProviders, WritableSignal, Signal, EventEmitter, OnChanges, OnDestroy, SimpleChanges, Injector, Type, OnInit, ElementRef, AfterViewInit } from '@angular/core';
3
+ export { TippyDirective } from '@ngneat/helipopper';
4
+ export * from '@ngneat/helipopper/config';
5
+ import { TranslocoLoader, TranslocoService } from '@jsverse/transloco';
5
6
  import * as rxjs from 'rxjs';
6
7
  import { Observable, Subject } from 'rxjs';
7
- import { TranslocoService } from '@jsverse/transloco';
8
+ import { ShapeConfig, Shape } from 'konva/lib/Shape';
9
+ import { Context } from 'konva/lib/Context';
10
+ import { ValidatorFn, FormGroup, FormBuilder, ControlValueAccessor, NgControl, Validator, AbstractControl, ValidationErrors, FormControl } from '@angular/forms';
11
+ import { HttpClient, HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';
12
+ import { Stage } from 'konva/lib/Stage';
13
+ import { Router, ActivatedRoute } from '@angular/router';
14
+ import * as tickera_angular_components from 'tickera-angular-components';
8
15
  import { Toolbar, Editor } from 'ngx-editor';
9
- import { Router } from '@angular/router';
16
+ import { StageComponent, CoreShapeComponent } from 'ng2-konva';
10
17
 
11
18
  interface TickeraComponentsConfig {
12
19
  apiUrl: string;
13
20
  accessTokenKey?: string;
21
+ defaultLang?: string;
22
+ availableLangs?: string[];
14
23
  }
24
+
15
25
  declare const TICKERA_COMPONENTS_CONFIG: InjectionToken<TickeraComponentsConfig>;
16
26
  declare function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders;
17
27
 
18
- declare const ALERT_BASE_CLASSES = "border rounded relative flex items-center gap-2 px-4 py-2";
19
- declare const ALERT_COLOR_CLASSES: {
20
- success: string;
21
- error: string;
22
- warning: string;
23
- info: string;
24
- };
25
- declare const ALERT_SIZE_CLASSES: {
26
- xs: string;
27
- sm: string;
28
- md: string;
29
- lg: string;
30
- };
28
+ declare class TickeraTranslocoLoader implements TranslocoLoader {
29
+ getTranslation(lang: string): Observable<Record<string, unknown>>;
30
+ }
31
+
32
+ declare function getStoredLanguage(): string;
33
+ declare function setStoredLanguage(lang: string): void;
34
+ declare function getBrowserLanguage(): string;
35
+ declare function resolveLanguage(): string;
36
+
31
37
  declare const ALERT_ICONS: {
32
38
  success: string;
33
39
  error: string;
@@ -35,33 +41,21 @@ declare const ALERT_ICONS: {
35
41
  info: string;
36
42
  };
37
43
 
38
- declare const BUTTON_VARIANT_CLASSES: {
39
- primary: string;
40
- secondary: string;
41
- terciary: string;
42
- success: string;
43
- transparent: string;
44
- };
45
- declare const BASE_BUTTON_CLASSES: string;
46
- declare const BUTTON_SIZES_CLASSES: {
47
- xs: string;
48
- sm: string;
49
- md: string;
50
- lg: string;
51
- };
52
-
53
- declare const FORM_ERROR_MESSAGES: Record<string, string>;
54
-
55
- declare const BASE_INPUT_CLASSES: string;
56
- declare const ERROR_INPUT_CLASSES: string;
57
-
58
44
  declare const ADMIN_API_ROUTES: {
59
45
  FIND_ALL: string;
60
46
  CREATE: string;
47
+ findOne: (id: number) => string;
61
48
  updateOne: (id: number) => string;
62
49
  deleteOne: (id: number) => string;
63
50
  };
64
51
 
52
+ declare const ADMISSION_API_ROUTES: {
53
+ join: (performanceId: number) => string;
54
+ leave: (performanceId: number) => string;
55
+ status: (performanceId: number) => string;
56
+ events: (performanceId: number) => string;
57
+ };
58
+
65
59
  declare const CITY_API_ENDPOINTS: {
66
60
  findAll: string;
67
61
  create: string;
@@ -78,10 +72,10 @@ declare const COUNTRY_API_ENDPOINTS: {
78
72
  delete: (id: number) => string;
79
73
  };
80
74
 
81
- declare const STATE_API_ENDPOINTS: {
75
+ declare const CUSTOMERS_API_ROUTES: {
82
76
  findAll: string;
83
77
  create: string;
84
- findById: (id: number) => string;
78
+ findOne: (id: number) => string;
85
79
  update: (id: number) => string;
86
80
  delete: (id: number) => string;
87
81
  };
@@ -92,15 +86,57 @@ declare const PERFORMANCES_API_ROUTES: {
92
86
  createBulk: string;
93
87
  findOneById: (id: number) => string;
94
88
  findOneBookingData: (id: number) => string;
89
+ findOneBookingDataAdmin: (id: number) => string;
95
90
  update: (id: number) => string;
96
91
  delete: (id: number) => string;
97
92
  deleteMany: string;
93
+ bulkPublished: string;
98
94
  cancel: (id: number) => string;
99
95
  publishInventory: (id: number) => string;
100
96
  reserve: (id: number) => string;
101
97
  ticketQrToken: (uuid: string) => string;
102
98
  getAvailableDays: string;
103
99
  publicAvailablePerformances: string;
100
+ seatEventsTicket: (id: number) => string;
101
+ seatEventsTicketAdmin: (id: number) => string;
102
+ seatEvents: (id: number) => string;
103
+ myQrToken: (ticketUuid: string) => string;
104
+ ticketPdf: (ticketUuid: string) => string;
105
+ myTicketPdf: (ticketUuid: string) => string;
106
+ };
107
+
108
+ declare const PRICE_ZONES_API_ROUTES: {
109
+ FIND_ALL: string;
110
+ CREATE: string;
111
+ findOneById: (id: number) => string;
112
+ update: (id: number) => string;
113
+ delete: (id: number) => string;
114
+ updateElements: (id: number) => string;
115
+ duplicate: (id: number) => string;
116
+ };
117
+
118
+ declare const PRODUCT_CATEGORIES_API_ROUTES: {
119
+ FIND_ALL: string;
120
+ CREATE: string;
121
+ findById: (id: number) => string;
122
+ update: (id: number) => string;
123
+ delete: (id: number) => string;
124
+ };
125
+
126
+ declare const PRODUCT_TAGS_API_ROUTES: {
127
+ FIND_ALL: string;
128
+ CREATE: string;
129
+ findById: (id: number) => string;
130
+ update: (id: number) => string;
131
+ delete: (id: number) => string;
132
+ };
133
+
134
+ declare const PRODUCT_TYPES_API_ROUTES: {
135
+ FIND_ALL: string;
136
+ CREATE: string;
137
+ findById: (id: number) => string;
138
+ update: (id: number) => string;
139
+ delete: (id: number) => string;
104
140
  };
105
141
 
106
142
  declare const PRODUCTS_API_ROUTES: {
@@ -109,6 +145,9 @@ declare const PRODUCTS_API_ROUTES: {
109
145
  findOneById: (id: number) => string;
110
146
  update: (id: number) => string;
111
147
  delete: (id: number) => string;
148
+ fetchImages: (id: number) => string;
149
+ uploadImages: (id: number) => string;
150
+ deleteOneImage: (productId: number, imageId: number) => string;
112
151
  };
113
152
 
114
153
  declare const SHOWS_API_ROUTES: {
@@ -123,22 +162,12 @@ declare const SHOWS_API_ROUTES: {
123
162
  publicAvailablePerformances: string;
124
163
  };
125
164
 
126
- declare const CUSTOMERS_API_ROUTES: {
165
+ declare const STATE_API_ENDPOINTS: {
127
166
  findAll: string;
128
167
  create: string;
129
- findOne: (id: number) => string;
130
- update: (id: number) => string;
131
- delete: (id: number) => string;
132
- };
133
-
134
- declare const PRICE_ZONES_API_ROUTES: {
135
- FIND_ALL: string;
136
- CREATE: string;
137
- findOneById: (id: number) => string;
168
+ findById: (id: number) => string;
138
169
  update: (id: number) => string;
139
170
  delete: (id: number) => string;
140
- updateElements: (id: number) => string;
141
- duplicate: (id: number) => string;
142
171
  };
143
172
 
144
173
  declare const VENUES_API_ROUTES: {
@@ -152,152 +181,36 @@ declare const VENUES_API_ROUTES: {
152
181
  deleteOneImage: (venueId: number, imageId: number) => string;
153
182
  };
154
183
 
155
- declare enum FileType {
156
- IMAGE = "image",
157
- PDF = "pdf",
158
- EXCEL = "excel",
159
- WORD = "word",
160
- TEXT = "text",
161
- DEFAULT = "default"
162
- }
163
-
164
- declare enum CouponApplicability {
165
- GENERAL = "GENERAL",
166
- CUSTOMER_EMAIL = "CUSTOMER_EMAIL",
167
- MEMBERSHIP_TYPE = "MEMBERSHIP_TYPE",
168
- SHOWS = "SHOWS",
169
- PERFORMANCES = "PERFORMANCES"
170
- }
171
-
172
- declare enum CouponDiscountType {
173
- PERCENTAGE = "PERCENTAGE",
174
- FIXED = "FIXED"
175
- }
176
-
177
- declare enum CorporateBondStatus {
178
- ACTIVE = "ACTIVE",
179
- INACTIVE = "INACTIVE",
180
- EXPIRED = "EXPIRED"
181
- }
182
-
183
- declare enum PerformanceStatus {
184
- ACTIVE = "active",
185
- CANCELLED = "cancelled",
186
- FINISHED = "finished",
187
- POSTPONED = "postponed"
188
- }
189
-
190
- declare enum PerformanceTicketStatus {
191
- AVAILABLE = "available",
192
- RESERVED = "reserved",
193
- SOLD = "sold",
194
- BLOCKED = "blocked"
195
- }
196
-
197
- declare enum RoomMapElementOrientation {
198
- TOP = "top",
199
- RIGHT = "right",
200
- BOTTOM = "bottom",
201
- LEFT = "left",
202
- CENTER = "center"
203
- }
204
-
205
- declare enum RoomMapElementType {
206
- SEAT_BLOCK = "seat_block",
207
- TABLE = "table",
208
- ZONE = "zone",
209
- EXIT = "exit",
210
- STAGE = "stage",
211
- PRODUCTION_AREA = "production_area",
212
- UNAVAILABLE_SPACE = "unavailable_space",
213
- STAIR = "stair",
214
- HALLWAY = "hallway"
215
- }
216
-
217
- declare enum OrderItemType {
218
- TICKET = "TICKET",
219
- PRODUCT = "PRODUCT"
220
- }
221
-
222
- declare enum OrderStatus {
223
- PENDING = "PENDING",
224
- COMPLETED = "COMPLETED",
225
- FAILED = "FAILED",
226
- CANCELLED = "CANCELLED"
227
- }
228
-
229
- interface RoomMapPosition {
230
- x: number;
231
- y: number;
232
- }
233
-
234
- interface RoomMapSize {
235
- width: number;
236
- height: number;
237
- }
238
-
239
- interface RoomMapBaseElement {
240
- id: string;
241
- type: RoomMapElementType;
242
- position: RoomMapPosition;
243
- size: RoomMapSize;
244
- rotation: number;
245
- name?: string;
246
- isLocked: boolean;
247
- isVisible: boolean;
248
- zIndex: number;
249
- }
250
-
251
- interface RoomMapExitElement extends RoomMapBaseElement {
252
- type: RoomMapElementType.EXIT;
253
- exitName?: string;
254
- exitType: 'emergency' | 'regular';
255
- width: number;
256
- }
257
-
258
- interface RoomMapProductionAreaElement extends RoomMapBaseElement {
259
- type: RoomMapElementType.PRODUCTION_AREA;
260
- areaName?: string;
261
- areaType: 'lighting' | 'sound' | 'backstage' | 'orchestra' | 'custom';
262
- }
263
-
264
- interface RoomMapSeatElement extends RoomMapBaseElement {
265
- type: RoomMapElementType.SEAT_BLOCK;
266
- seatNumber?: string;
267
- isAvailable: boolean;
268
- priceCategory?: string;
269
- }
184
+ declare const VIP_CARDS_API_ROUTES: {
185
+ findAll: string;
186
+ findOne: (id: number) => string;
187
+ activateAdmin: string;
188
+ rechargeAdmin: (id: number) => string;
189
+ updateStatus: (id: number) => string;
190
+ updateTerms: (id: number) => string;
191
+ transactions: (id: number) => string;
192
+ findMy: string;
193
+ activate: string;
194
+ recharge: string;
195
+ };
270
196
 
271
- interface RoomMapStageElement extends RoomMapBaseElement {
272
- type: RoomMapElementType.STAGE;
273
- stageName?: string;
274
- orientation: RoomMapElementOrientation;
275
- isMainStage: boolean;
276
- }
197
+ declare const BUTTON_VARIANT_CLASSES: Record<string, string>;
198
+ declare const BASE_BUTTON_CLASSES = "btn";
199
+ declare const BUTTON_SIZES_CLASSES: Record<string, string>;
277
200
 
278
- interface RoomMapTableElement extends RoomMapBaseElement {
279
- type: RoomMapElementType.TABLE;
280
- tableNumber?: string;
281
- capacity: number;
282
- shape: 'round' | 'rectangular' | 'square';
283
- }
201
+ declare const FORM_ERROR_MESSAGES: Record<string, string>;
284
202
 
285
- interface RoomMapUnavailableElement extends RoomMapBaseElement {
286
- type: RoomMapElementType.UNAVAILABLE_SPACE;
287
- reason?: string;
288
- }
203
+ declare const BASE_INPUT_CLASSES: string;
204
+ declare const ERROR_INPUT_CLASSES: string;
289
205
 
290
- interface RoomMapZoneElement extends RoomMapBaseElement {
291
- type: RoomMapElementType.ZONE;
292
- zoneName: string;
293
- zoneType: 'vip' | 'general' | 'premium' | 'balcony' | 'custom';
294
- color: string;
295
- capacity?: number;
206
+ interface PhoneCountry {
207
+ name: string;
208
+ isoCode: string;
209
+ dialCode: string;
296
210
  }
297
211
 
298
- type RoomMapCanvasElement = RoomMapSeatElement | RoomMapTableElement | RoomMapZoneElement | RoomMapExitElement | RoomMapStageElement | RoomMapProductionAreaElement | RoomMapUnavailableElement;
299
-
300
- type RoomMapSeatDisplayState = 'normal' | 'accessible' | 'non_existent';
212
+ declare function phoneCountryFlag(isoCode: string): string;
213
+ declare const PHONE_COUNTRIES: PhoneCountry[];
301
214
 
302
215
  interface SelectOption {
303
216
  value: any;
@@ -305,7 +218,7 @@ interface SelectOption {
305
218
  disabled?: boolean;
306
219
  }
307
220
 
308
- interface Admin {
221
+ interface Admin extends Auditable {
309
222
  id: number;
310
223
  username: string;
311
224
  email: string;
@@ -321,16 +234,17 @@ interface Admin {
321
234
  reset_password_expires: Date;
322
235
  email_verified_at: Date;
323
236
  last_login: Date;
324
- created_at: Date;
325
- updated_at: Date;
326
- deleted_at: Date;
327
237
  }
328
238
 
329
239
  interface Auditable {
330
240
  created_at: Date;
331
241
  updated_at: Date;
242
+ deleted_at?: Date | null;
332
243
  is_published?: boolean;
333
244
  published_at?: Date;
245
+ published_by?: number;
246
+ deleted_by?: number;
247
+ deleted_by_admin?: Admin;
334
248
  created_by_admin?: Admin;
335
249
  updated_by_admin?: Admin;
336
250
  published_by_admin?: Admin;
@@ -363,30 +277,21 @@ interface DeleteConfirmationOpen {
363
277
  confirmationText: string;
364
278
  }
365
279
 
366
- interface AdminsResponse {
367
- statusCode: number;
368
- data: {
369
- admins: Admin[];
370
- total: number;
371
- };
372
- message: string;
373
- }
374
-
375
280
  interface Country {
376
- id: string;
281
+ id: number;
377
282
  name: string;
378
283
  iso2: string;
379
284
  }
380
285
 
381
286
  interface State {
382
- id: string;
287
+ id: number;
383
288
  name: string;
384
289
  country_id: number;
385
290
  country?: Country;
386
291
  }
387
292
 
388
293
  interface City {
389
- id: string;
294
+ id: number;
390
295
  name: string;
391
296
  search_text: string | null;
392
297
  state_id: number;
@@ -425,33 +330,48 @@ interface Venue extends Auditable {
425
330
  images: VenueImage[];
426
331
  }
427
332
 
428
- interface HallFloor {
333
+ interface HallFloor extends Auditable {
429
334
  id: number;
430
335
  name: string;
431
336
  level: number;
432
337
  max_capacity: number;
433
338
  description: string;
434
339
  hall_id: number;
435
- created_at: Date;
436
- updated_at: Date;
437
- deleted_at: Date | null;
438
340
  }
439
341
 
440
- interface Hall {
342
+ interface Hall extends Auditable {
441
343
  id: number;
442
344
  name: string;
443
345
  venue_id: number;
444
346
  venue?: Venue;
445
347
  hall_floors?: HallFloor[];
446
- created_at: Date;
447
- updated_at: Date;
448
- deleted_at: Date | null;
449
348
  }
450
349
 
451
- interface CountryResponse {
452
- data: Country;
453
- message: string;
454
- status: string;
350
+ interface BreadcrumbStep {
351
+ label: string;
352
+ href?: string;
353
+ icon?: string;
354
+ }
355
+
356
+ interface CommonFetchAllParams {
357
+ id?: number;
358
+ page?: number;
359
+ limit?: number;
360
+ search?: string;
361
+ sort_by?: string;
362
+ sort_order?: 'ASC' | 'DESC';
363
+ is_published?: boolean;
364
+ ids_in?: number[];
365
+ ids_not_in?: number[];
366
+ }
367
+
368
+ interface SidebarMenuItem {
369
+ labelKey: string;
370
+ icon: string;
371
+ path?: string;
372
+ role?: string[];
373
+ isOpen?: boolean;
374
+ submenu?: SidebarMenuItem[];
455
375
  }
456
376
 
457
377
  interface CountriesResponse {
@@ -463,8 +383,23 @@ interface CountriesResponse {
463
383
  status: string;
464
384
  }
465
385
 
466
- interface StateResponse {
467
- data: State;
386
+ interface CountryResponse {
387
+ data: Country;
388
+ message: string;
389
+ status: string;
390
+ }
391
+
392
+ interface FetchCountriesParams extends CommonFetchAllParams {
393
+ sort_by?: 'country.id' | 'country.name' | 'country.iso2' | 'country.created_at' | 'country.updated_at';
394
+ }
395
+
396
+ interface FetchStatesParams extends CommonFetchAllParams {
397
+ country_id?: number;
398
+ sort_by?: 'state.id' | 'state.name' | 'state.country_id' | 'state.search_text' | 'state.created_at' | 'state.updated_at';
399
+ }
400
+
401
+ interface StateResponse {
402
+ data: State;
468
403
  message: string;
469
404
  status: string;
470
405
  }
@@ -478,28 +413,40 @@ interface StatesResponse {
478
413
  statusCode: number;
479
414
  }
480
415
 
416
+ interface CitiesResponse {
417
+ data: {
418
+ cities: City[];
419
+ total: number;
420
+ };
421
+ message: string;
422
+ status: string;
423
+ }
424
+
481
425
  interface CityResponse {
482
426
  data: City;
483
427
  message: string;
484
428
  status: string;
485
429
  }
486
430
 
487
- interface CitiesResponse {
431
+ interface FetchCitiesParams extends CommonFetchAllParams {
432
+ state_id?: number;
433
+ sort_by?: 'city.id' | 'city.name' | 'city.state_id' | 'city.search_text' | 'city.created_at' | 'city.updated_at';
434
+ }
435
+
436
+ interface AdminsResponse {
437
+ statusCode: number;
488
438
  data: {
489
- cities: City[];
439
+ admins: Admin[];
490
440
  total: number;
491
441
  };
492
442
  message: string;
493
- status: string;
494
443
  }
495
444
 
496
- interface FetchCitiesParams {
497
- stateId?: number;
498
- page?: number;
499
- search?: string;
445
+ interface FetchAdminsParams extends CommonFetchAllParams {
446
+ sort_by?: 'admin.id' | 'admin.username' | 'admin.email' | 'admin.mobile' | 'admin.first_name' | 'admin.last_name' | 'admin.full_name' | 'admin.principal_role' | 'admin.email_verified_at' | 'admin.last_login' | 'admin.created_at' | 'admin.updated_at';
500
447
  }
501
448
 
502
- interface Customer {
449
+ interface Customer extends Auditable {
503
450
  username: string;
504
451
  email: string;
505
452
  mobile: string;
@@ -530,9 +477,6 @@ interface Customer {
530
477
  membership_expires_at: Date | null;
531
478
  id: number;
532
479
  is_active: boolean;
533
- created_at: Date;
534
- updated_at: Date;
535
- deleted_at: Date | null;
536
480
  }
537
481
 
538
482
  interface CustomerResponse {
@@ -550,94 +494,393 @@ interface CustomersResponse {
550
494
  message: string;
551
495
  }
552
496
 
553
- type ShowType = 'play' | 'musical' | 'concert' | 'dance' | 'opera' | 'comedy' | 'other';
497
+ interface FetchCustomersParams extends CommonFetchAllParams {
498
+ first_name?: string;
499
+ last_name?: string;
500
+ email?: string;
501
+ username?: string;
502
+ mobile?: string;
503
+ document_type?: Customer['document_type'];
504
+ document_number?: string;
505
+ address?: string;
506
+ sort_by?: 'customer.id' | 'customer.email' | 'customer.mobile' | 'customer.first_name' | 'customer.last_name' | 'customer.birthday_date' | 'customer.document_type' | 'customer.document_number' | 'customer.address' | 'customer.postal_code' | 'customer.country_id' | 'customer.city_id' | 'customer.state_id' | 'customer.phone' | 'customer.created_at';
507
+ }
554
508
 
555
- interface ShowImage {
556
- id: number;
557
- path: string;
558
- full_url: string;
559
- original_name: string;
560
- extension: string;
561
- size: number;
562
- mime_type: string;
509
+ declare enum OrderItemType {
510
+ TICKET = "TICKET",
511
+ PRODUCT = "PRODUCT",
512
+ GIFT_BOND = "GIFT_BOND",
513
+ CORPORATE_BOND = "CORPORATE_BOND",
514
+ VIP_RECHARGE = "VIP_RECHARGE"
515
+ }
516
+
517
+ declare enum OrderStatus {
518
+ ON_HOLD = "on-hold",
519
+ PENDING_PAYMENT = "pending-payment",
520
+ PROCESSING = "processing",
521
+ COMPLETED = "completed",
522
+ FAILED = "failed",
523
+ CANCELLED = "cancelled",
524
+ REFUNDED = "refunded"
525
+ }
526
+
527
+ declare enum CreatorType {
528
+ ADMIN = "admin",
529
+ CUSTOMER = "customer"
530
+ }
531
+
532
+ declare enum PaymentMethod {
533
+ PAYROLL = "payroll",
534
+ CASH = "cash",
535
+ DATAFONO = "datafono",
536
+ INTERNAL_EXCHANGE = "internal_exchange",
537
+ CLIENT_EXCHANGE = "client_exchange",
538
+ MERCADO_PAGO = "mercado_pago"
539
+ }
540
+
541
+ declare enum RoomMapElementType {
542
+ SEAT_BLOCK = "seat_block",
543
+ TABLE = "table",
544
+ ZONE = "zone",
545
+ EXIT = "exit",
546
+ STAGE = "stage",
547
+ PRODUCTION_AREA = "production_area",
548
+ UNAVAILABLE_SPACE = "unavailable_space",
549
+ STAIR = "stair",
550
+ HALLWAY = "hallway"
551
+ }
552
+
553
+ interface RoomMapPosition {
554
+ x: number;
555
+ y: number;
556
+ }
557
+
558
+ interface RoomMapSize {
563
559
  width: number;
564
560
  height: number;
565
- show_id: number;
566
- created_at: Date;
567
561
  }
568
562
 
569
- interface Show extends Auditable {
570
- id: number;
563
+ interface RoomMapBaseElement {
564
+ id: string;
565
+ type: RoomMapElementType;
566
+ position: RoomMapPosition;
567
+ size: RoomMapSize;
568
+ rotation: number;
569
+ name?: string;
570
+ isLocked: boolean;
571
+ isVisible: boolean;
572
+ zIndex: number;
573
+ }
574
+
575
+ interface RoomMapExitElement extends RoomMapBaseElement {
576
+ type: RoomMapElementType.EXIT;
577
+ exitName?: string;
578
+ exitType: 'emergency' | 'regular';
579
+ width: number;
580
+ }
581
+
582
+ interface RoomMapProductionAreaElement extends RoomMapBaseElement {
583
+ type: RoomMapElementType.PRODUCTION_AREA;
584
+ areaName?: string;
585
+ areaType: 'lighting' | 'sound' | 'backstage' | 'orchestra' | 'custom';
586
+ }
587
+
588
+ interface RoomMapSeatElement extends RoomMapBaseElement {
589
+ type: RoomMapElementType.SEAT_BLOCK;
590
+ seatNumber?: string;
591
+ isAvailable: boolean;
592
+ priceCategory?: string;
593
+ }
594
+
595
+ declare enum RoomMapElementOrientation {
596
+ TOP = "top",
597
+ RIGHT = "right",
598
+ BOTTOM = "bottom",
599
+ LEFT = "left",
600
+ CENTER = "center"
601
+ }
602
+
603
+ interface RoomMapStageElement extends RoomMapBaseElement {
604
+ type: RoomMapElementType.STAGE;
605
+ stageName?: string;
606
+ orientation: RoomMapElementOrientation;
607
+ isMainStage: boolean;
608
+ }
609
+
610
+ interface RoomMapTableElement extends RoomMapBaseElement {
611
+ type: RoomMapElementType.TABLE;
612
+ tableNumber?: string;
613
+ capacity: number;
614
+ shape: 'round' | 'rectangular' | 'square';
615
+ }
616
+
617
+ interface RoomMapUnavailableElement extends RoomMapBaseElement {
618
+ type: RoomMapElementType.UNAVAILABLE_SPACE;
619
+ reason?: string;
620
+ }
621
+
622
+ interface RoomMapZoneElement extends RoomMapBaseElement {
623
+ type: RoomMapElementType.ZONE;
624
+ zoneName: string;
625
+ zoneType: 'vip' | 'general' | 'premium' | 'balcony' | 'custom';
626
+ color: string;
627
+ capacity?: number;
628
+ }
629
+
630
+ type RoomMapCanvasElement = RoomMapSeatElement | RoomMapTableElement | RoomMapZoneElement | RoomMapExitElement | RoomMapStageElement | RoomMapProductionAreaElement | RoomMapUnavailableElement;
631
+
632
+ type RoomMapSeatDisplayState = 'normal' | 'accessible' | 'non_existent';
633
+
634
+ type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
635
+
636
+ type FeedbackModalType = 'loading' | 'success' | 'info' | 'warning' | 'error';
637
+
638
+ type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';
639
+
640
+ type BadgeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
641
+
642
+ type BreadcrumbTheme = 'light' | 'dark';
643
+
644
+ type TextFontSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl';
645
+
646
+ interface FeedbackModalElement {
647
+ id: string;
648
+ type: FeedbackModalType;
571
649
  title: string;
650
+ isOpen: WritableSignal<boolean>;
651
+ message?: string;
652
+ showHeader?: boolean;
653
+ showCloseButton?: boolean;
654
+ showTitle?: boolean;
655
+ closeModal?: void;
656
+ }
657
+
658
+ declare enum FileType {
659
+ IMAGE = "image",
660
+ PDF = "pdf",
661
+ EXCEL = "excel",
662
+ WORD = "word",
663
+ TEXT = "text",
664
+ DEFAULT = "default"
665
+ }
666
+
667
+ declare enum CouponApplicability {
668
+ GENERAL = "GENERAL",
669
+ CUSTOMER_EMAIL = "CUSTOMER_EMAIL",
670
+ MEMBERSHIP_TYPE = "MEMBERSHIP_TYPE",
671
+ SHOWS = "SHOWS",
672
+ PERFORMANCES = "PERFORMANCES"
673
+ }
674
+
675
+ declare enum CouponDiscountType {
676
+ PERCENTAGE = "PERCENTAGE",
677
+ FIXED = "FIXED"
678
+ }
679
+
680
+ declare enum CouponStatus {
681
+ ACTIVE = "ACTIVE",
682
+ INACTIVE = "INACTIVE",
683
+ EXPIRED = "EXPIRED",
684
+ CONSUMED = "CONSUMED"
685
+ }
686
+
687
+ declare enum CorporateBondStatus {
688
+ ACTIVE = "ACTIVE",
689
+ INACTIVE = "INACTIVE",
690
+ PENDING = "PENDING",
691
+ PAYMENT_FAILED = "PAYMENT_FAILED",
692
+ EXPIRED = "EXPIRED",
693
+ CONSUMED = "CONSUMED"
694
+ }
695
+
696
+ declare enum PerformanceStatus {
697
+ SCHEDULED = "scheduled",
698
+ OPEN = "open",
699
+ CLOSED = "closed",
700
+ CANCELLED = "cancelled",
701
+ COMPLETED = "completed",
702
+ POSTPONED = "postponed"
703
+ }
704
+
705
+ declare enum PerformanceTicketStatus {
706
+ AVAILABLE = "available",
707
+ RESERVED = "reserved",
708
+ SOLD = "sold",
709
+ BLOCKED = "blocked"
710
+ }
711
+
712
+ declare enum GiftBondStatus {
713
+ ACTIVE = "ACTIVE",
714
+ INACTIVE = "INACTIVE"
715
+ }
716
+
717
+ declare enum GiftBondPurchaseStatus {
718
+ AVAILABLE = "AVAILABLE",
719
+ REDEEMED = "REDEEMED",
720
+ EXPIRED = "EXPIRED",
721
+ CANCELLED = "CANCELLED"
722
+ }
723
+
724
+ declare enum TransactionStatus {
725
+ PENDING = "PENDING",
726
+ APPROVED = "APPROVED",
727
+ REJECTED = "REJECTED",
728
+ ERROR = "ERROR"
729
+ }
730
+
731
+ declare enum VipCardStatus {
732
+ ACTIVE = "ACTIVE",
733
+ INACTIVE = "INACTIVE",
734
+ EXPIRED = "EXPIRED"
735
+ }
736
+
737
+ declare enum VipTransactionType {
738
+ INITIAL_RECHARGE = "INITIAL_RECHARGE",
739
+ RECHARGE = "RECHARGE",
740
+ PURCHASE_PAYMENT = "PURCHASE_PAYMENT"
741
+ }
742
+
743
+ declare enum MembershipStatus {
744
+ ACTIVE = "ACTIVE",
745
+ INACTIVE = "INACTIVE"
746
+ }
747
+
748
+ interface FetchProductCategoriesParams extends CommonFetchAllParams {
749
+ name?: string;
750
+ slug?: string;
751
+ sort_by?: 'category.id' | 'category.name' | 'category.slug' | 'category.created_at';
752
+ }
753
+
754
+ interface ProductCategory extends Auditable {
755
+ id: number;
756
+ name: string;
572
757
  slug: string;
573
- description: string;
574
- duration_minutes: number | null;
575
- type_of_costs: string | null;
576
- service_fee: number | null;
577
- show_type: ShowType | null;
578
- pulep: string | null;
579
- minimum_age: number | null;
580
- show_category_id: number | null;
581
- default_room_map_id: number | null;
582
- published_at?: Date;
583
- is_published: boolean;
584
- images: ShowImage[];
585
- terms_and_conditions: string;
586
- performances_quantity?: number;
587
758
  }
588
759
 
589
- interface ShowResponse {
760
+ interface ProductCategoriesResponse {
590
761
  statusCode: number;
591
- data: Show;
762
+ data: {
763
+ categories: ProductCategory[];
764
+ total: number;
765
+ };
592
766
  message: string;
593
767
  }
594
768
 
595
- interface ShowsResponseInterface {
769
+ interface ProductCategoryResponse {
770
+ statusCode: number;
771
+ data: ProductCategory;
772
+ message: string;
773
+ }
774
+
775
+ interface FetchProductTagsParams extends CommonFetchAllParams {
776
+ name?: string;
777
+ slug?: string;
778
+ sort_by?: 'tag.id' | 'tag.name' | 'tag.slug' | 'tag.created_at';
779
+ }
780
+
781
+ interface ProductTag extends Auditable {
782
+ id: number;
783
+ name: string;
784
+ slug: string;
785
+ }
786
+
787
+ interface ProductTagResponse {
788
+ statusCode: number;
789
+ data: ProductTag;
790
+ message: string;
791
+ }
792
+
793
+ interface ProductTagsResponse {
596
794
  statusCode: number;
597
795
  data: {
598
- shows: Show[];
796
+ tags: ProductTag[];
599
797
  total: number;
600
798
  };
601
799
  message: string;
602
800
  }
603
801
 
604
- interface FetchShowsParams {
605
- page?: number;
606
- limit?: number;
607
- search?: string;
608
- date?: string;
802
+ interface FetchProductTypesParams extends CommonFetchAllParams {
803
+ name?: string;
804
+ slug?: string;
805
+ sort_by?: 'type.id' | 'type.name' | 'type.slug' | 'type.created_at';
609
806
  }
610
807
 
611
- interface PriceZone {
808
+ interface ProductType extends Auditable {
612
809
  id: number;
613
810
  name: string;
614
- color: string;
615
- normal_price: number | null;
616
- is_active: boolean;
617
- elements: any[];
618
- room_map_id: number | null;
811
+ slug: string;
812
+ }
813
+
814
+ interface ProductTypeResponse {
815
+ statusCode: number;
816
+ data: ProductType;
817
+ message: string;
818
+ }
819
+
820
+ interface ProductTypesResponse {
821
+ statusCode: number;
822
+ data: {
823
+ types: ProductType[];
824
+ total: number;
825
+ };
826
+ message: string;
827
+ }
828
+
829
+ interface ProductImage {
830
+ id: number;
831
+ path: string;
832
+ full_url: string;
833
+ original_name: string;
834
+ extension: string;
835
+ size: number;
836
+ mime_type: string;
837
+ width: number;
838
+ height: number;
839
+ product_id: number;
840
+ product: Product;
841
+ created_at: Date;
842
+ }
843
+
844
+ interface Product extends Auditable {
845
+ id: number;
846
+ name: string;
847
+ description?: string;
848
+ short_description?: string;
849
+ price: number;
850
+ stock_quantity: number;
851
+ slug: string;
852
+ sku?: string;
853
+ is_limited_edition: boolean;
854
+ deleted_at: Date | null;
855
+ categories?: ProductCategory[];
856
+ tags?: ProductTag[];
857
+ types?: ProductType[];
858
+ images?: ProductImage[];
859
+ }
860
+
861
+ interface ShowImage {
862
+ id: number;
863
+ path: string;
864
+ full_url: string;
865
+ original_name: string;
866
+ extension: string;
867
+ size: number;
868
+ mime_type: string;
869
+ width: number;
870
+ height: number;
871
+ show_id: number;
619
872
  created_at: Date;
620
- updated_at: Date;
621
- created_by: number;
622
- updated_by: number;
623
873
  }
624
874
 
625
- interface Product extends Auditable {
875
+ interface PriceZone extends Auditable {
626
876
  id: number;
627
877
  name: string;
628
- description?: string;
629
- short_description?: string;
630
- price: number;
631
- stock_quantity: number;
632
- slug: string;
633
- sku?: string;
634
- is_limited_edition: boolean;
878
+ color: string;
879
+ normal_price: number | null;
635
880
  is_active: boolean;
636
- deleted_at: Date | null;
637
- categories?: any[];
638
- tags?: any[];
639
- types?: any[];
640
- images?: any[];
881
+ elements: any[];
882
+ room_map_id: number | null;
883
+ room_map?: RoomMap;
641
884
  }
642
885
 
643
886
  interface NumerationConfig {
@@ -675,7 +918,7 @@ interface RoomMapElementTemplate {
675
918
  price_zone?: PriceZone;
676
919
  }
677
920
 
678
- interface RoomMap {
921
+ interface RoomMap extends Auditable {
679
922
  id: number;
680
923
  name: string;
681
924
  canvas_settings: {
@@ -691,8 +934,6 @@ interface RoomMap {
691
934
  related_product_ids: number[];
692
935
  products?: Product[];
693
936
  venue_name?: string;
694
- created_at: Date;
695
- updated_at: Date;
696
937
  }
697
938
 
698
939
  interface RoomMapCanvasConfiguration {
@@ -734,7 +975,7 @@ interface ElementPropertiesTab {
734
975
  elements_access: string[];
735
976
  }
736
977
 
737
- interface Performance {
978
+ interface Performance extends Auditable {
738
979
  id: number;
739
980
  start_time: Date | string;
740
981
  end_time: Date | string;
@@ -744,8 +985,140 @@ interface Performance {
744
985
  show?: Show;
745
986
  room_map: RoomMap;
746
987
  room_map_id: number;
747
- created_at: Date;
748
- updated_at: Date;
988
+ performance_tickets?: PerformanceTicket[];
989
+ can_delete?: boolean;
990
+ can_cancel?: boolean;
991
+ can_modify?: boolean;
992
+ can_reserve?: boolean;
993
+ }
994
+
995
+ interface FetchShowCategoriesParams extends CommonFetchAllParams {
996
+ name?: string;
997
+ slug?: string;
998
+ sort_by?: 'category.id' | 'category.name' | 'category.slug' | 'category.created_at';
999
+ }
1000
+
1001
+ interface ShowCategory extends Auditable {
1002
+ id: number;
1003
+ name: string;
1004
+ slug: string;
1005
+ }
1006
+
1007
+ interface ShowCategoriesResponse {
1008
+ statusCode: number;
1009
+ data: {
1010
+ categories: ShowCategory[];
1011
+ total: number;
1012
+ };
1013
+ message: string;
1014
+ }
1015
+
1016
+ interface ShowCategoryResponse {
1017
+ statusCode: number;
1018
+ data: ShowCategory;
1019
+ message: string;
1020
+ }
1021
+
1022
+ interface FetchShowGendersParams extends CommonFetchAllParams {
1023
+ name?: string;
1024
+ slug?: string;
1025
+ sort_by?: 'gender.id' | 'gender.name' | 'gender.slug' | 'gender.created_at';
1026
+ }
1027
+
1028
+ interface ShowGender extends Auditable {
1029
+ id: number;
1030
+ name: string;
1031
+ slug: string;
1032
+ }
1033
+
1034
+ interface ShowGenderResponse {
1035
+ statusCode: number;
1036
+ data: ShowGender;
1037
+ message: string;
1038
+ }
1039
+
1040
+ interface ShowGendersResponse {
1041
+ statusCode: number;
1042
+ data: {
1043
+ genders: ShowGender[];
1044
+ total: number;
1045
+ };
1046
+ message: string;
1047
+ }
1048
+
1049
+ interface FetchShowTypesParams extends CommonFetchAllParams {
1050
+ name?: string;
1051
+ slug?: string;
1052
+ sort_by?: 'type.id' | 'type.name' | 'type.slug' | 'type.created_at';
1053
+ }
1054
+
1055
+ interface ShowType extends Auditable {
1056
+ id: number;
1057
+ name: string;
1058
+ slug: string;
1059
+ }
1060
+
1061
+ interface ShowTypesResponse {
1062
+ statusCode: number;
1063
+ data: {
1064
+ types: ShowType[];
1065
+ total: number;
1066
+ };
1067
+ message: string;
1068
+ }
1069
+
1070
+ interface ShowTypeResponse {
1071
+ statusCode: number;
1072
+ data: ShowType;
1073
+ message: string;
1074
+ }
1075
+
1076
+ interface Show extends Auditable {
1077
+ id: number;
1078
+ title: string;
1079
+ slug: string;
1080
+ description: string;
1081
+ duration_minutes: number | null;
1082
+ type_of_costs: string | null;
1083
+ service_fee: number | null;
1084
+ show_type_id?: number | null;
1085
+ show_type?: ShowType | null;
1086
+ pulep: string | null;
1087
+ minimum_age: number | null;
1088
+ show_gender?: ShowGender | null;
1089
+ show_gender_id: number | null;
1090
+ show_category?: ShowCategory | null;
1091
+ show_category_id: number | null;
1092
+ default_room_map?: RoomMap | null;
1093
+ default_room_map_id: number | null;
1094
+ is_published: boolean;
1095
+ images: ShowImage[];
1096
+ terms_and_conditions: string | null;
1097
+ performances_quantity?: number;
1098
+ performances?: Performance[];
1099
+ next_performance?: Performance;
1100
+ days_of_week?: number[];
1101
+ unique_start_times?: string[];
1102
+ }
1103
+
1104
+ interface FindAllPerformancesParams {
1105
+ roomMapId?: number;
1106
+ showId?: number;
1107
+ hallId?: number;
1108
+ page?: number;
1109
+ search?: string;
1110
+ limit?: number;
1111
+ }
1112
+
1113
+ interface PerformanceBookingDataResponse {
1114
+ statusCode: number;
1115
+ data: {
1116
+ performance: Performance;
1117
+ room_map: RoomMap;
1118
+ show: Show;
1119
+ tickets: PerformanceTicket[];
1120
+ };
1121
+ message: string;
749
1122
  }
750
1123
 
751
1124
  interface PerformanceResponse {
@@ -754,6 +1127,18 @@ interface PerformanceResponse {
754
1127
  message: string;
755
1128
  }
756
1129
 
1130
+ interface PerformanceAvailableDay {
1131
+ date: string;
1132
+ count: number;
1133
+ }
1134
+ interface PerformancesAvailableDaysResponse {
1135
+ statusCode: number;
1136
+ data: {
1137
+ days: PerformanceAvailableDay[];
1138
+ };
1139
+ message: string;
1140
+ }
1141
+
757
1142
  interface PerformancesResponseInterface {
758
1143
  statusCode: number;
759
1144
  data: {
@@ -763,7 +1148,7 @@ interface PerformancesResponseInterface {
763
1148
  message: string;
764
1149
  }
765
1150
 
766
- interface OrderItem {
1151
+ interface OrderItem extends Auditable {
767
1152
  id: number;
768
1153
  order: Order;
769
1154
  item_type: OrderItemType;
@@ -772,30 +1157,26 @@ interface OrderItem {
772
1157
  quantity: number;
773
1158
  unit_price: number;
774
1159
  normal_price: number;
775
- discounted_price: number;
1160
+ discounted_price: number | null;
776
1161
  ticket_id?: number;
777
1162
  ticket_uuid?: string;
1163
+ ticket?: PerformanceTicket;
778
1164
  item: Show | Product;
779
- created_at: Date;
780
- updated_at: Date;
781
- created_by: number;
782
- updated_by: number;
783
1165
  }
784
1166
 
785
1167
  interface Coupon extends Auditable {
786
1168
  id: number;
787
1169
  code: string;
1170
+ billing_code: string;
788
1171
  description?: string;
789
1172
  discount_type: CouponDiscountType;
790
- discount_type_string?: string;
791
1173
  discount_value: number;
792
- discount_value_string?: string;
793
1174
  start_date: Date | null;
794
1175
  end_date: Date | null;
795
1176
  max_uses: number | null;
796
- max_uses_per_user?: number | null;
1177
+ max_uses_per_customer?: number | null;
797
1178
  uses_count: number;
798
- is_active: boolean;
1179
+ status: CouponStatus;
799
1180
  applicability_type: CouponApplicability;
800
1181
  applicable_customer_emails: string[] | null;
801
1182
  applicable_membership_types: string[] | null;
@@ -803,9 +1184,11 @@ interface Coupon extends Auditable {
803
1184
  applicable_performance_ids?: number[];
804
1185
  applicable_price_zone_ids?: number[];
805
1186
  applies_to_service_fee?: boolean;
1187
+ orders?: Order[];
1188
+ customers?: Customer[];
806
1189
  }
807
1190
 
808
- interface CorporateBond {
1191
+ interface CorporateBond extends Auditable {
809
1192
  id: number;
810
1193
  name: string;
811
1194
  description?: string;
@@ -815,11 +1198,13 @@ interface CorporateBond {
815
1198
  quantity: number;
816
1199
  status: CorporateBondStatus;
817
1200
  value: number;
1201
+ purchase_value: number;
1202
+ buyer_customer_id: number | null;
1203
+ buyer: Customer | null;
1204
+ order_id: number | null;
1205
+ order: Order | null;
1206
+ payment_method?: PaymentMethod;
818
1207
  codes: CorporateBondCode[];
819
- created_at: Date;
820
- updated_at: Date;
821
- created_by: number;
822
- updated_by: number;
823
1208
  }
824
1209
 
825
1210
  interface CorporateBondCode {
@@ -828,6 +1213,7 @@ interface CorporateBondCode {
828
1213
  corporate_bond_id: number;
829
1214
  code: string;
830
1215
  is_used: boolean;
1216
+ status: CorporateBondStatus;
831
1217
  used_at: Date | null;
832
1218
  created_at: Date;
833
1219
  }
@@ -849,38 +1235,192 @@ interface ValidateCorporateBondResponse {
849
1235
  statusCode: number;
850
1236
  }
851
1237
 
852
- interface Order {
1238
+ interface GiftBondImage {
1239
+ id: number;
1240
+ path: string;
1241
+ full_url: string;
1242
+ original_name: string;
1243
+ extension: string;
1244
+ size: number;
1245
+ mime_type: string;
1246
+ width: number;
1247
+ height: number;
1248
+ is_featured: boolean;
1249
+ gift_bond_id: number;
1250
+ gift_bond: GiftBond;
1251
+ created_at: Date;
1252
+ }
1253
+
1254
+ interface GiftBond extends Auditable {
1255
+ id: number;
1256
+ name: string;
1257
+ description?: string;
1258
+ slug?: string;
1259
+ status: GiftBondStatus;
1260
+ value: number;
1261
+ duration_days: number;
1262
+ page_content?: string;
1263
+ purchases_total?: number;
1264
+ purchases_redeemed?: number;
1265
+ images?: GiftBondImage[];
1266
+ }
1267
+
1268
+ interface GiftBondResponse {
1269
+ statusCode: number;
1270
+ data: GiftBond;
1271
+ message: string;
1272
+ }
1273
+
1274
+ interface GiftBondsResponse {
1275
+ statusCode: number;
1276
+ data: {
1277
+ gift_bonds: GiftBond[];
1278
+ total: number;
1279
+ };
1280
+ message: string;
1281
+ }
1282
+
1283
+ interface GiftBondPurchase extends Auditable {
1284
+ id: number;
1285
+ code: string;
1286
+ original_value: number;
1287
+ used_value: number | null;
1288
+ lost_value: number | null;
1289
+ beneficiary_email: string;
1290
+ beneficiary: Customer | null;
1291
+ personalized_message: string | null;
1292
+ status: GiftBondPurchaseStatus;
1293
+ purchased_at: string;
1294
+ expires_at: string;
1295
+ redeemed_at: string | null;
1296
+ gift_bond?: GiftBond;
1297
+ gift_bond_id: number;
1298
+ buyer_customer_id: number;
1299
+ buyer: Customer;
1300
+ order: Order | null;
1301
+ order_id: number;
1302
+ redemption_order_id: number | null;
1303
+ redemption_order: Order | null;
1304
+ }
1305
+
1306
+ interface ValidateGiftBondResponse {
1307
+ data: {
1308
+ valid: boolean;
1309
+ message: string;
1310
+ code: string;
1311
+ bond?: GiftBondPurchase;
1312
+ };
1313
+ statusCode: number;
1314
+ message: string;
1315
+ }
1316
+
1317
+ interface GiftBondPurchaseResponse {
1318
+ statusCode: number;
1319
+ data: GiftBondPurchase;
1320
+ message: string;
1321
+ }
1322
+
1323
+ interface GiftBondPurchasesResponse {
1324
+ statusCode: number;
1325
+ data: {
1326
+ items: GiftBondPurchase[];
1327
+ total: number;
1328
+ };
1329
+ message: string;
1330
+ }
1331
+
1332
+ interface Transaction extends Auditable {
1333
+ id: number;
1334
+ status: TransactionStatus;
1335
+ amount: number;
1336
+ currency: string;
1337
+ payment_gateway: string;
1338
+ gateway_transaction_id: string;
1339
+ gateway_response: any;
1340
+ order: Order;
1341
+ }
1342
+
1343
+ interface OrderBillingInfo {
1344
+ first_name: string;
1345
+ last_name: string;
1346
+ email: string;
1347
+ mobile: string;
1348
+ document_type: string;
1349
+ document_number: string;
1350
+ address: string;
1351
+ city_id: number;
1352
+ postal_code?: string;
1353
+ address_notes?: string;
1354
+ payment_method: PaymentMethod;
1355
+ terms_accepted: boolean;
1356
+ data_processing_accepted: boolean;
1357
+ comments?: string;
1358
+ products?: Array<{
1359
+ id: number;
1360
+ quantity: number;
1361
+ }>;
1362
+ }
1363
+
1364
+ interface OrderShowSnapshot {
1365
+ id: number;
1366
+ title: string;
1367
+ description: string | null;
1368
+ service_fee: number | null;
1369
+ }
1370
+
1371
+ interface OrderPerformanceSnapshot {
1372
+ id: number;
1373
+ start_time: Performance['start_time'];
1374
+ end_time: Performance['end_time'];
1375
+ published: boolean;
1376
+ status: PerformanceStatus;
1377
+ }
1378
+
1379
+ interface Order extends Auditable {
853
1380
  id: number;
854
1381
  uuid: string;
855
- customer: Customer;
1382
+ customer_id: number | null;
1383
+ customer: Customer | null;
856
1384
  customer_name?: string;
857
1385
  customer_email?: string;
858
1386
  order_items: OrderItem[];
859
1387
  order_items_quantity?: number;
860
- discount_amount: number;
1388
+ transactions: Transaction[];
1389
+ sub_total: number;
1390
+ discount_amount: number | null;
861
1391
  total: number;
1392
+ sub_total_discounted: number | null;
862
1393
  total_discounted: number;
863
- sub_total: number;
864
- sub_total_discounted: number;
865
- service_fee: number;
866
- service_fee_discounted: number;
867
- coupon: Coupon;
868
- coupon_snapshot: Record<string, any>;
869
- corporate_bond_code: CorporateBondCode;
870
- corporate_bond_code_snapshot: Record<string, any>;
1394
+ service_fee: number | null;
1395
+ service_fee_discounted: number | null;
1396
+ coupon: Coupon | null;
1397
+ coupon_snapshot: Record<string, any> | null;
871
1398
  status: OrderStatus;
872
- show_snapshot: Record<string, any>;
873
- performance_snapshot: Record<string, any>;
874
- created_at: Date;
875
- updated_at: Date;
876
- payment_method: string;
1399
+ show_snapshot: OrderShowSnapshot | null;
1400
+ performance_snapshot: OrderPerformanceSnapshot | null;
1401
+ payment_method: PaymentMethod | null;
877
1402
  terms_accepted: boolean;
878
1403
  data_processing_accepted: boolean;
879
- billing_info: Partial<Customer>;
880
- comments: string;
881
- address_notes: string;
1404
+ billing_info: OrderBillingInfo | null;
1405
+ corporate_bond_code_snapshot: Record<string, any> | null;
1406
+ gift_bond_snapshot: Record<string, any> | null;
1407
+ corporate_bond_code: CorporateBondCode | null;
1408
+ corporate_bond_code_id: number | null;
1409
+ gift_bond: GiftBond | null;
1410
+ gift_bond_id: number | null;
1411
+ /** Snapshot de la Tarjeta VIP usada como método de pago (VIP_BALANCE). */
1412
+ vip_snapshot: Record<string, any> | null;
1413
+ vip_card_id: number | null;
1414
+ /** Snapshot del Abono (subscription) usado para redimir la boleta. */
1415
+ subscription_snapshot: Record<string, any> | null;
1416
+ subscription_id: number | null;
1417
+ comments: string | null;
1418
+ address_notes: string | null;
1419
+ mercado_pago_preference_id: string;
882
1420
  created_by: number;
1421
+ created_by_type: CreatorType;
883
1422
  updated_by: number;
1423
+ updated_by_type: CreatorType;
884
1424
  }
885
1425
 
886
1426
  interface OrderResponse {
@@ -898,7 +1438,15 @@ interface OrdersResponse {
898
1438
  message: string;
899
1439
  }
900
1440
 
901
- interface PerformanceTicket {
1441
+ interface MercadoPagoPreference {
1442
+ data: {
1443
+ id: string;
1444
+ init_point: string;
1445
+ sandbox_init_point: string;
1446
+ };
1447
+ }
1448
+
1449
+ interface PerformanceTicket extends Auditable {
902
1450
  id: number;
903
1451
  uuid: string;
904
1452
  is_accessible: boolean;
@@ -912,35 +1460,181 @@ interface PerformanceTicket {
912
1460
  presale_price: number | null;
913
1461
  status: PerformanceTicketStatus;
914
1462
  reserved_until: Date | null;
1463
+ reserved_by_type: CreatorType | null;
1464
+ reserved_by: number | null;
1465
+ reserved_by_admin: Admin | null;
1466
+ reserved_by_customer: number | null;
1467
+ reserved_customer: Customer | null;
1468
+ order: Order | null;
915
1469
  order_id: number | null;
916
1470
  customer_id: number | null;
917
1471
  checked_in: boolean;
918
1472
  checked_in_at: Date | null;
1473
+ checked_in_by: number | null;
1474
+ checked_in_by_admin: Admin | null;
919
1475
  order_items: OrderItem[];
920
1476
  element_qty?: number;
921
- created_at: Date;
922
- updated_at: Date;
1477
+ blocked_at: Date | null;
1478
+ blocked_by: number | null;
1479
+ blocked_by_admin: Admin | null;
1480
+ }
1481
+
1482
+ interface TicketMapSeatPosition {
1483
+ rowIndex: number;
1484
+ colIndex: number;
1485
+ seatLabel: string;
1486
+ }
1487
+
1488
+ interface TicketMapTableChairPosition {
1489
+ index: number;
1490
+ angle: number;
1491
+ x: number;
1492
+ y: number;
1493
+ }
1494
+
1495
+ interface ElementRenderData {
1496
+ elementId: number;
1497
+ hallFloorId: number | null;
1498
+ type: RoomMapElementType;
1499
+ shapeConfig: Record<string, any>;
1500
+ tickets: PerformanceTicket[];
1501
+ ticketByNumeration: Map<string, PerformanceTicket>;
1502
+ elementName: string;
1503
+ seatPositions?: TicketMapSeatPosition[][];
1504
+ chairPositions?: TicketMapTableChairPosition[];
1505
+ zoneCapacity?: number;
1506
+ }
1507
+
1508
+ interface TicketMapTooltipData {
1509
+ x: number;
1510
+ y: number;
1511
+ elementName: string;
1512
+ seatLabel: string | null;
1513
+ price: number;
1514
+ status: PerformanceTicketStatus;
1515
+ statusLabel: string;
1516
+ statusColor: string;
1517
+ isSelected: boolean;
1518
+ ticketId: number;
1519
+ }
1520
+
1521
+ interface TicketMapZoneQuantityState {
1522
+ elementId: number;
1523
+ selectedCount: number;
1524
+ maxCapacity: number;
1525
+ }
1526
+
1527
+ interface ReservePerformanceDto {
1528
+ ticket_ids: number[];
1529
+ products?: {
1530
+ id: number;
1531
+ quantity: number;
1532
+ }[];
1533
+ coupon_code?: string;
1534
+ gift_bond_code?: string;
1535
+ corporate_bond_code?: string;
1536
+ payment_method?: string;
1537
+ billing?: {
1538
+ first_name: string;
1539
+ last_name: string;
1540
+ email: string;
1541
+ mobile: string;
1542
+ document_type: string;
1543
+ document_number: string;
1544
+ address: string;
1545
+ city_id: number;
1546
+ postal_code?: string;
1547
+ address_notes?: string;
1548
+ terms_accepted: boolean;
1549
+ data_processing_accepted: boolean;
1550
+ comments?: string;
1551
+ };
1552
+ }
1553
+
1554
+ interface TicketMapZoomConfig {
1555
+ minZoom: number;
1556
+ maxZoom: number;
1557
+ zoomStep: number;
1558
+ scaleBy: number;
1559
+ }
1560
+
1561
+ interface HallFloorOption {
1562
+ id: number | null;
1563
+ name: string;
1564
+ }
1565
+
1566
+ declare enum SelectedDiscountCardType {
1567
+ COUPON = "COUPON",
1568
+ CORPORATE_BOND = "CORPORATE_BOND",
1569
+ GIFT_BOND = "GIFT_BOND",
1570
+ VIP = "VIP",
1571
+ SUBSCRIPTION = "SUBSCRIPTION"
1572
+ }
1573
+
1574
+ interface SelectedDiscountCard {
1575
+ name: string;
1576
+ type: SelectedDiscountCardType;
1577
+ value: number;
1578
+ discountType: 'percentage' | 'fixed';
1579
+ /**
1580
+ * Si el descuento seleccionado exonera la tarifa de servicio (Tarjeta
1581
+ * VIP o Abono, según su `service_fee_exempt`).
1582
+ */
1583
+ serviceFeeExempt?: boolean;
1584
+ }
1585
+
1586
+ /** Forma compacta de un ticket recibida por SSE (ver
1587
+ * SeatAvailabilitySseService) — sin relaciones, solo lo necesario para
1588
+ * repintar el mapa y validar disponibilidad en el cliente. */
1589
+ interface SeatStatusUpdate {
1590
+ id: number;
1591
+ status: PerformanceTicketStatus;
1592
+ room_map_element_id: number;
1593
+ reserved_until: Date | null;
1594
+ }
1595
+ type SeatEventMessage = {
1596
+ type: 'snapshot';
1597
+ performance_id: number;
1598
+ tickets: SeatStatusUpdate[];
1599
+ ts: number;
1600
+ } | {
1601
+ type: 'heartbeat';
1602
+ ts: number;
1603
+ };
1604
+
1605
+ interface AdmissionStatus {
1606
+ active: boolean;
1607
+ position: number | null;
1608
+ }
1609
+ interface AdmissionJoinResponse extends AdmissionStatus {
1610
+ ticket: string;
1611
+ expires_in: number;
1612
+ }
1613
+ type AdmissionEventMessage = ({
1614
+ type: 'status';
1615
+ } & AdmissionStatus & {
1616
+ ts: number;
1617
+ }) | {
1618
+ type: 'heartbeat';
1619
+ ts: number;
1620
+ };
1621
+
1622
+ interface FetchShowsParams extends CommonFetchAllParams {
1623
+ date?: string;
1624
+ sort_by?: 'show.id' | 'show.created_at' | 'show.title' | 'show.slug' | 'show.type_of_costs' | 'show.pulep' | 'show_category.name' | 'show_gender.name';
923
1625
  }
924
1626
 
925
- interface PerformanceBookingDataResponse {
1627
+ interface ShowResponse {
926
1628
  statusCode: number;
927
- data: {
928
- performance: Performance;
929
- room_map: RoomMap;
930
- show: Show;
931
- tickets: PerformanceTicket[];
932
- };
1629
+ data: Show;
933
1630
  message: string;
934
1631
  }
935
1632
 
936
- interface PerformanceAvailableDay {
937
- date: string;
938
- count: number;
939
- }
940
- interface PerformancesAvailableDaysResponse {
1633
+ interface ShowsResponseInterface {
941
1634
  statusCode: number;
942
1635
  data: {
943
- days: PerformanceAvailableDay[];
1636
+ shows: Show[];
1637
+ total: number;
944
1638
  };
945
1639
  message: string;
946
1640
  }
@@ -997,12 +1691,31 @@ interface FetchDailyPerformancesParams {
997
1691
  limit?: number;
998
1692
  }
999
1693
 
1694
+ interface FetchProductsParams extends CommonFetchAllParams {
1695
+ name?: string;
1696
+ category_id?: number;
1697
+ tag_id?: number;
1698
+ type_id?: number;
1699
+ min_price?: number;
1700
+ max_price?: number;
1701
+ min_stock?: number;
1702
+ max_stock?: number;
1703
+ sort_by?: 'product.id' | 'product.name' | 'product.price' | 'product.stock_quantity' | 'product.slug' | 'product.sku' | 'product.created_at' | 'category.name' | 'tag.name' | 'type.name';
1704
+ }
1705
+
1000
1706
  interface ProductResponse {
1001
1707
  statusCode: number;
1002
1708
  data: Product;
1003
1709
  message: string;
1004
1710
  }
1005
1711
 
1712
+ interface ProductTaxonomy extends Auditable {
1713
+ id: number;
1714
+ name: string;
1715
+ slug: string;
1716
+ selected?: boolean;
1717
+ }
1718
+
1006
1719
  interface ProductsResponseInterface {
1007
1720
  statusCode: number;
1008
1721
  data: {
@@ -1037,7 +1750,8 @@ interface PriceZonesResponseInterface {
1037
1750
  }
1038
1751
 
1039
1752
  interface FindAllPriceZoneParams {
1040
- roomMapId?: number;
1753
+ room_map_id?: number;
1754
+ show_ids?: number[];
1041
1755
  page?: number;
1042
1756
  search?: string;
1043
1757
  limit?: number;
@@ -1056,22 +1770,282 @@ interface ValidateCouponResponse {
1056
1770
  };
1057
1771
  }
1058
1772
 
1773
+ interface RecentOrder {
1774
+ id: number;
1775
+ customer_name: string;
1776
+ event: string;
1777
+ total: number;
1778
+ status: string;
1779
+ uuid: string;
1780
+ }
1781
+
1782
+ interface RecentRoomMap {
1783
+ id: number;
1784
+ name: string;
1785
+ capacity: number;
1786
+ created_at: Date;
1787
+ updated_at: Date;
1788
+ }
1789
+
1790
+ interface QrTokenData {
1791
+ token: string;
1792
+ expires_at: string;
1793
+ refresh_in: number;
1794
+ }
1795
+
1796
+ interface QrTokenResponse {
1797
+ statusCode: number;
1798
+ data: QrTokenData;
1799
+ message: string;
1800
+ }
1801
+
1802
+ interface VipCategorySnapshot {
1803
+ membership_id: number;
1804
+ name: string;
1805
+ discount_percentage: number;
1806
+ service_fee_exempt: boolean;
1807
+ applicable_show_ids: number[] | null;
1808
+ excluded_show_ids: number[] | null;
1809
+ duration_days: number;
1810
+ }
1811
+
1812
+ interface VipCard extends Auditable {
1813
+ id: number;
1814
+ uuid: string;
1815
+ customer: Customer;
1816
+ customer_id: number;
1817
+ membership: {
1818
+ id: number;
1819
+ name: string;
1820
+ } | null;
1821
+ membership_id: number;
1822
+ category_snapshot: VipCategorySnapshot;
1823
+ balance: number;
1824
+ status: VipCardStatus;
1825
+ activated_at: string | null;
1826
+ last_activity_at: string | null;
1827
+ expires_at: string | null;
1828
+ last_low_balance_alert_at: string | null;
1829
+ last_expiry_alert_at: string | null;
1830
+ }
1831
+
1832
+ interface VipTransaction {
1833
+ id: number;
1834
+ uuid: string;
1835
+ vip_card_id: number;
1836
+ type: VipTransactionType;
1837
+ amount: number;
1838
+ balance_before: number;
1839
+ balance_after: number;
1840
+ order: Order | null;
1841
+ order_id: number | null;
1842
+ description: string | null;
1843
+ created_at: string;
1844
+ }
1845
+
1846
+ interface VipCardResponse {
1847
+ data: VipCard;
1848
+ }
1849
+ interface VipCardsResponse {
1850
+ data: {
1851
+ vip_cards: VipCard[];
1852
+ total: number;
1853
+ };
1854
+ }
1855
+ interface VipTransactionsResponse {
1856
+ data: {
1857
+ transactions: VipTransaction[];
1858
+ total: number;
1859
+ };
1860
+ }
1861
+ interface VipOrderResponse {
1862
+ data: Order;
1863
+ }
1864
+
1865
+ interface Membership extends Auditable {
1866
+ id: number;
1867
+ name: string;
1868
+ description: string;
1869
+ benefits: string[] | null;
1870
+ price: number;
1871
+ duration_days: number;
1872
+ min_recharge: number;
1873
+ status: MembershipStatus;
1874
+ discount_percentage: number;
1875
+ service_fee_exempt: boolean;
1876
+ applicable_show_ids: number[] | null;
1877
+ excluded_show_ids: number[] | null;
1878
+ }
1879
+
1880
+ interface FetchVipCardsParams extends CommonFetchAllParams {
1881
+ status?: VipCardStatus;
1882
+ membership_id?: number;
1883
+ customer_id?: number;
1884
+ sort_by?: 'vip_card.id' | 'vip_card.uuid' | 'vip_card.customer_id' | 'vip_card.membership_id' | 'vip_card.balance' | 'vip_card.status' | 'vip_card.activated_at' | 'vip_card.last_activity_at' | 'vip_card.expires_at' | 'vip_card.last_low_balance_alert_at' | 'vip_card.last_expiry_alert_at' | 'vip_card.created_at' | 'vip_card.updated_at';
1885
+ }
1886
+
1887
+ interface ActivateVipCardParams {
1888
+ customer_id: number;
1889
+ membership_id: number;
1890
+ amount: number;
1891
+ payment_method?: string | null;
1892
+ terms_accepted: boolean;
1893
+ data_processing_accepted: boolean;
1894
+ }
1895
+
1896
+ interface VipRechargeConfirmPayload {
1897
+ amount: number;
1898
+ payment_method: string;
1899
+ terms_accepted: boolean;
1900
+ data_processing_accepted: boolean;
1901
+ }
1902
+
1903
+ declare const DOCUMENT_TYPES_OPTIONS: SelectOption[];
1904
+
1905
+ declare const PAYMENT_METHODS_OPTIONS: SelectOption[];
1906
+ declare const ORDER_STATUS_COLORS: Record<OrderStatus, {
1907
+ text: string;
1908
+ bg: string;
1909
+ }>;
1910
+ declare const ORDER_ITEM_TYPES_COLORS: Record<OrderItemType, {
1911
+ text: string;
1912
+ bg: string;
1913
+ }>;
1914
+ declare const ORDER_DISCOUNT_COLORS: Record<string, {
1915
+ text: string;
1916
+ bg: string;
1917
+ }>;
1918
+ declare const TRANSACTION_STATUS_COLORS: Record<TransactionStatus, {
1919
+ text: string;
1920
+ bg: string;
1921
+ }>;
1922
+
1923
+ declare const PERFORMANCE_TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, {
1924
+ text: string;
1925
+ bg: string;
1926
+ }>;
1927
+ declare const PERFORMANCE_STATUS_COLORS: Record<PerformanceStatus, {
1928
+ text: string;
1929
+ bg: string;
1930
+ }>;
1931
+
1932
+ declare const TICKET_MAP_LAST_TICKETS_LIMIT = 10;
1933
+ declare const TICKET_ELEMENT_TYPES: RoomMapElementType[];
1934
+ declare const DEFAULT_STAGE_CONFIG: {
1935
+ [x: string]: any;
1936
+ };
1937
+ declare const TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, string>;
1938
+ declare const TICKET_STATUS_FILLS: Record<PerformanceTicketStatus, string>;
1939
+ declare const TICKET_STATUS_LABELS: Record<PerformanceTicketStatus, string>;
1940
+ declare const TICKET_MAP_GRID_SIZE = 30;
1941
+ declare const TICKET_MAP_TITLE_HEIGHT = 30;
1942
+ declare const TICKET_MAP_FLOOR_HOVER_OPACITY = 0.25;
1943
+ declare const TICKET_MAP_FLOOR_HOVER_FADE_MS = 150;
1944
+
1945
+ interface KonvaShapeConfig {
1946
+ config: ShapeConfig;
1947
+ layer: 'background' | 'elements' | 'foreground' | 'overlay';
1948
+ }
1949
+
1950
+ declare function drawRoundedRect(con: Context, shape: Shape, x: number, y: number, width: number, height: number, cornerRadius: number): void;
1951
+
1952
+ declare const generateExitScene: (con: Context, shape: Shape) => void;
1953
+
1954
+ declare const generateHallwayScene: (con: Context, shape: Shape) => void;
1955
+
1956
+ declare const generateProductionAreaScene: (con: Context, shape: Shape) => void;
1957
+
1958
+ declare const generateSeatBlockScene: (con: Context, shape: Shape, numerationConfig?: {
1959
+ start_row_letter: string;
1960
+ row_order: "TOP_TO_BOTTOM" | "BOTTOM_TO_TOP";
1961
+ start_column_number: number;
1962
+ column_order: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT";
1963
+ }) => void;
1964
+
1965
+ declare const generateStageScene: (con: Context, shape: Shape) => void;
1966
+
1967
+ declare const generateStairScene: (con: Context, shape: Shape) => void;
1968
+
1969
+ declare const generateTableScene: (con: Context, shape: Shape) => void;
1970
+
1971
+ declare const generateUnavailableSpaceScene: (con: Context, shape: Shape) => void;
1972
+
1973
+ declare const generateZoneScene: (con: Context, shape: Shape) => void;
1974
+
1975
+ declare const KONVA_SHAPE_MAPPINGS: Record<RoomMapElementType, KonvaShapeConfig>;
1976
+
1059
1977
  declare const getCustomerFullname: (customer: Customer) => string;
1060
1978
 
1979
+ declare const getAdminFullname: (admin: Admin) => string;
1980
+
1981
+ type OrderDiscountType = 'coupon' | 'corporate_bond' | 'gift_bond' | 'vip' | 'subscription';
1982
+ interface OrderDiscountInfo {
1983
+ type: OrderDiscountType | null;
1984
+ code: string | null;
1985
+ name: string | null;
1986
+ value: number;
1987
+ discountType: 'percentage' | 'fixed' | null;
1988
+ icon: string;
1989
+ /**
1990
+ * true cuando esta fuente de descuento tambien exonero la tarifa de
1991
+ * servicio de la orden (VIP/Abono con `service_fee_exempt`).
1992
+ */
1993
+ serviceFeeExempt: boolean;
1994
+ }
1995
+ declare function getOrderDiscount(order: Order): OrderDiscountInfo;
1996
+
1061
1997
  declare function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData;
1062
1998
 
1063
1999
  declare const transformImageToFile: (image: ShowImage | VenueImage) => UploadedFile;
1064
2000
 
2001
+ declare const transformUrlParams: (params: any) => URLSearchParams;
2002
+
1065
2003
  declare const formatCitiesResponseToSelect: (res: CitiesResponse) => {
1066
- value: string;
2004
+ value: number;
1067
2005
  label: string;
1068
2006
  }[];
1069
2007
 
2008
+ declare function tintColor(hex: string, amount?: number): string;
2009
+
2010
+ declare const drawChairIcon: (con: Context, cx: number, cy: number, size: number) => void;
2011
+
2012
+ declare const drawHappyFace: (con: Context, cx: number, cy: number, size: number) => void;
2013
+
2014
+ declare const drawWheelchairIcon: (con: Context, shape: Shape, cx: number, cy: number, size: number, fillColor?: string, strokeColor?: string) => void;
2015
+
2016
+ declare const numberToLetter: (num: number) => string;
2017
+
2018
+ declare const getItemTypeIcon: (ticket: PerformanceTicket) => string;
2019
+
2020
+ declare const generateSeatBlockTicketScene: (con: Context, shape: Shape, numerationConfig?: {
2021
+ start_row_letter: string;
2022
+ row_order: "TOP_TO_BOTTOM" | "BOTTOM_TO_TOP";
2023
+ start_column_number: number;
2024
+ column_order: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT";
2025
+ }, ticketStatusMap?: Map<string, PerformanceTicketStatus>) => void;
2026
+
2027
+ declare const generateTableTicketScene: (con: Context, shape: Shape, chairTicketStatuses?: PerformanceTicketStatus[], tableSeats?: RoomMapSeatState[][]) => void;
2028
+
2029
+ declare function processElementsToRenderData(elements: RoomMapElementTemplate[], tickets: PerformanceTicket[], priceZones?: {
2030
+ id: number;
2031
+ color: string;
2032
+ }[]): ElementRenderData[];
2033
+ declare function findTicketAtPosition(renderData: ElementRenderData, relX: number, relY: number): PerformanceTicket | null;
2034
+ declare function findElementAtPosition(renderDataList: ElementRenderData[], stageX: number, stageY: number): {
2035
+ element: ElementRenderData;
2036
+ relX: number;
2037
+ relY: number;
2038
+ } | null;
2039
+
2040
+ declare const ticketCanOpenQr: (order: Order, ticket: PerformanceTicket) => boolean;
2041
+
1070
2042
  declare function MinTodayValidator(controlName: string): ValidatorFn;
1071
2043
  declare function EndDateGreaterThanStartValidator(startDateControlName: string, endDateControlName: string): ValidatorFn;
1072
2044
 
1073
2045
  declare function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn;
1074
2046
 
2047
+ declare function emailValidator(): ValidatorFn;
2048
+
1075
2049
  declare class ApiService {
1076
2050
  private http;
1077
2051
  private platformId;
@@ -1082,6 +2056,7 @@ declare class ApiService {
1082
2056
  private validateContentType;
1083
2057
  private handleError;
1084
2058
  get<T>(path: string): Observable<T>;
2059
+ getBlob(path: string): Observable<Blob>;
1085
2060
  post<T>(path: string, body: any): Observable<T>;
1086
2061
  patch<T>(path: string, body: any): Observable<T>;
1087
2062
  put<T>(path: string, body: any): Observable<T>;
@@ -1090,23 +2065,58 @@ declare class ApiService {
1090
2065
  static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
1091
2066
  }
1092
2067
 
2068
+ /**
2069
+ * Shared open/close state for the mobile off-canvas sidebar.
2070
+ * On viewports >= lg the sidebar is always visible (see sidebar-menu.component.html),
2071
+ * so this state only has a visual effect below the `lg` breakpoint.
2072
+ */
2073
+ declare class SidebarStateService {
2074
+ isMobileOpen: WritableSignal<boolean>;
2075
+ open(): void;
2076
+ close(): void;
2077
+ toggle(): void;
2078
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidebarStateService, never>;
2079
+ static ɵprov: i0.ɵɵInjectableDeclaration<SidebarStateService>;
2080
+ }
2081
+
2082
+ /**
2083
+ * Deshabilita el zoom del NAVEGADOR (no el zoom interno del mapa de
2084
+ * asientos, que sigue funcionando igual). Se instancia una sola vez —
2085
+ * inyectarlo en el componente raíz de la app alcanza, porque es
2086
+ * `providedIn: 'root'` — y cubre las cuatro formas en que un navegador
2087
+ * deja hacer zoom:
2088
+ *
2089
+ * - Ctrl/Cmd + rueda del mouse (desktop, todos los navegadores).
2090
+ * - Ctrl/Cmd + "+"/"-"/"0" por teclado (desktop, todos los navegadores).
2091
+ * - Gesto de pellizco en trackpad en Safari, que no dispara `wheel` sino
2092
+ * sus propios eventos `gesture*` (no estándar, solo Safari/WebKit).
2093
+ * - Pellizco con dos dedos en pantallas táctiles, como respaldo además
2094
+ * del `user-scalable=no` del viewport (que ya lo bloquea en la mayoría
2095
+ * de los navegadores, pero no en todos de forma consistente).
2096
+ *
2097
+ * No toca el zoom interno de `TicketMapZoomService` (ese es zoom propio de
2098
+ * la app sobre el SVG del mapa, con sus propios botones +/-, y debe seguir
2099
+ * funcionando tal cual).
2100
+ */
2101
+ declare class BrowserZoomLockService {
2102
+ constructor(platformId: Object);
2103
+ private onWheel;
2104
+ private onKeydown;
2105
+ private onTouchMove;
2106
+ private onGesture;
2107
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrowserZoomLockService, never>;
2108
+ static ɵprov: i0.ɵɵInjectableDeclaration<BrowserZoomLockService>;
2109
+ }
2110
+
1093
2111
  type ToastType = 'success' | 'error' | 'info';
1094
2112
  declare class ToastService {
2113
+ private platformId;
2114
+ constructor(platformId: Object);
1095
2115
  show(message: string, type?: ToastType): void;
1096
2116
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
1097
2117
  static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
1098
2118
  }
1099
2119
 
1100
- declare class LoadingModalService {
1101
- title: WritableSignal<string>;
1102
- isOpen: WritableSignal<boolean>;
1103
- get modalIsOpen(): WritableSignal<boolean>;
1104
- open(title?: string): void;
1105
- close(): void;
1106
- static ɵfac: i0.ɵɵFactoryDeclaration<LoadingModalService, never>;
1107
- static ɵprov: i0.ɵɵInjectableDeclaration<LoadingModalService>;
1108
- }
1109
-
1110
2120
  declare class DeleteConfirmationService {
1111
2121
  title: WritableSignal<string>;
1112
2122
  resourceName: WritableSignal<string>;
@@ -1147,12 +2157,19 @@ declare class DateService {
1147
2157
  static ɵprov: i0.ɵɵInjectableDeclaration<DateService>;
1148
2158
  }
1149
2159
 
2160
+ interface AdminResponse {
2161
+ statusCode: number;
2162
+ data: Admin;
2163
+ message: string;
2164
+ }
2165
+
1150
2166
  declare class AdminService {
1151
2167
  private apiService;
1152
2168
  constructor(apiService: ApiService);
1153
- fetchAdmins(page?: number, search?: string, limit?: number): Observable<AdminsResponse>;
2169
+ fetchAdmins(params: FetchAdminsParams): Observable<AdminsResponse>;
2170
+ fetchOneById(id: number): Observable<AdminResponse>;
1154
2171
  deleteOne(id: number): Observable<any>;
1155
- createOne(data: any): Observable<any>;
2172
+ createOne(data: any): Observable<AdminResponse>;
1156
2173
  updateOne(id: number, data: any): Observable<any>;
1157
2174
  static ɵfac: i0.ɵɵFactoryDeclaration<AdminService, never>;
1158
2175
  static ɵprov: i0.ɵɵInjectableDeclaration<AdminService>;
@@ -1161,7 +2178,7 @@ declare class AdminService {
1161
2178
  declare class CitiesService {
1162
2179
  private apiService;
1163
2180
  constructor(apiService: ApiService);
1164
- fetchCities({ page, search, stateId }: FetchCitiesParams): Observable<CitiesResponse>;
2181
+ fetchCities(params: FetchCitiesParams): Observable<CitiesResponse>;
1165
2182
  createOne(data: City): Observable<CityResponse>;
1166
2183
  updateOne(id: number, data: City): Observable<CityResponse>;
1167
2184
  deleteOne(id: number): Observable<any>;
@@ -1172,7 +2189,7 @@ declare class CitiesService {
1172
2189
  declare class CountryService {
1173
2190
  private apiService;
1174
2191
  constructor(apiService: ApiService);
1175
- fetchCountries(page?: number, search?: string): Observable<CountriesResponse>;
2192
+ fetchCountries(params: FetchCountriesParams): Observable<CountriesResponse>;
1176
2193
  createOne(data: Country): Observable<CountryResponse>;
1177
2194
  updateOne(id: number, data: Country): Observable<CountryResponse>;
1178
2195
  deleteOne(id: number): Observable<any>;
@@ -1183,7 +2200,7 @@ declare class CountryService {
1183
2200
  declare class StatesService {
1184
2201
  private apiService;
1185
2202
  constructor(apiService: ApiService);
1186
- fetchStates(page?: number, search?: string, countryId?: number): Observable<StatesResponse>;
2203
+ fetchStates(params: FetchStatesParams): Observable<StatesResponse>;
1187
2204
  fetchStatesByCountryId(countryId: number): Observable<StatesResponse>;
1188
2205
  createOne(data: State): Observable<StateResponse>;
1189
2206
  updateOne(id: number, data: State): Observable<StateResponse>;
@@ -1197,7 +2214,7 @@ declare class PerformanceService {
1197
2214
  private performancesSubject;
1198
2215
  performances$: Observable<Performance[]>;
1199
2216
  constructor(apiService: ApiService);
1200
- fetchPerformances(showId?: number, search?: string): Observable<PerformancesResponseInterface>;
2217
+ fetchPerformances({ showId, roomMapId, hallId, search, page, limit, }: FindAllPerformancesParams): Observable<PerformancesResponseInterface>;
1201
2218
  fetchDailyPerformances({ show_id, search, limit, date, }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse>;
1202
2219
  loadPerformances({ showId, search }?: {
1203
2220
  showId?: number;
@@ -1205,7 +2222,7 @@ declare class PerformanceService {
1205
2222
  }): void;
1206
2223
  getCurrentPerformances(): Performance[];
1207
2224
  fetchOneById(id: number): Observable<PerformanceResponse>;
1208
- fetchOneBookingData(id: number): Observable<PerformanceBookingDataResponse>;
2225
+ fetchOneBookingData(id: number, isAdmin?: boolean): Observable<PerformanceBookingDataResponse>;
1209
2226
  fetchAvailableDays(params?: {
1210
2227
  show_id?: number;
1211
2228
  }): Observable<PerformancesAvailableDaysResponse>;
@@ -1214,6 +2231,13 @@ declare class PerformanceService {
1214
2231
  updateOne(id: number, data: any): Observable<PerformanceResponse>;
1215
2232
  deleteOne(id: number): Observable<any>;
1216
2233
  deleteMany(ids: number[]): Observable<any>;
2234
+ updatePublishedBulk(ids: number[], published: boolean): Observable<{
2235
+ statusCode: number;
2236
+ data: {
2237
+ updated: number[];
2238
+ };
2239
+ message: string;
2240
+ }>;
1217
2241
  cancelPerformance(id: number, notifyUsers: boolean): Observable<any>;
1218
2242
  publishInvenotry(id: number): Observable<any>;
1219
2243
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceService, never>;
@@ -1235,25 +2259,6 @@ declare class PerformancesListEventsService {
1235
2259
  static ɵprov: i0.ɵɵInjectableDeclaration<PerformancesListEventsService>;
1236
2260
  }
1237
2261
 
1238
- declare class ProductService {
1239
- private apiService;
1240
- private productsSubject;
1241
- products$: Observable<Product[]>;
1242
- constructor(apiService: ApiService);
1243
- fetchProducts(page: number, search: string): Observable<ProductsResponseInterface>;
1244
- loadProducts({ page, search }?: {
1245
- page?: number;
1246
- search?: string;
1247
- }): void;
1248
- getCurrentProducts(): Product[];
1249
- fetchOneById(id: number): Observable<ProductResponse>;
1250
- createOne(data: Product): Observable<any>;
1251
- updateOne(id: number, data: any): Observable<ProductResponse>;
1252
- deleteOne(id: number): Observable<any>;
1253
- static ɵfac: i0.ɵɵFactoryDeclaration<ProductService, never>;
1254
- static ɵprov: i0.ɵɵInjectableDeclaration<ProductService>;
1255
- }
1256
-
1257
2262
  declare class ShowService {
1258
2263
  private apiService;
1259
2264
  private showsSubject;
@@ -1261,7 +2266,7 @@ declare class ShowService {
1261
2266
  constructor(apiService: ApiService);
1262
2267
  loadShows({ page, search }?: FetchShowsParams): void;
1263
2268
  getCurrentShows(): Show[];
1264
- fetchShows({ limit, page, search }: FetchShowsParams): Observable<ShowsResponseInterface>;
2269
+ fetchShows(params: FetchShowsParams): Observable<ShowsResponseInterface>;
1265
2270
  fetchAvailableShows({ date, limit, page, search, }: FetchShowsParams): Observable<ShowsResponseInterface>;
1266
2271
  fetchOneById(id: number): Observable<ShowResponse>;
1267
2272
  createOne(data: Show): Observable<ShowResponse>;
@@ -1282,7 +2287,7 @@ declare class CustomerService {
1282
2287
  private apiService;
1283
2288
  constructor(apiService: ApiService);
1284
2289
  createOne(data: Customer): Observable<CustomerResponse>;
1285
- fetchCustomers(page: number, search: string, limit?: number): Observable<CustomersResponse>;
2290
+ fetchCustomers(params: FetchCustomersParams): Observable<CustomersResponse>;
1286
2291
  fetchOneById(id: number): Observable<CustomerResponse>;
1287
2292
  updateOne(id: number, data: any): Observable<CustomerResponse>;
1288
2293
  deleteOne(id: number): Observable<any>;
@@ -1290,48 +2295,606 @@ declare class CustomerService {
1290
2295
  static ɵprov: i0.ɵɵInjectableDeclaration<CustomerService>;
1291
2296
  }
1292
2297
 
1293
- declare class PriceZoneService {
2298
+ declare class PriceZoneService {
2299
+ private apiService;
2300
+ private priceZonesSubject;
2301
+ priceZones$: Observable<PriceZone[]>;
2302
+ constructor(apiService: ApiService);
2303
+ fetchPriceZones(params?: FindAllPriceZoneParams): Observable<PriceZonesResponseInterface>;
2304
+ loadPriceZones(params?: FindAllPriceZoneParams): void;
2305
+ getCurrentPriceZones(): PriceZone[];
2306
+ fetchOneById(id: number): Observable<PriceZoneResponse>;
2307
+ createOne(data: PriceZone): Observable<any>;
2308
+ duplicateOne(id: number, name: string): Observable<any>;
2309
+ updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse>;
2310
+ deleteOne(id: number): Observable<any>;
2311
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneService, never>;
2312
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneService>;
2313
+ }
2314
+
2315
+ declare class PriceZoneEventService {
2316
+ private priceZoneDeleted$;
2317
+ private priceZoneSaved$;
2318
+ private _selectedPriceZone;
2319
+ readonly selectedPriceZone$: rxjs.Observable<PriceZone | null>;
2320
+ onPriceZoneDeleted(): void;
2321
+ getPriceZoneDeleted(): rxjs.Observable<void>;
2322
+ onPriceZoneSaved(): void;
2323
+ getPriceZoneSaved(): rxjs.Observable<void>;
2324
+ setSelectedPriceZone(priceZone: PriceZone | null): void;
2325
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneEventService, never>;
2326
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneEventService>;
2327
+ }
2328
+
2329
+ declare class PriceZoneFormModalService {
2330
+ private priceZoneEventService;
2331
+ priceZone: WritableSignal<PriceZone | null>;
2332
+ isOpen: WritableSignal<boolean>;
2333
+ constructor(priceZoneEventService: PriceZoneEventService);
2334
+ get modalIsOpen(): WritableSignal<boolean>;
2335
+ get currentPriceZone(): WritableSignal<PriceZone | null>;
2336
+ open(priceZone?: PriceZone | null): void;
2337
+ close(): void;
2338
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneFormModalService, never>;
2339
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneFormModalService>;
2340
+ }
2341
+
2342
+ declare class ProductCategoryService {
2343
+ private apiService;
2344
+ constructor(apiService: ApiService);
2345
+ fetchCategories(params: FetchProductCategoriesParams): Observable<ProductCategoriesResponse>;
2346
+ fetchOneById(id: number): Observable<ProductCategoryResponse>;
2347
+ createOne(data: ProductCategory): Observable<any>;
2348
+ updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse>;
2349
+ deleteOne(id: number): Observable<any>;
2350
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductCategoryService, never>;
2351
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductCategoryService>;
2352
+ }
2353
+
2354
+ declare class ProductTagService {
2355
+ private apiService;
2356
+ constructor(apiService: ApiService);
2357
+ fetchTags(params: FetchProductTagsParams): Observable<ProductTagsResponse>;
2358
+ fetchOneById(id: number): Observable<ProductTagResponse>;
2359
+ createOne(data: ProductTag): Observable<any>;
2360
+ updateOne(id: number, data: ProductTag): Observable<ProductTagResponse>;
2361
+ deleteOne(id: number): Observable<any>;
2362
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductTagService, never>;
2363
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductTagService>;
2364
+ }
2365
+
2366
+ declare class ProductTypeService {
2367
+ private apiService;
2368
+ constructor(apiService: ApiService);
2369
+ fetchTypes(params: FetchProductTypesParams): Observable<ProductTypesResponse>;
2370
+ fetchOneById(id: number): Observable<ProductTypeResponse>;
2371
+ createOne(data: ProductType): Observable<any>;
2372
+ updateOne(id: number, data: ProductType): Observable<ProductTypeResponse>;
2373
+ deleteOne(id: number): Observable<any>;
2374
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductTypeService, never>;
2375
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductTypeService>;
2376
+ }
2377
+
2378
+ declare class ProductService {
2379
+ private apiService;
2380
+ private productsSubject;
2381
+ products$: Observable<Product[]>;
2382
+ constructor(apiService: ApiService);
2383
+ fetchProducts(params: FetchProductsParams): Observable<ProductsResponseInterface>;
2384
+ loadProducts(params: FetchProductsParams): void;
2385
+ getCurrentProducts(): Product[];
2386
+ fetchOneById(id: number): Observable<ProductResponse>;
2387
+ createOne(data: Product): Observable<any>;
2388
+ updateOne(id: number, data: any): Observable<ProductResponse>;
2389
+ deleteOne(id: number): Observable<any>;
2390
+ fetchImages(id: number): Observable<{
2391
+ data: ProductImage[];
2392
+ }>;
2393
+ uploadImages(id: number, files?: FormData): Observable<{
2394
+ data: ProductImage[];
2395
+ }>;
2396
+ deleteOneImage(productId: number, imageId: number): Observable<any>;
2397
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductService, never>;
2398
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductService>;
2399
+ }
2400
+
2401
+ declare class BaseModalService {
2402
+ readonly isOpen: WritableSignal<boolean>;
2403
+ get modalIsOpen(): WritableSignal<boolean>;
2404
+ open(): void;
2405
+ close(): void;
2406
+ }
2407
+
2408
+ declare class FeedbackModalService {
2409
+ private _modals;
2410
+ readonly modals: i0.Signal<FeedbackModalElement[]>;
2411
+ addModal(modal: FeedbackModalElement): void;
2412
+ removeModal(id: string): void;
2413
+ removeAllModals(): void;
2414
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackModalService, never>;
2415
+ static ɵprov: i0.ɵɵInjectableDeclaration<FeedbackModalService>;
2416
+ }
2417
+
2418
+ /**
2419
+ * Tope de entradas por selección/compra. Por defecto es `null` (sin límite),
2420
+ * que es lo que necesita el backoffice (admin puede seleccionar todo).
2421
+ * El ecommerce, que sí debe limitar, llama a `load()` una vez al iniciar la
2422
+ * app para traer el valor configurado en el formulario de personalización.
2423
+ */
2424
+ declare class PurchaseLimitService {
1294
2425
  private apiService;
1295
- private priceZonesSubject;
1296
- priceZones$: Observable<PriceZone[]>;
2426
+ private _maxTicketsPerSelection;
2427
+ readonly maxTicketsPerSelection: i0.Signal<number | null>;
1297
2428
  constructor(apiService: ApiService);
1298
- fetchPriceZones({ roomMapId, page, search, limit, }?: FindAllPriceZoneParams): Observable<PriceZonesResponseInterface>;
1299
- loadPriceZones({ roomMapId, page, search, limit }?: FindAllPriceZoneParams): void;
1300
- getCurrentPriceZones(): PriceZone[];
1301
- fetchOneById(id: number): Observable<PriceZoneResponse>;
1302
- createOne(data: PriceZone): Observable<any>;
1303
- duplicateOne(id: number, name: string): Observable<any>;
1304
- updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse>;
1305
- deleteOne(id: number): Observable<any>;
1306
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneService, never>;
1307
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneService>;
2429
+ setMaxTicketsPerSelection(max: number | null): void;
2430
+ load(): Observable<number | null>;
2431
+ static ɵfac: i0.ɵɵFactoryDeclaration<PurchaseLimitService, never>;
2432
+ static ɵprov: i0.ɵɵInjectableDeclaration<PurchaseLimitService>;
1308
2433
  }
1309
2434
 
1310
- declare class PriceZoneEventService {
1311
- private priceZoneDeleted$;
1312
- private priceZoneSaved$;
1313
- private _selectedPriceZone;
1314
- readonly selectedPriceZone$: rxjs.Observable<PriceZone | null>;
1315
- onPriceZoneDeleted(): void;
1316
- getPriceZoneDeleted(): rxjs.Observable<void>;
1317
- onPriceZoneSaved(): void;
1318
- getPriceZoneSaved(): rxjs.Observable<void>;
1319
- setSelectedPriceZone(priceZone: PriceZone | null): void;
1320
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneEventService, never>;
1321
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneEventService>;
2435
+ declare class OrderTransactionDetailsModalService {
2436
+ readonly isOpen: WritableSignal<boolean>;
2437
+ transaction: WritableSignal<Transaction | null>;
2438
+ get modalIsOpen(): WritableSignal<boolean>;
2439
+ open(transaction: Transaction): void;
2440
+ close(): void;
2441
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionDetailsModalService, never>;
2442
+ static ɵprov: i0.ɵɵInjectableDeclaration<OrderTransactionDetailsModalService>;
2443
+ }
2444
+
2445
+ declare class PerformanceBookingDataService {
2446
+ private _show;
2447
+ private _performance;
2448
+ private _roomMap;
2449
+ private _hallFloors;
2450
+ private _selectedHallFloor;
2451
+ private _allRenderData;
2452
+ private _visibleFloorIds;
2453
+ private _hoveredFloorId;
2454
+ private _stageConfig;
2455
+ private _lastTickets;
2456
+ readonly show: i0.Signal<Show | null>;
2457
+ readonly hallFloors: i0.Signal<HallFloor[]>;
2458
+ readonly selectedHallFloor: i0.Signal<HallFloor | null>;
2459
+ readonly performance: i0.Signal<Performance | null>;
2460
+ readonly stageConfig: i0.Signal<{
2461
+ [x: string]: any;
2462
+ }>;
2463
+ readonly roomMap: i0.Signal<RoomMap | null>;
2464
+ readonly visibleFloorIds: i0.Signal<Set<number>>;
2465
+ readonly hoveredFloorId: i0.Signal<number | null>;
2466
+ readonly availableFloors: i0.Signal<HallFloor[]>;
2467
+ readonly floorZOrder: i0.Signal<number[]>;
2468
+ readonly renderData: i0.Signal<ElementRenderData[]>;
2469
+ setPerformanceBookingData({ data }: PerformanceBookingDataResponse): void;
2470
+ /** Aplica actualizaciones de estado de tickets recibidas por SSE (ver
2471
+ * SeatAvailabilitySseService) sin volver a pedir todo el booking-data:
2472
+ * parcha `_lastTickets` y vuelve a calcular el render data del mapa con
2473
+ * los mismos `elements`/`price_zones` (que no cambian en vivo). */
2474
+ applySeatStatusUpdates(updates: SeatStatusUpdate[]): void;
2475
+ setRoomMap(roomMap: RoomMap | null): void;
2476
+ setAllRenderData(data: ElementRenderData[]): void;
2477
+ setPerformance(performance: Performance | null): void;
2478
+ setShow(show: Show | null): void;
2479
+ setHallFloors(data: HallFloor[]): void;
2480
+ setSelectedHallFloor(id: number): void;
2481
+ setHoveredFloor(floorId: number | null): void;
2482
+ toggleFloorVisibility(floorId: number): void;
2483
+ isFloorVisible(floorId: number): boolean;
2484
+ updateStageConfig(data: {
2485
+ [x: string]: any;
2486
+ }): void;
2487
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceBookingDataService, never>;
2488
+ static ɵprov: i0.ɵɵInjectableDeclaration<PerformanceBookingDataService>;
2489
+ }
2490
+
2491
+ declare class TicketSelectionDetailsService {
2492
+ private _customerEmail;
2493
+ private _customerId;
2494
+ private _paymentMethod;
2495
+ private _billingInformation;
2496
+ readonly customerEmail: i0.Signal<string | null>;
2497
+ readonly customerId: i0.Signal<number | null>;
2498
+ readonly paymentMethod: i0.Signal<string | null>;
2499
+ readonly billingInformation: i0.Signal<Customer | null>;
2500
+ setCustomerEmail(email: string | null): void;
2501
+ setCustomerId(id: number | null): void;
2502
+ setPaymentMethod(method: string | null): void;
2503
+ setBillingInformation(values: Customer): void;
2504
+ clearSelection(): void;
2505
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionDetailsService, never>;
2506
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionDetailsService>;
2507
+ }
2508
+
2509
+ declare class TicketSelectionDiscountService {
2510
+ private _coupon;
2511
+ private _corporateBond;
2512
+ private _corporateBondCode;
2513
+ private _giftBond;
2514
+ private _giftBondCode;
2515
+ private _vipCard;
2516
+ /**
2517
+ * Abono (subscription) como metodo de pago. Solo se usa el campo
2518
+ * `service_fee_exempt`: el valor del descuento es siempre 100% (una obra
2519
+ * del abono cubre el ticket por completo), igual que un cupon del 100%.
2520
+ */
2521
+ private _subscription;
2522
+ readonly coupon: Signal<Coupon | null>;
2523
+ readonly corporateBond: Signal<CorporateBond | null>;
2524
+ readonly corporateBondCode: Signal<string | null>;
2525
+ readonly giftBond: Signal<GiftBondPurchase | null>;
2526
+ readonly giftBondCode: Signal<string | null>;
2527
+ readonly vipCard: Signal<VipCard | null>;
2528
+ readonly subscription: Signal<{
2529
+ service_fee_exempt: boolean;
2530
+ } | null>;
2531
+ readonly selectedDiscount: Signal<SelectedDiscountCard | null>;
2532
+ readonly selectedDiscountType: Signal<SelectedDiscountCardType | undefined>;
2533
+ readonly selectedDiscountValue: Signal<number | undefined>;
2534
+ setCoupon(coupon: Coupon | null): void;
2535
+ setCorporateBond(corporateBond: CorporateBond | null): void;
2536
+ setCorporateBondCode(code: string | null): void;
2537
+ setGiftBond(giftBond: GiftBondPurchase | null): void;
2538
+ setGiftBondCode(code: string | null): void;
2539
+ /**
2540
+ * Saldo VIP como método de pago (VIP-HU-04). Solo debe contar como
2541
+ * descuento "seleccionado" mientras el cliente efectivamente eligió
2542
+ * pagar con su saldo VIP, no solo por tener una tarjeta activa —
2543
+ * llamar con `null` en cuanto deje de ser el método de pago elegido.
2544
+ */
2545
+ setVipCard(card: VipCard | null): void;
2546
+ /**
2547
+ * Abono como metodo de pago (paralelo a `setVipCard`). Llamar con `null`
2548
+ * en cuanto deje de ser el metodo de pago elegido.
2549
+ */
2550
+ setSubscription(subscription: {
2551
+ service_fee_exempt: boolean;
2552
+ } | null): void;
2553
+ clearSelection(): void;
2554
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionDiscountService, never>;
2555
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionDiscountService>;
2556
+ }
2557
+
2558
+ declare class TicketSelectionTotalsService {
2559
+ private bookingDataService;
2560
+ private selectionService;
2561
+ private selectionDiscountService;
2562
+ readonly selectedProductEntries: i0.Signal<{
2563
+ id: number;
2564
+ quantity: number;
2565
+ }[]>;
2566
+ readonly selectedProductCount: i0.Signal<number>;
2567
+ readonly productSubtotal: i0.Signal<number>;
2568
+ readonly ticketSubtotal: i0.Signal<number>;
2569
+ /**
2570
+ * Tarifa de servicio del Show cobrada una vez por cada boleta seleccionada
2571
+ * (no un monto fijo por orden), igual que el backend
2572
+ * (`create-pending-order.service.ts`): 2 boletas x $10.000 = $20.000.
2573
+ * Ya refleja la exoneración de VIP/Abono (retorna 0 en ese caso).
2574
+ */
2575
+ readonly serviceFee: i0.Signal<number>;
2576
+ /**
2577
+ * Valor "crudo" de la tarifa de servicio (sin exonerar), para poder
2578
+ * mostrar explícitamente en la UI el "antes" cuando una membresía o
2579
+ * abono la exonera (en vez de perder el dato mostrando solo $0).
2580
+ */
2581
+ readonly rawServiceFee: i0.Signal<number>;
2582
+ readonly isServiceFeeExempt: i0.Signal<boolean>;
2583
+ /**
2584
+ * El descuento (cupón, bono corporativo, bono de regalo, VIP, abono) se
2585
+ * calcula UNICAMENTE sobre el valor de las boletas: los productos nunca
2586
+ * reciben descuento (ver orders-discounts-applications.md).
2587
+ */
2588
+ readonly discountAmount: i0.Signal<number | null>;
2589
+ subtotalValue(): number;
2590
+ totalValue(): number;
2591
+ totalDiscounted(): number | null;
2592
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionTotalsService, never>;
2593
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionTotalsService>;
2594
+ }
2595
+
2596
+ declare class TicketSelectionService {
2597
+ private bookingDataService;
2598
+ private feedbackModalService;
2599
+ private purchaseLimitService;
2600
+ private selectionDetailsService;
2601
+ private selectionDiscountService;
2602
+ private _zoneQuantities;
2603
+ private _allTickets;
2604
+ private _selectedTickets;
2605
+ private _selectedBlockedTickets;
2606
+ private _products;
2607
+ private _productQuantities;
2608
+ readonly selectedTickets: i0.Signal<PerformanceTicket[]>;
2609
+ readonly selectedBlockedTickets: i0.Signal<PerformanceTicket[]>;
2610
+ readonly selectedCount: i0.Signal<number>;
2611
+ readonly blockedSelectedCount: i0.Signal<number>;
2612
+ readonly selectedTicketIds: i0.Signal<Set<PerformanceTicket>>;
2613
+ readonly selectedBlockedTicketIds: i0.Signal<number[]>;
2614
+ readonly selectedTicketIdList: i0.Signal<number[]>;
2615
+ readonly summaryItems: i0.Signal<PerformanceTicket[]>;
2616
+ readonly products: i0.Signal<Product[]>;
2617
+ readonly productQuantities: i0.Signal<Map<number, number>>;
2618
+ readonly selectedProductEntries: i0.Signal<{
2619
+ id: number;
2620
+ quantity: number;
2621
+ }[]>;
2622
+ readonly selectedProductCount: i0.Signal<number>;
2623
+ readonly serviceFee: i0.Signal<number>;
2624
+ setTickets(tickets: PerformanceTicket[]): void;
2625
+ /** Aplica actualizaciones de estado recibidas por SSE (ver
2626
+ * SeatAvailabilitySseService). Muta los tickets existentes EN VEZ de
2627
+ * reemplazarlos por objetos nuevos: `_selectedTickets`/
2628
+ * `_selectedBlockedTickets` son Sets de referencias de objeto, no de ids,
2629
+ * así que reemplazar el array rompería la selección activa del usuario. */
2630
+ applySeatStatusUpdates(updates: SeatStatusUpdate[]): void;
2631
+ setProducts(products: Product[]): void;
2632
+ updateProductQuantity(productId: number, delta: number): void;
2633
+ getProductQuantity(productId: number): number;
2634
+ private getListByStatus;
2635
+ setSelectedTickets(tickets: PerformanceTicket[]): void;
2636
+ toggle(ticket: PerformanceTicket): void;
2637
+ select(ticket: PerformanceTicket): void;
2638
+ deselect(ticket: PerformanceTicket): void;
2639
+ clearBlockedSelection(): void;
2640
+ clearSelection(): void;
2641
+ isSelected(ticket: PerformanceTicket): boolean;
2642
+ initZoneQuantity(elementId: number, maxCapacity: number): void;
2643
+ getZoneMax(elementId: number): number;
2644
+ getZoneSelectedCount(elementId: number): number;
2645
+ setZoneQuantity(elementId: number, target: number): void;
2646
+ adjustZoneQuantity(elementId: number, delta: number): void;
2647
+ private remainingSelectionAllowance;
2648
+ private canAddMoreToSelection;
2649
+ private notifyPurchaseLimitReached;
2650
+ getZoneTickets(elementId: number): PerformanceTicket[];
2651
+ buildTooltipData(ticket: PerformanceTicket, elementName: string, seatLabel: string | null, x: number, y: number): TicketMapTooltipData;
2652
+ buildReservePerformanceDto(paymentMethod?: string, termsAccepted?: boolean, dataProcessingAccepted?: boolean): ReservePerformanceDto;
2653
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionService, never>;
2654
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionService>;
2655
+ }
2656
+
2657
+ declare class TicketMapZoomService {
2658
+ readonly currentZoom: i0.WritableSignal<number>;
2659
+ private stage?;
2660
+ private bookingDataService;
2661
+ private readonly defaultConfig;
2662
+ constructor();
2663
+ /**
2664
+ * Set the Konva stage instance
2665
+ */
2666
+ setStage(stage: Stage): void;
2667
+ /**
2668
+ * Zoom in by one step
2669
+ */
2670
+ zoomIn(): void;
2671
+ /**
2672
+ * Zoom out by one step
2673
+ */
2674
+ zoomOut(): void;
2675
+ /**
2676
+ * Reset zoom to 100%
2677
+ */
2678
+ resetZoom(): void;
2679
+ /**
2680
+ * Get current zoom as percentage string
2681
+ */
2682
+ getZoomPercentage(): string;
2683
+ /**
2684
+ * Get current zoom value
2685
+ */
2686
+ getCurrentZoom(): number;
2687
+ /**
2688
+ * Apply zoom with center point
2689
+ */
2690
+ private applyZoom;
2691
+ /**
2692
+ * Apply zoom scale with specific center point
2693
+ */
2694
+ private applyZoomScale;
2695
+ /**
2696
+ * Handle mouse wheel zoom toward the cursor position
2697
+ */
2698
+ handleWheelZoom(deltaY: number): void;
2699
+ /**
2700
+ * Fit the content bounds to fill the stage container
2701
+ */
2702
+ fitToContainer(padding?: number): void;
2703
+ /**
2704
+ * Get current stage position
2705
+ */
2706
+ getStagePosition(): {
2707
+ x: number;
2708
+ y: number;
2709
+ };
2710
+ /**
2711
+ * Set stage position (useful for programmatic panning)
2712
+ */
2713
+ setStagePosition(position: {
2714
+ x: number;
2715
+ y: number;
2716
+ }): void;
2717
+ /**
2718
+ * Fit the stage content bounds to the container, centering and scaling
2719
+ * to show the full content with optional padding.
2720
+ */
2721
+ fitToBounds(contentBounds: {
2722
+ x: number;
2723
+ y: number;
2724
+ width: number;
2725
+ height: number;
2726
+ }, containerWidth: number, containerHeight: number, padding?: number): void;
2727
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapZoomService, never>;
2728
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketMapZoomService>;
2729
+ }
2730
+
2731
+ declare class ConfirmationOrderModalService extends BaseModalService {
2732
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationOrderModalService, never>;
2733
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationOrderModalService>;
2734
+ }
2735
+
2736
+ /**
2737
+ * Transporte SSE del estado de asientos en vivo. Es el único punto de la
2738
+ * librería que sabe de EventSource/HTTP para esto — aplica cada snapshot
2739
+ * recibido sobre PerformanceBookingDataService (repinta el mapa) y
2740
+ * TicketSelectionService (mantiene la disponibilidad al día para
2741
+ * validaciones de zona/límite de compra).
2742
+ *
2743
+ * Cada intento de reconexión pide un ticket NUEVO (el anterior es de un
2744
+ * solo uso y expira a los ~30s), con backoff exponencial acotado.
2745
+ */
2746
+ declare class SeatAvailabilitySseService {
2747
+ private apiService;
2748
+ private bookingDataService;
2749
+ private ticketSelectionService;
2750
+ private platformId;
2751
+ private config;
2752
+ private eventSource;
2753
+ private reconnectTimer;
2754
+ private reconnectAttempts;
2755
+ private currentPerformanceId;
2756
+ private currentIsAdmin;
2757
+ private stopped;
2758
+ constructor(apiService: ApiService, bookingDataService: PerformanceBookingDataService, ticketSelectionService: TicketSelectionService, platformId: Object, config: TickeraComponentsConfig);
2759
+ connect(performanceId: number, opts?: {
2760
+ isAdmin?: boolean;
2761
+ }): void;
2762
+ disconnect(): void;
2763
+ private openConnection;
2764
+ private startStream;
2765
+ private scheduleReconnect;
2766
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatAvailabilitySseService, never>;
2767
+ static ɵprov: i0.ɵɵInjectableDeclaration<SeatAvailabilitySseService>;
2768
+ }
2769
+
2770
+ /**
2771
+ * Cliente de la cola adaptativa (fase 4). No decide CUÁNDO se activa la
2772
+ * cola — eso es enteramente responsabilidad del backend (AdmissionGuard +
2773
+ * LoadBasedAdmissionPolicy) — este servicio solo sabe reaccionar al 429
2774
+ * `ADMISSION_QUEUE_REQUIRED` que ese guard puede devolver en
2775
+ * /carts/reserve y /orders/checkout.
2776
+ *
2777
+ * Uso típico en el punto de llamada (ver reservation-confirmation y
2778
+ * checkout-form): reintentar la request original dentro de un catchError:
2779
+ *
2780
+ * this.cartService.reserve(dto).pipe(
2781
+ * catchError((err) => {
2782
+ * if (!this.admissionQueueService.isAdmissionRequired(err)) return throwError(() => err);
2783
+ * const performanceId = this.admissionQueueService.getPerformanceId(err)!;
2784
+ * return this.admissionQueueService.waitForAdmission(performanceId).pipe(
2785
+ * switchMap(() => this.cartService.reserve(dto)),
2786
+ * );
2787
+ * }),
2788
+ * )
2789
+ *
2790
+ * Reutiliza el mismo transporte SSE con ticket de un solo uso de la fase 3
2791
+ * (ver SeatAvailabilitySseService) — acá el ticket llega directo en la
2792
+ * respuesta de /join, así que no hace falta un endpoint de ticket aparte;
2793
+ * cada reintento de conexión vuelve a hacer /join (el ticket anterior es
2794
+ * de un solo uso y expira a los ~30s).
2795
+ */
2796
+ declare class AdmissionQueueService {
2797
+ private apiService;
2798
+ private feedbackModalService;
2799
+ private platformId;
2800
+ private config;
2801
+ constructor(apiService: ApiService, feedbackModalService: FeedbackModalService, platformId: Object, config: TickeraComponentsConfig);
2802
+ /** True si el error es el 429 específico de "alta demanda, únete a la fila". */
2803
+ isAdmissionRequired(error: unknown): error is HttpErrorResponse;
2804
+ getPerformanceId(error: HttpErrorResponse): number | null;
2805
+ /**
2806
+ * Se une a la fila de `performanceId` y completa (emite una vez y cierra)
2807
+ * en cuanto el usuario queda admitido. Mientras espera, muestra un modal
2808
+ * ligero con la posición vigente, actualizado por SSE. Si quien se
2809
+ * suscribió se desuscribe antes de ser admitido (el usuario navega a
2810
+ * otro lado, cierra el modal, o el componente se destruye), libera el
2811
+ * lugar en la fila con /leave.
2812
+ */
2813
+ waitForAdmission(performanceId: number): Observable<void>;
2814
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdmissionQueueService, never>;
2815
+ static ɵprov: i0.ɵɵInjectableDeclaration<AdmissionQueueService>;
2816
+ }
2817
+
2818
+ declare class TicketQrService {
2819
+ private apiService;
2820
+ constructor(apiService: ApiService);
2821
+ fetchQrToken(ticketUuid: string): Observable<QrTokenResponse>;
2822
+ fetchMyQrToken(ticketUuid: string): Observable<QrTokenResponse>;
2823
+ downloadTicketPdf(ticketUuid: string): Observable<Blob>;
2824
+ downloadMyTicketPdf(ticketUuid: string): Observable<Blob>;
2825
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrService, never>;
2826
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketQrService>;
1322
2827
  }
1323
2828
 
1324
- declare class PriceZoneFormModalService {
1325
- private priceZoneEventService;
1326
- priceZone: WritableSignal<PriceZone | null>;
2829
+ declare class TicketQrModalService {
1327
2830
  isOpen: WritableSignal<boolean>;
1328
- constructor(priceZoneEventService: PriceZoneEventService);
1329
- get modalIsOpen(): WritableSignal<boolean>;
1330
- get currentPriceZone(): WritableSignal<PriceZone | null>;
1331
- open(priceZone?: PriceZone | null): void;
2831
+ ticketUuid: WritableSignal<string | null>;
2832
+ ticketDescription: WritableSignal<string | null>;
2833
+ open(ticketUuid: string, description?: string): void;
1332
2834
  close(): void;
1333
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneFormModalService, never>;
1334
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneFormModalService>;
2835
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrModalService, never>;
2836
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketQrModalService>;
2837
+ }
2838
+
2839
+ declare class VipCardService {
2840
+ private apiService;
2841
+ constructor(apiService: ApiService);
2842
+ findMy(): Observable<{
2843
+ data: VipCard | null;
2844
+ }>;
2845
+ activate(data: any): Observable<VipOrderResponse>;
2846
+ recharge(data: any): Observable<VipOrderResponse>;
2847
+ fetchAll(params?: FetchVipCardsParams): Observable<VipCardsResponse>;
2848
+ fetchOneById(id: number): Observable<VipCardResponse>;
2849
+ activateAdmin(data: ActivateVipCardParams): Observable<VipOrderResponse>;
2850
+ rechargeAdmin(id: number, data: any): Observable<VipOrderResponse>;
2851
+ updateStatus(id: number, status: VipCardStatus): Observable<VipCardResponse>;
2852
+ updateTerms(id: number): Observable<VipCardResponse>;
2853
+ fetchTransactions(id: number, page?: number, limit?: number): Observable<VipTransactionsResponse>;
2854
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipCardService, never>;
2855
+ static ɵprov: i0.ɵɵInjectableDeclaration<VipCardService>;
2856
+ }
2857
+
2858
+ /**
2859
+ * Servicio genérico de "cambios pendientes" para tablas con edición rápida
2860
+ * + guardado masivo (QTN-49, primer consumidor: Bonos de Regalo en
2861
+ * tickera-backoffice-frontend).
2862
+ *
2863
+ * IMPORTANTE: proveerlo a nivel de componente/página
2864
+ * (`providers: [PendingChangesService]` en el `@Component` que lo usa),
2865
+ * NUNCA en `providedIn: 'root'` — si no, dos tablas con edición rápida
2866
+ * abiertas al mismo tiempo (dos pestañas, o dos listados en la misma
2867
+ * sesión) compartirían el mismo estado de cambios pendientes. Mismo
2868
+ * criterio que ya sigue este repo con GiftBondService, provisto a nivel de
2869
+ * GiftBondDetailsComponent en vez de en 'root'.
2870
+ */
2871
+ declare class PendingChangesService<TValue = any> {
2872
+ private readonly changesSignal;
2873
+ private readonly originalValues;
2874
+ readonly changes: Signal<Map<number, TValue>>;
2875
+ readonly changeCount: Signal<number>;
2876
+ readonly hasChanges: Signal<boolean>;
2877
+ /**
2878
+ * Registra (o actualiza) el cambio pendiente de `id`. `originalValue` es
2879
+ * el valor que tenía la fila antes de cualquier edición en esta sesión de
2880
+ * la tabla — solo se guarda la primera vez que se llama para ese id, así
2881
+ * que no importa pasarlo en cada llamada subsiguiente.
2882
+ *
2883
+ * Si `newValue` termina siendo igual al valor original, el id se
2884
+ * elimina automáticamente de los cambios pendientes (evita que quede
2885
+ * marcado como "modificado" un valor que el usuario cambió y luego
2886
+ * revirtió a mano).
2887
+ */
2888
+ setChange(id: number, originalValue: TValue, newValue: TValue): void;
2889
+ getPendingValue(id: number): TValue | undefined;
2890
+ /** Descarta el cambio pendiente de una fila puntual (botón "Deshacer" por fila, si aplica). */
2891
+ discard(id: number): void;
2892
+ /** Descarta todos los cambios pendientes sin guardar nada (botón "Deshacer" de la barra flotante). */
2893
+ discardAll(): void;
2894
+ /** Llamar después de que el guardado en lote fue exitoso, para limpiar el estado. */
2895
+ clearAfterSave(): void;
2896
+ static ɵfac: i0.ɵɵFactoryDeclaration<PendingChangesService<any>, never>;
2897
+ static ɵprov: i0.ɵɵInjectableDeclaration<PendingChangesService<any>>;
1335
2898
  }
1336
2899
 
1337
2900
  declare const authInterceptor: HttpInterceptorFn;
@@ -1341,19 +2904,19 @@ declare class AppButtonComponent {
1341
2904
  disabled: boolean;
1342
2905
  loading: boolean;
1343
2906
  type: 'button' | 'submit';
1344
- variant: 'primary' | 'secondary' | 'terciary' | 'success' | 'transparent';
2907
+ variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent';
1345
2908
  text: string;
1346
2909
  size: 'xs' | 'sm' | 'md' | 'lg';
1347
2910
  loadingText: string;
1348
2911
  icon: string;
2912
+ tooltip: string;
1349
2913
  handleClick(): void;
1350
2914
  get buttonClasses(): string;
1351
2915
  static ɵfac: i0.ɵɵFactoryDeclaration<AppButtonComponent, never>;
1352
- static ɵcmp: i0.ɵɵComponentDeclaration<AppButtonComponent, "app-button", never, { "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "text": { "alias": "text"; "required": false; }; "size": { "alias": "size"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
2916
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppButtonComponent, "app-button", never, { "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "text": { "alias": "text"; "required": false; }; "size": { "alias": "size"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
1353
2917
  }
1354
2918
 
1355
2919
  declare class AppLinkButtonComponent {
1356
- protected readonly BASE_BUTTON_CLASSES: string;
1357
2920
  disabled: boolean;
1358
2921
  loading: boolean;
1359
2922
  target: '_blank' | '_self' | '_parent' | '_top';
@@ -1363,10 +2926,11 @@ declare class AppLinkButtonComponent {
1363
2926
  route: string;
1364
2927
  queryParams: Record<string, any>;
1365
2928
  size: 'xs' | 'sm' | 'md' | 'lg';
1366
- variant: 'primary' | 'secondary' | 'terciary' | 'success' | 'transparent';
2929
+ variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent';
2930
+ tooltip: string;
1367
2931
  get buttonClasses(): string;
1368
2932
  static ɵfac: i0.ɵɵFactoryDeclaration<AppLinkButtonComponent, never>;
1369
- static ɵcmp: i0.ɵɵComponentDeclaration<AppLinkButtonComponent, "app-link-button", never, { "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "target": { "alias": "target"; "required": false; }; "text": { "alias": "text"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "route": { "alias": "route"; "required": false; }; "queryParams": { "alias": "queryParams"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, {}, never, never, true, never>;
2933
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppLinkButtonComponent, "app-link-button", never, { "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "target": { "alias": "target"; "required": false; }; "text": { "alias": "text"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "route": { "alias": "route"; "required": false; }; "queryParams": { "alias": "queryParams"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; }, {}, never, never, true, never>;
1370
2934
  }
1371
2935
 
1372
2936
  declare class AppAlertComponent {
@@ -1374,38 +2938,70 @@ declare class AppAlertComponent {
1374
2938
  text: string;
1375
2939
  closeable: boolean;
1376
2940
  size: 'xs' | 'sm' | 'md' | 'lg';
1377
- get alertColorClasses(): string;
1378
- get alertSizeClasses(): string;
1379
- get alertClasses(): string;
1380
2941
  get alertIcon(): string;
1381
2942
  static ɵfac: i0.ɵɵFactoryDeclaration<AppAlertComponent, never>;
1382
2943
  static ɵcmp: i0.ɵɵComponentDeclaration<AppAlertComponent, "app-alert", never, { "type": { "alias": "type"; "required": false; }; "text": { "alias": "text"; "required": false; }; "closeable": { "alias": "closeable"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
1383
2944
  }
1384
2945
 
1385
- declare class LoadingmModalComponent {
1386
- private loadingModalService;
1387
- constructor(loadingModalService: LoadingModalService);
1388
- get isOpen(): i0.WritableSignal<boolean>;
1389
- get title(): i0.WritableSignal<string>;
2946
+ declare class FeedbackModalComponent implements OnChanges, OnDestroy {
2947
+ isOpen: WritableSignal<boolean>;
2948
+ type: FeedbackModalType;
2949
+ title: string;
2950
+ message: string;
2951
+ showHeader: boolean;
2952
+ showCloseButton: boolean;
2953
+ showTitle: boolean;
2954
+ autoClose: boolean;
2955
+ autoCloseDuration: number;
2956
+ buttonText: string;
2957
+ closed: EventEmitter<void>;
2958
+ private autoCloseTimeout;
2959
+ get defaultButtonText(): string;
2960
+ get resolvedButtonText(): string;
2961
+ get buttonVariant(): 'primary' | 'secondary';
2962
+ ngOnChanges(changes: SimpleChanges): void;
2963
+ ngOnDestroy(): void;
1390
2964
  closeModal(): void;
1391
- onCitySaved(): void;
1392
- static ɵfac: i0.ɵɵFactoryDeclaration<LoadingmModalComponent, never>;
1393
- static ɵcmp: i0.ɵɵComponentDeclaration<LoadingmModalComponent, "loading-modal", never, {}, {}, never, never, true, never>;
2965
+ private scheduleAutoClose;
2966
+ private clearAutoClose;
2967
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackModalComponent, never>;
2968
+ static ɵcmp: i0.ɵɵComponentDeclaration<FeedbackModalComponent, "feedback-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "type": { "alias": "type"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; }; "showTitle": { "alias": "showTitle"; "required": false; }; "autoClose": { "alias": "autoClose"; "required": false; }; "autoCloseDuration": { "alias": "autoCloseDuration"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; }, { "closed": "closed"; }, never, never, true, never>;
1394
2969
  }
1395
2970
 
2971
+ type DeleteConfirmationStep = 'input' | 'final';
1396
2972
  declare class DeleteConfirmationComponent {
1397
2973
  private fb;
1398
2974
  private deleteConfirmationService;
1399
2975
  protected transloco: TranslocoService;
1400
2976
  deleteConfirmationForm: FormGroup;
2977
+ /**
2978
+ * Two-step flow:
2979
+ * 1. 'input' -> the user must type the resource name to unlock the delete action.
2980
+ * 2. 'final' -> a last feedback/confirmation step is shown before the delete
2981
+ * callback actually runs, so a slip of the mouse on the first
2982
+ * step can never trigger a real deletion by itself.
2983
+ */
2984
+ step: DeleteConfirmationStep;
1401
2985
  constructor(fb: FormBuilder, deleteConfirmationService: DeleteConfirmationService, transloco: TranslocoService);
1402
2986
  get title(): string;
1403
2987
  get resourceName(): string;
1404
2988
  get confirmationText(): string;
1405
2989
  get isOpen(): i0.WritableSignal<boolean>;
1406
2990
  get isConfirmationValid(): boolean;
2991
+ get isFinalStep(): boolean;
2992
+ /** Cancels the whole flow (from either step) without deleting anything. */
1407
2993
  onCloseModal(): void;
2994
+ /** Step 1 submit: only advances to the final confirmation, never deletes. */
1408
2995
  onConfirmDelete(): void;
2996
+ /**
2997
+ * Step 2 cancel: goes back to the input step without touching what the
2998
+ * user typed, so they don't have to retype it if they just want to
2999
+ * double-check before deleting.
3000
+ */
3001
+ onBackToInput(): void;
3002
+ /** Step 2 submit: this is the only place that actually triggers deletion. */
3003
+ onFinalConfirm(): void;
3004
+ private resetState;
1409
3005
  static ɵfac: i0.ɵɵFactoryDeclaration<DeleteConfirmationComponent, never>;
1410
3006
  static ɵcmp: i0.ɵɵComponentDeclaration<DeleteConfirmationComponent, "delete-confirmation", never, {}, {}, never, never, true, never>;
1411
3007
  }
@@ -1413,14 +3009,29 @@ declare class DeleteConfirmationComponent {
1413
3009
  declare class AppModalComponent {
1414
3010
  title: string;
1415
3011
  disableClose: boolean;
3012
+ showHeader: boolean;
3013
+ showCloseButton: boolean;
3014
+ showTitle: boolean;
3015
+ interactiveClose: boolean;
1416
3016
  isOpen: WritableSignal<boolean>;
1417
- size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
3017
+ size: ModalSize;
1418
3018
  closeModal: EventEmitter<void>;
1419
- private readonly SIZE_CLASSES;
1420
- get sizeClass(): string;
1421
3019
  onCloseModal(): void;
3020
+ onInteractiveClose(): void;
3021
+ onKeydownEscape(): void;
1422
3022
  static ɵfac: i0.ɵɵFactoryDeclaration<AppModalComponent, never>;
1423
- static ɵcmp: i0.ɵɵComponentDeclaration<AppModalComponent, "app-modal", never, { "title": { "alias": "title"; "required": false; }; "disableClose": { "alias": "disableClose"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "closeModal": "closeModal"; }, never, ["*"], true, never>;
3023
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppModalComponent, "app-modal", never, { "title": { "alias": "title"; "required": false; }; "disableClose": { "alias": "disableClose"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; }; "showTitle": { "alias": "showTitle"; "required": false; }; "interactiveClose": { "alias": "interactiveClose"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "closeModal": "closeModal"; }, never, ["*"], true, never>;
3024
+ }
3025
+
3026
+ declare class AppBadgeComponent {
3027
+ text: string;
3028
+ color: BadgeColor;
3029
+ size: BadgeSize;
3030
+ bordered: boolean;
3031
+ backgroundColor: string;
3032
+ textColor: string;
3033
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppBadgeComponent, never>;
3034
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppBadgeComponent, "app-badge", never, { "text": { "alias": "text"; "required": false; }; "color": { "alias": "color"; "required": false; }; "size": { "alias": "size"; "required": false; }; "bordered": { "alias": "bordered"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; }, {}, never, never, true, never>;
1424
3035
  }
1425
3036
 
1426
3037
  declare class AuditInformationComponent {
@@ -1429,12 +3040,13 @@ declare class AuditInformationComponent {
1429
3040
  static ɵcmp: i0.ɵɵComponentDeclaration<AuditInformationComponent, "app-audit-information", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
1430
3041
  }
1431
3042
 
1432
- declare class DynamicTableComponent {
3043
+ declare class DynamicTableComponent implements OnChanges {
1433
3044
  private injector;
1434
3045
  constructor(injector: Injector);
1435
3046
  title: string;
1436
3047
  data: any[];
1437
3048
  headers: any[];
3049
+ searcherPlaceholder: string;
1438
3050
  columnComponents: {
1439
3051
  [key: string]: Type<any>;
1440
3052
  };
@@ -1442,17 +3054,116 @@ declare class DynamicTableComponent {
1442
3054
  totalItems: number;
1443
3055
  itemsPerPage: number;
1444
3056
  currentPage: number;
3057
+ searchValue: string;
1445
3058
  pageChange: EventEmitter<number>;
1446
3059
  searchChange: EventEmitter<string>;
3060
+ pageSizeChange: EventEmitter<number>;
3061
+ pageSizeOptions: number[];
1447
3062
  showPagination: boolean;
1448
3063
  showSearch: boolean;
1449
3064
  showTitle: boolean;
1450
3065
  get totalPages(): number;
1451
3066
  onSearch(event: any): void;
1452
3067
  changePage(delta: number): void;
3068
+ changePageSize(event: any): void;
3069
+ private rowInjectors;
3070
+ ngOnChanges(changes: SimpleChanges): void;
1453
3071
  createInjector(row: any): Injector;
1454
3072
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicTableComponent, never>;
1455
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicTableComponent, "dynamic-table", never, { "title": { "alias": "title"; "required": false; }; "data": { "alias": "data"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "columnComponents": { "alias": "columnComponents"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "showPagination": { "alias": "showPagination"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "showTitle": { "alias": "showTitle"; "required": false; }; }, { "pageChange": "pageChange"; "searchChange": "searchChange"; }, never, never, true, never>;
3073
+ static ɵcmp: i0.ɵɵComponentDeclaration<DynamicTableComponent, "dynamic-table", never, { "title": { "alias": "title"; "required": false; }; "data": { "alias": "data"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "searcherPlaceholder": { "alias": "searcherPlaceholder"; "required": false; }; "columnComponents": { "alias": "columnComponents"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "searchValue": { "alias": "searchValue"; "required": false; }; "showPagination": { "alias": "showPagination"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "showTitle": { "alias": "showTitle"; "required": false; }; }, { "pageChange": "pageChange"; "searchChange": "searchChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
3074
+ }
3075
+
3076
+ declare class TextExpandableComponent implements OnChanges {
3077
+ text: string;
3078
+ maxLength: number;
3079
+ fontSize: TextFontSize;
3080
+ allowHtml: boolean;
3081
+ maxLines?: number;
3082
+ protected expanded: boolean;
3083
+ ngOnChanges(): void;
3084
+ get plainText(): string;
3085
+ get truncated(): boolean;
3086
+ get visibleText(): string;
3087
+ get lines(): number;
3088
+ toggleExpanded(): void;
3089
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextExpandableComponent, never>;
3090
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextExpandableComponent, "text-expandable", never, { "text": { "alias": "text"; "required": true; }; "maxLength": { "alias": "maxLength"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "allowHtml": { "alias": "allowHtml"; "required": false; }; "maxLines": { "alias": "maxLines"; "required": false; }; }, {}, never, never, true, never>;
3091
+ }
3092
+
3093
+ /**
3094
+ * Select genérico para editar un campo (típicamente "estado") directamente
3095
+ * en una celda de tabla, sin guardar de inmediato (QTN-49).
3096
+ *
3097
+ * Este componente es deliberadamente "tonto": no sabe a qué recurso
3098
+ * pertenece la fila ni cómo guardarla — solo muestra `options`, refleja
3099
+ * `value`, y emite `valueChange` cuando el usuario elige otra opción.
3100
+ * El componente que lo envuelve (p. ej. gift-bond-table-status en
3101
+ * tickera-backoffice-frontend) es quien conoce el id de la fila y decide
3102
+ * si guarda de inmediato o acumula el cambio en un
3103
+ * PendingChangesService + bulk-save-bar para guardado masivo.
3104
+ */
3105
+ declare class QuickStatusEditComponent {
3106
+ options: SelectOption[];
3107
+ value: any;
3108
+ /** Resalta visualmente la celda como "modificada, sin guardar". */
3109
+ dirty: boolean;
3110
+ disabled: boolean;
3111
+ valueChange: EventEmitter<any>;
3112
+ onChange(newValue: any): void;
3113
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuickStatusEditComponent, never>;
3114
+ static ɵcmp: i0.ɵɵComponentDeclaration<QuickStatusEditComponent, "quick-status-edit", never, { "options": { "alias": "options"; "required": true; }; "value": { "alias": "value"; "required": false; }; "dirty": { "alias": "dirty"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
3115
+ }
3116
+
3117
+ /**
3118
+ * Barra flotante "Guardar cambios" para guardado masivo (QTN-49).
3119
+ *
3120
+ * No conoce el recurso concreto ni cómo persistir los cambios — el
3121
+ * componente que la usa le pasa `[count]` (típicamente
3122
+ * `pendingChangesService.changeCount()`) y escucha `(save)`/`(discard)`
3123
+ * para llamar al endpoint bulk correspondiente.
3124
+ */
3125
+ declare class BulkSaveBarComponent {
3126
+ count: number;
3127
+ loading: boolean;
3128
+ saveLabel: string;
3129
+ discardLabel: string;
3130
+ save: EventEmitter<void>;
3131
+ discard: EventEmitter<void>;
3132
+ static ɵfac: i0.ɵɵFactoryDeclaration<BulkSaveBarComponent, never>;
3133
+ static ɵcmp: i0.ɵɵComponentDeclaration<BulkSaveBarComponent, "bulk-save-bar", never, { "count": { "alias": "count"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "saveLabel": { "alias": "saveLabel"; "required": false; }; "discardLabel": { "alias": "discardLabel"; "required": false; }; }, { "save": "save"; "discard": "discard"; }, never, never, true, never>;
3134
+ }
3135
+
3136
+ declare class ShowCardComponent {
3137
+ show: Show;
3138
+ linkText: string;
3139
+ linkUrlFn?: (show: Show) => string;
3140
+ linkQueryParams?: Record<string, any>;
3141
+ transloco: TranslocoService;
3142
+ dateService: DateService;
3143
+ formatTimeDate(date: string): Date;
3144
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowCardComponent, never>;
3145
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowCardComponent, "show-card", never, { "show": { "alias": "show"; "required": true; }; "linkText": { "alias": "linkText"; "required": false; }; "linkUrlFn": { "alias": "linkUrlFn"; "required": false; }; "linkQueryParams": { "alias": "linkQueryParams"; "required": false; }; }, {}, never, never, true, never>;
3146
+ }
3147
+
3148
+ declare class ShowTypeBadgeComponent {
3149
+ show: Show;
3150
+ size: BadgeSize;
3151
+ transloco: TranslocoService;
3152
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowTypeBadgeComponent, never>;
3153
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowTypeBadgeComponent, "show-type-badge", never, { "show": { "alias": "show"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
3154
+ }
3155
+
3156
+ declare class ShowCardSkeletonComponent {
3157
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowCardSkeletonComponent, never>;
3158
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowCardSkeletonComponent, "show-card-skeleton", never, {}, {}, never, never, true, never>;
3159
+ }
3160
+
3161
+ declare class AppBreadcumbComponent {
3162
+ homeUrl: string | undefined;
3163
+ steps: BreadcrumbStep[];
3164
+ theme: BreadcrumbTheme;
3165
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppBreadcumbComponent, never>;
3166
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppBreadcumbComponent, "app-breadcrumb", never, { "homeUrl": { "alias": "homeUrl"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; }, {}, never, never, true, never>;
1456
3167
  }
1457
3168
 
1458
3169
  declare class LanguageSwitcherComponent {
@@ -1465,6 +3176,67 @@ declare class LanguageSwitcherComponent {
1465
3176
  static ɵcmp: i0.ɵɵComponentDeclaration<LanguageSwitcherComponent, "language-switcher", never, {}, {}, never, never, true, never>;
1466
3177
  }
1467
3178
 
3179
+ declare class SidebarMenuComponent implements OnInit {
3180
+ private router;
3181
+ protected sidebarState: SidebarStateService;
3182
+ /** Menu items to render. Each app owns its own routes/roles and passes them in here. */
3183
+ items: SidebarMenuItem[];
3184
+ /** Route the brand/logo link should navigate to (e.g. the dashboard). */
3185
+ homePath: string;
3186
+ /** Optional brand logo shown in the sidebar header. Omit to render no logo. */
3187
+ logoUrl: string;
3188
+ logoAlt: string;
3189
+ private readonly IS_ACTIVE_MATCH_OPTIONS;
3190
+ constructor(router: Router, sidebarState: SidebarStateService);
3191
+ ngOnInit(): void;
3192
+ private updateSubmenuState;
3193
+ isSubmenuActive(item: SidebarMenuItem): boolean;
3194
+ toggleSubmenu(item: SidebarMenuItem): void;
3195
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidebarMenuComponent, never>;
3196
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarMenuComponent, "sidebar-menu", never, { "items": { "alias": "items"; "required": true; }; "homePath": { "alias": "homePath"; "required": true; }; "logoUrl": { "alias": "logoUrl"; "required": false; }; "logoAlt": { "alias": "logoAlt"; "required": false; }; }, {}, never, never, true, never>;
3197
+ }
3198
+
3199
+ declare class AdminNavbarComponent {
3200
+ protected sidebarState: SidebarStateService;
3201
+ /** Currently logged-in admin, or null while it hasn't loaded yet. */
3202
+ admin: Admin | null;
3203
+ /** Route the "my account" menu item should link to. */
3204
+ myAccountPath: string;
3205
+ /** Emitted when the admin clicks "log out" in the profile menu. */
3206
+ logout: EventEmitter<void>;
3207
+ isProfileMenuOpen: WritableSignal<boolean>;
3208
+ constructor(sidebarState: SidebarStateService);
3209
+ toggleProfileMenu(): void;
3210
+ onLogout(): void;
3211
+ clickout(event: Event): void;
3212
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdminNavbarComponent, never>;
3213
+ static ɵcmp: i0.ɵɵComponentDeclaration<AdminNavbarComponent, "admin-navbar", never, { "admin": { "alias": "admin"; "required": false; }; "myAccountPath": { "alias": "myAccountPath"; "required": false; }; }, { "logout": "logout"; }, never, never, true, never>;
3214
+ }
3215
+
3216
+ /**
3217
+ * Reusable admin shell: sidebar + navbar + router-outlet.
3218
+ *
3219
+ * This component is intentionally free of any auth/session logic — that stays
3220
+ * in the consuming app. Project app-specific global UI (e.g. a session-timeout
3221
+ * modal) through the default content slot.
3222
+ */
3223
+ declare class AdminLayoutComponent {
3224
+ items: SidebarMenuItem[];
3225
+ homePath: string;
3226
+ admin: Admin | null;
3227
+ myAccountPath: string;
3228
+ logoUrl: string;
3229
+ logoAlt: string;
3230
+ logout: EventEmitter<void>;
3231
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdminLayoutComponent, never>;
3232
+ static ɵcmp: i0.ɵɵComponentDeclaration<AdminLayoutComponent, "admin-layout", never, { "items": { "alias": "items"; "required": true; }; "homePath": { "alias": "homePath"; "required": true; }; "admin": { "alias": "admin"; "required": false; }; "myAccountPath": { "alias": "myAccountPath"; "required": false; }; "logoUrl": { "alias": "logoUrl"; "required": false; }; "logoAlt": { "alias": "logoAlt"; "required": false; }; }, { "logout": "logout"; }, never, ["*"], true, never>;
3233
+ }
3234
+
3235
+ declare class PublicLayoutComponent {
3236
+ static ɵfac: i0.ɵɵFactoryDeclaration<PublicLayoutComponent, never>;
3237
+ static ɵcmp: i0.ɵɵComponentDeclaration<PublicLayoutComponent, "app-public-layout", never, {}, {}, never, never, true, never>;
3238
+ }
3239
+
1468
3240
  declare class FormInputComponent implements ControlValueAccessor {
1469
3241
  ngControl: NgControl;
1470
3242
  private transloco;
@@ -1475,12 +3247,14 @@ declare class FormInputComponent implements ControlValueAccessor {
1475
3247
  placeholder: string;
1476
3248
  required: boolean;
1477
3249
  readonly: boolean;
3250
+ maxlength: number | null;
1478
3251
  minlength: number | null;
3252
+ max: number | null;
1479
3253
  min: number | null;
1480
3254
  step: number | null;
1481
3255
  pattern: string | null;
1482
3256
  fieldGroupClass: string;
1483
- autocomplete: boolean;
3257
+ autocomplete: string;
1484
3258
  value: any;
1485
3259
  disabled: boolean;
1486
3260
  onChange: any;
@@ -1497,12 +3271,68 @@ declare class FormInputComponent implements ControlValueAccessor {
1497
3271
  get inputClasses(): string;
1498
3272
  get fieldGroupClasses(): string;
1499
3273
  static ɵfac: i0.ɵɵFactoryDeclaration<FormInputComponent, [{ optional: true; self: true; }, null]>;
1500
- static ɵcmp: i0.ɵɵComponentDeclaration<FormInputComponent, "form-input", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "min": { "alias": "min"; "required": false; }; "step": { "alias": "step"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; }, {}, never, never, true, never>;
3274
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormInputComponent, "form-input", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "max": { "alias": "max"; "required": false; }; "min": { "alias": "min"; "required": false; }; "step": { "alias": "step"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; }, {}, never, never, true, never>;
3275
+ }
3276
+
3277
+ type IdentityDocumentType = 'CC' | 'CE' | 'PA' | 'NIT' | 'TI' | 'RC';
3278
+ /**
3279
+ * Campo de documento de identidad (QTN-44).
3280
+ *
3281
+ * Componente compartido que, dado un `documentType` (CC, CE, PA, NIT, TI, RC),
3282
+ * aplica automáticamente el formato y las validaciones correspondientes a los
3283
+ * lineamientos de documentos de identidad de Colombia: solo dígitos y rango de
3284
+ * longitud para CC/TI/RC/NIT, alfanumérico con longitud máxima para CE/PA, y
3285
+ * validación opcional del dígito de verificación (DV) para NIT.
3286
+ *
3287
+ * Sigue el mismo patrón que `NumberInputComponent`: standalone,
3288
+ * `ControlValueAccessor` + `Validator` vía `NG_VALUE_ACCESSOR`/`NG_VALIDATORS`.
3289
+ */
3290
+ declare class IdentityDocumentInputComponent implements ControlValueAccessor, Validator, OnChanges {
3291
+ transloco: TranslocoService;
3292
+ private injector;
3293
+ private elementRef;
3294
+ label: string;
3295
+ name: string;
3296
+ id: string;
3297
+ placeholder: string;
3298
+ required: boolean;
3299
+ readonly: boolean;
3300
+ fieldGroupClass: string;
3301
+ documentType: IdentityDocumentType | '';
3302
+ validateCheckDigit: boolean;
3303
+ value: string | null;
3304
+ disabled: boolean;
3305
+ onChange: any;
3306
+ onTouched: any;
3307
+ private _ngControl;
3308
+ constructor(transloco: TranslocoService, injector: Injector, elementRef: ElementRef);
3309
+ get ngControl(): NgControl | null;
3310
+ ngOnChanges(changes: SimpleChanges): void;
3311
+ private get rule();
3312
+ get isDigitsOnly(): boolean;
3313
+ get inputMode(): string;
3314
+ get maxLength(): number | null;
3315
+ writeValue(value: any): void;
3316
+ registerOnChange(fn: any): void;
3317
+ registerOnTouched(fn: any): void;
3318
+ setDisabledState(isDisabled: boolean): void;
3319
+ onKeyDown(event: KeyboardEvent): void;
3320
+ onInput(rawValue: string): void;
3321
+ validate(control: AbstractControl): ValidationErrors | null;
3322
+ private validateLength;
3323
+ private validateNitWithCheckDigit;
3324
+ static computeNitCheckDigit(nit: string): number;
3325
+ get inputId(): string;
3326
+ get showError(): boolean;
3327
+ get errorMessage(): string;
3328
+ get fieldGroupClasses(): string;
3329
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdentityDocumentInputComponent, never>;
3330
+ static ɵcmp: i0.ɵɵComponentDeclaration<IdentityDocumentInputComponent, "identity-document-input", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "documentType": { "alias": "documentType"; "required": false; }; "validateCheckDigit": { "alias": "validateCheckDigit"; "required": false; }; }, {}, never, never, true, never>;
1501
3331
  }
1502
3332
 
1503
3333
  declare class FormSelectComponent implements ControlValueAccessor {
1504
3334
  ngControl: NgControl;
1505
- private transloco;
3335
+ protected transloco: TranslocoService;
1506
3336
  label: string;
1507
3337
  name: string;
1508
3338
  id: string;
@@ -1526,8 +3356,6 @@ declare class FormSelectComponent implements ControlValueAccessor {
1526
3356
  get inputId(): string;
1527
3357
  get showError(): boolean;
1528
3358
  get errorMessage(): string;
1529
- get resolvedDefaultOptionLabel(): string;
1530
- get selectClasses(): string;
1531
3359
  get fieldGroupClasses(): string;
1532
3360
  static ɵfac: i0.ɵɵFactoryDeclaration<FormSelectComponent, [{ optional: true; self: true; }, null]>;
1533
3361
  static ɵcmp: i0.ɵɵComponentDeclaration<FormSelectComponent, "form-select", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "options": { "alias": "options"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "showDefaultOption": { "alias": "showDefaultOption"; "required": false; }; "defaultOptionLabel": { "alias": "defaultOptionLabel"; "required": false; }; }, {}, never, never, true, never>;
@@ -1560,12 +3388,110 @@ declare class FormTextareaComponent implements ControlValueAccessor {
1560
3388
  get inputId(): string;
1561
3389
  get showError(): boolean;
1562
3390
  get errorMessage(): string;
1563
- get inputClasses(): string;
1564
3391
  get fieldGroupClasses(): string;
1565
3392
  static ɵfac: i0.ɵɵFactoryDeclaration<FormTextareaComponent, [{ optional: true; self: true; }, null]>;
1566
3393
  static ɵcmp: i0.ɵɵComponentDeclaration<FormTextareaComponent, "form-textarea", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; }, {}, never, never, true, never>;
1567
3394
  }
1568
3395
 
3396
+ declare class NumberInputComponent implements ControlValueAccessor, Validator, OnChanges {
3397
+ transloco: TranslocoService;
3398
+ private injector;
3399
+ private elementRef;
3400
+ label: string;
3401
+ name: string;
3402
+ id: string;
3403
+ placeholder: string;
3404
+ required: boolean;
3405
+ readonly: boolean;
3406
+ min: number | null;
3407
+ max: number | null;
3408
+ step: number;
3409
+ fieldGroupClass: string;
3410
+ value: number | null;
3411
+ disabled: boolean;
3412
+ onChange: any;
3413
+ onTouched: any;
3414
+ private _ngControl;
3415
+ constructor(transloco: TranslocoService, injector: Injector, elementRef: ElementRef);
3416
+ get ngControl(): NgControl | null;
3417
+ ngOnChanges(changes: SimpleChanges): void;
3418
+ validate(control: AbstractControl): ValidationErrors | null;
3419
+ writeValue(value: any): void;
3420
+ registerOnChange(fn: any): void;
3421
+ registerOnTouched(fn: any): void;
3422
+ setDisabledState(isDisabled: boolean): void;
3423
+ onInput(value: any): void;
3424
+ increment(): void;
3425
+ decrement(): void;
3426
+ get canIncrement(): boolean;
3427
+ get canDecrement(): boolean;
3428
+ get inputId(): string;
3429
+ get showError(): boolean;
3430
+ get errorMessage(): string;
3431
+ get fieldGroupClasses(): string;
3432
+ private clamp;
3433
+ private round;
3434
+ private emitNativeChange;
3435
+ private minValidator;
3436
+ private maxValidator;
3437
+ static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputComponent, never>;
3438
+ static ɵcmp: i0.ɵɵComponentDeclaration<NumberInputComponent, "number-input", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; }, {}, never, never, true, never>;
3439
+ }
3440
+
3441
+ declare class PhoneInputComponent implements ControlValueAccessor, Validator, OnChanges {
3442
+ private transloco;
3443
+ private injector;
3444
+ label: string;
3445
+ name: string;
3446
+ id: string;
3447
+ placeholder: string;
3448
+ required: boolean;
3449
+ readonly: boolean;
3450
+ maxNationalDigits: number | null;
3451
+ minNationalDigits: number | null;
3452
+ defaultCountry: string;
3453
+ fieldGroupClass: string;
3454
+ readonly countries: tickera_angular_components.PhoneCountry[];
3455
+ readonly phoneOptions: {
3456
+ search: string;
3457
+ name: string;
3458
+ isoCode: string;
3459
+ dialCode: string;
3460
+ }[];
3461
+ selectedIso: string;
3462
+ nationalNumber: string;
3463
+ disabled: boolean;
3464
+ onChange: any;
3465
+ onTouched: any;
3466
+ onValidatorChange: () => void;
3467
+ private _ngControl;
3468
+ constructor(transloco: TranslocoService, injector: Injector);
3469
+ get ngControl(): NgControl | null;
3470
+ get selectedCountry(): tickera_angular_components.PhoneCountry;
3471
+ get dialCode(): string;
3472
+ dialCodeOf(isoCode: string): string;
3473
+ get value(): string;
3474
+ ngOnChanges(changes: SimpleChanges): void;
3475
+ registerOnValidatorChange(fn: () => void): void;
3476
+ validate(control: AbstractControl): ValidationErrors | null;
3477
+ writeValue(value: string | null | undefined): void;
3478
+ registerOnChange(fn: any): void;
3479
+ registerOnTouched(fn: any): void;
3480
+ setDisabledState(isDisabled: boolean): void;
3481
+ onInput(event: Event): void;
3482
+ onCountryChange(isoCode: string): void;
3483
+ get inputId(): string;
3484
+ get showError(): boolean;
3485
+ get errorMessage(): string;
3486
+ get effectivePlaceholder(): string;
3487
+ get fieldGroupClasses(): string;
3488
+ flag(isoCode: string): string;
3489
+ private sanitize;
3490
+ private nationalDigits;
3491
+ static ɵfac: i0.ɵɵFactoryDeclaration<PhoneInputComponent, never>;
3492
+ static ɵcmp: i0.ɵɵComponentDeclaration<PhoneInputComponent, "phone-input", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "maxNationalDigits": { "alias": "maxNationalDigits"; "required": false; }; "minNationalDigits": { "alias": "minNationalDigits"; "required": false; }; "defaultCountry": { "alias": "defaultCountry"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; }, {}, never, never, true, never>;
3493
+ }
3494
+
1569
3495
  declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {
1570
3496
  ngControl: NgControl;
1571
3497
  private transloco;
@@ -1583,7 +3509,8 @@ declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDes
1583
3509
  onChange: any;
1584
3510
  onTouched: any;
1585
3511
  private subscription;
1586
- constructor(ngControl: NgControl, transloco: TranslocoService);
3512
+ isBrowser: boolean;
3513
+ constructor(ngControl: NgControl, transloco: TranslocoService, platformId: object);
1587
3514
  ngOnInit(): void;
1588
3515
  ngOnDestroy(): void;
1589
3516
  writeValue(value: any): void;
@@ -1594,7 +3521,7 @@ declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDes
1594
3521
  get showError(): boolean;
1595
3522
  get errorMessage(): string;
1596
3523
  get fieldGroupClasses(): string;
1597
- static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, [{ optional: true; self: true; }, null]>;
3524
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, [{ optional: true; self: true; }, null, null]>;
1598
3525
  static ɵcmp: i0.ɵɵComponentDeclaration<FormEditorComponent, "form-editor", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "toolbar": { "alias": "toolbar"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; }, {}, never, never, true, never>;
1599
3526
  }
1600
3527
 
@@ -1628,7 +3555,6 @@ declare class ColorPickerComponent implements ControlValueAccessor {
1628
3555
  selectPresetColor(color: string): void;
1629
3556
  get inputId(): string;
1630
3557
  get showError(): boolean;
1631
- get inputClasses(): string;
1632
3558
  get fieldGroupClasses(): string;
1633
3559
  isValidHexColor(color: string): boolean;
1634
3560
  static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerComponent, [{ optional: true; self: true; }, null]>;
@@ -1665,7 +3591,6 @@ declare class DateInputComponent implements ControlValueAccessor {
1665
3591
  get inputId(): string;
1666
3592
  get showError(): boolean;
1667
3593
  get errorMessage(): string;
1668
- get inputClasses(): string;
1669
3594
  get fieldGroupClasses(): string;
1670
3595
  static ɵfac: i0.ɵɵFactoryDeclaration<DateInputComponent, [{ optional: true; self: true; }, null]>;
1671
3596
  static ɵcmp: i0.ɵɵComponentDeclaration<DateInputComponent, "date-input", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "includeTime": { "alias": "includeTime"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; }, {}, never, never, true, never>;
@@ -1692,9 +3617,6 @@ declare class ToggleSwitchComponent implements ControlValueAccessor {
1692
3617
  setDisabledState(isDisabled: boolean): void;
1693
3618
  onToggle(): void;
1694
3619
  get inputId(): string;
1695
- get toggleSizeClasses(): string;
1696
- get toggleThumbSizeClasses(): string;
1697
- get toggleThumbTranslateClasses(): string;
1698
3620
  get fieldGroupClasses(): string;
1699
3621
  static ɵfac: i0.ɵɵFactoryDeclaration<ToggleSwitchComponent, [{ optional: true; self: true; }]>;
1700
3622
  static ɵcmp: i0.ɵɵComponentDeclaration<ToggleSwitchComponent, "toggle-switch", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "description": { "alias": "description"; "required": false; }; }, { "toggleClick": "toggleClick"; }, never, never, true, never>;
@@ -1763,14 +3685,14 @@ declare class FileUploadPreviewComponent {
1763
3685
  interface AsyncSelectConfig<T = any> {
1764
3686
  load: (params?: {
1765
3687
  search?: string;
1766
- parentId?: number;
3688
+ parentId?: number | number[];
1767
3689
  }) => Observable<T>;
1768
3690
  map: (response: T) => SelectOption[];
1769
3691
  }
1770
3692
  declare class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {
1771
3693
  config?: AsyncSelectConfig<any>;
1772
3694
  items: SelectOption[];
1773
- parentId?: number | null;
3695
+ parentId?: number | number[] | null;
1774
3696
  label: string;
1775
3697
  placeholder: string;
1776
3698
  name: string;
@@ -1783,6 +3705,7 @@ declare class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, Cont
1783
3705
  notFoundText: string;
1784
3706
  bindLabel: string;
1785
3707
  bindValue: string;
3708
+ disabled: boolean;
1786
3709
  value: any;
1787
3710
  onChange: any;
1788
3711
  onTouched: any;
@@ -1801,6 +3724,7 @@ declare class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, Cont
1801
3724
  private searchMode;
1802
3725
  private loadAndMap;
1803
3726
  private fetchData;
3727
+ private hasParentId;
1804
3728
  private handleParentIdChange;
1805
3729
  onSearch(event: any): void;
1806
3730
  onSelectChange(value: any): void;
@@ -1812,7 +3736,7 @@ declare class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, Cont
1812
3736
  registerOnTouched(fn: any): void;
1813
3737
  setDisabledState(isDisabled: boolean): void;
1814
3738
  static ɵfac: i0.ɵɵFactoryDeclaration<AsyncSelectComponent, never>;
1815
- static ɵcmp: i0.ɵɵComponentDeclaration<AsyncSelectComponent, "async-select", never, { "config": { "alias": "config"; "required": false; }; "items": { "alias": "items"; "required": false; }; "parentId": { "alias": "parentId"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "notFoundText": { "alias": "notFoundText"; "required": false; }; "bindLabel": { "alias": "bindLabel"; "required": false; }; "bindValue": { "alias": "bindValue"; "required": false; }; }, {}, never, never, true, never>;
3739
+ static ɵcmp: i0.ɵɵComponentDeclaration<AsyncSelectComponent, "async-select", never, { "config": { "alias": "config"; "required": false; }; "items": { "alias": "items"; "required": false; }; "parentId": { "alias": "parentId"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "notFoundText": { "alias": "notFoundText"; "required": false; }; "bindLabel": { "alias": "bindLabel"; "required": false; }; "bindValue": { "alias": "bindValue"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
1816
3740
  }
1817
3741
 
1818
3742
  declare class ChangePasswordFormComponent {
@@ -2212,7 +4136,7 @@ declare class ShowMultiSelectComponent implements OnInit, OnDestroy, ControlValu
2212
4136
  static ɵcmp: i0.ɵɵComponentDeclaration<ShowMultiSelectComponent, "show-multi-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, true, never>;
2213
4137
  }
2214
4138
 
2215
- declare class PriceZoneSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {
4139
+ declare class PriceZoneSelectComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor, Validator {
2216
4140
  private platformId;
2217
4141
  private priceZoneService;
2218
4142
  label: string;
@@ -2223,6 +4147,7 @@ declare class PriceZoneSelectComponent implements OnInit, OnDestroy, ControlValu
2223
4147
  showError: boolean;
2224
4148
  customClass: string;
2225
4149
  control?: AbstractControl | null;
4150
+ showIds: number[];
2226
4151
  priceZoneChange: EventEmitter<number | null>;
2227
4152
  priceZones: WritableSignal<SelectOption[]>;
2228
4153
  loading: WritableSignal<boolean>;
@@ -2234,6 +4159,7 @@ declare class PriceZoneSelectComponent implements OnInit, OnDestroy, ControlValu
2234
4159
  onTouched: any;
2235
4160
  constructor(platformId: string, priceZoneService: PriceZoneService);
2236
4161
  ngOnInit(): void;
4162
+ ngOnChanges(changes: SimpleChanges): void;
2237
4163
  get formControl(): FormControl;
2238
4164
  ngOnDestroy(): void;
2239
4165
  onSearchChange(search: string): void;
@@ -2246,7 +4172,29 @@ declare class PriceZoneSelectComponent implements OnInit, OnDestroy, ControlValu
2246
4172
  } | null;
2247
4173
  get isInvalid(): boolean;
2248
4174
  static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneSelectComponent, never>;
2249
- static ɵcmp: i0.ɵɵComponentDeclaration<PriceZoneSelectComponent, "price-zone-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "showError": { "alias": "showError"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, { "priceZoneChange": "priceZoneChange"; }, never, never, true, never>;
4175
+ static ɵcmp: i0.ɵɵComponentDeclaration<PriceZoneSelectComponent, "price-zone-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "showError": { "alias": "showError"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "control": { "alias": "control"; "required": false; }; "showIds": { "alias": "showIds"; "required": false; }; }, { "priceZoneChange": "priceZoneChange"; }, never, never, true, never>;
4176
+ }
4177
+
4178
+ declare class PerformanceTicketStatusBadgeComponent {
4179
+ ticket: PerformanceTicket;
4180
+ size: BadgeSize;
4181
+ protected get statusColors(): {
4182
+ text: string;
4183
+ bg: string;
4184
+ };
4185
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceTicketStatusBadgeComponent, never>;
4186
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceTicketStatusBadgeComponent, "performance-ticket-status-badge", never, { "ticket": { "alias": "ticket"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4187
+ }
4188
+
4189
+ declare class PerformanceStatusBadgeComponent {
4190
+ performance: Performance;
4191
+ size: BadgeSize;
4192
+ protected get statusColors(): {
4193
+ text: string;
4194
+ bg: string;
4195
+ };
4196
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceStatusBadgeComponent, never>;
4197
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceStatusBadgeComponent, "performance-status-badge", never, { "performance": { "alias": "performance"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
2250
4198
  }
2251
4199
 
2252
4200
  declare class DaySelectorGridComponent {
@@ -2270,11 +4218,15 @@ declare class DaySelectorGridComponent {
2270
4218
  declare class PerformanceCardComponent {
2271
4219
  protected listEventService: PerformancesListEventsService;
2272
4220
  card: DailyPerformanceItem;
4221
+ linkText: string;
4222
+ linkUrlFn?: (card: DailyPerformanceItem) => string;
4223
+ linkQueryParams?: Record<string, any>;
2273
4224
  constructor(listEventService: PerformancesListEventsService);
4225
+ get badgeColor(): 'success' | 'error';
2274
4226
  onSelect(): void;
2275
4227
  isSelected(): boolean;
2276
4228
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceCardComponent, never>;
2277
- static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardComponent, "performance-card", never, { "card": { "alias": "card"; "required": true; }; }, {}, never, never, true, never>;
4229
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardComponent, "performance-card", never, { "card": { "alias": "card"; "required": true; }; "linkText": { "alias": "linkText"; "required": false; }; "linkUrlFn": { "alias": "linkUrlFn"; "required": false; }; "linkQueryParams": { "alias": "linkQueryParams"; "required": false; }; }, {}, never, never, true, never>;
2278
4230
  }
2279
4231
 
2280
4232
  declare class PerformanceCardListComponent {
@@ -2282,6 +4234,9 @@ declare class PerformanceCardListComponent {
2282
4234
  protected performanceService: PerformanceService;
2283
4235
  protected listEventService: PerformancesListEventsService;
2284
4236
  protected toastService: ToastService;
4237
+ linkText: string;
4238
+ linkUrlFn?: (card: DailyPerformanceItem) => string;
4239
+ linkQueryParams?: Record<string, any>;
2285
4240
  loadingData: WritableSignal<boolean>;
2286
4241
  performances: WritableSignal<DailyPerformanceItem[]>;
2287
4242
  constructor(platformId: object, performanceService: PerformanceService, listEventService: PerformancesListEventsService, toastService: ToastService);
@@ -2289,7 +4244,7 @@ declare class PerformanceCardListComponent {
2289
4244
  private loadData;
2290
4245
  get selectedDayDate(): string | null;
2291
4246
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceCardListComponent, never>;
2292
- static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardListComponent, "performance-card-list", never, {}, {}, never, never, true, never>;
4247
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardListComponent, "performance-card-list", never, { "linkText": { "alias": "linkText"; "required": false; }; "linkUrlFn": { "alias": "linkUrlFn"; "required": false; }; "linkQueryParams": { "alias": "linkQueryParams"; "required": false; }; }, {}, never, never, true, never>;
2293
4248
  }
2294
4249
 
2295
4250
  declare class PerformanceStepperComponent {
@@ -2318,9 +4273,9 @@ declare class ShowsFilterComponent {
2318
4273
  }
2319
4274
 
2320
4275
  interface PriceZoneItem {
2321
- colorClass: string;
4276
+ color: string;
2322
4277
  name: string;
2323
- seatsAvailable: number;
4278
+ available_seats: number;
2324
4279
  price: string;
2325
4280
  }
2326
4281
 
@@ -2336,5 +4291,454 @@ declare class ZonePriceListComponent {
2336
4291
  static ɵcmp: i0.ɵɵComponentDeclaration<ZonePriceListComponent, "zone-price-list", never, { "zones": { "alias": "zones"; "required": true; }; }, {}, never, never, true, never>;
2337
4292
  }
2338
4293
 
2339
- export { ADMIN_API_ROUTES, ALERT_BASE_CLASSES, ALERT_COLOR_CLASSES, ALERT_ICONS, ALERT_SIZE_CLASSES, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CustomerSelectComponent, CustomerService, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, LanguageSwitcherComponent, LoadingModalService, LoadingmModalComponent, MinTodayValidator, MustMatchValidator, OrderItemType, OrderStatus, PERFORMANCES_API_ROUTES, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStepperComponent, PerformanceTicketStatus, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, STATE_API_ENDPOINTS, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, ToastService, ToggleSwitchComponent, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, formatCitiesResponseToSelect, getCustomerFullname, parseJsonToFormDataAdvanced, provideTickeraComponents, transformImageToFile };
2340
- export type { Admin, AdminsResponse, AsyncSelectConfig, Auditable, CitiesResponse, City, CityResponse, CorporateBond, CorporateBondCode, CorporateBondResponse, CountriesResponse, Country, CountryResponse, Coupon, CouponResponse, Customer, CustomerResponse, CustomersResponse, DailyPerformanceHall, DailyPerformanceItem, DailyPerformancePriceZone, DailyPerformanceShow, DailyPerformanceVenue, DailyPerformancesResponse, DeleteConfirmationOpen, DragDropEvent, DynamicTableHeader, ElementPropertiesTab, FetchCitiesParams, FetchDailyPerformancesParams, FetchShowsParams, FileUploadConfig, FindAllPriceZoneParams, Hall, HallFloor, NumerationConfig, Order, OrderItem, OrderResponse, OrdersResponse, Performance, PerformanceAvailableDay, PerformanceBookingDataResponse, PerformanceResponse, PerformanceTicket, PerformancesAvailableDaysResponse, PerformancesResponseInterface, PriceZone, PriceZoneResponse, PriceZoneUpdateResponse, PriceZonesResponseInterface, Product, ProductResponse, ProductsResponseInterface, RoomMap, RoomMapBaseElement, RoomMapCanvasConfiguration, RoomMapCanvasElement, RoomMapChairPosition, RoomMapElementTemplate, RoomMapExitElement, RoomMapGridPosition, RoomMapPosition, RoomMapProductionAreaElement, RoomMapSeatDisplayState, RoomMapSeatElement, RoomMapSeatState, RoomMapSize, RoomMapStageElement, RoomMapTableElement, RoomMapUnavailableElement, RoomMapZoneElement, SelectOption, Show, ShowImage, ShowResponse, ShowType, ShowsResponseInterface, State, StateResponse, StatesResponse, TickeraComponentsConfig, UploadedFile, ValidateCorporateBondResponse, ValidateCouponResponse, Venue, VenueImage };
4294
+ declare class TicketMapWidgetComponent {
4295
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWidgetComponent, never>;
4296
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWidgetComponent, "ticket-map-widget", never, {}, {}, never, ["*"], true, never>;
4297
+ }
4298
+
4299
+ declare class TicketMapWidgetHeaderComponent {
4300
+ title: string;
4301
+ subtitle: string;
4302
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWidgetHeaderComponent, never>;
4303
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWidgetHeaderComponent, "ticket-map-widget-header", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; }, {}, never, ["*"], true, never>;
4304
+ }
4305
+
4306
+ declare class TicketMapZoomControlsComponent {
4307
+ private zoomService;
4308
+ readonly currentZoom: i0.Signal<number>;
4309
+ readonly zoomPercentage: i0.Signal<string>;
4310
+ constructor(zoomService: TicketMapZoomService);
4311
+ zoomIn(): void;
4312
+ zoomOut(): void;
4313
+ resetZoom(): void;
4314
+ fitToContainer(): void;
4315
+ handleZoomAction(action: string): void;
4316
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapZoomControlsComponent, never>;
4317
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapZoomControlsComponent, "ticket-map-zoom-controls", never, {}, {}, never, never, true, never>;
4318
+ }
4319
+
4320
+ declare class TicketMapFloorSelectorComponent {
4321
+ private bookingDataService;
4322
+ readonly availableFloors: i0.Signal<tickera_angular_components.HallFloor[]>;
4323
+ readonly visibleFloorIds: i0.Signal<Set<number>>;
4324
+ readonly hasMultipleVisible: i0.Signal<boolean>;
4325
+ constructor(bookingDataService: PerformanceBookingDataService);
4326
+ isFloorVisible(floorId: number): boolean;
4327
+ canToggleOff(floorId: number): boolean;
4328
+ toggleFloor(floorId: number): void;
4329
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapFloorSelectorComponent, never>;
4330
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapFloorSelectorComponent, "ticket-map-floor-selector", never, {}, {}, never, never, true, never>;
4331
+ }
4332
+
4333
+ declare class PerformanceTicketMapComponent implements OnDestroy, AfterViewInit {
4334
+ private platformId;
4335
+ protected bookingDataService: PerformanceBookingDataService;
4336
+ protected feedbackModalService: FeedbackModalService;
4337
+ protected selectionService: TicketSelectionService;
4338
+ protected zoomService: TicketMapZoomService;
4339
+ selectionChange: EventEmitter<PerformanceTicket[]>;
4340
+ needsLoginError: EventEmitter<any>;
4341
+ readOnly: boolean;
4342
+ needsLogin: boolean;
4343
+ isLoggedIn: boolean;
4344
+ stageComponent?: StageComponent;
4345
+ protected tooltipData: i0.WritableSignal<TicketMapTooltipData | null>;
4346
+ protected renderData: i0.Signal<ElementRenderData[]>;
4347
+ private stageReady;
4348
+ private autoFitDone;
4349
+ private resizeObserver?;
4350
+ protected floorLayerRefs: i0.Signal<readonly CoreShapeComponent[]>;
4351
+ protected floorLayerName(floorId: number): string;
4352
+ protected floorGroups: i0.Signal<{
4353
+ floorId: number;
4354
+ elements: ElementRenderData[];
4355
+ }[]>;
4356
+ constructor(platformId: object, bookingDataService: PerformanceBookingDataService, feedbackModalService: FeedbackModalService, selectionService: TicketSelectionService, zoomService: TicketMapZoomService);
4357
+ protected get isBrowser(): boolean;
4358
+ ngAfterViewInit(): void;
4359
+ private setupResizeObserver;
4360
+ private syncStageToContainer;
4361
+ ngOnDestroy(): void;
4362
+ private getInternalPointer;
4363
+ protected selectHallFloor(floorId: number): void;
4364
+ protected handleStageClick(konvaEvent: any): void;
4365
+ protected handleStageMouseMove(konvaEvent: any): void;
4366
+ protected handleStageMouseLeave(): void;
4367
+ protected handleWheel(konvaEvent: any): void;
4368
+ protected trackByElementId(_index: number, item: ElementRenderData): number;
4369
+ protected trackByFloorId(_index: number, floor: HallFloorOption): HallFloorOption;
4370
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceTicketMapComponent, never>;
4371
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceTicketMapComponent, "performance-ticket-map", never, { "readOnly": { "alias": "readOnly"; "required": false; }; "needsLogin": { "alias": "needsLogin"; "required": false; }; "isLoggedIn": { "alias": "isLoggedIn"; "required": false; }; }, { "selectionChange": "selectionChange"; "needsLoginError": "needsLoginError"; }, never, never, true, never>;
4372
+ }
4373
+
4374
+ declare class TicketMapPriceZonesComponent {
4375
+ title: string;
4376
+ protected bookingDataService: PerformanceBookingDataService;
4377
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapPriceZonesComponent, never>;
4378
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapPriceZonesComponent, "ticket-map-price-zones", never, { "title": { "alias": "title"; "required": false; }; }, {}, never, never, true, never>;
4379
+ }
4380
+
4381
+ declare class TicketMapProductSelectionItemComponent {
4382
+ protected selectionService: TicketSelectionService;
4383
+ product: Product;
4384
+ constructor(selectionService: TicketSelectionService);
4385
+ get quantity(): number;
4386
+ get firstImage(): string | undefined;
4387
+ increment(): void;
4388
+ decrement(): void;
4389
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapProductSelectionItemComponent, never>;
4390
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapProductSelectionItemComponent, "ticket-map-product-selection-item", never, { "product": { "alias": "product"; "required": true; }; }, {}, never, never, true, never>;
4391
+ }
4392
+
4393
+ declare class TIcketMapProductSelectionComponent {
4394
+ title: string;
4395
+ subtitle: string;
4396
+ private bookingDataService;
4397
+ readonly products: i0.Signal<tickera_angular_components.Product[]>;
4398
+ static ɵfac: i0.ɵɵFactoryDeclaration<TIcketMapProductSelectionComponent, never>;
4399
+ static ɵcmp: i0.ɵɵComponentDeclaration<TIcketMapProductSelectionComponent, "ticket-map-product-selection", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; }, {}, never, never, true, never>;
4400
+ }
4401
+
4402
+ declare class TicketMapTotalsComponent {
4403
+ protected bookingDataService: PerformanceBookingDataService;
4404
+ protected selectionDetailsService: TicketSelectionDetailsService;
4405
+ protected selectionDiscountService: TicketSelectionDiscountService;
4406
+ protected selectionTotalsService: TicketSelectionTotalsService;
4407
+ protected selectionService: TicketSelectionService;
4408
+ private activatedRoute;
4409
+ title: string;
4410
+ buttonText: string;
4411
+ loadingButtonText: string;
4412
+ isLoading: boolean;
4413
+ onPurchaseClick: EventEmitter<void>;
4414
+ constructor(bookingDataService: PerformanceBookingDataService, selectionDetailsService: TicketSelectionDetailsService, selectionDiscountService: TicketSelectionDiscountService, selectionTotalsService: TicketSelectionTotalsService, selectionService: TicketSelectionService, activatedRoute: ActivatedRoute);
4415
+ get serviceFee(): number;
4416
+ get performanceId(): number;
4417
+ get selectedTicketIds(): number[];
4418
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapTotalsComponent, never>;
4419
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapTotalsComponent, "ticket-map-totals", never, { "title": { "alias": "title"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "loadingButtonText": { "alias": "loadingButtonText"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; }, { "onPurchaseClick": "onPurchaseClick"; }, never, never, true, never>;
4420
+ }
4421
+
4422
+ declare class TicketMapWrapperComponent {
4423
+ selectionChange: EventEmitter<PerformanceTicket[]>;
4424
+ needsLoginError: EventEmitter<any>;
4425
+ readOnly: boolean;
4426
+ needsLogin: boolean;
4427
+ isLoggedIn: boolean;
4428
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWrapperComponent, never>;
4429
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWrapperComponent, "ticket-map-wrapper", never, { "readOnly": { "alias": "readOnly"; "required": false; }; "needsLogin": { "alias": "needsLogin"; "required": false; }; "isLoggedIn": { "alias": "isLoggedIn"; "required": false; }; }, { "selectionChange": "selectionChange"; "needsLoginError": "needsLoginError"; }, never, never, true, never>;
4430
+ }
4431
+
4432
+ declare class SeatSelectionEmptySummaryComponent {
4433
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionEmptySummaryComponent, never>;
4434
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionEmptySummaryComponent, "seat-selection-empty-summary", never, {}, {}, never, never, true, never>;
4435
+ }
4436
+
4437
+ declare class SeatSelectionSummaryComponent {
4438
+ protected selectionService: TicketSelectionService;
4439
+ title: string;
4440
+ clearButtonText: string;
4441
+ constructor(selectionService: TicketSelectionService);
4442
+ trackByItem(item: PerformanceTicket): string | number;
4443
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionSummaryComponent, never>;
4444
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionSummaryComponent, "seat-selection-summary", never, { "title": { "alias": "title"; "required": false; }; "clearButtonText": { "alias": "clearButtonText"; "required": false; }; }, {}, never, never, true, never>;
4445
+ }
4446
+
4447
+ declare class SeatSelectionSummaryItemComponent {
4448
+ protected selectionService: TicketSelectionService;
4449
+ item: PerformanceTicket;
4450
+ constructor(selectionService: TicketSelectionService);
4451
+ getItemTypeIcon: (ticket: PerformanceTicket) => string;
4452
+ get isZone(): boolean;
4453
+ get zoneMax(): number;
4454
+ onZoneQuantityChange(value: number | null): void;
4455
+ removeItem(ticket: PerformanceTicket): void;
4456
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionSummaryItemComponent, never>;
4457
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionSummaryItemComponent, "seat-selection-summary-item", never, { "item": { "alias": "item"; "required": true; }; }, {}, never, never, true, never>;
4458
+ }
4459
+
4460
+ declare class ConfirmationOrderModalComponent {
4461
+ private confirmationOrderModalService;
4462
+ private selectionDiscountService;
4463
+ private selectionTotalsService;
4464
+ private selectionService;
4465
+ private bookingDataService;
4466
+ modalTitle: string;
4467
+ confirmButtonText: string;
4468
+ confirmButtonTextLoading: string;
4469
+ loading: boolean;
4470
+ onConfirm: EventEmitter<any>;
4471
+ constructor(confirmationOrderModalService: ConfirmationOrderModalService, selectionDiscountService: TicketSelectionDiscountService, selectionTotalsService: TicketSelectionTotalsService, selectionService: TicketSelectionService, bookingDataService: PerformanceBookingDataService);
4472
+ get isOpen(): i0.WritableSignal<boolean>;
4473
+ get showTitle(): string | null;
4474
+ get performanceStartTime(): Date | string | null;
4475
+ get hallName(): string | null;
4476
+ get venueName(): string | null;
4477
+ get ticketItems(): PerformanceTicket[];
4478
+ get selectedProducts(): {
4479
+ product: Product;
4480
+ quantity: number;
4481
+ }[];
4482
+ ticketItemLabel(ticket: PerformanceTicket): string;
4483
+ ticketItemPrice(ticket: PerformanceTicket): number;
4484
+ private elementTypeLabel;
4485
+ get selectedCount(): number;
4486
+ get serviceFee(): number;
4487
+ get subtotalValue(): number;
4488
+ get ticketSubtotal(): number;
4489
+ get productSubtotal(): number;
4490
+ get productCount(): number;
4491
+ get totalValue(): number;
4492
+ get totalDiscounted(): number | null;
4493
+ get coupon(): tickera_angular_components.Coupon | null;
4494
+ get corporateBond(): tickera_angular_components.CorporateBond | null;
4495
+ get giftBond(): tickera_angular_components.GiftBondPurchase | null;
4496
+ get vipCard(): tickera_angular_components.VipCard | null;
4497
+ get subscription(): {
4498
+ service_fee_exempt: boolean;
4499
+ } | null;
4500
+ /**
4501
+ * A diferencia de coupon/corporateBond/giftBond (que aquí muestran su
4502
+ * valor crudo sin pasar por `discountAmount()`), para VIP y Abono sí se
4503
+ * calcula el monto real en pesos, ya que el descuento es un porcentaje.
4504
+ */
4505
+ get vipDiscountAmount(): number;
4506
+ get rawServiceFee(): number;
4507
+ get isServiceFeeExempt(): boolean;
4508
+ onClose(): void;
4509
+ confirmOrder(): void;
4510
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationOrderModalComponent, never>;
4511
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationOrderModalComponent, "confirmation-order-modal", never, { "modalTitle": { "alias": "modalTitle"; "required": false; }; "confirmButtonText": { "alias": "confirmButtonText"; "required": false; }; "confirmButtonTextLoading": { "alias": "confirmButtonTextLoading"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "onConfirm": "onConfirm"; }, never, never, true, never>;
4512
+ }
4513
+
4514
+ declare class OrderInformationComponent {
4515
+ readonly transloco: TranslocoService;
4516
+ private readonly toastService;
4517
+ order: Order;
4518
+ showPayButton: boolean;
4519
+ createMpPreference?: (order: Order) => Observable<MercadoPagoPreference>;
4520
+ paymentLinkCreated: EventEmitter<MercadoPagoPreference>;
4521
+ isLoading: boolean;
4522
+ constructor(transloco: TranslocoService, toastService: ToastService);
4523
+ get hasServiceFeeExemption(): boolean;
4524
+ get showMpButton(): boolean;
4525
+ payWithMercadoPago(): void;
4526
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderInformationComponent, never>;
4527
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderInformationComponent, "order-information", never, { "order": { "alias": "order"; "required": true; }; "showPayButton": { "alias": "showPayButton"; "required": false; }; "createMpPreference": { "alias": "createMpPreference"; "required": false; }; }, { "paymentLinkCreated": "paymentLinkCreated"; }, never, never, true, never>;
4528
+ }
4529
+
4530
+ declare class OrderStatusBadgeComponent {
4531
+ protected transloco: TranslocoService;
4532
+ order: Order | RecentOrder;
4533
+ size: BadgeSize;
4534
+ constructor(transloco: TranslocoService);
4535
+ protected get statusColors(): {
4536
+ text: string;
4537
+ bg: string;
4538
+ };
4539
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderStatusBadgeComponent, never>;
4540
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderStatusBadgeComponent, "order-status-badge", never, { "order": { "alias": "order"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4541
+ }
4542
+
4543
+ declare class OrderItemTypeBadgeComponent {
4544
+ protected transloco: TranslocoService;
4545
+ item: OrderItem;
4546
+ size: BadgeSize;
4547
+ constructor(transloco: TranslocoService);
4548
+ protected get statusColors(): {
4549
+ text: string;
4550
+ bg: string;
4551
+ };
4552
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderItemTypeBadgeComponent, never>;
4553
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderItemTypeBadgeComponent, "order-item-type-badge", never, { "item": { "alias": "item"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4554
+ }
4555
+
4556
+ declare class OrderItemsComponent {
4557
+ private ticketQrModalService;
4558
+ order: Order;
4559
+ isCustomer: boolean;
4560
+ ticketCanOpenQr: (order: Order, ticket: tickera_angular_components.PerformanceTicket) => boolean;
4561
+ constructor(ticketQrModalService: TicketQrModalService);
4562
+ protected get orderItems(): Order['order_items'];
4563
+ protected get products(): Order['order_items'];
4564
+ protected get tickets(): Order['order_items'];
4565
+ protected get giftBonds(): Order['order_items'];
4566
+ protected get corporateBonds(): Order['order_items'];
4567
+ protected get vipRecharges(): Order['order_items'];
4568
+ protected get showActionColumn(): boolean;
4569
+ protected itemTotal(quantity: number, price: number | null): number;
4570
+ protected hasDiscount(): boolean;
4571
+ protected hasServiceFeeExemption(): boolean;
4572
+ protected hasTicketDiscount(item: OrderItem): boolean;
4573
+ protected get totals(): {
4574
+ giftBonds: number;
4575
+ corporateBonds: number;
4576
+ products: number;
4577
+ tickets: number;
4578
+ vipRecharges: number;
4579
+ };
4580
+ openTicketQr(ticketUuid: string, description: string): void;
4581
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderItemsComponent, never>;
4582
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderItemsComponent, "order-items", never, { "order": { "alias": "order"; "required": true; }; "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4583
+ }
4584
+
4585
+ declare class OrderDiscountAppliedComponent {
4586
+ order: Order;
4587
+ protected get discountInfo(): OrderDiscountInfo;
4588
+ protected get hasDiscount(): boolean;
4589
+ protected get discountPercentage(): number | null;
4590
+ protected get serviceFeeExemptValue(): number;
4591
+ protected get badgeColors(): {
4592
+ text: string;
4593
+ bg: string;
4594
+ };
4595
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderDiscountAppliedComponent, never>;
4596
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderDiscountAppliedComponent, "order-discount-applied", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4597
+ }
4598
+
4599
+ interface BillingField {
4600
+ label: string;
4601
+ value: string | number | null;
4602
+ }
4603
+ declare class OrderBillingInfoComponent {
4604
+ order: Order;
4605
+ protected get fields(): BillingField[];
4606
+ protected get hasFields(): boolean;
4607
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderBillingInfoComponent, never>;
4608
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderBillingInfoComponent, "order-billing-info", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4609
+ }
4610
+
4611
+ declare class OrderTransactionsComponent {
4612
+ private transactionDetailsModalService;
4613
+ order: Order;
4614
+ constructor(transactionDetailsModalService: OrderTransactionDetailsModalService);
4615
+ protected get transactions(): Transaction[];
4616
+ protected get hasTransactions(): boolean;
4617
+ protected get txColors(): Record<string, {
4618
+ text: string;
4619
+ bg: string;
4620
+ }>;
4621
+ protected openTransaction(transaction: Transaction): void;
4622
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionsComponent, never>;
4623
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderTransactionsComponent, "order-transactions", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4624
+ }
4625
+
4626
+ declare class OrderTransactionDetailsModalComponent {
4627
+ private modalService;
4628
+ isOpen: WritableSignal<boolean> | null;
4629
+ transaction: Transaction | null;
4630
+ get modalIsOpen(): WritableSignal<boolean>;
4631
+ get selectedTransaction(): WritableSignal<Transaction | null>;
4632
+ protected get txColors(): Record<TransactionStatus, {
4633
+ text: string;
4634
+ bg: string;
4635
+ }>;
4636
+ protected get gatewayResponse(): string;
4637
+ onClose(): void;
4638
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionDetailsModalComponent, never>;
4639
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderTransactionDetailsModalComponent, "order-transaction-details-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "transaction": { "alias": "transaction"; "required": false; }; }, {}, never, never, true, never>;
4640
+ }
4641
+
4642
+ declare class TicketQrComponent implements OnInit, OnDestroy {
4643
+ private ticketQrService;
4644
+ private platformId;
4645
+ ticketUuid: string;
4646
+ isCustomer: boolean;
4647
+ qrCanvas: ElementRef<HTMLCanvasElement>;
4648
+ loading: i0.WritableSignal<boolean>;
4649
+ error: i0.WritableSignal<boolean>;
4650
+ refreshing: i0.WritableSignal<boolean>;
4651
+ countdown: i0.WritableSignal<number>;
4652
+ downloading: i0.WritableSignal<boolean>;
4653
+ private destroy$;
4654
+ private refreshTimeout;
4655
+ private countdownInterval;
4656
+ private isFetching;
4657
+ constructor(ticketQrService: TicketQrService, platformId: Object);
4658
+ ngOnInit(): void;
4659
+ ngOnDestroy(): void;
4660
+ private onVisibilityChange;
4661
+ private onFocus;
4662
+ private refreshFromReenter;
4663
+ retry(): void;
4664
+ downloadPdf(): void;
4665
+ private clearTimers;
4666
+ private fetchAndRender;
4667
+ private scheduleRefresh;
4668
+ private startCountdown;
4669
+ private renderQr;
4670
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrComponent, never>;
4671
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketQrComponent, "performance-ticket-qr", never, { "ticketUuid": { "alias": "ticketUuid"; "required": true; }; "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4672
+ }
4673
+
4674
+ declare class TicketQrModalComponent {
4675
+ private ticketQrModalService;
4676
+ isCustomer: boolean;
4677
+ constructor(ticketQrModalService: TicketQrModalService);
4678
+ get isOpen(): i0.WritableSignal<boolean>;
4679
+ get ticketUuid(): i0.WritableSignal<string | null>;
4680
+ get ticketDescription(): i0.WritableSignal<string | null>;
4681
+ onClose(): void;
4682
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrModalComponent, never>;
4683
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketQrModalComponent, "ticket-qr-modal", never, { "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4684
+ }
4685
+
4686
+ declare class VipBalanceCardComponent {
4687
+ card: VipCard | null;
4688
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipBalanceCardComponent, never>;
4689
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipBalanceCardComponent, "vip-balance-card", never, { "card": { "alias": "card"; "required": false; }; }, {}, never, never, true, never>;
4690
+ }
4691
+
4692
+ declare class VipCardStatusBadgeComponent {
4693
+ protected readonly tranloco: TranslocoService;
4694
+ card: VipCard;
4695
+ get statusColor(): BadgeColor;
4696
+ get statusTranslationKey(): string;
4697
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipCardStatusBadgeComponent, never>;
4698
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipCardStatusBadgeComponent, "vip-card-status-badge", never, { "card": { "alias": "card"; "required": true; }; }, {}, never, never, true, never>;
4699
+ }
4700
+
4701
+ declare class VipRechargeModalComponent implements OnChanges {
4702
+ private fb;
4703
+ protected transloco: TranslocoService;
4704
+ title: string;
4705
+ submitLabel: string;
4706
+ loading: boolean;
4707
+ amountStep: number;
4708
+ minAmount: number;
4709
+ maxAmount: number;
4710
+ isOpen: WritableSignal<boolean>;
4711
+ /**
4712
+ * Cuando es true (uso desde el ecommerce/cliente), el método de pago queda
4713
+ * fijo en Mercado Pago y no se muestra el selector: desde el lado del
4714
+ * cliente no se pueden elegir métodos de pago administrativos (efectivo,
4715
+ * datáfono, nómina, cambios internos, etc.), esos son exclusivos del
4716
+ * backoffice.
4717
+ */
4718
+ restrictToMercadoPago: boolean;
4719
+ closeModal: EventEmitter<void>;
4720
+ confirm: EventEmitter<VipRechargeConfirmPayload>;
4721
+ rechargeForm: FormGroup;
4722
+ paymentMethodOptions: {
4723
+ label: string;
4724
+ value: string;
4725
+ }[];
4726
+ constructor(fb: FormBuilder, transloco: TranslocoService);
4727
+ ngOnChanges(changes: SimpleChanges): void;
4728
+ private applyPaymentMethodRestriction;
4729
+ onClose(): void;
4730
+ onSubmit(): void;
4731
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipRechargeModalComponent, never>;
4732
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipRechargeModalComponent, "vip-recharge-modal", never, { "title": { "alias": "title"; "required": false; }; "submitLabel": { "alias": "submitLabel"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "amountStep": { "alias": "amountStep"; "required": false; }; "minAmount": { "alias": "minAmount"; "required": false; }; "maxAmount": { "alias": "maxAmount"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "restrictToMercadoPago": { "alias": "restrictToMercadoPago"; "required": false; }; }, { "closeModal": "closeModal"; "confirm": "confirm"; }, never, never, true, never>;
4733
+ }
4734
+
4735
+ declare class VipTransactionsTableComponent {
4736
+ transactions: VipTransaction[];
4737
+ loading: boolean;
4738
+ typeLabel(type: VipTransactionType): string;
4739
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipTransactionsTableComponent, never>;
4740
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipTransactionsTableComponent, "vip-transactions-table", never, { "transactions": { "alias": "transactions"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, {}, never, never, true, never>;
4741
+ }
4742
+
4743
+ export { ADMIN_API_ROUTES, ADMISSION_API_ROUTES, ALERT_ICONS, AdminLayoutComponent, AdminNavbarComponent, AdminSelectComponent, AdminService, AdmissionQueueService, ApiService, AppAlertComponent, AppBadgeComponent, AppBreadcumbComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, BrowserZoomLockService, BulkSaveBarComponent, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, ConfirmationOrderModalComponent, ConfirmationOrderModalService, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CouponStatus, CreatorType, CustomerSelectComponent, CustomerService, DEFAULT_STAGE_CONFIG, DOCUMENT_TYPES_OPTIONS, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FeedbackModalComponent, FeedbackModalService, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, GiftBondPurchaseStatus, GiftBondStatus, IdentityDocumentInputComponent, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MembershipStatus, MinTodayValidator, MustMatchValidator, NumberInputComponent, ORDER_DISCOUNT_COLORS, ORDER_ITEM_TYPES_COLORS, ORDER_STATUS_COLORS, OrderBillingInfoComponent, OrderDiscountAppliedComponent, OrderInformationComponent, OrderItemType, OrderItemTypeBadgeComponent, OrderItemsComponent, OrderStatus, OrderStatusBadgeComponent, OrderTransactionDetailsModalComponent, OrderTransactionDetailsModalService, OrderTransactionsComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, PERFORMANCE_STATUS_COLORS, PERFORMANCE_TICKET_STATUS_COLORS, PHONE_COUNTRIES, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PRODUCT_CATEGORIES_API_ROUTES, PRODUCT_TAGS_API_ROUTES, PRODUCT_TYPES_API_ROUTES, PaymentMethod, PendingChangesService, PerformanceBookingDataService, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStatusBadgeComponent, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformanceTicketStatusBadgeComponent, PerformancesListEventsService, PhoneInputComponent, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, PublicLayoutComponent, PurchaseLimitService, QuickStatusEditComponent, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, STATE_API_ENDPOINTS, SeatAvailabilitySseService, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowTypeBadgeComponent, ShowsFilterComponent, SidebarMenuComponent, SidebarStateService, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TICKET_ELEMENT_TYPES, TICKET_MAP_FLOOR_HOVER_FADE_MS, TICKET_MAP_FLOOR_HOVER_OPACITY, TICKET_MAP_GRID_SIZE, TICKET_MAP_LAST_TICKETS_LIMIT, TICKET_MAP_TITLE_HEIGHT, TICKET_STATUS_COLORS, TICKET_STATUS_FILLS, TICKET_STATUS_LABELS, TIcketMapProductSelectionComponent, TRANSACTION_STATUS_COLORS, TextExpandableComponent, TickeraTranslocoLoader, TicketMapFloorSelectorComponent, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, VIP_CARDS_API_ROUTES, VipBalanceCardComponent, VipCardService, VipCardStatus, VipCardStatusBadgeComponent, VipRechargeModalComponent, VipTransactionType, VipTransactionsTableComponent, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, emailValidator, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getAdminFullname, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter, parseJsonToFormDataAdvanced, phoneCountryFlag, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, ticketCanOpenQr, tintColor, transformImageToFile, transformUrlParams };
4744
+ export type { ActivateVipCardParams, Admin, AdminsResponse, AdmissionEventMessage, AdmissionJoinResponse, AdmissionStatus, AsyncSelectConfig, Auditable, BadgeColor, BadgeSize, BreadcrumbStep, BreadcrumbTheme, CitiesResponse, City, CityResponse, CommonFetchAllParams, CorporateBond, CorporateBondCode, CorporateBondResponse, CountriesResponse, Country, CountryResponse, Coupon, CouponResponse, Customer, CustomerResponse, CustomersResponse, DailyPerformanceHall, DailyPerformanceItem, DailyPerformancePriceZone, DailyPerformanceShow, DailyPerformanceVenue, DailyPerformancesResponse, DeleteConfirmationOpen, DragDropEvent, DynamicTableHeader, ElementPropertiesTab, ElementRenderData, FeedbackModalElement, FeedbackModalType, FetchAdminsParams, FetchCitiesParams, FetchCountriesParams, FetchCustomersParams, FetchDailyPerformancesParams, FetchProductCategoriesParams, FetchProductTagsParams, FetchProductTypesParams, FetchProductsParams, FetchShowCategoriesParams, FetchShowGendersParams, FetchShowTypesParams, FetchShowsParams, FetchStatesParams, FetchVipCardsParams, FileUploadConfig, FindAllPerformancesParams, FindAllPriceZoneParams, GiftBond, GiftBondImage, GiftBondPurchase, GiftBondPurchaseResponse, GiftBondPurchasesResponse, GiftBondResponse, GiftBondsResponse, Hall, HallFloor, HallFloorOption, IdentityDocumentType, KonvaShapeConfig, Membership, MercadoPagoPreference, ModalSize, NumerationConfig, Order, OrderBillingInfo, OrderDiscountInfo, OrderDiscountType, OrderItem, OrderPerformanceSnapshot, OrderResponse, OrderShowSnapshot, OrdersResponse, Performance, PerformanceAvailableDay, PerformanceBookingDataResponse, PerformanceResponse, PerformanceTicket, PerformancesAvailableDaysResponse, PerformancesResponseInterface, PhoneCountry, PriceZone, PriceZoneResponse, PriceZoneUpdateResponse, PriceZonesResponseInterface, Product, ProductCategoriesResponse, ProductCategory, ProductCategoryResponse, ProductImage, ProductResponse, ProductTag, ProductTagResponse, ProductTagsResponse, ProductTaxonomy, ProductType, ProductTypeResponse, ProductTypesResponse, ProductsResponseInterface, QrTokenData, QrTokenResponse, RecentOrder, RecentRoomMap, ReservePerformanceDto, RoomMap, RoomMapBaseElement, RoomMapCanvasConfiguration, RoomMapCanvasElement, RoomMapChairPosition, RoomMapElementTemplate, RoomMapExitElement, RoomMapGridPosition, RoomMapPosition, RoomMapProductionAreaElement, RoomMapSeatDisplayState, RoomMapSeatElement, RoomMapSeatState, RoomMapSize, RoomMapStageElement, RoomMapTableElement, RoomMapUnavailableElement, RoomMapZoneElement, SeatEventMessage, SeatStatusUpdate, SelectOption, SelectedDiscountCard, Show, ShowCategoriesResponse, ShowCategory, ShowCategoryResponse, ShowGender, ShowGenderResponse, ShowGendersResponse, ShowImage, ShowResponse, ShowType, ShowTypeResponse, ShowTypesResponse, ShowsResponseInterface, SidebarMenuItem, State, StateResponse, StatesResponse, TextFontSize, TickeraComponentsConfig, TicketMapSeatPosition, TicketMapTableChairPosition, TicketMapTooltipData, TicketMapZoneQuantityState, TicketMapZoomConfig, Transaction, UploadedFile, ValidateCorporateBondResponse, ValidateCouponResponse, ValidateGiftBondResponse, Venue, VenueImage, VipCard, VipCardResponse, VipCardsResponse, VipCategorySnapshot, VipOrderResponse, VipRechargeConfirmPayload, VipTransaction, VipTransactionsResponse };