import * as Blessed from 'blessed' export = BlessedContrib declare namespace BlessedContrib { export type Optionals = { [P in keyof K]?: T[K] } 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: Blessed.Widgets.Screen border?: Blessed.Widgets.Border hideBorder?: boolean } 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 barBgColor?: string barFgColor?: string } export class BarElement extends CanvasElement implements IHasOptions { constructor(opts: BarOptions); setData(data: BarData): void; options: BarOptions; } export interface LineData { title?: string x?: string[] y?: number[] style?: { line?: string text?: string baseline?: string } } 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): void; } 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(): void; setData(data: D): void; setData(titles: string[], data: D): void; canvasSize: { width: number, height: number } } 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): void; setStack(stack: Array<{ percent: number, stroke: string }>): void; setData(percent: number[]): void; setData(percent: number): void; } 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(): void; decreaseWidth(): void; increaseInterval(): void; decreaseInterval(): void; increaseStroke(): void; decreaseStroke(): void; setOptions(options: any): void; setDisplay(display: any): void; } export interface LogOptions extends ListOptions { border: Blessed.Widgets.Border bufferLength?: number logLines?: string[] interactive?: boolean } export class LogElement extends ListElement implements IHasOptions { constructor(opts: LogOptions); options: LogOptions; log(str: string): boolean; emit(str:any): boolean; } 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[]): void; } export interface MarkdownOptions extends CanvasOptions { /** * Markdown text to render. */ markdown?: string; markdownStyle?: any; } export class MarkdownElement extends CanvasElement implements IHasOptions { constructor(opts: MarkdownOptions) options: MarkdownOptions; setOptions(options: any): void; setMarkdown(markdown: string): void; } 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 { parent?: any bold?: string columnSpacing?: number columnWidth?: number[] rows?: ListOptions selectedFg?: string selectedBg?: string label?: string fg?: string bg?: string width?: string height?: string border?: object interactive?: string } export class TableElement extends CanvasElement implements IHasOptions { constructor(opts: TableOptions); options: TableOptions; } export interface TreeNode { name?: string, children?: TreeChildren | ((node: TreeNode) => TreeChildren | Promise), childrenContent?: TreeChildren, extended?: boolean, parent?: TreeNode, [custom: string]: any } export type TreeChildren = Record 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: Blessed.Widgets.ListElement nodeLines?: string[] lineNbr?: number data: any options: TreeOptions; setData(data: TreeNode): void } } 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 }