import EventEmitter from 'eventemitter3'; import type { Container } from './container'; import type { ContainerEdit } from './container-edit'; import { Emotion } from '@emotion/css/create-instance'; export type RenderContext = { root?: HTMLDivElement; shadowRoot?: ShadowRoot; container?: Container | ContainerEdit; event?: EventEmitter; code?: { render: Render; unmount?: Unmount; [key: string]: (...args: any[]) => any; }; css?: Emotion['css']; } & T; export type RenderCode = { render: Render; unmount?: Unmount; [key: string]: any; }; type Render = (ctx: RenderContext) => Promise; type Unmount = (ctx?: RenderContext) => Promise;