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

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, CoreShapeComponent } 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,293 @@ 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
+ declare const TICKET_MAP_FLOOR_HOVER_OPACITY = 0.25;
1908
+ declare const TICKET_MAP_FLOOR_HOVER_FADE_MS = 150;
1909
+
1910
+ interface KonvaShapeConfig {
1911
+ config: ShapeConfig;
1912
+ layer: 'background' | 'elements' | 'foreground' | 'overlay';
1104
1913
  }
1105
1914
 
1915
+ declare function drawRoundedRect(con: Context, shape: Shape, x: number, y: number, width: number, height: number, cornerRadius: number): void;
1916
+
1917
+ declare const generateExitScene: (con: Context, shape: Shape) => void;
1918
+
1919
+ declare const generateHallwayScene: (con: Context, shape: Shape) => void;
1920
+
1921
+ declare const generateProductionAreaScene: (con: Context, shape: Shape) => void;
1922
+
1923
+ declare const generateSeatBlockScene: (con: Context, shape: Shape, numerationConfig?: {
1924
+ start_row_letter: string;
1925
+ row_order: "TOP_TO_BOTTOM" | "BOTTOM_TO_TOP";
1926
+ start_column_number: number;
1927
+ column_order: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT";
1928
+ }) => void;
1929
+
1930
+ declare const generateStageScene: (con: Context, shape: Shape) => void;
1931
+
1932
+ declare const generateStairScene: (con: Context, shape: Shape) => void;
1933
+
1934
+ declare const generateTableScene: (con: Context, shape: Shape) => void;
1935
+
1936
+ declare const generateUnavailableSpaceScene: (con: Context, shape: Shape) => void;
1937
+
1938
+ declare const generateZoneScene: (con: Context, shape: Shape) => void;
1939
+
1940
+ declare const KONVA_SHAPE_MAPPINGS: Record<RoomMapElementType, KonvaShapeConfig>;
1941
+
1942
+ declare const SHOW_TYPE_COLORS: Record<ShowType, {
1943
+ bg: string;
1944
+ text: string;
1945
+ }>;
1946
+
1106
1947
  declare const getCustomerFullname: (customer: Customer) => string;
1107
1948
 
1949
+ type OrderDiscountType = 'coupon' | 'corporate_bond' | 'gift_bond';
1950
+ interface OrderDiscountInfo {
1951
+ type: OrderDiscountType | null;
1952
+ code: string | null;
1953
+ name: string | null;
1954
+ value: number;
1955
+ discountType: 'percentage' | 'fixed' | null;
1956
+ icon: string;
1957
+ }
1958
+ declare function getOrderDiscount(order: Order): OrderDiscountInfo;
1959
+
1108
1960
  declare function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData;
1109
1961
 
1110
1962
  declare const transformImageToFile: (image: ShowImage | VenueImage) => UploadedFile;
1111
1963
 
1964
+ declare const transformUrlParams: (params: any) => URLSearchParams;
1965
+
1112
1966
  declare const formatCitiesResponseToSelect: (res: CitiesResponse) => {
1113
- value: string;
1967
+ value: number;
1114
1968
  label: string;
1115
1969
  }[];
1116
1970
 
1971
+ declare function tintColor(hex: string, amount?: number): string;
1972
+
1973
+ declare const drawChairIcon: (con: Context, cx: number, cy: number, size: number) => void;
1974
+
1975
+ declare const drawHappyFace: (con: Context, cx: number, cy: number, size: number) => void;
1976
+
1977
+ declare const drawWheelchairIcon: (con: Context, shape: Shape, cx: number, cy: number, size: number, fillColor?: string, strokeColor?: string) => void;
1978
+
1979
+ declare const numberToLetter: (num: number) => string;
1980
+
1981
+ declare const getItemTypeIcon: (ticket: PerformanceTicket) => string;
1982
+
1983
+ declare const generateSeatBlockTicketScene: (con: Context, shape: Shape, numerationConfig?: {
1984
+ start_row_letter: string;
1985
+ row_order: "TOP_TO_BOTTOM" | "BOTTOM_TO_TOP";
1986
+ start_column_number: number;
1987
+ column_order: "LEFT_TO_RIGHT" | "RIGHT_TO_LEFT";
1988
+ }, ticketStatusMap?: Map<string, PerformanceTicketStatus>) => void;
1989
+
1990
+ declare const generateTableTicketScene: (con: Context, shape: Shape, chairTicketStatuses?: PerformanceTicketStatus[], tableSeats?: RoomMapSeatState[][]) => void;
1991
+
1992
+ declare function processElementsToRenderData(elements: RoomMapElementTemplate[], tickets: PerformanceTicket[], priceZones?: {
1993
+ id: number;
1994
+ color: string;
1995
+ }[]): ElementRenderData[];
1996
+ declare function findTicketAtPosition(renderData: ElementRenderData, relX: number, relY: number): PerformanceTicket | null;
1997
+ declare function findElementAtPosition(renderDataList: ElementRenderData[], stageX: number, stageY: number): {
1998
+ element: ElementRenderData;
1999
+ relX: number;
2000
+ relY: number;
2001
+ } | null;
2002
+
2003
+ declare const ticketCanOpenQr: (order: Order, ticket: PerformanceTicket) => boolean;
2004
+
1117
2005
  declare function MinTodayValidator(controlName: string): ValidatorFn;
1118
2006
  declare function EndDateGreaterThanStartValidator(startDateControlName: string, endDateControlName: string): ValidatorFn;
1119
2007
 
1120
2008
  declare function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn;
1121
2009
 
2010
+ declare function emailValidator(): ValidatorFn;
2011
+
1122
2012
  declare class ApiService {
1123
2013
  private http;
1124
2014
  private platformId;
@@ -1129,6 +2019,7 @@ declare class ApiService {
1129
2019
  private validateContentType;
1130
2020
  private handleError;
1131
2021
  get<T>(path: string): Observable<T>;
2022
+ getBlob(path: string): Observable<Blob>;
1132
2023
  post<T>(path: string, body: any): Observable<T>;
1133
2024
  patch<T>(path: string, body: any): Observable<T>;
1134
2025
  put<T>(path: string, body: any): Observable<T>;
@@ -1137,23 +2028,44 @@ declare class ApiService {
1137
2028
  static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
1138
2029
  }
1139
2030
 
2031
+ /**
2032
+ * Deshabilita el zoom del NAVEGADOR (no el zoom interno del mapa de
2033
+ * asientos, que sigue funcionando igual). Se instancia una sola vez —
2034
+ * inyectarlo en el componente raíz de la app alcanza, porque es
2035
+ * `providedIn: 'root'` — y cubre las cuatro formas en que un navegador
2036
+ * deja hacer zoom:
2037
+ *
2038
+ * - Ctrl/Cmd + rueda del mouse (desktop, todos los navegadores).
2039
+ * - Ctrl/Cmd + "+"/"-"/"0" por teclado (desktop, todos los navegadores).
2040
+ * - Gesto de pellizco en trackpad en Safari, que no dispara `wheel` sino
2041
+ * sus propios eventos `gesture*` (no estándar, solo Safari/WebKit).
2042
+ * - Pellizco con dos dedos en pantallas táctiles, como respaldo además
2043
+ * del `user-scalable=no` del viewport (que ya lo bloquea en la mayoría
2044
+ * de los navegadores, pero no en todos de forma consistente).
2045
+ *
2046
+ * No toca el zoom interno de `TicketMapZoomService` (ese es zoom propio de
2047
+ * la app sobre el SVG del mapa, con sus propios botones +/-, y debe seguir
2048
+ * funcionando tal cual).
2049
+ */
2050
+ declare class BrowserZoomLockService {
2051
+ constructor(platformId: Object);
2052
+ private onWheel;
2053
+ private onKeydown;
2054
+ private onTouchMove;
2055
+ private onGesture;
2056
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrowserZoomLockService, never>;
2057
+ static ɵprov: i0.ɵɵInjectableDeclaration<BrowserZoomLockService>;
2058
+ }
2059
+
1140
2060
  type ToastType = 'success' | 'error' | 'info';
1141
2061
  declare class ToastService {
2062
+ private platformId;
2063
+ constructor(platformId: Object);
1142
2064
  show(message: string, type?: ToastType): void;
1143
2065
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
1144
2066
  static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
1145
2067
  }
1146
2068
 
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
2069
  declare class DeleteConfirmationService {
1158
2070
  title: WritableSignal<string>;
1159
2071
  resourceName: WritableSignal<string>;
@@ -1197,7 +2109,7 @@ declare class DateService {
1197
2109
  declare class AdminService {
1198
2110
  private apiService;
1199
2111
  constructor(apiService: ApiService);
1200
- fetchAdmins(page?: number, search?: string, limit?: number): Observable<AdminsResponse>;
2112
+ fetchAdmins(params: FetchAdminsParams): Observable<AdminsResponse>;
1201
2113
  deleteOne(id: number): Observable<any>;
1202
2114
  createOne(data: any): Observable<any>;
1203
2115
  updateOne(id: number, data: any): Observable<any>;
@@ -1208,7 +2120,7 @@ declare class AdminService {
1208
2120
  declare class CitiesService {
1209
2121
  private apiService;
1210
2122
  constructor(apiService: ApiService);
1211
- fetchCities({ page, search, stateId }: FetchCitiesParams): Observable<CitiesResponse>;
2123
+ fetchCities(params: FetchCitiesParams): Observable<CitiesResponse>;
1212
2124
  createOne(data: City): Observable<CityResponse>;
1213
2125
  updateOne(id: number, data: City): Observable<CityResponse>;
1214
2126
  deleteOne(id: number): Observable<any>;
@@ -1219,7 +2131,7 @@ declare class CitiesService {
1219
2131
  declare class CountryService {
1220
2132
  private apiService;
1221
2133
  constructor(apiService: ApiService);
1222
- fetchCountries(page?: number, search?: string): Observable<CountriesResponse>;
2134
+ fetchCountries(params: FetchCountriesParams): Observable<CountriesResponse>;
1223
2135
  createOne(data: Country): Observable<CountryResponse>;
1224
2136
  updateOne(id: number, data: Country): Observable<CountryResponse>;
1225
2137
  deleteOne(id: number): Observable<any>;
@@ -1230,7 +2142,7 @@ declare class CountryService {
1230
2142
  declare class StatesService {
1231
2143
  private apiService;
1232
2144
  constructor(apiService: ApiService);
1233
- fetchStates(page?: number, search?: string, countryId?: number): Observable<StatesResponse>;
2145
+ fetchStates(params: FetchStatesParams): Observable<StatesResponse>;
1234
2146
  fetchStatesByCountryId(countryId: number): Observable<StatesResponse>;
1235
2147
  createOne(data: State): Observable<StateResponse>;
1236
2148
  updateOne(id: number, data: State): Observable<StateResponse>;
@@ -1244,7 +2156,7 @@ declare class PerformanceService {
1244
2156
  private performancesSubject;
1245
2157
  performances$: Observable<Performance[]>;
1246
2158
  constructor(apiService: ApiService);
1247
- fetchPerformances(showId?: number, search?: string): Observable<PerformancesResponseInterface>;
2159
+ fetchPerformances({ showId, roomMapId, hallId, search, page, limit, }: FindAllPerformancesParams): Observable<PerformancesResponseInterface>;
1248
2160
  fetchDailyPerformances({ show_id, search, limit, date, }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse>;
1249
2161
  loadPerformances({ showId, search }?: {
1250
2162
  showId?: number;
@@ -1252,7 +2164,7 @@ declare class PerformanceService {
1252
2164
  }): void;
1253
2165
  getCurrentPerformances(): Performance[];
1254
2166
  fetchOneById(id: number): Observable<PerformanceResponse>;
1255
- fetchOneBookingData(id: number): Observable<PerformanceBookingDataResponse>;
2167
+ fetchOneBookingData(id: number, isAdmin?: boolean): Observable<PerformanceBookingDataResponse>;
1256
2168
  fetchAvailableDays(params?: {
1257
2169
  show_id?: number;
1258
2170
  }): Observable<PerformancesAvailableDaysResponse>;
@@ -1282,25 +2194,6 @@ declare class PerformancesListEventsService {
1282
2194
  static ɵprov: i0.ɵɵInjectableDeclaration<PerformancesListEventsService>;
1283
2195
  }
1284
2196
 
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
2197
  declare class ShowService {
1305
2198
  private apiService;
1306
2199
  private showsSubject;
@@ -1308,7 +2201,7 @@ declare class ShowService {
1308
2201
  constructor(apiService: ApiService);
1309
2202
  loadShows({ page, search }?: FetchShowsParams): void;
1310
2203
  getCurrentShows(): Show[];
1311
- fetchShows({ limit, page, search }: FetchShowsParams): Observable<ShowsResponseInterface>;
2204
+ fetchShows(params: FetchShowsParams): Observable<ShowsResponseInterface>;
1312
2205
  fetchAvailableShows({ date, limit, page, search, }: FetchShowsParams): Observable<ShowsResponseInterface>;
1313
2206
  fetchOneById(id: number): Observable<ShowResponse>;
1314
2207
  createOne(data: Show): Observable<ShowResponse>;
@@ -1325,60 +2218,600 @@ declare class ShowService {
1325
2218
  static ɵprov: i0.ɵɵInjectableDeclaration<ShowService>;
1326
2219
  }
1327
2220
 
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>;
2221
+ declare class CustomerService {
2222
+ private apiService;
2223
+ constructor(apiService: ApiService);
2224
+ createOne(data: Customer): Observable<CustomerResponse>;
2225
+ fetchCustomers(params: FetchCustomersParams): Observable<CustomersResponse>;
2226
+ fetchOneById(id: number): Observable<CustomerResponse>;
2227
+ updateOne(id: number, data: any): Observable<CustomerResponse>;
2228
+ deleteOne(id: number): Observable<any>;
2229
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomerService, never>;
2230
+ static ɵprov: i0.ɵɵInjectableDeclaration<CustomerService>;
2231
+ }
2232
+
2233
+ declare class PriceZoneService {
2234
+ private apiService;
2235
+ private priceZonesSubject;
2236
+ priceZones$: Observable<PriceZone[]>;
2237
+ constructor(apiService: ApiService);
2238
+ fetchPriceZones({ roomMapId, page, search, limit, }?: FindAllPriceZoneParams): Observable<PriceZonesResponseInterface>;
2239
+ loadPriceZones({ roomMapId, page, search, limit }?: FindAllPriceZoneParams): void;
2240
+ getCurrentPriceZones(): PriceZone[];
2241
+ fetchOneById(id: number): Observable<PriceZoneResponse>;
2242
+ createOne(data: PriceZone): Observable<any>;
2243
+ duplicateOne(id: number, name: string): Observable<any>;
2244
+ updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse>;
2245
+ deleteOne(id: number): Observable<any>;
2246
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneService, never>;
2247
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneService>;
2248
+ }
2249
+
2250
+ declare class PriceZoneEventService {
2251
+ private priceZoneDeleted$;
2252
+ private priceZoneSaved$;
2253
+ private _selectedPriceZone;
2254
+ readonly selectedPriceZone$: rxjs.Observable<PriceZone | null>;
2255
+ onPriceZoneDeleted(): void;
2256
+ getPriceZoneDeleted(): rxjs.Observable<void>;
2257
+ onPriceZoneSaved(): void;
2258
+ getPriceZoneSaved(): rxjs.Observable<void>;
2259
+ setSelectedPriceZone(priceZone: PriceZone | null): void;
2260
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneEventService, never>;
2261
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneEventService>;
2262
+ }
2263
+
2264
+ declare class PriceZoneFormModalService {
2265
+ private priceZoneEventService;
2266
+ priceZone: WritableSignal<PriceZone | null>;
2267
+ isOpen: WritableSignal<boolean>;
2268
+ constructor(priceZoneEventService: PriceZoneEventService);
2269
+ get modalIsOpen(): WritableSignal<boolean>;
2270
+ get currentPriceZone(): WritableSignal<PriceZone | null>;
2271
+ open(priceZone?: PriceZone | null): void;
2272
+ close(): void;
2273
+ static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneFormModalService, never>;
2274
+ static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneFormModalService>;
2275
+ }
2276
+
2277
+ declare class ProductCategoryService {
2278
+ private apiService;
2279
+ constructor(apiService: ApiService);
2280
+ fetchCategories(params: FetchProductCategoriesParams): Observable<ProductCategoriesResponse>;
2281
+ fetchOneById(id: number): Observable<ProductCategoryResponse>;
2282
+ createOne(data: ProductCategory): Observable<any>;
2283
+ updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse>;
2284
+ deleteOne(id: number): Observable<any>;
2285
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductCategoryService, never>;
2286
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductCategoryService>;
2287
+ }
2288
+
2289
+ declare class ProductTagService {
2290
+ private apiService;
2291
+ constructor(apiService: ApiService);
2292
+ fetchTags(params: FetchProductTagsParams): Observable<ProductTagsResponse>;
2293
+ fetchOneById(id: number): Observable<ProductTagResponse>;
2294
+ createOne(data: ProductTag): Observable<any>;
2295
+ updateOne(id: number, data: ProductTag): Observable<ProductTagResponse>;
2296
+ deleteOne(id: number): Observable<any>;
2297
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductTagService, never>;
2298
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductTagService>;
2299
+ }
2300
+
2301
+ declare class ProductTypeService {
2302
+ private apiService;
2303
+ constructor(apiService: ApiService);
2304
+ fetchTypes(params: FetchProductTypesParams): Observable<ProductTypesResponse>;
2305
+ fetchOneById(id: number): Observable<ProductTypeResponse>;
2306
+ createOne(data: ProductType): Observable<any>;
2307
+ updateOne(id: number, data: ProductType): Observable<ProductTypeResponse>;
2308
+ deleteOne(id: number): Observable<any>;
2309
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductTypeService, never>;
2310
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductTypeService>;
2311
+ }
2312
+
2313
+ declare class ProductService {
2314
+ private apiService;
2315
+ private productsSubject;
2316
+ products$: Observable<Product[]>;
2317
+ constructor(apiService: ApiService);
2318
+ fetchProducts(params: FetchProductsParams): Observable<ProductsResponseInterface>;
2319
+ loadProducts(params: FetchProductsParams): void;
2320
+ getCurrentProducts(): Product[];
2321
+ fetchOneById(id: number): Observable<ProductResponse>;
2322
+ createOne(data: Product): Observable<any>;
2323
+ updateOne(id: number, data: any): Observable<ProductResponse>;
2324
+ deleteOne(id: number): Observable<any>;
2325
+ fetchImages(id: number): Observable<{
2326
+ data: ProductImage[];
2327
+ }>;
2328
+ uploadImages(id: number, files?: FormData): Observable<{
2329
+ data: ProductImage[];
2330
+ }>;
2331
+ deleteOneImage(productId: number, imageId: number): Observable<any>;
2332
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductService, never>;
2333
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductService>;
2334
+ }
2335
+
2336
+ declare class BaseModalService {
2337
+ readonly isOpen: WritableSignal<boolean>;
2338
+ get modalIsOpen(): WritableSignal<boolean>;
2339
+ open(): void;
2340
+ close(): void;
2341
+ }
2342
+
2343
+ declare class FeedbackModalService {
2344
+ private _modals;
2345
+ readonly modals: i0.Signal<FeedbackModalElement[]>;
2346
+ addModal(modal: FeedbackModalElement): void;
2347
+ removeModal(id: string): void;
2348
+ removeAllModals(): void;
2349
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackModalService, never>;
2350
+ static ɵprov: i0.ɵɵInjectableDeclaration<FeedbackModalService>;
1338
2351
  }
1339
2352
 
1340
- declare class PriceZoneService {
2353
+ /**
2354
+ * Tope de entradas por selección/compra. Por defecto es `null` (sin límite),
2355
+ * que es lo que necesita el backoffice (admin puede seleccionar todo).
2356
+ * El ecommerce, que sí debe limitar, llama a `load()` una vez al iniciar la
2357
+ * app para traer el valor configurado en el formulario de personalización.
2358
+ */
2359
+ declare class PurchaseLimitService {
1341
2360
  private apiService;
1342
- private priceZonesSubject;
1343
- priceZones$: Observable<PriceZone[]>;
2361
+ private _maxTicketsPerSelection;
2362
+ readonly maxTicketsPerSelection: i0.Signal<number | null>;
1344
2363
  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>;
2364
+ setMaxTicketsPerSelection(max: number | null): void;
2365
+ load(): Observable<number | null>;
2366
+ static ɵfac: i0.ɵɵFactoryDeclaration<PurchaseLimitService, never>;
2367
+ static ɵprov: i0.ɵɵInjectableDeclaration<PurchaseLimitService>;
1355
2368
  }
1356
2369
 
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>;
2370
+ declare class OrderTransactionDetailsModalService {
2371
+ readonly isOpen: WritableSignal<boolean>;
2372
+ transaction: WritableSignal<Transaction | null>;
2373
+ get modalIsOpen(): WritableSignal<boolean>;
2374
+ open(transaction: Transaction): void;
2375
+ close(): void;
2376
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionDetailsModalService, never>;
2377
+ static ɵprov: i0.ɵɵInjectableDeclaration<OrderTransactionDetailsModalService>;
2378
+ }
2379
+
2380
+ declare class PerformanceBookingDataService {
2381
+ private _show;
2382
+ private _performance;
2383
+ private _roomMap;
2384
+ private _hallFloors;
2385
+ private _selectedHallFloor;
2386
+ private _allRenderData;
2387
+ private _visibleFloorIds;
2388
+ private _hoveredFloorId;
2389
+ private _stageConfig;
2390
+ private _lastTickets;
2391
+ readonly show: i0.Signal<Show | null>;
2392
+ readonly hallFloors: i0.Signal<HallFloor[]>;
2393
+ readonly selectedHallFloor: i0.Signal<HallFloor | null>;
2394
+ readonly performance: i0.Signal<Performance | null>;
2395
+ readonly stageConfig: i0.Signal<{
2396
+ [x: string]: any;
2397
+ }>;
2398
+ readonly roomMap: i0.Signal<RoomMap | null>;
2399
+ readonly visibleFloorIds: i0.Signal<Set<number>>;
2400
+ readonly hoveredFloorId: i0.Signal<number | null>;
2401
+ readonly availableFloors: i0.Signal<HallFloor[]>;
2402
+ readonly floorZOrder: i0.Signal<number[]>;
2403
+ readonly renderData: i0.Signal<ElementRenderData[]>;
2404
+ setPerformanceBookingData({ data }: PerformanceBookingDataResponse): void;
2405
+ /** Aplica actualizaciones de estado de tickets recibidas por SSE (ver
2406
+ * SeatAvailabilitySseService) sin volver a pedir todo el booking-data:
2407
+ * parcha `_lastTickets` y vuelve a calcular el render data del mapa con
2408
+ * los mismos `elements`/`price_zones` (que no cambian en vivo). */
2409
+ applySeatStatusUpdates(updates: SeatStatusUpdate[]): void;
2410
+ setRoomMap(roomMap: RoomMap | null): void;
2411
+ setAllRenderData(data: ElementRenderData[]): void;
2412
+ setPerformance(performance: Performance | null): void;
2413
+ setShow(show: Show | null): void;
2414
+ setHallFloors(data: HallFloor[]): void;
2415
+ setSelectedHallFloor(id: number): void;
2416
+ setHoveredFloor(floorId: number | null): void;
2417
+ toggleFloorVisibility(floorId: number): void;
2418
+ isFloorVisible(floorId: number): boolean;
2419
+ updateStageConfig(data: {
2420
+ [x: string]: any;
2421
+ }): void;
2422
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceBookingDataService, never>;
2423
+ static ɵprov: i0.ɵɵInjectableDeclaration<PerformanceBookingDataService>;
2424
+ }
2425
+
2426
+ declare class TicketSelectionDetailsService {
2427
+ private _customerEmail;
2428
+ private _customerId;
2429
+ private _paymentMethod;
2430
+ private _billingInformation;
2431
+ readonly customerEmail: i0.Signal<string | null>;
2432
+ readonly customerId: i0.Signal<number | null>;
2433
+ readonly paymentMethod: i0.Signal<string | null>;
2434
+ readonly billingInformation: i0.Signal<Customer | null>;
2435
+ setCustomerEmail(email: string | null): void;
2436
+ setCustomerId(id: number | null): void;
2437
+ setPaymentMethod(method: string | null): void;
2438
+ setBillingInformation(values: Customer): void;
2439
+ clearSelection(): void;
2440
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionDetailsService, never>;
2441
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionDetailsService>;
2442
+ }
2443
+
2444
+ declare class TicketSelectionDiscountService {
2445
+ private _coupon;
2446
+ private _corporateBond;
2447
+ private _corporateBondCode;
2448
+ private _giftBond;
2449
+ private _giftBondCode;
2450
+ private _vipCard;
2451
+ /**
2452
+ * Abono (subscription) como metodo de pago. Solo se usa el campo
2453
+ * `service_fee_exempt`: el valor del descuento es siempre 100% (una obra
2454
+ * del abono cubre el ticket por completo), igual que un cupon del 100%.
2455
+ */
2456
+ private _subscription;
2457
+ readonly coupon: Signal<Coupon | null>;
2458
+ readonly corporateBond: Signal<CorporateBond | null>;
2459
+ readonly corporateBondCode: Signal<string | null>;
2460
+ readonly giftBond: Signal<GiftBondPurchase | null>;
2461
+ readonly giftBondCode: Signal<string | null>;
2462
+ readonly vipCard: Signal<VipCard | null>;
2463
+ readonly subscription: Signal<{
2464
+ service_fee_exempt: boolean;
2465
+ } | null>;
2466
+ readonly selectedDiscount: Signal<SelectedDiscountCard | null>;
2467
+ readonly selectedDiscountType: Signal<SelectedDiscountCardType | undefined>;
2468
+ readonly selectedDiscountValue: Signal<number | undefined>;
2469
+ setCoupon(coupon: Coupon | null): void;
2470
+ setCorporateBond(corporateBond: CorporateBond | null): void;
2471
+ setCorporateBondCode(code: string | null): void;
2472
+ setGiftBond(giftBond: GiftBondPurchase | null): void;
2473
+ setGiftBondCode(code: string | null): void;
2474
+ /**
2475
+ * Saldo VIP como método de pago (VIP-HU-04). Solo debe contar como
2476
+ * descuento "seleccionado" mientras el cliente efectivamente eligió
2477
+ * pagar con su saldo VIP, no solo por tener una tarjeta activa —
2478
+ * llamar con `null` en cuanto deje de ser el método de pago elegido.
2479
+ */
2480
+ setVipCard(card: VipCard | null): void;
2481
+ /**
2482
+ * Abono como metodo de pago (paralelo a `setVipCard`). Llamar con `null`
2483
+ * en cuanto deje de ser el metodo de pago elegido.
2484
+ */
2485
+ setSubscription(subscription: {
2486
+ service_fee_exempt: boolean;
2487
+ } | null): void;
2488
+ clearSelection(): void;
2489
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionDiscountService, never>;
2490
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionDiscountService>;
2491
+ }
2492
+
2493
+ declare class TicketSelectionTotalsService {
2494
+ private bookingDataService;
2495
+ private selectionService;
2496
+ private selectionDiscountService;
2497
+ readonly selectedProductEntries: i0.Signal<{
2498
+ id: number;
2499
+ quantity: number;
2500
+ }[]>;
2501
+ readonly selectedProductCount: i0.Signal<number>;
2502
+ readonly productSubtotal: i0.Signal<number>;
2503
+ readonly ticketSubtotal: i0.Signal<number>;
2504
+ readonly serviceFee: i0.Signal<number>;
2505
+ readonly discountAmount: i0.Signal<number | null>;
2506
+ subtotalValue(): number;
2507
+ totalValue(): number;
2508
+ totalDiscounted(): number | null;
2509
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionTotalsService, never>;
2510
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionTotalsService>;
2511
+ }
2512
+
2513
+ declare class TicketSelectionService {
2514
+ private bookingDataService;
2515
+ private feedbackModalService;
2516
+ private purchaseLimitService;
2517
+ private selectionDetailsService;
2518
+ private selectionDiscountService;
2519
+ private _zoneQuantities;
2520
+ private _allTickets;
2521
+ private _selectedTickets;
2522
+ private _selectedBlockedTickets;
2523
+ private _products;
2524
+ private _productQuantities;
2525
+ readonly selectedTickets: i0.Signal<PerformanceTicket[]>;
2526
+ readonly selectedBlockedTickets: i0.Signal<PerformanceTicket[]>;
2527
+ readonly selectedCount: i0.Signal<number>;
2528
+ readonly blockedSelectedCount: i0.Signal<number>;
2529
+ readonly selectedTicketIds: i0.Signal<Set<PerformanceTicket>>;
2530
+ readonly selectedBlockedTicketIds: i0.Signal<number[]>;
2531
+ readonly selectedTicketIdList: i0.Signal<number[]>;
2532
+ readonly summaryItems: i0.Signal<PerformanceTicket[]>;
2533
+ readonly products: i0.Signal<Product[]>;
2534
+ readonly productQuantities: i0.Signal<Map<number, number>>;
2535
+ readonly selectedProductEntries: i0.Signal<{
2536
+ id: number;
2537
+ quantity: number;
2538
+ }[]>;
2539
+ readonly selectedProductCount: i0.Signal<number>;
2540
+ readonly serviceFee: i0.Signal<number>;
2541
+ setTickets(tickets: PerformanceTicket[]): void;
2542
+ /** Aplica actualizaciones de estado recibidas por SSE (ver
2543
+ * SeatAvailabilitySseService). Muta los tickets existentes EN VEZ de
2544
+ * reemplazarlos por objetos nuevos: `_selectedTickets`/
2545
+ * `_selectedBlockedTickets` son Sets de referencias de objeto, no de ids,
2546
+ * así que reemplazar el array rompería la selección activa del usuario. */
2547
+ applySeatStatusUpdates(updates: SeatStatusUpdate[]): void;
2548
+ setProducts(products: Product[]): void;
2549
+ updateProductQuantity(productId: number, delta: number): void;
2550
+ getProductQuantity(productId: number): number;
2551
+ private getListByStatus;
2552
+ setSelectedTickets(tickets: PerformanceTicket[]): void;
2553
+ toggle(ticket: PerformanceTicket): void;
2554
+ select(ticket: PerformanceTicket): void;
2555
+ deselect(ticket: PerformanceTicket): void;
2556
+ clearBlockedSelection(): void;
2557
+ clearSelection(): void;
2558
+ isSelected(ticket: PerformanceTicket): boolean;
2559
+ initZoneQuantity(elementId: number, maxCapacity: number): void;
2560
+ getZoneMax(elementId: number): number;
2561
+ getZoneSelectedCount(elementId: number): number;
2562
+ setZoneQuantity(elementId: number, target: number): void;
2563
+ adjustZoneQuantity(elementId: number, delta: number): void;
2564
+ private remainingSelectionAllowance;
2565
+ private canAddMoreToSelection;
2566
+ private notifyPurchaseLimitReached;
2567
+ getZoneTickets(elementId: number): PerformanceTicket[];
2568
+ buildTooltipData(ticket: PerformanceTicket, elementName: string, seatLabel: string | null, x: number, y: number): TicketMapTooltipData;
2569
+ buildReservePerformanceDto(paymentMethod?: string, termsAccepted?: boolean, dataProcessingAccepted?: boolean): ReservePerformanceDto;
2570
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketSelectionService, never>;
2571
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketSelectionService>;
2572
+ }
2573
+
2574
+ declare class TicketMapZoomService {
2575
+ readonly currentZoom: i0.WritableSignal<number>;
2576
+ private stage?;
2577
+ private bookingDataService;
2578
+ private readonly defaultConfig;
2579
+ constructor();
2580
+ /**
2581
+ * Set the Konva stage instance
2582
+ */
2583
+ setStage(stage: Stage): void;
2584
+ /**
2585
+ * Zoom in by one step
2586
+ */
2587
+ zoomIn(): void;
2588
+ /**
2589
+ * Zoom out by one step
2590
+ */
2591
+ zoomOut(): void;
2592
+ /**
2593
+ * Reset zoom to 100%
2594
+ */
2595
+ resetZoom(): void;
2596
+ /**
2597
+ * Get current zoom as percentage string
2598
+ */
2599
+ getZoomPercentage(): string;
2600
+ /**
2601
+ * Get current zoom value
2602
+ */
2603
+ getCurrentZoom(): number;
2604
+ /**
2605
+ * Apply zoom with center point
2606
+ */
2607
+ private applyZoom;
2608
+ /**
2609
+ * Apply zoom scale with specific center point
2610
+ */
2611
+ private applyZoomScale;
2612
+ /**
2613
+ * Handle mouse wheel zoom toward the cursor position
2614
+ */
2615
+ handleWheelZoom(deltaY: number): void;
2616
+ /**
2617
+ * Fit the content bounds to fill the stage container
2618
+ */
2619
+ fitToContainer(padding?: number): void;
2620
+ /**
2621
+ * Get current stage position
2622
+ */
2623
+ getStagePosition(): {
2624
+ x: number;
2625
+ y: number;
2626
+ };
2627
+ /**
2628
+ * Set stage position (useful for programmatic panning)
2629
+ */
2630
+ setStagePosition(position: {
2631
+ x: number;
2632
+ y: number;
2633
+ }): void;
2634
+ /**
2635
+ * Fit the stage content bounds to the container, centering and scaling
2636
+ * to show the full content with optional padding.
2637
+ */
2638
+ fitToBounds(contentBounds: {
2639
+ x: number;
2640
+ y: number;
2641
+ width: number;
2642
+ height: number;
2643
+ }, containerWidth: number, containerHeight: number, padding?: number): void;
2644
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapZoomService, never>;
2645
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketMapZoomService>;
2646
+ }
2647
+
2648
+ declare class ConfirmationOrderModalService extends BaseModalService {
2649
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationOrderModalService, never>;
2650
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationOrderModalService>;
2651
+ }
2652
+
2653
+ /**
2654
+ * Transporte SSE del estado de asientos en vivo. Es el único punto de la
2655
+ * librería que sabe de EventSource/HTTP para esto — aplica cada snapshot
2656
+ * recibido sobre PerformanceBookingDataService (repinta el mapa) y
2657
+ * TicketSelectionService (mantiene la disponibilidad al día para
2658
+ * validaciones de zona/límite de compra).
2659
+ *
2660
+ * Cada intento de reconexión pide un ticket NUEVO (el anterior es de un
2661
+ * solo uso y expira a los ~30s), con backoff exponencial acotado.
2662
+ */
2663
+ declare class SeatAvailabilitySseService {
2664
+ private apiService;
2665
+ private bookingDataService;
2666
+ private ticketSelectionService;
2667
+ private platformId;
2668
+ private config;
2669
+ private eventSource;
2670
+ private reconnectTimer;
2671
+ private reconnectAttempts;
2672
+ private currentPerformanceId;
2673
+ private currentIsAdmin;
2674
+ private stopped;
2675
+ constructor(apiService: ApiService, bookingDataService: PerformanceBookingDataService, ticketSelectionService: TicketSelectionService, platformId: Object, config: TickeraComponentsConfig);
2676
+ connect(performanceId: number, opts?: {
2677
+ isAdmin?: boolean;
2678
+ }): void;
2679
+ disconnect(): void;
2680
+ private openConnection;
2681
+ private startStream;
2682
+ private scheduleReconnect;
2683
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatAvailabilitySseService, never>;
2684
+ static ɵprov: i0.ɵɵInjectableDeclaration<SeatAvailabilitySseService>;
2685
+ }
2686
+
2687
+ /**
2688
+ * Cliente de la cola adaptativa (fase 4). No decide CUÁNDO se activa la
2689
+ * cola — eso es enteramente responsabilidad del backend (AdmissionGuard +
2690
+ * LoadBasedAdmissionPolicy) — este servicio solo sabe reaccionar al 429
2691
+ * `ADMISSION_QUEUE_REQUIRED` que ese guard puede devolver en
2692
+ * /carts/reserve y /orders/checkout.
2693
+ *
2694
+ * Uso típico en el punto de llamada (ver reservation-confirmation y
2695
+ * checkout-form): reintentar la request original dentro de un catchError:
2696
+ *
2697
+ * this.cartService.reserve(dto).pipe(
2698
+ * catchError((err) => {
2699
+ * if (!this.admissionQueueService.isAdmissionRequired(err)) return throwError(() => err);
2700
+ * const performanceId = this.admissionQueueService.getPerformanceId(err)!;
2701
+ * return this.admissionQueueService.waitForAdmission(performanceId).pipe(
2702
+ * switchMap(() => this.cartService.reserve(dto)),
2703
+ * );
2704
+ * }),
2705
+ * )
2706
+ *
2707
+ * Reutiliza el mismo transporte SSE con ticket de un solo uso de la fase 3
2708
+ * (ver SeatAvailabilitySseService) — acá el ticket llega directo en la
2709
+ * respuesta de /join, así que no hace falta un endpoint de ticket aparte;
2710
+ * cada reintento de conexión vuelve a hacer /join (el ticket anterior es
2711
+ * de un solo uso y expira a los ~30s).
2712
+ */
2713
+ declare class AdmissionQueueService {
2714
+ private apiService;
2715
+ private feedbackModalService;
2716
+ private platformId;
2717
+ private config;
2718
+ constructor(apiService: ApiService, feedbackModalService: FeedbackModalService, platformId: Object, config: TickeraComponentsConfig);
2719
+ /** True si el error es el 429 específico de "alta demanda, únete a la fila". */
2720
+ isAdmissionRequired(error: unknown): error is HttpErrorResponse;
2721
+ getPerformanceId(error: HttpErrorResponse): number | null;
2722
+ /**
2723
+ * Se une a la fila de `performanceId` y completa (emite una vez y cierra)
2724
+ * en cuanto el usuario queda admitido. Mientras espera, muestra un modal
2725
+ * ligero con la posición vigente, actualizado por SSE. Si quien se
2726
+ * suscribió se desuscribe antes de ser admitido (el usuario navega a
2727
+ * otro lado, cierra el modal, o el componente se destruye), libera el
2728
+ * lugar en la fila con /leave.
2729
+ */
2730
+ waitForAdmission(performanceId: number): Observable<void>;
2731
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdmissionQueueService, never>;
2732
+ static ɵprov: i0.ɵɵInjectableDeclaration<AdmissionQueueService>;
2733
+ }
2734
+
2735
+ declare class TicketQrService {
2736
+ private apiService;
2737
+ constructor(apiService: ApiService);
2738
+ fetchQrToken(ticketUuid: string): Observable<QrTokenResponse>;
2739
+ fetchMyQrToken(ticketUuid: string): Observable<QrTokenResponse>;
2740
+ downloadTicketPdf(ticketUuid: string): Observable<Blob>;
2741
+ downloadMyTicketPdf(ticketUuid: string): Observable<Blob>;
2742
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrService, never>;
2743
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketQrService>;
1369
2744
  }
1370
2745
 
1371
- declare class PriceZoneFormModalService {
1372
- private priceZoneEventService;
1373
- priceZone: WritableSignal<PriceZone | null>;
2746
+ declare class TicketQrModalService {
1374
2747
  isOpen: WritableSignal<boolean>;
1375
- constructor(priceZoneEventService: PriceZoneEventService);
1376
- get modalIsOpen(): WritableSignal<boolean>;
1377
- get currentPriceZone(): WritableSignal<PriceZone | null>;
1378
- open(priceZone?: PriceZone | null): void;
2748
+ ticketUuid: WritableSignal<string | null>;
2749
+ ticketDescription: WritableSignal<string | null>;
2750
+ open(ticketUuid: string, description?: string): void;
1379
2751
  close(): void;
1380
- static ɵfac: i0.ɵɵFactoryDeclaration<PriceZoneFormModalService, never>;
1381
- static ɵprov: i0.ɵɵInjectableDeclaration<PriceZoneFormModalService>;
2752
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrModalService, never>;
2753
+ static ɵprov: i0.ɵɵInjectableDeclaration<TicketQrModalService>;
2754
+ }
2755
+
2756
+ declare class VipCardService {
2757
+ private apiService;
2758
+ constructor(apiService: ApiService);
2759
+ findMy(): Observable<{
2760
+ data: VipCard | null;
2761
+ }>;
2762
+ activate(data: any): Observable<VipOrderResponse>;
2763
+ recharge(data: any): Observable<VipOrderResponse>;
2764
+ fetchAll(params?: FetchVipCardsParams): Observable<VipCardsResponse>;
2765
+ fetchOneById(id: number): Observable<VipCardResponse>;
2766
+ activateAdmin(data: ActivateVipCardParams): Observable<VipOrderResponse>;
2767
+ rechargeAdmin(id: number, data: any): Observable<VipOrderResponse>;
2768
+ updateStatus(id: number, status: VipCardStatus): Observable<VipCardResponse>;
2769
+ updateTerms(id: number): Observable<VipCardResponse>;
2770
+ fetchTransactions(id: number, page?: number, limit?: number): Observable<VipTransactionsResponse>;
2771
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipCardService, never>;
2772
+ static ɵprov: i0.ɵɵInjectableDeclaration<VipCardService>;
2773
+ }
2774
+
2775
+ /**
2776
+ * Servicio genérico de "cambios pendientes" para tablas con edición rápida
2777
+ * + guardado masivo (QTN-49, primer consumidor: Bonos de Regalo en
2778
+ * tickera-backoffice-frontend).
2779
+ *
2780
+ * IMPORTANTE: proveerlo a nivel de componente/página
2781
+ * (`providers: [PendingChangesService]` en el `@Component` que lo usa),
2782
+ * NUNCA en `providedIn: 'root'` — si no, dos tablas con edición rápida
2783
+ * abiertas al mismo tiempo (dos pestañas, o dos listados en la misma
2784
+ * sesión) compartirían el mismo estado de cambios pendientes. Mismo
2785
+ * criterio que ya sigue este repo con GiftBondService, provisto a nivel de
2786
+ * GiftBondDetailsComponent en vez de en 'root'.
2787
+ */
2788
+ declare class PendingChangesService<TValue = any> {
2789
+ private readonly changesSignal;
2790
+ private readonly originalValues;
2791
+ readonly changes: Signal<Map<number, TValue>>;
2792
+ readonly changeCount: Signal<number>;
2793
+ readonly hasChanges: Signal<boolean>;
2794
+ /**
2795
+ * Registra (o actualiza) el cambio pendiente de `id`. `originalValue` es
2796
+ * el valor que tenía la fila antes de cualquier edición en esta sesión de
2797
+ * la tabla — solo se guarda la primera vez que se llama para ese id, así
2798
+ * que no importa pasarlo en cada llamada subsiguiente.
2799
+ *
2800
+ * Si `newValue` termina siendo igual al valor original, el id se
2801
+ * elimina automáticamente de los cambios pendientes (evita que quede
2802
+ * marcado como "modificado" un valor que el usuario cambió y luego
2803
+ * revirtió a mano).
2804
+ */
2805
+ setChange(id: number, originalValue: TValue, newValue: TValue): void;
2806
+ getPendingValue(id: number): TValue | undefined;
2807
+ /** Descarta el cambio pendiente de una fila puntual (botón "Deshacer" por fila, si aplica). */
2808
+ discard(id: number): void;
2809
+ /** Descarta todos los cambios pendientes sin guardar nada (botón "Deshacer" de la barra flotante). */
2810
+ discardAll(): void;
2811
+ /** Llamar después de que el guardado en lote fue exitoso, para limpiar el estado. */
2812
+ clearAfterSave(): void;
2813
+ static ɵfac: i0.ɵɵFactoryDeclaration<PendingChangesService<any>, never>;
2814
+ static ɵprov: i0.ɵɵInjectableDeclaration<PendingChangesService<any>>;
1382
2815
  }
1383
2816
 
1384
2817
  declare const authInterceptor: HttpInterceptorFn;
@@ -1393,10 +2826,11 @@ declare class AppButtonComponent {
1393
2826
  size: 'xs' | 'sm' | 'md' | 'lg';
1394
2827
  loadingText: string;
1395
2828
  icon: string;
2829
+ tooltip: string;
1396
2830
  handleClick(): void;
1397
2831
  get buttonClasses(): string;
1398
2832
  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>;
2833
+ 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
2834
  }
1401
2835
 
1402
2836
  declare class AppLinkButtonComponent {
@@ -1410,9 +2844,10 @@ declare class AppLinkButtonComponent {
1410
2844
  queryParams: Record<string, any>;
1411
2845
  size: 'xs' | 'sm' | 'md' | 'lg';
1412
2846
  variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent';
2847
+ tooltip: string;
1413
2848
  get buttonClasses(): string;
1414
2849
  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>;
2850
+ 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
2851
  }
1417
2852
 
1418
2853
  declare class AppAlertComponent {
@@ -1425,30 +2860,65 @@ declare class AppAlertComponent {
1425
2860
  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
2861
  }
1427
2862
 
1428
- declare class LoadingmModalComponent {
1429
- private loadingModalService;
1430
- constructor(loadingModalService: LoadingModalService);
1431
- get isOpen(): i0.WritableSignal<boolean>;
1432
- get title(): i0.WritableSignal<string>;
2863
+ declare class FeedbackModalComponent implements OnChanges, OnDestroy {
2864
+ isOpen: WritableSignal<boolean>;
2865
+ type: FeedbackModalType;
2866
+ title: string;
2867
+ message: string;
2868
+ showHeader: boolean;
2869
+ showCloseButton: boolean;
2870
+ showTitle: boolean;
2871
+ autoClose: boolean;
2872
+ autoCloseDuration: number;
2873
+ buttonText: string;
2874
+ closed: EventEmitter<void>;
2875
+ private autoCloseTimeout;
2876
+ get defaultButtonText(): string;
2877
+ get resolvedButtonText(): string;
2878
+ get buttonVariant(): 'primary' | 'secondary';
2879
+ ngOnChanges(changes: SimpleChanges): void;
2880
+ ngOnDestroy(): void;
1433
2881
  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>;
2882
+ private scheduleAutoClose;
2883
+ private clearAutoClose;
2884
+ static ɵfac: i0.ɵɵFactoryDeclaration<FeedbackModalComponent, never>;
2885
+ 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
2886
  }
1438
2887
 
2888
+ type DeleteConfirmationStep = 'input' | 'final';
1439
2889
  declare class DeleteConfirmationComponent {
1440
2890
  private fb;
1441
2891
  private deleteConfirmationService;
1442
2892
  protected transloco: TranslocoService;
1443
2893
  deleteConfirmationForm: FormGroup;
2894
+ /**
2895
+ * Two-step flow:
2896
+ * 1. 'input' -> the user must type the resource name to unlock the delete action.
2897
+ * 2. 'final' -> a last feedback/confirmation step is shown before the delete
2898
+ * callback actually runs, so a slip of the mouse on the first
2899
+ * step can never trigger a real deletion by itself.
2900
+ */
2901
+ step: DeleteConfirmationStep;
1444
2902
  constructor(fb: FormBuilder, deleteConfirmationService: DeleteConfirmationService, transloco: TranslocoService);
1445
2903
  get title(): string;
1446
2904
  get resourceName(): string;
1447
2905
  get confirmationText(): string;
1448
2906
  get isOpen(): i0.WritableSignal<boolean>;
1449
2907
  get isConfirmationValid(): boolean;
2908
+ get isFinalStep(): boolean;
2909
+ /** Cancels the whole flow (from either step) without deleting anything. */
1450
2910
  onCloseModal(): void;
2911
+ /** Step 1 submit: only advances to the final confirmation, never deletes. */
1451
2912
  onConfirmDelete(): void;
2913
+ /**
2914
+ * Step 2 cancel: goes back to the input step without touching what the
2915
+ * user typed, so they don't have to retype it if they just want to
2916
+ * double-check before deleting.
2917
+ */
2918
+ onBackToInput(): void;
2919
+ /** Step 2 submit: this is the only place that actually triggers deletion. */
2920
+ onFinalConfirm(): void;
2921
+ private resetState;
1452
2922
  static ɵfac: i0.ɵɵFactoryDeclaration<DeleteConfirmationComponent, never>;
1453
2923
  static ɵcmp: i0.ɵɵComponentDeclaration<DeleteConfirmationComponent, "delete-confirmation", never, {}, {}, never, never, true, never>;
1454
2924
  }
@@ -1456,12 +2926,29 @@ declare class DeleteConfirmationComponent {
1456
2926
  declare class AppModalComponent {
1457
2927
  title: string;
1458
2928
  disableClose: boolean;
2929
+ showHeader: boolean;
2930
+ showCloseButton: boolean;
2931
+ showTitle: boolean;
2932
+ interactiveClose: boolean;
1459
2933
  isOpen: WritableSignal<boolean>;
1460
- size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
2934
+ size: ModalSize;
1461
2935
  closeModal: EventEmitter<void>;
1462
2936
  onCloseModal(): void;
2937
+ onInteractiveClose(): void;
2938
+ onKeydownEscape(): void;
1463
2939
  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>;
2940
+ 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>;
2941
+ }
2942
+
2943
+ declare class AppBadgeComponent {
2944
+ text: string;
2945
+ color: BadgeColor;
2946
+ size: BadgeSize;
2947
+ bordered: boolean;
2948
+ backgroundColor: string;
2949
+ textColor: string;
2950
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppBadgeComponent, never>;
2951
+ 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
2952
  }
1466
2953
 
1467
2954
  declare class AuditInformationComponent {
@@ -1470,12 +2957,13 @@ declare class AuditInformationComponent {
1470
2957
  static ɵcmp: i0.ɵɵComponentDeclaration<AuditInformationComponent, "app-audit-information", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
1471
2958
  }
1472
2959
 
1473
- declare class DynamicTableComponent {
2960
+ declare class DynamicTableComponent implements OnChanges {
1474
2961
  private injector;
1475
2962
  constructor(injector: Injector);
1476
2963
  title: string;
1477
2964
  data: any[];
1478
2965
  headers: any[];
2966
+ searcherPlaceholder: string;
1479
2967
  columnComponents: {
1480
2968
  [key: string]: Type<any>;
1481
2969
  };
@@ -1483,17 +2971,124 @@ declare class DynamicTableComponent {
1483
2971
  totalItems: number;
1484
2972
  itemsPerPage: number;
1485
2973
  currentPage: number;
2974
+ searchValue: string;
1486
2975
  pageChange: EventEmitter<number>;
1487
2976
  searchChange: EventEmitter<string>;
2977
+ pageSizeChange: EventEmitter<number>;
2978
+ pageSizeOptions: number[];
1488
2979
  showPagination: boolean;
1489
2980
  showSearch: boolean;
1490
2981
  showTitle: boolean;
1491
2982
  get totalPages(): number;
1492
2983
  onSearch(event: any): void;
1493
2984
  changePage(delta: number): void;
2985
+ changePageSize(event: any): void;
2986
+ private rowInjectors;
2987
+ ngOnChanges(changes: SimpleChanges): void;
1494
2988
  createInjector(row: any): Injector;
1495
2989
  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>;
2990
+ 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>;
2991
+ }
2992
+
2993
+ declare class TextExpandableComponent implements OnChanges {
2994
+ text: string;
2995
+ maxLength: number;
2996
+ fontSize: TextFontSize;
2997
+ allowHtml: boolean;
2998
+ maxLines?: number;
2999
+ protected expanded: boolean;
3000
+ ngOnChanges(): void;
3001
+ get plainText(): string;
3002
+ get truncated(): boolean;
3003
+ get visibleText(): string;
3004
+ get lines(): number;
3005
+ toggleExpanded(): void;
3006
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextExpandableComponent, never>;
3007
+ 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>;
3008
+ }
3009
+
3010
+ /**
3011
+ * Select genérico para editar un campo (típicamente "estado") directamente
3012
+ * en una celda de tabla, sin guardar de inmediato (QTN-49).
3013
+ *
3014
+ * Este componente es deliberadamente "tonto": no sabe a qué recurso
3015
+ * pertenece la fila ni cómo guardarla — solo muestra `options`, refleja
3016
+ * `value`, y emite `valueChange` cuando el usuario elige otra opción.
3017
+ * El componente que lo envuelve (p. ej. gift-bond-table-status en
3018
+ * tickera-backoffice-frontend) es quien conoce el id de la fila y decide
3019
+ * si guarda de inmediato o acumula el cambio en un
3020
+ * PendingChangesService + bulk-save-bar para guardado masivo.
3021
+ */
3022
+ declare class QuickStatusEditComponent {
3023
+ options: SelectOption[];
3024
+ value: any;
3025
+ /** Resalta visualmente la celda como "modificada, sin guardar". */
3026
+ dirty: boolean;
3027
+ disabled: boolean;
3028
+ valueChange: EventEmitter<any>;
3029
+ onChange(newValue: any): void;
3030
+ static ɵfac: i0.ɵɵFactoryDeclaration<QuickStatusEditComponent, never>;
3031
+ 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>;
3032
+ }
3033
+
3034
+ /**
3035
+ * Barra flotante "Guardar cambios" para guardado masivo (QTN-49).
3036
+ *
3037
+ * No conoce el recurso concreto ni cómo persistir los cambios — el
3038
+ * componente que la usa le pasa `[count]` (típicamente
3039
+ * `pendingChangesService.changeCount()`) y escucha `(save)`/`(discard)`
3040
+ * para llamar al endpoint bulk correspondiente.
3041
+ */
3042
+ declare class BulkSaveBarComponent {
3043
+ count: number;
3044
+ loading: boolean;
3045
+ saveLabel: string;
3046
+ discardLabel: string;
3047
+ save: EventEmitter<void>;
3048
+ discard: EventEmitter<void>;
3049
+ static ɵfac: i0.ɵɵFactoryDeclaration<BulkSaveBarComponent, never>;
3050
+ 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>;
3051
+ }
3052
+
3053
+ declare class ShowCardComponent {
3054
+ show: Show;
3055
+ linkText: string;
3056
+ linkUrlFn?: (show: Show) => string;
3057
+ linkQueryParams?: Record<string, any>;
3058
+ transloco: TranslocoService;
3059
+ dateService: DateService;
3060
+ get showTypeColor(): {
3061
+ bg: string;
3062
+ text: string;
3063
+ };
3064
+ formatTimeDate(date: string): Date;
3065
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowCardComponent, never>;
3066
+ 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>;
3067
+ }
3068
+
3069
+ declare class ShowTypeBadgeComponent {
3070
+ show: Show;
3071
+ size: BadgeSize;
3072
+ transloco: TranslocoService;
3073
+ get showTypeColor(): {
3074
+ bg: string;
3075
+ text: string;
3076
+ };
3077
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowTypeBadgeComponent, never>;
3078
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowTypeBadgeComponent, "show-type-badge", never, { "show": { "alias": "show"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
3079
+ }
3080
+
3081
+ declare class ShowCardSkeletonComponent {
3082
+ static ɵfac: i0.ɵɵFactoryDeclaration<ShowCardSkeletonComponent, never>;
3083
+ static ɵcmp: i0.ɵɵComponentDeclaration<ShowCardSkeletonComponent, "show-card-skeleton", never, {}, {}, never, never, true, never>;
3084
+ }
3085
+
3086
+ declare class AppBreadcumbComponent {
3087
+ homeUrl: string | undefined;
3088
+ steps: BreadcrumbStep[];
3089
+ theme: BreadcrumbTheme;
3090
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppBreadcumbComponent, never>;
3091
+ 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
3092
  }
1498
3093
 
1499
3094
  declare class LanguageSwitcherComponent {
@@ -1516,12 +3111,14 @@ declare class FormInputComponent implements ControlValueAccessor {
1516
3111
  placeholder: string;
1517
3112
  required: boolean;
1518
3113
  readonly: boolean;
3114
+ maxlength: number | null;
1519
3115
  minlength: number | null;
3116
+ max: number | null;
1520
3117
  min: number | null;
1521
3118
  step: number | null;
1522
3119
  pattern: string | null;
1523
3120
  fieldGroupClass: string;
1524
- autocomplete: boolean;
3121
+ autocomplete: string;
1525
3122
  value: any;
1526
3123
  disabled: boolean;
1527
3124
  onChange: any;
@@ -1538,12 +3135,68 @@ declare class FormInputComponent implements ControlValueAccessor {
1538
3135
  get inputClasses(): string;
1539
3136
  get fieldGroupClasses(): string;
1540
3137
  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>;
3138
+ 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>;
3139
+ }
3140
+
3141
+ type IdentityDocumentType = 'CC' | 'CE' | 'PA' | 'NIT' | 'TI' | 'RC';
3142
+ /**
3143
+ * Campo de documento de identidad (QTN-44).
3144
+ *
3145
+ * Componente compartido que, dado un `documentType` (CC, CE, PA, NIT, TI, RC),
3146
+ * aplica automáticamente el formato y las validaciones correspondientes a los
3147
+ * lineamientos de documentos de identidad de Colombia: solo dígitos y rango de
3148
+ * longitud para CC/TI/RC/NIT, alfanumérico con longitud máxima para CE/PA, y
3149
+ * validación opcional del dígito de verificación (DV) para NIT.
3150
+ *
3151
+ * Sigue el mismo patrón que `NumberInputComponent`: standalone,
3152
+ * `ControlValueAccessor` + `Validator` vía `NG_VALUE_ACCESSOR`/`NG_VALIDATORS`.
3153
+ */
3154
+ declare class IdentityDocumentInputComponent implements ControlValueAccessor, Validator, OnChanges {
3155
+ transloco: TranslocoService;
3156
+ private injector;
3157
+ private elementRef;
3158
+ label: string;
3159
+ name: string;
3160
+ id: string;
3161
+ placeholder: string;
3162
+ required: boolean;
3163
+ readonly: boolean;
3164
+ fieldGroupClass: string;
3165
+ documentType: IdentityDocumentType | '';
3166
+ validateCheckDigit: boolean;
3167
+ value: string | null;
3168
+ disabled: boolean;
3169
+ onChange: any;
3170
+ onTouched: any;
3171
+ private _ngControl;
3172
+ constructor(transloco: TranslocoService, injector: Injector, elementRef: ElementRef);
3173
+ get ngControl(): NgControl | null;
3174
+ ngOnChanges(changes: SimpleChanges): void;
3175
+ private get rule();
3176
+ get isDigitsOnly(): boolean;
3177
+ get inputMode(): string;
3178
+ get maxLength(): number | null;
3179
+ writeValue(value: any): void;
3180
+ registerOnChange(fn: any): void;
3181
+ registerOnTouched(fn: any): void;
3182
+ setDisabledState(isDisabled: boolean): void;
3183
+ onKeyDown(event: KeyboardEvent): void;
3184
+ onInput(rawValue: string): void;
3185
+ validate(control: AbstractControl): ValidationErrors | null;
3186
+ private validateLength;
3187
+ private validateNitWithCheckDigit;
3188
+ static computeNitCheckDigit(nit: string): number;
3189
+ get inputId(): string;
3190
+ get showError(): boolean;
3191
+ get errorMessage(): string;
3192
+ get fieldGroupClasses(): string;
3193
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdentityDocumentInputComponent, never>;
3194
+ 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
3195
  }
1543
3196
 
1544
3197
  declare class FormSelectComponent implements ControlValueAccessor {
1545
3198
  ngControl: NgControl;
1546
- private transloco;
3199
+ protected transloco: TranslocoService;
1547
3200
  label: string;
1548
3201
  name: string;
1549
3202
  id: string;
@@ -1567,7 +3220,6 @@ declare class FormSelectComponent implements ControlValueAccessor {
1567
3220
  get inputId(): string;
1568
3221
  get showError(): boolean;
1569
3222
  get errorMessage(): string;
1570
- get resolvedDefaultOptionLabel(): string;
1571
3223
  get fieldGroupClasses(): string;
1572
3224
  static ɵfac: i0.ɵɵFactoryDeclaration<FormSelectComponent, [{ optional: true; self: true; }, null]>;
1573
3225
  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 +3257,105 @@ declare class FormTextareaComponent implements ControlValueAccessor {
1605
3257
  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
3258
  }
1607
3259
 
3260
+ declare class NumberInputComponent implements ControlValueAccessor, Validator, OnChanges {
3261
+ transloco: TranslocoService;
3262
+ private injector;
3263
+ private elementRef;
3264
+ label: string;
3265
+ name: string;
3266
+ id: string;
3267
+ placeholder: string;
3268
+ required: boolean;
3269
+ readonly: boolean;
3270
+ min: number | null;
3271
+ max: number | null;
3272
+ step: number;
3273
+ fieldGroupClass: string;
3274
+ value: number | null;
3275
+ disabled: boolean;
3276
+ onChange: any;
3277
+ onTouched: any;
3278
+ private _ngControl;
3279
+ constructor(transloco: TranslocoService, injector: Injector, elementRef: ElementRef);
3280
+ get ngControl(): NgControl | null;
3281
+ ngOnChanges(changes: SimpleChanges): void;
3282
+ validate(control: AbstractControl): ValidationErrors | null;
3283
+ writeValue(value: any): void;
3284
+ registerOnChange(fn: any): void;
3285
+ registerOnTouched(fn: any): void;
3286
+ setDisabledState(isDisabled: boolean): void;
3287
+ onInput(value: any): void;
3288
+ increment(): void;
3289
+ decrement(): void;
3290
+ get canIncrement(): boolean;
3291
+ get canDecrement(): boolean;
3292
+ get inputId(): string;
3293
+ get showError(): boolean;
3294
+ get errorMessage(): string;
3295
+ get fieldGroupClasses(): string;
3296
+ private clamp;
3297
+ private round;
3298
+ private emitNativeChange;
3299
+ private minValidator;
3300
+ private maxValidator;
3301
+ static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputComponent, never>;
3302
+ 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>;
3303
+ }
3304
+
3305
+ declare class PhoneInputComponent implements ControlValueAccessor, Validator, OnChanges {
3306
+ private transloco;
3307
+ private injector;
3308
+ label: string;
3309
+ name: string;
3310
+ id: string;
3311
+ placeholder: string;
3312
+ required: boolean;
3313
+ readonly: boolean;
3314
+ maxNationalDigits: number | null;
3315
+ minNationalDigits: number | null;
3316
+ defaultCountry: string;
3317
+ fieldGroupClass: string;
3318
+ readonly countries: tickera_angular_components.PhoneCountry[];
3319
+ readonly phoneOptions: {
3320
+ search: string;
3321
+ name: string;
3322
+ isoCode: string;
3323
+ dialCode: string;
3324
+ }[];
3325
+ selectedIso: string;
3326
+ nationalNumber: string;
3327
+ disabled: boolean;
3328
+ onChange: any;
3329
+ onTouched: any;
3330
+ onValidatorChange: () => void;
3331
+ private _ngControl;
3332
+ constructor(transloco: TranslocoService, injector: Injector);
3333
+ get ngControl(): NgControl | null;
3334
+ get selectedCountry(): tickera_angular_components.PhoneCountry;
3335
+ get dialCode(): string;
3336
+ dialCodeOf(isoCode: string): string;
3337
+ get value(): string;
3338
+ ngOnChanges(changes: SimpleChanges): void;
3339
+ registerOnValidatorChange(fn: () => void): void;
3340
+ validate(control: AbstractControl): ValidationErrors | null;
3341
+ writeValue(value: string | null | undefined): void;
3342
+ registerOnChange(fn: any): void;
3343
+ registerOnTouched(fn: any): void;
3344
+ setDisabledState(isDisabled: boolean): void;
3345
+ onInput(event: Event): void;
3346
+ onCountryChange(isoCode: string): void;
3347
+ get inputId(): string;
3348
+ get showError(): boolean;
3349
+ get errorMessage(): string;
3350
+ get effectivePlaceholder(): string;
3351
+ get fieldGroupClasses(): string;
3352
+ flag(isoCode: string): string;
3353
+ private sanitize;
3354
+ private nationalDigits;
3355
+ static ɵfac: i0.ɵɵFactoryDeclaration<PhoneInputComponent, never>;
3356
+ 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>;
3357
+ }
3358
+
1608
3359
  declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {
1609
3360
  ngControl: NgControl;
1610
3361
  private transloco;
@@ -1622,7 +3373,8 @@ declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDes
1622
3373
  onChange: any;
1623
3374
  onTouched: any;
1624
3375
  private subscription;
1625
- constructor(ngControl: NgControl, transloco: TranslocoService);
3376
+ isBrowser: boolean;
3377
+ constructor(ngControl: NgControl, transloco: TranslocoService, platformId: object);
1626
3378
  ngOnInit(): void;
1627
3379
  ngOnDestroy(): void;
1628
3380
  writeValue(value: any): void;
@@ -1633,7 +3385,7 @@ declare class FormEditorComponent implements ControlValueAccessor, OnInit, OnDes
1633
3385
  get showError(): boolean;
1634
3386
  get errorMessage(): string;
1635
3387
  get fieldGroupClasses(): string;
1636
- static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, [{ optional: true; self: true; }, null]>;
3388
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, [{ optional: true; self: true; }, null, null]>;
1637
3389
  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
3390
  }
1639
3391
 
@@ -2284,6 +4036,28 @@ declare class PriceZoneSelectComponent implements OnInit, OnDestroy, ControlValu
2284
4036
  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
4037
  }
2286
4038
 
4039
+ declare class PerformanceTicketStatusBadgeComponent {
4040
+ ticket: PerformanceTicket;
4041
+ size: BadgeSize;
4042
+ protected get statusColors(): {
4043
+ text: string;
4044
+ bg: string;
4045
+ };
4046
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceTicketStatusBadgeComponent, never>;
4047
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceTicketStatusBadgeComponent, "performance-ticket-status-badge", never, { "ticket": { "alias": "ticket"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4048
+ }
4049
+
4050
+ declare class PerformanceStatusBadgeComponent {
4051
+ performance: Performance;
4052
+ size: BadgeSize;
4053
+ protected get statusColors(): {
4054
+ text: string;
4055
+ bg: string;
4056
+ };
4057
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceStatusBadgeComponent, never>;
4058
+ static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceStatusBadgeComponent, "performance-status-badge", never, { "performance": { "alias": "performance"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4059
+ }
4060
+
2287
4061
  declare class DaySelectorGridComponent {
2288
4062
  private platformId;
2289
4063
  protected performanceService: PerformanceService;
@@ -2305,11 +4079,15 @@ declare class DaySelectorGridComponent {
2305
4079
  declare class PerformanceCardComponent {
2306
4080
  protected listEventService: PerformancesListEventsService;
2307
4081
  card: DailyPerformanceItem;
4082
+ linkText: string;
4083
+ linkUrlFn?: (card: DailyPerformanceItem) => string;
4084
+ linkQueryParams?: Record<string, any>;
2308
4085
  constructor(listEventService: PerformancesListEventsService);
4086
+ get badgeColor(): 'success' | 'error';
2309
4087
  onSelect(): void;
2310
4088
  isSelected(): boolean;
2311
4089
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceCardComponent, never>;
2312
- static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardComponent, "performance-card", never, { "card": { "alias": "card"; "required": true; }; }, {}, never, never, true, never>;
4090
+ 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
4091
  }
2314
4092
 
2315
4093
  declare class PerformanceCardListComponent {
@@ -2317,6 +4095,9 @@ declare class PerformanceCardListComponent {
2317
4095
  protected performanceService: PerformanceService;
2318
4096
  protected listEventService: PerformancesListEventsService;
2319
4097
  protected toastService: ToastService;
4098
+ linkText: string;
4099
+ linkUrlFn?: (card: DailyPerformanceItem) => string;
4100
+ linkQueryParams?: Record<string, any>;
2320
4101
  loadingData: WritableSignal<boolean>;
2321
4102
  performances: WritableSignal<DailyPerformanceItem[]>;
2322
4103
  constructor(platformId: object, performanceService: PerformanceService, listEventService: PerformancesListEventsService, toastService: ToastService);
@@ -2324,7 +4105,7 @@ declare class PerformanceCardListComponent {
2324
4105
  private loadData;
2325
4106
  get selectedDayDate(): string | null;
2326
4107
  static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceCardListComponent, never>;
2327
- static ɵcmp: i0.ɵɵComponentDeclaration<PerformanceCardListComponent, "performance-card-list", never, {}, {}, never, never, true, never>;
4108
+ 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
4109
  }
2329
4110
 
2330
4111
  declare class PerformanceStepperComponent {
@@ -2353,9 +4134,9 @@ declare class ShowsFilterComponent {
2353
4134
  }
2354
4135
 
2355
4136
  interface PriceZoneItem {
2356
- colorClass: string;
4137
+ color: string;
2357
4138
  name: string;
2358
- seatsAvailable: number;
4139
+ available_seats: number;
2359
4140
  price: string;
2360
4141
  }
2361
4142
 
@@ -2371,5 +4152,445 @@ declare class ZonePriceListComponent {
2371
4152
  static ɵcmp: i0.ɵɵComponentDeclaration<ZonePriceListComponent, "zone-price-list", never, { "zones": { "alias": "zones"; "required": true; }; }, {}, never, never, true, never>;
2372
4153
  }
2373
4154
 
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 };
4155
+ declare class TicketMapWidgetComponent {
4156
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWidgetComponent, never>;
4157
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWidgetComponent, "ticket-map-widget", never, {}, {}, never, ["*"], true, never>;
4158
+ }
4159
+
4160
+ declare class TicketMapWidgetHeaderComponent {
4161
+ title: string;
4162
+ subtitle: string;
4163
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWidgetHeaderComponent, never>;
4164
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapWidgetHeaderComponent, "ticket-map-widget-header", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; }, {}, never, ["*"], true, never>;
4165
+ }
4166
+
4167
+ declare class TicketMapZoomControlsComponent {
4168
+ private zoomService;
4169
+ readonly currentZoom: i0.Signal<number>;
4170
+ readonly zoomPercentage: i0.Signal<string>;
4171
+ constructor(zoomService: TicketMapZoomService);
4172
+ zoomIn(): void;
4173
+ zoomOut(): void;
4174
+ resetZoom(): void;
4175
+ fitToContainer(): void;
4176
+ handleZoomAction(action: string): void;
4177
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapZoomControlsComponent, never>;
4178
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapZoomControlsComponent, "ticket-map-zoom-controls", never, {}, {}, never, never, true, never>;
4179
+ }
4180
+
4181
+ declare class TicketMapFloorSelectorComponent {
4182
+ private bookingDataService;
4183
+ readonly availableFloors: i0.Signal<tickera_angular_components.HallFloor[]>;
4184
+ readonly visibleFloorIds: i0.Signal<Set<number>>;
4185
+ readonly hasMultipleVisible: i0.Signal<boolean>;
4186
+ constructor(bookingDataService: PerformanceBookingDataService);
4187
+ isFloorVisible(floorId: number): boolean;
4188
+ canToggleOff(floorId: number): boolean;
4189
+ toggleFloor(floorId: number): void;
4190
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapFloorSelectorComponent, never>;
4191
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapFloorSelectorComponent, "ticket-map-floor-selector", never, {}, {}, never, never, true, never>;
4192
+ }
4193
+
4194
+ declare class PerformanceTicketMapComponent implements OnDestroy, AfterViewInit {
4195
+ private platformId;
4196
+ protected bookingDataService: PerformanceBookingDataService;
4197
+ protected feedbackModalService: FeedbackModalService;
4198
+ protected selectionService: TicketSelectionService;
4199
+ protected zoomService: TicketMapZoomService;
4200
+ selectionChange: EventEmitter<PerformanceTicket[]>;
4201
+ needsLoginError: EventEmitter<any>;
4202
+ readOnly: boolean;
4203
+ needsLogin: boolean;
4204
+ isLoggedIn: boolean;
4205
+ stageComponent?: StageComponent;
4206
+ protected tooltipData: i0.WritableSignal<TicketMapTooltipData | null>;
4207
+ protected renderData: i0.Signal<ElementRenderData[]>;
4208
+ private stageReady;
4209
+ private autoFitDone;
4210
+ private resizeObserver?;
4211
+ protected floorLayerRefs: i0.Signal<readonly CoreShapeComponent[]>;
4212
+ protected floorLayerName(floorId: number): string;
4213
+ protected floorGroups: i0.Signal<{
4214
+ floorId: number;
4215
+ elements: ElementRenderData[];
4216
+ }[]>;
4217
+ constructor(platformId: object, bookingDataService: PerformanceBookingDataService, feedbackModalService: FeedbackModalService, selectionService: TicketSelectionService, zoomService: TicketMapZoomService);
4218
+ protected get isBrowser(): boolean;
4219
+ ngAfterViewInit(): void;
4220
+ private setupResizeObserver;
4221
+ private syncStageToContainer;
4222
+ ngOnDestroy(): void;
4223
+ private getInternalPointer;
4224
+ protected selectHallFloor(floorId: number): void;
4225
+ protected handleStageClick(konvaEvent: any): void;
4226
+ protected handleStageMouseMove(konvaEvent: any): void;
4227
+ protected handleStageMouseLeave(): void;
4228
+ protected handleWheel(konvaEvent: any): void;
4229
+ protected trackByElementId(_index: number, item: ElementRenderData): number;
4230
+ protected trackByFloorId(_index: number, floor: HallFloorOption): HallFloorOption;
4231
+ static ɵfac: i0.ɵɵFactoryDeclaration<PerformanceTicketMapComponent, never>;
4232
+ 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>;
4233
+ }
4234
+
4235
+ declare class TicketMapPriceZonesComponent {
4236
+ title: string;
4237
+ protected bookingDataService: PerformanceBookingDataService;
4238
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapPriceZonesComponent, never>;
4239
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapPriceZonesComponent, "ticket-map-price-zones", never, { "title": { "alias": "title"; "required": false; }; }, {}, never, never, true, never>;
4240
+ }
4241
+
4242
+ declare class TicketMapProductSelectionItemComponent {
4243
+ protected selectionService: TicketSelectionService;
4244
+ product: Product;
4245
+ constructor(selectionService: TicketSelectionService);
4246
+ get quantity(): number;
4247
+ get firstImage(): string | undefined;
4248
+ increment(): void;
4249
+ decrement(): void;
4250
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapProductSelectionItemComponent, never>;
4251
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketMapProductSelectionItemComponent, "ticket-map-product-selection-item", never, { "product": { "alias": "product"; "required": true; }; }, {}, never, never, true, never>;
4252
+ }
4253
+
4254
+ declare class TIcketMapProductSelectionComponent {
4255
+ title: string;
4256
+ subtitle: string;
4257
+ private bookingDataService;
4258
+ readonly products: i0.Signal<tickera_angular_components.Product[]>;
4259
+ static ɵfac: i0.ɵɵFactoryDeclaration<TIcketMapProductSelectionComponent, never>;
4260
+ static ɵcmp: i0.ɵɵComponentDeclaration<TIcketMapProductSelectionComponent, "ticket-map-product-selection", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; }, {}, never, never, true, never>;
4261
+ }
4262
+
4263
+ declare class TicketMapTotalsComponent {
4264
+ protected bookingDataService: PerformanceBookingDataService;
4265
+ protected selectionDetailsService: TicketSelectionDetailsService;
4266
+ protected selectionDiscountService: TicketSelectionDiscountService;
4267
+ protected selectionTotalsService: TicketSelectionTotalsService;
4268
+ protected selectionService: TicketSelectionService;
4269
+ private activatedRoute;
4270
+ title: string;
4271
+ buttonText: string;
4272
+ loadingButtonText: string;
4273
+ isLoading: boolean;
4274
+ onPurchaseClick: EventEmitter<void>;
4275
+ constructor(bookingDataService: PerformanceBookingDataService, selectionDetailsService: TicketSelectionDetailsService, selectionDiscountService: TicketSelectionDiscountService, selectionTotalsService: TicketSelectionTotalsService, selectionService: TicketSelectionService, activatedRoute: ActivatedRoute);
4276
+ get serviceFee(): number;
4277
+ get performanceId(): number;
4278
+ get selectedTicketIds(): number[];
4279
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapTotalsComponent, never>;
4280
+ 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>;
4281
+ }
4282
+
4283
+ declare class TicketMapWrapperComponent {
4284
+ selectionChange: EventEmitter<PerformanceTicket[]>;
4285
+ needsLoginError: EventEmitter<any>;
4286
+ readOnly: boolean;
4287
+ needsLogin: boolean;
4288
+ isLoggedIn: boolean;
4289
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketMapWrapperComponent, never>;
4290
+ 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>;
4291
+ }
4292
+
4293
+ declare class SeatSelectionEmptySummaryComponent {
4294
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionEmptySummaryComponent, never>;
4295
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionEmptySummaryComponent, "seat-selection-empty-summary", never, {}, {}, never, never, true, never>;
4296
+ }
4297
+
4298
+ declare class SeatSelectionSummaryComponent {
4299
+ protected selectionService: TicketSelectionService;
4300
+ title: string;
4301
+ clearButtonText: string;
4302
+ constructor(selectionService: TicketSelectionService);
4303
+ trackByItem(item: PerformanceTicket): string | number;
4304
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionSummaryComponent, never>;
4305
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionSummaryComponent, "seat-selection-summary", never, { "title": { "alias": "title"; "required": false; }; "clearButtonText": { "alias": "clearButtonText"; "required": false; }; }, {}, never, never, true, never>;
4306
+ }
4307
+
4308
+ declare class SeatSelectionSummaryItemComponent {
4309
+ protected selectionService: TicketSelectionService;
4310
+ item: PerformanceTicket;
4311
+ constructor(selectionService: TicketSelectionService);
4312
+ getItemTypeIcon: (ticket: PerformanceTicket) => string;
4313
+ get isZone(): boolean;
4314
+ get zoneMax(): number;
4315
+ onZoneQuantityChange(value: number | null): void;
4316
+ removeItem(ticket: PerformanceTicket): void;
4317
+ static ɵfac: i0.ɵɵFactoryDeclaration<SeatSelectionSummaryItemComponent, never>;
4318
+ static ɵcmp: i0.ɵɵComponentDeclaration<SeatSelectionSummaryItemComponent, "seat-selection-summary-item", never, { "item": { "alias": "item"; "required": true; }; }, {}, never, never, true, never>;
4319
+ }
4320
+
4321
+ declare class ConfirmationOrderModalComponent {
4322
+ private confirmationOrderModalService;
4323
+ private selectionDiscountService;
4324
+ private selectionTotalsService;
4325
+ private selectionService;
4326
+ private bookingDataService;
4327
+ modalTitle: string;
4328
+ confirmButtonText: string;
4329
+ confirmButtonTextLoading: string;
4330
+ loading: boolean;
4331
+ onConfirm: EventEmitter<any>;
4332
+ constructor(confirmationOrderModalService: ConfirmationOrderModalService, selectionDiscountService: TicketSelectionDiscountService, selectionTotalsService: TicketSelectionTotalsService, selectionService: TicketSelectionService, bookingDataService: PerformanceBookingDataService);
4333
+ get isOpen(): i0.WritableSignal<boolean>;
4334
+ get showTitle(): string | null;
4335
+ get performanceStartTime(): Date | string | null;
4336
+ get hallName(): string | null;
4337
+ get venueName(): string | null;
4338
+ get ticketItems(): PerformanceTicket[];
4339
+ get selectedProducts(): {
4340
+ product: Product;
4341
+ quantity: number;
4342
+ }[];
4343
+ ticketItemLabel(ticket: PerformanceTicket): string;
4344
+ ticketItemPrice(ticket: PerformanceTicket): number;
4345
+ private elementTypeLabel;
4346
+ get selectedCount(): number;
4347
+ get serviceFee(): number;
4348
+ get subtotalValue(): number;
4349
+ get ticketSubtotal(): number;
4350
+ get productSubtotal(): number;
4351
+ get productCount(): number;
4352
+ get totalValue(): number;
4353
+ get totalDiscounted(): number | null;
4354
+ get coupon(): tickera_angular_components.Coupon | null;
4355
+ get corporateBond(): tickera_angular_components.CorporateBond | null;
4356
+ get giftBond(): tickera_angular_components.GiftBondPurchase | null;
4357
+ get vipCard(): tickera_angular_components.VipCard | null;
4358
+ /**
4359
+ * A diferencia de coupon/corporateBond/giftBond (que aquí muestran su
4360
+ * valor crudo sin pasar por `discountAmount()`), para VIP sí se calcula
4361
+ * el monto real en pesos, ya que el descuento es un porcentaje.
4362
+ */
4363
+ get vipDiscountAmount(): number;
4364
+ onClose(): void;
4365
+ confirmOrder(): void;
4366
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationOrderModalComponent, never>;
4367
+ 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>;
4368
+ }
4369
+
4370
+ declare class OrderInformationComponent {
4371
+ readonly transloco: TranslocoService;
4372
+ private readonly toastService;
4373
+ order: Order;
4374
+ showPayButton: boolean;
4375
+ createMpPreference?: (order: Order) => Observable<MercadoPagoPreference>;
4376
+ paymentLinkCreated: EventEmitter<MercadoPagoPreference>;
4377
+ isLoading: boolean;
4378
+ constructor(transloco: TranslocoService, toastService: ToastService);
4379
+ get showMpButton(): boolean;
4380
+ payWithMercadoPago(): void;
4381
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderInformationComponent, never>;
4382
+ 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>;
4383
+ }
4384
+
4385
+ declare class OrderStatusBadgeComponent {
4386
+ protected transloco: TranslocoService;
4387
+ order: Order | RecentOrder;
4388
+ size: BadgeSize;
4389
+ constructor(transloco: TranslocoService);
4390
+ protected get statusColors(): {
4391
+ text: string;
4392
+ bg: string;
4393
+ };
4394
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderStatusBadgeComponent, never>;
4395
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderStatusBadgeComponent, "order-status-badge", never, { "order": { "alias": "order"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4396
+ }
4397
+
4398
+ declare class OrderItemTypeBadgeComponent {
4399
+ protected transloco: TranslocoService;
4400
+ item: OrderItem;
4401
+ size: BadgeSize;
4402
+ constructor(transloco: TranslocoService);
4403
+ protected get statusColors(): {
4404
+ text: string;
4405
+ bg: string;
4406
+ };
4407
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderItemTypeBadgeComponent, never>;
4408
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderItemTypeBadgeComponent, "order-item-type-badge", never, { "item": { "alias": "item"; "required": true; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
4409
+ }
4410
+
4411
+ declare class OrderItemsComponent {
4412
+ private ticketQrModalService;
4413
+ order: Order;
4414
+ isCustomer: boolean;
4415
+ ticketCanOpenQr: (order: Order, ticket: tickera_angular_components.PerformanceTicket) => boolean;
4416
+ constructor(ticketQrModalService: TicketQrModalService);
4417
+ protected get orderItems(): Order['order_items'];
4418
+ protected get products(): Order['order_items'];
4419
+ protected get tickets(): Order['order_items'];
4420
+ protected get giftBonds(): Order['order_items'];
4421
+ protected get corporateBonds(): Order['order_items'];
4422
+ protected get vipRecharges(): Order['order_items'];
4423
+ protected get showActionColumn(): boolean;
4424
+ protected itemTotal(quantity: number, price: number): number;
4425
+ protected hasDiscount(): boolean;
4426
+ protected get totals(): {
4427
+ giftBonds: number;
4428
+ corporateBonds: number;
4429
+ products: number;
4430
+ tickets: number;
4431
+ vipRecharges: number;
4432
+ };
4433
+ openTicketQr(ticketUuid: string, description: string): void;
4434
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderItemsComponent, never>;
4435
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderItemsComponent, "order-items", never, { "order": { "alias": "order"; "required": true; }; "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4436
+ }
4437
+
4438
+ declare class OrderDiscountAppliedComponent {
4439
+ order: Order;
4440
+ protected get discountInfo(): OrderDiscountInfo;
4441
+ protected get hasDiscount(): boolean;
4442
+ protected get discountPercentage(): number | null;
4443
+ protected get badgeColors(): {
4444
+ text: string;
4445
+ bg: string;
4446
+ };
4447
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderDiscountAppliedComponent, never>;
4448
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderDiscountAppliedComponent, "order-discount-applied", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4449
+ }
4450
+
4451
+ interface BillingField {
4452
+ label: string;
4453
+ value: string | number | null;
4454
+ }
4455
+ declare class OrderBillingInfoComponent {
4456
+ order: Order;
4457
+ protected get fields(): BillingField[];
4458
+ protected get hasFields(): boolean;
4459
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderBillingInfoComponent, never>;
4460
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderBillingInfoComponent, "order-billing-info", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4461
+ }
4462
+
4463
+ declare class OrderTransactionsComponent {
4464
+ private transactionDetailsModalService;
4465
+ order: Order;
4466
+ constructor(transactionDetailsModalService: OrderTransactionDetailsModalService);
4467
+ protected get transactions(): Transaction[];
4468
+ protected get hasTransactions(): boolean;
4469
+ protected get txColors(): Record<string, {
4470
+ text: string;
4471
+ bg: string;
4472
+ }>;
4473
+ protected openTransaction(transaction: Transaction): void;
4474
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionsComponent, never>;
4475
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderTransactionsComponent, "order-transactions", never, { "order": { "alias": "order"; "required": true; }; }, {}, never, never, true, never>;
4476
+ }
4477
+
4478
+ declare class OrderTransactionDetailsModalComponent {
4479
+ private modalService;
4480
+ isOpen: WritableSignal<boolean> | null;
4481
+ transaction: Transaction | null;
4482
+ get modalIsOpen(): WritableSignal<boolean>;
4483
+ get selectedTransaction(): WritableSignal<Transaction | null>;
4484
+ protected get txColors(): Record<TransactionStatus, {
4485
+ text: string;
4486
+ bg: string;
4487
+ }>;
4488
+ protected get gatewayResponse(): string;
4489
+ onClose(): void;
4490
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrderTransactionDetailsModalComponent, never>;
4491
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrderTransactionDetailsModalComponent, "order-transaction-details-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "transaction": { "alias": "transaction"; "required": false; }; }, {}, never, never, true, never>;
4492
+ }
4493
+
4494
+ declare class TicketQrComponent implements OnInit, OnDestroy {
4495
+ private ticketQrService;
4496
+ private platformId;
4497
+ ticketUuid: string;
4498
+ isCustomer: boolean;
4499
+ qrCanvas: ElementRef<HTMLCanvasElement>;
4500
+ loading: i0.WritableSignal<boolean>;
4501
+ error: i0.WritableSignal<boolean>;
4502
+ refreshing: i0.WritableSignal<boolean>;
4503
+ countdown: i0.WritableSignal<number>;
4504
+ downloading: i0.WritableSignal<boolean>;
4505
+ private destroy$;
4506
+ private refreshTimeout;
4507
+ private countdownInterval;
4508
+ private isFetching;
4509
+ constructor(ticketQrService: TicketQrService, platformId: Object);
4510
+ ngOnInit(): void;
4511
+ ngOnDestroy(): void;
4512
+ private onVisibilityChange;
4513
+ private onFocus;
4514
+ private refreshFromReenter;
4515
+ retry(): void;
4516
+ downloadPdf(): void;
4517
+ private clearTimers;
4518
+ private fetchAndRender;
4519
+ private scheduleRefresh;
4520
+ private startCountdown;
4521
+ private renderQr;
4522
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrComponent, never>;
4523
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketQrComponent, "performance-ticket-qr", never, { "ticketUuid": { "alias": "ticketUuid"; "required": true; }; "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4524
+ }
4525
+
4526
+ declare class TicketQrModalComponent {
4527
+ private ticketQrModalService;
4528
+ isCustomer: boolean;
4529
+ constructor(ticketQrModalService: TicketQrModalService);
4530
+ get isOpen(): i0.WritableSignal<boolean>;
4531
+ get ticketUuid(): i0.WritableSignal<string | null>;
4532
+ get ticketDescription(): i0.WritableSignal<string | null>;
4533
+ onClose(): void;
4534
+ static ɵfac: i0.ɵɵFactoryDeclaration<TicketQrModalComponent, never>;
4535
+ static ɵcmp: i0.ɵɵComponentDeclaration<TicketQrModalComponent, "ticket-qr-modal", never, { "isCustomer": { "alias": "isCustomer"; "required": false; }; }, {}, never, never, true, never>;
4536
+ }
4537
+
4538
+ declare class VipBalanceCardComponent {
4539
+ card: VipCard | null;
4540
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipBalanceCardComponent, never>;
4541
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipBalanceCardComponent, "vip-balance-card", never, { "card": { "alias": "card"; "required": false; }; }, {}, never, never, true, never>;
4542
+ }
4543
+
4544
+ declare class VipCardStatusBadgeComponent {
4545
+ protected readonly tranloco: TranslocoService;
4546
+ card: VipCard;
4547
+ get statusColor(): BadgeColor;
4548
+ get statusTranslationKey(): string;
4549
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipCardStatusBadgeComponent, never>;
4550
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipCardStatusBadgeComponent, "vip-card-status-badge", never, { "card": { "alias": "card"; "required": true; }; }, {}, never, never, true, never>;
4551
+ }
4552
+
4553
+ declare class VipRechargeModalComponent implements OnChanges {
4554
+ private fb;
4555
+ protected transloco: TranslocoService;
4556
+ title: string;
4557
+ submitLabel: string;
4558
+ loading: boolean;
4559
+ amountStep: number;
4560
+ minAmount: number;
4561
+ maxAmount: number;
4562
+ isOpen: WritableSignal<boolean>;
4563
+ /**
4564
+ * Cuando es true (uso desde el ecommerce/cliente), el método de pago queda
4565
+ * fijo en Mercado Pago y no se muestra el selector: desde el lado del
4566
+ * cliente no se pueden elegir métodos de pago administrativos (efectivo,
4567
+ * datáfono, nómina, cambios internos, etc.), esos son exclusivos del
4568
+ * backoffice.
4569
+ */
4570
+ restrictToMercadoPago: boolean;
4571
+ closeModal: EventEmitter<void>;
4572
+ confirm: EventEmitter<VipRechargeConfirmPayload>;
4573
+ rechargeForm: FormGroup;
4574
+ paymentMethodOptions: {
4575
+ label: string;
4576
+ value: string;
4577
+ }[];
4578
+ constructor(fb: FormBuilder, transloco: TranslocoService);
4579
+ ngOnChanges(changes: SimpleChanges): void;
4580
+ private applyPaymentMethodRestriction;
4581
+ onClose(): void;
4582
+ onSubmit(): void;
4583
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipRechargeModalComponent, never>;
4584
+ 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>;
4585
+ }
4586
+
4587
+ declare class VipTransactionsTableComponent {
4588
+ transactions: VipTransaction[];
4589
+ loading: boolean;
4590
+ typeLabel(type: VipTransactionType): string;
4591
+ static ɵfac: i0.ɵɵFactoryDeclaration<VipTransactionsTableComponent, never>;
4592
+ static ɵcmp: i0.ɵɵComponentDeclaration<VipTransactionsTableComponent, "vip-transactions-table", never, { "transactions": { "alias": "transactions"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, {}, never, never, true, never>;
4593
+ }
4594
+
4595
+ 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_FLOOR_HOVER_FADE_MS, TICKET_MAP_FLOOR_HOVER_OPACITY, TICKET_MAP_GRID_SIZE, TICKET_MAP_LAST_TICKETS_LIMIT, TICKET_MAP_TITLE_HEIGHT, TICKET_STATUS_COLORS, TICKET_STATUS_FILLS, TICKET_STATUS_LABELS, TIcketMapProductSelectionComponent, TRANSACTION_STATUS_COLORS, TextExpandableComponent, TickeraTranslocoLoader, TicketMapFloorSelectorComponent, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, VIP_CARDS_API_ROUTES, VipBalanceCardComponent, VipCardService, VipCardStatus, VipCardStatusBadgeComponent, VipRechargeModalComponent, VipTransactionType, VipTransactionsTableComponent, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, emailValidator, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter, parseJsonToFormDataAdvanced, phoneCountryFlag, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, ticketCanOpenQr, tintColor, transformImageToFile, transformUrlParams };
4596
+ 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 };