import { Node, NodeConfig } from './Node.js'; import { GetSet, IRect } from './types.js'; import { Shape } from './Shape.js'; import { HitCanvas, SceneCanvas } from './Canvas.js'; import { SceneContext } from './Context.js'; export type ClipFuncOutput = void | [Path2D | CanvasFillRule] | [Path2D, CanvasFillRule]; export interface ContainerConfig extends NodeConfig { clearBeforeDraw?: boolean; clipFunc?: (ctx: SceneContext) => ClipFuncOutput; clipX?: number; clipY?: number; clipWidth?: number; clipHeight?: number; } export declare abstract class Container extends Node { children: Array; getChildren(filterFunc?: (item: Node) => boolean): ChildType[]; hasChildren(): boolean; removeChildren(): this; destroyChildren(): this; abstract _validateAdd(node: Node): void; add(...children: ChildType[]): this; destroy(): this; find(selector: any): Array; findOne(selector: string | Function): ChildNode | undefined; _generalFind(selector: string | Function, findOne: boolean): ChildNode[]; private _descendants; toObject(): { attrs: any; className: string; children?: any[] | undefined; }; isAncestorOf(node: Node): boolean; clone(obj?: any): this; getAllIntersections(pos: any): Shape[]; _clearSelfAndDescendantCache(attr?: string): void; _setChildrenIndices(): void; drawScene(can?: SceneCanvas, top?: Node, bufferCanvas?: SceneCanvas): this; drawHit(can?: HitCanvas, top?: Node): this; _drawChildren(drawMethod: any, canvas: any, top: any, bufferCanvas?: any): void; getClientRect(config?: { skipTransform?: boolean; skipShadow?: boolean; skipStroke?: boolean; relativeTo?: Container; }): IRect; clip: GetSet; clipX: GetSet; clipY: GetSet; clipWidth: GetSet; clipHeight: GetSet; clipFunc: GetSet<(ctx: CanvasRenderingContext2D, shape: Container) => ClipFuncOutput, this>; }