import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AccessMetadataOperation } from '../model/accessMetadataOperation';
import { AccessMetadataValue } from '../model/accessMetadataValue';
import { CustomEntityRequest } from '../model/customEntityRequest';
import { CustomEntityResponse } from '../model/customEntityResponse';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { PagedResourceListOfCustomEntityResponse } from '../model/pagedResourceListOfCustomEntityResponse';
import { ResourceListOfRelationship } from '../model/resourceListOfRelationship';
import { UpsertCustomEntitiesResponse } from '../model/upsertCustomEntitiesResponse';
import { UpsertCustomEntityAccessMetadataRequest } from '../model/upsertCustomEntityAccessMetadataRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class CustomEntitiesService {
    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] DeleteCustomEntity: Delete a Custom Entity instance.
     * Delete a Custom Entity instance by a specific entity type.
     * @param entityType The type of Custom Entity to remove.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param identifierScope The identifier scope.
     * @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.
     */
    deleteCustomEntity(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deleteCustomEntity(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteCustomEntity(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EARLY ACCESS] DeleteCustomEntityAccessMetadata: Delete a Custom Entity Access Metadata entry
     * Deletes the Custom Entity Access Metadata entry that exactly matches the provided identifier parts.    It is important to always check to verify success (or failure).
     * @param entityType The type of the Custom Entity.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param metadataKey Key of the metadata entry to delete.
     * @param identifierScope The identifier scope.
     * @param effectiveAt The effectiveAt datetime at which to retrieve the Access Metadata.
     * @param effectiveUntil The effective datetime until which the Access Metadata is valid. If not supplied this will be valid indefinitely, or until the next \&#39;effectiveAt\&#39; datetime of the Access Metadata.
     * @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.
     */
    deleteCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, effectiveAt?: string, effectiveUntil?: Date, observe?: 'body', reportProgress?: boolean): Observable<DeletedEntityResponse>;
    deleteCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, effectiveAt?: string, effectiveUntil?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, effectiveAt?: string, effectiveUntil?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EARLY ACCESS] GetAllCustomEntityAccessMetadata: Get all the Access Metadata rules for a Custom Entity
     * Get all the Custom Entity access metadata for the specified identifier scope, code and value
     * @param entityType The type of the Custom Entity.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param identifierScope The identifier scope.
     * @param effectiveAt The effective datetime or cut label at which to get the entities. Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the Access Metadata. Defaults to returning the latest version of the metadata 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.
     */
    getAllCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, effectiveAt?: string, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<{
        [key: string]: Array<AccessMetadataValue>;
    }>;
    getAllCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, effectiveAt?: string, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<{
        [key: string]: Array<AccessMetadataValue>;
    }>>;
    getAllCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, effectiveAt?: string, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<{
        [key: string]: Array<AccessMetadataValue>;
    }>>;
    /**
     * [EARLY ACCESS] GetCustomEntity: Get a Custom Entity instance.
     * Retrieve a Custom Entity instance by a specific entity type at a point in AsAt time.
     * @param entityType The type of Custom Entity to retrieve. An entityType can be created using the \&quot;CreateCustomEntityDefinition\&quot; endpoint for CustomEntityDefinitions.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param identifierScope The identifier scope.
     * @param asAt The AsAt datetime at which to retrieve the Custom Entity instance.
     * @param effectiveAt The effective datetime or cut label at which to get the Custom Entity instance. Defaults to the current LUSID system datetime if not specified.
     * @param relatedEntityPropertyKeys A list of property keys from any domain that supports relationships              to decorate onto related entities. These must take the format {domain}/{scope}/{code}, for example \&#39;Portfolio/Manager/Id\&#39;.
     * @param relationshipDefinitionIds A list of relationship definitions that are used to decorate related entities              onto the entity in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
     * @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.
     */
    getCustomEntity(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, asAt?: Date, effectiveAt?: string, relatedEntityPropertyKeys?: Array<string>, relationshipDefinitionIds?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<CustomEntityResponse>;
    getCustomEntity(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, asAt?: Date, effectiveAt?: string, relatedEntityPropertyKeys?: Array<string>, relationshipDefinitionIds?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<CustomEntityResponse>>;
    getCustomEntity(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, asAt?: Date, effectiveAt?: string, relatedEntityPropertyKeys?: Array<string>, relationshipDefinitionIds?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<CustomEntityResponse>>;
    /**
     * [EARLY ACCESS] GetCustomEntityAccessMetadataByKey: Get an entry identified by a metadataKey in the Access Metadata of a Custom Entity
     * Get Custom Entity access metadata for the specified metadata key
     * @param entityType The type of the Custom Entity.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param metadataKey Key of the metadata entry to retrieve
     * @param identifierScope The identifier scope.
     * @param effectiveAt The effective datetime or cut label at which to get the entities. Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve the Access Metadata. Defaults to returning the latest version of the metadata 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.
     */
    getCustomEntityAccessMetadataByKey(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, effectiveAt?: string, asAt?: Date, observe?: 'body', reportProgress?: boolean): Observable<Array<AccessMetadataValue>>;
    getCustomEntityAccessMetadataByKey(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, effectiveAt?: string, asAt?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<AccessMetadataValue>>>;
    getCustomEntityAccessMetadataByKey(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, effectiveAt?: string, asAt?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<AccessMetadataValue>>>;
    /**
     * [EARLY ACCESS] GetCustomEntityRelationships: Get Relationships for Custom Entity
     * Get relationships for the specified Custom Entity.
     * @param entityType The type of entity get relationships for.
     * @param identifierScope The identifier scope.
     * @param identifierType An identifier type attached to the Custom Entity.
     * @param identifierValue The identifier value.
     * @param effectiveAt The effective datetime or cut label at which to get relationships. Defaults to the current LUSID system datetime if not specified.
     * @param asAt The asAt datetime at which to retrieve relationships. Defaults to return the latest LUSID AsAt time if not specified.
     * @param filter Expression to filter relationships. Users should provide null or empty string for this field until further notice.
     * @param identifierTypes Identifiers types (as property keys) used for referencing Persons or Legal Entities. These take the format              {domain}/{scope}/{code} e.g. \&quot;Person/CompanyDetails/Role\&quot;. They must be from the \&quot;Person\&quot; or \&quot;LegalEntity\&quot; domain.              Only identifier types stated will be used to look up relevant entities in relationships. If not applicable, provide an empty array.
     * @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.
     */
    getCustomEntityRelationships(entityType: string, identifierScope: string, identifierType: string, identifierValue: string, effectiveAt?: string, asAt?: Date, filter?: string, identifierTypes?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<ResourceListOfRelationship>;
    getCustomEntityRelationships(entityType: string, identifierScope: string, identifierType: string, identifierValue: string, effectiveAt?: string, asAt?: Date, filter?: string, identifierTypes?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ResourceListOfRelationship>>;
    getCustomEntityRelationships(entityType: string, identifierScope: string, identifierType: string, identifierValue: string, effectiveAt?: string, asAt?: Date, filter?: string, identifierTypes?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ResourceListOfRelationship>>;
    /**
     * [EARLY ACCESS] ListCustomEntities: List Custom Entities of the specified entityType.
     * List all the Custom Entities matching particular criteria.
     * @param entityType The type of Custom Entity to list.
     * @param effectiveAt The effective datetime or cut label at which to list the entities. Defaults to the current LUSID              system datetime if not specified.
     * @param asAt The asAt datetime at which to list the entities. Defaults to returning the latest version              of each portfolio if not specified.
     * @param limit When paginating, limit the results to this number. Defaults to 100 if not specified.
     * @param filter Expression to filter the results. For more information about filtering              results, see https://support.lusid.com/knowledgebase/article/KA-01914.
     * @param page The pagination token to use to continue listing entities; this              value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt              and asAt fields must not have changed since the original request.
     * @param relatedEntityPropertyKeys A list of property keys from any domain that supports relationships              to decorate onto related entities. These must take the format {domain}/{scope}/{code}, for example \&#39;Portfolio/Manager/Id\&#39;.
     * @param relationshipDefinitionIds A list of relationship definitions that are used to decorate related entities              onto the entities in the response. These must take the form {relationshipDefinitionScope}/{relationshipDefinitionCode}.
     * @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.
     */
    listCustomEntities(entityType: string, effectiveAt?: string, asAt?: Date, limit?: number, filter?: string, page?: string, relatedEntityPropertyKeys?: Array<string>, relationshipDefinitionIds?: Array<string>, observe?: 'body', reportProgress?: boolean): Observable<PagedResourceListOfCustomEntityResponse>;
    listCustomEntities(entityType: string, effectiveAt?: string, asAt?: Date, limit?: number, filter?: string, page?: string, relatedEntityPropertyKeys?: Array<string>, relationshipDefinitionIds?: Array<string>, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<PagedResourceListOfCustomEntityResponse>>;
    listCustomEntities(entityType: string, effectiveAt?: string, asAt?: Date, limit?: number, filter?: string, page?: string, relatedEntityPropertyKeys?: Array<string>, relationshipDefinitionIds?: Array<string>, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<PagedResourceListOfCustomEntityResponse>>;
    /**
     * [EARLY ACCESS] PatchCustomEntityAccessMetadata: Patch Access Metadata rules for a Custom Entity.
     * Patch Custom Entity Access Metadata Rules in a single scope.  The behaviour is defined by the JSON Patch specification.                Currently only \&#39;add\&#39; is a supported operation on the patch document    Currently only valid metadata keys are supported paths on the patch document                The response will return any affected Custom Entity Access Metadata rules or a failure message if unsuccessful.                It is important to always check to verify success (or failure).                Multiple rules for a metadataKey can exist with different effective at dates, when resources are accessed the rule that is active for the current time will be fetched.
     * @param entityType The type of the Custom Entity.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param identifierScope The identifier scope.
     * @param accessMetadataOperation The Json Patch document
     * @param effectiveAt The effectiveAt datetime at which to retrieve the Access Metadata
     * @param effectiveUntil The effective datetime until which the Access Metadata is valid. If not supplied this will be valid indefinitely, or until the next \&#39;effectiveAt\&#39; datetime of the Access Metadata
     * @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.
     */
    patchCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, accessMetadataOperation: Array<AccessMetadataOperation>, effectiveAt?: string, effectiveUntil?: Date, observe?: 'body', reportProgress?: boolean): Observable<{
        [key: string]: Array<AccessMetadataValue>;
    }>;
    patchCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, accessMetadataOperation: Array<AccessMetadataOperation>, effectiveAt?: string, effectiveUntil?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<{
        [key: string]: Array<AccessMetadataValue>;
    }>>;
    patchCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, identifierScope: string, accessMetadataOperation: Array<AccessMetadataOperation>, effectiveAt?: string, effectiveUntil?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<{
        [key: string]: Array<AccessMetadataValue>;
    }>>;
    /**
     * [EARLY ACCESS] UpsertCustomEntities: Batch upsert instances of Custom Entities
     * Note: If using partial failure modes, then it is important to check the response body for failures as any failures will still return a 200 status code
     * @param entityType The type of the Custom Entity to be created. An entityType can be created using the \&quot;CreateCustomEntityDefinition\&quot; endpoint for CustomEntityDefinitions.
     * @param successMode Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial
     * @param requestBody The payload describing the Custom Entity instances
     * @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.
     */
    upsertCustomEntities(entityType: string, successMode: string, requestBody: {
        [key: string]: CustomEntityRequest;
    }, observe?: 'body', reportProgress?: boolean): Observable<UpsertCustomEntitiesResponse>;
    upsertCustomEntities(entityType: string, successMode: string, requestBody: {
        [key: string]: CustomEntityRequest;
    }, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<UpsertCustomEntitiesResponse>>;
    upsertCustomEntities(entityType: string, successMode: string, requestBody: {
        [key: string]: CustomEntityRequest;
    }, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<UpsertCustomEntitiesResponse>>;
    /**
     * [EARLY ACCESS] UpsertCustomEntity: Upsert a Custom Entity instance
     * Insert the Custom Entity if it does not exist or update the Custom Entity with the supplied state if it does exist.
     * @param entityType The type of the Custom Entity to be created. An entityType can be created using the \&quot;CreateCustomEntityDefinition\&quot; endpoint for CustomEntityDefinitions.
     * @param customEntityRequest The payload describing the Custom Entity instance.
     * @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.
     */
    upsertCustomEntity(entityType: string, customEntityRequest: CustomEntityRequest, observe?: 'body', reportProgress?: boolean): Observable<CustomEntityResponse>;
    upsertCustomEntity(entityType: string, customEntityRequest: CustomEntityRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<CustomEntityResponse>>;
    upsertCustomEntity(entityType: string, customEntityRequest: CustomEntityRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<CustomEntityResponse>>;
    /**
     * [EARLY ACCESS] UpsertCustomEntityAccessMetadata: Upsert a Custom Entity Access Metadata entry associated with a specific metadataKey. This creates or updates the data in LUSID.
     * Update or insert one Custom Entity Access Metadata entry in a single scope. An item will be updated if it already exists  and inserted if it does not.                The response will return the successfully updated or inserted Custom Entity Access Metadata rule or failure message if unsuccessful.                It is important to always check to verify success (or failure).                Multiple rules for a metadataKey can exist with different effective at dates, when resources are accessed the rule that is active for the current time will be fetched.
     * @param entityType The type of the Custom Entity.
     * @param identifierType An identifier type attached to the Custom Entity instance.
     * @param identifierValue The identifier value.
     * @param metadataKey Key of the metadata entry to retrieve
     * @param identifierScope The identifier scope.
     * @param upsertCustomEntityAccessMetadataRequest The Custom Entity Access Metadata entry to upsert
     * @param effectiveAt The effectiveAt datetime at which to retrieve the Access Metadata
     * @param effectiveUntil The effective datetime until which the Access Metadata is valid. If not supplied this will be valid indefinitely, or until the next \&#39;effectiveAt\&#39; datetime of the Access Metadata
     * @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.
     */
    upsertCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, upsertCustomEntityAccessMetadataRequest: UpsertCustomEntityAccessMetadataRequest, effectiveAt?: string, effectiveUntil?: Date, observe?: 'body', reportProgress?: boolean): Observable<Array<AccessMetadataValue>>;
    upsertCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, upsertCustomEntityAccessMetadataRequest: UpsertCustomEntityAccessMetadataRequest, effectiveAt?: string, effectiveUntil?: Date, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<AccessMetadataValue>>>;
    upsertCustomEntityAccessMetadata(entityType: string, identifierType: string, identifierValue: string, metadataKey: string, identifierScope: string, upsertCustomEntityAccessMetadataRequest: UpsertCustomEntityAccessMetadataRequest, effectiveAt?: string, effectiveUntil?: Date, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<AccessMetadataValue>>>;
    static ɵfac: i0.ɵɵFactoryDef<CustomEntitiesService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDef<CustomEntitiesService>;
}
