import { type RelationType } from "../../../fd-toolbox/enums/enums";
import { ManyToManyInfo } from "../relations/many-to-many-info";
/**
 * @interface Relation describes relations between resources.
 * Used in {@link PropertyMeta.relation}
 */
export interface Relation {
    type: RelationType;
    relatedResourceRequiresRelation: boolean;
    relatedResourceName: string;
    pluralName: string;
    relatedPropertyName: string;
    /**
     * Controls, if some UI components such as {@link ResourceList}
     * during the query to backend to get resources will request to expand related object
     * and will get from backend its related resource through {@link Relation.descriptionPropertyName}.
     *
     * For example, for Person resource, if its related resource PhoneBrand has decorator
     * @{@link descriptionProperty}(phoneBrandProps.company) then the PhoneBrand resource
     * will be displayed as PhoneBrand.company.
     */
    expandForDescription: boolean;
    expandPropertyName: string;
    descriptionPropertyNames: string[];
    /**
     * Name of property of related resource that represents description for this resource.
     */
    descriptionPropertyName: string;
    manyToManyInfo?: ManyToManyInfo;
    isExpandProperty: boolean;
}
/** @internal */
export declare function createRelationConstructor(relatedPropertyName?: string, relatedResourceName?: string, type?: RelationType): Relation;
