import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CreateDataTypeRequest } from '../model/createDataTypeRequest';
import { DataType } from '../model/dataType';
import { IUnitDefinition } from '../model/iUnitDefinition';
import { ResourceListOfDataType } from '../model/resourceListOfDataType';
import { UpdateDataTypeRequest } from '../model/updateDataTypeRequest';
import { Configuration } from '../configuration';
export declare class DataTypesService {
    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);
    /**
     * Create data type definition
     * Create a new data type definition    Data types cannot be created in either the \&quot;default\&quot; or \&quot;system\&quot; scopes.
     * @param request The definition of the new data type
     * @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.
     */
    createDataType(request?: CreateDataTypeRequest, observe?: 'body', reportProgress?: boolean): Observable<DataType>;
    createDataType(request?: CreateDataTypeRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DataType>>;
    createDataType(request?: CreateDataTypeRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DataType>>;
    /**
     * Get data type definition
     * Get the definition of a specified data type
     * @param scope The scope of the data type
     * @param code The code of the data type
     * @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.
     */
    getDataType(scope: string, code: string, observe?: 'body', reportProgress?: boolean): Observable<DataType>;
    getDataType(scope: string, code: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DataType>>;
    getDataType(scope: string, code: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DataType>>;
    /**
     * Get units from data type
     * Get the definitions of the specified units associated bound to a specific data type
     * @param scope The scope of the data type
     * @param code The code of the data type
     * @param units One or more unit identifiers for which the definition is being requested
     * @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.
     */
    getUnitsFromDataType(scope: string, code: string, units?: Array<string>, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<IUnitDefinition>;
    getUnitsFromDataType(scope: string, code: string, units?: Array<string>, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<IUnitDefinition>>;
    getUnitsFromDataType(scope: string, code: string, units?: Array<string>, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<IUnitDefinition>>;
    /**
     * List data types
     * List all data types in a specified scope
     * @param scope The requested scope of the data types
     * @param includeDefault Whether to additionally include those data types in the \&quot;default\&quot; scope
     * @param includeSystem Whether to additionally include those data types in the \&quot;system\&quot; scope
     * @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.
     */
    listDataTypes(scope: string, includeDefault?: boolean, includeSystem?: boolean, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfDataType>;
    listDataTypes(scope: string, includeDefault?: boolean, includeSystem?: boolean, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfDataType>>;
    listDataTypes(scope: string, includeDefault?: boolean, includeSystem?: boolean, sortBy?: Array<string>, start?: number, limit?: number, filter?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfDataType>>;
    /**
     * Update data type definition
     * Update the definition of the specified existing data type    Not all elements within a data type definition are modifiable due to the potential implications for data  already stored against the types
     * @param scope The scope of the data type
     * @param code The code of the data type
     * @param request The updated definition of the data type
     * @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.
     */
    updateDataType(scope: string, code: string, request?: UpdateDataTypeRequest, observe?: 'body', reportProgress?: boolean): Observable<DataType>;
    updateDataType(scope: string, code: string, request?: UpdateDataTypeRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DataType>>;
    updateDataType(scope: string, code: string, request?: UpdateDataTypeRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DataType>>;
}
