mts-booking-library 1.2.10 → 1.2.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ import { GetPaymentInformationFromGatewayResponse, GetSellerGatewaysResponse, Pa
4
4
  import { GetBuyerPassengersDetailsResponse, Person } from "../types/common/Person";
5
5
  import { AddReductionRequest } from "../types/common/Reduction";
6
6
  export declare abstract class Booking {
7
- readonly sellerId?: number | undefined;
7
+ private sellerId?;
8
8
  readonly resellerId?: number | undefined;
9
9
  readonly bookingType: Booking.BookingTypes;
10
10
  readonly config: MTSConfig;
@@ -35,6 +35,12 @@ export declare abstract class Booking {
35
35
  * @param {number} [resellerId=undefined] The id of the reseller.
36
36
  */
37
37
  constructor(env: MTSEnvs, sub_key: string, onCartExpiration: () => void, bookingType: Booking.BookingTypes, debug?: boolean, language?: string, access_token?: string, sellerId?: number, resellerId?: number);
38
+ /**
39
+ * This method allows to update the sellerId. It is mostly important for Linkavel, as we start with sellerId = 0
40
+ * but then it changes to the actual sellerId once the cart is created.
41
+ * @param sellerId The id of the seller.
42
+ */
43
+ updateSellerId(sellerId: number): void;
38
44
  /**
39
45
  * This method allows to renew the access token for calling MTS APIs
40
46
  * @param {string} access_token The new access token
@@ -42,35 +48,26 @@ export declare abstract class Booking {
42
48
  renewAccessToken(access_token: string): void;
43
49
  callGetApi(url: string): Promise<ErrorResponse | any>;
44
50
  callPostApi(url: string, body: any): Promise<any>;
51
+ callDeleteApi(url: string): Promise<ErrorResponse | any>;
45
52
  getBookingStepsToStatus(): Map<string, boolean[]>;
46
53
  changeCurrency(currency: Booking.Currencies): void;
47
54
  changeLanguage(language: string): void;
48
55
  getCartExpirationTimeInMs(): Promise<number>;
56
+ /**
57
+ * This API allows to mark a non-required booking step as completed. It is useful for example for the seats selection step.
58
+ * @param bookingStep The booking step to mark as completed
59
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise.
60
+ */
61
+ markBookingStepCompleted(bookingStep: Booking.BookingSteps): Promise<ErrorResponse | boolean>;
49
62
  abstract deleteCart(): Promise<ErrorResponse | any>;
50
63
  abstract getBuyerPassengersDetails(): Promise<ErrorResponse | GetBuyerPassengersDetailsResponse>;
51
64
  abstract getBuyerFromLinkavelCard(linkavelCardNumber?: string, linkavelCardPhoneNumber?: string): Promise<ErrorResponse | Person>;
52
- abstract updateBuyerPassengersDetails(request: any): Promise<ErrorResponse | any>;
53
- /**
54
- * @description This method allows to add a reduction to the cart
55
- * @param {AddReductionRequest} request The information about the reduction to add
56
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
57
- */
58
- addReduction(request: AddReductionRequest): Promise<ErrorResponse | any>;
59
- /**
60
- * @description This method allows the user to use the balance in his wallet to pay the cart. If the balance of
61
- * the wallet is enough to pay the cart, the cart will be paid fully. Otherwise, the user will be asked to pay the
62
- * remaining amount with another payment method.
63
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
64
- */
65
- useWallet(): Promise<ErrorResponse | any>;
66
- /**
67
- * @description This method allows the user to use a voucher to pay the cart.
68
- * If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
69
- * Otherwise, the user will be asked to pay the remaining amount with another payment method.
70
- * @param {string} voucherCode The code of the voucher to use
71
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
72
- */
73
- useVoucher(voucherCode: string): Promise<ErrorResponse | any>;
65
+ abstract updateBuyerPassengersDetails(request: any): Promise<ErrorResponse | boolean>;
66
+ abstract addReduction(request: AddReductionRequest): Promise<ErrorResponse | boolean>;
67
+ abstract removeReduction(tripId: number): Promise<ErrorResponse | boolean>;
68
+ abstract useWallet(): Promise<ErrorResponse | boolean>;
69
+ abstract removeWalletReduction(): Promise<ErrorResponse | boolean>;
70
+ abstract useVoucher(voucherCode: string): Promise<ErrorResponse | boolean>;
74
71
  /**
75
72
  * @description This method shall be used to get the available payment methods for the cart. They depend on the seller configuration.
76
73
  * @returns An {@link ErrorResponse} object in case of error, a {@link GetSellerGatewaysResponse} object otherwise.
@@ -86,9 +83,11 @@ export declare abstract class Booking {
86
83
  getPaymentInformationFromGateway(gatewayId: number, returnUrl?: string): Promise<ErrorResponse | GetPaymentInformationFromGatewayResponse>;
87
84
  /**
88
85
  * @description This method shall be used to issue the tickets. It must be called after the payment was successful.
86
+ * @param {PaymentMethods} paymentMethod The payment method used to pay the cart. If the chosen method is {@link PaymentMethods.ZERO_COST},
87
+ * first the {@link Booking.addReduction} API is called with a 100% discount, then tickets are issued with the {@link PaymentMethods.CASH} method.
89
88
  * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
90
89
  */
91
- issueTickets(paymentMethod: PaymentMethods): Promise<ErrorResponse | any>;
90
+ issueTickets(paymentMethod: PaymentMethods): Promise<ErrorResponse | boolean>;
92
91
  }
93
92
  export declare namespace Booking {
94
93
  enum Currencies {
@@ -52,6 +52,7 @@ var config_1 = require("../config");
52
52
  var ErrorResponse_1 = require("../types/ErrorResponse");
53
53
  var Payment_1 = require("../types/common/Payment");
54
54
  var apiCall_1 = require("../utils/apiCall");
55
+ var processBookingSteps_1 = require("../utils/processBookingSteps");
55
56
  var Booking = /** @class */ (function () {
56
57
  /**
57
58
  * This is the constructor of the Booking class.
@@ -86,6 +87,14 @@ var Booking = /** @class */ (function () {
86
87
  this.onCartExpiration = onCartExpiration;
87
88
  this.changeLanguage(language);
88
89
  }
90
+ /**
91
+ * This method allows to update the sellerId. It is mostly important for Linkavel, as we start with sellerId = 0
92
+ * but then it changes to the actual sellerId once the cart is created.
93
+ * @param sellerId The id of the seller.
94
+ */
95
+ Booking.prototype.updateSellerId = function (sellerId) {
96
+ this.sellerId = sellerId;
97
+ };
89
98
  /**
90
99
  * This method allows to renew the access token for calling MTS APIs
91
100
  * @param {string} access_token The new access token
@@ -105,6 +114,13 @@ var Booking = /** @class */ (function () {
105
114
  var completeBody = __assign(__assign(__assign(__assign({}, body), (this.sellerId && { sellerId: this.sellerId.toString() })), (this.resellerId && { resellerId: this.resellerId.toString() })), { language: this.language });
106
115
  return (0, apiCall_1.makePost)(url, completeBody);
107
116
  };
117
+ Booking.prototype.callDeleteApi = function (url) {
118
+ // Add sellerId, resellerId and language to the query string.
119
+ // If the last character of the url is a question mark (meaning that the query string is empty), don't add the "&" character.
120
+ // Otherwise, add it (as we are adding some parameters to the query string)
121
+ var completeUrl = "".concat(url).concat(url.slice(-1) === "?" ? "" : "&").concat(new URLSearchParams(__assign(__assign(__assign({}, (this.sellerId && { sellerId: this.sellerId.toString() })), (this.resellerId && { resellerId: this.resellerId.toString() })), { language: this.language })));
122
+ return (0, apiCall_1.makeDelete)(completeUrl);
123
+ };
108
124
  Booking.prototype.getBookingStepsToStatus = function () {
109
125
  return this.bookingStepsToStatus;
110
126
  };
@@ -134,79 +150,35 @@ var Booking = /** @class */ (function () {
134
150
  });
135
151
  });
136
152
  };
137
- //#endregion
138
- //#region Reductions APIs
139
- /**
140
- * @description This method allows to add a reduction to the cart
141
- * @param {AddReductionRequest} request The information about the reduction to add
142
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
143
- */
144
- Booking.prototype.addReduction = function (request) {
145
- return __awaiter(this, void 0, void 0, function () {
146
- var discountsStep, url;
147
- return __generator(this, function (_a) {
148
- // First check that it is possible to call this API
149
- if (!this.cartId || this.cartId === 0) {
150
- throw Error("Cart is not initialized yet");
151
- }
152
- discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
153
- if (!discountsStep || !discountsStep[0]) {
154
- throw Error("The status of the cart does not allow to call this API");
155
- }
156
- url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/reduction");
157
- return [2 /*return*/, this.callPostApi(url, request).then(function (response) {
158
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
159
- })];
160
- });
161
- });
162
- };
163
- /**
164
- * @description This method allows the user to use the balance in his wallet to pay the cart. If the balance of
165
- * the wallet is enough to pay the cart, the cart will be paid fully. Otherwise, the user will be asked to pay the
166
- * remaining amount with another payment method.
167
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
168
- */
169
- Booking.prototype.useWallet = function () {
170
- return __awaiter(this, void 0, void 0, function () {
171
- var discountsStep, url;
172
- return __generator(this, function (_a) {
173
- // First check that it is possible to call this API
174
- if (!this.cartId || this.cartId === 0) {
175
- throw Error("Cart is not initialized yet");
176
- }
177
- discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
178
- if (!discountsStep || !discountsStep[0]) {
179
- throw Error("The status of the cart does not allow to call this API");
180
- }
181
- url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment/wallet");
182
- return [2 /*return*/, this.callPostApi(url, {}).then(function (response) {
183
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
184
- })];
185
- });
186
- });
187
- };
188
153
  /**
189
- * @description This method allows the user to use a voucher to pay the cart.
190
- * If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
191
- * Otherwise, the user will be asked to pay the remaining amount with another payment method.
192
- * @param {string} voucherCode The code of the voucher to use
193
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
154
+ * This API allows to mark a non-required booking step as completed. It is useful for example for the seats selection step.
155
+ * @param bookingStep The booking step to mark as completed
156
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise.
194
157
  */
195
- Booking.prototype.useVoucher = function (voucherCode) {
158
+ Booking.prototype.markBookingStepCompleted = function (bookingStep) {
196
159
  return __awaiter(this, void 0, void 0, function () {
197
- var discountsStep, url;
160
+ var currentStepStatus, url;
161
+ var _this = this;
198
162
  return __generator(this, function (_a) {
199
163
  // First check that it is possible to call this API
200
164
  if (!this.cartId || this.cartId === 0) {
201
165
  throw Error("Cart is not initialized yet");
202
166
  }
203
- discountsStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
204
- if (!discountsStep || !discountsStep[0]) {
205
- throw Error("The status of the cart does not allow to call this API");
167
+ currentStepStatus = this.bookingStepsToStatus.get(bookingStep);
168
+ if (!currentStepStatus || currentStepStatus[2]) {
169
+ throw Error("The step ".concat(bookingStep, " cannot be marked as completed because it is required"));
206
170
  }
207
- url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment/voucher");
208
- return [2 /*return*/, this.callPostApi(url, { voucherCode: voucherCode }).then(function (response) {
209
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
171
+ // Booking step is already completedm, no need to call the API
172
+ if (currentStepStatus[0])
173
+ return [2 /*return*/, true];
174
+ url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/bookingSteps");
175
+ return [2 /*return*/, this.callPostApi(url, { bookingStep: bookingStep }).then(function (response) {
176
+ if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
177
+ return response;
178
+ }
179
+ // Update the booking process status
180
+ _this.bookingStepsToStatus = (0, processBookingSteps_1.processBookingSteps)(response.stepsToStatus);
181
+ return true;
210
182
  })];
211
183
  });
212
184
  });
@@ -218,21 +190,52 @@ var Booking = /** @class */ (function () {
218
190
  * @returns An {@link ErrorResponse} object in case of error, a {@link GetSellerGatewaysResponse} object otherwise.
219
191
  */
220
192
  Booking.prototype.getSellerGateways = function () {
193
+ var _a;
221
194
  return __awaiter(this, void 0, void 0, function () {
222
- var issueStep, url;
223
- return __generator(this, function (_a) {
224
- // First check that it is possible to call this API
225
- if (!this.cartId || this.cartId === 0) {
226
- throw Error("Cart is not initialized yet");
195
+ var issueStep, _b, _c, _d, _i, step, url;
196
+ return __generator(this, function (_e) {
197
+ switch (_e.label) {
198
+ case 0:
199
+ // First check that it is possible to call this API
200
+ if (!this.cartId || this.cartId === 0) {
201
+ throw Error("Cart is not initialized yet");
202
+ }
203
+ issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
204
+ if (!issueStep)
205
+ throw Error("Booking step not found!");
206
+ if (!!issueStep[0]) return [3 /*break*/, 5];
207
+ _b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS, Booking.BookingSteps.DISCOUNTS];
208
+ _c = [];
209
+ for (_d in _b)
210
+ _c.push(_d);
211
+ _i = 0;
212
+ _e.label = 1;
213
+ case 1:
214
+ if (!(_i < _c.length)) return [3 /*break*/, 4];
215
+ _d = _c[_i];
216
+ if (!(_d in _b)) return [3 /*break*/, 3];
217
+ step = _d;
218
+ if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 3];
219
+ return [4 /*yield*/, this.markBookingStepCompleted(step)];
220
+ case 2:
221
+ _e.sent();
222
+ _e.label = 3;
223
+ case 3:
224
+ _i++;
225
+ return [3 /*break*/, 1];
226
+ case 4:
227
+ // Check again if the issue step is accessible
228
+ issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
229
+ if (!issueStep || !issueStep[0]) {
230
+ throw Error("The status of the cart does not allow to call this API");
231
+ }
232
+ _e.label = 5;
233
+ case 5:
234
+ url = "".concat(this.config.API_ENDPOINT, "/sellers/").concat(this.sellerId, "/gateways");
235
+ return [2 /*return*/, this.callGetApi(url).then(function (response) {
236
+ return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
237
+ })];
227
238
  }
228
- issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
229
- if (!issueStep || !issueStep[0]) {
230
- throw Error("The status of the cart does not allow to call this API");
231
- }
232
- url = "".concat(this.config.API_ENDPOINT, "/sellers/").concat(this.sellerId, "/gateways");
233
- return [2 /*return*/, this.callGetApi(url).then(function (response) {
234
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
235
- })];
236
239
  });
237
240
  });
238
241
  };
@@ -245,7 +248,7 @@ var Booking = /** @class */ (function () {
245
248
  */
246
249
  Booking.prototype.getPaymentInformationFromGateway = function (gatewayId, returnUrl) {
247
250
  return __awaiter(this, void 0, void 0, function () {
248
- var issueStep, url, body;
251
+ var issueStep, searchParams, url;
249
252
  return __generator(this, function (_a) {
250
253
  // First check that it is possible to call this API
251
254
  if (!this.cartId || this.cartId === 0) {
@@ -255,9 +258,9 @@ var Booking = /** @class */ (function () {
255
258
  if (!issueStep || !issueStep[0]) {
256
259
  throw Error("The status of the cart does not allow to call this API");
257
260
  }
258
- url = "".concat(this.config.API_ENDPOINT, "/getPaymentInformationFromGateway");
259
- body = __assign({ cartId: this.cartId, gatewayId: gatewayId }, (returnUrl && { returnUrl: returnUrl }));
260
- return [2 /*return*/, this.callPostApi(url, body).then(function (response) {
261
+ searchParams = new URLSearchParams(__assign({ gatewayId: gatewayId.toString() }, (returnUrl && { returnUrl: returnUrl })));
262
+ url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/payment?").concat(searchParams);
263
+ return [2 /*return*/, this.callGetApi(url).then(function (response) {
261
264
  return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
262
265
  })];
263
266
  });
@@ -265,28 +268,76 @@ var Booking = /** @class */ (function () {
265
268
  };
266
269
  /**
267
270
  * @description This method shall be used to issue the tickets. It must be called after the payment was successful.
271
+ * @param {PaymentMethods} paymentMethod The payment method used to pay the cart. If the chosen method is {@link PaymentMethods.ZERO_COST},
272
+ * first the {@link Booking.addReduction} API is called with a 100% discount, then tickets are issued with the {@link PaymentMethods.CASH} method.
268
273
  * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
269
274
  */
270
275
  Booking.prototype.issueTickets = function (paymentMethod) {
276
+ var _a;
271
277
  return __awaiter(this, void 0, void 0, function () {
272
- var issueStep, url, body;
273
- return __generator(this, function (_a) {
274
- // First check that it is possible to call this API
275
- if (!this.cartId || this.cartId === 0) {
276
- throw Error("Cart is not initialized yet");
277
- }
278
- issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
279
- if (!issueStep || !issueStep[0]) {
280
- throw Error("The status of the cart does not allow to call this API");
278
+ var paymentMethodToSet, issueStep, _b, _c, _d, _i, step, url, body;
279
+ return __generator(this, function (_e) {
280
+ switch (_e.label) {
281
+ case 0:
282
+ // First check that it is possible to call this API
283
+ if (!this.cartId || this.cartId === 0) {
284
+ throw Error("Cart is not initialized yet");
285
+ }
286
+ paymentMethodToSet = paymentMethod;
287
+ if (!(paymentMethod === Payment_1.PaymentMethods.ZERO_COST)) return [3 /*break*/, 2];
288
+ return [4 /*yield*/, this.addReduction({ tripId: 0, reduction: 1, isPercentage: true }).then(function (response) {
289
+ if ((0, ErrorResponse_1.objectIsMTSErrorResponse)(response)) {
290
+ return response;
291
+ }
292
+ else {
293
+ // Request was successful. Set payment method to CASH
294
+ paymentMethodToSet = Payment_1.PaymentMethods.CASH;
295
+ }
296
+ })];
297
+ case 1:
298
+ _e.sent();
299
+ _e.label = 2;
300
+ case 2:
301
+ issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.ISSUE);
302
+ if (!issueStep)
303
+ throw Error("Booking step not found!");
304
+ if (!!issueStep[0]) return [3 /*break*/, 7];
305
+ _b = [Booking.BookingSteps.SEATS_SELECTION, Booking.BookingSteps.EXTRAS, Booking.BookingSteps.DISCOUNTS];
306
+ _c = [];
307
+ for (_d in _b)
308
+ _c.push(_d);
309
+ _i = 0;
310
+ _e.label = 3;
311
+ case 3:
312
+ if (!(_i < _c.length)) return [3 /*break*/, 6];
313
+ _d = _c[_i];
314
+ if (!(_d in _b)) return [3 /*break*/, 5];
315
+ step = _d;
316
+ if (!!((_a = this.bookingStepsToStatus.get(step)) !== null && _a !== void 0 ? _a : [false])[0]) return [3 /*break*/, 5];
317
+ return [4 /*yield*/, this.markBookingStepCompleted(step)];
318
+ case 4:
319
+ _e.sent();
320
+ _e.label = 5;
321
+ case 5:
322
+ _i++;
323
+ return [3 /*break*/, 3];
324
+ case 6:
325
+ // Check again if the issue step is accessible
326
+ issueStep = this.bookingStepsToStatus.get(Booking.BookingSteps.DISCOUNTS);
327
+ if (!issueStep || !issueStep[0]) {
328
+ throw Error("The status of the cart does not allow to call this API");
329
+ }
330
+ _e.label = 7;
331
+ case 7:
332
+ url = "".concat(this.config.API_ENDPOINT, "/booking/cart/").concat(this.cartId, "/issue");
333
+ body = {
334
+ cartId: this.cartId,
335
+ paymentMethod: paymentMethodToSet === Payment_1.PaymentMethods.PAY_LATER ? null : paymentMethodToSet,
336
+ };
337
+ return [2 /*return*/, this.callPostApi(url, body).then(function (response) {
338
+ return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : true;
339
+ })];
281
340
  }
282
- url = "".concat(this.config.API_ENDPOINT, "/issueTickets");
283
- body = {
284
- cartId: this.cartId,
285
- paymentMethod: paymentMethod === Payment_1.PaymentMethods.PAY_LATER ? null : paymentMethod,
286
- };
287
- return [2 /*return*/, this.callPostApi(url, body).then(function (response) {
288
- return (0, ErrorResponse_1.objectIsMTSErrorResponse)(response) ? response : response;
289
- })];
290
341
  });
291
342
  });
292
343
  };
@@ -1,9 +1,11 @@
1
1
  import { MTSEnvs } from "../config";
2
2
  import { ErrorResponse } from "../types/ErrorResponse";
3
3
  import { EditPassengersDetailsRequest, GetBuyerPassengersDetailsResponse, Person } from "../types/common/Person";
4
+ import { AddReductionRequest } from "../types/common/Reduction";
4
5
  import { BusMatrix } from "../types/journeys/BusMatrix";
5
6
  import { CreateJourneyCartRequest, JourneyCart } from "../types/journeys/JourneyCart";
6
7
  import { JourneySearchRequest, JourneySearchResult } from "../types/journeys/JourneySearch";
8
+ import { ReductionTrip } from "../types/journeys/Trip";
7
9
  import { Booking } from "./booking";
8
10
  export declare class JourneyBooking extends Booking {
9
11
  private cart?;
@@ -68,9 +70,9 @@ export declare class JourneyBooking extends Booking {
68
70
  /**
69
71
  * @description This methosd shall be called when the user wants to update the buyer and the passengers information.
70
72
  * @param {EditPassengersDetailsRequest} passengersDetails The object containing the buyer and the passengers information.
71
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
73
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise.
72
74
  */
73
- updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse | any>;
75
+ updateBuyerPassengersDetails(passengersDetails: EditPassengersDetailsRequest): Promise<ErrorResponse | boolean>;
74
76
  /**
75
77
  * @description This method shall be used when the user wants to retrieve the bus matrix for a trip. The bus matrix shows
76
78
  * the seats that are available and the ones that are already taken, as well as how the bus is made.
@@ -90,9 +92,50 @@ export declare class JourneyBooking extends Booking {
90
92
  * @description This method shall be called when the user wants to change the assigned seats of a trip.
91
93
  * @param {number} tripId The id of the trip for which the seats should be changed
92
94
  * @param {number[]} newSeatsIds The ids of the new seats, as found the {@link BusMatrix}
93
- * @returns An {@link ErrorResponse} object in case of error, nothing otherwise.
95
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise.
94
96
  */
95
- changeSeatsOfTrip(tripId: number, newSeatsIds: number[]): Promise<ErrorResponse | any>;
97
+ changeSeatsOfTrip(tripId: number, newSeatsIds: number[]): Promise<ErrorResponse | boolean>;
98
+ /**
99
+ * @description This method shall be called when the user wants to retrieve the trips in the cart, for adding a available reduction
100
+ * to a specific trip (rather than to the whole cart).
101
+ * @see {@link Booking.addReduction} for detailed info on how to add a reduction.
102
+ * @returns An {@link ErrorResponse} object in case of error, a list of {@link ReductionTrip} otherwise, representing the trips in the cart.
103
+ */
104
+ getCartTrips(): Promise<ErrorResponse | ReductionTrip[]>;
105
+ /**
106
+ * @description This method allows to add a reduction to the whole cart or to a single trip in the cart.
107
+ * @param {AddReductionRequest} request The information about the reduction to add
108
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
109
+ */
110
+ addReduction(request: AddReductionRequest): Promise<ErrorResponse | boolean>;
111
+ /**
112
+ * @description This method allows to remove a reduction from the whole cart or from a single trip in the cart.
113
+ * @param tripId The id of the trip from which the reduction should be removed. If the tripId is 0, then the reduction
114
+ * will be removed from the whole cart.
115
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
116
+ */
117
+ removeReduction(tripId: number): Promise<ErrorResponse | boolean>;
118
+ /**
119
+ * @description This method allows the user to use the balance in his wallet to pay the cart. If the balance of
120
+ * the wallet is enough to pay the cart, the cart will be paid fully. Otherwise, the user will be asked to pay the
121
+ * remaining amount with another payment method.
122
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise.
123
+ */
124
+ useWallet(): Promise<ErrorResponse | boolean>;
125
+ /**
126
+ * @description This method allows to remove a waller reduction from the cart.
127
+ *
128
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise. Also, the cart is updated.
129
+ */
130
+ removeWalletReduction(): Promise<ErrorResponse | boolean>;
131
+ /**
132
+ * @description This method allows the user to use a voucher to pay the cart.
133
+ * If the balance of the value of the voucher is enough to pay the cart, the cart will be paid fully.
134
+ * Otherwise, the user will be asked to pay the remaining amount with another payment method.
135
+ * @param {string} voucherCode The code of the voucher to use
136
+ * @returns An {@link ErrorResponse} object in case of error, true otherwise.
137
+ */
138
+ useVoucher(voucherCode: string): Promise<ErrorResponse | boolean>;
96
139
  }
97
140
  export declare namespace JourneyBooking {
98
141
  const createBooking: (env: MTSEnvs, sub_key: string, onCartExpiration: () => void, debug: boolean, language: string, access_token?: string, sellerId?: number, resellerId?: number) => Promise<JourneyBooking>;