import type { NamedNode } from '@rdfjs/types';
import type { ExtendingConstructor, RdfResource, ResourceIdentifier } from '@tpluscode/rdfine';
import type { Class, MemberAssertion } from '@rdfine/hydra';
import type { Property } from '@rdfine/rdf';
import type { MultiPointer } from 'clownface';
export interface MemberAssertionPattern {
    subject?: string | RdfResource | NamedNode;
    predicate?: string | Property | NamedNode;
    object?: string | Class | NamedNode;
}
interface MemberAssertionEx {
    /**
       * Checks if the current member assertion matches the given pattern
       * @param filter {MemberAssertionPattern}
       */
    matches(filter: MemberAssertionPattern): boolean;
}
declare module '@rdfine/hydra' {
    interface MemberAssertion extends MemberAssertionEx {
    }
}
export declare function MemberAssertionMixin<TBase extends ExtendingConstructor<MemberAssertion, MemberAssertionEx>>(Base: TBase): {
    new (...input: any[]): {
        matches({ subject, predicate, object }: MemberAssertionPattern): boolean;
        readonly env: {
            clone(): import("@rdfjs/environment/Environment.js").Environment<import("@rdfjs/data-model/Factory.js").default | import("@rdfjs/formats/Factory.js").FormatsFactory | import("@rdfjs/term-map/Factory.js").TermMapFactory | import("@tpluscode/rdf-ns-builders").default | import("clownface/Factory.js").default | import("@rdfjs/term-set/Factory.js").TermSetFactory | import("@rdfjs/namespace/Factory.js").NamespaceFactory | import("@rdfjs/traverser/Factory.js").TraverserFactory | {
                dataset: import("@zazuko/env/lib/DatasetFactory.js").FactoryMethod<import("@zazuko/env/lib/Dataset.js").Dataset>;
                init(this: import("@rdfjs/environment/Environment.js").Environment<import("@rdfjs/data-model/Factory.js").default | import("@rdfjs/formats/Factory.js").FormatsFactory | import("@rdfjs/term-map/Factory.js").TermMapFactory | import("@zazuko/env/lib/DatasetFactory.js").DatasetFactory<import("@zazuko/env/lib/Dataset.js").Dataset>>): void;
            } | import("@tpluscode/rdfine").RdfineFactory>;
        } & Omit<import("@rdfjs/data-model/Factory.js").default & import("@rdfjs/formats/Factory.js").FormatsFactory & import("@rdfjs/term-map/Factory.js").TermMapFactory & import("@tpluscode/rdf-ns-builders").default & import("clownface/Factory.js").default & import("@rdfjs/term-set/Factory.js").TermSetFactory & import("@rdfjs/namespace/Factory.js").NamespaceFactory & import("@rdfjs/traverser/Factory.js").TraverserFactory & {
            dataset: import("@zazuko/env/lib/DatasetFactory.js").FactoryMethod<import("@zazuko/env/lib/Dataset.js").Dataset>;
            init(this: import("@rdfjs/environment/Environment.js").Environment<import("@rdfjs/data-model/Factory.js").default | import("@rdfjs/formats/Factory.js").FormatsFactory | import("@rdfjs/term-map/Factory.js").TermMapFactory | import("@zazuko/env/lib/DatasetFactory.js").DatasetFactory<import("@zazuko/env/lib/Dataset.js").Dataset>>): void;
        } & import("@tpluscode/rdfine").RdfineFactory, "init" | "clone">;
        readonly id: import("@rdfjs/types").BlankNode | NamedNode<string>;
        readonly types: import("@tpluscode/rdfine/lib/TypeCollection").TypeCollection<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>;
        readonly pointer: import("clownface").GraphPointer<ResourceIdentifier, import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>;
        readonly unionGraphPointer: MultiPointer<ResourceIdentifier, import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>;
        readonly _graphId: import("@rdfjs/types").BlankNode | import("@rdfjs/types").Variable | import("@rdfjs/types").DefaultGraph | NamedNode<string>;
        readonly _parent?: RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> | undefined;
        readonly isAnonymous: boolean;
        equals: (other: RdfResource | ResourceIdentifier | import("clownface").GraphPointer | undefined | null) => boolean;
        hasType: (type: string | NamedNode) => boolean;
        get: {
            <T extends RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> = RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>(property: string | NamedNode): T;
            <T extends RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> = RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>(property: string | NamedNode, options?: import("@tpluscode/rdfine/RdfResource").GetOptions): T | null;
        };
        getArray: <T extends RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> = RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>(property: string | NamedNode, options?: import("@tpluscode/rdfine/RdfResource").GetOptions) => T[];
        getBoolean: (property: string | NamedNode, options?: import("@tpluscode/rdfine/RdfResource").GetOptions) => boolean;
        getString: {
            (property: string | NamedNode): string;
            (property: string | NamedNode, options?: import("@tpluscode/rdfine/RdfResource").GetOptions): string | null;
        };
        getNumber: {
            (property: string | NamedNode): number | null;
            (property: string | NamedNode, options?: import("@tpluscode/rdfine/RdfResource").GetOptions): number | null;
        };
        toJSON: (<T extends import("@tpluscode/rdfine/RdfResource").RdfResourceCore = /*elided*/ any>() => import("@tpluscode/rdfine/lib/toJSON").Jsonified<RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> & T>) & (<T extends import("@tpluscode/rdfine/RdfResource").RdfResourceCore = MemberAssertion<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>() => import("@tpluscode/rdfine/lib/toJSON").Jsonified<RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> & T>);
        _getObjects: (property: string | NamedNode, options?: import("@tpluscode/rdfine/RdfResource").GetOptions) => MultiPointer<import("@rdfjs/types").Term, import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>;
        _create: <T extends import("@tpluscode/rdfine/RdfResource").RdfResourceCore<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>(term: import("clownface").GraphPointer<import("@rdfjs/types").Term, import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>, mixins?: import("@tpluscode/rdfine/lib/ResourceFactory").Mixin[] | [import("@tpluscode/rdfine").Constructor, ...import("@tpluscode/rdfine/lib/ResourceFactory").Mixin[]], options?: import("@tpluscode/rdfine/lib/ResourceFactory").ResourceCreationOptions<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>, T> | undefined) => T & import("@tpluscode/rdfine").ResourceIndexer<RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>;
        object?: Class<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> | undefined;
        readonly apiDocumentation?: import("@rdfine/hydra").ApiDocumentation | undefined;
        property?: Property<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> | undefined;
        subject?: import("@rdfine/hydra").Resource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>> | undefined;
        readonly operations?: import("../Operation.js").RuntimeOperation[] | undefined;
        getProperties?: ((options?: import("../CoreMixins/HydraResource.js").GetProperties) => {
            supportedProperty: import("@rdfine/hydra").SupportedProperty;
            objects: any[];
        }[]) | undefined;
        getLinks?: ((includeMissing?: boolean) => {
            supportedProperty: import("@rdfine/hydra").SupportedProperty;
            resources: RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>[];
        }[]) | undefined;
        getCollections?: ((filter?: MemberAssertionPattern) => RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>[]) | undefined;
        getOperationsDeep?: ((condition?: import("../CoreMixins/OperationFinder.js").RecursiveStopConditions) => import("../Operation.js").RuntimeOperation[]) | undefined;
        findOperations?: ((...criteria: import("../CoreMixins/OperationFinder.js").Criteria[]) => import("../Operation.js").RuntimeOperation[]) | undefined;
        findOperationsDeep?: ((stopCondition: import("../CoreMixins/OperationFinder.js").RecursiveStopConditions, ...moreCriteria: import("../CoreMixins/OperationFinder.js").Criteria[]) => import("../Operation.js").RuntimeOperation[]) | undefined;
        load?: (<T extends RdfResource<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>>>(headers?: HeadersInit) => Promise<import("alcaeus-core").HydraResponse<import("@rdfjs/types").DatasetCore<import("@rdfjs/types").Quad, import("@rdfjs/types").Quad>, T>>) | undefined;
    };
    __mixins: import("@tpluscode/rdfine/lib/ResourceFactory").Mixin[];
    __properties: Map<string, import("@tpluscode/rdfine/lib/decorators/property/decoratorFactory").PropertyMeta>;
    __initializers: Map<string, unknown>;
    __ns?: import("@rdfjs/namespace").NamespaceBuilder;
} & TBase;
export declare namespace MemberAssertionMixin {
    var shouldApply: (res: RdfResource) => boolean;
}
export {};
//# sourceMappingURL=MemberAssertion.d.ts.map