import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DeleteInstrumentPropertiesResponse } from '../model/deleteInstrumentPropertiesResponse';
import { DeleteInstrumentResponse } from '../model/deleteInstrumentResponse';
import { DeleteInstrumentsResponse } from '../model/deleteInstrumentsResponse';
import { GetInstrumentsResponse } from '../model/getInstrumentsResponse';
import { Instrument } from '../model/instrument';
import { InstrumentCapabilities } from '../model/instrumentCapabilities';
import { InstrumentDefinition } from '../model/instrumentDefinition';
import { InstrumentPaymentDiary } from '../model/instrumentPaymentDiary';
import { InstrumentProperties } from '../model/instrumentProperties';
import { LusidInstrument } from '../model/lusidInstrument';
import { PagedResourceListOfInstrument } from '../model/pagedResourceListOfInstrument';
import { ResourceListOfInstrumentIdTypeDescriptor } from '../model/resourceListOfInstrumentIdTypeDescriptor';
import { ResourceListOfProperty } from '../model/resourceListOfProperty';
import { ResourceListOfPropertyInterval } from '../model/resourceListOfPropertyInterval';
import { ResourceListOfRelationship } from '../model/resourceListOfRelationship';
import { UpdateInstrumentIdentifierRequest } from '../model/updateInstrumentIdentifierRequest';
import { UpsertInstrumentPropertiesResponse } from '../model/upsertInstrumentPropertiesResponse';
import { UpsertInstrumentPropertyRequest } from '../model/upsertInstrumentPropertyRequest';
import { UpsertInstrumentsResponse } from '../model/upsertInstrumentsResponse';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
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;
    /**
     * [EARLY ACCESS] DeleteInstrument: Soft delete a single instrument
     * Soft delete a particular instrument, as identified by a particular instrument identifier.                Once deleted, an instrument is marked as inactive and can no longer be referenced when creating or updating  transactions or holdings. You can still query existing transactions and holdings related to the  deleted instrument.
     * @param identifierType The unique identifier type to search, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    deleteInstrument(identifierType: string, identifier: string, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<DeleteInstrumentResponse>;
    deleteInstrument(identifierType: string, identifier: string, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeleteInstrumentResponse>>;
    deleteInstrument(identifierType: string, identifier: string, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeleteInstrumentResponse>>;
    /**
     * [EARLY ACCESS] DeleteInstrumentProperties: Delete instrument properties
     * Delete one or more properties from a particular instrument. If the properties are time-variant then an effective datetime from which  to delete properties must be specified. If the properties are perpetual then it is invalid to specify an effective datetime for deletion.
     * @param identifierType The unique identifier type to search, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param requestBody A list of property keys from the \&#39;Instruments\&#39; domain whose properties to delete.
     * @param effectiveAt The effective datetime or cut label at which to delete time-variant properties from.              The property must exist at the specified \&#39;effectiveAt\&#39; datetime. If the \&#39;effectiveAt\&#39; is not provided or is              before the time-variant property exists then a failure is returned. Do not specify this parameter if any of              the properties to delete are perpetual.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    deleteInstrumentProperties(identifierType: string, identifier: string, requestBody: Array<string>, effectiveAt?: string, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<DeleteInstrumentPropertiesResponse>;
    deleteInstrumentProperties(identifierType: string, identifier: string, requestBody: Array<string>, effectiveAt?: string, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeleteInstrumentPropertiesResponse>>;
    deleteInstrumentProperties(identifierType: string, identifier: string, requestBody: Array<string>, effectiveAt?: string, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeleteInstrumentPropertiesResponse>>;
    /**
     * [EARLY ACCESS] DeleteInstruments: Soft or hard delete multiple instruments
     * Deletes a number of instruments identified by LusidInstrumentId.                Soft deletion marks the instrument as inactive so it can no longer be referenced when creating or updating transactions or holdings. You can still query existing transactions and holdings related to the inactive instrument.                In addition to the above behaviour, hard deletion: (i) completely removes all external identifiers from the instrument; (ii) marks the instrument as \&#39;Deleted\&#39;; (iii) prepends the instrument\&#39;s name with \&#39;DELETED \&#39;; (iv) prevents the instrument from being returned in list instruments queries.                Following hard deletion, an instrument may only be retrieved by making a direct get instrument request for the LusidInstrumentId. Instrument deletion cannot be undone. Please note that currency instruments cannot currently be deleted.  The maximum number of instruments that this method can delete per request is 2,000.
     * @param requestBody The list of lusidInstrumentId\&#39;s to delete.
     * @param deleteMode The delete mode to use (defaults to \&#39;Soft\&#39;).
     * @param scope The scope in which the instruments lie. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    deleteInstruments(requestBody: Array<string>, deleteMode?: 'Soft' | 'Hard', scope?: string, observe?: 'body', reportProgress?: boolean): Observable<DeleteInstrumentsResponse>;
    deleteInstruments(requestBody: Array<string>, deleteMode?: 'Soft' | 'Hard', scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeleteInstrumentsResponse>>;
    deleteInstruments(requestBody: Array<string>, deleteMode?: 'Soft' | 'Hard', scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeleteInstrumentsResponse>>;
    /**
     * [EXPERIMENTAL] GetAllPossibleFeatures: Provides list of all possible features for instrument type.
     * Provides all possible instrument features an instrument of a given type can provide.
     * @param instrumentType A lusid instrument type e.g. Bond, FxOption.
     * @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.
     */
    getAllPossibleFeatures(instrumentType: string, observe?: 'body', reportProgress?: boolean): Observable<{
        [key: string]: Array<string>;
    }>;
    getAllPossibleFeatures(instrumentType: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<{
        [key: string]: Array<string>;
    }>>;
    getAllPossibleFeatures(instrumentType: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<{
        [key: string]: Array<string>;
    }>>;
    /**
     * [EXPERIMENTAL] GetExistingInstrumentCapabilities: Retrieve capabilities of an existing instrument identified by LUID. These include instrument features, and if model is provided it also includes supported address keys and economic dependencies.  Given an lusid instrument id provides instrument capabilities, outlining features, and, given the model, the capabilities also include supported addresses as well as economic dependencies.
     * Returns instrument capabilities containing useful information about the instrument and the model. This includes  - features corresponding to the instrument e.g. Optionality:American, Other:InflationLinked  - supported addresses (if model provided) e.g. Valuation/Pv, Valuation/DirtyPriceKey, Valuation/Accrued  - economic dependencies (if model provided) e.g. Cash:USD, Fx:GBP.USD, Rates:GBP.GBPOIS
     * @param identifier A lusid instrument id identifying the instrument.
     * @param model A pricing model for the instrument. Defaults to Unknown if not specified. If not specified the SupportedAddresses and EconomicDependencies are not provided.
     * @param effectiveAt The effective datetime or cut label at which to retrieve the instrument.              Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the instrument. Defaults to              returning the latest version if not specified.
     * @param instrumentScope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @param recipeScope The scope in which the recipe lies. When not supplied the scope is \&#39;default\&#39;.
     * @param recipeCode A unique identifier for an entity, used to obtain configuration recipe details. Default configuration recipe is used if not provided.
     * @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.
     */
    getExistingInstrumentCapabilities(identifier: string, model?: string, effectiveAt?: string, asAt?: Date, instrumentScope?: string, recipeScope?: string, recipeCode?: string, observe?: 'body', reportProgress?: boolean): Observable<InstrumentCapabilities>;
    getExistingInstrumentCapabilities(identifier: string, model?: string, effectiveAt?: string, asAt?: Date, instrumentScope?: string, recipeScope?: string, recipeCode?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<InstrumentCapabilities>>;
    getExistingInstrumentCapabilities(identifier: string, model?: string, effectiveAt?: string, asAt?: Date, instrumentScope?: string, recipeScope?: string, recipeCode?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<InstrumentCapabilities>>;
    /**
     * GetInstrument: Get instrument
     * Retrieve the definition of a particular instrument, as identified by a particular unique identifier.
     * @param identifierType The unique identifier type to use, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param effectiveAt The effective datetime or cut label at which to retrieve the instrument.              Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the instrument. Defaults to              returning the latest version if not specified.
     * @param propertyKeys A list of property keys from the \&#39;Instrument\&#39; domain to decorate onto              the instrument, or from any domain that supports relationships to decorate onto related entities.              These must have the format {domain}/{scope}/{code}, for example \&#39;Instrument/system/Name\&#39;.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @param relationshipDefinitionIds A list of relationship definitions that are used to decorate related entities              onto the instrument in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
     * @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(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, propertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<Instrument>;
    getInstrument(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, propertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Instrument>>;
    getInstrument(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, propertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Instrument>>;
    /**
     * GetInstrumentIdentifierTypes: Get instrument identifier types
     * Retrieve a list of all valid instrument identifier types and whether they are unique or not.                An instrument must have a value for at least one unique identifier type (it can have more than one unique type and value).  In addition, a value is automatically generated for a LUSID Instrument ID (LUID) unique type by the system.                An instrument can have values for multiple non-unique identifier types (or it can have zero non-unique types and values).
     * @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.
     */
    getInstrumentIdentifierTypes(observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfInstrumentIdTypeDescriptor>;
    getInstrumentIdentifierTypes(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfInstrumentIdTypeDescriptor>>;
    getInstrumentIdentifierTypes(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfInstrumentIdTypeDescriptor>>;
    /**
     * [EXPERIMENTAL] GetInstrumentPaymentDiary: Get instrument payment diary
     * Get the payment diary of a single instrument.
     * @param identifierType The identifier being supplied e.g. \&quot;Figi\&quot;.
     * @param identifier The value of the identifier for the requested instrument.
     * @param recipeScope The scope of the valuation recipe being used to generate the payment diary
     * @param recipeCode The code of the valuation recipe being used to generate the payment diary
     * @param effectiveAt The effective datetime or cut label at which to list the instrument\&#39;s properties. Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to list the instrument\&#39;s properties. Defaults to return the latest version of each property if not specified.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    getInstrumentPaymentDiary(identifierType: string, identifier: string, recipeScope: string, recipeCode: string, effectiveAt?: string, asAt?: Date, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<InstrumentPaymentDiary>;
    getInstrumentPaymentDiary(identifierType: string, identifier: string, recipeScope: string, recipeCode: string, effectiveAt?: string, asAt?: Date, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<InstrumentPaymentDiary>>;
    getInstrumentPaymentDiary(identifierType: string, identifier: string, recipeScope: string, recipeCode: string, effectiveAt?: string, asAt?: Date, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<InstrumentPaymentDiary>>;
    /**
     * [EARLY ACCESS] GetInstrumentProperties: Get instrument properties
     * List all the properties of a particular instrument, as identified by a particular unique identifier.
     * @param identifierType The unique identifier type to search, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param effectiveAt The effective datetime or cut label at which to list the instrument\&#39;s properties.              Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to list the instrument\&#39;s properties. Defaults to returning              the latest version of each property if not specified.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    getInstrumentProperties(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<InstrumentProperties>;
    getInstrumentProperties(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<InstrumentProperties>>;
    getInstrumentProperties(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<InstrumentProperties>>;
    /**
     * [EARLY ACCESS] GetInstrumentPropertyTimeSeries: Get instrument property time series
     * Retrieve the complete time series (history) for a particular property of an instrument.
     * @param identifierType The unique identifier type to search, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param propertyKey The property key of a property from the \&#39;Instrument\&#39; domain whose history to retrieve.              This must have the format {domain}/{scope}/{code}, for example \&#39;Instrument/system/Name\&#39;.
     * @param identifierEffectiveAt The effective datetime used to resolve the instrument from the identifier.              Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the instrument\&#39;s property history. Defaults to              returning the current datetime if not supplied.
     * @param filter Expression to filter the results. For more information about filtering,              see https://support.lusid.com/knowledgebase/article/KA-01914.
     * @param page The pagination token to use to continue listing properties; this value is returned from              the previous call. If a pagination token is provided, the &lt;i&gt;filter&lt;/i&gt;, &lt;i&gt;effectiveAt&lt;/i&gt; and              &lt;i&gt;asAt&lt;/i&gt; fields must not have changed since the original request. For more information, see              https://support.lusid.com/knowledgebase/article/KA-01915.
     * @param limit When paginating, limit the results to this number.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    getInstrumentPropertyTimeSeries(identifierType: string, identifier: string, propertyKey: string, identifierEffectiveAt?: string, asAt?: Date, filter?: string, page?: string, limit?: number, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfPropertyInterval>;
    getInstrumentPropertyTimeSeries(identifierType: string, identifier: string, propertyKey: string, identifierEffectiveAt?: string, asAt?: Date, filter?: string, page?: string, limit?: number, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfPropertyInterval>>;
    getInstrumentPropertyTimeSeries(identifierType: string, identifier: string, propertyKey: string, identifierEffectiveAt?: string, asAt?: Date, filter?: string, page?: string, limit?: number, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfPropertyInterval>>;
    /**
     * [EARLY ACCESS] GetInstrumentRelationships: Get Instrument relationships
     * Get relationships for a particular Instrument.
     * @param identifierType An identifier type attached to the Instrument.
     * @param identifier The identifier value.
     * @param effectiveAt The effective datetime or cut label at which to get relationships. Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve relationships. Defaults to return the latest LUSID AsAt time if not specified.
     * @param filter Expression to filter relationships. Users should provide null or empty string for this field until further notice.
     * @param identifierTypes Identifier types (as property keys) used for referencing Persons or Legal Entities.              These can be specified from the \&#39;Person\&#39; or \&#39;LegalEntity\&#39; domains and have the format {domain}/{scope}/{code}, for example              \&#39;Person/CompanyDetails/Role\&#39;. An Empty array may be used to return all related Entities.
     * @param scope The entity scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    getInstrumentRelationships(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, filter?: string, identifierTypes?: Array<string>, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfRelationship>;
    getInstrumentRelationships(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, filter?: string, identifierTypes?: Array<string>, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfRelationship>>;
    getInstrumentRelationships(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, filter?: string, identifierTypes?: Array<string>, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfRelationship>>;
    /**
     * GetInstruments: Get instruments
     * Retrieve the definition of one or more instruments, as identified by a collection of unique identifiers.                Note that to retrieve all the instruments in the instrument master, use the List instruments endpoint instead.
     * @param identifierType The unique identifier type to use, for example \&#39;Figi\&#39;.
     * @param requestBody A list of one or more &lt;i&gt;identifierType&lt;/i&gt; values to use to identify instruments.
     * @param effectiveAt The effective datetime or cut label at which to retrieve the instrument definitions.               Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the instrument definitions.               Defaults to returning the latest version of each instrument definition if not specified.
     * @param propertyKeys A list of property keys from the \&#39;Instrument\&#39; domain to decorate onto               each instrument, or from any domain that supports relationships to decorate onto related entities.               These must have the format {domain}/{scope}/{code}, for example \&#39;Instrument/system/Name\&#39;.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @param relationshipDefinitionIds A list of relationship definitions that are used to decorate related entities               onto each instrument in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
     * @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.
     */
    getInstruments(identifierType: string, requestBody: Array<string>, effectiveAt?: string, asAt?: Date, propertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<GetInstrumentsResponse>;
    getInstruments(identifierType: string, requestBody: Array<string>, effectiveAt?: string, asAt?: Date, propertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<GetInstrumentsResponse>>;
    getInstruments(identifierType: string, requestBody: Array<string>, effectiveAt?: string, asAt?: Date, propertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<GetInstrumentsResponse>>;
    /**
     * [EARLY ACCESS] ListInstrumentProperties: Get instrument properties (with Pagination)
     * List all the properties of a particular instrument, as identified by a particular unique identifier.
     * @param identifierType The unique identifier type to search, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param effectiveAt The effective datetime or cut label at which to list the instrument\&#39;s properties.              Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to list the instrument\&#39;s properties. Defaults to returning              the latest version of each property if not specified.
     * @param page The pagination token to use to continue listing commands; this value is returned from the previous call.
     * @param limit When paginating, limit the results per page to this number.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    listInstrumentProperties(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, page?: string, limit?: number, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfProperty>;
    listInstrumentProperties(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, page?: string, limit?: number, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfProperty>>;
    listInstrumentProperties(identifierType: string, identifier: string, effectiveAt?: string, asAt?: Date, page?: string, limit?: number, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfProperty>>;
    /**
     * ListInstruments: List instruments
     * List all the instruments in the instrument master.                To retrieve a particular set of instruments instead, use the Get instruments endpoint.  The maximum number of instruments that this method can list per request is 2,000.
     * @param asAt The asAt datetime at which to list instruments. Defaults to returning the latest               version of each instrument if not specified.
     * @param effectiveAt The effective datetime or cut label at which to list instruments.               Defaults to the current LUSID system datetime if not specified.
     * @param page The pagination token to use to continue listing instruments; this value is returned from               the previous call. If a pagination token is provided, the &lt;i&gt;sortBy&lt;/i&gt;, &lt;i&gt;filter&lt;/i&gt;, &lt;i&gt;effectiveAt&lt;/i&gt; and               &lt;i&gt;asAt&lt;/i&gt; fields must not have changed since the original request. Also, a &lt;i&gt;start&lt;/i&gt; value cannot be               provided. For more information, see https://support.lusid.com/knowledgebase/article/KA-01915.
     * @param sortBy Order results by particular fields. Use the \&#39;-\&#39; sign to denote descending order, for               example \&#39;-MyFieldName\&#39;.
     * @param start When paginating, skip this number of results.
     * @param limit When paginating, limit the results to this number.
     * @param filter Expression to filter the result set. Defaults to filtering out inactive instruments               (that is, those that have been deleted). For more information about filtering results,               see https://support.lusid.com/knowledgebase/article/KA-01914.
     * @param instrumentPropertyKeys A list of property keys from the \&#39;Instrument\&#39; domain to decorate onto               instruments, or from any domain that supports relationships to decorate onto related entities.               These must have the format {domain}/{scope}/{code}, for example \&#39;Instrument/system/Name\&#39;.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @param relationshipDefinitionIds A list of relationship definitions that are used to decorate related entities               onto each instrument in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
     * @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.
     */
    listInstruments(asAt?: Date, effectiveAt?: string, page?: string, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, instrumentPropertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<PagedResourceListOfInstrument>;
    listInstruments(asAt?: Date, effectiveAt?: string, page?: string, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, instrumentPropertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PagedResourceListOfInstrument>>;
    listInstruments(asAt?: Date, effectiveAt?: string, page?: string, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, instrumentPropertyKeys?: Array<string>, scope?: string, relationshipDefinitionIds?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PagedResourceListOfInstrument>>;
    /**
     * [EXPERIMENTAL] QueryInstrumentCapabilities: Query capabilities of a particular instrument in advance of creating it. These include instrument features, and if model is provided it also includes supported address keys and economic dependencies.
     * Returns instrument capabilities containing useful information about the instrument and the model. This includes  - features corresponding to the instrument e.g. Optionality:American, Other:InflationLinked  - supported addresses (if model provided) e.g. Valuation/Pv, Valuation/DirtyPriceKey, Valuation/Accrued  - economic dependencies (if model provided) e.g. Cash:USD, Fx:GBP.USD, Rates:GBP.GBPOIS
     * @param lusidInstrument The definition of the instrument.
     * @param model A pricing model for the instrument. Defaults to Unknown if not specified. If not specified the SupportedAddresses and EconomicDependencies are not provided.
     * @param effectiveAt The effective datetime or cut label at which to retrieve the instrument.              Defaults to the current LUSID system datetime if not specified.
     * @param recipeScope The scope in which the recipe lies. When not supplied the scope is \&#39;default\&#39;.
     * @param recipeCode A unique identifier for an entity, used to obtain configuration recipe details. Default configuration recipe is used if not provided.
     * @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.
     */
    queryInstrumentCapabilities(lusidInstrument: LusidInstrument, model?: string, effectiveAt?: string, recipeScope?: string, recipeCode?: string, observe?: 'body', reportProgress?: boolean): Observable<InstrumentCapabilities>;
    queryInstrumentCapabilities(lusidInstrument: LusidInstrument, model?: string, effectiveAt?: string, recipeScope?: string, recipeCode?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<InstrumentCapabilities>>;
    queryInstrumentCapabilities(lusidInstrument: LusidInstrument, model?: string, effectiveAt?: string, recipeScope?: string, recipeCode?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<InstrumentCapabilities>>;
    /**
     * UpdateInstrumentIdentifier: Update instrument identifier
     * Create, update or delete a particular instrument identifier for an instrument.                To delete the identifier, leave the value unspecified in the request. If not being deleted, the  identifier is updated if it exists and created if it does not.
     * @param identifierType The unique identifier type to search, for example \&#39;Figi\&#39;.
     * @param identifier An &lt;i&gt;identifierType&lt;/i&gt; value to use to identify the instrument, for example \&#39;BBG000BLNNV0\&#39;.
     * @param updateInstrumentIdentifierRequest The identifier to update or delete. This need not be the same value as the               \&#39;identifier\&#39; parameter used to retrieve the instrument.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    updateInstrumentIdentifier(identifierType: string, identifier: string, updateInstrumentIdentifierRequest: UpdateInstrumentIdentifierRequest, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<Instrument>;
    updateInstrumentIdentifier(identifierType: string, identifier: string, updateInstrumentIdentifierRequest: UpdateInstrumentIdentifierRequest, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Instrument>>;
    updateInstrumentIdentifier(identifierType: string, identifier: string, updateInstrumentIdentifierRequest: UpdateInstrumentIdentifierRequest, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Instrument>>;
    /**
     * UpsertInstruments: Upsert instruments
     * Create or update one or more instruments in the instrument master. An instrument is updated  if it already exists and created if it does not.                In the request, each instrument definition should be keyed by a unique correlation ID. This ID is ephemeral  and not stored by LUSID. It serves only to easily identify each instrument in the response.                Note that an instrument must have at least one unique identifier, which is a combination of a type  (such as \&#39;Figi\&#39;) and a value (such as \&#39;BBG000BS1N49\&#39;). In addition, a random value is automatically  generated for a LUSID Instrument ID (LUID) unique type by the system. For more information, see  https://support.lusid.com/knowledgebase/article/KA-01862.                The response returns both the collection of successfully created or updated instruments, as well as those  that failed. For each failure, a reason is provided. It is important to check the failed set for  unsuccessful results.  The maximum number of instruments that this method can upsert per request is 2,000.
     * @param requestBody The definitions of the instruments to create or update.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    upsertInstruments(requestBody: {
        [key: string]: InstrumentDefinition;
    }, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<UpsertInstrumentsResponse>;
    upsertInstruments(requestBody: {
        [key: string]: InstrumentDefinition;
    }, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<UpsertInstrumentsResponse>>;
    upsertInstruments(requestBody: {
        [key: string]: InstrumentDefinition;
    }, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<UpsertInstrumentsResponse>>;
    /**
     * UpsertInstrumentsProperties: Upsert instruments properties
     * Create or update one or more properties for particular instruments.                Each instrument property is updated if it exists and created if it does not. For any failures, a reason  is provided.                Properties have an &lt;i&gt;effectiveFrom&lt;/i&gt; datetime from which the property is valid, and an &lt;i&gt;effectiveUntil&lt;/i&gt;  datetime until which the property is valid. Not supplying an &lt;i&gt;effectiveUntil&lt;/i&gt; datetime results in the property being  valid indefinitely, or until the next &lt;i&gt;effectiveFrom&lt;/i&gt; datetime of the property.
     * @param upsertInstrumentPropertyRequest A list of instruments and associated instrument properties to create or update.
     * @param scope The scope in which the instrument lies. When not supplied the scope is \&#39;default\&#39;.
     * @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.
     */
    upsertInstrumentsProperties(upsertInstrumentPropertyRequest: Array<UpsertInstrumentPropertyRequest>, scope?: string, observe?: 'body', reportProgress?: boolean): Observable<UpsertInstrumentPropertiesResponse>;
    upsertInstrumentsProperties(upsertInstrumentPropertyRequest: Array<UpsertInstrumentPropertyRequest>, scope?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<UpsertInstrumentPropertiesResponse>>;
    upsertInstrumentsProperties(upsertInstrumentPropertyRequest: Array<UpsertInstrumentPropertyRequest>, scope?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<UpsertInstrumentPropertiesResponse>>;
    static ɵfac: i0.ɵɵFactoryDef<InstrumentsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDef<InstrumentsService>;
}
