import { Node, NodeClass } from './Node.js'; import { WrapperFactory } from './WrapperFactory.js'; export interface Wrapper, C extends NodeClass, W extends Wrapper> { readonly kind: string; node: N; childNodes: W[]; wrap(node: N, ...args: any[]): T; walkTree(func: (node: W, data?: any) => void, data?: any): void; } export interface WrapperClass, C extends NodeClass, W extends Wrapper> { new (factory: WrapperFactory>, node: N, ...args: any[]): W; } export declare class AbstractWrapper, C extends NodeClass, W extends Wrapper> implements Wrapper { node: N; childNodes: W[]; protected factory: WrapperFactory>; get kind(): string; constructor(factory: WrapperFactory>, node: N); wrap(node: N): T; walkTree(func: (node: W, data?: any) => void, data?: any): any; }