Wrapper.d.ts 708 B

1234567891011121314151617
  1. import { Node } from './Node.js';
  2. import { WrapperFactory } from './WrapperFactory.js';
  3. export interface Wrapper<N extends Node, W extends Wrapper<N, W>> {
  4. node: N;
  5. readonly kind: string;
  6. wrap(node: N, ...args: any[]): W;
  7. }
  8. export interface WrapperClass<N extends Node, W extends Wrapper<N, W>> {
  9. new (factory: WrapperFactory<N, W, WrapperClass<N, W>>, node: N, ...args: any[]): W;
  10. }
  11. export declare class AbstractWrapper<N extends Node, W extends Wrapper<N, W>> implements Wrapper<N, W> {
  12. node: N;
  13. protected factory: WrapperFactory<N, W, WrapperClass<N, W>>;
  14. get kind(): string;
  15. constructor(factory: WrapperFactory<N, W, WrapperClass<N, W>>, node: N);
  16. wrap(node: N): W;
  17. }