import VNode from 'core/vdom/vnode'
import { Component } from './component'

export type ComponentWithCacheContext = {
  type: 'ComponentWithCache'
  bufferIndex: number
  buffer: Array<string>
  key: string
}

export type ElementContext = {
  type: 'Element'
  children: Array<VNode>
  rendered: number
  endTag: string
  total: number
}

export type ComponentContext = {
  type: 'Component'
  prevActive: Component
}

export type RenderState =
  | ComponentContext
  | ComponentWithCacheContext
  | ElementContext