tickera-angular-components 0.0.1-dev.19 → 0.0.1-dev.190

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,12 +1,19 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, WritableSignal, EventEmitter, Injector, Type, OnInit, OnDestroy, ElementRef, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, WritableSignal, Signal, EventEmitter, OnChanges, OnDestroy, SimpleChanges, Injector, Type, ElementRef, OnInit, AfterViewInit } from '@angular/core';
3
+ export { TippyDirective } from '@ngneat/helipopper';
4
+ export * from '@ngneat/helipopper/config';
3
5
  import { TranslocoLoader, TranslocoService } from '@jsverse/transloco';
4
6
  import * as rxjs from 'rxjs';
5
7
  import { Observable, Subject } from 'rxjs';
6
- import { ValidatorFn, FormGroup, FormBuilder, ControlValueAccessor, NgControl, Validator, AbstractControl, FormControl } from '@angular/forms';
7
- import { HttpClient, HttpInterceptorFn } from '@angular/common/http';
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 * as tickera_angular_components from 'tickera-angular-components';
8
14
  import { Toolbar, Editor } from 'ngx-editor';
9
- import { Router } from '@angular/router';
15
+ import { Router, ActivatedRoute } from '@angular/router';
16
+ import { StageComponent } from 'ng2-konva';
10
17
 
11
18
  interface TickeraComponentsConfig {
12
19
  apiUrl: string;
@@ -14,6 +21,7 @@ interface TickeraComponentsConfig {
14
21
  defaultLang?: string;
15
22
  availableLangs?: string[];
16
23
  }
24
+
17
25
  declare const TICKERA_COMPONENTS_CONFIG: InjectionToken<TickeraComponentsConfig>;
18
26
  declare function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders;
19
27
 
@@ -33,15 +41,6 @@ declare const ALERT_ICONS: {
33
41
  info: string;
34
42
  };
35
43
 
36
- declare const BUTTON_VARIANT_CLASSES: Record<string, string>;
37
- declare const BASE_BUTTON_CLASSES = "btn";
38
- declare const BUTTON_SIZES_CLASSES: Record<string, string>;
39
-
40
- declare const FORM_ERROR_MESSAGES: Record<string, string>;
41
-
42
- declare const BASE_INPUT_CLASSES: string;
43
- declare const ERROR_INPUT_CLASSES: string;
44
-
45
44
  declare const ADMIN_API_ROUTES: {
46
45
  FIND_ALL: string;
47
46
  CREATE: string;
@@ -49,6 +48,13 @@ declare const ADMIN_API_ROUTES: {
49
48
  deleteOne: (id: number) => string;
50
49
  };
51
50
 
51
+ declare const ADMISSION_API_ROUTES: {
52
+ join: (performanceId: number) => string;
53
+ leave: (performanceId: number) => string;
54
+ status: (performanceId: number) => string;
55
+ events: (performanceId: number) => string;
56
+ };
57
+
52
58
  declare const CITY_API_ENDPOINTS: {
53
59
  findAll: string;
54
60
  create: string;
@@ -65,10 +71,10 @@ declare const COUNTRY_API_ENDPOINTS: {
65
71
  delete: (id: number) => string;
66
72
  };
67
73
 
68
- declare const STATE_API_ENDPOINTS: {
74
+ declare const CUSTOMERS_API_ROUTES: {
69
75
  findAll: string;
70
76
  create: string;
71
- findById: (id: number) => string;
77
+ findOne: (id: number) => string;
72
78
  update: (id: number) => string;
73
79
  delete: (id: number) => string;
74
80
  };
@@ -79,6 +85,7 @@ declare const PERFORMANCES_API_ROUTES: {
79
85
  createBulk: string;
80
86
  findOneById: (id: number) => string;
81
87
  findOneBookingData: (id: number) => string;
88
+ findOneBookingDataAdmin: (id: number) => string;
82
89
  update: (id: number) => string;
83
90
  delete: (id: number) => string;
84
91
  deleteMany: string;
@@ -88,6 +95,46 @@ declare const PERFORMANCES_API_ROUTES: {
88
95
  ticketQrToken: (uuid: string) => string;
89
96
  getAvailableDays: string;
90
97
  publicAvailablePerformances: string;
98
+ seatEventsTicket: (id: number) => string;
99
+ seatEventsTicketAdmin: (id: number) => string;
100
+ seatEvents: (id: number) => string;
101
+ myQrToken: (ticketUuid: string) => string;
102
+ ticketPdf: (ticketUuid: string) => string;
103
+ myTicketPdf: (ticketUuid: string) => string;
104
+ };
105
+
106
+ declare const PRICE_ZONES_API_ROUTES: {
107
+ FIND_ALL: string;
108
+ CREATE: string;
109
+ findOneById: (id: number) => string;
110
+ update: (id: number) => string;
111
+ delete: (id: number) => string;
112
+ updateElements: (id: number) => string;
113
+ duplicate: (id: number) => string;
114
+ };
115
+
116
+ declare const PRODUCT_CATEGORIES_API_ROUTES: {
117
+ FIND_ALL: string;
118
+ CREATE: string;
119
+ findById: (id: number) => string;
120
+ update: (id: number) => string;
121
+ delete: (id: number) => string;
122
+ };
123
+
124
+ declare const PRODUCT_TAGS_API_ROUTES: {
125
+ FIND_ALL: string;
126
+ CREATE: string;
127
+ findById: (id: number) => string;
128
+ update: (id: number) => string;
129
+ delete: (id: number) => string;
130
+ };
131
+
132
+ declare const PRODUCT_TYPES_API_ROUTES: {
133
+ FIND_ALL: string;
134
+ CREATE: string;
135
+ findById: (id: number) => string;
136
+ update: (id: number) => string;
137
+ delete: (id: number) => string;
91
138
  };
92
139
 
93
140
  declare const PRODUCTS_API_ROUTES: {
@@ -96,6 +143,9 @@ declare const PRODUCTS_API_ROUTES: {
96
143
  findOneById: (id: number) => string;
97
144
  update: (id: number) => string;
98
145
  delete: (id: number) => string;
146
+ fetchImages: (id: number) => string;
147
+ uploadImages: (id: number) => string;
148
+ deleteOneImage: (productId: number, imageId: number) => string;
99
149
  };
100
150
 
101
151
  declare const SHOWS_API_ROUTES: {
@@ -110,22 +160,12 @@ declare const SHOWS_API_ROUTES: {
110
160
  publicAvailablePerformances: string;
111
161
  };
112
162
 
113
- declare const CUSTOMERS_API_ROUTES: {
163
+ declare const STATE_API_ENDPOINTS: {
114
164
  findAll: string;
115
165
  create: string;
116
- findOne: (id: number) => string;
117
- update: (id: number) => string;
118
- delete: (id: number) => string;
119
- };
120
-
121
- declare const PRICE_ZONES_API_ROUTES: {
122
- FIND_ALL: string;
123
- CREATE: string;
124
- findOneById: (id: number) => string;
166
+ findById: (id: number) => string;
125
167
  update: (id: number) => string;
126
168
  delete: (id: number) => string;
127
- updateElements: (id: number) => string;
128
- duplicate: (id: number) => string;
129
169
  };
130
170
 
131
171
  declare const VENUES_API_ROUTES: {
@@ -139,170 +179,36 @@ declare const VENUES_API_ROUTES: {
139
179
  deleteOneImage: (venueId: number, imageId: number) => string;
140
180
  };
141
181
 
142
- declare enum FileType {
143
- IMAGE = "image",
144
- PDF = "pdf",
145
- EXCEL = "excel",
146
- WORD = "word",
147
- TEXT = "text",
148
- DEFAULT = "default"
149
- }
150
-
151
- declare enum CouponApplicability {
152
- GENERAL = "GENERAL",
153
- CUSTOMER_EMAIL = "CUSTOMER_EMAIL",
154
- MEMBERSHIP_TYPE = "MEMBERSHIP_TYPE",
155
- SHOWS = "SHOWS",
156
- PERFORMANCES = "PERFORMANCES"
157
- }
158
-
159
- declare enum CouponDiscountType {
160
- PERCENTAGE = "PERCENTAGE",
161
- FIXED = "FIXED"
162
- }
163
-
164
- declare enum CouponStatus {
165
- ACTIVE = "ACTIVE",
166
- INACTIVE = "INACTIVE",
167
- EXPIRED = "EXPIRED",
168
- CONSUMED = "CONSUMED"
169
- }
170
-
171
- declare enum CorporateBondStatus {
172
- ACTIVE = "ACTIVE",
173
- INACTIVE = "INACTIVE",
174
- EXPIRED = "EXPIRED",
175
- CONSUMED = "CONSUMED"
176
- }
177
-
178
- declare enum PerformanceStatus {
179
- ACTIVE = "active",
180
- CANCELLED = "cancelled",
181
- FINISHED = "finished",
182
- POSTPONED = "postponed"
183
- }
184
-
185
- declare enum PerformanceTicketStatus {
186
- AVAILABLE = "available",
187
- RESERVED = "reserved",
188
- SOLD = "sold",
189
- BLOCKED = "blocked"
190
- }
191
-
192
- declare enum RoomMapElementOrientation {
193
- TOP = "top",
194
- RIGHT = "right",
195
- BOTTOM = "bottom",
196
- LEFT = "left",
197
- CENTER = "center"
198
- }
199
-
200
- declare enum RoomMapElementType {
201
- SEAT_BLOCK = "seat_block",
202
- TABLE = "table",
203
- ZONE = "zone",
204
- EXIT = "exit",
205
- STAGE = "stage",
206
- PRODUCTION_AREA = "production_area",
207
- UNAVAILABLE_SPACE = "unavailable_space",
208
- STAIR = "stair",
209
- HALLWAY = "hallway"
210
- }
211
-
212
- declare enum GiftBondStatus {
213
- ACTIVE = "ACTIVE",
214
- INACTIVE = "INACTIVE",
215
- EXPIRED = "EXPIRED",
216
- CONSUMED = "CONSUMED"
217
- }
218
-
219
- declare enum OrderItemType {
220
- TICKET = "TICKET",
221
- PRODUCT = "PRODUCT"
222
- }
223
-
224
- declare enum OrderStatus {
225
- ON_HOLD = "on-hold",
226
- PENDING_PAYMENT = "pending-payment",
227
- PROCESSING = "processing",
228
- COMPLETED = "completed",
229
- FAILED = "failed",
230
- CANCELLED = "cancelled",
231
- REFUNDED = "refunded"
232
- }
233
-
234
- interface RoomMapPosition {
235
- x: number;
236
- y: number;
237
- }
238
-
239
- interface RoomMapSize {
240
- width: number;
241
- height: number;
242
- }
243
-
244
- interface RoomMapBaseElement {
245
- id: string;
246
- type: RoomMapElementType;
247
- position: RoomMapPosition;
248
- size: RoomMapSize;
249
- rotation: number;
250
- name?: string;
251
- isLocked: boolean;
252
- isVisible: boolean;
253
- zIndex: number;
254
- }
255
-
256
- interface RoomMapExitElement extends RoomMapBaseElement {
257
- type: RoomMapElementType.EXIT;
258
- exitName?: string;
259
- exitType: 'emergency' | 'regular';
260
- width: number;
261
- }
262
-
263
- interface RoomMapProductionAreaElement extends RoomMapBaseElement {
264
- type: RoomMapElementType.PRODUCTION_AREA;
265
- areaName?: string;
266
- areaType: 'lighting' | 'sound' | 'backstage' | 'orchestra' | 'custom';
267
- }
268
-
269
- interface RoomMapSeatElement extends RoomMapBaseElement {
270
- type: RoomMapElementType.SEAT_BLOCK;
271
- seatNumber?: string;
272
- isAvailable: boolean;
273
- priceCategory?: string;
274
- }
182
+ declare const VIP_CARDS_API_ROUTES: {
183
+ findAll: string;
184
+ findOne: (id: number) => string;
185
+ activateAdmin: string;
186
+ rechargeAdmin: (id: number) => string;
187
+ updateStatus: (id: number) => string;
188
+ updateTerms: (id: number) => string;
189
+ transactions: (id: number) => string;
190
+ findMy: string;
191
+ activate: string;
192
+ recharge: string;
193
+ };
275
194
 
276
- interface RoomMapStageElement extends RoomMapBaseElement {
277
- type: RoomMapElementType.STAGE;
278
- stageName?: string;
279
- orientation: RoomMapElementOrientation;
280
- isMainStage: boolean;
281
- }
195
+ declare const BUTTON_VARIANT_CLASSES: Record<string, string>;
196
+ declare const BASE_BUTTON_CLASSES = "btn";
197
+ declare const BUTTON_SIZES_CLASSES: Record<string, string>;
282
198
 
283
- interface RoomMapTableElement extends RoomMapBaseElement {
284
- type: RoomMapElementType.TABLE;
285
- tableNumber?: string;
286
- capacity: number;
287
- shape: 'round' | 'rectangular' | 'square';
288
- }
199
+ declare const FORM_ERROR_MESSAGES: Record<string, string>;
289
200
 
290
- interface RoomMapUnavailableElement extends RoomMapBaseElement {
291
- type: RoomMapElementType.UNAVAILABLE_SPACE;
292
- reason?: string;
293
- }
201
+ declare const BASE_INPUT_CLASSES: string;
202
+ declare const ERROR_INPUT_CLASSES: string;
294
203
 
295
- interface RoomMapZoneElement extends RoomMapBaseElement {
296
- type: RoomMapElementType.ZONE;
297
- zoneName: string;
298
- zoneType: 'vip' | 'general' | 'premium' | 'balcony' | 'custom';
299
- color: string;
300
- capacity?: number;
204
+ interface PhoneCountry {
205
+ name: string;
206
+ isoCode: string;
207
+ dialCode: string;
301
208
  }
302
209
 
303
- type RoomMapCanvasElement = RoomMapSeatElement | RoomMapTableElement | RoomMapZoneElement | RoomMapExitElement | RoomMapStageElement | RoomMapProductionAreaElement | RoomMapUnavailableElement;
304
-
305
- type RoomMapSeatDisplayState = 'normal' | 'accessible' | 'non_existent';
210
+ declare function phoneCountryFlag(isoCode: string): string;
211
+ declare const PHONE_COUNTRIES: PhoneCountry[];
306
212
 
307
213
  interface SelectOption {
308
214
  value: any;
@@ -310,7 +216,7 @@ interface SelectOption {
310
216
  disabled?: boolean;
311
217
  }
312
218
 
313
- interface Admin {
219
+ interface Admin extends Auditable {
314
220
  id: number;
315
221
  username: string;
316
222
  email: string;
@@ -326,16 +232,17 @@ interface Admin {
326
232
  reset_password_expires: Date;
327
233
  email_verified_at: Date;
328
234
  last_login: Date;
329
- created_at: Date;
330
- updated_at: Date;
331
- deleted_at: Date;
332
235
  }
333
236
 
334
237
  interface Auditable {
335
238
  created_at: Date;
336
239
  updated_at: Date;
240
+ deleted_at?: Date | null;
337
241
  is_published?: boolean;
338
242
  published_at?: Date;
243
+ published_by?: number;
244
+ deleted_by?: number;
245
+ deleted_by_admin?: Admin;
339
246
  created_by_admin?: Admin;
340
247
  updated_by_admin?: Admin;
341
248
  published_by_admin?: Admin;
@@ -368,30 +275,21 @@ interface DeleteConfirmationOpen {
368
275
  confirmationText: string;
369
276
  }
370
277
 
371
- interface AdminsResponse {
372
- statusCode: number;
373
- data: {
374
- admins: Admin[];
375
- total: number;
376
- };
377
- message: string;
378
- }
379
-
380
278
  interface Country {
381
- id: string;
279
+ id: number;
382
280
  name: string;
383
281
  iso2: string;
384
282
  }
385
283
 
386
284
  interface State {
387
- id: string;
285
+ id: number;
388
286
  name: string;
389
287
  country_id: number;
390
288
  country?: Country;
391
289
  }
392
290
 
393
291
  interface City {
394
- id: string;
292
+ id: number;
395
293
  name: string;
396
294
  search_text: string | null;
397
295
  state_id: number;
@@ -430,36 +328,42 @@ interface Venue extends Auditable {
430
328
  images: VenueImage[];
431
329
  }
432
330
 
433
- interface HallFloor {
331
+ interface HallFloor extends Auditable {
434
332
  id: number;
435
333
  name: string;
436
334
  level: number;
437
335
  max_capacity: number;
438
336
  description: string;
439
337
  hall_id: number;
440
- created_at: Date;
441
- updated_at: Date;
442
- deleted_at: Date | null;
443
338
  }
444
339
 
445
- interface Hall {
340
+ interface Hall extends Auditable {
446
341
  id: number;
447
342
  name: string;
448
343
  venue_id: number;
449
344
  venue?: Venue;
450
345
  hall_floors?: HallFloor[];
451
- created_at: Date;
452
- updated_at: Date;
453
- deleted_at: Date | null;
454
346
  }
455
347
 
456
- interface CountryResponse {
457
- data: Country;
458
- message: string;
459
- status: string;
348
+ interface BreadcrumbStep {
349
+ label: string;
350
+ href?: string;
351
+ icon?: string;
460
352
  }
461
353
 
462
- interface CountriesResponse {
354
+ interface CommonFetchAllParams {
355
+ id?: number;
356
+ page?: number;
357
+ limit?: number;
358
+ search?: string;
359
+ sort_by?: string;
360
+ sort_order?: 'ASC' | 'DESC';
361
+ is_published?: boolean;
362
+ ids_in?: number[];
363
+ ids_not_in?: number[];
364
+ }
365
+
366
+ interface CountriesResponse {
463
367
  data: {
464
368
  countries: Country[];
465
369
  total: number;
@@ -468,6 +372,21 @@ interface CountriesResponse {
468
372
  status: string;
469
373
  }
470
374
 
375
+ interface CountryResponse {
376
+ data: Country;
377
+ message: string;
378
+ status: string;
379
+ }
380
+
381
+ interface FetchCountriesParams extends CommonFetchAllParams {
382
+ sort_by?: 'country.id' | 'country.name' | 'country.iso2' | 'country.created_at' | 'country.updated_at';
383
+ }
384
+
385
+ interface FetchStatesParams extends CommonFetchAllParams {
386
+ country_id?: number;
387
+ sort_by?: 'state.id' | 'state.name' | 'state.country_id' | 'state.search_text' | 'state.created_at' | 'state.updated_at';
388
+ }
389
+
471
390
  interface StateResponse {
472
391
  data: State;
473
392
  message: string;
@@ -483,28 +402,40 @@ interface StatesResponse {
483
402
  statusCode: number;
484
403
  }
485
404
 
405
+ interface CitiesResponse {
406
+ data: {
407
+ cities: City[];
408
+ total: number;
409
+ };
410
+ message: string;
411
+ status: string;
412
+ }
413
+
486
414
  interface CityResponse {
487
415
  data: City;
488
416
  message: string;
489
417
  status: string;
490
418
  }
491
419
 
492
- interface CitiesResponse {
420
+ interface FetchCitiesParams extends CommonFetchAllParams {
421
+ state_id?: number;
422
+ sort_by?: 'city.id' | 'city.name' | 'city.state_id' | 'city.search_text' | 'city.created_at' | 'city.updated_at';
423
+ }
424
+
425
+ interface AdminsResponse {
426
+ statusCode: number;
493
427
  data: {
494
- cities: City[];
428
+ admins: Admin[];
495
429
  total: number;
496
430
  };
497
431
  message: string;
498
- status: string;
499
432
  }
500
433
 
501
- interface FetchCitiesParams {
502
- stateId?: number;
503
- page?: number;
504
- search?: string;
434
+ interface FetchAdminsParams extends CommonFetchAllParams {
435
+ 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';
505
436
  }
506
437
 
507
- interface Customer {
438
+ interface Customer extends Auditable {
508
439
  username: string;
509
440
  email: string;
510
441
  mobile: string;
@@ -535,9 +466,6 @@ interface Customer {
535
466
  membership_expires_at: Date | null;
536
467
  id: number;
537
468
  is_active: boolean;
538
- created_at: Date;
539
- updated_at: Date;
540
- deleted_at: Date | null;
541
469
  }
542
470
 
543
471
  interface CustomerResponse {
@@ -555,76 +483,363 @@ interface CustomersResponse {
555
483
  message: string;
556
484
  }
557
485
 
558
- type ShowType = 'play' | 'musical' | 'concert' | 'dance' | 'opera' | 'comedy' | 'other';
486
+ interface FetchCustomersParams extends CommonFetchAllParams {
487
+ first_name?: string;
488
+ last_name?: string;
489
+ email?: string;
490
+ username?: string;
491
+ mobile?: string;
492
+ document_type?: Customer['document_type'];
493
+ document_number?: string;
494
+ address?: string;
495
+ 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';
496
+ }
559
497
 
560
- interface ShowImage {
561
- id: number;
562
- path: string;
563
- full_url: string;
564
- original_name: string;
565
- extension: string;
566
- size: number;
567
- mime_type: string;
498
+ declare enum OrderItemType {
499
+ TICKET = "TICKET",
500
+ PRODUCT = "PRODUCT",
501
+ GIFT_BOND = "GIFT_BOND",
502
+ CORPORATE_BOND = "CORPORATE_BOND",
503
+ VIP_RECHARGE = "VIP_RECHARGE"
504
+ }
505
+
506
+ declare enum OrderStatus {
507
+ ON_HOLD = "on-hold",
508
+ PENDING_PAYMENT = "pending-payment",
509
+ PROCESSING = "processing",
510
+ COMPLETED = "completed",
511
+ FAILED = "failed",
512
+ CANCELLED = "cancelled",
513
+ REFUNDED = "refunded"
514
+ }
515
+
516
+ declare enum CreatorType {
517
+ ADMIN = "admin",
518
+ CUSTOMER = "customer"
519
+ }
520
+
521
+ declare enum PaymentMethod {
522
+ PAYROLL = "payroll",
523
+ CASH = "cash",
524
+ DATAFONO = "datafono",
525
+ INTERNAL_EXCHANGE = "internal_exchange",
526
+ CLIENT_EXCHANGE = "client_exchange",
527
+ MERCADO_PAGO = "mercado_pago"
528
+ }
529
+
530
+ declare enum RoomMapElementType {
531
+ SEAT_BLOCK = "seat_block",
532
+ TABLE = "table",
533
+ ZONE = "zone",
534
+ EXIT = "exit",
535
+ STAGE = "stage",
536
+ PRODUCTION_AREA = "production_area",
537
+ UNAVAILABLE_SPACE = "unavailable_space",
538
+ STAIR = "stair",
539
+ HALLWAY = "hallway"
540
+ }
541
+
542
+ interface RoomMapPosition {
543
+ x: number;
544
+ y: number;
545
+ }
546
+
547
+ interface RoomMapSize {
568
548
  width: number;
569
549
  height: number;
570
- show_id: number;
571
- created_at: Date;
572
550
  }
573
551
 
574
- interface Show extends Auditable {
575
- id: number;
552
+ interface RoomMapBaseElement {
553
+ id: string;
554
+ type: RoomMapElementType;
555
+ position: RoomMapPosition;
556
+ size: RoomMapSize;
557
+ rotation: number;
558
+ name?: string;
559
+ isLocked: boolean;
560
+ isVisible: boolean;
561
+ zIndex: number;
562
+ }
563
+
564
+ interface RoomMapExitElement extends RoomMapBaseElement {
565
+ type: RoomMapElementType.EXIT;
566
+ exitName?: string;
567
+ exitType: 'emergency' | 'regular';
568
+ width: number;
569
+ }
570
+
571
+ interface RoomMapProductionAreaElement extends RoomMapBaseElement {
572
+ type: RoomMapElementType.PRODUCTION_AREA;
573
+ areaName?: string;
574
+ areaType: 'lighting' | 'sound' | 'backstage' | 'orchestra' | 'custom';
575
+ }
576
+
577
+ interface RoomMapSeatElement extends RoomMapBaseElement {
578
+ type: RoomMapElementType.SEAT_BLOCK;
579
+ seatNumber?: string;
580
+ isAvailable: boolean;
581
+ priceCategory?: string;
582
+ }
583
+
584
+ declare enum RoomMapElementOrientation {
585
+ TOP = "top",
586
+ RIGHT = "right",
587
+ BOTTOM = "bottom",
588
+ LEFT = "left",
589
+ CENTER = "center"
590
+ }
591
+
592
+ interface RoomMapStageElement extends RoomMapBaseElement {
593
+ type: RoomMapElementType.STAGE;
594
+ stageName?: string;
595
+ orientation: RoomMapElementOrientation;
596
+ isMainStage: boolean;
597
+ }
598
+
599
+ interface RoomMapTableElement extends RoomMapBaseElement {
600
+ type: RoomMapElementType.TABLE;
601
+ tableNumber?: string;
602
+ capacity: number;
603
+ shape: 'round' | 'rectangular' | 'square';
604
+ }
605
+
606
+ interface RoomMapUnavailableElement extends RoomMapBaseElement {
607
+ type: RoomMapElementType.UNAVAILABLE_SPACE;
608
+ reason?: string;
609
+ }
610
+
611
+ interface RoomMapZoneElement extends RoomMapBaseElement {
612
+ type: RoomMapElementType.ZONE;
613
+ zoneName: string;
614
+ zoneType: 'vip' | 'general' | 'premium' | 'balcony' | 'custom';
615
+ color: string;
616
+ capacity?: number;
617
+ }
618
+
619
+ type RoomMapCanvasElement = RoomMapSeatElement | RoomMapTableElement | RoomMapZoneElement | RoomMapExitElement | RoomMapStageElement | RoomMapProductionAreaElement | RoomMapUnavailableElement;
620
+
621
+ type RoomMapSeatDisplayState = 'normal' | 'accessible' | 'non_existent';
622
+
623
+ declare enum ShowType {
624
+ PLAY = "PLAY",
625
+ CONCERT = "CONCERT",
626
+ STAND_UP_COMEDY = "STAND_UP_COMEDY",
627
+ OPERA = "OPERA",
628
+ MUSICAL = "MUSICAL",
629
+ DANCE = "DANCE",
630
+ SPORT = "SPORT",
631
+ OTHER = "OTHER",
632
+ DEFAULT = "DEFAULT"
633
+ }
634
+
635
+ type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
636
+
637
+ type FeedbackModalType = 'loading' | 'success' | 'info' | 'warning' | 'error';
638
+
639
+ type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';
640
+
641
+ type BadgeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
642
+
643
+ type BreadcrumbTheme = 'light' | 'dark';
644
+
645
+ type TextFontSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl';
646
+
647
+ interface FeedbackModalElement {
648
+ id: string;
649
+ type: FeedbackModalType;
576
650
  title: string;
651
+ isOpen: WritableSignal<boolean>;
652
+ message?: string;
653
+ showHeader?: boolean;
654
+ showCloseButton?: boolean;
655
+ showTitle?: boolean;
656
+ closeModal?: void;
657
+ }
658
+
659
+ declare enum FileType {
660
+ IMAGE = "image",
661
+ PDF = "pdf",
662
+ EXCEL = "excel",
663
+ WORD = "word",
664
+ TEXT = "text",
665
+ DEFAULT = "default"
666
+ }
667
+
668
+ declare enum CouponApplicability {
669
+ GENERAL = "GENERAL",
670
+ CUSTOMER_EMAIL = "CUSTOMER_EMAIL",
671
+ MEMBERSHIP_TYPE = "MEMBERSHIP_TYPE",
672
+ SHOWS = "SHOWS",
673
+ PERFORMANCES = "PERFORMANCES"
674
+ }
675
+
676
+ declare enum CouponDiscountType {
677
+ PERCENTAGE = "PERCENTAGE",
678
+ FIXED = "FIXED"
679
+ }
680
+
681
+ declare enum CouponStatus {
682
+ ACTIVE = "ACTIVE",
683
+ INACTIVE = "INACTIVE",
684
+ EXPIRED = "EXPIRED",
685
+ CONSUMED = "CONSUMED"
686
+ }
687
+
688
+ declare enum CorporateBondStatus {
689
+ ACTIVE = "ACTIVE",
690
+ INACTIVE = "INACTIVE",
691
+ PENDING = "PENDING",
692
+ PAYMENT_FAILED = "PAYMENT_FAILED",
693
+ EXPIRED = "EXPIRED",
694
+ CONSUMED = "CONSUMED"
695
+ }
696
+
697
+ declare enum PerformanceStatus {
698
+ SCHEDULED = "scheduled",
699
+ OPEN = "open",
700
+ CLOSED = "closed",
701
+ CANCELLED = "cancelled",
702
+ COMPLETED = "completed",
703
+ POSTPONED = "postponed"
704
+ }
705
+
706
+ declare enum PerformanceTicketStatus {
707
+ AVAILABLE = "available",
708
+ RESERVED = "reserved",
709
+ SOLD = "sold",
710
+ BLOCKED = "blocked"
711
+ }
712
+
713
+ declare enum GiftBondStatus {
714
+ ACTIVE = "ACTIVE",
715
+ INACTIVE = "INACTIVE"
716
+ }
717
+
718
+ declare enum GiftBondPurchaseStatus {
719
+ AVAILABLE = "AVAILABLE",
720
+ REDEEMED = "REDEEMED",
721
+ EXPIRED = "EXPIRED",
722
+ CANCELLED = "CANCELLED"
723
+ }
724
+
725
+ declare enum TransactionStatus {
726
+ PENDING = "PENDING",
727
+ APPROVED = "APPROVED",
728
+ REJECTED = "REJECTED",
729
+ ERROR = "ERROR"
730
+ }
731
+
732
+ declare enum VipCardStatus {
733
+ ACTIVE = "ACTIVE",
734
+ INACTIVE = "INACTIVE",
735
+ EXPIRED = "EXPIRED"
736
+ }
737
+
738
+ declare enum VipTransactionType {
739
+ INITIAL_RECHARGE = "INITIAL_RECHARGE",
740
+ RECHARGE = "RECHARGE",
741
+ PURCHASE_PAYMENT = "PURCHASE_PAYMENT"
742
+ }
743
+
744
+ declare enum MembershipStatus {
745
+ ACTIVE = "ACTIVE",
746
+ INACTIVE = "INACTIVE"
747
+ }
748
+
749
+ interface FetchProductCategoriesParams extends CommonFetchAllParams {
750
+ name?: string;
751
+ slug?: string;
752
+ sort_by?: 'category.id' | 'category.name' | 'category.slug' | 'category.created_at';
753
+ }
754
+
755
+ interface ProductCategory extends Auditable {
756
+ id: number;
757
+ name: string;
577
758
  slug: string;
578
- description: string;
579
- duration_minutes: number | null;
580
- type_of_costs: string | null;
581
- service_fee: number | null;
582
- show_type: ShowType | null;
583
- pulep: string | null;
584
- minimum_age: number | null;
585
- show_category_id: number | null;
586
- default_room_map_id: number | null;
587
- published_at?: Date;
588
- is_published: boolean;
589
- images: ShowImage[];
590
- terms_and_conditions: string;
591
- performances_quantity?: number;
592
759
  }
593
760
 
594
- interface ShowResponse {
761
+ interface ProductCategoriesResponse {
595
762
  statusCode: number;
596
- data: Show;
763
+ data: {
764
+ categories: ProductCategory[];
765
+ total: number;
766
+ };
597
767
  message: string;
598
768
  }
599
769
 
600
- interface ShowsResponseInterface {
770
+ interface ProductCategoryResponse {
771
+ statusCode: number;
772
+ data: ProductCategory;
773
+ message: string;
774
+ }
775
+
776
+ interface FetchProductTagsParams extends CommonFetchAllParams {
777
+ name?: string;
778
+ slug?: string;
779
+ sort_by?: 'tag.id' | 'tag.name' | 'tag.slug' | 'tag.created_at';
780
+ }
781
+
782
+ interface ProductTag extends Auditable {
783
+ id: number;
784
+ name: string;
785
+ slug: string;
786
+ }
787
+
788
+ interface ProductTagResponse {
789
+ statusCode: number;
790
+ data: ProductTag;
791
+ message: string;
792
+ }
793
+
794
+ interface ProductTagsResponse {
601
795
  statusCode: number;
602
796
  data: {
603
- shows: Show[];
797
+ tags: ProductTag[];
604
798
  total: number;
605
799
  };
606
800
  message: string;
607
801
  }
608
802
 
609
- interface FetchShowsParams {
610
- page?: number;
611
- limit?: number;
612
- search?: string;
613
- date?: string;
803
+ interface FetchProductTypesParams extends CommonFetchAllParams {
804
+ name?: string;
805
+ slug?: string;
806
+ sort_by?: 'type.id' | 'type.name' | 'type.slug' | 'type.created_at';
614
807
  }
615
808
 
616
- interface PriceZone {
809
+ interface ProductType extends Auditable {
617
810
  id: number;
618
811
  name: string;
619
- color: string;
620
- normal_price: number | null;
621
- is_active: boolean;
622
- elements: any[];
623
- room_map_id: number | null;
812
+ slug: string;
813
+ }
814
+
815
+ interface ProductTypeResponse {
816
+ statusCode: number;
817
+ data: ProductType;
818
+ message: string;
819
+ }
820
+
821
+ interface ProductTypesResponse {
822
+ statusCode: number;
823
+ data: {
824
+ types: ProductType[];
825
+ total: number;
826
+ };
827
+ message: string;
828
+ }
829
+
830
+ interface ProductImage {
831
+ id: number;
832
+ path: string;
833
+ full_url: string;
834
+ original_name: string;
835
+ extension: string;
836
+ size: number;
837
+ mime_type: string;
838
+ width: number;
839
+ height: number;
840
+ product_id: number;
841
+ product: Product;
624
842
  created_at: Date;
625
- updated_at: Date;
626
- created_by: number;
627
- updated_by: number;
628
843
  }
629
844
 
630
845
  interface Product extends Auditable {
@@ -637,12 +852,35 @@ interface Product extends Auditable {
637
852
  slug: string;
638
853
  sku?: string;
639
854
  is_limited_edition: boolean;
640
- is_active: boolean;
641
855
  deleted_at: Date | null;
642
- categories?: any[];
643
- tags?: any[];
644
- types?: any[];
645
- images?: any[];
856
+ categories?: ProductCategory[];
857
+ tags?: ProductTag[];
858
+ types?: ProductType[];
859
+ images?: ProductImage[];
860
+ }
861
+
862
+ interface ShowImage {
863
+ id: number;
864
+ path: string;
865
+ full_url: string;
866
+ original_name: string;
867
+ extension: string;
868
+ size: number;
869
+ mime_type: string;
870
+ width: number;
871
+ height: number;
872
+ show_id: number;
873
+ created_at: Date;
874
+ }
875
+
876
+ interface PriceZone extends Auditable {
877
+ id: number;
878
+ name: string;
879
+ color: string;
880
+ normal_price: number | null;
881
+ is_active: boolean;
882
+ elements: any[];
883
+ room_map_id: number | null;
646
884
  }
647
885
 
648
886
  interface NumerationConfig {
@@ -680,7 +918,7 @@ interface RoomMapElementTemplate {
680
918
  price_zone?: PriceZone;
681
919
  }
682
920
 
683
- interface RoomMap {
921
+ interface RoomMap extends Auditable {
684
922
  id: number;
685
923
  name: string;
686
924
  canvas_settings: {
@@ -696,8 +934,6 @@ interface RoomMap {
696
934
  related_product_ids: number[];
697
935
  products?: Product[];
698
936
  venue_name?: string;
699
- created_at: Date;
700
- updated_at: Date;
701
937
  }
702
938
 
703
939
  interface RoomMapCanvasConfiguration {
@@ -739,7 +975,7 @@ interface ElementPropertiesTab {
739
975
  elements_access: string[];
740
976
  }
741
977
 
742
- interface Performance {
978
+ interface Performance extends Auditable {
743
979
  id: number;
744
980
  start_time: Date | string;
745
981
  end_time: Date | string;
@@ -749,8 +985,112 @@ interface Performance {
749
985
  show?: Show;
750
986
  room_map: RoomMap;
751
987
  room_map_id: number;
752
- created_at: Date;
753
- 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 Show extends Auditable {
1050
+ id: number;
1051
+ title: string;
1052
+ slug: string;
1053
+ description: string;
1054
+ duration_minutes: number | null;
1055
+ type_of_costs: string | null;
1056
+ service_fee: number | null;
1057
+ show_type: ShowType | null;
1058
+ pulep: string | null;
1059
+ minimum_age: number | null;
1060
+ show_gender?: ShowGender | null;
1061
+ show_gender_id: number | null;
1062
+ show_category?: ShowCategory | null;
1063
+ show_category_id: number | null;
1064
+ default_room_map?: RoomMap | null;
1065
+ default_room_map_id: number | null;
1066
+ is_published: boolean;
1067
+ images: ShowImage[];
1068
+ terms_and_conditions: string | null;
1069
+ performances_quantity?: number;
1070
+ performances?: Performance[];
1071
+ next_performance?: Performance;
1072
+ days_of_week?: number[];
1073
+ unique_start_times?: string[];
1074
+ }
1075
+
1076
+ interface FindAllPerformancesParams {
1077
+ roomMapId?: number;
1078
+ showId?: number;
1079
+ hallId?: number;
1080
+ page?: number;
1081
+ search?: string;
1082
+ limit?: number;
1083
+ }
1084
+
1085
+ interface PerformanceBookingDataResponse {
1086
+ statusCode: number;
1087
+ data: {
1088
+ performance: Performance;
1089
+ room_map: RoomMap;
1090
+ show: Show;
1091
+ tickets: PerformanceTicket[];
1092
+ };
1093
+ message: string;
754
1094
  }
755
1095
 
756
1096
  interface PerformanceResponse {
@@ -759,6 +1099,18 @@ interface PerformanceResponse {
759
1099
  message: string;
760
1100
  }
761
1101
 
1102
+ interface PerformanceAvailableDay {
1103
+ date: string;
1104
+ count: number;
1105
+ }
1106
+ interface PerformancesAvailableDaysResponse {
1107
+ statusCode: number;
1108
+ data: {
1109
+ days: PerformanceAvailableDay[];
1110
+ };
1111
+ message: string;
1112
+ }
1113
+
762
1114
  interface PerformancesResponseInterface {
763
1115
  statusCode: number;
764
1116
  data: {
@@ -768,7 +1120,7 @@ interface PerformancesResponseInterface {
768
1120
  message: string;
769
1121
  }
770
1122
 
771
- interface OrderItem {
1123
+ interface OrderItem extends Auditable {
772
1124
  id: number;
773
1125
  order: Order;
774
1126
  item_type: OrderItemType;
@@ -780,11 +1132,8 @@ interface OrderItem {
780
1132
  discounted_price: number;
781
1133
  ticket_id?: number;
782
1134
  ticket_uuid?: string;
1135
+ ticket?: PerformanceTicket;
783
1136
  item: Show | Product;
784
- created_at: Date;
785
- updated_at: Date;
786
- created_by: number;
787
- updated_by: number;
788
1137
  }
789
1138
 
790
1139
  interface Coupon extends Auditable {
@@ -811,7 +1160,7 @@ interface Coupon extends Auditable {
811
1160
  customers?: Customer[];
812
1161
  }
813
1162
 
814
- interface CorporateBond {
1163
+ interface CorporateBond extends Auditable {
815
1164
  id: number;
816
1165
  name: string;
817
1166
  description?: string;
@@ -821,11 +1170,13 @@ interface CorporateBond {
821
1170
  quantity: number;
822
1171
  status: CorporateBondStatus;
823
1172
  value: number;
1173
+ purchase_value: number;
1174
+ buyer_customer_id: number | null;
1175
+ buyer: Customer | null;
1176
+ order_id: number | null;
1177
+ order: Order | null;
1178
+ payment_method?: PaymentMethod;
824
1179
  codes: CorporateBondCode[];
825
- created_at: Date;
826
- updated_at: Date;
827
- created_by: number;
828
- updated_by: number;
829
1180
  }
830
1181
 
831
1182
  interface CorporateBondCode {
@@ -834,6 +1185,7 @@ interface CorporateBondCode {
834
1185
  corporate_bond_id: number;
835
1186
  code: string;
836
1187
  is_used: boolean;
1188
+ status: CorporateBondStatus;
837
1189
  used_at: Date | null;
838
1190
  created_at: Date;
839
1191
  }
@@ -855,38 +1207,186 @@ interface ValidateCorporateBondResponse {
855
1207
  statusCode: number;
856
1208
  }
857
1209
 
858
- interface Order {
1210
+ interface GiftBondImage {
1211
+ id: number;
1212
+ path: string;
1213
+ full_url: string;
1214
+ original_name: string;
1215
+ extension: string;
1216
+ size: number;
1217
+ mime_type: string;
1218
+ width: number;
1219
+ height: number;
1220
+ is_featured: boolean;
1221
+ gift_bond_id: number;
1222
+ gift_bond: GiftBond;
1223
+ created_at: Date;
1224
+ }
1225
+
1226
+ interface GiftBond extends Auditable {
1227
+ id: number;
1228
+ name: string;
1229
+ description?: string;
1230
+ slug?: string;
1231
+ status: GiftBondStatus;
1232
+ value: number;
1233
+ duration_days: number;
1234
+ page_content?: string;
1235
+ purchases_total?: number;
1236
+ purchases_redeemed?: number;
1237
+ images?: GiftBondImage[];
1238
+ }
1239
+
1240
+ interface GiftBondResponse {
1241
+ statusCode: number;
1242
+ data: GiftBond;
1243
+ message: string;
1244
+ }
1245
+
1246
+ interface GiftBondsResponse {
1247
+ statusCode: number;
1248
+ data: {
1249
+ gift_bonds: GiftBond[];
1250
+ total: number;
1251
+ };
1252
+ message: string;
1253
+ }
1254
+
1255
+ interface GiftBondPurchase extends Auditable {
1256
+ id: number;
1257
+ code: string;
1258
+ original_value: number;
1259
+ used_value: number | null;
1260
+ lost_value: number | null;
1261
+ beneficiary_email: string;
1262
+ beneficiary: Customer | null;
1263
+ personalized_message: string | null;
1264
+ status: GiftBondPurchaseStatus;
1265
+ purchased_at: string;
1266
+ expires_at: string;
1267
+ redeemed_at: string | null;
1268
+ gift_bond?: GiftBond;
1269
+ gift_bond_id: number;
1270
+ buyer_customer_id: number;
1271
+ buyer: Customer;
1272
+ order: Order | null;
1273
+ order_id: number;
1274
+ redemption_order_id: number | null;
1275
+ redemption_order: Order | null;
1276
+ }
1277
+
1278
+ interface ValidateGiftBondResponse {
1279
+ data: {
1280
+ valid: boolean;
1281
+ message: string;
1282
+ code: string;
1283
+ bond?: GiftBondPurchase;
1284
+ };
1285
+ statusCode: number;
1286
+ message: string;
1287
+ }
1288
+
1289
+ interface GiftBondPurchaseResponse {
1290
+ statusCode: number;
1291
+ data: GiftBondPurchase;
1292
+ message: string;
1293
+ }
1294
+
1295
+ interface GiftBondPurchasesResponse {
1296
+ statusCode: number;
1297
+ data: {
1298
+ items: GiftBondPurchase[];
1299
+ total: number;
1300
+ };
1301
+ message: string;
1302
+ }
1303
+
1304
+ interface Transaction extends Auditable {
1305
+ id: number;
1306
+ status: TransactionStatus;
1307
+ amount: number;
1308
+ currency: string;
1309
+ payment_gateway: string;
1310
+ gateway_transaction_id: string;
1311
+ gateway_response: any;
1312
+ order: Order;
1313
+ }
1314
+
1315
+ interface OrderBillingInfo {
1316
+ first_name: string;
1317
+ last_name: string;
1318
+ email: string;
1319
+ mobile: string;
1320
+ document_type: string;
1321
+ document_number: string;
1322
+ address: string;
1323
+ city_id: number;
1324
+ postal_code?: string;
1325
+ address_notes?: string;
1326
+ payment_method: PaymentMethod;
1327
+ terms_accepted: boolean;
1328
+ data_processing_accepted: boolean;
1329
+ comments?: string;
1330
+ products?: Array<{
1331
+ id: number;
1332
+ quantity: number;
1333
+ }>;
1334
+ }
1335
+
1336
+ interface OrderShowSnapshot {
1337
+ id: number;
1338
+ title: string;
1339
+ description: string | null;
1340
+ service_fee: number | null;
1341
+ }
1342
+
1343
+ interface OrderPerformanceSnapshot {
1344
+ id: number;
1345
+ start_time: Performance['start_time'];
1346
+ end_time: Performance['end_time'];
1347
+ published: boolean;
1348
+ status: PerformanceStatus;
1349
+ }
1350
+
1351
+ interface Order extends Auditable {
859
1352
  id: number;
860
1353
  uuid: string;
861
- customer: Customer;
1354
+ customer_id: number | null;
1355
+ customer: Customer | null;
862
1356
  customer_name?: string;
863
1357
  customer_email?: string;
864
1358
  order_items: OrderItem[];
865
1359
  order_items_quantity?: number;
866
- discount_amount: number;
1360
+ transactions: Transaction[];
1361
+ sub_total: number;
1362
+ discount_amount: number | null;
867
1363
  total: number;
1364
+ sub_total_discounted: number | null;
868
1365
  total_discounted: number;
869
- sub_total: number;
870
- sub_total_discounted: number;
871
- service_fee: number;
872
- service_fee_discounted: number;
873
- coupon: Coupon;
874
- coupon_snapshot: Record<string, any>;
875
- corporate_bond_code: CorporateBondCode;
876
- corporate_bond_code_snapshot: Record<string, any>;
1366
+ service_fee: number | null;
1367
+ service_fee_discounted: number | null;
1368
+ coupon: Coupon | null;
1369
+ coupon_snapshot: Record<string, any> | null;
877
1370
  status: OrderStatus;
878
- show_snapshot: Record<string, any>;
879
- performance_snapshot: Record<string, any>;
880
- created_at: Date;
881
- updated_at: Date;
882
- payment_method: string;
1371
+ show_snapshot: OrderShowSnapshot | null;
1372
+ performance_snapshot: OrderPerformanceSnapshot | null;
1373
+ payment_method: PaymentMethod | null;
883
1374
  terms_accepted: boolean;
884
1375
  data_processing_accepted: boolean;
885
- billing_info: Partial<Customer>;
886
- comments: string;
887
- address_notes: string;
1376
+ billing_info: OrderBillingInfo | null;
1377
+ corporate_bond_code_snapshot: Record<string, any> | null;
1378
+ gift_bond_snapshot: Record<string, any> | null;
1379
+ corporate_bond_code: CorporateBondCode | null;
1380
+ corporate_bond_code_id: number | null;
1381
+ gift_bond: GiftBond | null;
1382
+ gift_bond_id: number | null;
1383
+ comments: string | null;
1384
+ address_notes: string | null;
1385
+ mercado_pago_preference_id: string;
888
1386
  created_by: number;
1387
+ created_by_type: CreatorType;
889
1388
  updated_by: number;
1389
+ updated_by_type: CreatorType;
890
1390
  }
891
1391
 
892
1392
  interface OrderResponse {
@@ -904,7 +1404,15 @@ interface OrdersResponse {
904
1404
  message: string;
905
1405
  }
906
1406
 
907
- interface PerformanceTicket {
1407
+ interface MercadoPagoPreference {
1408
+ data: {
1409
+ id: string;
1410
+ init_point: string;
1411
+ sandbox_init_point: string;
1412
+ };
1413
+ }
1414
+
1415
+ interface PerformanceTicket extends Auditable {
908
1416
  id: number;
909
1417
  uuid: string;
910
1418
  is_accessible: boolean;
@@ -918,35 +1426,181 @@ interface PerformanceTicket {
918
1426
  presale_price: number | null;
919
1427
  status: PerformanceTicketStatus;
920
1428
  reserved_until: Date | null;
1429
+ reserved_by_type: CreatorType | null;
1430
+ reserved_by: number | null;
1431
+ reserved_by_admin: Admin | null;
1432
+ reserved_by_customer: number | null;
1433
+ reserved_customer: Customer | null;
1434
+ order: Order | null;
921
1435
  order_id: number | null;
922
1436
  customer_id: number | null;
923
1437
  checked_in: boolean;
924
1438
  checked_in_at: Date | null;
1439
+ checked_in_by: number | null;
1440
+ checked_in_by_admin: Admin | null;
925
1441
  order_items: OrderItem[];
926
1442
  element_qty?: number;
927
- created_at: Date;
928
- updated_at: Date;
1443
+ blocked_at: Date | null;
1444
+ blocked_by: number | null;
1445
+ blocked_by_admin: Admin | null;
929
1446
  }
930
1447
 
931
- interface PerformanceBookingDataResponse {
932
- statusCode: number;
933
- data: {
934
- performance: Performance;
935
- room_map: RoomMap;
936
- show: Show;
937
- tickets: PerformanceTicket[];
1448
+ interface TicketMapSeatPosition {
1449
+ rowIndex: number;
1450
+ colIndex: number;
1451
+ seatLabel: string;
1452
+ }
1453
+
1454
+ interface TicketMapTableChairPosition {
1455
+ index: number;
1456
+ angle: number;
1457
+ x: number;
1458
+ y: number;
1459
+ }
1460
+
1461
+ interface ElementRenderData {
1462
+ elementId: number;
1463
+ hallFloorId: number | null;
1464
+ type: RoomMapElementType;
1465
+ shapeConfig: Record<string, any>;
1466
+ tickets: PerformanceTicket[];
1467
+ ticketByNumeration: Map<string, PerformanceTicket>;
1468
+ elementName: string;
1469
+ seatPositions?: TicketMapSeatPosition[][];
1470
+ chairPositions?: TicketMapTableChairPosition[];
1471
+ zoneCapacity?: number;
1472
+ }
1473
+
1474
+ interface TicketMapTooltipData {
1475
+ x: number;
1476
+ y: number;
1477
+ elementName: string;
1478
+ seatLabel: string | null;
1479
+ price: number;
1480
+ status: PerformanceTicketStatus;
1481
+ statusLabel: string;
1482
+ statusColor: string;
1483
+ isSelected: boolean;
1484
+ ticketId: number;
1485
+ }
1486
+
1487
+ interface TicketMapZoneQuantityState {
1488
+ elementId: number;
1489
+ selectedCount: number;
1490
+ maxCapacity: number;
1491
+ }
1492
+
1493
+ interface ReservePerformanceDto {
1494
+ ticket_ids: number[];
1495
+ products?: {
1496
+ id: number;
1497
+ quantity: number;
1498
+ }[];
1499
+ coupon_code?: string;
1500
+ gift_bond_code?: string;
1501
+ corporate_bond_code?: string;
1502
+ payment_method?: string;
1503
+ billing?: {
1504
+ first_name: string;
1505
+ last_name: string;
1506
+ email: string;
1507
+ mobile: string;
1508
+ document_type: string;
1509
+ document_number: string;
1510
+ address: string;
1511
+ city_id: number;
1512
+ postal_code?: string;
1513
+ address_notes?: string;
1514
+ terms_accepted: boolean;
1515
+ data_processing_accepted: boolean;
1516
+ comments?: string;
938
1517
  };
939
- message: string;
940
1518
  }
941
1519
 
942
- interface PerformanceAvailableDay {
943
- date: string;
944
- count: number;
1520
+ interface TicketMapZoomConfig {
1521
+ minZoom: number;
1522
+ maxZoom: number;
1523
+ zoomStep: number;
1524
+ scaleBy: number;
945
1525
  }
946
- interface PerformancesAvailableDaysResponse {
1526
+
1527
+ interface HallFloorOption {
1528
+ id: number | null;
1529
+ name: string;
1530
+ }
1531
+
1532
+ declare enum SelectedDiscountCardType {
1533
+ COUPON = "COUPON",
1534
+ CORPORATE_BOND = "CORPORATE_BOND",
1535
+ GIFT_BOND = "GIFT_BOND",
1536
+ VIP = "VIP",
1537
+ SUBSCRIPTION = "SUBSCRIPTION"
1538
+ }
1539
+
1540
+ interface SelectedDiscountCard {
1541
+ name: string;
1542
+ type: SelectedDiscountCardType;
1543
+ value: number;
1544
+ discountType: 'percentage' | 'fixed';
1545
+ /**
1546
+ * Si el descuento seleccionado exonera la tarifa de servicio (hoy solo
1547
+ * aplica a Tarjeta VIP, según `VipCategorySnapshot.service_fee_exempt`).
1548
+ */
1549
+ serviceFeeExempt?: boolean;
1550
+ }
1551
+
1552
+ /** Forma compacta de un ticket recibida por SSE (ver
1553
+ * SeatAvailabilitySseService) — sin relaciones, solo lo necesario para
1554
+ * repintar el mapa y validar disponibilidad en el cliente. */
1555
+ interface SeatStatusUpdate {
1556
+ id: number;
1557
+ status: PerformanceTicketStatus;
1558
+ room_map_element_id: number;
1559
+ reserved_until: Date | null;
1560
+ }
1561
+ type SeatEventMessage = {
1562
+ type: 'snapshot';
1563
+ performance_id: number;
1564
+ tickets: SeatStatusUpdate[];
1565
+ ts: number;
1566
+ } | {
1567
+ type: 'heartbeat';
1568
+ ts: number;
1569
+ };
1570
+
1571
+ interface AdmissionStatus {
1572
+ active: boolean;
1573
+ position: number | null;
1574
+ }
1575
+ interface AdmissionJoinResponse extends AdmissionStatus {
1576
+ ticket: string;
1577
+ expires_in: number;
1578
+ }
1579
+ type AdmissionEventMessage = ({
1580
+ type: 'status';
1581
+ } & AdmissionStatus & {
1582
+ ts: number;
1583
+ }) | {
1584
+ type: 'heartbeat';
1585
+ ts: number;
1586
+ };
1587
+
1588
+ interface FetchShowsParams extends CommonFetchAllParams {
1589
+ date?: string;
1590
+ sort_by?: 'show.id' | 'show.created_at' | 'show.title' | 'show.slug' | 'show.type_of_costs' | 'show.pulep' | 'show_category.name' | 'show_gender.name';
1591
+ }
1592
+
1593
+ interface ShowResponse {
1594
+ statusCode: number;
1595
+ data: Show;
1596
+ message: string;
1597
+ }
1598
+
1599
+ interface ShowsResponseInterface {
947
1600
  statusCode: number;
948
1601
  data: {
949
- days: PerformanceAvailableDay[];
1602
+ shows: Show[];
1603
+ total: number;
950
1604
  };
951
1605
  message: string;
952
1606
  }
@@ -1003,12 +1657,31 @@ interface FetchDailyPerformancesParams {
1003
1657
  limit?: number;
1004
1658
  }
1005
1659
 
1660
+ interface FetchProductsParams extends CommonFetchAllParams {
1661
+ name?: string;
1662
+ category_id?: number;
1663
+ tag_id?: number;
1664
+ type_id?: number;
1665
+ min_price?: number;
1666
+ max_price?: number;
1667
+ min_stock?: number;
1668
+ max_stock?: number;
1669
+ sort_by?: 'product.id' | 'product.name' | 'product.price' | 'product.stock_quantity' | 'product.slug' | 'product.sku' | 'product.created_at' | 'category.name' | 'tag.name' | 'type.name';
1670
+ }
1671
+
1006
1672
  interface ProductResponse {
1007
1673
  statusCode: number;
1008
1674
  data: Product;
1009
1675
  message: string;
1010
1676
  }
1011
1677
 
1678
+ interface ProductTaxonomy extends Auditable {
1679
+ id: number;
1680
+ name: string;
1681
+ slug: string;
1682
+ selected?: boolean;
1683
+ }
1684
+
1012
1685
  interface ProductsResponseInterface {
1013
1686
  statusCode: number;
1014
1687
  data: {
@@ -1049,76 +1722,291 @@ interface FindAllPriceZoneParams {
1049
1722
  limit?: number;
1050
1723
  }
1051
1724
 
1052
- interface GiftBond {
1725
+ interface CouponResponse {
1726
+ statusCode: number;
1727
+ data: Coupon;
1728
+ message: string;
1729
+ }
1730
+
1731
+ interface ValidateCouponResponse {
1732
+ data: {
1733
+ coupon: Coupon;
1734
+ message: string;
1735
+ };
1736
+ }
1737
+
1738
+ interface RecentOrder {
1053
1739
  id: number;
1740
+ customer_name: string;
1741
+ event: string;
1742
+ total: number;
1743
+ status: string;
1054
1744
  uuid: string;
1745
+ }
1746
+
1747
+ interface RecentRoomMap {
1748
+ id: number;
1055
1749
  name: string;
1056
- description?: string;
1057
- status: GiftBondStatus;
1058
- value: number;
1059
- customer: Customer;
1060
- customer_id: number;
1750
+ capacity: number;
1061
1751
  created_at: Date;
1062
1752
  updated_at: Date;
1063
- created_by: number;
1064
- updated_by: number;
1065
1753
  }
1066
1754
 
1067
- interface GiftBondResponse {
1755
+ interface QrTokenData {
1756
+ token: string;
1757
+ expires_at: string;
1758
+ refresh_in: number;
1759
+ }
1760
+
1761
+ interface QrTokenResponse {
1068
1762
  statusCode: number;
1069
- data: GiftBond;
1763
+ data: QrTokenData;
1070
1764
  message: string;
1071
1765
  }
1072
1766
 
1073
- interface GiftBondsResponse {
1074
- statusCode: number;
1767
+ interface VipCategorySnapshot {
1768
+ membership_id: number;
1769
+ name: string;
1770
+ discount_percentage: number;
1771
+ service_fee_exempt: boolean;
1772
+ applicable_show_ids: number[] | null;
1773
+ excluded_show_ids: number[] | null;
1774
+ duration_days: number;
1775
+ }
1776
+
1777
+ interface VipCard extends Auditable {
1778
+ id: number;
1779
+ uuid: string;
1780
+ customer: Customer;
1781
+ customer_id: number;
1782
+ membership: {
1783
+ id: number;
1784
+ name: string;
1785
+ } | null;
1786
+ membership_id: number;
1787
+ category_snapshot: VipCategorySnapshot;
1788
+ balance: number;
1789
+ status: VipCardStatus;
1790
+ activated_at: string | null;
1791
+ last_activity_at: string | null;
1792
+ expires_at: string | null;
1793
+ last_low_balance_alert_at: string | null;
1794
+ last_expiry_alert_at: string | null;
1795
+ }
1796
+
1797
+ interface VipTransaction {
1798
+ id: number;
1799
+ uuid: string;
1800
+ vip_card_id: number;
1801
+ type: VipTransactionType;
1802
+ amount: number;
1803
+ balance_before: number;
1804
+ balance_after: number;
1805
+ order: Order | null;
1806
+ order_id: number | null;
1807
+ description: string | null;
1808
+ created_at: string;
1809
+ }
1810
+
1811
+ interface VipCardResponse {
1812
+ data: VipCard;
1813
+ }
1814
+ interface VipCardsResponse {
1075
1815
  data: {
1076
- gift_bonds: GiftBond[];
1816
+ vip_cards: VipCard[];
1077
1817
  total: number;
1078
1818
  };
1079
- message: string;
1080
1819
  }
1081
-
1082
- interface ValidateGiftBondResponse {
1820
+ interface VipTransactionsResponse {
1083
1821
  data: {
1084
- valid: boolean;
1085
- message: string;
1086
- code: string;
1087
- bond?: GiftBond;
1822
+ transactions: VipTransaction[];
1823
+ total: number;
1088
1824
  };
1089
- statusCode: number;
1090
- message: string;
1825
+ }
1826
+ interface VipOrderResponse {
1827
+ data: Order;
1091
1828
  }
1092
1829
 
1093
- interface CouponResponse {
1094
- statusCode: number;
1095
- data: Coupon;
1096
- message: string;
1830
+ interface Membership extends Auditable {
1831
+ id: number;
1832
+ name: string;
1833
+ description: string;
1834
+ benefits: string[] | null;
1835
+ price: number;
1836
+ duration_days: number;
1837
+ min_recharge: number;
1838
+ status: MembershipStatus;
1839
+ discount_percentage: number;
1840
+ service_fee_exempt: boolean;
1841
+ applicable_show_ids: number[] | null;
1842
+ excluded_show_ids: number[] | null;
1097
1843
  }
1098
1844
 
1099
- interface ValidateCouponResponse {
1100
- data: {
1101
- coupon: Coupon;
1102
- message: string;
1103
- };
1845
+ interface FetchVipCardsParams extends CommonFetchAllParams {
1846
+ status?: VipCardStatus;
1847
+ membership_id?: number;
1848
+ customer_id?: number;
1849
+ 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';
1850
+ }
1851
+
1852
+ interface ActivateVipCardParams {
1853
+ customer_id: number;
1854
+ membership_id: number;
1855
+ amount: number;
1856
+ payment_method?: string | null;
1857
+ terms_accepted: boolean;
1858
+ data_processing_accepted: boolean;
1859
+ }
1860
+
1861
+ interface VipRechargeConfirmPayload {
1862
+ amount: number;
1863
+ payment_method: string;
1864
+ terms_accepted: boolean;
1865
+ data_processing_accepted: boolean;
1866
+ }
1867
+
1868
+ declare const DOCUMENT_TYPES_OPTIONS: SelectOption[];
1869
+
1870
+ declare const PAYMENT_METHODS_OPTIONS: SelectOption[];
1871
+ declare const ORDER_STATUS_COLORS: Record<OrderStatus, {
1872
+ text: string;
1873
+ bg: string;
1874
+ }>;
1875
+ declare const ORDER_ITEM_TYPES_COLORS: Record<OrderItemType, {
1876
+ text: string;
1877
+ bg: string;
1878
+ }>;
1879
+ declare const ORDER_DISCOUNT_COLORS: Record<string, {
1880
+ text: string;
1881
+ bg: string;
1882
+ }>;
1883
+ declare const TRANSACTION_STATUS_COLORS: Record<TransactionStatus, {
1884
+ text: string;
1885
+ bg: string;
1886
+ }>;
1887
+
1888
+ declare const PERFORMANCE_TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, {
1889
+ text: string;
1890
+ bg: string;
1891
+ }>;
1892
+ declare const PERFORMANCE_STATUS_COLORS: Record<PerformanceStatus, {
1893
+ text: string;
1894
+ bg: string;
1895
+ }>;
1896
+
1897
+ declare const TICKET_MAP_LAST_TICKETS_LIMIT = 10;
1898
+ declare const TICKET_ELEMENT_TYPES: RoomMapElementType[];
1899
+ declare const DEFAULT_STAGE_CONFIG: {
1900
+ [x: string]: any;
1901
+ };
1902
+ declare const TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, string>;
1903
+ declare const TICKET_STATUS_FILLS: Record<PerformanceTicketStatus, string>;
1904
+ declare const TICKET_STATUS_LABELS: Record<PerformanceTicketStatus, string>;
1905
+ declare const TICKET_MAP_GRID_SIZE = 30;
1906
+ declare const TICKET_MAP_TITLE_HEIGHT = 30;
1907
+
1908
+ interface KonvaShapeConfig {
1909
+ config: ShapeConfig;
1910
+ layer: 'background' | 'elements' | 'foreground' | 'overlay';
1104
1911
  }
1105
1912
 
1913
+ declare function drawRoundedRect(con: Context, shape: Shape, x: number, y: number, width: number, height: number, cornerRadius: number): void;
1914
+
1915
+ declare const generateExitScene: (con: Context, shape: Shape) => void;
1916
+
1917
+ declare const generateHallwayScene: (con: Context, shape: Shape) => void;
1918
+
1919
+ declare const generateProductionAreaScene: (con: Context, shape: Shape) => void;
1920
+
1921
+ declare const generateSeatBlockScene: (con: Context, shape: Shape, numerationConfig?: {
1922
+ start_row_letter: string;
1923
+ row_order: "TOP_TO_BOTTOM" | "BOTTOM_TO_TOP";
1924
+ start_column_number: number;
1925
+ column_order: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT";
1926
+ }) => void;
1927
+
1928
+ declare const generateStageScene: (con: Context, shape: Shape) => void;
1929
+
1930
+ declare const generateStairScene: (con: Context, shape: Shape) => void;
1931
+
1932
+ declare const generateTableScene: (con: Context, shape: Shape) => void;
1933
+
1934
+ declare const generateUnavailableSpaceScene: (con: Context, shape: Shape) => void;
1935
+
1936
+ declare const generateZoneScene: (con: Context, shape: Shape) => void;
1937
+
1938
+ declare const KONVA_SHAPE_MAPPINGS: Record<RoomMapElementType, KonvaShapeConfig>;
1939
+
1940
+ declare const SHOW_TYPE_COLORS: Record<ShowType, {
1941
+ bg: string;
1942
+ text: string;
1943
+ }>;
1944
+
1106
1945
  declare const getCustomerFullname: (customer: Customer) => string;
1107
1946
 
1947
+ type OrderDiscountType = 'coupon' | 'corporate_bond' | 'gift_bond';
1948
+ interface OrderDiscountInfo {
1949
+ type: OrderDiscountType | null;
1950
+ code: string | null;
1951
+ name: string | null;
1952
+ value: number;
1953
+ discountType: 'percentage' | 'fixed' | null;
1954
+ icon: string;
1955
+ }
1956
+ declare function getOrderDiscount(order: Order): OrderDiscountInfo;
1957
+
1108
1958
  declare function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData;
1109
1959
 
1110
1960
  declare const transformImageToFile: (image: ShowImage | VenueImage) => UploadedFile;
1111
1961
 
1962
+ declare const transformUrlParams: (params: any) => URLSearchParams;
1963
+
1112
1964
  declare const formatCitiesResponseToSelect: (res: CitiesResponse) => {
1113
- value: string;
1965
+ value: number;
1114
1966
  label: string;
1115
1967
  }[];
1116
1968
 
1969
+ declare function tintColor(hex: string, amount?: number): string;
1970
+
1971
+ declare const drawChairIcon: (con: Context, cx: number, cy: number, size: number) => void;
1972
+
1973
+ declare const drawHappyFace: (con: Context, cx: number, cy: number, size: number) => void;
1974
+
1975
+ declare const drawWheelchairIcon: (con: Context, shape: Shape, cx: number, cy: number, size: number, fillColor?: string, strokeColor?: string) => void;
1976
+
1977
+ declare const numberToLetter: (num: number) => string;
1978
+
1979
+ declare const getItemTypeIcon: (ticket: PerformanceTicket) => string;
1980
+
1981
+ declare const generateSeatBlockTicketScene: (con: Context, shape: Shape, numerationConfig?: {
1982
+ start_row_letter: string;
1983
+ row_order: "TOP_TO_BOTTOM" | "BOTTOM_TO_TOP";
1984
+ start_column_number: number;
1985
+ column_order: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT";
1986
+ }, ticketStatusMap?: Map<string, PerformanceTicketStatus>) => void;
1987
+
1988
+ declare const generateTableTicketScene: (con: Context, shape: Shape, chairTicketStatuses?: PerformanceTicketStatus[], tableSeats?: RoomMapSeatState[][]) => void;
1989
+
1990
+ declare function processElementsToRenderData(elements: RoomMapElementTemplate[], tickets: PerformanceTicket[], priceZones?: {
1991
+ id: number;
1992
+ color: string;
1993
+ }[]): ElementRenderData[];
1994
+ declare function findTicketAtPosition(renderData: ElementRenderData, relX: number, relY: number): PerformanceTicket | null;
1995
+ declare function findElementAtPosition(renderDataList: ElementRenderData[], stageX: number, stageY: number): {
1996
+ element: ElementRenderData;
1997
+ relX: number;
1998
+ relY: number;
1999
+ } | null;
2000
+
2001
+ declare const ticketCanOpenQr: (order: Order, ticket: PerformanceTicket) => boolean;
2002
+
1117
2003
  declare function MinTodayValidator(controlName: string): ValidatorFn;
1118
2004
  declare function EndDateGreaterThanStartValidator(startDateControlName: string, endDateControlName: string): ValidatorFn;
1119
2005
 
1120
2006
  declare function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn;
1121
2007
 
2008
+ declare function emailValidator(): ValidatorFn;
2009
+
1122
2010
  declare class ApiService {
1123
2011
  private http;
1124
2012
  private platformId;
@@ -1129,6 +2017,7 @@ declare class ApiService {
1129
2017
  private validateContentType;
1130
2018
  private handleError;
1131
2019
  get<T>(path: string): Observable<T>;
2020
+ getBlob(path: string): Observable<Blob>;
1132
2021
  post<T>(path: string, body: any): Observable<T>;
1133
2022
  patch<T>(path: string, body: any): Observable<T>;
1134
2023
  put<T>(path: string, body: any): Observable<T>;
@@ -1137,23 +2026,44 @@ declare class ApiService {
1137
2026
  static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
1138
2027
  }
1139
2028
 
2029
+ /**
2030
+ * Deshabilita el zoom del NAVEGADOR (no el zoom interno del mapa de
2031
+ * asientos, que sigue funcionando igual). Se instancia una sola vez —
2032
+ * inyectarlo en el componente raíz de la app alcanza, porque es
2033
+ * `providedIn: 'root'` — y cubre las cuatro formas en que un navegador
2034
+ * deja hacer zoom:
2035
+ *
2036
+ * - Ctrl/Cmd + rueda del mouse (desktop, todos los navegadores).
2037
+ * - Ctrl/Cmd + "+"/"-"/"0" por teclado (desktop, todos los navegadores).
2038
+ * - Gesto de pellizco en trackpad en Safari, que no dispara `wheel` sino
2039
+ * sus propios eventos `gesture*` (no estándar, solo Safari/WebKit).
2040
+ * - Pellizco con dos dedos en pantallas táctiles, como respaldo además
2041
+ * del `user-scalable=no` del viewport (que ya lo bloquea en la mayoría
2042
+ * de los navegadores, pero no en todos de forma consistente).
2043
+ *
2044
+ * No toca el zoom interno de `TicketMapZoomService` (ese es zoom propio de
2045
+ * la app sobre el SVG del mapa, con sus propios botones +/-, y debe seguir
2046
+ * funcionando tal cual).
2047
+ */
2048
+ declare class BrowserZoomLockService {
2049
+ constructor(platformId: Object);
2050
+ private onWheel;
2051
+ private onKeydown;
2052
+ private onTouchMove;
2053
+ private onGesture;
2054
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrowserZoomLockService, never>;
2055
+ static ɵprov: i0.ɵɵInjectableDeclaration<BrowserZoomLockService>;
2056
+ }
2057
+
1140
2058
  type ToastType = 'success' | 'error' | 'info';
1141
2059
  declare class ToastService {
2060
+ private platformId;
2061
+ constructor(platformId: Object);
1142
2062
  show(message: string, type?: ToastType): void;
1143
2063
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
1144
2064
  static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
1145
2065
  }
1146
2066
 
1147
- declare class LoadingModalService {
1148
- title: WritableSignal<string>;
1149
- isOpen: WritableSignal<boolean>;
1150
- get modalIsOpen(): WritableSignal<boolean>;
1151
- open(title?: string): void;
1152
- close(): void;
1153
- static ɵfac: i0.ɵɵFactoryDeclaration<LoadingModalService, never>;
1154
- static ɵprov: i0.ɵɵInjectableDeclaration<LoadingModalService>;
1155
- }
1156
-
1157
2067
  declare class DeleteConfirmationService {
1158
2068
  title: WritableSignal<string>;
1159
2069
  resourceName: WritableSignal<string>;
@@ -1197,7 +2107,7 @@ declare class DateService {
1197
2107
  declare class AdminService {
1198
2108
  private apiService;
1199
2109
  constructor(apiService: ApiService);
1200
- fetchAdmins(page?: number, search?: string, limit?: number): Observable<AdminsResponse>;
2110
+ fetchAdmins(params: FetchAdminsParams): Observable<AdminsResponse>;
1201
2111
  deleteOne(id: number): Observable<any>;
1202
2112
  createOne(data: any): Observable<any>;
1203
2113
  updateOne(id: number, data: any): Observable<any>;
@@ -1208,7 +2118,7 @@ declare class AdminService {
1208
2118
  declare class CitiesService {
1209
2119
  private apiService;
1210
2120
  constructor(apiService: ApiService);
1211
- fetchCities({ page, search, stateId }: FetchCitiesParams): Observable<CitiesResponse>;
2121
+ fetchCities(params: FetchCitiesParams): Observable<CitiesResponse>;
1212
2122
  createOne(data: City): Observable<CityResponse>;
1213
2123
  updateOne(id: number, data: City): Observable<CityResponse>;
1214
2124
  deleteOne(id: number): Observable<any>;
@@ -1219,7 +2129,7 @@ declare class CitiesService {
1219
2129
  declare class CountryService {
1220
2130
  private apiService;
1221
2131
  constructor(apiService: ApiService);
1222
- fetchCountries(page?: number, search?: string): Observable<CountriesResponse>;
2132
+ fetchCountries(params: FetchCountriesParams): Observable<CountriesResponse>;
1223
2133
  createOne(data: Country): Observable<CountryResponse>;
1224
2134
  updateOne(id: number, data: Country): Observable<CountryResponse>;
1225
2135
  deleteOne(id: number): Observable<any>;
@@ -1230,7 +2140,7 @@ declare class CountryService {
1230
2140
  declare class StatesService {
1231
2141
  private apiService;
1232
2142
  constructor(apiService: ApiService);
1233
- fetchStates(page?: number, search?: string, countryId?: number): Observable<StatesResponse>;
2143
+ fetchStates(params: FetchStatesParams): Observable<StatesResponse>;
1234
2144
  fetchStatesByCountryId(countryId: number): Observable<StatesResponse>;
1235
2145
  createOne(data: State): Observable<StateResponse>;
1236
2146
  updateOne(id: number, data: State): Observable<StateResponse>;
@@ -1244,7 +2154,7 @@ declare class PerformanceService {
1244
2154
  private performancesSubject;
1245
2155
  performances$: Observable<Performance[]>;
1246
2156
  constructor(apiService: ApiService);
1247
- fetchPerformances(showId?: number, search?: string): Observable<PerformancesResponseInterface>;
2157
+ fetchPerformances({ showId, roomMapId, hallId, search, page, limit, }: FindAllPerformancesParams): Observable<PerformancesResponseInterface>;
1248
2158
  fetchDailyPerformances({ show_id, search, limit, date, }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse>;
1249
2159
  loadPerformances({ showId, search }?: {
1250
2160
  showId?: number;
@@ -1252,7 +2162,7 @@ declare class PerformanceService {
1252
2162
  }): void;
1253
2163
  getCurrentPerformances(): Performance[];
1254
2164
  fetchOneById(id: number): Observable<PerformanceResponse>;
1255
- fetchOneBookingData(id: number): Observable<PerformanceBookingDataResponse>;
2165
+ fetchOneBookingData(id: number, isAdmin?: boolean): Observable<PerformanceBookingDataResponse>;
1256
2166
  fetchAvailableDays(params?: {
1257
2167
  show_id?: number;
1258
2168
  }): Observable<PerformancesAvailableDaysResponse>;
@@ -1282,25 +2192,6 @@ declare class PerformancesListEventsService {
1282
2192
  static ɵprov: i0.ɵɵInjectableDeclaration<PerformancesListEventsService>;
1283
2193
  }
1284
2194
 
1285
- declare class ProductService {
1286
- private apiService;
1287
- private productsSubject;
1288
- products$: Observable<Product[]>;
1289
- constructor(apiService: ApiService);
1290
- fetchProducts(page: number, search: string): Observable<ProductsResponseInterface>;
1291
- loadProducts({ page, search }?: {
1292
- page?: number;
1293
- search?: string;
1294
- }): void;
1295
- getCurrentProducts(): Product[];
1296
- fetchOneById(id: number): Observable<ProductResponse>;
1297
- createOne(data: Product): Observable<any>;
1298
- updateOne(id: number, data: any): Observable<ProductResponse>;
1299
- deleteOne(id: number): Observable<any>;
1300
- static ɵfac: i0.ɵɵFactoryDeclaration<ProductService, never>;
1301
- static ɵprov: i0.ɵɵInjectableDeclaration<ProductService>;
1302
- }
1303
-
1304
2195
  declare class ShowService {
1305
2196
  private apiService;
1306
2197
  private showsSubject;
@@ -1308,7 +2199,7 @@ declare class ShowService {
1308
2199
  constructor(apiService: ApiService);
1309
2200
  loadShows({ page, search }?: FetchShowsParams): void;
1310
2201
  getCurrentShows(): Show[];
1311
- fetchShows({ limit, page, search }: FetchShowsParams): Observable<ShowsResponseInterface>;
2202
+ fetchShows(params: FetchShowsParams): Observable<ShowsResponseInterface>;
1312
2203
  fetchAvailableShows({ date, limit, page, search, }: FetchShowsParams): Observable<ShowsResponseInterface>;
1313
2204
  fetchOneById(id: number): Observable<ShowResponse>;
1314
2205
  createOne(data: Show): Observable<ShowResponse>;
@@ -1325,60 +2216,596 @@ declare class ShowService {
1325
2216
  static ɵprov: i0.ɵɵInjectableDeclaration<ShowService>;
1326
2217
  }
1327
2218
 
1328
- declare class CustomerService {
1329
- private apiService;
1330
- constructor(apiService: ApiService);
1331
- createOne(data: Customer): Observable<CustomerResponse>;
1332
- fetchCustomers(page: number, search: string, limit?: number): Observable<CustomersResponse>;
1333
- fetchOneById(id: number): Observable<CustomerResponse>;
1334
- updateOne(id: number, data: any): Observable<CustomerResponse>;
1335
- deleteOne(id: number): Observable<any>;
1336
- static ɵfac: i0.ɵɵFactoryDeclaration<CustomerService, never>;
1337
- static ɵprov: i0.ɵɵInjectableDeclaration<CustomerService>;
2219
+ declare class CustomerService {
2220
+ private apiService;
2221
+ constructor(apiService: ApiService);
2222
+ createOne(data: Customer): Observable<CustomerResponse>;
2223
+ fetchCustomers(params: FetchCustomersParams): Observable<CustomersResponse>;
2224
+ fetchOneById(id: number): Observable<CustomerResponse>;
2225
+ updateOne(id: number, data: any): Observable<CustomerResponse>;
2226
+ deleteOne(id: number): Observable<any>;
2227
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomerService, never>;
2228
+ static ɵprov: i0.ɵɵInjectableDeclaration<CustomerService>;
2229
+ }
2230
+
2231
+ declare class PriceZoneService {
2232
+ private apiService;
2233
+ private priceZonesSubject;
2234
+ priceZones$: Observable<PriceZone[]>;
2235
+ constructor(apiService: ApiService);
2236
+ fetchPriceZones({ roomMapId, page, search, limit, }?: FindAllPriceZoneParams): Observable<PriceZonesResponseInterface>;
2237
+ loadPriceZones({ roomMapId, page, search, limit }?: FindAllPriceZoneParams): void;
2238
+ getCurrentPriceZones(): PriceZone[];
2239
+ fetchOneById(id: number): Observable<PriceZoneResponse>;
2240
+ createOne(data: PriceZone): Observable<any>;
2241
+ duplicateOne(id: number, name: string): Observable<any>;
2242
+ updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse>;
2243
+ deleteOne(id: number): Observable<any>;
2244
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneService, never>;
2245
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneService>;
2246
+ }
2247
+
2248
+ declare class PriceZoneEventService {
2249
+ private priceZoneDeleted$;
2250
+ private priceZoneSaved$;
2251
+ private _selectedPriceZone;
2252
+ readonly selectedPriceZone$: rxjs.Observable<PriceZone | null>;
2253
+ onPriceZoneDeleted(): void;
2254
+ getPriceZoneDeleted(): rxjs.Observable<void>;
2255
+ onPriceZoneSaved(): void;
2256
+ getPriceZoneSaved(): rxjs.Observable<void>;
2257
+ setSelectedPriceZone(priceZone: PriceZone | null): void;
2258
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneEventService, never>;
2259
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneEventService>;
2260
+ }
2261
+
2262
+ declare class PriceZoneFormModalService {
2263
+ private priceZoneEventService;
2264
+ priceZone: WritableSignal<PriceZone | null>;
2265
+ isOpen: WritableSignal<boolean>;
2266
+ constructor(priceZoneEventService: PriceZoneEventService);
2267
+ get modalIsOpen(): WritableSignal<boolean>;
2268
+ get currentPriceZone(): WritableSignal<PriceZone | null>;
2269
+ open(priceZone?: PriceZone | null): void;
2270
+ close(): void;
2271
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneFormModalService, never>;
2272
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneFormModalService>;
2273
+ }
2274
+
2275
+ declare class ProductCategoryService {
2276
+ private apiService;
2277
+ constructor(apiService: ApiService);
2278
+ fetchCategories(params: FetchProductCategoriesParams): Observable<ProductCategoriesResponse>;
2279
+ fetchOneById(id: number): Observable<ProductCategoryResponse>;
2280
+ createOne(data: ProductCategory): Observable<any>;
2281
+ updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse>;
2282
+ deleteOne(id: number): Observable<any>;
2283
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductCategoryService, never>;
2284
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductCategoryService>;
2285
+ }
2286
+
2287
+ declare class ProductTagService {
2288
+ private apiService;
2289
+ constructor(apiService: ApiService);
2290
+ fetchTags(params: FetchProductTagsParams): Observable<ProductTagsResponse>;
2291
+ fetchOneById(id: number): Observable<ProductTagResponse>;
2292
+ createOne(data: ProductTag): Observable<any>;
2293
+ updateOne(id: number, data: ProductTag): Observable<ProductTagResponse>;
2294
+ deleteOne(id: number): Observable<any>;
2295
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductTagService, never>;
2296
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductTagService>;
2297
+ }
2298
+
2299
+ declare class ProductTypeService {
2300
+ private apiService;
2301
+ constructor(apiService: ApiService);
2302
+ fetchTypes(params: FetchProductTypesParams): Observable<ProductTypesResponse>;
2303
+ fetchOneById(id: number): Observable<ProductTypeResponse>;
2304
+ createOne(data: ProductType): Observable<any>;
2305
+ updateOne(id: number, data: ProductType): Observable<ProductTypeResponse>;
2306
+ deleteOne(id: number): Observable<any>;
2307
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductTypeService, never>;
2308
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductTypeService>;
2309
+ }
2310
+
2311
+ declare class ProductService {
2312
+ private apiService;
2313
+ private productsSubject;
2314
+ products$: Observable<Product[]>;
2315
+ constructor(apiService: ApiService);
2316
+ fetchProducts(params: FetchProductsParams): Observable<ProductsResponseInterface>;
2317
+ loadProducts(params: FetchProductsParams): void;
2318
+ getCurrentProducts(): Product[];
2319
+ fetchOneById(id: number): Observable<ProductResponse>;
2320
+ createOne(data: Product): Observable<any>;
2321
+ updateOne(id: number, data: any): Observable<ProductResponse>;
2322
+ deleteOne(id: number): Observable<any>;
2323
+ fetchImages(id: number): Observable<{
2324
+ data: ProductImage[];
2325
+ }>;
2326
+ uploadImages(id: number, files?: FormData): Observable<{
2327
+ data: ProductImage[];
2328
+ }>;
2329
+ deleteOneImage(productId: number, imageId: number): Observable<any>;
2330
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductService, never>;
2331
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductService>;
2332
+ }
2333
+
2334
+ declare class BaseModalService {
2335
+ readonly isOpen: WritableSignal<boolean>;
2336
+ get modalIsOpen(): WritableSignal<boolean>;
2337
+ open(): void;
2338
+ close(): void;
2339
+ }
2340
+
2341
+ declare class FeedbackModalService {
2342
+ private _modals;
2343
+ readonly modals: i0.Signal<FeedbackModalElement[]>;
2344
+ addModal(modal: FeedbackModalElement): void;
2345
+ removeModal(id: string): void;
2346
+ removeAllModals(): void;
2347
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackModalService, never>;
2348
+ static ɵprov: i0.ɵɵInjectableDeclaration<FeedbackModalService>;
1338
2349
  }
1339
2350
 
1340
- declare class PriceZoneService {
2351
+ /**
2352
+ * Tope de entradas por selección/compra. Por defecto es `null` (sin límite),
2353
+ * que es lo que necesita el backoffice (admin puede seleccionar todo).
2354
+ * El ecommerce, que sí debe limitar, llama a `load()` una vez al iniciar la
2355
+ * app para traer el valor configurado en el formulario de personalización.
2356
+ */
2357
+ declare class PurchaseLimitService {
1341
2358
  private apiService;
1342
- private priceZonesSubject;
1343
- priceZones$: Observable<PriceZone[]>;
2359
+ private _maxTicketsPerSelection;
2360
+ readonly maxTicketsPerSelection: i0.Signal<number | null>;
1344
2361
  constructor(apiService: ApiService);
1345
- fetchPriceZones({ roomMapId, page, search, limit, }?: FindAllPriceZoneParams): Observable<PriceZonesResponseInterface>;
1346
- loadPriceZones({ roomMapId, page, search, limit }?: FindAllPriceZoneParams): void;
1347
- getCurrentPriceZones(): PriceZone[];
1348
- fetchOneById(id: number): Observable<PriceZoneResponse>;
1349
- createOne(data: PriceZone): Observable<any>;
1350
- duplicateOne(id: number, name: string): Observable<any>;
1351
- updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse>;
1352
- deleteOne(id: number): Observable<any>;
1353
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneService, never>;
1354
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneService>;
2362
+ setMaxTicketsPerSelection(max: number | null): void;
2363
+ load(): Observable<number | null>;
2364
+ static ɵfac: i0.ɵɵFactoryDeclaration<PurchaseLimitService, never>;
2365
+ static ɵprov: i0.ɵɵInjectableDeclaration<PurchaseLimitService>;
1355
2366
  }
1356
2367
 
1357
- declare class PriceZoneEventService {
1358
- private priceZoneDeleted$;
1359
- private priceZoneSaved$;
1360
- private _selectedPriceZone;
1361
- readonly selectedPriceZone$: rxjs.Observable<PriceZone | null>;
1362
- onPriceZoneDeleted(): void;
1363
- getPriceZoneDeleted(): rxjs.Observable<void>;
1364
- onPriceZoneSaved(): void;
1365
- getPriceZoneSaved(): rxjs.Observable<void>;
1366
- setSelectedPriceZone(priceZone: PriceZone | null): void;
1367
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneEventService, never>;
1368
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneEventService>;
2368
+ declare class OrderTransactionDetailsModalService {
2369
+ readonly isOpen: WritableSignal<boolean>;
2370
+ transaction: WritableSignal<Transaction | null>;
2371
+ get modalIsOpen(): WritableSignal<boolean>;
2372
+ open(transaction: Transaction): void;
2373
+ close(): void;
2374
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionDetailsModalService, never>;
2375
+ static ɵprov: i0.ɵɵInjectableDeclaration<OrderTransactionDetailsModalService>;
2376
+ }
2377
+
2378
+ declare class PerformanceBookingDataService {
2379
+ private _show;
2380
+ private _performance;
2381
+ private _roomMap;
2382
+ private _hallFloors;
2383
+ private _selectedHallFloor;
2384
+ private _allRenderData;
2385
+ private _visibleFloorIds;
2386
+ private _stageConfig;
2387
+ private _lastTickets;
2388
+ readonly show: i0.Signal<Show | null>;
2389
+ readonly hallFloors: i0.Signal<HallFloor[]>;
2390
+ readonly selectedHallFloor: i0.Signal<HallFloor | null>;
2391
+ readonly performance: i0.Signal<Performance | null>;
2392
+ readonly stageConfig: i0.Signal<{
2393
+ [x: string]: any;
2394
+ }>;
2395
+ readonly roomMap: i0.Signal<RoomMap | null>;
2396
+ readonly visibleFloorIds: i0.Signal<Set<number>>;
2397
+ readonly availableFloors: i0.Signal<HallFloor[]>;
2398
+ readonly renderData: i0.Signal<ElementRenderData[]>;
2399
+ setPerformanceBookingData({ data }: PerformanceBookingDataResponse): void;
2400
+ /** Aplica actualizaciones de estado de tickets recibidas por SSE (ver
2401
+ * SeatAvailabilitySseService) sin volver a pedir todo el booking-data:
2402
+ * parcha `_lastTickets` y vuelve a calcular el render data del mapa con
2403
+ * los mismos `elements`/`price_zones` (que no cambian en vivo). */
2404
+ applySeatStatusUpdates(updates: SeatStatusUpdate[]): void;
2405
+ setRoomMap(roomMap: RoomMap | null): void;
2406
+ setAllRenderData(data: ElementRenderData[]): void;
2407
+ setPerformance(performance: Performance | null): void;
2408
+ setShow(show: Show | null): void;
2409
+ setHallFloors(data: HallFloor[]): void;
2410
+ setSelectedHallFloor(id: number): void;
2411
+ toggleFloorVisibility(floorId: number): void;
2412
+ isFloorVisible(floorId: number): boolean;
2413
+ updateStageConfig(data: {
2414
+ [x: string]: any;
2415
+ }): void;
2416
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceBookingDataService, never>;
2417
+ static ɵprov: i0.ɵɵInjectableDeclaration<PerformanceBookingDataService>;
2418
+ }
2419
+
2420
+ declare class TicketSelectionDetailsService {
2421
+ private _customerEmail;
2422
+ private _customerId;
2423
+ private _paymentMethod;
2424
+ private _billingInformation;
2425
+ readonly customerEmail: i0.Signal<string | null>;
2426
+ readonly customerId: i0.Signal<number | null>;
2427
+ readonly paymentMethod: i0.Signal<string | null>;
2428
+ readonly billingInformation: i0.Signal<Customer | null>;
2429
+ setCustomerEmail(email: string | null): void;
2430
+ setCustomerId(id: number | null): void;
2431
+ setPaymentMethod(method: string | null): void;
2432
+ setBillingInformation(values: Customer): void;
2433
+ clearSelection(): void;
2434
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionDetailsService, never>;
2435
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionDetailsService>;
2436
+ }
2437
+
2438
+ declare class TicketSelectionDiscountService {
2439
+ private _coupon;
2440
+ private _corporateBond;
2441
+ private _corporateBondCode;
2442
+ private _giftBond;
2443
+ private _giftBondCode;
2444
+ private _vipCard;
2445
+ /**
2446
+ * Abono (subscription) como metodo de pago. Solo se usa el campo
2447
+ * `service_fee_exempt`: el valor del descuento es siempre 100% (una obra
2448
+ * del abono cubre el ticket por completo), igual que un cupon del 100%.
2449
+ */
2450
+ private _subscription;
2451
+ readonly coupon: Signal<Coupon | null>;
2452
+ readonly corporateBond: Signal<CorporateBond | null>;
2453
+ readonly corporateBondCode: Signal<string | null>;
2454
+ readonly giftBond: Signal<GiftBondPurchase | null>;
2455
+ readonly giftBondCode: Signal<string | null>;
2456
+ readonly vipCard: Signal<VipCard | null>;
2457
+ readonly subscription: Signal<{
2458
+ service_fee_exempt: boolean;
2459
+ } | null>;
2460
+ readonly selectedDiscount: Signal<SelectedDiscountCard | null>;
2461
+ readonly selectedDiscountType: Signal<SelectedDiscountCardType | undefined>;
2462
+ readonly selectedDiscountValue: Signal<number | undefined>;
2463
+ setCoupon(coupon: Coupon | null): void;
2464
+ setCorporateBond(corporateBond: CorporateBond | null): void;
2465
+ setCorporateBondCode(code: string | null): void;
2466
+ setGiftBond(giftBond: GiftBondPurchase | null): void;
2467
+ setGiftBondCode(code: string | null): void;
2468
+ /**
2469
+ * Saldo VIP como método de pago (VIP-HU-04). Solo debe contar como
2470
+ * descuento "seleccionado" mientras el cliente efectivamente eligió
2471
+ * pagar con su saldo VIP, no solo por tener una tarjeta activa —
2472
+ * llamar con `null` en cuanto deje de ser el método de pago elegido.
2473
+ */
2474
+ setVipCard(card: VipCard | null): void;
2475
+ /**
2476
+ * Abono como metodo de pago (paralelo a `setVipCard`). Llamar con `null`
2477
+ * en cuanto deje de ser el metodo de pago elegido.
2478
+ */
2479
+ setSubscription(subscription: {
2480
+ service_fee_exempt: boolean;
2481
+ } | null): void;
2482
+ clearSelection(): void;
2483
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionDiscountService, never>;
2484
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionDiscountService>;
2485
+ }
2486
+
2487
+ declare class TicketSelectionTotalsService {
2488
+ private bookingDataService;
2489
+ private selectionService;
2490
+ private selectionDiscountService;
2491
+ readonly selectedProductEntries: i0.Signal<{
2492
+ id: number;
2493
+ quantity: number;
2494
+ }[]>;
2495
+ readonly selectedProductCount: i0.Signal<number>;
2496
+ readonly productSubtotal: i0.Signal<number>;
2497
+ readonly ticketSubtotal: i0.Signal<number>;
2498
+ readonly serviceFee: i0.Signal<number>;
2499
+ readonly discountAmount: i0.Signal<number | null>;
2500
+ subtotalValue(): number;
2501
+ totalValue(): number;
2502
+ totalDiscounted(): number | null;
2503
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionTotalsService, never>;
2504
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionTotalsService>;
2505
+ }
2506
+
2507
+ declare class TicketSelectionService {
2508
+ private bookingDataService;
2509
+ private feedbackModalService;
2510
+ private purchaseLimitService;
2511
+ private selectionDetailsService;
2512
+ private selectionDiscountService;
2513
+ private _zoneQuantities;
2514
+ private _allTickets;
2515
+ private _selectedTickets;
2516
+ private _selectedBlockedTickets;
2517
+ private _products;
2518
+ private _productQuantities;
2519
+ readonly selectedTickets: i0.Signal<PerformanceTicket[]>;
2520
+ readonly selectedBlockedTickets: i0.Signal<PerformanceTicket[]>;
2521
+ readonly selectedCount: i0.Signal<number>;
2522
+ readonly blockedSelectedCount: i0.Signal<number>;
2523
+ readonly selectedTicketIds: i0.Signal<Set<PerformanceTicket>>;
2524
+ readonly selectedBlockedTicketIds: i0.Signal<number[]>;
2525
+ readonly selectedTicketIdList: i0.Signal<number[]>;
2526
+ readonly summaryItems: i0.Signal<PerformanceTicket[]>;
2527
+ readonly products: i0.Signal<Product[]>;
2528
+ readonly productQuantities: i0.Signal<Map<number, number>>;
2529
+ readonly selectedProductEntries: i0.Signal<{
2530
+ id: number;
2531
+ quantity: number;
2532
+ }[]>;
2533
+ readonly selectedProductCount: i0.Signal<number>;
2534
+ readonly serviceFee: i0.Signal<number>;
2535
+ setTickets(tickets: PerformanceTicket[]): void;
2536
+ /** Aplica actualizaciones de estado recibidas por SSE (ver
2537
+ * SeatAvailabilitySseService). Muta los tickets existentes EN VEZ de
2538
+ * reemplazarlos por objetos nuevos: `_selectedTickets`/
2539
+ * `_selectedBlockedTickets` son Sets de referencias de objeto, no de ids,
2540
+ * así que reemplazar el array rompería la selección activa del usuario. */
2541
+ applySeatStatusUpdates(updates: SeatStatusUpdate[]): void;
2542
+ setProducts(products: Product[]): void;
2543
+ updateProductQuantity(productId: number, delta: number): void;
2544
+ getProductQuantity(productId: number): number;
2545
+ private getListByStatus;
2546
+ setSelectedTickets(tickets: PerformanceTicket[]): void;
2547
+ toggle(ticket: PerformanceTicket): void;
2548
+ select(ticket: PerformanceTicket): void;
2549
+ deselect(ticket: PerformanceTicket): void;
2550
+ clearBlockedSelection(): void;
2551
+ clearSelection(): void;
2552
+ isSelected(ticket: PerformanceTicket): boolean;
2553
+ initZoneQuantity(elementId: number, maxCapacity: number): void;
2554
+ getZoneMax(elementId: number): number;
2555
+ getZoneSelectedCount(elementId: number): number;
2556
+ setZoneQuantity(elementId: number, target: number): void;
2557
+ adjustZoneQuantity(elementId: number, delta: number): void;
2558
+ private remainingSelectionAllowance;
2559
+ private canAddMoreToSelection;
2560
+ private notifyPurchaseLimitReached;
2561
+ getZoneTickets(elementId: number): PerformanceTicket[];
2562
+ buildTooltipData(ticket: PerformanceTicket, elementName: string, seatLabel: string | null, x: number, y: number): TicketMapTooltipData;
2563
+ buildReservePerformanceDto(paymentMethod?: string, termsAccepted?: boolean, dataProcessingAccepted?: boolean): ReservePerformanceDto;
2564
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionService, never>;
2565
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionService>;
2566
+ }
2567
+
2568
+ declare class TicketMapZoomService {
2569
+ readonly currentZoom: i0.WritableSignal<number>;
2570
+ private stage?;
2571
+ private bookingDataService;
2572
+ private readonly defaultConfig;
2573
+ constructor();
2574
+ /**
2575
+ * Set the Konva stage instance
2576
+ */
2577
+ setStage(stage: Stage): void;
2578
+ /**
2579
+ * Zoom in by one step
2580
+ */
2581
+ zoomIn(): void;
2582
+ /**
2583
+ * Zoom out by one step
2584
+ */
2585
+ zoomOut(): void;
2586
+ /**
2587
+ * Reset zoom to 100%
2588
+ */
2589
+ resetZoom(): void;
2590
+ /**
2591
+ * Get current zoom as percentage string
2592
+ */
2593
+ getZoomPercentage(): string;
2594
+ /**
2595
+ * Get current zoom value
2596
+ */
2597
+ getCurrentZoom(): number;
2598
+ /**
2599
+ * Apply zoom with center point
2600
+ */
2601
+ private applyZoom;
2602
+ /**
2603
+ * Apply zoom scale with specific center point
2604
+ */
2605
+ private applyZoomScale;
2606
+ /**
2607
+ * Handle mouse wheel zoom toward the cursor position
2608
+ */
2609
+ handleWheelZoom(deltaY: number): void;
2610
+ /**
2611
+ * Fit the content bounds to fill the stage container
2612
+ */
2613
+ fitToContainer(padding?: number): void;
2614
+ /**
2615
+ * Get current stage position
2616
+ */
2617
+ getStagePosition(): {
2618
+ x: number;
2619
+ y: number;
2620
+ };
2621
+ /**
2622
+ * Set stage position (useful for programmatic panning)
2623
+ */
2624
+ setStagePosition(position: {
2625
+ x: number;
2626
+ y: number;
2627
+ }): void;
2628
+ /**
2629
+ * Fit the stage content bounds to the container, centering and scaling
2630
+ * to show the full content with optional padding.
2631
+ */
2632
+ fitToBounds(contentBounds: {
2633
+ x: number;
2634
+ y: number;
2635
+ width: number;
2636
+ height: number;
2637
+ }, containerWidth: number, containerHeight: number, padding?: number): void;
2638
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapZoomService, never>;
2639
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketMapZoomService>;
2640
+ }
2641
+
2642
+ declare class ConfirmationOrderModalService extends BaseModalService {
2643
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationOrderModalService, never>;
2644
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationOrderModalService>;
2645
+ }
2646
+
2647
+ /**
2648
+ * Transporte SSE del estado de asientos en vivo. Es el único punto de la
2649
+ * librería que sabe de EventSource/HTTP para esto — aplica cada snapshot
2650
+ * recibido sobre PerformanceBookingDataService (repinta el mapa) y
2651
+ * TicketSelectionService (mantiene la disponibilidad al día para
2652
+ * validaciones de zona/límite de compra).
2653
+ *
2654
+ * Cada intento de reconexión pide un ticket NUEVO (el anterior es de un
2655
+ * solo uso y expira a los ~30s), con backoff exponencial acotado.
2656
+ */
2657
+ declare class SeatAvailabilitySseService {
2658
+ private apiService;
2659
+ private bookingDataService;
2660
+ private ticketSelectionService;
2661
+ private platformId;
2662
+ private config;
2663
+ private eventSource;
2664
+ private reconnectTimer;
2665
+ private reconnectAttempts;
2666
+ private currentPerformanceId;
2667
+ private currentIsAdmin;
2668
+ private stopped;
2669
+ constructor(apiService: ApiService, bookingDataService: PerformanceBookingDataService, ticketSelectionService: TicketSelectionService, platformId: Object, config: TickeraComponentsConfig);
2670
+ connect(performanceId: number, opts?: {
2671
+ isAdmin?: boolean;
2672
+ }): void;
2673
+ disconnect(): void;
2674
+ private openConnection;
2675
+ private startStream;
2676
+ private scheduleReconnect;
2677
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatAvailabilitySseService, never>;
2678
+ static ɵprov: i0.ɵɵInjectableDeclaration<SeatAvailabilitySseService>;
2679
+ }
2680
+
2681
+ /**
2682
+ * Cliente de la cola adaptativa (fase 4). No decide CUÁNDO se activa la
2683
+ * cola — eso es enteramente responsabilidad del backend (AdmissionGuard +
2684
+ * LoadBasedAdmissionPolicy) — este servicio solo sabe reaccionar al 429
2685
+ * `ADMISSION_QUEUE_REQUIRED` que ese guard puede devolver en
2686
+ * /carts/reserve y /orders/checkout.
2687
+ *
2688
+ * Uso típico en el punto de llamada (ver reservation-confirmation y
2689
+ * checkout-form): reintentar la request original dentro de un catchError:
2690
+ *
2691
+ * this.cartService.reserve(dto).pipe(
2692
+ * catchError((err) => {
2693
+ * if (!this.admissionQueueService.isAdmissionRequired(err)) return throwError(() => err);
2694
+ * const performanceId = this.admissionQueueService.getPerformanceId(err)!;
2695
+ * return this.admissionQueueService.waitForAdmission(performanceId).pipe(
2696
+ * switchMap(() => this.cartService.reserve(dto)),
2697
+ * );
2698
+ * }),
2699
+ * )
2700
+ *
2701
+ * Reutiliza el mismo transporte SSE con ticket de un solo uso de la fase 3
2702
+ * (ver SeatAvailabilitySseService) — acá el ticket llega directo en la
2703
+ * respuesta de /join, así que no hace falta un endpoint de ticket aparte;
2704
+ * cada reintento de conexión vuelve a hacer /join (el ticket anterior es
2705
+ * de un solo uso y expira a los ~30s).
2706
+ */
2707
+ declare class AdmissionQueueService {
2708
+ private apiService;
2709
+ private feedbackModalService;
2710
+ private platformId;
2711
+ private config;
2712
+ constructor(apiService: ApiService, feedbackModalService: FeedbackModalService, platformId: Object, config: TickeraComponentsConfig);
2713
+ /** True si el error es el 429 específico de "alta demanda, únete a la fila". */
2714
+ isAdmissionRequired(error: unknown): error is HttpErrorResponse;
2715
+ getPerformanceId(error: HttpErrorResponse): number | null;
2716
+ /**
2717
+ * Se une a la fila de `performanceId` y completa (emite una vez y cierra)
2718
+ * en cuanto el usuario queda admitido. Mientras espera, muestra un modal
2719
+ * ligero con la posición vigente, actualizado por SSE. Si quien se
2720
+ * suscribió se desuscribe antes de ser admitido (el usuario navega a
2721
+ * otro lado, cierra el modal, o el componente se destruye), libera el
2722
+ * lugar en la fila con /leave.
2723
+ */
2724
+ waitForAdmission(performanceId: number): Observable<void>;
2725
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdmissionQueueService, never>;
2726
+ static ɵprov: i0.ɵɵInjectableDeclaration<AdmissionQueueService>;
2727
+ }
2728
+
2729
+ declare class TicketQrService {
2730
+ private apiService;
2731
+ constructor(apiService: ApiService);
2732
+ fetchQrToken(ticketUuid: string): Observable<QrTokenResponse>;
2733
+ fetchMyQrToken(ticketUuid: string): Observable<QrTokenResponse>;
2734
+ downloadTicketPdf(ticketUuid: string): Observable<Blob>;
2735
+ downloadMyTicketPdf(ticketUuid: string): Observable<Blob>;
2736
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrService, never>;
2737
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketQrService>;
1369
2738
  }
1370
2739
 
1371
- declare class PriceZoneFormModalService {
1372
- private priceZoneEventService;
1373
- priceZone: WritableSignal<PriceZone | null>;
2740
+ declare class TicketQrModalService {
1374
2741
  isOpen: WritableSignal<boolean>;
1375
- constructor(priceZoneEventService: PriceZoneEventService);
1376
- get modalIsOpen(): WritableSignal<boolean>;
1377
- get currentPriceZone(): WritableSignal<PriceZone | null>;
1378
- open(priceZone?: PriceZone | null): void;
2742
+ ticketUuid: WritableSignal<string | null>;
2743
+ ticketDescription: WritableSignal<string | null>;
2744
+ open(ticketUuid: string, description?: string): void;
1379
2745
  close(): void;
1380
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneFormModalService, never>;
1381
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneFormModalService>;
2746
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrModalService, never>;
2747
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketQrModalService>;
2748
+ }
2749
+
2750
+ declare class VipCardService {
2751
+ private apiService;
2752
+ constructor(apiService: ApiService);
2753
+ findMy(): Observable<{
2754
+ data: VipCard | null;
2755
+ }>;
2756
+ activate(data: any): Observable<VipOrderResponse>;
2757
+ recharge(data: any): Observable<VipOrderResponse>;
2758
+ fetchAll(params?: FetchVipCardsParams): Observable<VipCardsResponse>;
2759
+ fetchOneById(id: number): Observable<VipCardResponse>;
2760
+ activateAdmin(data: ActivateVipCardParams): Observable<VipOrderResponse>;
2761
+ rechargeAdmin(id: number, data: any): Observable<VipOrderResponse>;
2762
+ updateStatus(id: number, status: VipCardStatus): Observable<VipCardResponse>;
2763
+ updateTerms(id: number): Observable<VipCardResponse>;
2764
+ fetchTransactions(id: number, page?: number, limit?: number): Observable<VipTransactionsResponse>;
2765
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipCardService, never>;
2766
+ static ɵprov: i0.ɵɵInjectableDeclaration<VipCardService>;
2767
+ }
2768
+
2769
+ /**
2770
+ * Servicio genérico de "cambios pendientes" para tablas con edición rápida
2771
+ * + guardado masivo (QTN-49, primer consumidor: Bonos de Regalo en
2772
+ * tickera-backoffice-frontend).
2773
+ *
2774
+ * IMPORTANTE: proveerlo a nivel de componente/página
2775
+ * (`providers: [PendingChangesService]` en el `@Component` que lo usa),
2776
+ * NUNCA en `providedIn: 'root'` — si no, dos tablas con edición rápida
2777
+ * abiertas al mismo tiempo (dos pestañas, o dos listados en la misma
2778
+ * sesión) compartirían el mismo estado de cambios pendientes. Mismo
2779
+ * criterio que ya sigue este repo con GiftBondService, provisto a nivel de
2780
+ * GiftBondDetailsComponent en vez de en 'root'.
2781
+ */
2782
+ declare class PendingChangesService<TValue = any> {
2783
+ private readonly changesSignal;
2784
+ private readonly originalValues;
2785
+ readonly changes: Signal<Map<number, TValue>>;
2786
+ readonly changeCount: Signal<number>;
2787
+ readonly hasChanges: Signal<boolean>;
2788
+ /**
2789
+ * Registra (o actualiza) el cambio pendiente de `id`. `originalValue` es
2790
+ * el valor que tenía la fila antes de cualquier edición en esta sesión de
2791
+ * la tabla — solo se guarda la primera vez que se llama para ese id, así
2792
+ * que no importa pasarlo en cada llamada subsiguiente.
2793
+ *
2794
+ * Si `newValue` termina siendo igual al valor original, el id se
2795
+ * elimina automáticamente de los cambios pendientes (evita que quede
2796
+ * marcado como "modificado" un valor que el usuario cambió y luego
2797
+ * revirtió a mano).
2798
+ */
2799
+ setChange(id: number, originalValue: TValue, newValue: TValue): void;
2800
+ getPendingValue(id: number): TValue | undefined;
2801
+ /** Descarta el cambio pendiente de una fila puntual (botón "Deshacer" por fila, si aplica). */
2802
+ discard(id: number): void;
2803
+ /** Descarta todos los cambios pendientes sin guardar nada (botón "Deshacer" de la barra flotante). */
2804
+ discardAll(): void;
2805
+ /** Llamar después de que el guardado en lote fue exitoso, para limpiar el estado. */
2806
+ clearAfterSave(): void;
2807
+ static ɵfac: i0.ɵɵFactoryDeclaration<PendingChangesService<any>, never>;
2808
+ static ɵprov: i0.ɵɵInjectableDeclaration<PendingChangesService<any>>;
1382
2809
  }
1383
2810
 
1384
2811
  declare const authInterceptor: HttpInterceptorFn;
@@ -1393,10 +2820,11 @@ declare class AppButtonComponent {
1393
2820
  size: 'xs' | 'sm' | 'md' | 'lg';
1394
2821
  loadingText: string;
1395
2822
  icon: string;
2823
+ tooltip: string;
1396
2824
  handleClick(): void;
1397
2825
  get buttonClasses(): string;
1398
2826
  static ɵfac: i0.ɵɵFactoryDeclaration<AppButtonComponent, never>;
1399
- 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>;
2827
+ 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>;
1400
2828
  }
1401
2829
 
1402
2830
  declare class AppLinkButtonComponent {
@@ -1410,9 +2838,10 @@ declare class AppLinkButtonComponent {
1410
2838
  queryParams: Record<string, any>;
1411
2839
  size: 'xs' | 'sm' | 'md' | 'lg';
1412
2840
  variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent';
2841
+ tooltip: string;
1413
2842
  get buttonClasses(): string;
1414
2843
  static ɵfac: i0.ɵɵFactoryDeclaration<AppLinkButtonComponent, never>;
1415
- 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>;
2844
+ 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>;
1416
2845
  }
1417
2846
 
1418
2847
  declare class AppAlertComponent {
@@ -1425,30 +2854,65 @@ declare class AppAlertComponent {
1425
2854
  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>;
1426
2855
  }
1427
2856
 
1428
- declare class LoadingmModalComponent {
1429
- private loadingModalService;
1430
- constructor(loadingModalService: LoadingModalService);
1431
- get isOpen(): i0.WritableSignal<boolean>;
1432
- get title(): i0.WritableSignal<string>;
2857
+ declare class FeedbackModalComponent implements OnChanges, OnDestroy {
2858
+ isOpen: WritableSignal<boolean>;
2859
+ type: FeedbackModalType;
2860
+ title: string;
2861
+ message: string;
2862
+ showHeader: boolean;
2863
+ showCloseButton: boolean;
2864
+ showTitle: boolean;
2865
+ autoClose: boolean;
2866
+ autoCloseDuration: number;
2867
+ buttonText: string;
2868
+ closed: EventEmitter<void>;
2869
+ private autoCloseTimeout;
2870
+ get defaultButtonText(): string;
2871
+ get resolvedButtonText(): string;
2872
+ get buttonVariant(): 'primary' | 'secondary';
2873
+ ngOnChanges(changes: SimpleChanges): void;
2874
+ ngOnDestroy(): void;
1433
2875
  closeModal(): void;
1434
- onCitySaved(): void;
1435
- static ɵfac: i0.ɵɵFactoryDeclaration<LoadingmModalComponent, never>;
1436
- static ɵcmp: i0.ɵɵComponentDeclaration<LoadingmModalComponent, "loading-modal", never, {}, {}, never, never, true, never>;
2876
+ private scheduleAutoClose;
2877
+ private clearAutoClose;
2878
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackModalComponent, never>;
2879
+ 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>;
1437
2880
  }
1438
2881
 
2882
+ type DeleteConfirmationStep = 'input' | 'final';
1439
2883
  declare class DeleteConfirmationComponent {
1440
2884
  private fb;
1441
2885
  private deleteConfirmationService;
1442
2886
  protected transloco: TranslocoService;
1443
2887
  deleteConfirmationForm: FormGroup;
2888
+ /**
2889
+ * Two-step flow:
2890
+ * 1. 'input' -> the user must type the resource name to unlock the delete action.
2891
+ * 2. 'final' -> a last feedback/confirmation step is shown before the delete
2892
+ * callback actually runs, so a slip of the mouse on the first
2893
+ * step can never trigger a real deletion by itself.
2894
+ */
2895
+ step: DeleteConfirmationStep;
1444
2896
  constructor(fb: FormBuilder, deleteConfirmationService: DeleteConfirmationService, transloco: TranslocoService);
1445
2897
  get title(): string;
1446
2898
  get resourceName(): string;
1447
2899
  get confirmationText(): string;
1448
2900
  get isOpen(): i0.WritableSignal<boolean>;
1449
2901
  get isConfirmationValid(): boolean;
2902
+ get isFinalStep(): boolean;
2903
+ /** Cancels the whole flow (from either step) without deleting anything. */
1450
2904
  onCloseModal(): void;
2905
+ /** Step 1 submit: only advances to the final confirmation, never deletes. */
1451
2906
  onConfirmDelete(): void;
2907
+ /**
2908
+ * Step 2 cancel: goes back to the input step without touching what the
2909
+ * user typed, so they don't have to retype it if they just want to
2910
+ * double-check before deleting.
2911
+ */
2912
+ onBackToInput(): void;
2913
+ /** Step 2 submit: this is the only place that actually triggers deletion. */
2914
+ onFinalConfirm(): void;
2915
+ private resetState;
1452
2916
  static ɵfac: i0.ɵɵFactoryDeclaration<DeleteConfirmationComponent, never>;
1453
2917
  static ɵcmp: i0.ɵɵComponentDeclaration<DeleteConfirmationComponent, "delete-confirmation", never, {}, {}, never, never, true, never>;
1454
2918
  }
@@ -1456,12 +2920,29 @@ declare class DeleteConfirmationComponent {
1456
2920
  declare class AppModalComponent {
1457
2921
  title: string;
1458
2922
  disableClose: boolean;
2923
+ showHeader: boolean;
2924
+ showCloseButton: boolean;
2925
+ showTitle: boolean;
2926
+ interactiveClose: boolean;
1459
2927
  isOpen: WritableSignal<boolean>;
1460
- size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
2928
+ size: ModalSize;
1461
2929
  closeModal: EventEmitter<void>;
1462
2930
  onCloseModal(): void;
2931
+ onInteractiveClose(): void;
2932
+ onKeydownEscape(): void;
1463
2933
  static ɵfac: i0.ɵɵFactoryDeclaration<AppModalComponent, never>;
1464
- 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>;
2934
+ 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>;
2935
+ }
2936
+
2937
+ declare class AppBadgeComponent {
2938
+ text: string;
2939
+ color: BadgeColor;
2940
+ size: BadgeSize;
2941
+ bordered: boolean;
2942
+ backgroundColor: string;
2943
+ textColor: string;
2944
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppBadgeComponent, never>;
2945
+ 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>;
1465
2946
  }
1466
2947
 
1467
2948
  declare class AuditInformationComponent {
@@ -1470,12 +2951,13 @@ declare class AuditInformationComponent {
1470
2951
  static ɵcmp: i0.ɵɵComponentDeclaration<AuditInformationComponent, "app-audit-information", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
1471
2952
  }
1472
2953
 
1473
- declare class DynamicTableComponent {
2954
+ declare class DynamicTableComponent implements OnChanges {
1474
2955
  private injector;
1475
2956
  constructor(injector: Injector);
1476
2957
  title: string;
1477
2958
  data: any[];
1478
2959
  headers: any[];
2960
+ searcherPlaceholder: string;
1479
2961
  columnComponents: {
1480
2962
  [key: string]: Type<any>;
1481
2963
  };
@@ -1483,17 +2965,124 @@ declare class DynamicTableComponent {
1483
2965
  totalItems: number;
1484
2966
  itemsPerPage: number;
1485
2967
  currentPage: number;
2968
+ searchValue: string;
1486
2969
  pageChange: EventEmitter<number>;
1487
2970
  searchChange: EventEmitter<string>;
2971
+ pageSizeChange: EventEmitter<number>;
2972
+ pageSizeOptions: number[];
1488
2973
  showPagination: boolean;
1489
2974
  showSearch: boolean;
1490
2975
  showTitle: boolean;
1491
2976
  get totalPages(): number;
1492
2977
  onSearch(event: any): void;
1493
2978
  changePage(delta: number): void;
2979
+ changePageSize(event: any): void;
2980
+ private rowInjectors;
2981
+ ngOnChanges(changes: SimpleChanges): void;
1494
2982
  createInjector(row: any): Injector;
1495
2983
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicTableComponent, never>;
1496
- 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>;
2984
+ 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>;
2985
+ }
2986
+
2987
+ declare class TextExpandableComponent implements OnChanges {
2988
+ text: string;
2989
+ maxLength: number;
2990
+ fontSize: TextFontSize;
2991
+ allowHtml: boolean;
2992
+ maxLines?: number;
2993
+ protected expanded: boolean;
2994
+ ngOnChanges(): void;
2995
+ get plainText(): string;
2996
+ get truncated(): boolean;
2997
+ get visibleText(): string;
2998
+ get lines(): number;
2999
+ toggleExpanded(): void;
3000
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextExpandableComponent, never>;
3001
+ 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>;
3002
+ }
3003
+
3004
+ /**
3005
+ * Select genérico para editar un campo (típicamente "estado") directamente
3006
+ * en una celda de tabla, sin guardar de inmediato (QTN-49).
3007
+ *
3008
+ * Este componente es deliberadamente "tonto": no sabe a qué recurso
3009
+ * pertenece la fila ni cómo guardarla — solo muestra `options`, refleja
3010
+ * `value`, y emite `valueChange` cuando el usuario elige otra opción.
3011
+ * El componente que lo envuelve (p. ej. gift-bond-table-status en
3012
+ * tickera-backoffice-frontend) es quien conoce el id de la fila y decide
3013
+ * si guarda de inmediato o acumula el cambio en un
3014
+ * PendingChangesService + bulk-save-bar para guardado masivo.
3015
+ */
3016
+ declare class QuickStatusEditComponent {
3017
+ options: SelectOption[];
3018
+ value: any;
3019
+ /** Resalta visualmente la celda como "modificada, sin guardar". */
3020
+ dirty: boolean;
3021
+ disabled: boolean;
3022
+ valueChange: EventEmitter<any>;
3023
+ onChange(newValue: any): void;
3024
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuickStatusEditComponent, never>;
3025
+ 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>;
3026
+ }
3027
+
3028
+ /**
3029
+ * Barra flotante "Guardar cambios" para guardado masivo (QTN-49).
3030
+ *
3031
+ * No conoce el recurso concreto ni cómo persistir los cambios — el
3032
+ * componente que la usa le pasa `[count]` (típicamente
3033
+ * `pendingChangesService.changeCount()`) y escucha `(save)`/`(discard)`
3034
+ * para llamar al endpoint bulk correspondiente.
3035
+ */
3036
+ declare class BulkSaveBarComponent {
3037
+ count: number;
3038
+ loading: boolean;
3039
+ saveLabel: string;
3040
+ discardLabel: string;
3041
+ save: EventEmitter<void>;
3042
+ discard: EventEmitter<void>;
3043
+ static ɵfac: i0.ɵɵFactoryDeclaration<BulkSaveBarComponent, never>;
3044
+ 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>;
3045
+ }
3046
+
3047
+ declare class ShowCardComponent {
3048
+ show: Show;
3049
+ linkText: string;
3050
+ linkUrlFn?: (show: Show) => string;
3051
+ linkQueryParams?: Record<string, any>;
3052
+ transloco: TranslocoService;
3053
+ dateService: DateService;
3054
+ get showTypeColor(): {
3055
+ bg: string;
3056
+ text: string;
3057
+ };
3058
+ formatTimeDate(date: string): Date;
3059
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowCardComponent, never>;
3060
+ 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>;
3061
+ }
3062
+
3063
+ declare class ShowTypeBadgeComponent {
3064
+ show: Show;
3065
+ size: BadgeSize;
3066
+ transloco: TranslocoService;
3067
+ get showTypeColor(): {
3068
+ bg: string;
3069
+ text: string;
3070
+ };
3071
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowTypeBadgeComponent, never>;
3072
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowTypeBadgeComponent, "show-type-badge", never, { "show": { "alias": "show"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
3073
+ }
3074
+
3075
+ declare class ShowCardSkeletonComponent {
3076
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowCardSkeletonComponent, never>;
3077
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowCardSkeletonComponent, "show-card-skeleton", never, {}, {}, never, never, true, never>;
3078
+ }
3079
+
3080
+ declare class AppBreadcumbComponent {
3081
+ homeUrl: string | undefined;
3082
+ steps: BreadcrumbStep[];
3083
+ theme: BreadcrumbTheme;
3084
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppBreadcumbComponent, never>;
3085
+ 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>;
1497
3086
  }
1498
3087
 
1499
3088
  declare class LanguageSwitcherComponent {
@@ -1516,12 +3105,14 @@ declare class FormInputComponent implements ControlValueAccessor {
1516
3105
  placeholder: string;
1517
3106
  required: boolean;
1518
3107
  readonly: boolean;
3108
+ maxlength: number | null;
1519
3109
  minlength: number | null;
3110
+ max: number | null;
1520
3111
  min: number | null;
1521
3112
  step: number | null;
1522
3113
  pattern: string | null;
1523
3114
  fieldGroupClass: string;
1524
- autocomplete: boolean;
3115
+ autocomplete: string;
1525
3116
  value: any;
1526
3117
  disabled: boolean;
1527
3118
  onChange: any;
@@ -1538,12 +3129,68 @@ declare class FormInputComponent implements ControlValueAccessor {
1538
3129
  get inputClasses(): string;
1539
3130
  get fieldGroupClasses(): string;
1540
3131
  static ɵfac: i0.ɵɵFactoryDeclaration<FormInputComponent, [{ optional: true; self: true; }, null]>;
1541
- 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>;
3132
+ 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>;
3133
+ }
3134
+
3135
+ type IdentityDocumentType = 'CC' | 'CE' | 'PA' | 'NIT' | 'TI' | 'RC';
3136
+ /**
3137
+ * Campo de documento de identidad (QTN-44).
3138
+ *
3139
+ * Componente compartido que, dado un `documentType` (CC, CE, PA, NIT, TI, RC),
3140
+ * aplica automáticamente el formato y las validaciones correspondientes a los
3141
+ * lineamientos de documentos de identidad de Colombia: solo dígitos y rango de
3142
+ * longitud para CC/TI/RC/NIT, alfanumérico con longitud máxima para CE/PA, y
3143
+ * validación opcional del dígito de verificación (DV) para NIT.
3144
+ *
3145
+ * Sigue el mismo patrón que `NumberInputComponent`: standalone,
3146
+ * `ControlValueAccessor` + `Validator` vía `NG_VALUE_ACCESSOR`/`NG_VALIDATORS`.
3147
+ */
3148
+ declare class IdentityDocumentInputComponent implements ControlValueAccessor, Validator, OnChanges {
3149
+ transloco: TranslocoService;
3150
+ private injector;
3151
+ private elementRef;
3152
+ label: string;
3153
+ name: string;
3154
+ id: string;
3155
+ placeholder: string;
3156
+ required: boolean;
3157
+ readonly: boolean;
3158
+ fieldGroupClass: string;
3159
+ documentType: IdentityDocumentType | '';
3160
+ validateCheckDigit: boolean;
3161
+ value: string | null;
3162
+ disabled: boolean;
3163
+ onChange: any;
3164
+ onTouched: any;
3165
+ private _ngControl;
3166
+ constructor(transloco: TranslocoService, injector: Injector, elementRef: ElementRef);
3167
+ get ngControl(): NgControl | null;
3168
+ ngOnChanges(changes: SimpleChanges): void;
3169
+ private get rule();
3170
+ get isDigitsOnly(): boolean;
3171
+ get inputMode(): string;
3172
+ get maxLength(): number | null;
3173
+ writeValue(value: any): void;
3174
+ registerOnChange(fn: any): void;
3175
+ registerOnTouched(fn: any): void;
3176
+ setDisabledState(isDisabled: boolean): void;
3177
+ onKeyDown(event: KeyboardEvent): void;
3178
+ onInput(rawValue: string): void;
3179
+ validate(control: AbstractControl): ValidationErrors | null;
3180
+ private validateLength;
3181
+ private validateNitWithCheckDigit;
3182
+ static computeNitCheckDigit(nit: string): number;
3183
+ get inputId(): string;
3184
+ get showError(): boolean;
3185
+ get errorMessage(): string;
3186
+ get fieldGroupClasses(): string;
3187
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdentityDocumentInputComponent, never>;
3188
+ 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>;
1542
3189
  }
1543
3190
 
1544
3191
  declare class FormSelectComponent implements ControlValueAccessor {
1545
3192
  ngControl: NgControl;
1546
- private transloco;
3193
+ protected transloco: TranslocoService;
1547
3194
  label: string;
1548
3195
  name: string;
1549
3196
  id: string;
@@ -1567,7 +3214,6 @@ declare class FormSelectComponent implements ControlValueAccessor {
1567
3214
  get inputId(): string;
1568
3215
  get showError(): boolean;
1569
3216
  get errorMessage(): string;
1570
- get resolvedDefaultOptionLabel(): string;
1571
3217
  get fieldGroupClasses(): string;
1572
3218
  static ɵfac: i0.ɵɵFactoryDeclaration<FormSelectComponent, [{ optional: true; self: true; }, null]>;
1573
3219
  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>;
@@ -1605,6 +3251,105 @@ declare class FormTextareaComponent implements ControlValueAccessor {
1605
3251
  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>;
1606
3252
  }
1607
3253
 
3254
+ declare class NumberInputComponent implements ControlValueAccessor, Validator, OnChanges {
3255
+ transloco: TranslocoService;
3256
+ private injector;
3257
+ private elementRef;
3258
+ label: string;
3259
+ name: string;
3260
+ id: string;
3261
+ placeholder: string;
3262
+ required: boolean;
3263
+ readonly: boolean;
3264
+ min: number | null;
3265
+ max: number | null;
3266
+ step: number;
3267
+ fieldGroupClass: string;
3268
+ value: number | null;
3269
+ disabled: boolean;
3270
+ onChange: any;
3271
+ onTouched: any;
3272
+ private _ngControl;
3273
+ constructor(transloco: TranslocoService, injector: Injector, elementRef: ElementRef);
3274
+ get ngControl(): NgControl | null;
3275
+ ngOnChanges(changes: SimpleChanges): void;
3276
+ validate(control: AbstractControl): ValidationErrors | null;
3277
+ writeValue(value: any): void;
3278
+ registerOnChange(fn: any): void;
3279
+ registerOnTouched(fn: any): void;
3280
+ setDisabledState(isDisabled: boolean): void;
3281
+ onInput(value: any): void;
3282
+ increment(): void;
3283
+ decrement(): void;
3284
+ get canIncrement(): boolean;
3285
+ get canDecrement(): boolean;
3286
+ get inputId(): string;
3287
+ get showError(): boolean;
3288
+ get errorMessage(): string;
3289
+ get fieldGroupClasses(): string;
3290
+ private clamp;
3291
+ private round;
3292
+ private emitNativeChange;
3293
+ private minValidator;
3294
+ private maxValidator;
3295
+ static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputComponent, never>;
3296
+ 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>;
3297
+ }
3298
+
3299
+ declare class PhoneInputComponent implements ControlValueAccessor, Validator, OnChanges {
3300
+ private transloco;
3301
+ private injector;
3302
+ label: string;
3303
+ name: string;
3304
+ id: string;
3305
+ placeholder: string;
3306
+ required: boolean;
3307
+ readonly: boolean;
3308
+ maxNationalDigits: number | null;
3309
+ minNationalDigits: number | null;
3310
+ defaultCountry: string;
3311
+ fieldGroupClass: string;
3312
+ readonly countries: tickera_angular_components.PhoneCountry[];
3313
+ readonly phoneOptions: {
3314
+ search: string;
3315
+ name: string;
3316
+ isoCode: string;
3317
+ dialCode: string;
3318
+ }[];
3319
+ selectedIso: string;
3320
+ nationalNumber: string;
3321
+ disabled: boolean;
3322
+ onChange: any;
3323
+ onTouched: any;
3324
+ onValidatorChange: () => void;
3325
+ private _ngControl;
3326
+ constructor(transloco: TranslocoService, injector: Injector);
3327
+ get ngControl(): NgControl | null;
3328
+ get selectedCountry(): tickera_angular_components.PhoneCountry;
3329
+ get dialCode(): string;
3330
+ dialCodeOf(isoCode: string): string;
3331
+ get value(): string;
3332
+ ngOnChanges(changes: SimpleChanges): void;
3333
+ registerOnValidatorChange(fn: () => void): void;
3334
+ validate(control: AbstractControl): ValidationErrors | null;
3335
+ writeValue(value: string | null | undefined): void;
3336
+ registerOnChange(fn: any): void;
3337
+ registerOnTouched(fn: any): void;
3338
+ setDisabledState(isDisabled: boolean): void;
3339
+ onInput(event: Event): void;
3340
+ onCountryChange(isoCode: string): void;
3341
+ get inputId(): string;
3342
+ get showError(): boolean;
3343
+ get errorMessage(): string;
3344
+ get effectivePlaceholder(): string;
3345
+ get fieldGroupClasses(): string;
3346
+ flag(isoCode: string): string;
3347
+ private sanitize;
3348
+ private nationalDigits;
3349
+ static ɵfac: i0.ɵɵFactoryDeclaration<PhoneInputComponent, never>;
3350
+ 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>;
3351
+ }
3352
+
1608
3353
  declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {
1609
3354
  ngControl: NgControl;
1610
3355
  private transloco;
@@ -1622,7 +3367,8 @@ declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDes
1622
3367
  onChange: any;
1623
3368
  onTouched: any;
1624
3369
  private subscription;
1625
- constructor(ngControl: NgControl, transloco: TranslocoService);
3370
+ isBrowser: boolean;
3371
+ constructor(ngControl: NgControl, transloco: TranslocoService, platformId: object);
1626
3372
  ngOnInit(): void;
1627
3373
  ngOnDestroy(): void;
1628
3374
  writeValue(value: any): void;
@@ -1633,7 +3379,7 @@ declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDes
1633
3379
  get showError(): boolean;
1634
3380
  get errorMessage(): string;
1635
3381
  get fieldGroupClasses(): string;
1636
- static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, [{ optional: true; self: true; }, null]>;
3382
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, [{ optional: true; self: true; }, null, null]>;
1637
3383
  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>;
1638
3384
  }
1639
3385
 
@@ -2284,6 +4030,28 @@ declare class PriceZoneSelectComponent implements OnInit, OnDestroy, ControlValu
2284
4030
  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>;
2285
4031
  }
2286
4032
 
4033
+ declare class PerformanceTicketStatusBadgeComponent {
4034
+ ticket: PerformanceTicket;
4035
+ size: BadgeSize;
4036
+ protected get statusColors(): {
4037
+ text: string;
4038
+ bg: string;
4039
+ };
4040
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceTicketStatusBadgeComponent, never>;
4041
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceTicketStatusBadgeComponent, "performance-ticket-status-badge", never, { "ticket": { "alias": "ticket"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4042
+ }
4043
+
4044
+ declare class PerformanceStatusBadgeComponent {
4045
+ performance: Performance;
4046
+ size: BadgeSize;
4047
+ protected get statusColors(): {
4048
+ text: string;
4049
+ bg: string;
4050
+ };
4051
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceStatusBadgeComponent, never>;
4052
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceStatusBadgeComponent, "performance-status-badge", never, { "performance": { "alias": "performance"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4053
+ }
4054
+
2287
4055
  declare class DaySelectorGridComponent {
2288
4056
  private platformId;
2289
4057
  protected performanceService: PerformanceService;
@@ -2305,11 +4073,15 @@ declare class DaySelectorGridComponent {
2305
4073
  declare class PerformanceCardComponent {
2306
4074
  protected listEventService: PerformancesListEventsService;
2307
4075
  card: DailyPerformanceItem;
4076
+ linkText: string;
4077
+ linkUrlFn?: (card: DailyPerformanceItem) => string;
4078
+ linkQueryParams?: Record<string, any>;
2308
4079
  constructor(listEventService: PerformancesListEventsService);
4080
+ get badgeColor(): 'success' | 'error';
2309
4081
  onSelect(): void;
2310
4082
  isSelected(): boolean;
2311
4083
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceCardComponent, never>;
2312
- static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardComponent, "performance-card", never, { "card": { "alias": "card"; "required": true; }; }, {}, never, never, true, never>;
4084
+ 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>;
2313
4085
  }
2314
4086
 
2315
4087
  declare class PerformanceCardListComponent {
@@ -2317,6 +4089,9 @@ declare class PerformanceCardListComponent {
2317
4089
  protected performanceService: PerformanceService;
2318
4090
  protected listEventService: PerformancesListEventsService;
2319
4091
  protected toastService: ToastService;
4092
+ linkText: string;
4093
+ linkUrlFn?: (card: DailyPerformanceItem) => string;
4094
+ linkQueryParams?: Record<string, any>;
2320
4095
  loadingData: WritableSignal<boolean>;
2321
4096
  performances: WritableSignal<DailyPerformanceItem[]>;
2322
4097
  constructor(platformId: object, performanceService: PerformanceService, listEventService: PerformancesListEventsService, toastService: ToastService);
@@ -2324,7 +4099,7 @@ declare class PerformanceCardListComponent {
2324
4099
  private loadData;
2325
4100
  get selectedDayDate(): string | null;
2326
4101
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceCardListComponent, never>;
2327
- static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardListComponent, "performance-card-list", never, {}, {}, never, never, true, never>;
4102
+ 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>;
2328
4103
  }
2329
4104
 
2330
4105
  declare class PerformanceStepperComponent {
@@ -2353,9 +4128,9 @@ declare class ShowsFilterComponent {
2353
4128
  }
2354
4129
 
2355
4130
  interface PriceZoneItem {
2356
- colorClass: string;
4131
+ color: string;
2357
4132
  name: string;
2358
- seatsAvailable: number;
4133
+ available_seats: number;
2359
4134
  price: string;
2360
4135
  }
2361
4136
 
@@ -2371,5 +4146,439 @@ declare class ZonePriceListComponent {
2371
4146
  static ɵcmp: i0.ɵɵComponentDeclaration<ZonePriceListComponent, "zone-price-list", never, { "zones": { "alias": "zones"; "required": true; }; }, {}, never, never, true, never>;
2372
4147
  }
2373
4148
 
2374
- export { ADMIN_API_ROUTES, ALERT_ICONS, 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, CouponStatus, CustomerSelectComponent, CustomerService, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, GiftBondStatus, 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, TickeraTranslocoLoader, ToastService, ToggleSwitchComponent, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, formatCitiesResponseToSelect, getBrowserLanguage, getCustomerFullname, getStoredLanguage, parseJsonToFormDataAdvanced, provideTickeraComponents, resolveLanguage, setStoredLanguage, transformImageToFile };
2375
- 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, GiftBond, GiftBondResponse, GiftBondsResponse, 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, ValidateGiftBondResponse, Venue, VenueImage };
4149
+ declare class TicketMapWidgetComponent {
4150
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWidgetComponent, never>;
4151
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWidgetComponent, "ticket-map-widget", never, {}, {}, never, ["*"], true, never>;
4152
+ }
4153
+
4154
+ declare class TicketMapWidgetHeaderComponent {
4155
+ title: string;
4156
+ subtitle: string;
4157
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWidgetHeaderComponent, never>;
4158
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWidgetHeaderComponent, "ticket-map-widget-header", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; }, {}, never, ["*"], true, never>;
4159
+ }
4160
+
4161
+ declare class TicketMapZoomControlsComponent {
4162
+ private zoomService;
4163
+ readonly currentZoom: i0.Signal<number>;
4164
+ readonly zoomPercentage: i0.Signal<string>;
4165
+ constructor(zoomService: TicketMapZoomService);
4166
+ zoomIn(): void;
4167
+ zoomOut(): void;
4168
+ resetZoom(): void;
4169
+ fitToContainer(): void;
4170
+ handleZoomAction(action: string): void;
4171
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapZoomControlsComponent, never>;
4172
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapZoomControlsComponent, "ticket-map-zoom-controls", never, {}, {}, never, never, true, never>;
4173
+ }
4174
+
4175
+ declare class TicketMapFloorSelectorComponent {
4176
+ private bookingDataService;
4177
+ readonly availableFloors: i0.Signal<tickera_angular_components.HallFloor[]>;
4178
+ readonly visibleFloorIds: i0.Signal<Set<number>>;
4179
+ readonly hasMultipleVisible: i0.Signal<boolean>;
4180
+ constructor(bookingDataService: PerformanceBookingDataService);
4181
+ isFloorVisible(floorId: number): boolean;
4182
+ canToggleOff(floorId: number): boolean;
4183
+ toggleFloor(floorId: number): void;
4184
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapFloorSelectorComponent, never>;
4185
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapFloorSelectorComponent, "ticket-map-floor-selector", never, {}, {}, never, never, true, never>;
4186
+ }
4187
+
4188
+ declare class PerformanceTicketMapComponent implements OnDestroy, AfterViewInit {
4189
+ private platformId;
4190
+ protected bookingDataService: PerformanceBookingDataService;
4191
+ protected feedbackModalService: FeedbackModalService;
4192
+ protected selectionService: TicketSelectionService;
4193
+ protected zoomService: TicketMapZoomService;
4194
+ selectionChange: EventEmitter<PerformanceTicket[]>;
4195
+ needsLoginError: EventEmitter<any>;
4196
+ readOnly: boolean;
4197
+ needsLogin: boolean;
4198
+ isLoggedIn: boolean;
4199
+ stageComponent?: StageComponent;
4200
+ protected tooltipData: i0.WritableSignal<TicketMapTooltipData | null>;
4201
+ protected renderData: i0.Signal<ElementRenderData[]>;
4202
+ private stageReady;
4203
+ private autoFitDone;
4204
+ private resizeObserver?;
4205
+ constructor(platformId: object, bookingDataService: PerformanceBookingDataService, feedbackModalService: FeedbackModalService, selectionService: TicketSelectionService, zoomService: TicketMapZoomService);
4206
+ protected get isBrowser(): boolean;
4207
+ ngAfterViewInit(): void;
4208
+ private setupResizeObserver;
4209
+ private syncStageToContainer;
4210
+ ngOnDestroy(): void;
4211
+ private getInternalPointer;
4212
+ protected selectHallFloor(floorId: number): void;
4213
+ protected handleStageClick(konvaEvent: any): void;
4214
+ protected handleStageMouseMove(konvaEvent: any): void;
4215
+ protected handleStageMouseLeave(): void;
4216
+ protected handleWheel(konvaEvent: any): void;
4217
+ protected trackByElementId(_index: number, item: ElementRenderData): number;
4218
+ protected trackByFloorId(_index: number, floor: HallFloorOption): HallFloorOption;
4219
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceTicketMapComponent, never>;
4220
+ 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>;
4221
+ }
4222
+
4223
+ declare class TicketMapPriceZonesComponent {
4224
+ title: string;
4225
+ protected bookingDataService: PerformanceBookingDataService;
4226
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapPriceZonesComponent, never>;
4227
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapPriceZonesComponent, "ticket-map-price-zones", never, { "title": { "alias": "title"; "required": false; }; }, {}, never, never, true, never>;
4228
+ }
4229
+
4230
+ declare class TicketMapProductSelectionItemComponent {
4231
+ protected selectionService: TicketSelectionService;
4232
+ product: Product;
4233
+ constructor(selectionService: TicketSelectionService);
4234
+ get quantity(): number;
4235
+ get firstImage(): string | undefined;
4236
+ increment(): void;
4237
+ decrement(): void;
4238
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapProductSelectionItemComponent, never>;
4239
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapProductSelectionItemComponent, "ticket-map-product-selection-item", never, { "product": { "alias": "product"; "required": true; }; }, {}, never, never, true, never>;
4240
+ }
4241
+
4242
+ declare class TIcketMapProductSelectionComponent {
4243
+ title: string;
4244
+ subtitle: string;
4245
+ private bookingDataService;
4246
+ readonly products: i0.Signal<tickera_angular_components.Product[]>;
4247
+ static ɵfac: i0.ɵɵFactoryDeclaration<TIcketMapProductSelectionComponent, never>;
4248
+ static ɵcmp: i0.ɵɵComponentDeclaration<TIcketMapProductSelectionComponent, "ticket-map-product-selection", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; }, {}, never, never, true, never>;
4249
+ }
4250
+
4251
+ declare class TicketMapTotalsComponent {
4252
+ protected bookingDataService: PerformanceBookingDataService;
4253
+ protected selectionDetailsService: TicketSelectionDetailsService;
4254
+ protected selectionDiscountService: TicketSelectionDiscountService;
4255
+ protected selectionTotalsService: TicketSelectionTotalsService;
4256
+ protected selectionService: TicketSelectionService;
4257
+ private activatedRoute;
4258
+ title: string;
4259
+ buttonText: string;
4260
+ loadingButtonText: string;
4261
+ isLoading: boolean;
4262
+ onPurchaseClick: EventEmitter<void>;
4263
+ constructor(bookingDataService: PerformanceBookingDataService, selectionDetailsService: TicketSelectionDetailsService, selectionDiscountService: TicketSelectionDiscountService, selectionTotalsService: TicketSelectionTotalsService, selectionService: TicketSelectionService, activatedRoute: ActivatedRoute);
4264
+ get serviceFee(): number;
4265
+ get performanceId(): number;
4266
+ get selectedTicketIds(): number[];
4267
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapTotalsComponent, never>;
4268
+ 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>;
4269
+ }
4270
+
4271
+ declare class TicketMapWrapperComponent {
4272
+ selectionChange: EventEmitter<PerformanceTicket[]>;
4273
+ needsLoginError: EventEmitter<any>;
4274
+ readOnly: boolean;
4275
+ needsLogin: boolean;
4276
+ isLoggedIn: boolean;
4277
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWrapperComponent, never>;
4278
+ 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>;
4279
+ }
4280
+
4281
+ declare class SeatSelectionEmptySummaryComponent {
4282
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionEmptySummaryComponent, never>;
4283
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionEmptySummaryComponent, "seat-selection-empty-summary", never, {}, {}, never, never, true, never>;
4284
+ }
4285
+
4286
+ declare class SeatSelectionSummaryComponent {
4287
+ protected selectionService: TicketSelectionService;
4288
+ title: string;
4289
+ clearButtonText: string;
4290
+ constructor(selectionService: TicketSelectionService);
4291
+ trackByItem(item: PerformanceTicket): string | number;
4292
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionSummaryComponent, never>;
4293
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionSummaryComponent, "seat-selection-summary", never, { "title": { "alias": "title"; "required": false; }; "clearButtonText": { "alias": "clearButtonText"; "required": false; }; }, {}, never, never, true, never>;
4294
+ }
4295
+
4296
+ declare class SeatSelectionSummaryItemComponent {
4297
+ protected selectionService: TicketSelectionService;
4298
+ item: PerformanceTicket;
4299
+ constructor(selectionService: TicketSelectionService);
4300
+ getItemTypeIcon: (ticket: PerformanceTicket) => string;
4301
+ get isZone(): boolean;
4302
+ get zoneMax(): number;
4303
+ onZoneQuantityChange(value: number | null): void;
4304
+ removeItem(ticket: PerformanceTicket): void;
4305
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionSummaryItemComponent, never>;
4306
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionSummaryItemComponent, "seat-selection-summary-item", never, { "item": { "alias": "item"; "required": true; }; }, {}, never, never, true, never>;
4307
+ }
4308
+
4309
+ declare class ConfirmationOrderModalComponent {
4310
+ private confirmationOrderModalService;
4311
+ private selectionDiscountService;
4312
+ private selectionTotalsService;
4313
+ private selectionService;
4314
+ private bookingDataService;
4315
+ modalTitle: string;
4316
+ confirmButtonText: string;
4317
+ confirmButtonTextLoading: string;
4318
+ loading: boolean;
4319
+ onConfirm: EventEmitter<any>;
4320
+ constructor(confirmationOrderModalService: ConfirmationOrderModalService, selectionDiscountService: TicketSelectionDiscountService, selectionTotalsService: TicketSelectionTotalsService, selectionService: TicketSelectionService, bookingDataService: PerformanceBookingDataService);
4321
+ get isOpen(): i0.WritableSignal<boolean>;
4322
+ get showTitle(): string | null;
4323
+ get performanceStartTime(): Date | string | null;
4324
+ get hallName(): string | null;
4325
+ get venueName(): string | null;
4326
+ get ticketItems(): PerformanceTicket[];
4327
+ get selectedProducts(): {
4328
+ product: Product;
4329
+ quantity: number;
4330
+ }[];
4331
+ ticketItemLabel(ticket: PerformanceTicket): string;
4332
+ ticketItemPrice(ticket: PerformanceTicket): number;
4333
+ private elementTypeLabel;
4334
+ get selectedCount(): number;
4335
+ get serviceFee(): number;
4336
+ get subtotalValue(): number;
4337
+ get ticketSubtotal(): number;
4338
+ get productSubtotal(): number;
4339
+ get productCount(): number;
4340
+ get totalValue(): number;
4341
+ get totalDiscounted(): number | null;
4342
+ get coupon(): tickera_angular_components.Coupon | null;
4343
+ get corporateBond(): tickera_angular_components.CorporateBond | null;
4344
+ get giftBond(): tickera_angular_components.GiftBondPurchase | null;
4345
+ get vipCard(): tickera_angular_components.VipCard | null;
4346
+ /**
4347
+ * A diferencia de coupon/corporateBond/giftBond (que aquí muestran su
4348
+ * valor crudo sin pasar por `discountAmount()`), para VIP sí se calcula
4349
+ * el monto real en pesos, ya que el descuento es un porcentaje.
4350
+ */
4351
+ get vipDiscountAmount(): number;
4352
+ onClose(): void;
4353
+ confirmOrder(): void;
4354
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationOrderModalComponent, never>;
4355
+ 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>;
4356
+ }
4357
+
4358
+ declare class OrderInformationComponent {
4359
+ readonly transloco: TranslocoService;
4360
+ private readonly toastService;
4361
+ order: Order;
4362
+ showPayButton: boolean;
4363
+ createMpPreference?: (order: Order) => Observable<MercadoPagoPreference>;
4364
+ paymentLinkCreated: EventEmitter<MercadoPagoPreference>;
4365
+ isLoading: boolean;
4366
+ constructor(transloco: TranslocoService, toastService: ToastService);
4367
+ get showMpButton(): boolean;
4368
+ payWithMercadoPago(): void;
4369
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderInformationComponent, never>;
4370
+ 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>;
4371
+ }
4372
+
4373
+ declare class OrderStatusBadgeComponent {
4374
+ protected transloco: TranslocoService;
4375
+ order: Order | RecentOrder;
4376
+ size: BadgeSize;
4377
+ constructor(transloco: TranslocoService);
4378
+ protected get statusColors(): {
4379
+ text: string;
4380
+ bg: string;
4381
+ };
4382
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderStatusBadgeComponent, never>;
4383
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderStatusBadgeComponent, "order-status-badge", never, { "order": { "alias": "order"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4384
+ }
4385
+
4386
+ declare class OrderItemTypeBadgeComponent {
4387
+ protected transloco: TranslocoService;
4388
+ item: OrderItem;
4389
+ size: BadgeSize;
4390
+ constructor(transloco: TranslocoService);
4391
+ protected get statusColors(): {
4392
+ text: string;
4393
+ bg: string;
4394
+ };
4395
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderItemTypeBadgeComponent, never>;
4396
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderItemTypeBadgeComponent, "order-item-type-badge", never, { "item": { "alias": "item"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4397
+ }
4398
+
4399
+ declare class OrderItemsComponent {
4400
+ private ticketQrModalService;
4401
+ order: Order;
4402
+ isCustomer: boolean;
4403
+ ticketCanOpenQr: (order: Order, ticket: tickera_angular_components.PerformanceTicket) => boolean;
4404
+ constructor(ticketQrModalService: TicketQrModalService);
4405
+ protected get orderItems(): Order['order_items'];
4406
+ protected get products(): Order['order_items'];
4407
+ protected get tickets(): Order['order_items'];
4408
+ protected get giftBonds(): Order['order_items'];
4409
+ protected get corporateBonds(): Order['order_items'];
4410
+ protected get vipRecharges(): Order['order_items'];
4411
+ protected get showActionColumn(): boolean;
4412
+ protected itemTotal(quantity: number, price: number): number;
4413
+ protected hasDiscount(): boolean;
4414
+ protected get totals(): {
4415
+ giftBonds: number;
4416
+ corporateBonds: number;
4417
+ products: number;
4418
+ tickets: number;
4419
+ vipRecharges: number;
4420
+ };
4421
+ openTicketQr(ticketUuid: string, description: string): void;
4422
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderItemsComponent, never>;
4423
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderItemsComponent, "order-items", never, { "order": { "alias": "order"; "required": true; }; "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4424
+ }
4425
+
4426
+ declare class OrderDiscountAppliedComponent {
4427
+ order: Order;
4428
+ protected get discountInfo(): OrderDiscountInfo;
4429
+ protected get hasDiscount(): boolean;
4430
+ protected get discountPercentage(): number | null;
4431
+ protected get badgeColors(): {
4432
+ text: string;
4433
+ bg: string;
4434
+ };
4435
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderDiscountAppliedComponent, never>;
4436
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderDiscountAppliedComponent, "order-discount-applied", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4437
+ }
4438
+
4439
+ interface BillingField {
4440
+ label: string;
4441
+ value: string | number | null;
4442
+ }
4443
+ declare class OrderBillingInfoComponent {
4444
+ order: Order;
4445
+ protected get fields(): BillingField[];
4446
+ protected get hasFields(): boolean;
4447
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderBillingInfoComponent, never>;
4448
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderBillingInfoComponent, "order-billing-info", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4449
+ }
4450
+
4451
+ declare class OrderTransactionsComponent {
4452
+ private transactionDetailsModalService;
4453
+ order: Order;
4454
+ constructor(transactionDetailsModalService: OrderTransactionDetailsModalService);
4455
+ protected get transactions(): Transaction[];
4456
+ protected get hasTransactions(): boolean;
4457
+ protected get txColors(): Record<string, {
4458
+ text: string;
4459
+ bg: string;
4460
+ }>;
4461
+ protected openTransaction(transaction: Transaction): void;
4462
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionsComponent, never>;
4463
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderTransactionsComponent, "order-transactions", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4464
+ }
4465
+
4466
+ declare class OrderTransactionDetailsModalComponent {
4467
+ private modalService;
4468
+ isOpen: WritableSignal<boolean> | null;
4469
+ transaction: Transaction | null;
4470
+ get modalIsOpen(): WritableSignal<boolean>;
4471
+ get selectedTransaction(): WritableSignal<Transaction | null>;
4472
+ protected get txColors(): Record<TransactionStatus, {
4473
+ text: string;
4474
+ bg: string;
4475
+ }>;
4476
+ protected get gatewayResponse(): string;
4477
+ onClose(): void;
4478
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionDetailsModalComponent, never>;
4479
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderTransactionDetailsModalComponent, "order-transaction-details-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "transaction": { "alias": "transaction"; "required": false; }; }, {}, never, never, true, never>;
4480
+ }
4481
+
4482
+ declare class TicketQrComponent implements OnInit, OnDestroy {
4483
+ private ticketQrService;
4484
+ private platformId;
4485
+ ticketUuid: string;
4486
+ isCustomer: boolean;
4487
+ qrCanvas: ElementRef<HTMLCanvasElement>;
4488
+ loading: i0.WritableSignal<boolean>;
4489
+ error: i0.WritableSignal<boolean>;
4490
+ refreshing: i0.WritableSignal<boolean>;
4491
+ countdown: i0.WritableSignal<number>;
4492
+ downloading: i0.WritableSignal<boolean>;
4493
+ private destroy$;
4494
+ private refreshTimeout;
4495
+ private countdownInterval;
4496
+ private isFetching;
4497
+ constructor(ticketQrService: TicketQrService, platformId: Object);
4498
+ ngOnInit(): void;
4499
+ ngOnDestroy(): void;
4500
+ private onVisibilityChange;
4501
+ private onFocus;
4502
+ private refreshFromReenter;
4503
+ retry(): void;
4504
+ downloadPdf(): void;
4505
+ private clearTimers;
4506
+ private fetchAndRender;
4507
+ private scheduleRefresh;
4508
+ private startCountdown;
4509
+ private renderQr;
4510
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrComponent, never>;
4511
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketQrComponent, "performance-ticket-qr", never, { "ticketUuid": { "alias": "ticketUuid"; "required": true; }; "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4512
+ }
4513
+
4514
+ declare class TicketQrModalComponent {
4515
+ private ticketQrModalService;
4516
+ isCustomer: boolean;
4517
+ constructor(ticketQrModalService: TicketQrModalService);
4518
+ get isOpen(): i0.WritableSignal<boolean>;
4519
+ get ticketUuid(): i0.WritableSignal<string | null>;
4520
+ get ticketDescription(): i0.WritableSignal<string | null>;
4521
+ onClose(): void;
4522
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrModalComponent, never>;
4523
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketQrModalComponent, "ticket-qr-modal", never, { "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4524
+ }
4525
+
4526
+ declare class VipBalanceCardComponent {
4527
+ card: VipCard | null;
4528
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipBalanceCardComponent, never>;
4529
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipBalanceCardComponent, "vip-balance-card", never, { "card": { "alias": "card"; "required": false; }; }, {}, never, never, true, never>;
4530
+ }
4531
+
4532
+ declare class VipCardStatusBadgeComponent {
4533
+ protected readonly tranloco: TranslocoService;
4534
+ card: VipCard;
4535
+ get statusColor(): BadgeColor;
4536
+ get statusTranslationKey(): string;
4537
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipCardStatusBadgeComponent, never>;
4538
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipCardStatusBadgeComponent, "vip-card-status-badge", never, { "card": { "alias": "card"; "required": true; }; }, {}, never, never, true, never>;
4539
+ }
4540
+
4541
+ declare class VipRechargeModalComponent implements OnChanges {
4542
+ private fb;
4543
+ protected transloco: TranslocoService;
4544
+ title: string;
4545
+ submitLabel: string;
4546
+ loading: boolean;
4547
+ amountStep: number;
4548
+ minAmount: number;
4549
+ maxAmount: number;
4550
+ isOpen: WritableSignal<boolean>;
4551
+ /**
4552
+ * Cuando es true (uso desde el ecommerce/cliente), el método de pago queda
4553
+ * fijo en Mercado Pago y no se muestra el selector: desde el lado del
4554
+ * cliente no se pueden elegir métodos de pago administrativos (efectivo,
4555
+ * datáfono, nómina, cambios internos, etc.), esos son exclusivos del
4556
+ * backoffice.
4557
+ */
4558
+ restrictToMercadoPago: boolean;
4559
+ closeModal: EventEmitter<void>;
4560
+ confirm: EventEmitter<VipRechargeConfirmPayload>;
4561
+ rechargeForm: FormGroup;
4562
+ paymentMethodOptions: {
4563
+ label: string;
4564
+ value: string;
4565
+ }[];
4566
+ constructor(fb: FormBuilder, transloco: TranslocoService);
4567
+ ngOnChanges(changes: SimpleChanges): void;
4568
+ private applyPaymentMethodRestriction;
4569
+ onClose(): void;
4570
+ onSubmit(): void;
4571
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipRechargeModalComponent, never>;
4572
+ 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>;
4573
+ }
4574
+
4575
+ declare class VipTransactionsTableComponent {
4576
+ transactions: VipTransaction[];
4577
+ loading: boolean;
4578
+ typeLabel(type: VipTransactionType): string;
4579
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipTransactionsTableComponent, never>;
4580
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipTransactionsTableComponent, "vip-transactions-table", never, { "transactions": { "alias": "transactions"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, {}, never, never, true, never>;
4581
+ }
4582
+
4583
+ export { ADMIN_API_ROUTES, ADMISSION_API_ROUTES, ALERT_ICONS, 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, PurchaseLimitService, QuickStatusEditComponent, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatAvailabilitySseService, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, ShowTypeBadgeComponent, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TICKET_ELEMENT_TYPES, 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, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter, parseJsonToFormDataAdvanced, phoneCountryFlag, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, ticketCanOpenQr, tintColor, transformImageToFile, transformUrlParams };
4584
+ 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, 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, ShowsResponseInterface, 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 };