import * as Blessed from 'blessed' export = BlessedContrib declare namespace BlessedContrib { export type Optionals = { [P in keyof K]?: T[P] } export type Picker = { [P in K]: T[P]; }; export module Widgets { import IHasOptions = Blessed.Widgets.IHasOptions; import BoxOptions = Blessed.Widgets.BoxOptions; import ListOptions = Blessed.Widgets.ListOptions; import Types = Blessed.Widgets.Types; import ListElementStyle = Blessed.Widgets.ListElementStyle; import BoxElement = Blessed.Widgets.BoxElement; import ListElement = Blessed.Widgets.ListElement; export interface GridOptions { top?: Types.TTopLeft; left?: Types.TTopLeft; right?: Types.TPosition; bottom?: Types.TPosition; rows?: number cols?: number screen: BlessedWidgets.Screen border?: Border hideBorder?: boolean } export interface Border extends Blessed.Widgets.Border { fg?: string | number bg?: string | number } export type WidgetOptions = BoxOptions | BarOptions | StackedBarOptions | CanvasOptions | TreeOptions | TableOptions | PictureOptions | MarkdownOptions | MapOptions | SparklineOptions | LogOptions | LcdOptions | GaugeOptions | GaugeListOptions | DonutOptions export type WidgetElements = BoxElement | BarElement | LineElement | StackedBarElement | CanvasElement | TreeElement | TableElement | PictureElement | MarkdownElement | MapElement | SparklineElement | LogElement | LcdElement | GaugeElement | GaugeListElement | DonutElement export class GridElement extends BoxElement implements IHasOptions { constructor(opts: GridOptions); set S, S extends TreeElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: TreeOptions): TreeElement set S, S extends TableElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: TableOptions): TableElement set S, S extends PictureElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: PictureOptions): PictureElement set S, S extends MarkdownElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: MarkdownOptions): MarkdownElement set S, S extends MapElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: MapOptions): MapElement set S, S extends LogElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: LogOptions): LogElement set S, S extends LcdElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: LcdOptions): LcdElement set S, S extends GaugeElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: GaugeOptions): GaugeElement set S, S extends GaugeListElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: GaugeListOptions): GaugeListElement set S, S extends DonutElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: DonutOptions): DonutElement set S, S extends BarElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: BarOptions): BarElement set S, S extends LineElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: LineOptions): LineElement set S, S extends StackedBarElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: StackedBarOptions): StackedBarElement set S, S extends CanvasElement>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: CanvasOptions): CanvasElement // set S, S extends WidgetElements>(row: number, col: number, rowSpan: number, colSpan: number, obj: T, opt: WidgetOptions): WidgetElements set(...args:any[]): any // set(row: number, col: number, rowSpan: number, colSpan: number, // obj: T, opts?: P ): P // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof bar // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof line // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof stackedBar // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof canvas // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof tree // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof table // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof picture // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof markdown // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof map // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof log // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof lcd // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof gauge // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof gaugeList // set(row: number, col: number, rowSpan: number, colSpan: number, obj: A, opts?: O): T //typeof donut options: GridOptions; } export interface BarData { titles?: string[], data?: number[] } export interface BarOptions extends CanvasOptions { barWidth?: number barSpacing?: number xOffset?: number maxHeight?: number showText?: boolean } export class BarElement extends CanvasElement implements IHasOptions { constructor(opts: BarOptions); setData(data: BarData) options: BarOptions; } export interface LineData { title?: string x?: string[] y?: number[] style?: Picker } export interface LineOptions extends CanvasOptions { showNthLabel?: boolean style?: { line?: string text?: string baseline?: string } xLabelPadding?: number xPadding?: number numYLabels?: number legend?: { width: number } wholeNumbersOnly?: boolean minY?: number maxY?: number label?: string } export class LineElement extends CanvasElement implements IHasOptions { constructor(opts: LineOptions); options: LineOptions; } export interface StackedBarData { barCategory?: string[] stackedCategory?: string[] data?: Array } export interface StackedBarOptions extends CanvasOptions { barWidth?: number barSpacing?: number xOffset?: number maxValue?: number barBgColor?: string showLegend?: boolean legend?: any showText?: boolean } export class StackedBarElement extends CanvasElement implements IHasOptions { constructor(opts: StackedBarOptions) options: StackedBarOptions; addLegend(bars: any, x: number) } export interface CanvasOptions extends BoxOptions { canvasSize?: { width?: number, height?: number } data?: D } export class CanvasElement extends BoxElement implements IHasOptions { constructor(opts: CanvasOptions) options: CanvasOptions; calcSize() setData(data: D) } export interface DonutData { percent?: string, label?: string, color?: string } export interface DonutOptions extends CanvasOptions { stroke?: string fill?: string label?: string radius?: number arcWidth?: number spacing?: number remainColor?: string yPadding?: number } export class DonutElement extends CanvasElement implements IHasOptions { constructor(opts: DonutOptions) options: DonutOptions; } export interface GaugeListOptions extends CanvasOptions { } export class GaugeListElement extends CanvasElement implements IHasOptions { constructor(opts: GaugeListOptions) options: GaugeListOptions; } export interface GaugeOptions extends CanvasOptions { percent: number[] stroke?: string fill?: string label?: string stack?: any showLabel?: boolean } export class GaugeElement extends CanvasElement implements IHasOptions { constructor(opts: GaugeOptions) options: GaugeOptions; setPercent(number: number) setStack(stack: Array<{ percent: number, stroke: string }>) setData(percent: number[]) setData(percent: number) } export interface LcdOptions extends CanvasOptions { segmentWidth?: number// how wide are the segments in % so 50% = 0.5 segmentInterval?: number// spacing between the segments in % so 50% = 0.550% = 0.5 strokeWidth?: number// spacing between the segments in % so 50% = 0.5 elements?: number// how many elements in the display. or how many characters can be displayed. display?: number// what should be displayed before first call to setDisplay elementSpacing?: number// spacing between each element elementPadding?: number// how far away from the edges to put the elements color?: 'white' // color for the segments label?: 'Storage Remaining' } export class LcdElement extends CanvasElement implements IHasOptions { constructor(opts: LcdOptions) options: LcdOptions; increaseWidth() decreaseWidth() increaseInterval() decreaseInterval() increaseStroke() decreaseStroke() setOptions(options: any) setDisplay(display) } export interface LogOptions extends ListOptions { border: Border bufferLength?: number logLines?: string[] interactive?: boolean } export class LogElement extends ListElement implements IHasOptions { constructor(opts: LogOptions); options: LogOptions; log(str: string) emit(str:any) } export interface MapOptions extends CanvasOptions { } export class MapElement extends CanvasElement implements IHasOptions { constructor(opts: MapOptions) options: MapOptions; } export interface SparklineOptions extends CanvasOptions { } export class SparklineElement extends CanvasElement implements IHasOptions { constructor(opts: CanvasOptions); options: SparklineOptions; setData(...str: any[]) } export interface MarkdownOptions extends CanvasOptions { } export class MarkdownElement extends CanvasElement implements IHasOptions { constructor(opts: MarkdownOptions) options: MarkdownOptions; } export interface PictureOptions extends CanvasOptions { } export class PictureElement extends CanvasElement implements IHasOptions { constructor(opts: PictureOptions) options: PictureOptions; } export interface TableData { headers?: string[] data?: Array } export interface TableOptions extends CanvasOptions { bold?: boolean columnSpacing?: number columnWidth?: number[] rows?: ListOptions selectedFg?: string selectedBg?: string fg?: string bg?: string interactive?: string } export class TableElement extends CanvasElement implements IHasOptions { constructor(opts: TableOptions); options: TableOptions; } export interface TreeOptions extends BoxOptions { data?: any extended?: boolean keys?: string[] template?: { extend?: string retract?: string lines?: boolean } } export class TreeElement extends BoxElement implements IHasOptions { constructor(opts: TreeOptions) rows: BlessedWidgets.ListElement nodeLines?: string[] lineNbr?: number data?: any options: TreeOptions; } } export module widget { export class Grid extends Widgets.GridElement {} export class Bar extends Widgets.BarElement {} export class Line extends Widgets.LineElement {} export class StackedBar extends Widgets.StackedBarElement {} export class Canvas extends Widgets.CanvasElement {} export class Tree extends Widgets.TreeElement {} export class Table extends Widgets.TableElement {} export class Picture extends Widgets.PictureElement {} export class Markdown extends Widgets.MarkdownElement {} export class Map extends Widgets.MapElement {} export class Log extends Widgets.LogElement {} export class Lcd extends Widgets.LcdElement {} export class Gauge extends Widgets.GaugeElement {} export class GaugeList extends Widgets.GaugeListElement {} export class Donut extends Widgets.DonutElement {} export class Sparkline extends Widgets.SparklineElement {} } export class grid extends Widgets.GridElement {} export function line(options?: Widgets.LineOptions): Widgets.LineElement export function bar(options?: Widgets.BarOptions): Widgets.BarElement export function stackedBar(options?: Widgets.StackedBarOptions): Widgets.StackedBarElement export function canvas(options?: Widgets.CanvasOptions): Widgets.CanvasElement export function tree(options?: Widgets.TreeOptions): Widgets.TreeElement export function table(options?: Widgets.TableOptions): Widgets.TableElement export function picture(options?: Widgets.PictureOptions): Widgets.PictureElement export function markdown(options?: Widgets.MarkdownOptions): Widgets.MarkdownElement export function sparkline(options?: Widgets.SparklineOptions): Widgets.SparklineElement export function map(options?: Widgets.MapOptions): Widgets.MapElement export function log(options?: Widgets.LogOptions): Widgets.LogElement export function lcd(options?: Widgets.LcdOptions): Widgets.LcdElement export function gauge(options?: Widgets.GaugeOptions): Widgets.GaugeElement export function gaugeList(options?: Widgets.GaugeListOptions): Widgets.GaugeListElement export function donut(options?: Widgets.DonutOptions): Widgets.DonutElement }