import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Aggregation } from '../model/aggregation';
import { ConfigurationRecipe } from '../model/configurationRecipe';
import { CreateRecipeRequest } from '../model/createRecipeRequest';
import { InlineValuationRequest } from '../model/inlineValuationRequest';
import { ListAggregationResponse } from '../model/listAggregationResponse';
import { ResourceListOfAggregationQuery } from '../model/resourceListOfAggregationQuery';
import { SupportedAnalyticsInternalRequest } from '../model/supportedAnalyticsInternalRequest';
import { ValuationRequest } from '../model/valuationRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class AggregationService {
    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;
    /**
     * [EXPERIMENTAL] GenerateConfigurationRecipe: Generates a recipe sufficient to perform valuations for the given portfolio.
     * Given a set of scopes, a portfolio Id and a basic recipe, this endpoint generates a configuration recipe with relevant rules that can value the instruments in the portfolio.
     * @param scope The scope of the portfolio
     * @param code The code of the portfolio
     * @param createRecipeRequest The request specifying the parameters to generating the recipe
     * @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.
     */
    generateConfigurationRecipe(scope: string, code: string, createRecipeRequest?: CreateRecipeRequest, observe?: 'body', reportProgress?: boolean): Observable<ConfigurationRecipe>;
    generateConfigurationRecipe(scope: string, code: string, createRecipeRequest?: CreateRecipeRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ConfigurationRecipe>>;
    generateConfigurationRecipe(scope: string, code: string, createRecipeRequest?: CreateRecipeRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ConfigurationRecipe>>;
    /**
     * [EARLY ACCESS] GetQueryableKeys: Query the set of supported \&quot;addresses\&quot; that can be queried from the aggregation endpoint.
     * When a request is made for aggregation, the user needs to know what keys can be passed to it for queryable data. This endpoint allows to queries to provide the set of keys,  what they are and what they return.
     * @param page The pagination token to use to continue listing queryable keys from a previous call to list queryable keys.              This value is returned from the previous call.
     * @param limit When paginating, limit the number of returned results to this many.
     * @param filter Expression to filter the result set.              Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.
     * @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.
     */
    getQueryableKeys(page?: string, limit?: number, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfAggregationQuery>;
    getQueryableKeys(page?: string, limit?: number, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfAggregationQuery>>;
    getQueryableKeys(page?: string, limit?: number, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfAggregationQuery>>;
    /**
     * GetValuation: Perform valuation for a list of portfolios and/or portfolio groups
     * Perform valuation on specified list of portfolio and/or portfolio groups for a set of dates.
     * @param valuationRequest The request specifying the set of portfolios and dates on which to calculate a set of valuation metrics
     * @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.
     */
    getValuation(valuationRequest?: ValuationRequest, observe?: 'body', reportProgress?: boolean): Observable<ListAggregationResponse>;
    getValuation(valuationRequest?: ValuationRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ListAggregationResponse>>;
    getValuation(valuationRequest?: ValuationRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ListAggregationResponse>>;
    /**
     * GetValuationOfWeightedInstruments: Perform valuation for an inlined portfolio
     * Perform valuation on the portfolio that is defined by the weighted set of instruments passed to the request.
     * @param inlineValuationRequest The request specifying the set of portfolios and dates on which to calculate a set of valuation metrics
     * @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.
     */
    getValuationOfWeightedInstruments(inlineValuationRequest?: InlineValuationRequest, observe?: 'body', reportProgress?: boolean): Observable<ListAggregationResponse>;
    getValuationOfWeightedInstruments(inlineValuationRequest?: InlineValuationRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ListAggregationResponse>>;
    getValuationOfWeightedInstruments(inlineValuationRequest?: InlineValuationRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ListAggregationResponse>>;
    /**
     * [INTERNAL] SupportedAnalyticsInternal: Generates a matrix of analytics features supported by LUSID.
     * Breaks down, e.g. by model and instrument type, either feature groups (such as pv, accrued, risk, cashflows) that are supported or the specific address keys that are supported for them.
     * @param supportedAnalyticsInternalRequest
     * @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.
     */
    supportedAnalyticsInternal(supportedAnalyticsInternalRequest?: SupportedAnalyticsInternalRequest, observe?: 'body', reportProgress?: boolean): Observable<Aggregation>;
    supportedAnalyticsInternal(supportedAnalyticsInternalRequest?: SupportedAnalyticsInternalRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Aggregation>>;
    supportedAnalyticsInternal(supportedAnalyticsInternalRequest?: SupportedAnalyticsInternalRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Aggregation>>;
    static ɵfac: i0.ɵɵFactoryDef<AggregationService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDef<AggregationService>;
}
