import { AxiosResponse } from 'axios'; import { IOrder } from 'platform-proxies'; import { ToastOrder } from '../../toast/interface'; import { ICreatedProviderOrder } from './provider-order.interface'; import { IVendor } from './vendor.interface'; export type ProviderOrder = ToastOrder; export interface IProviderService { /** * Prepare order object for specific vendor-provider service * @param {IVendor} vendor * @param {IOrder} order in our system * @return {Promise>} * @throws {Error} */ prepareOrderObject(vendor: IVendor, order: IOrder): Promise>; /** * Create order in specific vendor-provider service * @param {IVendor} vendor * @param {Partial} providerOrder * @return {Promise>} * @throws {AxiosException} */ createOrder(vendor: IVendor, providerOrder: Partial): Promise>; /** * Retrieve provider order id from provider order * @param {ProviderOrder} providerOrder * @return {string | undefined} */ getProviderOrderId(providerOrder: ProviderOrder): string | undefined; /** * Retrieve base provider order information * @param {ProviderOrder} providerOrder * @return {ICreatedProviderOrder} */ transformProviderOrder(providerOrder: ProviderOrder): ICreatedProviderOrder; /** * Refund order in specific vendor-provider service * @param {IVendor} vendor * @param {IOrder} order * @return {Promise>} * @throws {AxiosException|MethodNotAllowedException|Error} */ refund(vendor: IVendor, order: IOrder): Promise>; /** * Notify of an error when creating an order * @param {IOrder} order * @param {Error} error * @return {Promise} */ notifyCreateOrderError(order: IOrder, error: Error): Promise; /** * Notify of any critical error * @param {IOrder} order * @param {Error} error * @return {Promise} */ notifyError(order: IOrder, error: Error): Promise; /** * Check if created provider order has valid information * @param {IOrder} order * @param {ProviderOrder} providerOrder * @return {Promise} * @throws {Error} if order has some issue */ checkCreatedOrderPrice(order: IOrder, providerOrder: ProviderOrder): Promise; /** * Notify system about issue between order in our system and provider order * @param {IVendor} vendor * @param {IOrder} order * @param {Error} error */ notifyCreatedOrderPriceError(vendor: IVendor, order: IOrder, error: Error); }