import { Concept } from "../concept/Concept";
/**
* Contains a mapping of variables to concepts.
*/
export interface ConceptMap {
/**
* Produces an iterator over all variables in this ConceptMap.
*
* ### Examples
*
* ```ts
* conceptMap.variables()
* ```
*/
variables(): IterableIterator;
/**
* Produces an iterator over all concepts in this ConceptMap.
*
* ### Examples
*
* ```ts
* conceptMap.concepts()
* ```
*/
concepts(): IterableIterator;
/**
* Returns the inner Map where keys are query variables, and values are concepts.
*
* ### Examples
*
* ```ts
* conceptMap.map()
* ```
*/
map(): Map;
/**
* Retrieves a concept for a given variable name.
*
* ### Examples
*
* ```ts
* conceptMap.get(variable)
* ```
*
* @param variable - The string representation of a variable
*/
get(variable: string): Concept;
/**
* The Explainables object for this ConceptMap,
* exposing which of the concepts in this ConceptMap are explainable.
*/
readonly explainables: ConceptMap.Explainables;
}
export declare namespace ConceptMap {
/**
* Contains explainable objects.
*/
interface Explainables {
/**
* Retrieves the explainable relation with the given variable name.
*
* ### Examples
*
* ```ts
* conceptMap.explainables.relation(variable)
* ```
*
* @param variable - The string representation of a variable
*/
relation(variable: string): Explainable;
/**
* Retrieves the explainable attribute with the given variable name.
*
* ### Examples
*
* ```ts
* conceptMap.explainables.attribute(variable)
* ```
*
* @param variable - The string representation of a variable
*/
attribute(variable: string): Explainable;
/**
* Retrieves the explainable attribute ownership with the pair of (owner, attribute) variable names.
*
* ### Examples
*
* ```ts
* conceptMap.explainables.ownership(owner, attribute)
* ```
*
* @param owner - The string representation of the owner variable
* @param attribute - The string representation of the attribute variable
*/
ownership(owner: string, attribute: string): Explainable;
/**
* All of this ConceptMap’s explainable relations.
*/
readonly relations: Map;
/**
* All of this ConceptMap’s explainable attributes.
*/
readonly attributes: Map;
/**
* All of this ConceptMap’s explainable ownerships.
*/
readonly ownerships: Map<[string, string], Explainable>;
}
/**
* Contains an explainable object.
*/
interface Explainable {
/**
* The subquery of the original query that is actually being explained.
*/
readonly conjunction: string;
/**
* A unique ID that identifies this Explainable.
*/
readonly id: number;
}
}