import { HubEntityType } from "../core/types/HubEntityType";
import { IQuery } from "../search/types/IHubCatalog";
/**
 * associations are hierarchical in nature e.g.
 * there is always a parent and a child in the
 * relationship. This interface allows us to
 * define these hierarchies on an entity-by-entity
 * basis
 */
export interface IHubAssociationHierarchy {
    children: HubEntityType[];
    parents: HubEntityType[];
}
/**
 * association rules stored on the parent entity
 * that define what is "included" by the parent
 *
 * For now, the query will define an association
 * group, and "included" simply means it has
 * been shared with the association group. In
 * the future, the query may contain additional
 * conditions
 */
export interface IHubAssociationRules {
    /** schema version for migration purposes */
    schemaVersion: number;
    /** query that defines what's "included" by a parent */
    query: IQuery;
}
/**
 * associations involve a 2-way agreement between
 * parent and child. This interface allows us to
 * keep track of an entity's association stats with
 * another entity
 */
export interface IAssociationStats {
    /** number of full associations */
    associated: number;
    /** number of outgoing association requests */
    pending: number;
    /** number of incoming association requests */
    requesting: number;
    /** number of entity's the child references = associated + pending */
    referenced?: number;
    /** number of entities included by the parent = associated + pending */
    included?: number;
}
/**
 * The model for associations is built around platform
 * capabilities. Platform imposes a limit of 128 on the
 * number of typeKeywords that can be set on an item.
 * Since "child" entities form their half of an association
 * connection via typeKeywords, we must limit the number
 * of associations a child can request or accept to far
 * fewer than 128.
 *
 * For now, we are setting this limit to 50
 */
export declare const ASSOCIATION_REFERENCE_LIMIT = 50;
