import { RdfStore } from "rdf-stores";
import { Term } from "@rdfjs/types";
import { Path } from "./Path";
import { RDFMap, ShapeTemplate } from "./Shape";
export declare class ShapesGraph {
    shapes: RDFMap<ShapeTemplate>;
    private counter;
    constructor(shapeStore: RdfStore);
    /**
     * This function returns a Mermaid representation of a shape identified by a given term.
     * @param term {Term} - The term of the Shape that is the start of the representation.
     */
    toMermaid(term: Term): string;
    /**
     * This function returns a Mermaid representation of a given shape.
     * @param shape - The shape for which to generate a representation.
     * @param id - The ID to identify the shape in the representation.
     * @param name - The name used for the shape in the representation.
     * @private
     */
    private toMermaidSingleShape;
    /**
     * This function removes < and > from a path.
     * @param path - The path from which to remove the < and >.
     * @private
     */
    private cleanPath;
    /**
     * This function returns true if the given path is required.
     * @param path - The path that needs to be checked.
     * @param requiredPaths - An array of all required paths.
     * @private
     */
    private isPathRequired;
    /**
     * This function returns a Mermaid presentation for an array of simple paths.
     * This function is intended to be used with shape.requiredPaths and shape.optionalPaths.
     * @param paths - An array of paths.
     * @param alreadyProcessedPaths - An array of stringified paths that already have been processed.
     * @param shapedId - The id of the shape to which these paths belong.
     * @param link - The Mermaid link that needs to be used.
     * @private
     */
    private simplePathToMermaid;
    /**
     * This function returns true if a given path is real inverse path.
     * This means that the path is not a double, quadruple, ... inverse path.
     * @param path - The path that needs to be checked.
     * @private
     */
    private isRealInversePath;
    /**
     * This function removes all the ^ from the path.
     * @param path - The path from which to remove the ^.
     * @private
     */
    private getRealPath;
    protected constructPathPattern(shapeStore: RdfStore, listItem: Term): Path;
    /**
     * @param shapeStore
     * @param propertyShapeId
     * @param shape
     * @param required
     * @returns false if it wasn't a property shape
     */
    protected preprocessPropertyShape(shapeStore: RdfStore, propertyShapeId: Term, shape: ShapeTemplate, required?: boolean): boolean;
    /**
     * Processes a NodeShape or PropertyShape and adds NodeLinks and required properties to the arrays.
     * @param shapeStore
     * @param shapeId
     * @param shape
     * @returns
     */
    preprocessShape(shapeStore: RdfStore, shapeId: Term, shape: ShapeTemplate): true | void;
    /**
     * Processes a NodeShape
     * @param shapeStore
     * @param nodeShapeId
     * @param shape
     */
    protected preprocessNodeShape(shapeStore: RdfStore, nodeShapeId: Term, shape: ShapeTemplate): void;
    /**
     * @param shapeStore
     */
    initializeFromStore(shapeStore: RdfStore): RDFMap<ShapeTemplate>;
    /**
     * Processes all element from an RDF List, or detects it wasn't a list after all and it's just one element.
     * @param shapeStore
     * @param item
     * @returns
     */
    protected rdfListToGenerator(shapeStore: RdfStore, item: Term): Generator<Term>;
    protected rdfListToArray(shapeStore: RdfStore, item: Term): Array<Term>;
}
