import { LayoutNode, LayoutNodeOptions } from './LayoutNode';
/**
 * 布局容器配置
 */
export interface LayoutGroupOptions extends LayoutNodeOptions {
}
/**
 * 布局容器基类
 *
 * 提供子节点管理能力，子节点必须是 LayoutNode 的子类
 *
 * @template T 子节点类型，必须是 LayoutNode 的子类
 */
export declare abstract class LayoutGroup<T extends LayoutNode = LayoutNode> extends LayoutNode {
    /** 子节点列表 */
    private children;
    _padding?: [number, number, number, number];
    constructor(options: LayoutGroupOptions);
    get padding(): [number, number, number, number];
    get pt(): number;
    get pr(): number;
    get pb(): number;
    get pl(): number;
    /**
     * 添加子节点
     * @param child 要添加的子节点
     */
    addChild(child: T): void;
    /**
     * 在指定位置插入子节点
     * @param index 插入位置
     * @param child 要插入的子节点
     */
    insertChild(index: number, child: T): void;
    /**
     * 批量添加子节点
     * @param children 要添加的子节点数组
     */
    addChildren(children: T[]): void;
    /**
     * 在指定位置批量插入子节点
     * @param index 插入位置
     * @param children 要插入的子节点数组
     */
    insertChildren(index: number, children: T[]): void;
    /**
     * 移除子节点
     * @param child 要移除的子节点
     * @returns 是否成功移除
     */
    removeChild(child: T): boolean;
    /**
     * 根据索引移除子节点
     * @param index 子节点索引
     * @returns 被移除的子节点，如果索引无效则返回 undefined
     */
    removeChildAt(index: number): T | undefined;
    /**
     * 获取所有子节点（只读）
     */
    getChildren(): readonly T[];
    /**
     * 获取指定索引的子节点
     * @param index 子节点索引
     */
    getChildAt(index: number): T | undefined;
    /**
     * 获取子节点数量
     */
    getChildCount(): number;
    /**
     * 获取第一个子节点
     */
    getFirstChild(): T | null;
    /**
     * 获取最后一个子节点
     */
    getLastChild(): T | null;
    /**
     * 清空所有子节点
     */
    clearChildren(): void;
    /**
     * 查找子节点索引
     * @param child 要查找的子节点
     * @returns 子节点索引，如果不存在则返回 -1
     */
    indexOfChild(child: T): number;
    /**
     * 检查是否包含子节点
     * @param child 要检查的子节点
     */
    hasChild(child: T): boolean;
    /**
     * 遍历所有子节点
     * @param callback 遍历回调函数
     */
    forEachChild(callback: (child: T, index: number) => void): void;
    /**
     * 查找满足条件的子节点
     * @param predicate 查找条件
     * @returns 第一个满足条件的子节点，如果没有则返回 undefined
     */
    findChild(predicate: (child: T) => boolean): T | undefined;
    /**
     * 过滤子节点
     * @param predicate 过滤条件
     * @returns 满足条件的子节点数组
     */
    filterChildren(predicate: (child: T) => boolean): T[];
}
