import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DeleteClientInstrumentsResponse } from '../model/deleteClientInstrumentsResponse';
import { Instrument } from '../model/instrument';
import { InstrumentProperty } from '../model/instrumentProperty';
import { LookupInstrumentsFromCodesResponse } from '../model/lookupInstrumentsFromCodesResponse';
import { TryAddClientInstruments } from '../model/tryAddClientInstruments';
import { UpsertInstrumentPropertiesResponse } from '../model/upsertInstrumentPropertiesResponse';
import { Configuration } from '../configuration';
export declare class InstrumentsService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    constructor(httpClient: HttpClient, basePath: string, configuration: Configuration);
    /**
     * @param consumes string[] mime-types
     * @return true: consumes contains 'multipart/form-data', false: otherwise
     */
    private canConsumeForm(consumes);
    /**
     * Create instrument
     * Attempt to create one or more \&quot;client\&quot; instruments. Each instrument is keyed by some unique key. This key is unimportant, and serves only as a method to identify created instruments in the response.    The response will return both the collection of successfully created instruments, as well as those that were rejected and why their creation failed. They will be keyed against the key supplied in the  request.                It is important to always check the &#39;Failed&#39; set for any unsuccessful results.
     * @param definitions The client instrument definitions
     * @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.
     */
    batchAddClientInstruments(definitions?: any, observe?: 'body', reportProgress?: boolean): Observable<TryAddClientInstruments>;
    batchAddClientInstruments(definitions?: any, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<TryAddClientInstruments>>;
    batchAddClientInstruments(definitions?: any, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<TryAddClientInstruments>>;
    /**
     * Delete instrument
     * Attempt to delete one or more \&quot;client\&quot; instruments.    The response will include those instruments that could not be deleted (as well as any available details).                It is important to always check the &#39;Failed&#39; set for any unsuccessful results.
     * @param uids The unique identifiers of the instruments to delete
     * @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.
     */
    batchDeleteClientInstruments(uids?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<DeleteClientInstrumentsResponse>;
    batchDeleteClientInstruments(uids?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeleteClientInstrumentsResponse>>;
    batchDeleteClientInstruments(uids?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeleteClientInstrumentsResponse>>;
    /**
     * Upsert instrument properties
     * Attempt to upsert property data for one or more instruments, properties, and effective dates.    The response will include the details of any failures that occurred during data storage.                It is important to always check the &#39;Failed&#39; collection for any unsuccessful results.
     * @param instrumentProperties The instrument property data
     * @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.
     */
    batchUpsertInstrumentProperties(instrumentProperties?: Array<InstrumentProperty>, observe?: 'body', reportProgress?: boolean): Observable<UpsertInstrumentPropertiesResponse>;
    batchUpsertInstrumentProperties(instrumentProperties?: Array<InstrumentProperty>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<UpsertInstrumentPropertiesResponse>>;
    batchUpsertInstrumentProperties(instrumentProperties?: Array<InstrumentProperty>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<UpsertInstrumentPropertiesResponse>>;
    /**
     * Get instrument definition
     * Get an individual instrument by the one of its unique instrument identifiers. Optionally, it is possible to decorate each instrument with specified property data.
     * @param uid The uid of the requested instrument
     * @param asAt Optional. The AsAt date of the data
     * @param instrumentPropertyKeys Optional. Keys of the properties to be decorated on to the instrument
     * @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.
     */
    getInstrument(uid: string, asAt?: Date, instrumentPropertyKeys?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<Instrument>;
    getInstrument(uid: string, asAt?: Date, instrumentPropertyKeys?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Instrument>>;
    getInstrument(uid: string, asAt?: Date, instrumentPropertyKeys?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Instrument>>;
    /**
     * Lookup instrument definition
     * Lookup one or more instrument definitions by specifying non-LUSID identifiers. Optionally, it is possible to decorate each instrument with specified property data.    The response will return both the collection of found instruments for each identifier, as well as a collection of all identifiers for which no instruments could be found (as well as any available details).                It is important to always check the &#39;Failed&#39; set for any unsuccessful results.
     * @param codeType The type of identifiers
     * @param codes One or more identifiers of the type specified in the codeType
     * @param asAt Optional. The AsAt date of the data
     * @param instrumentPropertyKeys Optional. Keys of the properties to be decorated on to the instrument
     * @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.
     */
    lookupInstrumentsFromCodes(codeType?: 'Undefined' | 'LusidInstrumentId' | 'ReutersAssetId' | 'CINS' | 'Isin' | 'Sedol' | 'Cusip' | 'Ticker' | 'ClientInternal' | 'Figi' | 'CompositeFigi' | 'ShareClassFigi' | 'Wertpapier', codes?: Array<string>, asAt?: Date, instrumentPropertyKeys?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<LookupInstrumentsFromCodesResponse>;
    lookupInstrumentsFromCodes(codeType?: 'Undefined' | 'LusidInstrumentId' | 'ReutersAssetId' | 'CINS' | 'Isin' | 'Sedol' | 'Cusip' | 'Ticker' | 'ClientInternal' | 'Figi' | 'CompositeFigi' | 'ShareClassFigi' | 'Wertpapier', codes?: Array<string>, asAt?: Date, instrumentPropertyKeys?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<LookupInstrumentsFromCodesResponse>>;
    lookupInstrumentsFromCodes(codeType?: 'Undefined' | 'LusidInstrumentId' | 'ReutersAssetId' | 'CINS' | 'Isin' | 'Sedol' | 'Cusip' | 'Ticker' | 'ClientInternal' | 'Figi' | 'CompositeFigi' | 'ShareClassFigi' | 'Wertpapier', codes?: Array<string>, asAt?: Date, instrumentPropertyKeys?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<LookupInstrumentsFromCodesResponse>>;
}
