/**
 * OpenAPI spec version: 1.0
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { OcTokenService } from './token.service';
import { Address } from '../model/address';
import { ListOrder } from '../model/listOrder';
import { ListOrderApproval } from '../model/listOrderApproval';
import { ListOrderPromotion } from '../model/listOrderPromotion';
import { ListShipment } from '../model/listShipment';
import { ListUser } from '../model/listUser';
import { Order } from '../model/order';
import { OrderApprovalInfo } from '../model/orderApprovalInfo';
import { OrderPromotion } from '../model/orderPromotion';
import { OrderSplitResult } from '../model/orderSplitResult';
import { Shipment } from '../model/shipment';
import { User } from '../model/user';
import { Configuration } from '../configuration';
export declare class OcOrderService {
    protected httpClient: HttpClient;
    protected ocTokenService: OcTokenService;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    private impersonating;
    constructor(httpClient: HttpClient, ocTokenService: OcTokenService, basePath: string, configuration: Configuration);
    /**
     * @description enable impersonation by calling this prior to any of the other methods in this service
     *
     */
    As(): this;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Delete(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<any>;
    Delete(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<any>>;
    Delete(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param promoCode Promo code of the order promotion.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    AddPromotion<OrderPromotionXp = any>(direction: string, orderID: string, promoCode: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<OrderPromotion<OrderPromotionXp>>;
    AddPromotion<OrderPromotionXp = any>(direction: string, orderID: string, promoCode: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<OrderPromotion>>;
    AddPromotion<OrderPromotionXp = any>(direction: string, orderID: string, promoCode: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<OrderPromotion>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param orderApprovalInfo
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Approve<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, orderApprovalInfo: OrderApprovalInfo, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Approve<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, orderApprovalInfo: OrderApprovalInfo, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Approve<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, orderApprovalInfo: OrderApprovalInfo, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Cancel<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Cancel<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Cancel<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Complete<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Complete<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Complete<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param order
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Create<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, order: Order, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Create<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, order: Order, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Create<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, order: Order, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param orderApprovalInfo
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Decline<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, orderApprovalInfo: OrderApprovalInfo, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Decline<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, orderApprovalInfo: OrderApprovalInfo, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Decline<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, orderApprovalInfo: OrderApprovalInfo, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Forward<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<OrderSplitResult<OrderXp, UserXp, AddressXp>>;
    Forward<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<OrderSplitResult>>;
    Forward<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<OrderSplitResult>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Get<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Get<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Get<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param options.buyerID ID of the buyer.
     * @param options.supplierID ID of the supplier.
     * @param options.from Lower bound of date range that the order was created.
     * @param options.to Upper bound of date range that the order was created.
     * @param options.search Word or phrase to search for.
     * @param options.searchOn Comma-delimited list of fields to search on.
     * @param options.sortBy Comma-delimited list of fields to sort by.
     * @param options.page Page of results to return. Default: 1
     * @param options.pageSize Number of results to return per page. Default: 20, max: 100.
     * @param options.filters Any additional key/value pairs passed in the query string are interpretted as filters. Valid keys are top-level properties of the returned model or &#39;xp.???&#39;
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    List<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, options?: {
        buyerID?: string;
        supplierID?: string;
        from?: string;
        to?: string;
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<ListOrder<OrderXp, UserXp, AddressXp>>;
    List<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, options?: {
        buyerID?: string;
        supplierID?: string;
        from?: string;
        to?: string;
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<ListOrder>>;
    List<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, options?: {
        buyerID?: string;
        supplierID?: string;
        from?: string;
        to?: string;
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<ListOrder>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.search Word or phrase to search for.
     * @param options.searchOn Comma-delimited list of fields to search on.
     * @param options.sortBy Comma-delimited list of fields to sort by.
     * @param options.page Page of results to return. Default: 1
     * @param options.pageSize Number of results to return per page. Default: 20, max: 100.
     * @param options.filters Any additional key/value pairs passed in the query string are interpretted as filters. Valid keys are top-level properties of the returned model or &#39;xp.???&#39;
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    ListApprovals<UserXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<ListOrderApproval<UserXp>>;
    ListApprovals<UserXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<ListOrderApproval>>;
    ListApprovals<UserXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<ListOrderApproval>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.search Word or phrase to search for.
     * @param options.searchOn Comma-delimited list of fields to search on.
     * @param options.sortBy Comma-delimited list of fields to sort by.
     * @param options.page Page of results to return. Default: 1
     * @param options.pageSize Number of results to return per page. Default: 20, max: 100.
     * @param options.filters Any additional key/value pairs passed in the query string are interpretted as filters. Valid keys are top-level properties of the returned model or &#39;xp.???&#39;
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    ListEligibleApprovers<UserXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<ListUser<UserXp>>;
    ListEligibleApprovers<UserXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<ListUser>>;
    ListEligibleApprovers<UserXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<ListUser>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.search Word or phrase to search for.
     * @param options.searchOn Comma-delimited list of fields to search on.
     * @param options.sortBy Comma-delimited list of fields to sort by.
     * @param options.page Page of results to return. Default: 1
     * @param options.pageSize Number of results to return per page. Default: 20, max: 100.
     * @param options.filters Any additional key/value pairs passed in the query string are interpretted as filters. Valid keys are top-level properties of the returned model or &#39;xp.???&#39;
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    ListPromotions<OrderPromotionXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<ListOrderPromotion<OrderPromotionXp>>;
    ListPromotions<OrderPromotionXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<ListOrderPromotion>>;
    ListPromotions<OrderPromotionXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<ListOrderPromotion>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.search Word or phrase to search for.
     * @param options.searchOn Comma-delimited list of fields to search on.
     * @param options.sortBy Comma-delimited list of fields to sort by.
     * @param options.page Page of results to return. Default: 1
     * @param options.pageSize Number of results to return per page. Default: 20, max: 100.
     * @param options.filters Any additional key/value pairs passed in the query string are interpretted as filters. Valid keys are top-level properties of the returned model or &#39;xp.???&#39;
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    ListShipments<ShipmentXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<ListShipment<ShipmentXp, AddressXp>>;
    ListShipments<ShipmentXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<ListShipment>>;
    ListShipments<ShipmentXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        search?: string;
        searchOn?: string;
        sortBy?: string;
        page?: number;
        pageSize?: number;
        filters?: {
            [key: string]: string | Array<string>;
        };
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<ListShipment>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param partialOrder
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Patch<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialOrder: Order, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Patch<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialOrder: Order, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Patch<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialOrder: Order, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param partialAddress
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    PatchBillingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialAddress: Address, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    PatchBillingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialAddress: Address, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    PatchBillingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialAddress: Address, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param partialUser
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    PatchFromUser<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialUser: User, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    PatchFromUser<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialUser: User, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    PatchFromUser<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialUser: User, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param partialAddress
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    PatchShippingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialAddress: Address, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    PatchShippingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialAddress: Address, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    PatchShippingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, partialAddress: Address, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param promoCode Promo code of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    RemovePromotion<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, promoCode: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    RemovePromotion<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, promoCode: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    RemovePromotion<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, promoCode: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param order
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Save<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, order: Order, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Save<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, order: Order, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Save<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, order: Order, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param address
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    SetBillingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, address: Address, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    SetBillingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, address: Address, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    SetBillingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, address: Address, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param address
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    SetShippingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, address: Address, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    SetShippingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, address: Address, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    SetShippingAddress<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, address: Address, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param shipment
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Ship<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, shipment: Shipment, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Ship<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, shipment: Shipment, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Ship<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, shipment: Shipment, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Split<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<OrderSplitResult<OrderXp, UserXp, AddressXp>>;
    Split<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<OrderSplitResult>>;
    Split<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<OrderSplitResult>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Submit<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<Order<OrderXp, UserXp, AddressXp>>;
    Submit<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<Order>>;
    Submit<OrderXp = any, UserXp = any, AddressXp = any>(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<Order>>;
    /**
     *
     *
     * @param direction Direction of the order, from the current user&#39;s perspective. Possible values: incoming, outgoing.
     * @param orderID ID of the order.
     * @param options.observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param options.reportProgress flag to report request and response progress.
     */
    Validate(direction: string, orderID: string, options?: {
        observe?: 'body';
        reportProgress?: boolean;
    }): Observable<any>;
    Validate(direction: string, orderID: string, options?: {
        observe?: 'response';
        reportProgress?: boolean;
    }): Observable<HttpResponse<any>>;
    Validate(direction: string, orderID: string, options?: {
        observe?: 'events';
        reportProgress?: boolean;
    }): Observable<HttpEvent<any>>;
}
