@gomusdev/web-components 1.20.1 → 1.22.0

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.
Files changed (39) hide show
  1. package/dist-js/components/cart/mocks/gomusTicketMocks.d.ts +107 -10
  2. package/dist-js/components/cart/mocks/testCart.d.ts +1 -1
  3. package/dist-js/components/link/Link.svelte.d.ts +1 -0
  4. package/dist-js/components/link/entry.d.ts +0 -0
  5. package/dist-js/components/ticketSelection/TicketSelectionDetails.svelte.d.ts +6 -7
  6. package/dist-js/components/ticketSelection/subcomponents/calendar/lib/calendar.svelte.d.ts +24 -8
  7. package/dist-js/components/ticketSelection/subcomponents/tickets/subcomponents/segment/TicketSegment.svelte.d.ts +1 -767
  8. package/dist-js/components/ticketSelection/subcomponents/tickets/subcomponents/segment/TicketSegmentDetails.svelte.d.ts +1027 -0
  9. package/dist-js/components/ticketSelection/subcomponents/tickets/subcomponents/utils.svelte.d.ts +2 -7
  10. package/dist-js/gomus-webcomponents.css +9 -2
  11. package/dist-js/gomus-webcomponents.iife.js +757 -482
  12. package/dist-js/gomus-webcomponents.js +757 -482
  13. package/dist-js/lib/helpers/context.svelte.d.ts +1 -0
  14. package/dist-js/lib/models/cart/CartEvents.svelte.d.ts +1 -0
  15. package/dist-js/lib/models/cart/CartItem.d.ts +37 -0
  16. package/dist-js/lib/models/cart/cart.svelte.d.ts +191 -0
  17. package/dist-js/lib/models/cart/localStorage.spec.d.ts +1 -0
  18. package/dist-js/lib/models/cart/localStorage.svelte.d.ts +46 -0
  19. package/dist-js/lib/models/cart/selectOptions.d.ts +10 -0
  20. package/dist-js/lib/models/cart/selectOptions.spec.d.ts +1 -0
  21. package/dist-js/lib/models/cart/types.d.ts +13 -0
  22. package/dist-js/lib/models/scalePrice/UIScaledPrice.spec.d.ts +1 -0
  23. package/dist-js/lib/models/scalePrice/UIScaledPrice.svelte.d.ts +51 -0
  24. package/dist-js/lib/models/ticket/UITicket.spec.d.ts +1 -0
  25. package/dist-js/lib/{gomusTicket.svelte.d.ts → models/ticket/UITicket.svelte.d.ts} +109 -11
  26. package/dist-js/lib/stores/shop.svelte.d.ts +41 -0
  27. package/dist-js/lib/vitest/msw/handlers.d.ts +1 -1
  28. package/dist-js/mocks/MSWMocks.d.ts +3 -0
  29. package/dist-js/mocks/ScalingPricesMocks.d.ts +24 -0
  30. package/dist-js/mocks/mocks.d.ts +1324 -695
  31. package/package.json +1 -1
  32. package/dist-js/components/cart/lib/CartEvents.svelte.d.ts +0 -1
  33. package/dist-js/components/cart/lib/CartItem.d.ts +0 -135
  34. package/dist-js/components/cart/lib/cart.svelte.d.ts +0 -616
  35. package/dist-js/components/cart/lib/localStorage.svelte.d.ts +0 -146
  36. /package/dist-js/components/{cart/lib/CartEvents.spec.d.ts → link/Link.spec.d.ts} +0 -0
  37. /package/dist-js/components/{cart/lib/cart.svelte.spec.d.ts → ticketSelection/subcomponents/tickets/subcomponents/segment/TicketSegment.spec.d.ts} +0 -0
  38. /package/dist-js/{components/cart/lib/localStorage.spec.d.ts → lib/models/cart/CartEvents.spec.d.ts} +0 -0
  39. /package/dist-js/lib/{gomusTicket.spec.d.ts → models/cart/cart.svelte.spec.d.ts} +0 -0
@@ -6,6 +6,7 @@ export declare class DetailsWrapper<T> {
6
6
  pollDuration: number;
7
7
  error: boolean;
8
8
  constructor(host: HTMLElement, KEY: string, pollDuration?: number);
9
+ static static<T>(data: T): DetailsWrapper<T>;
9
10
  load(): void;
10
11
  get value(): T | undefined;
11
12
  set value(newValue: T | undefined);
@@ -0,0 +1 @@
1
+ export declare function dispatchCartEvents(): void;
@@ -0,0 +1,37 @@
1
+ import { Product, ProductType } from './types.ts';
2
+ interface Options {
3
+ quantity?: number;
4
+ time?: string;
5
+ }
6
+ export declare function createCartItem<T extends Product>(product: T, options?: Partial<Options>): {
7
+ type: ProductType;
8
+ product: T;
9
+ /**
10
+ * is passed to the Order API
11
+ */
12
+ orderAttributes(): {
13
+ shipped_with_merchandise_id: null;
14
+ shipping_mode: string;
15
+ id: number;
16
+ time: string;
17
+ quantity: number;
18
+ } | {
19
+ shipped_with_merchandise_id: null;
20
+ shipping_mode: string;
21
+ id: number;
22
+ quantities: {
23
+ [x: number]: number;
24
+ };
25
+ };
26
+ uuid: string;
27
+ subId: string;
28
+ price_cents: number;
29
+ price_formatted: string;
30
+ final_price_cents: number;
31
+ final_price_formatted: string;
32
+ total_price_cents: number;
33
+ total_price_formatted: string;
34
+ quantity: number;
35
+ time: string;
36
+ };
37
+ export {};
@@ -0,0 +1,191 @@
1
+ import { CartItem, Product } from './types.ts';
2
+ export type Cart = ReturnType<typeof createCart>;
3
+ export declare function createCart(products?: Product[], contingent?: number): {
4
+ items: {
5
+ type: import('./types.ts').ProductType;
6
+ product: Product;
7
+ orderAttributes(): {
8
+ shipped_with_merchandise_id: null;
9
+ shipping_mode: string;
10
+ id: number;
11
+ time: string;
12
+ quantity: number;
13
+ } | {
14
+ shipped_with_merchandise_id: null;
15
+ shipping_mode: string;
16
+ id: number;
17
+ quantities: {
18
+ [x: number]: number;
19
+ };
20
+ };
21
+ uuid: string;
22
+ subId: string;
23
+ price_cents: number;
24
+ price_formatted: string;
25
+ final_price_cents: number;
26
+ final_price_formatted: string;
27
+ total_price_cents: number;
28
+ total_price_formatted: string;
29
+ quantity: number;
30
+ time: string;
31
+ }[];
32
+ contingent: number;
33
+ uid: string;
34
+ readonly nonEmptyItems: {
35
+ type: import('./types.ts').ProductType;
36
+ product: Product;
37
+ orderAttributes(): {
38
+ shipped_with_merchandise_id: null;
39
+ shipping_mode: string;
40
+ id: number;
41
+ time: string;
42
+ quantity: number;
43
+ } | {
44
+ shipped_with_merchandise_id: null;
45
+ shipping_mode: string;
46
+ id: number;
47
+ quantities: {
48
+ [x: number]: number;
49
+ };
50
+ };
51
+ uuid: string;
52
+ subId: string;
53
+ price_cents: number;
54
+ price_formatted: string;
55
+ final_price_cents: number;
56
+ final_price_formatted: string;
57
+ total_price_cents: number;
58
+ total_price_formatted: string;
59
+ quantity: number;
60
+ time: string;
61
+ }[];
62
+ readonly totalPriceCents: number;
63
+ readonly totalQuantity: number;
64
+ orderData(): {
65
+ items: {
66
+ type: import('./types.ts').ProductType;
67
+ attributes: {
68
+ shipped_with_merchandise_id: null;
69
+ shipping_mode: string;
70
+ id: number;
71
+ time: string;
72
+ quantity: number;
73
+ } | {
74
+ shipped_with_merchandise_id: null;
75
+ shipping_mode: string;
76
+ id: number;
77
+ quantities: {
78
+ [x: number]: number;
79
+ };
80
+ };
81
+ }[];
82
+ shipping_address_id: null;
83
+ comment: null;
84
+ reference: null;
85
+ payment_mode_id: string;
86
+ coupons: never[];
87
+ donations: never[];
88
+ affiliate: {};
89
+ total: number;
90
+ };
91
+ readonly totalFormatted: string;
92
+ clearItems(): void;
93
+ deleteItem(item: CartItem): void;
94
+ addItem(item: CartItem): void;
95
+ addItems(items: CartItem[]): void;
96
+ };
97
+ export declare function formatCurrency(priceCents: number): string;
98
+ export declare const cart: {
99
+ items: {
100
+ type: import('./types.ts').ProductType;
101
+ product: Product;
102
+ orderAttributes(): {
103
+ shipped_with_merchandise_id: null;
104
+ shipping_mode: string;
105
+ id: number;
106
+ time: string;
107
+ quantity: number;
108
+ } | {
109
+ shipped_with_merchandise_id: null;
110
+ shipping_mode: string;
111
+ id: number;
112
+ quantities: {
113
+ [x: number]: number;
114
+ };
115
+ };
116
+ uuid: string;
117
+ subId: string;
118
+ price_cents: number;
119
+ price_formatted: string;
120
+ final_price_cents: number;
121
+ final_price_formatted: string;
122
+ total_price_cents: number;
123
+ total_price_formatted: string;
124
+ quantity: number;
125
+ time: string;
126
+ }[];
127
+ contingent: number;
128
+ uid: string;
129
+ readonly nonEmptyItems: {
130
+ type: import('./types.ts').ProductType;
131
+ product: Product;
132
+ orderAttributes(): {
133
+ shipped_with_merchandise_id: null;
134
+ shipping_mode: string;
135
+ id: number;
136
+ time: string;
137
+ quantity: number;
138
+ } | {
139
+ shipped_with_merchandise_id: null;
140
+ shipping_mode: string;
141
+ id: number;
142
+ quantities: {
143
+ [x: number]: number;
144
+ };
145
+ };
146
+ uuid: string;
147
+ subId: string;
148
+ price_cents: number;
149
+ price_formatted: string;
150
+ final_price_cents: number;
151
+ final_price_formatted: string;
152
+ total_price_cents: number;
153
+ total_price_formatted: string;
154
+ quantity: number;
155
+ time: string;
156
+ }[];
157
+ readonly totalPriceCents: number;
158
+ readonly totalQuantity: number;
159
+ orderData(): {
160
+ items: {
161
+ type: import('./types.ts').ProductType;
162
+ attributes: {
163
+ shipped_with_merchandise_id: null;
164
+ shipping_mode: string;
165
+ id: number;
166
+ time: string;
167
+ quantity: number;
168
+ } | {
169
+ shipped_with_merchandise_id: null;
170
+ shipping_mode: string;
171
+ id: number;
172
+ quantities: {
173
+ [x: number]: number;
174
+ };
175
+ };
176
+ }[];
177
+ shipping_address_id: null;
178
+ comment: null;
179
+ reference: null;
180
+ payment_mode_id: string;
181
+ coupons: never[];
182
+ donations: never[];
183
+ affiliate: {};
184
+ total: number;
185
+ };
186
+ readonly totalFormatted: string;
187
+ clearItems(): void;
188
+ deleteItem(item: CartItem): void;
189
+ addItem(item: CartItem): void;
190
+ addItems(items: CartItem[]): void;
191
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ import { Cart } from './cart.svelte.ts';
2
+ import { CartItem, ProductType } from './types.ts';
3
+ export declare function updateLocalStorage(cart: Cart): string;
4
+ /**
5
+ * Generates a cart item based on the provided json object.
6
+ *
7
+ * @param cartItem - The cart item object containing details such as type, attributes, and item.
8
+ * @return {CartItem | undefined} The generated cart item if applicable, otherwise undefined.
9
+ */
10
+ export declare function generateCartItem(cartItem: any): CartItem | undefined;
11
+ export declare function clearLocalStorage(): void;
12
+ export declare function loadFromLocalStorage(cart: Cart): {
13
+ type: ProductType;
14
+ product: import('./types.ts').Product;
15
+ orderAttributes(): {
16
+ shipped_with_merchandise_id: null;
17
+ shipping_mode: string;
18
+ id: number;
19
+ time: string;
20
+ quantity: number;
21
+ } | {
22
+ shipped_with_merchandise_id: null;
23
+ shipping_mode: string;
24
+ id: number;
25
+ quantities: {
26
+ [x: number]: number;
27
+ };
28
+ };
29
+ uuid: string;
30
+ subId: string;
31
+ price_cents: number;
32
+ price_formatted: string;
33
+ final_price_cents: number;
34
+ final_price_formatted: string;
35
+ total_price_cents: number;
36
+ total_price_formatted: string;
37
+ quantity: number;
38
+ time: string;
39
+ }[];
40
+ /**
41
+ * Synchronizes the given shopping cart with the local storage. The method ensures that the cart is loaded from local storage,
42
+ * updates are reflected in the local storage, and any external changes to the local storage are propagated to the cart.
43
+ *
44
+ * @return {void} This method does not return a value.
45
+ */
46
+ export declare function syncCartToLocalStorage(cart: Cart): void;
@@ -0,0 +1,10 @@
1
+ import { Cart } from './cart.svelte.ts';
2
+ import { CartItem } from './types.ts';
3
+ export declare function selectOptions(cart: Cart, item: CartItem): {
4
+ min: number;
5
+ max: number;
6
+ };
7
+ export declare function generateQuantityOptions(cart: Cart, item: CartItem): {
8
+ value: number;
9
+ label: string;
10
+ }[];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { createCartItem } from './CartItem.ts';
2
+ export type ProductType = 'Ticket' | 'Event';
3
+ export type CartItem = ReturnType<typeof createCartItem>;
4
+ /**
5
+ * minimal props to define a Product in a CartItem
6
+ */
7
+ export type Product = {
8
+ id: number;
9
+ price_cents: number;
10
+ tax_included: boolean;
11
+ vat_pct: number;
12
+ product_type: ProductType;
13
+ };
@@ -0,0 +1,51 @@
1
+ import { Product, ProductType } from '../cart/types.ts';
2
+ import { EventScalePriceTicket } from '@gomus/types';
3
+ interface Options {
4
+ minAvailableCapacity?: number;
5
+ selectedTime?: string;
6
+ quantity?: number;
7
+ }
8
+ type UIEventTicketTypes = 'scale';
9
+ export declare function isUIEventTicket(x: Product): x is UIEventTicket;
10
+ export type UIEventTicket = ReturnType<typeof createUIEventTicket>;
11
+ export declare function createUIEventTicket(apiTicket: EventScalePriceTicket, dateId: number, options?: Options): {
12
+ type: UIEventTicketTypes;
13
+ max_capacity: number;
14
+ min_quantity: number;
15
+ max_quantity: number;
16
+ minAvailableCapacity: number;
17
+ selectedTime: string;
18
+ quantity: number;
19
+ accounting_article_id: number;
20
+ accounting_article_type: string;
21
+ description: string;
22
+ group: boolean;
23
+ optional: boolean;
24
+ price_cents: number;
25
+ scale_price_id: number;
26
+ title: string;
27
+ vat_pct: number;
28
+ id: number;
29
+ tax_included: boolean;
30
+ product_type: ProductType;
31
+ uid: number;
32
+ } | {
33
+ type: UIEventTicketTypes;
34
+ max_capacity: number;
35
+ min_quantity: number;
36
+ max_quantity: number;
37
+ product_type: ProductType;
38
+ accounting_article_id: number;
39
+ accounting_article_type: string;
40
+ description: string;
41
+ group: boolean;
42
+ optional: boolean;
43
+ price_cents: number;
44
+ scale_price_id: number;
45
+ title: string;
46
+ vat_pct: number;
47
+ id: number;
48
+ tax_included: boolean;
49
+ uid: number;
50
+ };
51
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,20 +1,18 @@
1
+ import { Product, ProductType } from '../cart/types.ts';
1
2
  import { AnnualTicket, Ticket, Tickets } from '@gomus/types';
2
3
  interface Options {
3
4
  minAvailableCapacity?: number;
4
5
  selectedTime?: string;
5
- quantity?: number;
6
6
  }
7
- type UITicketTypes = 'timeslot' | 'annual' | 'day';
7
+ export type UITicketType = 'timeslot' | 'annual' | 'day';
8
8
  export type UITicket = ReturnType<typeof createUITicket>;
9
+ export declare function isUITicket(x: Product): x is UITicket;
9
10
  export declare function createUITicket(apiTicket: Ticket | AnnualTicket, options?: Options): {
10
- type: UITicketTypes;
11
+ product_type: ProductType;
12
+ type: UITicketType;
11
13
  shop_order: number;
12
- max_capacity: number;
13
- min_quantity: number;
14
- max_quantity: number;
15
14
  minAvailableCapacity: number;
16
15
  selectedTime: string;
17
- quantity: number;
18
16
  id: number;
19
17
  title: string;
20
18
  ticket_type: "time_slot" | "annual" | "normal";
@@ -60,20 +58,120 @@ export declare function createUITicket(apiTicket: Ticket | AnnualTicket, options
60
58
  total_capacities: {
61
59
  [key: string]: number;
62
60
  };
61
+ max_capacity: number;
63
62
  max_total_capacity: number;
64
63
  dynamic_prices: {
65
64
  [key: string]: number;
66
65
  } | null;
67
66
  uid: number;
68
67
  } | {
69
- type: UITicketTypes;
68
+ product_type: ProductType;
69
+ type: UITicketType;
70
70
  shop_order: number;
71
+ id: number;
72
+ title: string;
73
+ ticket_type: "time_slot" | "annual" | "normal";
74
+ bookable: boolean;
75
+ museum_ids: number[];
76
+ exhibition_ids: number[];
77
+ price_cents: number;
78
+ discount: number;
79
+ vat_pct: number;
80
+ tax_included: boolean;
81
+ entry_duration: number | null;
82
+ min_persons: number;
83
+ max_persons: number;
84
+ quota_ids: number[];
85
+ first_entry: number;
86
+ last_entry: number;
87
+ personalizeable: boolean;
88
+ attendees: boolean | string;
89
+ identification: boolean | string;
90
+ free_timing: boolean;
91
+ is_collective: boolean;
92
+ is_upgrade: boolean;
93
+ is_mantle: boolean;
94
+ description: string | null;
95
+ sub_ticket_ids: number[];
96
+ sub_tickets: {
97
+ [key: string]: {
98
+ title?: string;
99
+ min_persons?: number;
100
+ max_persons?: number;
101
+ description?: string | null;
102
+ };
103
+ } | null;
104
+ is_sub_ticket: boolean;
105
+ created_at: string;
106
+ updated_at: string;
107
+ shipped_with_merchandise_id: number | null;
108
+ restricted_shop_account: boolean;
109
+ cash_point_order: number;
110
+ capacities: {
111
+ [key: string]: number;
112
+ };
113
+ total_capacities: {
114
+ [key: string]: number;
115
+ };
71
116
  max_capacity: number;
72
- min_quantity: number;
73
- max_quantity: number;
117
+ max_total_capacity: number;
118
+ dynamic_prices: {
119
+ [key: string]: number;
120
+ } | null;
121
+ uid: number;
122
+ } | {
123
+ product_type: ProductType;
124
+ type: UITicketType;
125
+ shop_order: number;
74
126
  minAvailableCapacity: number;
75
127
  selectedTime: string;
76
- quantity: number;
128
+ id: number;
129
+ title: string;
130
+ ticket_type: "time_slot" | "annual" | "normal";
131
+ bookable: boolean;
132
+ museum_ids: number[];
133
+ exhibition_ids: number[];
134
+ price_cents: number;
135
+ discount: number;
136
+ vat_pct: number;
137
+ tax_included: boolean;
138
+ entry_duration: number | null;
139
+ min_persons: number;
140
+ max_persons: number;
141
+ quota_ids: number[];
142
+ first_entry: number;
143
+ last_entry: number;
144
+ personalizeable: boolean;
145
+ attendees: boolean | string;
146
+ identification: boolean | string;
147
+ free_timing: boolean;
148
+ is_collective: boolean;
149
+ is_upgrade: boolean;
150
+ is_mantle: boolean;
151
+ description: string | null;
152
+ sub_ticket_ids: number[];
153
+ sub_tickets: {
154
+ [key: string]: {
155
+ title?: string;
156
+ min_persons?: number;
157
+ max_persons?: number;
158
+ description?: string | null;
159
+ };
160
+ } | null;
161
+ is_sub_ticket: boolean;
162
+ created_at: string;
163
+ updated_at: string;
164
+ shipped_with_merchandise_id: number | null;
165
+ restricted_shop_account: boolean;
166
+ cash_point_order: number;
167
+ dynamic_prices: {
168
+ [key: string]: number;
169
+ } | null;
170
+ uid: number;
171
+ } | {
172
+ product_type: ProductType;
173
+ type: UITicketType;
174
+ shop_order: number;
77
175
  id: number;
78
176
  title: string;
79
177
  ticket_type: "time_slot" | "annual" | "normal";
@@ -121,6 +121,7 @@ export declare class Shop {
121
121
  locales?: LocaleOptions;
122
122
  };
123
123
  ticketsCalendar(params: TicketsCalendarParams): CalendarDates;
124
+ calendar(params: TicketsCalendarParams): CalendarDates;
124
125
  ticketsAndQuotas(params: TicketsAndQuotasParams): {
125
126
  tickets: {
126
127
  [key: string]: import('@gomus/types').components["schemas"]["shop_v4_ticket_capacity"];
@@ -273,6 +274,7 @@ export declare class Shop {
273
274
  cache?: number | undefined;
274
275
  path?: Record<string, unknown>;
275
276
  }): T;
277
+ clearCache(): void;
276
278
  get museums(): {
277
279
  id: number;
278
280
  title: string;
@@ -335,6 +337,45 @@ export declare class Shop {
335
337
  documents: import('@gomus/types').components["schemas"]["document"][];
336
338
  content: Record<string, never>;
337
339
  };
340
+ getEventDetailsOnDate(eventId: number, dateId: number): {
341
+ id?: number;
342
+ event_id?: number;
343
+ exhibition_id?: number | null;
344
+ museum_id?: number | null;
345
+ foreign_id?: number | null;
346
+ category?: import('@gomus/types').components["schemas"]["category"];
347
+ bookable?: boolean;
348
+ registerable?: boolean;
349
+ entry_fee?: number;
350
+ title?: string | null;
351
+ sub_title?: string | null;
352
+ description?: string | null;
353
+ meeting_point?: string | null;
354
+ event_title?: string;
355
+ event_sub_title?: string | null;
356
+ start_time?: string;
357
+ duration?: number;
358
+ vat_pct?: number;
359
+ seats?: {
360
+ min?: number;
361
+ max?: number;
362
+ booked?: number;
363
+ available?: number;
364
+ max_per_registration?: number | null;
365
+ overbook?: boolean;
366
+ };
367
+ created_at?: string;
368
+ updated_at?: string;
369
+ language?: import('@gomus/types').components["schemas"]["language"];
370
+ location?: import('@gomus/types').components["schemas"]["location"];
371
+ prices?: import('@gomus/types').components["schemas"]["price"][];
372
+ status?: "booked" | "cancelled";
373
+ discount?: number;
374
+ tax_included?: boolean;
375
+ seatings?: Record<string, never>[];
376
+ comment?: string | null;
377
+ guides?: Record<string, never>[] | null;
378
+ };
338
379
  get events(): {
339
380
  id: number;
340
381
  description: string | null;
@@ -1487,7 +1487,7 @@ export function getGetTickets200Response(): {
1487
1487
  tickets: {
1488
1488
  id: number;
1489
1489
  title: string;
1490
- ticket_type: "time_slot" | "annual" | "normal";
1490
+ ticket_type: "annual" | "time_slot" | "normal";
1491
1491
  bookable: boolean;
1492
1492
  museum_ids: number[];
1493
1493
  exhibition_ids: number[];
@@ -11,4 +11,7 @@ export declare const MSWMocks: {
11
11
  mockAnnualOrder: () => void;
12
12
  mockCountries: () => void;
13
13
  mockPersonalizationFormSubmit: () => void;
14
+ events: {
15
+ mockTwoScaledPrices: (options?: Record<string, any>) => void;
16
+ };
14
17
  };
@@ -0,0 +1,24 @@
1
+ export declare const ScalingPricesMocks: {
2
+ ticket1: {
3
+ scale_price_id: number;
4
+ title: string;
5
+ description: string;
6
+ group: boolean;
7
+ optional: boolean;
8
+ price_cents: number;
9
+ vat_pct: number;
10
+ accounting_article_id: number;
11
+ accounting_article_type: string;
12
+ };
13
+ ticket2: {
14
+ scale_price_id: number;
15
+ title: string;
16
+ description: string;
17
+ group: boolean;
18
+ optional: boolean;
19
+ price_cents: number;
20
+ vat_pct: number;
21
+ accounting_article_id: number;
22
+ accounting_article_type: string;
23
+ };
24
+ };