import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CreateDerivedPropertyDefinitionRequest } from '../model/createDerivedPropertyDefinitionRequest';
import { CreatePropertyDefinitionRequest } from '../model/createPropertyDefinitionRequest';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { PropertyDefinition } from '../model/propertyDefinition';
import { ResourceListOfPropertyDefinition } from '../model/resourceListOfPropertyDefinition';
import { UpdatePropertyDefinitionRequest } from '../model/updatePropertyDefinitionRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class PropertyDefinitionsService {
    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;
    /**
     * [EARLY ACCESS] CreateDerivedPropertyDefinition: Create derived property definition
     * Define a new derived property.
     * @param createDerivedPropertyDefinitionRequest The definition of the new derived property.
     * @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.
     */
    createDerivedPropertyDefinition(createDerivedPropertyDefinitionRequest: CreateDerivedPropertyDefinitionRequest, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    createDerivedPropertyDefinition(createDerivedPropertyDefinitionRequest: CreateDerivedPropertyDefinitionRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    createDerivedPropertyDefinition(createDerivedPropertyDefinitionRequest: CreateDerivedPropertyDefinitionRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
    /**
     * CreatePropertyDefinition: Create property definition
     * Define a new property.
     * @param createPropertyDefinitionRequest The definition of the new property.
     * @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.
     */
    createPropertyDefinition(createPropertyDefinitionRequest: CreatePropertyDefinitionRequest, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    createPropertyDefinition(createPropertyDefinitionRequest: CreatePropertyDefinitionRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    createPropertyDefinition(createPropertyDefinitionRequest: CreatePropertyDefinitionRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
    /**
     * DeletePropertyDefinition: Delete property definition
     * Delete the definition of the specified property.
     * @param domain The domain of the property to be deleted.
     * @param scope The scope of the property to be deleted.
     * @param code The code of the property to be deleted. Together with the domain and scope this uniquely              identifies the property.
     * @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.
     */
    deletePropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deletePropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deletePropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * GetMultiplePropertyDefinitions: Get multiple property definitions
     * Retrieve the definition of one or more specified properties.
     * @param propertyKeys One or more property keys which identify each property that a definition should              be retrieved for. The format for each property key is {domain}/{scope}/{code}, e.g. \&#39;Portfolio/Manager/Id\&#39;.
     * @param asAt The asAt datetime at which to retrieve the property definitions. Defaults to return              the latest version of each definition if not specified.
     * @param filter Expression to filter the result set.               For example, to filter on the Lifetime, use \&quot;lifeTime eq \&#39;Perpetual\&#39;\&quot;              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.
     */
    getMultiplePropertyDefinitions(propertyKeys: Array<string>, asAt?: Date, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfPropertyDefinition>;
    getMultiplePropertyDefinitions(propertyKeys: Array<string>, asAt?: Date, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfPropertyDefinition>>;
    getMultiplePropertyDefinitions(propertyKeys: Array<string>, asAt?: Date, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfPropertyDefinition>>;
    /**
     * GetPropertyDefinition: Get property definition
     * Retrieve the definition of a specified property.
     * @param domain The domain of the specified property.
     * @param scope The scope of the specified property.
     * @param code The code of the specified property. Together with the domain and scope this uniquely              identifies the property.
     * @param asAt The asAt datetime at which to retrieve the property definition. Defaults to return              the latest version of the definition 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.
     */
    getPropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    getPropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    getPropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
    /**
     * UpdatePropertyDefinition: Update property definition
     * Update the definition of a specified existing property. Not all elements within a property definition  are modifiable due to the potential implications for values already stored against the property.
     * @param domain The domain of the property being updated.
     * @param scope The scope of the property being updated.
     * @param code The code of the property being updated. Together with the domain and scope this uniquely              identifies the property.
     * @param updatePropertyDefinitionRequest The updated definition of the property.
     * @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.
     */
    updatePropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, updatePropertyDefinitionRequest: UpdatePropertyDefinitionRequest, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    updatePropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, updatePropertyDefinitionRequest: UpdatePropertyDefinitionRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    updatePropertyDefinition(domain: 'NotDefined' | 'Transaction' | 'Portfolio' | 'Holding' | 'ReferenceHolding' | 'TransactionConfiguration' | 'Instrument' | 'CutLabelDefinition' | 'Analytic' | 'PortfolioGroup' | 'Person' | 'AccessMetadata' | 'Order' | 'UnitResult' | 'MarketData' | 'ConfigurationRecipe' | 'Allocation' | 'Calendar' | 'LegalEntity' | 'Placement' | 'Execution' | 'Block' | 'Participation' | 'Package' | 'OrderInstruction' | 'NextBestAction' | 'CustomEntity' | 'InstrumentEvent' | 'Account' | 'ChartOfAccounts' | 'CustodianAccount' | 'Abor' | 'AborConfiguration' | 'Reconciliation', scope: string, code: string, updatePropertyDefinitionRequest: UpdatePropertyDefinitionRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
    static ɵfac: i0.ɵɵFactoryDef<PropertyDefinitionsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDef<PropertyDefinitionsService>;
}
