/**
 * Names of all possible encrypted entity types.
 */
import { EncryptedEntity, EncryptedEntityStub } from '../../icc-api/model/models';
export declare enum EntityWithDelegationTypeName {
    ApplicationSettings = "ApplicationSettings",
    Article = "Article",
    AccessLog = "AccessLog",
    CalendarItem = "CalendarItem",
    Classification = "Classification",
    Contact = "Contact",
    Document = "Document",
    Form = "Form",
    HealthElement = "HealthElement",
    Invoice = "Invoice",
    MaintenanceTask = "MaintenanceTask",
    Message = "Message",
    Patient = "Patient",
    Receipt = "Receipt",
    TimeTable = "TimeTable",
    Topic = "Topic"
}
export declare const entityWithDelegationTypeNames: Set<EntityWithDelegationTypeName>;
/**
 * Type containing information on an entity and its type. If the entity is a stub (EncryptedEntityStub or IcureStub) the type should refer to the
 * original entity from which the stub was extracted.
 */
export type EncryptedEntityWithType = {
    entity: EncryptedEntityStub | EncryptedEntity;
    type: EntityWithDelegationTypeName;
};
/**
 * @internal this function is meant for internal use only and may be changed without notice
 * Gets the class of an encrypted entity. Throws error if the class can't be retrieved.
 * @param entity the entity object
 * @param declaredClassName the declared type of the entity, to use as a fallback in case the original class name can't be retrieved (for example
 * due to the use of minified code).
 * @return the class of the encrypted entity
 */
export declare function encryptedEntityClassOf(entity: EncryptedEntity | EncryptedEntityStub, declaredClassName: EntityWithDelegationTypeName | undefined): EntityWithDelegationTypeName;
/**
 * @internal this function is meant for internal use only and may be changed without notice
 * Gets the class of an encrypted entity. Returns undefined if the class can't be retrieved.
 * @param entity the entity object
 * @param declaredClassName the declared type of the entity, to use as a fallback in case the original class name can't be retrieved (for example
 * due to the use of minified code).
 * @return the class of the encrypted entity
 */
export declare function tryGetEncryptedEntityClassOf(entity: EncryptedEntity | EncryptedEntityStub, declaredClassName: EntityWithDelegationTypeName | undefined): EntityWithDelegationTypeName | undefined;
