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

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