import type { Annotations } from "../../annotation/Annotation";
import type { Argument } from "../../argument/Argument";
import type { AttributeAdapter } from "../../attribute/model-adapters/AttributeAdapter";
import type { EntityAdapter } from "../../entity/EntityAdapter";
import type { ConcreteEntityAdapter } from "../../entity/model-adapters/ConcreteEntityAdapter";
import type { NestedOperation } from "../Relationship";
import type { RelationshipDeclaration } from "../RelationshipDeclaration";
import { RelationshipAdapter } from "./RelationshipAdapter";
import { RelationshipDeclarationOperations } from "./RelationshipDeclarationOperations";
export declare class RelationshipDeclarationAdapter {
    readonly name: string;
    readonly source: EntityAdapter;
    private rawEntity;
    private _target;
    readonly nestedOperations: Set<NestedOperation>;
    readonly aggregate: boolean;
    readonly isNullable: boolean;
    readonly description?: string;
    readonly isList: boolean;
    readonly annotations: Partial<Annotations>;
    readonly args: Argument[];
    readonly relationshipImplementations: RelationshipAdapter[];
    readonly firstDeclaredInTypeName: string | undefined;
    private _singular;
    private _plural;
    private _operations;
    constructor(relationshipDeclaration: RelationshipDeclaration, sourceAdapter?: EntityAdapter);
    get operations(): RelationshipDeclarationOperations;
    get singular(): string;
    get plural(): string;
    get target(): EntityAdapter;
    get nonGeneratedProperties(): AttributeAdapter[];
    get hasNonNullNonGeneratedProperties(): boolean;
    get hasAnyProperties(): boolean;
    get hasCreateInputFields(): boolean;
    get hasUpdateInputFields(): boolean;
    get hasNonNullCreateInputFields(): boolean;
    isReadable(): boolean;
    isFilterableByValue(): boolean;
    isFilterableByAggregate(): boolean;
    isCreatable(): boolean;
    isUpdatable(): boolean;
    findRelationshipImplementation(relationshipName: string): RelationshipAdapter | undefined;
    shouldGenerateFieldInputType(): boolean;
    shouldGenerateUpdateFieldInputType(ifUnionRelationshipTargetEntity?: ConcreteEntityAdapter): boolean;
}
//# sourceMappingURL=RelationshipDeclarationAdapter.d.ts.map