import { Quad, Term } from './rdfModel';
/**
 * In-memory [RDF quad dataset](https://rdf.js.org/dataset-spec/).
 *
 * @category Utilities
 */
export interface MemoryDataset extends Iterable<Quad> {
    readonly size: number;
    add(quad: Quad): this;
    addAll(quads: Iterable<Quad>): this;
    delete(quad: Quad): this;
    clear(): void;
    has(quad: Quad): boolean;
    hasMatches(subject: Term | undefined | null, predicate: Term | undefined | null, object: Term | undefined | null, graph?: Term | null): boolean;
    iterateMatches(subject: Term | undefined | null, predicate: Term | undefined | null, object: Term | undefined | null, graph?: Term | null): Iterable<Quad>;
    forEach(callback: (t: Quad) => void): void;
}
/**
 * Bit-flags for dataset indexing modes.
 */
export declare enum IndexQuadBy {
    /** Index by whole quad (default, required). */
    OnlyQuad = 0,
    /** Index by quad subject. */
    S = 1,
    /** Index by quad predicate. */
    P = 2,
    /** Index by quad object. */
    O = 4,
    /** Index by quad subject and predicate. */
    SP = 8,
    /** Index by quad object and predicate. */
    OP = 16
}
/**
 * Creates an empty mutable in-memory RDF quad dataset,
 * with optional simple indexes on quad sub-parts (subject, predicate, object).
 *
 * @category Utilities
 */
export declare function indexedDataset(indexBy: IndexQuadBy): MemoryDataset;
//# sourceMappingURL=memoryDataset.d.ts.map