import { ElementTypeGraph, ElementTypeModel, LinkTypeModel, ElementModel, LinkModel, PropertyTypeModel, ElementIri, ElementTypeIri, LinkTypeIri, PropertyTypeIri } from '../model';
import { DataProvider, DataProviderLinkCount, DataProviderLookupParams, DataProviderLookupItem } from '../provider';
import * as Rdf from './rdfModel';
/**
 * Options for {@link RdfDataProvider}.
 *
 * @see {@link RdfDataProvider}
 */
export interface RdfDataProviderOptions {
    /**
     * Whether to support blank node terms when accessing the data.
     *
     * @default true
     */
    readonly acceptBlankNodes?: boolean;
    /**
     * RDF/JS-compatible term factory to create RDF terms.
     */
    readonly factory?: Rdf.DataFactory;
    /**
     * @default "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
     */
    readonly typePredicate?: string;
    /**
     * @default "http://www.w3.org/2000/01/rdf-schema#label"
     */
    readonly labelPredicate?: string | null;
    /**
     * @default "https://schema.org/thumbnailUrl"
     */
    readonly imagePredicate?: string | null;
    /**
     * **Default**:
     * ```json
     * [
     *   "http://www.w3.org/2002/07/owl#Class",
     *   "http://www.w3.org/2000/01/rdf-schema#Class"
     * ]
     * ```
     */
    readonly elementTypeBaseTypes?: ReadonlyArray<string>;
    /**
     * @default "http://www.w3.org/2000/01/rdf-schema#subClassOf"
     */
    readonly elementSubtypePredicate?: string | null;
    /**
     * **Default**:
     * ```json
     * [
     *   "http://www.w3.org/2002/07/owl#ObjectProperty",
     *   "http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"
     * ]
     * ```
     */
    readonly linkTypeBaseTypes?: ReadonlyArray<string>;
}
/**
 * Provides graph data from in-memory [RDF/JS-compatible](https://rdf.js.org/data-model-spec/)
 * graph dataset.
 *
 * @category Data
 */
export declare class RdfDataProvider implements DataProvider {
    readonly factory: Rdf.DataFactory;
    private readonly dataset;
    private readonly acceptBlankNodes;
    private readonly typePredicate;
    private readonly labelPredicate;
    private readonly imagePredicate;
    private readonly elementTypeBaseTypes;
    private readonly elementSubtypePredicate;
    private readonly linkTypeBaseTypes;
    private readonly EMPTY_LINKS;
    constructor(options?: RdfDataProviderOptions);
    addGraph(quads: Iterable<Rdf.Quad>): void;
    encodeTerm(term: Rdf.NamedNode | Rdf.BlankNode): string;
    decodeTerm(iri: ElementIri | ElementTypeIri | LinkTypeIri | PropertyTypeIri): Rdf.NamedNode | Rdf.BlankNode;
    knownElementTypes(params: {
        signal?: AbortSignal;
    }): Promise<ElementTypeGraph>;
    knownLinkTypes(params: {
        signal?: AbortSignal;
    }): Promise<LinkTypeModel[]>;
    elementTypes(params: {
        classIds: ReadonlyArray<ElementTypeIri>;
        signal?: AbortSignal;
    }): Promise<Map<ElementTypeIri, ElementTypeModel>>;
    propertyTypes(params: {
        propertyIds: ReadonlyArray<PropertyTypeIri>;
        signal?: AbortSignal;
    }): Promise<Map<PropertyTypeIri, PropertyTypeModel>>;
    linkTypes(params: {
        linkTypeIds: ReadonlyArray<LinkTypeIri>;
        signal?: AbortSignal;
    }): Promise<Map<LinkTypeIri, LinkTypeModel>>;
    elements(params: {
        elementIds: ReadonlyArray<ElementIri>;
        signal?: AbortSignal;
    }): Promise<Map<ElementIri, ElementModel>>;
    links(params: {
        primary: ReadonlyArray<ElementIri>;
        secondary: ReadonlyArray<ElementIri>;
        linkTypeIds?: ReadonlyArray<LinkTypeIri>;
        signal?: AbortSignal;
    }): Promise<LinkModel[]>;
    connectedLinkStats(params: {
        elementId: ElementIri;
        inexactCount?: boolean;
        signal?: AbortSignal;
    }): Promise<DataProviderLinkCount[]>;
    lookup(params: DataProviderLookupParams): Promise<DataProviderLookupItem[]>;
    private computeTypeCounts;
    private computeLinkCounts;
}
//# sourceMappingURL=rdfDataProvider.d.ts.map