import { NodeDefinition } from './NodeDefinition'; import { Node } from './core'; export type GroupBehaviorOptions = { type: "group"; /** Automatically add/remove nodes from group based on their position */ autoGroup?: boolean; }; export type AppearanceBehaviorOptions = { type: "appearance"; }; export type NodeBehaviorOptions = { type: "node"; }; type KeyOf = T extends { type: infer U; } ? U : never; export type ObjectBehaviorOptions = GroupBehaviorOptions | AppearanceBehaviorOptions | NodeBehaviorOptions; export type NodeBehaviorType = KeyOf; export type NodeBehavior = NodeBehaviorType | ObjectBehaviorOptions; /** * Extracts the behavior type from a behavior entry * @param behavior - Behavior entry (string or object) * @returns The behavior type string */ export declare function getBehaviorType(behavior: NodeBehavior): NodeBehaviorType; /** * Resolve behaviors for a node definition. * Returns the behaviors array or defaults to ["node"] if not specified. */ export declare function getBehaviors(def?: NodeDefinition | null): NodeBehavior[]; /** * Check if a node definition has the "group" behavior */ export declare function hasGroupBehavior(def?: NodeDefinition | null): boolean; /** * Check if a node definition has the "appearance" behavior */ export declare function hasAppearanceBehavior(def?: NodeDefinition | null): boolean; /** * Get group behavior options from a node definition */ export declare function getGroupBehaviorOptions(def?: NodeDefinition | null): GroupBehaviorOptions | null; /** * Check if a behavior array includes a specific behavior type */ export declare function behaviorArrayIncludes(behaviors: NodeBehavior[], type: NodeBehaviorType): boolean; /** * Check if a node has group behavior based on its definition */ export declare function nodeHasGroupBehavior(node: Node, nodeDefinitions: NodeDefinition[]): boolean; export {};