/**
 * herd
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * OpenAPI spec version: 0.219.0-SNAPSHOT
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { BusinessObjectDefinition } from '../model/businessObjectDefinition';
import { BusinessObjectDefinitionAttributesUpdateRequest } from '../model/businessObjectDefinitionAttributesUpdateRequest';
import { BusinessObjectDefinitionCreateRequest } from '../model/businessObjectDefinitionCreateRequest';
import { BusinessObjectDefinitionDepartmentUpdateRequest } from '../model/businessObjectDefinitionDepartmentUpdateRequest';
import { BusinessObjectDefinitionDescriptiveInformationUpdateRequest } from '../model/businessObjectDefinitionDescriptiveInformationUpdateRequest';
import { BusinessObjectDefinitionKeys } from '../model/businessObjectDefinitionKeys';
import { BusinessObjectDefinitionSearchRequest } from '../model/businessObjectDefinitionSearchRequest';
import { BusinessObjectDefinitionSearchResponse } from '../model/businessObjectDefinitionSearchResponse';
import { BusinessObjectDefinitionUpdateRequest } from '../model/businessObjectDefinitionUpdateRequest';
import { Configuration } from '../configuration';
export declare class BusinessObjectDefinitionService {
    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;
    /**
     * createBusinessObjectDefinition
     * Creates a new business object definition. &lt;p&gt;Requires WRITE permission on namespace&lt;/p&gt;
     * @param businessObjectDefinitionCreateRequest the information needed to create the business object definition.
     * @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.
     */
    businessObjectDefinitionCreateBusinessObjectDefinition(businessObjectDefinitionCreateRequest: BusinessObjectDefinitionCreateRequest, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionCreateBusinessObjectDefinition(businessObjectDefinitionCreateRequest: BusinessObjectDefinitionCreateRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionCreateBusinessObjectDefinition(businessObjectDefinitionCreateRequest: BusinessObjectDefinitionCreateRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
    /**
     * deleteBusinessObjectDefinition
     * Deletes an existing business object definition by key. &lt;p&gt;Requires WRITE permission on namespace&lt;/p&gt;
     * @param namespace the namespace code
     * @param businessObjectDefinitionName the business object definition name
     * @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.
     */
    businessObjectDefinitionDeleteBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionDeleteBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionDeleteBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
    /**
     * getBusinessObjectDefinition
     * Gets an existing business object definition by key.
     * @param namespace the namespace code
     * @param businessObjectDefinitionName the business object definition name
     * @param includeBusinessObjectDefinitionUpdateHistory
     * @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.
     */
    businessObjectDefinitionGetBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, includeBusinessObjectDefinitionUpdateHistory?: boolean, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionGetBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, includeBusinessObjectDefinitionUpdateHistory?: boolean, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionGetBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, includeBusinessObjectDefinitionUpdateHistory?: boolean, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
    /**
     * getBusinessObjectDefinitions
     * Gets the list of business object definitions that are defined in the system.
     * @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.
     */
    businessObjectDefinitionGetBusinessObjectDefinitions(observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinitionKeys>;
    businessObjectDefinitionGetBusinessObjectDefinitions(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinitionKeys>>;
    businessObjectDefinitionGetBusinessObjectDefinitions(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinitionKeys>>;
    /**
     * getBusinessObjectDefinitions
     * Gets the list of business object definitions that are defined in the system.
     * @param namespace the namespace 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.
     */
    businessObjectDefinitionGetBusinessObjectDefinitions1(namespace: string, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinitionKeys>;
    businessObjectDefinitionGetBusinessObjectDefinitions1(namespace: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinitionKeys>>;
    businessObjectDefinitionGetBusinessObjectDefinitions1(namespace: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinitionKeys>>;
    /**
     * searchBusinessObjectDefinitions
     * Searches across all business object definitions that are defined in the system per specified search filters and keys
     * @param businessObjectDefinitionSearchRequest the information needed to search across the business object definitions
     * @param fields A comma-separated list of fields to be retrieved with each business object definition entity. Valid options: dataProviderName, shortDescription, displayName
     * @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.
     */
    businessObjectDefinitionSearchBusinessObjectDefinitions(businessObjectDefinitionSearchRequest: BusinessObjectDefinitionSearchRequest, fields?: string, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinitionSearchResponse>;
    businessObjectDefinitionSearchBusinessObjectDefinitions(businessObjectDefinitionSearchRequest: BusinessObjectDefinitionSearchRequest, fields?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinitionSearchResponse>>;
    businessObjectDefinitionSearchBusinessObjectDefinitions(businessObjectDefinitionSearchRequest: BusinessObjectDefinitionSearchRequest, fields?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinitionSearchResponse>>;
    /**
     * updateBusinessObjectDefinition
     * Updates an existing business object definition by key. &lt;p&gt;Requires WRITE permission on namespace&lt;/p&gt; &lt;p&gt; If attributes are supplied in the request, this endpoint replaces the entire list of attributes on the business object definition with the contents of the request. Observe this example: &lt;ol&gt; &lt;li&gt;Three attributes present on the existing business object definition.&lt;/li&gt; &lt;li&gt;This endpoint is called with a single attribute in the request with an updated value.&lt;/li&gt; &lt;li&gt;After this operation the business object definition will have only one attribute – which is probably not the desired outcome.&lt;/li&gt; &lt;li&gt;Instead, supply all existing attributes and provide updated values and additional attributes as needed. The only case when an existing attribute should be left out is to remove the attribute.&lt;/li&gt; &lt;/ol&gt; &lt;/p&gt;
     * @param namespace the namespace code
     * @param businessObjectDefinitionName the name of the business object definition to update
     * @param businessObjectDefinitionUpdateRequest the information needed to update the business object definition
     * @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.
     */
    businessObjectDefinitionUpdateBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionUpdateRequest: BusinessObjectDefinitionUpdateRequest, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionUpdateBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionUpdateRequest: BusinessObjectDefinitionUpdateRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionUpdateBusinessObjectDefinition(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionUpdateRequest: BusinessObjectDefinitionUpdateRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
    /**
     * updateBusinessObjectDefinitionAttributes
     * Updates attributes for an existing business object definition. &lt;p&gt;Requires WRITE or WRITE_DESCRIPTIVE_CONTENT permission on namespace&lt;/p&gt; &lt;p&gt; This endpoint replaces the entire list of attributes on the business object definition with the contents of the request. Observe this example: &lt;ol&gt; &lt;li&gt;Three attributes present on the existing business object definition.&lt;/li&gt; &lt;li&gt;This endpoint is called with a single attribute in the request with an updated value.&lt;/li&gt; &lt;li&gt;After this operation the business object definition will have only one attribute – which is probably not the desired outcome.&lt;/li&gt; &lt;li&gt;Instead, supply all existing attributes and provide updated values and additional attributes as needed. The only case when an existing attribute should be left out is to remove the attribute.&lt;/li&gt; &lt;/ol&gt; &lt;/p&gt;
     * @param namespace the namespace code
     * @param businessObjectDefinitionName the name of the business object definition to update
     * @param businessObjectDefinitionAttributesUpdateRequest the information needed to update the business object definition attributes
     * @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.
     */
    businessObjectDefinitionUpdateBusinessObjectDefinitionAttributes(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionAttributesUpdateRequest: BusinessObjectDefinitionAttributesUpdateRequest, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionUpdateBusinessObjectDefinitionAttributes(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionAttributesUpdateRequest: BusinessObjectDefinitionAttributesUpdateRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionUpdateBusinessObjectDefinitionAttributes(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionAttributesUpdateRequest: BusinessObjectDefinitionAttributesUpdateRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
    /**
     * updateBusinessObjectDefinitionDepartment
     * Updates an existing business object definition department by code. &lt;p&gt;Requires WRITE or WRITE_DESCRIPTIVE_CONTENT permission on namespace&lt;/p&gt;
     * @param namespace the namespace code
     * @param businessObjectDefinitionName the name of the business object definition to update
     * @param businessObjectDefinitionDepartmentUpdateRequest the information needed to update the business object definition
     * @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.
     */
    businessObjectDefinitionUpdateBusinessObjectDefinitionDepartment(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionDepartmentUpdateRequest: BusinessObjectDefinitionDepartmentUpdateRequest, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionUpdateBusinessObjectDefinitionDepartment(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionDepartmentUpdateRequest: BusinessObjectDefinitionDepartmentUpdateRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionUpdateBusinessObjectDefinitionDepartment(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionDepartmentUpdateRequest: BusinessObjectDefinitionDepartmentUpdateRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
    /**
     * updateBusinessObjectDefinitionDescriptiveInformation
     * Updates an existing business object definition descriptive information by key. &lt;p&gt;Requires WRITE or WRITE_DESCRIPTIVE_CONTENT permission on namespace&lt;/p&gt;
     * @param namespace the namespace code
     * @param businessObjectDefinitionName the name of the business object definition to update
     * @param businessObjectDefinitionDescriptiveInformationUpdateRequest the information needed to update the business object definition
     * @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.
     */
    businessObjectDefinitionUpdateBusinessObjectDefinitionDescriptiveInformation(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionDescriptiveInformationUpdateRequest: BusinessObjectDefinitionDescriptiveInformationUpdateRequest, observe?: 'body', reportProgress?: boolean): Observable<BusinessObjectDefinition>;
    businessObjectDefinitionUpdateBusinessObjectDefinitionDescriptiveInformation(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionDescriptiveInformationUpdateRequest: BusinessObjectDefinitionDescriptiveInformationUpdateRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<BusinessObjectDefinition>>;
    businessObjectDefinitionUpdateBusinessObjectDefinitionDescriptiveInformation(namespace: string, businessObjectDefinitionName: string, businessObjectDefinitionDescriptiveInformationUpdateRequest: BusinessObjectDefinitionDescriptiveInformationUpdateRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<BusinessObjectDefinition>>;
}
