import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AmortisationRuleSet } from '../model/amortisationRuleSet';
import { CreateAmortisationRuleSetRequest } from '../model/createAmortisationRuleSetRequest';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { PagedResourceListOfAmortisationRuleSet } from '../model/pagedResourceListOfAmortisationRuleSet';
import { SetAmortisationRulesRequest } from '../model/setAmortisationRulesRequest';
import { UpdateAmortisationRuleSetDetailsRequest } from '../model/updateAmortisationRuleSetDetailsRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class AmortisationRuleSetsService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * [EXPERIMENTAL] CreateAmortisationRuleSet: Create an amortisation rule set.
     * Creates an amortisation rule set definition at the given effective time.  The user must be entitled to read any properties specified in each rule.
     * @param scope The scope of the rule set.
     * @param createAmortisationRuleSetRequest The contents of the rule 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.
     */
    createAmortisationRuleSet(scope: string, createAmortisationRuleSetRequest: CreateAmortisationRuleSetRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<AmortisationRuleSet>;
    createAmortisationRuleSet(scope: string, createAmortisationRuleSetRequest: CreateAmortisationRuleSetRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<AmortisationRuleSet>>;
    createAmortisationRuleSet(scope: string, createAmortisationRuleSetRequest: CreateAmortisationRuleSetRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<AmortisationRuleSet>>;
    /**
     * [EXPERIMENTAL] DeleteAmortisationRuleset: Delete an amortisation rule set.
     * &lt;br&gt;              Deletes the rule set perpetually, including its rules.                &lt;br&gt;              The rule set will remain viewable at previous as at times, but it will no longer be considered applicable.                &lt;br&gt;              This cannot be undone.
     * @param scope The rule set scope.
     * @param code The rule set code.
     * @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.
     */
    deleteAmortisationRuleset(scope: string, code: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<DeletedEntityResponse>;
    deleteAmortisationRuleset(scope: string, code: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteAmortisationRuleset(scope: string, code: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EXPERIMENTAL] GetAmortisationRuleSet: Retrieve the definition of a single amortisation rule set
     * Retrieves the amortisation rule set definition at the given effective and as at times.
     * @param scope The rule set scope.
     * @param code The rule set code.
     * @param effectiveAt The effective datetime or cut label at which to retrieve the rule definition.  Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the rule definition. Defaults to returning the latest version if not  specified.
     * @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.
     */
    getAmortisationRuleSet(scope: string, code: string, effectiveAt?: string, asAt?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<AmortisationRuleSet>;
    getAmortisationRuleSet(scope: string, code: string, effectiveAt?: string, asAt?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<AmortisationRuleSet>>;
    getAmortisationRuleSet(scope: string, code: string, effectiveAt?: string, asAt?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<AmortisationRuleSet>>;
    /**
     * [EXPERIMENTAL] ListAmortisationRuleSets: List amortisation rule sets.
     * Retrieves all amortisation rule sets at the given effective and as at times
     * @param effectiveAt The effective datetime or cut label at which to retrieve the rule definitions.  Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the rule definitions. Defaults to returning the latest version if not  specified.
     * @param page The pagination token to use to continue listing AmortisationRuleSets; this              value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt              and asAt fields must not have changed since the original request.
     * @param limit When paginating, limit the results to this number. Defaults to 100 if not specified.
     * @param filter Expression to filter the results.              For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
     * @param sortBy A list of field names or properties to sort by, each suffixed by \&quot; ASC\&quot; or \&quot; DESC\&quot;
     * @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.
     */
    listAmortisationRuleSets(effectiveAt?: string, asAt?: string, page?: string, limit?: number, filter?: string, sortBy?: Array<string>, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<PagedResourceListOfAmortisationRuleSet>;
    listAmortisationRuleSets(effectiveAt?: string, asAt?: string, page?: string, limit?: number, filter?: string, sortBy?: Array<string>, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<PagedResourceListOfAmortisationRuleSet>>;
    listAmortisationRuleSets(effectiveAt?: string, asAt?: string, page?: string, limit?: number, filter?: string, sortBy?: Array<string>, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<PagedResourceListOfAmortisationRuleSet>>;
    /**
     * [EXPERIMENTAL] SetAmortisationRules: Set Amortisation Rules on an existing Amortisation Rule Set.
     * Sets the rules on the Amortisation Rule Set, replacing the existing rules with the set provided.
     * @param scope The rule set scope.
     * @param code The rule set code.
     * @param setAmortisationRulesRequest The contents of the rules.
     * @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.
     */
    setAmortisationRules(scope: string, code: string, setAmortisationRulesRequest: SetAmortisationRulesRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<AmortisationRuleSet>;
    setAmortisationRules(scope: string, code: string, setAmortisationRulesRequest: SetAmortisationRulesRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<AmortisationRuleSet>>;
    setAmortisationRules(scope: string, code: string, setAmortisationRulesRequest: SetAmortisationRulesRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<AmortisationRuleSet>>;
    /**
     * [EXPERIMENTAL] UpdateAmortisationRuleSetDetails: Update an amortisation rule set.
     * Updates the amortisation rule set definition for all effective time.
     * @param scope The rule set scope.
     * @param code The rule set code.
     * @param updateAmortisationRuleSetDetailsRequest The contents of the rule 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.
     */
    updateAmortisationRuleSetDetails(scope: string, code: string, updateAmortisationRuleSetDetailsRequest: UpdateAmortisationRuleSetDetailsRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<AmortisationRuleSet>;
    updateAmortisationRuleSetDetails(scope: string, code: string, updateAmortisationRuleSetDetailsRequest: UpdateAmortisationRuleSetDetailsRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpResponse<AmortisationRuleSet>>;
    updateAmortisationRuleSetDetails(scope: string, code: string, updateAmortisationRuleSetDetailsRequest: UpdateAmortisationRuleSetDetailsRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
    }): Observable<HttpEvent<AmortisationRuleSet>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AmortisationRuleSetsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AmortisationRuleSetsService>;
}
