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 Owl from '../index.js';
import type * as Rdf from '@rdfine/rdf';
import type * as Rdfs from '@rdfine/rdfs';
export interface Restriction<D extends RDF.DatasetCore = RDF.DatasetCore> extends Owl.Class<D>, rdfine.RdfResource<D> {
    allValuesFrom: Rdfs.Class<D> | undefined;
    cardinality: number | undefined;
    hasSelf: Rdfs.Resource<D> | undefined;
    hasValue: Rdfs.Resource<D> | undefined;
    maxCardinality: number | undefined;
    maxQualifiedCardinality: number | undefined;
    minCardinality: number | undefined;
    minQualifiedCardinality: number | undefined;
    onClass: Owl.Class<D> | undefined;
    onDataRange: Rdfs.Datatype<D> | undefined;
    onProperties: Rdf.List<D> | undefined;
    onProperty: Rdf.Property<D> | undefined;
    qualifiedCardinality: number | undefined;
    someValuesFrom: Rdfs.Class<D> | undefined;
}
export declare function RestrictionMixin<Base extends rdfine.Constructor>(Resource: Base): rdfine.Constructor<Restriction & RdfResourceCore> & Base;
export declare namespace RestrictionMixin {
    var appliesTo: RDF.NamedNode<string> & RDF.NamedNode<"http://www.w3.org/2002/07/owl#Restriction">;
    var createFactory: (env: RdfineEnvironment) => import("@tpluscode/rdfine/factory").FullFactory<Owl.Restriction<RDF.DatasetCore<RDF.Quad, RDF.Quad>>> & import("@tpluscode/rdfine/factory").CurriedFactory<Owl.Restriction<RDF.DatasetCore<RDF.Quad, RDF.Quad>>> & import("@tpluscode/rdfine/factory").CurriedBlankFactory<Owl.Restriction<RDF.DatasetCore<RDF.Quad, RDF.Quad>>>;
}
