import { Term } from "@rdfjs/types/data-model";
/**
 * This file contains interfaces and classes for building SPARQL queries
 * for various operations such as listing, autocompleting, and tree structures.
 * It includes template-based query builders that can be customized with specific parameters.
 */
/**
 * Interface for building SPARQL queries to list items based on a domain, predicate, and range (coming from the query), and other attributes from Sparnatural itself
 */
export interface ListSparqlQueryBuilderIfc {
    buildSparqlQuery(domain: string, predicate: string, range: string, language: any, defaultLanguage: any, typePath: string): string;
}
/**
 * Same for lists, but using a fixed list of values (used when sh:in is present in the SHACL)
 */
export interface ValuesListSparqlQueryBuilderIfc {
    buildSparqlQuery(values: Term[], language: any, defaultLanguage: any, typePath: string): string;
}
export declare class ListSparqlTemplateQueryBuilder implements ListSparqlQueryBuilderIfc {
    queryString: string;
    sparqlPostProcessor: any;
    constructor(queryString: string, sparqlPostProcessor: any);
    buildSparqlQuery(domain: string, property: string, range: string, language: any, defaultLanguage: any, typePath: string): string;
}
export declare class ValuesListSparqlTemplateQueryBuilder implements ValuesListSparqlQueryBuilderIfc {
    queryString: string;
    sparqlPostProcessor: any;
    constructor(queryString: string, sparqlPostProcessor: any);
    buildSparqlQuery(values: Term[], language: any, defaultLanguage: any, typePath: string): string;
}
export interface AutocompleteSparqlQueryBuilderIfc {
    buildSparqlQuery(domain: string, predicate: string, range: string, key: string, language: any, defaultLang: any, typePath: string): string;
}
export declare class AutocompleteSparqlTemplateQueryBuilder implements AutocompleteSparqlQueryBuilderIfc {
    queryString: string;
    sparqlPostProcessor: {
        semanticPostProcess: (sparql: string) => string;
    };
    constructor(queryString: string, sparqlPostProcessor: {
        semanticPostProcess: (sparql: string) => string;
    });
    buildSparqlQuery(domain: string, property: string, range: string, key: string, language: any, defaultLanguage: any, typePath: string): string;
}
export interface TreeSparqlQueryBuilderIfc {
    buildRootsSparqlQuery(domain: string, predicate: string, range: string, language: any, defaultLanguage: any, typePath: string): string;
    buildChildrenSparqlQuery(node: string, domain: string, predicate: string, range: string, language: any, defaultLanguage: any, typePath: string): string;
}
export declare class TreeSparqlTemplateQueryBuilder implements TreeSparqlQueryBuilderIfc {
    #private;
    rootsQueryString: string;
    childrenQueryString: string;
    sparqlPostProcessor: any;
    constructor(rootsQueryString: string, childrenQueryString: string, sparqlPostProcessor: any);
    buildRootsSparqlQuery(domain: string, property: string, range: string, language: any, defaultLanguage: any, typePath: string): string;
    buildChildrenSparqlQuery(node: string, domain: string, property: string, range: string, language: any, defaultLanguage: any, typePath: string): string;
}
