import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CreateCustomDataModelRequest } from '../model/createCustomDataModelRequest';
import { CustomDataModel } from '../model/customDataModel';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { ResourceListOfDataModelSummary } from '../model/resourceListOfDataModelSummary';
import { ResourceListOfString } from '../model/resourceListOfString';
import { UpdateCustomDataModelRequest } from '../model/updateCustomDataModelRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export interface CreateCustomDataModelRequestParams {
    /** The entity type of the Data Model. */
    entityType: string;
    /** The request containing the details of the Data Model. */
    createCustomDataModelRequest?: CreateCustomDataModelRequest;
}
export interface DeleteCustomDataModelRequestParams {
    /** The entity type of the Data Model. */
    entityType: string;
    /** The scope of the specified Data Model. */
    scope: string;
    /** The code of the specified Data Model. */
    code: string;
}
export interface GetCustomDataModelRequestParams {
    /** The entity type of the Data Model. */
    entityType: string;
    /** The scope of the specified Data Model. */
    scope: string;
    /** The code of the specified Data Model. */
    code: string;
    /** The asAt datetime at which to retrieve the Data Model. Defaults to return              the latest version of the Data Model if not specified. */
    asAt?: string;
}
export interface ListDataModelHierarchiesRequestParams {
    /** The asAt datetime at which to retrieve the Data Model. Defaults to return              the latest version of the Data Model if not specified. */
    asAt?: string;
    /** Expression to filter the results. Only EntityType is supported */
    filter?: string;
}
export interface UpdateCustomDataModelRequestParams {
    /** The entity type of the Data Model. */
    entityType: string;
    /** The scope of the specified Data Model. */
    scope: string;
    /** The code of the specified Data Model. */
    code: string;
    /** The request containing the details of the Data Model. */
    updateCustomDataModelRequest?: UpdateCustomDataModelRequest;
}
export declare class CustomDataModelsService {
    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] CreateCustomDataModel: Create a Custom Data Model
     * Creates a Custom Data Model.
     * @param requestParameters
     * @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.
     */
    createCustomDataModel(requestParameters?: CreateCustomDataModelRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<CustomDataModel>;
    createCustomDataModel(requestParameters?: CreateCustomDataModelRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<CustomDataModel>>;
    createCustomDataModel(requestParameters?: CreateCustomDataModelRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<CustomDataModel>>;
    /**
     * [EXPERIMENTAL] DeleteCustomDataModel: Delete a Custom Data Model
     * Delete a Custom Data Model. The data model will remain viewable at previous as at times, but will no longer  be part of any hierarchies.
     * @param requestParameters
     * @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.
     */
    deleteCustomDataModel(requestParameters?: DeleteCustomDataModelRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<DeletedEntityResponse>;
    deleteCustomDataModel(requestParameters?: DeleteCustomDataModelRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteCustomDataModel(requestParameters?: DeleteCustomDataModelRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EXPERIMENTAL] GetCustomDataModel: Get a Custom Data Model
     * Retrieves a Custom Data Model at a given as at time.
     * @param requestParameters
     * @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.
     */
    getCustomDataModel(requestParameters?: GetCustomDataModelRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<CustomDataModel>;
    getCustomDataModel(requestParameters?: GetCustomDataModelRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<CustomDataModel>>;
    getCustomDataModel(requestParameters?: GetCustomDataModelRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<CustomDataModel>>;
    /**
     * [EXPERIMENTAL] ListDataModelHierarchies: List Custom Data Model hierarchies.
     * Lists the data model summaries within their hierarchical structure.
     * @param requestParameters
     * @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.
     */
    listDataModelHierarchies(requestParameters?: ListDataModelHierarchiesRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<ResourceListOfDataModelSummary>;
    listDataModelHierarchies(requestParameters?: ListDataModelHierarchiesRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<ResourceListOfDataModelSummary>>;
    listDataModelHierarchies(requestParameters?: ListDataModelHierarchiesRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<ResourceListOfDataModelSummary>>;
    /**
     * [EXPERIMENTAL] ListSupportedEntityTypes: List the currently supported entity types for use in Custom Data Models.
     * Lists the currently supported entity types available to bind with Custom Data Models.
     * @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.
     */
    listSupportedEntityTypes(observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<ResourceListOfString>;
    listSupportedEntityTypes(observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<ResourceListOfString>>;
    listSupportedEntityTypes(observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<ResourceListOfString>>;
    /**
     * [EXPERIMENTAL] UpdateCustomDataModel: Update a Custom Data Model
     * Updates a Custom Data Model.
     * @param requestParameters
     * @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.
     */
    updateCustomDataModel(requestParameters?: UpdateCustomDataModelRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<CustomDataModel>;
    updateCustomDataModel(requestParameters?: UpdateCustomDataModelRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<CustomDataModel>>;
    updateCustomDataModel(requestParameters?: UpdateCustomDataModelRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<CustomDataModel>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<CustomDataModelsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CustomDataModelsService>;
}
