import { BlankNode, Comparable, DataFactory, Indexable, Literal, NamedNode, PlainFactory, Quad, Quadruple } from "@ontologies/core";
export declare type AnyRDFObject = BlankNode | NamedNode | Literal | Quad | Quadruple;
declare type SomeNode = BlankNode | NamedNode;
interface MemoizedHashFactoryInternals {
    memoizationMap: {
        [k: string]: AnyRDFObject;
    };
}
export interface DataFactoryArgs {
    bnIndex?: number;
}
/**
 * RDF DataFactory which stores every value once at most.
 *
 * This version uses hashing which might be more CPU consuming but has deterministic id creation.
 */
export declare class MemoizedHashFactory extends PlainFactory implements DataFactory<AnyRDFObject>, MemoizedHashFactoryInternals {
    static FactorySupport: {
        COLLECTIONS: boolean;
        DEFAULT_GRAPH_TYPE: boolean;
        EQUALS_METHOD: boolean;
        ID: boolean;
        ID_STAMP: boolean;
        IDENTITY: boolean;
        REVERSIBLE_ID: boolean;
        VARIABLE_TYPE: boolean;
    };
    bnIndex: number;
    memoizationMap: {
        [k: string]: BlankNode | NamedNode | Literal | Quadruple;
    };
    blankNodeMap: {
        [k: string]: BlankNode;
    };
    namedNodeMap: {
        [k: string]: NamedNode;
    };
    literalMap: {
        [k: string]: Literal;
    };
    quadMap: {
        [k: string]: Quad;
    };
    private readonly base;
    private index;
    constructor(opts?: DataFactoryArgs);
    blankNode(value?: string): BlankNode;
    namedNode(value: string): NamedNode;
    defaultGraph(): NamedNode;
    literal(value: string | unknown, languageOrDatatype?: string | NamedNode): Literal;
    quad(subject: NamedNode | BlankNode, predicate: NamedNode, object: BlankNode | NamedNode | Literal, graph?: SomeNode): Quad;
    equals(a: Comparable, b: Comparable): boolean;
    fromId(id: Indexable): BlankNode | NamedNode | Literal | Quad | Quadruple;
    id(term: AnyRDFObject): number;
    private mapId;
}
declare const _default: MemoizedHashFactory;
export default _default;
