/**
 * The TreeNode model for constructing a node within the tree.
 */
export interface TreeNode {
    id: string;
    children?: TreeNode[];
    label: string;
    hidden?: boolean;
    readonly?: boolean;
    selected?: boolean;
    expandable?: boolean;
    expanded?: boolean;
}
/**
 * List of possible options for tree menu selection.
 * The order within the enum is based on restrictiveness.
 *
 * - **LEAF** - only allows a single node to be selected, and forbids the selection of any parent node.
 * - **SINGLE** - only allows a single node to be selected, but does allow the selection of the parent node.
 * - **MULTI** - allows selecting multiple nodes using keyboard controls. (control and shift)
 */
export declare enum TreeMenuSelection {
    LEAF = "leaf",
    SINGLE = "single",
    MULTI = "multi"
}
/**
 * List of sorting options in the header of the tree menu.
 * By default, we include alphabetically sorting, but can be expanded by class inheritors.
 */
export declare enum TreeMenuSorting {
    A_TO_Z = "a_to_z",
    Z_TO_A = "z_to_a"
}
/**
 * Model for the SELECT event that {@link OrTreeMenu} can dispatch.
 * Once a node is selected, a list of all the selected nodes will be shared with the consumer elements.
 */
export declare class OrTreeSelectEvent extends CustomEvent<TreeNode[]> {
    static readonly NAME = "or-tree-select";
    constructor(nodes: TreeNode[]);
}
/**
 * Payload object of the {@link OrTreeDragEvent}.
 */
export interface OrTreeGroupEventDetail {
    nodes: TreeNode[];
    groupNode?: TreeNode;
    newNodes: TreeNode[];
}
/**
 * Model for the DRAG event that {@link OrTreeMenu} can dispatch.
 * Once a node is dragged into (or outside) a group, we send details to consumer elements.
 */
export declare class OrTreeDragEvent extends CustomEvent<OrTreeGroupEventDetail> {
    static readonly NAME = "or-tree-drag";
    constructor(nodes: TreeNode[], groupNode?: TreeNode, newNodes?: TreeNode[]);
}
//# sourceMappingURL=model.d.ts.map