import { OrderServiceApi } from '../../publish/order/apis/order-service-api';
import { OrderServiceCollectiveOrdersApi, OrderServiceCollectiveOrdersApiDeleteSubOrderRequest, OrderServiceCollectiveOrdersApiGetSubOrderRequest } from '../../publish/order/apis/order-service-collective-orders-api';
import { OrderServiceIndividualOrdersApi, OrderServiceIndividualOrdersApiDeleteIndividualOrderRequest, OrderServiceIndividualOrdersApiGetIndividualOrderRequest } from '../../publish/order/apis/order-service-individual-orders-api';
import { Configuration } from '../../publish/order/configuration';
import { OrderInfoRequestHeader, OrderRequest, OrderStatusEnum, OrderSubOrderRequest, OrderUpdateIndividualOrderRequest, OrderUpdateInfoSubOrderRequest } from '../../publish/order/models';
type GetDeleteOrderResponse = {
    data: {
        result: {
            lastActionStatus: OrderStatusEnum;
        };
    };
};
declare class OrderBaseService extends OrderServiceApi {
    orderActionSync<OrderActionFunction extends (...args: any) => Promise<any>, GetOrderResponse extends Awaited<ReturnType<OrderServiceIndividualOrdersApi['getIndividualOrder']>> | Awaited<ReturnType<OrderServiceCollectiveOrdersApi['getCollectiveOrder']>> | Awaited<ReturnType<OrderServiceCollectiveOrdersApi['getSubOrder']>> | GetDeleteOrderResponse>(orderActionFunction: OrderActionFunction, orderActionArgs: Parameters<OrderActionFunction>, getOrderFunction: (createOrderResponse: Awaited<ReturnType<OrderActionFunction>>) => Promise<GetOrderResponse>): Promise<GetOrderResponse>;
    pollDeletedOrder(getOrderFunction: () => Promise<any>): Promise<GetDeleteOrderResponse>;
}
declare class OrderServiceIndividualOrdersBase extends OrderServiceIndividualOrdersApi {
    private getTokenFn?;
    constructor(configuration?: Configuration, basePath?: string, getTokenFn?: () => Promise<string>);
    protected orderBaseService: OrderBaseService;
}
declare class OrderServiceCollectiveOrdersBase extends OrderServiceCollectiveOrdersApi {
    private getTokenFn?;
    constructor(configuration?: Configuration, basePath?: string, getTokenFn?: () => Promise<string>);
    protected orderBaseService: OrderBaseService;
}
export declare class OrderServiceIndividualOrders extends OrderServiceIndividualOrdersBase {
    protected basePath: string;
    constructor(basePath: string, getTokenFn?: () => Promise<string>);
    createIndividualOrderSync(body: OrderRequest): Promise<import("axios").AxiosResponse<import("../../publish/order/models").OrderGetInfoResponse, any, {}>>;
    updateIndividualOrderSync(pathParameters: OrderServiceIndividualOrdersApiGetIndividualOrderRequest, body: OrderUpdateIndividualOrderRequest): Promise<import("axios").AxiosResponse<import("../../publish/order/models").OrderGetInfoResponse, any, {}>>;
    deleteIndividualOrderSync(pathParameters: OrderServiceIndividualOrdersApiDeleteIndividualOrderRequest): Promise<GetDeleteOrderResponse>;
}
export declare class OrderServiceCollectiveOrders extends OrderServiceCollectiveOrdersBase {
    protected basePath: string;
    constructor(basePath: string, getTokenFn?: () => Promise<string>);
    createCollectiveOrderSync(body: OrderInfoRequestHeader): Promise<import("axios").AxiosResponse<import("../../publish/order/models").OrderCollectiveGetInfoResponse, any, {}>>;
    createSubOrderSync(body: OrderSubOrderRequest): Promise<import("axios").AxiosResponse<import("../../publish/order/models").OrderSubOrderGetInfoResponse, any, {}>>;
    updateCollectiveOrderSync(pathParameters: {
        collectiveOrderId: string;
    }, body: OrderInfoRequestHeader): Promise<import("axios").AxiosResponse<import("../../publish/order/models").OrderCollectiveGetInfoResponse, any, {}>>;
    updateSubOrderSync(pathParameters: OrderServiceCollectiveOrdersApiGetSubOrderRequest, body: OrderUpdateInfoSubOrderRequest): Promise<import("axios").AxiosResponse<import("../../publish/order/models").OrderSubOrderGetInfoResponse, any, {}>>;
    deleteSubOrderSync(pathParameters: OrderServiceCollectiveOrdersApiDeleteSubOrderRequest): Promise<GetDeleteOrderResponse>;
}
export {};
