import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
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';
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(consumes);
    /**
     * Define a new property
     * Create a new property definition
     * @param definition 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(definition?: CreatePropertyDefinitionRequest, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    createPropertyDefinition(definition?: CreatePropertyDefinitionRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    createPropertyDefinition(definition?: CreatePropertyDefinitionRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
    /**
     * Delete property definition
     * Delete the definition of the specified property
     * @param domain The Property 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
     * @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: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deletePropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deletePropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * Get multiple property definitions
     * Get one or more property definitions
     * @param propertyKeys One or more keys for properties for which the schema should be returned
     * @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.
     */
    getMultiplePropertyDefinitions(propertyKeys?: Array<string>, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfPropertyDefinition>;
    getMultiplePropertyDefinitions(propertyKeys?: Array<string>, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfPropertyDefinition>>;
    getMultiplePropertyDefinitions(propertyKeys?: Array<string>, asAt?: Date, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfPropertyDefinition>>;
    /**
     * Get property definition
     * Retrieve the definition for the identified property
     * @param domain The Property Domain of the requested property
     * @param scope The scope of the requested property
     * @param code The code of the requested property
     * @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.
     */
    getPropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    getPropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    getPropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
    /**
     * Update the definition of the specified existing property
     * Not all elements within a property definition are modifiable due to the potential implications for data  already stored against these properties
     * @param domain The Property Domain of the property being updated
     * @param scope The scope of the property to be updated
     * @param code The code of the property to be updated
     * @param definition 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: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, definition?: UpdatePropertyDefinitionRequest, observe?: 'body', reportProgress?: boolean): Observable<PropertyDefinition>;
    updatePropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, definition?: UpdatePropertyDefinitionRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PropertyDefinition>>;
    updatePropertyDefinition(domain: 'Trade' | 'Portfolio' | 'Security' | 'Holding' | 'ReferenceHolding' | 'TxnType' | 'Instrument', scope: string, code: string, definition?: UpdatePropertyDefinitionRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PropertyDefinition>>;
}
