import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DataDomainH, DataElementH, Entity, EntityMeta, EntityType, QueryObject, Relation, RelationMeta, RelationshipH, RoleH } from './entity';
import { MessageService } from 'ui-message-angular';
export declare class EntityService {
    private http;
    private messageService;
    private originalHost;
    private fakeUUIDs;
    constructor(http: HttpClient, messageService: MessageService);
    setOriginalHost(host: string): void;
    setMessageStore(msgStore: any, language: string): void;
    /**
     * List all entity IDs in the system
     */
    listEntityID(): Observable<string[] | {}>;
    /**
     * List entity IDs by a given role ID
     * @param roleID
     */
    listEntityIDbyRole(roleID: string): Observable<EntityMeta | {}>;
    /**
     * Return the entity meta for a given entity ID
     * @param entityID
     */
    getEntityMeta(entityID: string): Observable<EntityMeta | {}>;
    /**
     * Return a list of entity objects according to the description of a given query object
     * @param queryObject
     */
    searchEntities(queryObject: QueryObject): Observable<any>;
    /**
     * Return an entity instance for a given entity instance GUID
     * @param instanceGUID
     */
    getEntityInstance(instanceGUID: string): Observable<Entity | any[]>;
    /**
     * Return a relation's meta data for a given relation ID
     * @param relationID
     */
    getRelationMeta(relationID: string): Observable<RelationMeta | {}>;
    /**
     * Return all relations' meta data for a given entity ID
     * @param entityID
     */
    getRelationMetaOfEntity(entityID: string): Observable<RelationMeta[]>;
    /**
     * Create a new entity instance
     * @param instance
     */
    createEntityInstance(instance: Entity): Observable<any>;
    /**
     * Change an existing entity instance
     * @param instance
     */
    changeEntityInstance(instance: Entity): Observable<any>;
    /**
     * Delete an entity instance from a given instance GUID
     * @param instanceGUID
     */
    deleteEntityInstance(instanceGUID: string): Observable<any>;
    /**
     * Return entity types(IDs) for a given search term
     * @param term
     */
    listEntityType(term: string): Observable<EntityType[]>;
    /**
     * Return the description of a given entity type(ID)
     * @param entityID
     */
    getEntityTypeDesc(entityID: string): Observable<string | {}>;
    /**
     * Save an entity type after changing or creation
     * @param entityType
     */
    saveEntityType(entityType: any): Observable<any>;
    /**
     * Return a list of relations in the system according to the search term
     * @param term
     */
    listRelation(term: string): Observable<Relation[]>;
    /**
     * Return the description of a given relation ID
     * @param relationID
     */
    getRelationDesc(relationID: string): Observable<string | {}>;
    /**
     * Save a relation after changing or creation
     * @param relation
     */
    saveRelation(relation: any): Observable<any>;
    /**
     * Return a list of relationships in the system according to the search term
     * @param term
     */
    listRelationship(term: string): Observable<RelationshipH[]>;
    /**
     * Return a relationship definition from a given relationship ID
     * @param relationshipID
     */
    getRelationship(relationshipID: string): Observable<any>;
    /**
     * Return the description of a given relationship ID
     * @param relationshipID
     */
    getRelationshipDesc(relationshipID: string): Observable<string | {}>;
    /**
     * Save a relationship after changing or creation
     * @param relationship
     */
    saveRelationship(relationship: any): Observable<any>;
    /**
     * Return a list of roles in the system according to the search term
     * @param term
     */
    listRole(term: string): Observable<RoleH[]>;
    /**
     * Return a role definition from a given role ID
     * @param roleID
     */
    getRole(roleID: string): Observable<any>;
    /**
     * Return the description of a given role ID
     * @param roleID
     */
    getRoleDesc(roleID: string): Observable<string | {}>;
    /**
     * Save a role after changing or creation
     * @param role
     */
    saveRole(role: any): Observable<any>;
    /**
     * Return a list of data elements in the system according to the search term
     * @param term
     */
    listDataElement(term: string): Observable<DataElementH[]>;
    /**
     * Return a data element definition from a given element ID
     * @param elementID
     */
    getDataElement(elementID: string): Observable<any>;
    /**
     * Return the description of a given data element ID
     * @param elementID
     */
    getDataElementDesc(elementID: string): Observable<string | {}>;
    /**
     * Save a data element after changing or creation
     * @param element
     */
    saveDataElement(element: any): Observable<any>;
    /**
     * Return a list of data domains in the system according to the search term
     * @param term
     */
    listDataDomain(term: string): Observable<DataDomainH[]>;
    /**
     * Return a data domain definition from a given domain ID
     * @param domainID
     */
    getDataDomain(domainID: string): Observable<any>;
    /**
     * Return the description of a given data domain ID
     * @param domainID
     */
    getDataDomainDesc(domainID: string): Observable<string | {}>;
    /**
     * Save a data domain after changing or creation
     * @param domain
     */
    saveDataDomain(domain: any): Observable<any>;
    /**
     * Get data element meta
     * @param elementID
     */
    getElementMeta(elementID: string): Observable<any>;
    /**
     * Return a fake relationship ID before saving
     */
    generateFakeRelationshipUUID(): string;
    private handleError;
}
