import { Term } from "@rdfjs/types/data-model";
import { ListDataProviderIfc, RdfTermDatasourceItem, AutocompleteDataProviderIfc, TreeDataProviderIfc, RdfTermTreeDatasourceItem, ValuesListDataProviderIfc } from "./DataProviders";
import { AutocompleteSparqlQueryBuilderIfc, ListSparqlQueryBuilderIfc, TreeSparqlQueryBuilderIfc, ValuesListSparqlQueryBuilderIfc } from "./SparqlBuilders";
import { SparqlHandlerIfc } from "rdf-shacl-commons";
export declare abstract class BaseSparqlListDataProvider {
    sparqlHandler: SparqlHandlerIfc;
    lang: string;
    defaultLang: string;
    typePredicate: string;
    constructor(sparqlHandler: SparqlHandlerIfc);
    init(lang: string, defaultLang: string, typePredicate: string): void;
    doExecuteWithCallback(sparqlQuery: string, callback: (items: RdfTermDatasourceItem[]) => void, errorCallback?: (payload: any) => void): void;
    getRdfTermColumn(aBindingSet: any): string | undefined;
}
/**
 * Implementation of ListDataProviderIfc that executes a SPARQL query against an endpoint,
 * and read the 'uri' and 'label' columns.
 */
export declare class SparqlListDataProvider extends BaseSparqlListDataProvider implements ListDataProviderIfc {
    queryBuilder: ListSparqlQueryBuilderIfc;
    constructor(sparqlHandler: SparqlHandlerIfc, queryBuilder: ListSparqlQueryBuilderIfc);
    getListContent(domainType: string, predicate: string, rangeType: string, callback: (items: RdfTermDatasourceItem[]) => void, errorCallback?: (payload: any) => void): void;
}
export declare class SparqlValuesListDataProvider extends BaseSparqlListDataProvider implements ValuesListDataProviderIfc {
    queryBuilder: ValuesListSparqlQueryBuilderIfc;
    constructor(sparqlHandler: SparqlHandlerIfc, queryBuilder: ValuesListSparqlQueryBuilderIfc);
    getListContent(values: Term[], callback: (items: RdfTermDatasourceItem[]) => void, errorCallback?: (payload: any) => void): void;
}
/**
 * Implementation of AutocompleteDataProviderIfc that executes a SPARQL query against an endpoint,
 * and read the 'uri' and 'label' columns.
 */
export declare class SparqlAutocompleDataProvider implements AutocompleteDataProviderIfc {
    lang: string;
    defaultLang: string;
    typePredicate: string;
    queryBuilder: AutocompleteSparqlQueryBuilderIfc;
    sparqlHandler: SparqlHandlerIfc;
    constructor(sparqlHandler: SparqlHandlerIfc, queryBuilder: AutocompleteSparqlQueryBuilderIfc);
    init(lang: string, defaultLang: string, typePredicate: string): void;
    getAutocompleteSuggestions(domain: string, predicate: string, range: string, key: string, callback: (items: RdfTermDatasourceItem[]) => void, errorCallback?: (payload: any) => void): void;
    getRdfTermColumn(aBindingSet: any): string | undefined;
    static isValidUrl(s: string, protocols: string[]): boolean;
}
export declare class SparqlTreeDataProvider implements TreeDataProviderIfc {
    #private;
    lang: string;
    defaultLang: string;
    typePredicate: string;
    queryBuilder: TreeSparqlQueryBuilderIfc;
    sparqlHandler: SparqlHandlerIfc;
    constructor(sparqlHandler: SparqlHandlerIfc, queryBuilder: TreeSparqlQueryBuilderIfc);
    init(lang: string, defaultLang: string, typePredicate: string): void;
    getRoots(domainType: string, predicate: string, rangeType: string, callback: (items: RdfTermTreeDatasourceItem[]) => void, errorCallback?: (payload: any) => void): void;
    getChildren(node: string, domainType: string, predicate: string, rangeType: string, callback: (items: RdfTermTreeDatasourceItem[]) => void, errorCallback?: (payload: any) => void): void;
}
/**
 * @param items Merges the datasource items based on their equality, in the case that multiple groups
 * (= multiple datasets) return the same RDF term (= the same URI or literal value). In that case a single result is kept,
 * with a group that is the concatenation of the groups of the merged items.
 * @returns a new list of datasource items in which the items have been merge based on their rdfTerm equality.
 */
export declare function mergeDatasourceResults(items: RdfTermDatasourceItem[]): RdfTermDatasourceItem[];
