declare let light: boolean;

type StringDict = { [key: string]: string }

type _winInitConf = {
  title: string,
  content: string,
  id: string,
  width?: number, // = 600
  height?: number, // = 400
  minWidth?: number, // = 200
  minHeight?: number, // = 200
  typeable?: boolean, // true
  posX?: number, // = automatically centered
  posY?: number, // = automatically centered
  onDestroy?: () => void
}

type _winConf = {
  element: HTMLElement,
  height: number,
  width: number,
  minHeight: number,
  minWidth: number,
  posX: number,
  posY: number,
  fullscreen: boolean,
  zIndex: number,
  vars: {
    [key: string]: any
  }
}

type _files = {
  [key: string]: _file
}

type _file = {
  type: "directory",
  name: string,
  files: _files
} | {
  type: "file",
  name: string,
  content: string
}

type _tShWinInfo = {
  PWD: string,
  ps1Override?: string
}