import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CreateTaxRuleSetRequest } from '../model/createTaxRuleSetRequest';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { ResourceListOfTaxRuleSet } from '../model/resourceListOfTaxRuleSet';
import { TaxRuleSet } from '../model/taxRuleSet';
import { UpdateTaxRuleSetRequest } from '../model/updateTaxRuleSetRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class TaxRuleSetsService {
    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] CreateTaxRuleSet: Create a tax rule set.
     * Creates a tax rule set definition at the given effective time.  The user must be entitled to read any properties specified in each rule.
     * @param createTaxRuleSetRequest The contents of the rule set.
     * @param effectiveAt The effective datetime or cut label at which the rule set will take effect.  Defaults to the current LUSID system datetime 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.
     */
    createTaxRuleSet(createTaxRuleSetRequest: CreateTaxRuleSetRequest, effectiveAt?: string, observe?: 'body', reportProgress?: boolean): Observable<TaxRuleSet>;
    createTaxRuleSet(createTaxRuleSetRequest: CreateTaxRuleSetRequest, effectiveAt?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<TaxRuleSet>>;
    createTaxRuleSet(createTaxRuleSetRequest: CreateTaxRuleSetRequest, effectiveAt?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<TaxRuleSet>>;
    /**
     * [EXPERIMENTAL] DeleteTaxRuleSet: Delete a tax rule set.
     * &lt;br&gt;              Deletes the rule set for all effective time.                &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.
     */
    deleteTaxRuleSet(scope: string, code: string, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deleteTaxRuleSet(scope: string, code: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteTaxRuleSet(scope: string, code: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EXPERIMENTAL] GetTaxRuleSet: Retrieve the definition of single tax rule set.
     * Retrieves the tax 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.
     */
    getTaxRuleSet(scope: string, code: string, effectiveAt?: string, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<TaxRuleSet>;
    getTaxRuleSet(scope: string, code: string, effectiveAt?: string, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<TaxRuleSet>>;
    getTaxRuleSet(scope: string, code: string, effectiveAt?: string, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<TaxRuleSet>>;
    /**
     * [EXPERIMENTAL] ListTaxRuleSets: List tax rule sets.
     * Retrieves all tax rule set definitions 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 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.
     */
    listTaxRuleSets(effectiveAt?: string, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfTaxRuleSet>;
    listTaxRuleSets(effectiveAt?: string, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfTaxRuleSet>>;
    listTaxRuleSets(effectiveAt?: string, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfTaxRuleSet>>;
    /**
     * [EXPERIMENTAL] UpdateTaxRuleSet: Update a tax rule set.
     * Updates the tax rule set definition at the given effective time.  The changes will take place from this effective time until the next effective time that the rule has been updated at.  For example, consider a rule that has been created or updated effective at the first day of the coming month.  An upsert effective from the current day will only change the definition until that day.  An additional upsert at the same time (first day of the month) is required if the newly-updated definition is to supersede the future definition.  The user must be entitled to read any properties specified in each rule.
     * @param scope The rule set scope.
     * @param code The rule set code.
     * @param updateTaxRuleSetRequest The contents of the rule set.
     * @param effectiveAt The effective datetime or cut label at which the rule set will take effect.  Defaults to the current LUSID system datetime 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.
     */
    updateTaxRuleSet(scope: string, code: string, updateTaxRuleSetRequest: UpdateTaxRuleSetRequest, effectiveAt?: string, observe?: 'body', reportProgress?: boolean): Observable<TaxRuleSet>;
    updateTaxRuleSet(scope: string, code: string, updateTaxRuleSetRequest: UpdateTaxRuleSetRequest, effectiveAt?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<TaxRuleSet>>;
    updateTaxRuleSet(scope: string, code: string, updateTaxRuleSetRequest: UpdateTaxRuleSetRequest, effectiveAt?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<TaxRuleSet>>;
    static ɵfac: i0.ɵɵFactoryDef<TaxRuleSetsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDef<TaxRuleSetsService>;
}
