@duffel/api 1.29.0 → 2.1.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.
@@ -0,0 +1,36 @@
1
+ import { Client } from '../../Client';
2
+ import { StaysBooking } from '../StaysTypes';
3
+ import { Resource } from '../../Resource';
4
+ import { DuffelResponse } from '../../types';
5
+ export interface StaysBookingPayload {
6
+ quote_id: string;
7
+ guests: Array<{
8
+ given_name: string;
9
+ family_name: string;
10
+ born_on: string;
11
+ }>;
12
+ email: string;
13
+ phone_number: string;
14
+ accommodation_special_requests?: string;
15
+ }
16
+ export declare class Bookings extends Resource {
17
+ /**
18
+ * Endpoint path
19
+ */
20
+ path: string;
21
+ constructor(client: Client);
22
+ /**
23
+ * Create a booking
24
+ * @param {object} payload - The booking payload, including quote id and guest information
25
+ */
26
+ create: (payload: StaysBookingPayload) => Promise<DuffelResponse<StaysBooking>>;
27
+ /**
28
+ * Get a booking
29
+ * @param {string} bookingId - The ID of the booking
30
+ */
31
+ get: (bookingId: string) => Promise<DuffelResponse<StaysBooking>>;
32
+ /**
33
+ * list bookings
34
+ */
35
+ list: () => Promise<DuffelResponse<StaysBooking>>;
36
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './Bookings';
@@ -0,0 +1,16 @@
1
+ import { Client } from '../../Client';
2
+ import { StaysQuote } from '../StaysTypes';
3
+ import { Resource } from '../../Resource';
4
+ import { DuffelResponse } from '../../types';
5
+ export declare class Quotes extends Resource {
6
+ /**
7
+ * Endpoint path
8
+ */
9
+ path: string;
10
+ constructor(client: Client);
11
+ /**
12
+ * Create a quote for the selected rate
13
+ * @param {string} rateId - The ID of the rate to create a quote for
14
+ */
15
+ create: (rateId: string) => Promise<DuffelResponse<StaysQuote>>;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './Quotes';
@@ -0,0 +1,16 @@
1
+ import { Client } from '../../Client';
2
+ import { StaysSearchResult } from '../StaysTypes';
3
+ import { Resource } from '../../Resource';
4
+ import { DuffelResponse } from '../../types';
5
+ export declare class SearchResults extends Resource {
6
+ /**
7
+ * Endpoint path
8
+ */
9
+ path: string;
10
+ constructor(client: Client);
11
+ /**
12
+ * Fetch all rates for the given search result
13
+ * @param {string} searchResultId - The ID of the search result to fetch rates for
14
+ */
15
+ fetchAllRates: (searchResultId: string) => Promise<DuffelResponse<StaysSearchResult>>;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './SearchResults';
@@ -0,0 +1,22 @@
1
+ import { Client } from '../Client';
2
+ import { StaysSearchParams, StaysSearchResult } from './StaysTypes';
3
+ import { Resource } from '../Resource';
4
+ import { DuffelResponse } from '../types';
5
+ import { Bookings } from './Bookings';
6
+ import { Quotes } from './Quotes';
7
+ import { SearchResults } from './SearchResults';
8
+ export declare class Stays extends Resource {
9
+ /**
10
+ * Endpoint path
11
+ */
12
+ path: string;
13
+ searchResults: SearchResults;
14
+ quotes: Quotes;
15
+ bookings: Bookings;
16
+ constructor(client: Client);
17
+ /**
18
+ * Search for accommodations
19
+ * @param {object} params - The search parameters
20
+ */
21
+ search: (params: StaysSearchParams) => Promise<DuffelResponse<StaysSearchResult>>;
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,406 @@
1
+ export type StaysBedType = 'single' | 'double' | 'queen' | 'king' | 'sofabed';
2
+ export interface StaysBed {
3
+ /**
4
+ * The type of beds available in the room Available types: "single", "double", "queen", "king", "sofabed"
5
+ */
6
+ type: StaysBedType;
7
+ /**
8
+ * The number of beds of this type in the room.
9
+ */
10
+ count: number;
11
+ }
12
+ export interface StaysRating {
13
+ /**
14
+ * The source of this rating. Possible values: `"aaa"` (American Automobile Association Diamond Rating), `"northstar"` (Northstar Crown Rating), `"priceline"` (Priceline star rating)
15
+ */
16
+ source: 'aaa' | 'northstar' | 'priceline';
17
+ /**
18
+ * The rating value. This is an integer from 1 to 5 regardless of the `source`.
19
+ */
20
+ value: number;
21
+ }
22
+ export interface StaysRateCondition {
23
+ /**
24
+ * One or more paragraphs that outline the rate condition
25
+ */
26
+ description: string;
27
+ /**
28
+ * The condition title
29
+ */
30
+ title: string;
31
+ }
32
+ export interface StaysRateCancellationTimeline {
33
+ /**
34
+ * The amount refundable up until the specified before date
35
+ */
36
+ refund_amount: string;
37
+ /**
38
+ * The ISO 8601 datetime for the deadline of a refund.
39
+ */
40
+ before: string;
41
+ /**
42
+ * The currency of the amount, as an ISO 4217 currency code.
43
+ */
44
+ currency: string;
45
+ }
46
+ export interface StaysRate {
47
+ /**
48
+ * The currency of the base_amount, as an ISO 4217 currency code.
49
+ */
50
+ base_amount: string | null;
51
+ /**
52
+ * The currency of the base_amount, as an ISO 4217 currency code.
53
+ */
54
+ base_currency: string;
55
+ /**
56
+ * The type of boarding offered by this rate.
57
+ */
58
+ board_type: 'room_only' | 'breakfast' | 'all_inclusive';
59
+ /**
60
+ * A timeline that contains policies, such as possible refunds, once this rate has been booked. This is sorted in ascending chronological order.
61
+ */
62
+ cancellation_timeline: StaysRateCancellationTimeline[];
63
+ /**
64
+ * The conditions or policies that apply to the rate. The information provided should be treated as mandatory and displayed to the traveller during and after the booking process.
65
+ */
66
+ conditions: Array<StaysRateCondition>;
67
+ /**
68
+ * Fees are sometimes payable at time of check in. These fees are not collected during the booking process
69
+ */
70
+ due_at_accommodation_amount: string | null;
71
+ /**
72
+ * The currency of the due_at_accommodation_amount
73
+ */
74
+ due_at_accommodation_currency: string;
75
+ /**
76
+ * ID of a given rate for a accommodation
77
+ */
78
+ id: string;
79
+ /**
80
+ * The accepted payment method for this rate. Prepaid rates require payment at time of reservation. Accepted types: prepaid
81
+ */
82
+ payment_type: 'prepaid';
83
+ /**
84
+ * The supplier from which Duffel got this rate
85
+ */
86
+ supplier: 'priceline';
87
+ /**
88
+ * The fee amount, as an ISO 4217 currency code.
89
+ */
90
+ fee_amount: string | null;
91
+ /**
92
+ * The currency of the fee_amount, as an ISO 4217 currency code
93
+ */
94
+ fee_currency: string;
95
+ /**
96
+ * The tax amount, as an ISO 4217 currency code.
97
+ */
98
+ tax_amount: string | null;
99
+ /**
100
+ * The currency of the tax_amount, as an ISO 4217 currency code
101
+ */
102
+ tax_currency: string;
103
+ /**
104
+ * The total price for the room for all nights and for all occupants. Please note, the occupant may be required to pay fees on arrival at the hotel. These are not included in the total_amount, and are included in due_at_accommodation_amount
105
+ */
106
+ total_amount: string;
107
+ /**
108
+ * The currency of the total_amount, as an ISO 4217 currency code
109
+ */
110
+ total_currency: string;
111
+ }
112
+ export interface StaysPhoto {
113
+ url: string;
114
+ }
115
+ export interface StaysRoom {
116
+ /**
117
+ * The room name.
118
+ */
119
+ name: string;
120
+ /**
121
+ * Available beds in the room
122
+ */
123
+ beds?: StaysBed[];
124
+ /**
125
+ * Supplied photos for the room
126
+ */
127
+ photos?: StaysPhoto[];
128
+ /**
129
+ * The available rates for a specific room, including commission, distribution, payment and included services information.
130
+ */
131
+ rates: StaysRate[];
132
+ }
133
+ export interface StaysAmenity {
134
+ type: 'parking' | 'wi-fi' | 'gym';
135
+ description: string;
136
+ }
137
+ export interface StaysChain {
138
+ /**
139
+ * The hotel chain’s name
140
+ */
141
+ name: string;
142
+ }
143
+ export interface StaysAddress {
144
+ /**
145
+ * The name of the city or metropolitan area where the accommodation is located.
146
+ */
147
+ city_name: string;
148
+ /**
149
+ * The ISO 3166-1 alpha-2 code for the country where the hotel is located.
150
+ */
151
+ country_code: string;
152
+ /**
153
+ * The first line of the accommodation's address
154
+ */
155
+ line_one: string;
156
+ /**
157
+ * The accommodation's postal code (or zip code)
158
+ */
159
+ postal_code: string;
160
+ /**
161
+ * The setay's region or state
162
+ */
163
+ region: string;
164
+ }
165
+ export interface GeographicCoordinates {
166
+ /**
167
+ * The latitude position of the accommodation represented in Decimal degrees with 6 decimal points with a range between -90° and 90°
168
+ */
169
+ latitude: number;
170
+ /**
171
+ * The longitude position of the accommodation represented in Decimal degrees with 6 decimal points with a range between -180° and 180°
172
+ */
173
+ longitude: number;
174
+ }
175
+ export interface StaysLocation {
176
+ /**
177
+ * Address information of the location
178
+ */
179
+ address: StaysAddress;
180
+ /**
181
+ * The exact latitude-longitude position of the accommodation. Useful for map views.
182
+ */
183
+ geographic_coordinates: GeographicCoordinates | null;
184
+ }
185
+ export interface StaysAccommodation {
186
+ /**
187
+ * The amenities available at the accommodation
188
+ */
189
+ amenities: StaysAmenity[] | null;
190
+ /**
191
+ * Information about the chain this accommodation belongs to
192
+ */
193
+ chain: StaysChain | null;
194
+ /**
195
+ * Check in and check out related information
196
+ */
197
+ check_in_information: {
198
+ /**
199
+ * The ISO 8601 format for the earliest time a traveller can check-in to their room.
200
+ */
201
+ check_out_before_time: string;
202
+ /**
203
+ * The ISO 8601 format for the earliest time a traveller can check-out to their room.
204
+ */
205
+ check_in_after_time: string;
206
+ } | null;
207
+ /**
208
+ * The total currency for the cheapest rate for this accommodation, as an ISO 4217 currency code. If rooms data is available, this is equivalent to the cheapest rate for the cheapest room.
209
+ */
210
+ cheapest_rate_currency: string;
211
+ /**
212
+ * The total amount for the cheapest rate for this accommodation. If rooms data is available, this is equivalent to the cheapest rate for the cheapest room.
213
+ */
214
+ cheapest_rate_total_amount: string;
215
+ /**
216
+ * The accommodation’s description
217
+ */
218
+ description?: string;
219
+ /**
220
+ * The accommodation’s email address. Note that this data may differ from the accommodation’s records if it was updated directly by the accommodation after the booking was created.
221
+ */
222
+ email: string | null;
223
+ /**
224
+ * Information on the accommodation's location
225
+ */
226
+ location: StaysLocation;
227
+ /**
228
+ * The accommodation's name
229
+ */
230
+ name: string;
231
+ /**
232
+ * The accommodation's phone number in E.164 (international) format. Note that this data may differ from the accommodation's records if it was updated directly by the accommodation after the booking was created.
233
+ */
234
+ phone_number: string | null;
235
+ /**
236
+ * Photos for the accommodation
237
+ */
238
+ photos?: StaysPhoto[];
239
+ /**
240
+ * Ratings of the accommodation
241
+ */
242
+ ratings: StaysRating[] | null;
243
+ /**
244
+ * Rooms for the accommodation
245
+ */
246
+ rooms: StaysRoom[];
247
+ }
248
+ /**
249
+ * Represents a quote for a stay.
250
+ */
251
+ export interface StaysQuote {
252
+ /**
253
+ * The id of the stay quote.
254
+ *
255
+ * Example: "quo_0000AS0NZdKjjnnHZmSUbI"
256
+ */
257
+ id: string;
258
+ /**
259
+ * The ISO 8601 date on which the guest wants to check in.
260
+ * This comes from the search request this quote originates from.
261
+ *
262
+ * Example: "2023-05-24"
263
+ */
264
+ check_in_date: string;
265
+ /**
266
+ * The ISO 8601 date on which the guest wants to check out.
267
+ * This comes from the search request this quote originates from.
268
+ *
269
+ * Example: "2023-05-28"
270
+ */
271
+ check_out_date: string;
272
+ /**
273
+ * The accommodation associated with this quote.
274
+ */
275
+ accommodation: StaysAccommodation;
276
+ /**
277
+ * The total price for the room for all nights and for all guests.
278
+ * Please note, the guest may be required to pay mandatory fees and taxes at the stay.
279
+ * These are not included in the total_amount, and are included in due_at_accommodation_amount.
280
+ *
281
+ * Example: "799.00"
282
+ */
283
+ total_amount: string;
284
+ /**
285
+ * The currency of the total_amount, as an ISO 4217 currency code.
286
+ *
287
+ * Example: "GBP"
288
+ */
289
+ total_currency: string;
290
+ /**
291
+ * The base amount for this quote, excluding taxes and fees.
292
+ * Will be null if the base amount is unknown.
293
+ *
294
+ * Example: "665.83"
295
+ */
296
+ base_amount: string | null;
297
+ /**
298
+ * The currency of the base_amount, as an ISO 4217 currency code.
299
+ *
300
+ * Example: "GBP"
301
+ */
302
+ base_currency: string;
303
+ /**
304
+ * The fee amount for this quote.
305
+ * Will be null if the fee amount is unknown.
306
+ *
307
+ * Example: "50.94"
308
+ */
309
+ fee_amount: string | null;
310
+ /**
311
+ * The currency of the fee_amount, as an ISO 4217 currency code.
312
+ *
313
+ * Example: "GBP"
314
+ */
315
+ fee_currency: string;
316
+ /**
317
+ * The tax amount for this quote.
318
+ * Will be null if the tax amount is unknown.
319
+ *
320
+ * Example: "133.17"
321
+ */
322
+ tax_amount: string | null;
323
+ /**
324
+ * The currency of the tax_amount, as an ISO 4217 currency code.
325
+ *
326
+ * Example: "GBP"
327
+ */
328
+ tax_currency: string;
329
+ /**
330
+ * Mandatory fees or taxes that are due by the guest at the accommodation.
331
+ * Depending on the accommodation, these may be payable on check-in or check-out.
332
+ * These fees are not collected during the booking process.
333
+ * Will be null if the amount due at accommodation is unknown.
334
+ *
335
+ * Example: "39.95"
336
+ */
337
+ due_at_accommodation_amount: string | null;
338
+ /**
339
+ * The currency of the due_at_accommodation_amount, as an ISO 4217 currency code.
340
+ *
341
+ * Example: "GBP"
342
+ */
343
+ due_at_accommodation_currency: string;
344
+ }
345
+ export type StaysBookingStatus = 'requested' | 'confirmed' | 'failed' | 'cancellation_confirmed';
346
+ export interface StaysBooking {
347
+ /**
348
+ * The ID of the booking
349
+ */
350
+ id: string;
351
+ /**
352
+ * The accommodation object for the booking
353
+ */
354
+ accommodation: StaysAccommodation;
355
+ /**
356
+ * The ISO 8601 date on which the guest wants to check in.
357
+ */
358
+ check_in_date: string;
359
+ /**
360
+ * The ISO 8601 date on which the guest wants to check out.
361
+ */
362
+ check_out_date: string;
363
+ /**
364
+ * A booking reference for the property you’ll be staying in. This is the reference you should use when contacting the accommodation.
365
+ */
366
+ reference: string | null;
367
+ /**
368
+ * The status of the booking. Possible values: requested, confirmed, failed,cancellation_requested,cancellation_confirmed.
369
+ */
370
+ status: StaysBookingStatus;
371
+ /**
372
+ * The ISO 8601 datetime at which the booking was confirmed by the accommodation.
373
+ */
374
+ confirmed_at: string | null;
375
+ /**
376
+ * The ISO 8601 datetime of the cancellation of this booking.
377
+ * This is null if the booking is not cancelled.
378
+ */
379
+ cancelled_at: string | null;
380
+ /**
381
+ * The guests for the booking
382
+ */
383
+ guests: Array<{
384
+ given_name: string;
385
+ family_name: string;
386
+ }>;
387
+ }
388
+ export interface StaysSearchParams {
389
+ check_in_date: string;
390
+ check_out_date: string;
391
+ adults: number;
392
+ rooms: number;
393
+ location: {
394
+ radius: number;
395
+ geographic_coordinates: {
396
+ latitude: number;
397
+ longitude: number;
398
+ };
399
+ };
400
+ }
401
+ export interface StaysSearchResult {
402
+ id: string;
403
+ check_in_date: string;
404
+ check_out_date: string;
405
+ accommodation: StaysAccommodation;
406
+ }
@@ -1,6 +1,6 @@
1
1
  import { OrderSlice } from 'types';
2
- export declare type AirlineInitiatedChangeActionTaken = 'accepted' | 'cancelled' | 'changed';
3
- export declare type AirlineInitiatedChangeAvailableAction = 'accept' | 'cancel' | 'change' | 'update';
2
+ export type AirlineInitiatedChangeActionTaken = 'accepted' | 'cancelled' | 'changed';
3
+ export type AirlineInitiatedChangeAvailableAction = 'accept' | 'cancel' | 'change' | 'update';
4
4
  export interface AirlineInitiatedChange {
5
5
  /**
6
6
  * The action taken in response to this airline-initiated change. Accepted,
@@ -75,7 +75,7 @@ interface CreateOfferRequestNonAdultPassenger extends CreateOfferRequestPassenge
75
75
  fare_type?: never;
76
76
  type?: never;
77
77
  }
78
- export declare type CreateOfferRequestPassengerFareType = 'accompanying_adult' | 'contract_bulk' | 'contract_bulk_child' | 'contract_bulk_infant_with_seat' | 'contract_bulk_infant_without_seat' | 'frequent_flyer' | 'group_inclusive_tour' | 'group_inclusive_tour_child' | 'humanitarian' | 'individual_inclusive_tour_child' | 'marine' | 'seat_only' | 'student' | 'teacher' | 'tour_operator_inclusive' | 'tour_operator_inclusive_infant' | 'unaccompanied_child' | 'visiting_friends_and_family';
78
+ export type CreateOfferRequestPassengerFareType = 'accompanying_adult' | 'contract_bulk' | 'contract_bulk_child' | 'contract_bulk_infant_with_seat' | 'contract_bulk_infant_without_seat' | 'frequent_flyer' | 'group_inclusive_tour' | 'group_inclusive_tour_child' | 'humanitarian' | 'individual_inclusive_tour_child' | 'marine' | 'seat_only' | 'student' | 'teacher' | 'tour_operator_inclusive' | 'tour_operator_inclusive_infant' | 'unaccompanied_child' | 'visiting_friends_and_family';
79
79
  interface CreateOfferRequestPassengerWithFareType extends CreateOfferRequestPassengerCommon {
80
80
  /**
81
81
  * The age of the passenger on the `departure_date` of the final slice. e.g.
@@ -94,7 +94,7 @@ interface CreateOfferRequestPassengerWithFareType extends CreateOfferRequestPass
94
94
  fare_type: CreateOfferRequestPassengerFareType;
95
95
  type?: never;
96
96
  }
97
- export declare type CreateOfferRequestPassenger = CreateOfferRequestAdultPassenger | CreateOfferRequestNonAdultPassenger | CreateOfferRequestPassengerWithFareType;
97
+ export type CreateOfferRequestPassenger = CreateOfferRequestAdultPassenger | CreateOfferRequestNonAdultPassenger | CreateOfferRequestPassengerWithFareType;
98
98
  export interface CreateOfferRequestPrivateFare {
99
99
  corporate_code: string;
100
100
  tracking_reference: string;
@@ -208,7 +208,7 @@ export interface OfferAvailableServiceCFAR extends OfferAvailableServiceCommon {
208
208
  */
209
209
  type: 'cancel_for_any_reason';
210
210
  }
211
- export declare type OfferAvailableService = OfferAvailableServiceBaggage | OfferAvailableServiceCFAR;
211
+ export type OfferAvailableService = OfferAvailableServiceBaggage | OfferAvailableServiceCFAR;
212
212
  export interface PaymentRequirements {
213
213
  /**
214
214
  * The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime by which
@@ -448,7 +448,7 @@ export interface OfferSliceSegmentPassenger {
448
448
  */
449
449
  fare_basis_code: string;
450
450
  }
451
- export declare type BaggageType = 'carry_on' | 'checked';
451
+ export type BaggageType = 'carry_on' | 'checked';
452
452
  export interface OfferSliceSegmentPassengerBaggage {
453
453
  /**
454
454
  * The type of the baggage allowance
@@ -22,7 +22,7 @@ export interface Seat {
22
22
  /**
23
23
  * An object containing metadata about the service, like the maximum weight and dimensions of the baggage.
24
24
  */
25
- export declare type OrderServiceBaggageMetadata = OfferAvailableServiceBaggageMetadata;
25
+ export type OrderServiceBaggageMetadata = OfferAvailableServiceBaggageMetadata;
26
26
  export interface OrderSegmentPassengerBaggage {
27
27
  /**
28
28
  * The number of this type of bag allowed on the segment. Note that this can currently be 0 in some cases.
@@ -319,7 +319,7 @@ export interface OrderPaymentStatus {
319
319
  * The type of document
320
320
  * @returns "electronic_ticket", "electronic_miscellaneous_document_associated", or "electronic_miscellaneous_document_standalone"
321
321
  */
322
- export declare type OrderDocumentsType = 'electronic_ticket' | 'electronic_miscellaneous_document_associated' | 'electronic_miscellaneous_document_standalone';
322
+ export type OrderDocumentsType = 'electronic_ticket' | 'electronic_miscellaneous_document_associated' | 'electronic_miscellaneous_document_standalone';
323
323
  export interface OrderDocument {
324
324
  /**
325
325
  * The identifier for the document, in the case of electronic
@@ -497,4 +497,4 @@ export interface AddServices {
497
497
  payment: OrderPayment;
498
498
  add_services: Pick<OrderService, 'id' | 'quantity'>[];
499
499
  }
500
- export declare type OrderAvailableService = OfferAvailableServiceBaggage;
500
+ export type OrderAvailableService = OfferAvailableServiceBaggage;
@@ -185,6 +185,6 @@ export interface SeatMapCabinRowSectionElementStairs {
185
185
  */
186
186
  type: 'stairs';
187
187
  }
188
- export declare type SeatMapCabinRowSectionElement = SeatMapCabinRowSectionElementSeat | SeatMapCabinRowSectionElementBassinet | SeatMapCabinRowSectionElementEmpty | SeatMapCabinRowSectionElementExitRow | SeatMapCabinRowSectionElementLavatory | SeatMapCabinRowSectionElementGalley | SeatMapCabinRowSectionElementCloset | SeatMapCabinRowSectionElementStairs;
189
- export declare type SeatMapCabinRowSectionElementType = SeatMapCabinRowSectionElement['type'];
190
- export declare type SeatMapCabinRowSectionElementAmenity = Exclude<SeatMapCabinRowSectionElementType, 'empty' | 'seat'>;
188
+ export type SeatMapCabinRowSectionElement = SeatMapCabinRowSectionElementSeat | SeatMapCabinRowSectionElementBassinet | SeatMapCabinRowSectionElementEmpty | SeatMapCabinRowSectionElementExitRow | SeatMapCabinRowSectionElementLavatory | SeatMapCabinRowSectionElementGalley | SeatMapCabinRowSectionElementCloset | SeatMapCabinRowSectionElementStairs;
189
+ export type SeatMapCabinRowSectionElementType = SeatMapCabinRowSectionElement['type'];
190
+ export type SeatMapCabinRowSectionElementAmenity = Exclude<SeatMapCabinRowSectionElementType, 'empty' | 'seat'>;