import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { Portfolio } from '../model/portfolio';
import { PortfolioProperties } from '../model/portfolioProperties';
import { ResourceListOfPortfolio } from '../model/resourceListOfPortfolio';
import { ResourceListOfProcessedCommand } from '../model/resourceListOfProcessedCommand';
import { ResourceListOfScope } from '../model/resourceListOfScope';
import { UpdatePortfolioRequest } from '../model/updatePortfolioRequest';
import { Configuration } from '../configuration';
export declare class PortfoliosService {
    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);
    /**
     * Delete portfolio
     * Delete a portfolio at the specified effectiveAt
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param effectiveAt Optional. The effective date of the deletion
     * @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.
     */
    deletePortfolio(scope: string, code: string, effectiveAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deletePortfolio(scope: string, code: string, effectiveAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deletePortfolio(scope: string, code: string, effectiveAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * Delete portfolios
     * Delete one, many or all property values from a portfolio for the specified effectiveAt                Specifying no effectiveAt will delete all properties
     * @param scope The scope of the portfolio
     * @param code Code for the portfolio
     * @param effectiveAt Optional. The effective date of the deletion
     * @param portfolioPropertyKeys Optional. The keys of the properties to be deleted. None specified indicates the intention to delete all properties from the portfolio
     * @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.
     */
    deletePortfolioProperties(scope: string, code: string, effectiveAt?: Date, portfolioPropertyKeys?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deletePortfolioProperties(scope: string, code: string, effectiveAt?: Date, portfolioPropertyKeys?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deletePortfolioProperties(scope: string, code: string, effectiveAt?: Date, portfolioPropertyKeys?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * Get portfolio definition
     * Retrieves the basic set of information about a portfolio using the specified scope and code.
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param effectiveAt Optional. The effective date of the data
     * @param asAt Optional. The AsAt date of the 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.
     */
    getPortfolio(scope: string, code: string, effectiveAt?: Date, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<Portfolio>;
    getPortfolio(scope: string, code: string, effectiveAt?: Date, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Portfolio>>;
    getPortfolio(scope: string, code: string, effectiveAt?: Date, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Portfolio>>;
    /**
     * Get commands
     * Gets all commands that modified a specific portfolio
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param fromAsAt Optional. Filters commands by those that were processed at or after this date and time
     * @param toAsAt Optional. Filters commands by those that were processed at or before this date and time
     * @param sortBy Optional. Order the results by these fields. Use use the &#39;-&#39; sign to denote descending order e.g. -MyFieldName
     * @param start Optional. When paginating, skip this number of results
     * @param limit Optional. When paginating, limit the number of returned results to this many.
     * @param filter Optional. Expression to filter the result set
     * @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.
     */
    getPortfolioCommands(scope: string, code: string, fromAsAt?: Date, toAsAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfProcessedCommand>;
    getPortfolioCommands(scope: string, code: string, fromAsAt?: Date, toAsAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfProcessedCommand>>;
    getPortfolioCommands(scope: string, code: string, fromAsAt?: Date, toAsAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfProcessedCommand>>;
    /**
     * Get portfolio properties
     * Get the properties of a portfolio
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param effectiveAt Optional. The effective date of the data
     * @param asAt Optional. The AsAt date of the data
     * @param sortBy Optional. Order the results by these fields. Use use the &#39;-&#39; sign to denote descending order e.g. -MyFieldName
     * @param start Optional. When paginating, skip this number of results
     * @param limit Optional. When paginating, limit the number of returned results to this many.
     * @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.
     */
    getPortfolioProperties(scope: string, code: string, effectiveAt?: Date, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, observe?: 'body', reportProgress?: boolean): Observable<PortfolioProperties>;
    getPortfolioProperties(scope: string, code: string, effectiveAt?: Date, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PortfolioProperties>>;
    getPortfolioProperties(scope: string, code: string, effectiveAt?: Date, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PortfolioProperties>>;
    /**
     * List portfolio scopes
     * Lists all scopes that are either currently or have previously had portfolios in them
     * @param sortBy Optional. Order the results by these fields. Use use the &#39;-&#39; sign to denote descending order e.g. -MyFieldName
     * @param start Optional. When paginating, skip this number of results
     * @param limit Optional. When paginating, limit the number of returned results to this many.
     * @param filter Filter to be applied to the list of scopes
     * @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.
     */
    listPortfolioScopes(sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfScope>;
    listPortfolioScopes(sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfScope>>;
    listPortfolioScopes(sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfScope>>;
    /**
     * List portfolios
     * List all the portfolios in the specified scope
     * @param scope The scope
     * @param effectiveAt Optional. The effective date of the data
     * @param asAt Optional. The AsAt date of the data
     * @param sortBy Optional. Order the results by these fields. Use use the &#39;-&#39; sign to denote descending order e.g. -MyFieldName
     * @param start Optional. When paginating, skip this number of results
     * @param limit Optional. When paginating, limit the number of returned results to this many.
     * @param filter Optional. Expression to filter the result set
     * @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.
     */
    listPortfolios(scope: string, effectiveAt?: Date, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfPortfolio>;
    listPortfolios(scope: string, effectiveAt?: Date, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfPortfolio>>;
    listPortfolios(scope: string, effectiveAt?: Date, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfPortfolio>>;
    /**
     * Update portfolio definition
     * Update the definition of a specific portfolio. Note, some parts of a portfolio definition are not available for modification after the initial creation.
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param request The updated portfolio definition
     * @param effectiveAt Optional. The effective date for the change
     * @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.
     */
    updatePortfolio(scope: string, code: string, request?: UpdatePortfolioRequest, effectiveAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<Portfolio>;
    updatePortfolio(scope: string, code: string, request?: UpdatePortfolioRequest, effectiveAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Portfolio>>;
    updatePortfolio(scope: string, code: string, request?: UpdatePortfolioRequest, effectiveAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Portfolio>>;
    /**
     * Upsert properties
     * Upsert one or more property values to a portfolio for the specified effectiveAt. All properties must be of the domain Portfolio.
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param portfolioProperties The property values to be upserted to the portfolio
     * @param effectiveAt Optional. The effective date of the change
     * @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.
     */
    upsertPortfolioProperties(scope: string, code: string, portfolioProperties?: any, effectiveAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<PortfolioProperties>;
    upsertPortfolioProperties(scope: string, code: string, portfolioProperties?: any, effectiveAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PortfolioProperties>>;
    upsertPortfolioProperties(scope: string, code: string, portfolioProperties?: any, effectiveAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PortfolioProperties>>;
}
