import { Attribute } from "./thing/Attribute";
import { Entity } from "./thing/Entity";
import { Relation } from "./thing/Relation";
import { AttributeType } from "./type/AttributeType";
import { EntityType } from "./type/EntityType";
import { RelationType } from "./type/RelationType";
import { ThingType } from "./type/ThingType";
import { Concept } from "./Concept";
import { TypeDBDriverError } from "../../common/errors/TypeDBDriverError";
/**
* Provides access for all Concept API methods.
*/
export interface ConceptManager {
/**
* Retrieves the root ThingType, “thing”.
*
* ### Examples
*
* ```ts
* transaction.concepts().getRootThingType()
* ```
*/
getRootThingType(): Promise;
/**
* Retrieves the root EntityType, “entity”.
*
* ### Examples
*
* ```ts
* transaction.concepts().getRootEntityType()
* ```
*/
getRootEntityType(): Promise;
/**
* Retrieve the root RelationType, “relation”.
*
* ### Examples
*
* ```ts
* transaction.concepts().getRootRelationType()
* ```
*/
getRootRelationType(): Promise;
/**
* Retrieve the root AttributeType, “attribute”.
*
* ### Examples
*
* ```ts
* transaction.concepts().getRootAttributeType()
* ```
*/
getRootAttributeType(): Promise;
/**
* Retrieves an EntityType by its label.
*
* ### Examples
*
* ```ts
* transaction.concepts().getEntityType(label)
* ```
*
* @param label - The label of the EntityType to retrieve
*/
getEntityType(label: string): Promise;
/**
* Retrieves a RelationType by its label.
*
* ### Examples
*
* ```ts
* transaction.concepts().getRelationType(label)
* ```
*
* @param label - The label of the RelationType to retrieve
*/
getRelationType(label: string): Promise;
/**
* Retrieves an AttributeType by its label.
*
* ### Examples
*
* ```ts
* transaction.concepts().getAttributeType(label)
* ```
*
* @param label - The label of the AttributeType to retrieve
*/
getAttributeType(label: string): Promise;
/**
* Creates a new EntityType if none exists with the given label, otherwise retrieves the existing one.
*
* ### Examples
*
* ```ts
* transaction.concepts().putEntityType(label)
* ```
*
* @param label - The label of the EntityType to create or retrieve
*/
putEntityType(label: string): Promise;
/**
* Creates a new RelationType if none exists with the given label, otherwise retrieves the existing one.
*
* ### Examples
*
* ```ts
* transaction.concepts().putRelationType(label)
* ```
*
* @param label - The label of the RelationType to create or retrieve
*/
putRelationType(label: string): Promise;
/**
* Creates a new AttributeType if none exists with the given label, or retrieves the existing one.
* or retrieve. :return:
*
* ### Examples
*
* ```ts
* await transaction.concepts().putAttributeType(label, valueType)
* ```
*
* @param label - The label of the AttributeType to create or retrieve
* @param valueType - The value type of the AttributeType to create
*/
putAttributeType(label: string, valueType: Concept.ValueType): Promise;
/**
* Retrieves an Entity by its iid.
*
* ### Examples
*
* ```ts
* transaction.concepts().getEntity(iid)
* ```
*
* @param iid - The iid of the Entity to retrieve
*/
getEntity(iid: string): Promise;
/**
* Retrieves a Relation by its iid.
*
* ### Examples
*
* ```ts
* transaction.concepts().getRelation(iid)
* ```
*
* @param iid - The iid of the Relation to retrieve
*/
getRelation(iid: string): Promise;
/**
* Retrieves an Attribute by its iid.
*
* ### Examples
*
* ```ts
* transaction.concepts().getAttribute(iid)
* ```
*
* @param iid - The iid of the Attribute to retrieve
*/
getAttribute(iid: string): Promise;
/**
* Retrieves a list of all schema exceptions for the current transaction.
*
* ### Examples
*
* ```ts
* transaction.concepts().getSchemaException()
* ```
*/
getSchemaExceptions(): Promise;
}