import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CustomEntityEntity } from '../model/customEntityEntity';
import { DataTypeEntity } from '../model/dataTypeEntity';
import { InstrumentEntity } from '../model/instrumentEntity';
import { PortfolioEntity } from '../model/portfolioEntity';
import { PropertyDefinitionEntity } from '../model/propertyDefinitionEntity';
import { ResourceListOfChange } from '../model/resourceListOfChange';
import { ResourceListOfChangeInterval } from '../model/resourceListOfChangeInterval';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export interface GetCustomEntityByEntityUniqueIdRequestParams {
    /** The universally unique identifier of the Custom Entity. */
    entityUniqueId: string;
    /** The effective datetime or cut label at which to retrieve the Custom Entity. Defaults to the current LUSID system datetime if not specified. */
    effectiveAt?: string;
    /** The asAt datetime at which to retrieve the Custom Entity. Defaults to returning the latest version of the Custom Entity if not specified. */
    asAt?: string;
    /** The ids of the staged modifications to be previewed in the response. */
    previews?: Array<string>;
}
export interface GetDataTypeByEntityUniqueIdRequestParams {
    /** The universally unique identifier of the DataType definition. */
    entityUniqueId: string;
    /** The asAt datetime at which to retrieve the DataType definition. Defaults to returning the latest version of the DataType definition if not specified. */
    asAt?: string;
    /** The ids of the staged modifications to be previewed in the response. */
    previews?: Array<string>;
}
export interface GetEntityHistoryRequestParams {
    /** The type of the entity to list the change history for. */
    entityType: string;
    /** The universally unique identifier of the entity. */
    entityUniqueId: string;
    /** The asAt datetime at which to list change history information. Defaults to return the change history at the latest datetime if not specified. */
    asAt?: string;
    /** The pagination token to use to continue listing change history information from a previous call to list change              history information. This value is returned from the previous call. If a pagination token is provided the filter, sortBy              and asAt fields must not have changed since the original request. */
    page?: string;
    /** When paginating, limit the number of returned results to this many. Defaults to 100 if not specified. */
    limit?: number;
    /** Expression to filter the result set.              Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid. */
    filter?: string;
    /** A list of field names suffixed by \&quot; ASC\&quot; or \&quot; DESC\&quot; */
    sortBy?: Array<string>;
}
export interface GetInstrumentByEntityUniqueIdRequestParams {
    /** The universally unique identifier of the instrument definition. */
    entityUniqueId: string;
    /** The effective datetime or cut label at which to retrieve the Instrument definition. Defaults to the current LUSID system datetime if not specified. */
    effectiveAt?: string;
    /** The asAt datetime at which to retrieve the instrument definition. Defaults to returning the latest version of the instrument definition if not specified. */
    asAt?: string;
    /** The ids of the staged modifications to be previewed in the response. */
    previews?: Array<string>;
}
export interface GetPortfolioByEntityUniqueIdRequestParams {
    /** The universally unique identifier of the portfolio definition. */
    entityUniqueId: string;
    /** The effective datetime or cut label at which to retrieve the portfolio definition. Defaults to the current LUSID system datetime if not specified. */
    effectiveAt?: string;
    /** The asAt datetime at which to retrieve the portfolio definition. Defaults to returning the latest version of the portfolio definition if not specified. */
    asAt?: string;
    /** The ids of the staged modifications to be previewed in the response. */
    previews?: Array<string>;
}
export interface GetPortfolioChangesRequestParams {
    /** The scope */
    scope: string;
    /** The effective date of the origin. */
    effectiveAt: string;
    /** The as-at date of the origin. */
    asAt?: string;
}
export interface GetPropertyDefinitionByEntityUniqueIdRequestParams {
    /** The universally unique identifier of the property definition. */
    entityUniqueId: string;
    /** The effective datetime at which to retrieve the property definition. Defaults to the current LUSID system datetime if not specified. */
    effectiveAt?: string;
    /** The asAt datetime at which to retrieve the property definition. Defaults to returning the latest version of the property definition if not specified. */
    asAt?: string;
    /** The ids of the staged modifications to be previewed in the response. */
    previews?: Array<string>;
}
export declare class EntitiesService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * GetCustomEntityByEntityUniqueId: Get a Custom Entity instance by its EntityUniqueId
     * Retrieve a particular Custom Entity instance.  If the Custom Entity is deleted, this will return the state of the Custom Entity immediately prior to deletion.
     * @param requestParameters
     * @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.
     */
    getCustomEntityByEntityUniqueId(requestParameters?: GetCustomEntityByEntityUniqueIdRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<CustomEntityEntity>;
    getCustomEntityByEntityUniqueId(requestParameters?: GetCustomEntityByEntityUniqueIdRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<CustomEntityEntity>>;
    getCustomEntityByEntityUniqueId(requestParameters?: GetCustomEntityByEntityUniqueIdRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<CustomEntityEntity>>;
    /**
     * GetDataTypeByEntityUniqueId: Get DataType by EntityUniqueId
     * Retrieve the definition of a particular DataType.  If the DataType is deleted, this will return the state of the DataType immediately prior to deletion.
     * @param requestParameters
     * @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.
     */
    getDataTypeByEntityUniqueId(requestParameters?: GetDataTypeByEntityUniqueIdRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<DataTypeEntity>;
    getDataTypeByEntityUniqueId(requestParameters?: GetDataTypeByEntityUniqueIdRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<DataTypeEntity>>;
    getDataTypeByEntityUniqueId(requestParameters?: GetDataTypeByEntityUniqueIdRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<DataTypeEntity>>;
    /**
     * GetEntityHistory: List an entity\&#39;s history information
     * Retrieve a page of an entity\&#39;s change history up to a particular point in AsAt time.
     * @param requestParameters
     * @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.
     */
    getEntityHistory(requestParameters?: GetEntityHistoryRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<ResourceListOfChangeInterval>;
    getEntityHistory(requestParameters?: GetEntityHistoryRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<ResourceListOfChangeInterval>>;
    getEntityHistory(requestParameters?: GetEntityHistoryRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<ResourceListOfChangeInterval>>;
    /**
     * GetInstrumentByEntityUniqueId: Get instrument by EntityUniqueId
     * Retrieve the definition of a particular instrument.  If the instrument is deleted, this will return the state of the instrument immediately prior to deletion.
     * @param requestParameters
     * @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.
     */
    getInstrumentByEntityUniqueId(requestParameters?: GetInstrumentByEntityUniqueIdRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<InstrumentEntity>;
    getInstrumentByEntityUniqueId(requestParameters?: GetInstrumentByEntityUniqueIdRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<InstrumentEntity>>;
    getInstrumentByEntityUniqueId(requestParameters?: GetInstrumentByEntityUniqueIdRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<InstrumentEntity>>;
    /**
     * GetPortfolioByEntityUniqueId: Get portfolio by EntityUniqueId
     * Retrieve the definition of a particular portfolio.  If the portfolio is deleted, this will return the state of the portfolio immediately prior to deletion.
     * @param requestParameters
     * @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.
     */
    getPortfolioByEntityUniqueId(requestParameters?: GetPortfolioByEntityUniqueIdRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PortfolioEntity>;
    getPortfolioByEntityUniqueId(requestParameters?: GetPortfolioByEntityUniqueIdRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PortfolioEntity>>;
    getPortfolioByEntityUniqueId(requestParameters?: GetPortfolioByEntityUniqueIdRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PortfolioEntity>>;
    /**
     * GetPortfolioChanges: Get the next change to each portfolio in a scope.
     * Gets the time of the next (earliest effective at) modification (correction and/or amendment) to each portfolio in a scope relative to a point in bitemporal time.  Includes changes from parent portfolios in different scopes.  Excludes changes from subscriptions (e.g corporate actions).
     * @param requestParameters
     * @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.
     */
    getPortfolioChanges(requestParameters?: GetPortfolioChangesRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<ResourceListOfChange>;
    getPortfolioChanges(requestParameters?: GetPortfolioChangesRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<ResourceListOfChange>>;
    getPortfolioChanges(requestParameters?: GetPortfolioChangesRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<ResourceListOfChange>>;
    /**
     * GetPropertyDefinitionByEntityUniqueId: Get property definition by EntityUniqueId
     * Retrieve a particular property definition.  If the property definition is deleted, this will return the state of the property definition immediately prior to deletion.
     * @param requestParameters
     * @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.
     */
    getPropertyDefinitionByEntityUniqueId(requestParameters?: GetPropertyDefinitionByEntityUniqueIdRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PropertyDefinitionEntity>;
    getPropertyDefinitionByEntityUniqueId(requestParameters?: GetPropertyDefinitionByEntityUniqueIdRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PropertyDefinitionEntity>>;
    getPropertyDefinitionByEntityUniqueId(requestParameters?: GetPropertyDefinitionByEntityUniqueIdRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PropertyDefinitionEntity>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<EntitiesService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<EntitiesService>;
}
