import * as rdfine from '@tpluscode/rdfine';
import { RdfineEnvironment } from '@tpluscode/rdfine/environment';
import type * as RDF from '@rdfjs/types';
import type { RdfResourceCore } from '@tpluscode/rdfine/RdfResource';
import type * as Sh from '../index.js';
import type * as Rdf from '@rdfine/rdf';
import type * as Rdfs from '@rdfine/rdfs';
export interface PropertyShape<D extends RDF.DatasetCore = RDF.DatasetCore> extends Sh.Shape<D>, rdfine.RdfResource<D> {
    '_equals': Rdf.Property<D> | undefined;
    datatype: Rdfs.Datatype<D> | undefined;
    defaultValue: RDF.Term | undefined;
    description: string | undefined;
    disjoint: Rdf.Property<D> | undefined;
    flags: string | undefined;
    group: Sh.PropertyGroup<D> | undefined;
    hasValue: Array<RDF.Term>;
    languageIn: Array<string>;
    lessThan: Rdf.Property<D> | undefined;
    lessThanOrEquals: Rdf.Property<D> | undefined;
    maxCount: number | undefined;
    maxExclusive: number | undefined;
    maxInclusive: number | undefined;
    maxLength: number | undefined;
    minCount: number | undefined;
    minExclusive: number | undefined;
    minInclusive: number | undefined;
    minLength: number | undefined;
    name: string | undefined;
    order: number | undefined;
    path: Rdfs.Resource<D> | Array<Rdfs.Resource<D>> | undefined;
    pattern: string | undefined;
    uniqueLang: boolean | undefined;
}
export declare function PropertyShapeMixin<Base extends rdfine.Constructor>(Resource: Base): rdfine.Constructor<PropertyShape & RdfResourceCore> & Base;
export declare namespace PropertyShapeMixin {
    var appliesTo: RDF.NamedNode<string> & RDF.NamedNode<"http://www.w3.org/ns/shacl#PropertyShape">;
    var createFactory: (env: RdfineEnvironment) => import("@tpluscode/rdfine/factory").FullFactory<Sh.PropertyShape<RDF.DatasetCore<RDF.Quad, RDF.Quad>>> & import("@tpluscode/rdfine/factory").CurriedFactory<Sh.PropertyShape<RDF.DatasetCore<RDF.Quad, RDF.Quad>>> & import("@tpluscode/rdfine/factory").CurriedBlankFactory<Sh.PropertyShape<RDF.DatasetCore<RDF.Quad, RDF.Quad>>>;
}
