/**
 * Information for resources that represent many-to-many relationships.
 * Used as part of {@link ResourceMeta} to define connection information between two entities.
 * Many-to-many relationships can be implemented either as direct relationships
 * between resources Resource + Resource, for example StudentCourse, or through connector resources
 * Resource + Connector + Resource, for example StudentToCourse.
 *
 * @example
 * ```ts
    type Course = {
        id: string;
        title: string;
    };

    / Example of a many-to-many resource declaration
    export class StudentCourse {
        id!: string;
        workspaceId!: string;

        studentId!: string; / manyToManyFirstPropertyName
        courseId!: string; / manyToManySecondPropertyName

        student?: Student; / firstExpandPropertyName
        course?: Course; / secondExpandPropertyName
    }
 * ```
 */
export interface ManyToManyInfo {
    /**
     * The name of the first related resource.
     */
    firstResourceName: string;
    /**
     * The name of the many-to-many resource that connects the two entities.
     */
    manyToManyResourceName: string;
    /**
     * The property name in the many-to-many resource that contains the id of the first resource.
     * This is the property name where the first resource's id will be stored.
     */
    manyToManyFirstPropertyName: string;
    /**
     * The property name in the many-to-many resource that contains the id of the second resource.
     * This is the property name where the second resource's id will be stored.
     */
    manyToManySecondPropertyName: string;
    /**
     * The name of the second related resource.
     */
    secondResourceName: string;
    /**
     * The property name in the many-to-many resource where the expanded first resource object
     * will be placed when using expand/select operations.
     */
    firstExpandPropertyName: string;
    /**
     * The property name in the many-to-many resource where the expanded second resource object
     * will be placed when using expand/select operations.
     */
    secondExpandPropertyName: string;
    /**
     * Indicates whether this resource is a symmetrical many-to-many relationship
     * where both connected resources are of the same type (e.g., StudentToStudent).
     * When true, it means the same resource type appears on both sides of the relationship.
     */
    isMirrorManyToManyResource: boolean;
}
/** @internal */
export declare function createManyToManyInfo(): ManyToManyInfo;
