import { BlankNode, NamedNode, Quad, Store } from 'n3';
import { Term } from '@rdfjs/types';
import { ShaclNode } from './node';
import { ShaclPropertyTemplate } from './property-template';
export declare class ShaclProperty extends HTMLElement {
    template: ShaclPropertyTemplate;
    container: HTMLElement;
    parent: ShaclNode;
    constructor(template: ShaclPropertyTemplate, parent: ShaclNode);
    bindValues(valueSubject: NamedNode | BlankNode | undefined, multiValuedPath?: boolean): Promise<void>;
    addPropertyInstance(value?: Term, linked?: boolean, forceRemovable?: boolean): Promise<HTMLElement | undefined>;
    updateControls(): Promise<void>;
    instanceCount(): number;
    hasRecursiveNodeShape(): boolean;
    toRDF(graph: Store, subject: NamedNode | BlankNode): void;
    filterValidValues(values: Quad[], valueSubject: NamedNode | BlankNode): Promise<Quad[]>;
    createAddControls(): Promise<HTMLDivElement>;
}
export declare function createPropertyInstance(template: ShaclPropertyTemplate, value?: Term, forceRemovable?: boolean, linked?: boolean, parentNode?: ShaclNode): Promise<HTMLElement>;
