import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AllocationServiceRunResponse } from '../model/allocationServiceRunResponse';
import { BlockAndOrdersCreateRequest } from '../model/blockAndOrdersCreateRequest';
import { BookTransactionsRequest } from '../model/bookTransactionsRequest';
import { BookTransactionsResponse } from '../model/bookTransactionsResponse';
import { CancelOrdersAndMoveRemainingRequest } from '../model/cancelOrdersAndMoveRemainingRequest';
import { CancelOrdersAndMoveRemainingResponse } from '../model/cancelOrdersAndMoveRemainingResponse';
import { CancelOrdersResponse } from '../model/cancelOrdersResponse';
import { CancelPlacementsResponse } from '../model/cancelPlacementsResponse';
import { MoveOrdersToDifferentBlocksRequest } from '../model/moveOrdersToDifferentBlocksRequest';
import { OrderUpdateRequest } from '../model/orderUpdateRequest';
import { PlaceBlocksRequest } from '../model/placeBlocksRequest';
import { PlacementUpdateRequest } from '../model/placementUpdateRequest';
import { ResourceId } from '../model/resourceId';
import { ResourceListOfBlockAndOrders } from '../model/resourceListOfBlockAndOrders';
import { ResourceListOfChangeIntervalWithOrderManagementDetail } from '../model/resourceListOfChangeIntervalWithOrderManagementDetail';
import { ResourceListOfMovedOrderToDifferentBlockResponse } from '../model/resourceListOfMovedOrderToDifferentBlockResponse';
import { ResourceListOfPlacement } from '../model/resourceListOfPlacement';
import { UpdateOrdersResponse } from '../model/updateOrdersResponse';
import { UpdatePlacementsResponse } from '../model/updatePlacementsResponse';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class OrderManagementService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * [EXPERIMENTAL] BookTransactions: Books transactions using specific allocations as a source.
     * Takes a collection of allocation IDs, and maps fields from those allocations and related orders onto new transactions.
     * @param bookTransactionsRequest The allocations to create transactions for
     * @param applyFeesAndCommission Whether to apply fees and commissions to transactions (default: true)
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    bookTransactions(bookTransactionsRequest: BookTransactionsRequest, applyFeesAndCommission?: boolean, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<BookTransactionsResponse>;
    bookTransactions(bookTransactionsRequest: BookTransactionsRequest, applyFeesAndCommission?: boolean, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<BookTransactionsResponse>>;
    bookTransactions(bookTransactionsRequest: BookTransactionsRequest, applyFeesAndCommission?: boolean, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<BookTransactionsResponse>>;
    /**
     * [EARLY ACCESS] CancelOrders: Cancel existing orders
     * The response returns both the collection of successfully canceled orders, as well as those  that failed. For each failure, a reason is provided. It is important to check the failed set for  unsuccessful results.
     * @param requestBody The request containing the ids of the orders to be cancelled.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    cancelOrders(requestBody: {
        [key: string]: ResourceId;
    }, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<CancelOrdersResponse>;
    cancelOrders(requestBody: {
        [key: string]: ResourceId;
    }, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<CancelOrdersResponse>>;
    cancelOrders(requestBody: {
        [key: string]: ResourceId;
    }, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<CancelOrdersResponse>>;
    /**
     * [EARLY ACCESS] CancelOrdersAndMoveRemaining: Cancel existing orders and move any unplaced quantities to new orders in new blocks
     * Cancels existing orders, reducing their quantities to those aleady placed. Any remaining quantities are moved  to new orders in new blocks. The placed quantities are distributed to the cancelled orders on a pro-rata basis.
     * @param requestBody The request containing the orders to be cancelled, and the destinations of remaining quantities.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    cancelOrdersAndMoveRemaining(requestBody: {
        [key: string]: CancelOrdersAndMoveRemainingRequest;
    }, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<CancelOrdersAndMoveRemainingResponse>;
    cancelOrdersAndMoveRemaining(requestBody: {
        [key: string]: CancelOrdersAndMoveRemainingRequest;
    }, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<CancelOrdersAndMoveRemainingResponse>>;
    cancelOrdersAndMoveRemaining(requestBody: {
        [key: string]: CancelOrdersAndMoveRemainingRequest;
    }, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<CancelOrdersAndMoveRemainingResponse>>;
    /**
     * [EARLY ACCESS] CancelPlacements: Cancel existing placements
     * The response returns both the collection of successfully canceled placements, as well as those  that failed. For each failure, a reason is provided. It is important to check the failed set for  unsuccessful results.
     * @param requestBody The request containing the ids of the placements to be cancelled.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    cancelPlacements(requestBody: {
        [key: string]: ResourceId;
    }, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<CancelPlacementsResponse>;
    cancelPlacements(requestBody: {
        [key: string]: ResourceId;
    }, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<CancelPlacementsResponse>>;
    cancelPlacements(requestBody: {
        [key: string]: ResourceId;
    }, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<CancelPlacementsResponse>>;
    /**
     * [EARLY ACCESS] CreateOrders: Upsert a Block and associated orders
     * Upsert a Block and create associated orders.  This will fail if the block exists and already references orders with differing fields to the upsert request.
     * @param blockAndOrdersCreateRequest The collection of block and orders requests.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    createOrders(blockAndOrdersCreateRequest: BlockAndOrdersCreateRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<ResourceListOfBlockAndOrders>;
    createOrders(blockAndOrdersCreateRequest: BlockAndOrdersCreateRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<ResourceListOfBlockAndOrders>>;
    createOrders(blockAndOrdersCreateRequest: BlockAndOrdersCreateRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<ResourceListOfBlockAndOrders>>;
    /**
     * [EXPERIMENTAL] GetOrderHistory: Get the history of an order and related entity changes
     * Get the changes that have happened to an order and related entities.
     * @param scope The scope of the order.
     * @param code The code of the order.
     * @param asAt The asAt datetime at which to retrieve the history of the order and related entities. Defaults              to return the latest version if not specified.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    getOrderHistory(scope: string, code: string, asAt?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<ResourceListOfChangeIntervalWithOrderManagementDetail>;
    getOrderHistory(scope: string, code: string, asAt?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<ResourceListOfChangeIntervalWithOrderManagementDetail>>;
    getOrderHistory(scope: string, code: string, asAt?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<ResourceListOfChangeIntervalWithOrderManagementDetail>>;
    /**
     * [EARLY ACCESS] MoveOrders: Move orders to new or existing block
     * Move an order to a block, creating the block if it does not already exist.   This will fail if the block exists and already references orders with differing fields to the upsert request.
     * @param moveOrdersToDifferentBlocksRequest The collection of order and destination block ids.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    moveOrders(moveOrdersToDifferentBlocksRequest: MoveOrdersToDifferentBlocksRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<ResourceListOfMovedOrderToDifferentBlockResponse>;
    moveOrders(moveOrdersToDifferentBlocksRequest: MoveOrdersToDifferentBlocksRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<ResourceListOfMovedOrderToDifferentBlockResponse>>;
    moveOrders(moveOrdersToDifferentBlocksRequest: MoveOrdersToDifferentBlocksRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<ResourceListOfMovedOrderToDifferentBlockResponse>>;
    /**
     * [EARLY ACCESS] PlaceBlocks: Places blocks for a given list of placement requests.
     * The referenced block\&#39;s existence will be verified.
     * @param placeBlocksRequest The request containing the blocks to the placed.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    placeBlocks(placeBlocksRequest?: PlaceBlocksRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<ResourceListOfPlacement>;
    placeBlocks(placeBlocksRequest?: PlaceBlocksRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<ResourceListOfPlacement>>;
    placeBlocks(placeBlocksRequest?: PlaceBlocksRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<ResourceListOfPlacement>>;
    /**
     * [EXPERIMENTAL] RunAllocationService: Runs the Allocation Service
     * This will allocate executions for a given list of placements back to their originating orders.
     * @param resourceId The List of Placement IDs for which you wish to allocate executions.
     * @param allocationAlgorithm A string representation of the allocation algorithm you would like to use to allocate shares from executions e.g. \&quot;PR-FIFO\&quot;.  This defaults to \&quot;PR-FIFO\&quot;.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    runAllocationService(resourceId: Array<ResourceId>, allocationAlgorithm?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<AllocationServiceRunResponse>;
    runAllocationService(resourceId: Array<ResourceId>, allocationAlgorithm?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<AllocationServiceRunResponse>>;
    runAllocationService(resourceId: Array<ResourceId>, allocationAlgorithm?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<AllocationServiceRunResponse>>;
    /**
     * [EARLY ACCESS] UpdateOrders: Update existing orders
     * The response returns both the collection of successfully updated orders, as well as those  that failed. For each failure, a reason is provided. It is important to check the failed set for  unsuccessful results.
     * @param requestBody The request containing the orders to be updated.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    updateOrders(requestBody: {
        [key: string]: OrderUpdateRequest;
    }, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<UpdateOrdersResponse>;
    updateOrders(requestBody: {
        [key: string]: OrderUpdateRequest;
    }, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<UpdateOrdersResponse>>;
    updateOrders(requestBody: {
        [key: string]: OrderUpdateRequest;
    }, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<UpdateOrdersResponse>>;
    /**
     * [EARLY ACCESS] UpdatePlacements: Update existing placements
     * The response returns both the collection of successfully updated placements, as well as those  that failed. For each failure, a reason is provided. It is important to check the failed set for  unsuccessful results.
     * @param requestBody The request containing the placements to be updated.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    updatePlacements(requestBody: {
        [key: string]: PlacementUpdateRequest;
    }, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<UpdatePlacementsResponse>;
    updatePlacements(requestBody: {
        [key: string]: PlacementUpdateRequest;
    }, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<UpdatePlacementsResponse>>;
    updatePlacements(requestBody: {
        [key: string]: PlacementUpdateRequest;
    }, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<UpdatePlacementsResponse>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrderManagementService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OrderManagementService>;
}
