import { DataChangedOnWebhook, DeliveryDto, QuotedResult, DOCreatedData, ProviderUpdate } from './delivery.interface'; import { DineroObject } from '~backend/utils/model'; /** * Delivery provider service base class * Extends this class for new provider, such as lalamove, etc * Currently have grab and manual * * To create a new deivery provider service (lalamove in this case): * 1. create lalamove service, and extends this class * 2. implement all the function * 3. add lalamove service to delivery.service, handle switch case in delivery.service * 4. test the full delivery flow (check order readme.md for the delivery flow) */ export declare abstract class DeliveryProviderService { logger: any; constructor(); /** * get the quotation of the order * @param deliveryDto * @param noSurcharge indicate the quote is included surcharge or not */ abstract getQuote(deliveryDto: DeliveryDto, noSurcharge?: boolean): Promise; /** * create the delivery by calling this api * @param deliveryDto * @param orderId */ abstract createDeliveries(deliveryDto: DeliveryDto, orderId: string): Promise; /** * delivery will be cancel by call this * @param id */ abstract cancelDeliveries(id: string, cancellationSource?: any): any; /** * get delivery object from api * @param id */ abstract getDeliveries(id: string): any; /** * extract the delivery id from webhook body * @param body */ abstract getWebhookDeliveryId(body: any): string; /** * extract the reference id (in current case is orderid) from webhook body * @param body */ abstract getWebhookReferenceId(body: any): string; /** * define on webhook event * @param body */ abstract onWebhook(body: any): Promise; abstract getQuotedResult(deliveryDto: DeliveryDto): Promise; abstract getSurcharge(): DineroObject; abstract refreshDeliveryProvider(deliveryId: string): Promise; }