import { IQuadStore } from '../interfaces/IQuadStore.js';
import { ICoreIterable } from '../interfaces/ICoreIterable.js';
import { Graph, NamedNode, Quad } from '../models.js';
import { QuadSet } from '../collections/QuadSet.js';
import { Shape } from '../shapes/Shape.js';
import { QuadArray } from '../collections/QuadArray.js';
import { NodeSet } from '../collections/NodeSet.js';
import { CoreMap } from '../collections/CoreMap.js';
import { ShapeSet } from '../collections/ShapeSet.js';
import { SelectQuery } from '../queries/SelectQuery.js';
import { UpdateQuery } from '../queries/UpdateQuery.js';
import { CreateQuery } from '../queries/CreateQuery.js';
import { DeleteQuery, DeleteResponse } from '../queries/DeleteQuery.js';
export declare class InMemoryStore extends Shape implements IQuadStore {
    /**
     * You can use this to define (overwrite) which graph this store uses for its quads
     */
    targetGraph: Graph;
    protected contents: QuadSet;
    private initPromise;
    constructor(n?: any);
    init(): Promise<any>;
    loadContents(): Promise<QuadSet>;
    /**
     * returns the contents of the InMemoryStore as a QuadSet
     * do NOT modify the returned QuadSet directly. Add or remove contents to this store instead
     */
    getContents(): QuadSet;
    updateQuery?<RType>(query: UpdateQuery<RType>): Promise<RType>;
    createQuery?<R>(q: CreateQuery<R>): Promise<R>;
    deleteQuery(query: DeleteQuery): Promise<DeleteResponse>;
    update(toAdd: ICoreIterable<Quad>, toRemove: ICoreIterable<Quad>): Promise<any>;
    getDefaultGraph(): Graph;
    add(quad: Quad): Promise<any>;
    addMultiple(quads: QuadSet): Promise<any>;
    delete(quad: Quad): Promise<any>;
    deleteMultiple(quads: QuadSet): Promise<any>;
    clearProperties(subjectToPredicates: CoreMap<NamedNode, NodeSet<NamedNode>>): Promise<boolean>;
    setURIs(nodeToCurrentUriMap: CoreMap<NamedNode, string>): Promise<[string, string][]>;
    removeNodes(nodes: ICoreIterable<NamedNode>): Promise<any>;
    selectQuery<ResultType>(query: SelectQuery<any>): Promise<ResultType>;
    loadShape(shapeInstance: Shape, request: any): Promise<QuadArray>;
    loadShapes(shapeInstances: ShapeSet, request: any): Promise<QuadArray>;
    protected onContentsUpdated(): Promise<boolean>;
    protected addNewContents(quads: QuadArray | QuadSet): QuadArray | QuadSet;
    private _addMultiple;
    private _deleteMultiple;
    private getRequestQuads;
}
export declare class TestStore implements IQuadStore {
    defaultGraph: Graph;
    contents: QuadSet;
    init(): any;
    reset(): void;
    update(added: ICoreIterable<Quad>, removed: ICoreIterable<Quad>): Promise<any>;
    selectQuery<ResultType>(query: SelectQuery<any>): Promise<ResultType>;
    add(quad: Quad): Promise<any>;
    addMultiple(quads: QuadSet): Promise<any>;
    delete(quad: Quad): Promise<any>;
    deleteMultiple(quads: QuadSet): Promise<any>;
    setURIs(nodeToCurrentUriMap: CoreMap<NamedNode, string>): Promise<[string, string][]>;
    getDefaultGraph(): Graph;
    removeNodes(nodes: ICoreIterable<NamedNode>): Promise<any>;
    loadShape(shapeInstance: Shape, request: any): Promise<QuadArray>;
    loadShapes(shapeSet: ShapeSet, request: any): Promise<QuadArray>;
    clearProperties(subjectToPredicates: CoreMap<NamedNode, NodeSet<NamedNode>>): Promise<boolean>;
}
