declare module c3 { export class c3 { static verison: number | string; static select(parent: c3.Selection, query?: string, before?: string, children_only?: boolean): c3.Selection; } ////////////////////////////////////////////////////////////////////////////////////// // D3 ////////////////////////////////////////////////////////////////////////////////////// // Make a base class for any D3 scale type type d3_Scale = d3.scale.Identity | d3.scale.Linear | d3.scale.Pow | d3.scale.Log | d3.scale.Quantize | d3.scale.Quantile | d3.scale.Threshold | d3.scale.Ordinal | d3.time.Scale; ////////////////////////////////////////////////////////////////////////////////////// // Utility ////////////////////////////////////////////////////////////////////////////////////// module util { function extend(dest: D, src: S): S & D; function defaults(dest: D, src: S): S & D; function spin(ms: number): void; //function clone(obj: Object): Object; //function replicate(obj: Object): Object; } module array { function remove_item(arr: T[], item: T): void; function sort_up(arr: T[], accessor?: { (d: T): number }): T[]; function sort_down(arr: T[], accessor?: { (d: T): number }): T[]; //function last(arr: T[]): T; //function front(arr: T[]): T; //function back(arr: T[]): T[]; //function merge(first: Array, second: Array): Array; //function unique(arr: Array): Array; } module http { function deparam(string: string, key?: string): string; function deparam_query(key?: string): string; } module html { function escape(string: string): string; } ////////////////////////////////////////////////////////////////////////////////////// // c3 Selection ////////////////////////////////////////////////////////////////////////////////////// class Selection { constructor(parent?: d3.Selection, query?: string, before?: string, children_only?: boolean); all: d3.Selection; new: d3.Selection; old: d3.Selection; opt: c3.Selection.Options; opt_array: c3.Selection.Options[]; select(query: string, before?: string, children_only?: boolean): Selection; inherit(query: string, create?: boolean, prepend?: boolean): this; singleton(datum?: D): this; bind(data: D[], key?: { (d: D): number | string }): this; options(opt: c3.Selection.Options, opt_accessor?: { (d: D, i: number, j?: number): c3.Selection.Options }): this; update(): this; position(attrs: { [key: string]: string | number | { (d: D, i: number, j?: number): string | number } }): this; style(style_new?: boolean): this; node(): HTMLElement; } module Selection { interface Options { class?: string | { (d: D, i: number, j?: number): string }; classes?: { [key: string]: boolean | { (d: D, i: number, j?: number): boolean } }; styles?: { [key: string]: string | number | d3.Color | { (d: D, i: number, j?: number): string | number | d3.Color } }; events?: { [key: string]: (d: D, i: number, j?: number) => any }; text?: string | number | { (d: D, i: number, j?: number): string | number }; html?: string | number | { (d: D, i: number, j?: number): string }; title?: string | number | { (d: D, i: number, j?: number): string | number }; animate?: boolean; duration?: number; animate_old?: boolean; } } ////////////////////////////////////////////////////////////////////////////////////// // Dispatch ////////////////////////////////////////////////////////////////////////////////////// class Dispatch { on(event: string, handler: (...args: any[]) => void): void; trigger(event: string, ...args): void; } ////////////////////////////////////////////////////////////////////////////////////// // Base ////////////////////////////////////////////////////////////////////////////////////// interface BaseOptions { anchor?: string | HTMLElement; height?: number | string; width?: number | string; anchor_styles?: { [key: string]: string | number }; handlers?: { [key: string]: Function }; } interface Base extends BaseOptions { } class Base extends Dispatch implements BaseOptions { type: string; rendered: boolean; constructor(opt?: BaseOptions); render(opt?: BaseOptions): this; resize(width?: number | string, height?: number | string): this; redraw(origin?: string): this; restyle(): this; } ////////////////////////////////////////////////////////////////////////////////////// // Table ////////////////////////////////////////////////////////////////////////////////////// interface TableOptions extends BaseOptions { data?: D[]; key?: (d: D, i: number, j: number) => number|string; filter?: (d: D, i: number, j: number) => boolean; columns?: c3.Table.Column[]; selectable?: boolean | string; sortable?: boolean; sort_column?: c3.Table.Column | string; limit_rows?: number; pagination?: boolean; page?: number; max_pages_in_paginator?: number; searchable?: boolean | { (d: D, i: number): string }; searchable_if_not_paginated?: boolean; table_options?: c3.Selection.Options; table_header_options?: c3.Selection.Options; header_options?: c3.Selection.Options>; footer_options?: c3.Selection.Options; table_body_options?: c3.Selection.Options; row_options?: c3.Selection.Options; cell_options?: c3.Selection.Options; vis_options?: c3.Selection.Options; } interface Table extends TableOptions { } class Table extends Base implements TableOptions { table: c3.Selection; header: c3.Selection; headers: c3.Selection>; body: c3.Selection; rows: c3.Selection; cells: c3.Selection; selections: D[]; constructor(opt?: TableOptions); render(opt?: TableOptions): this; static set_select(set: D[], item: D, selectable?: boolean | string): D[]; sort(column: c3.Table.Column, ascending: boolean): void; highlight(selections?: D[]): void; select(selections?: D[]): void; search(value: string): [D, number]; find(value: string): [D, number]; on(event: string, handler: (...args: any[]) => void): void; on(event: 'select', handler: (selection: D[]) => void): void; on(event: 'found', handler: (search: string, datum: D, i: number) => void): void; } module Table { interface Column { header?: c3.Selection.Options; cells?: c3.Selection.Options; sortable?: boolean; value?: { (d: D): number }; sort?: { (d: D): number }; sort_ascending?: boolean; vis?: string; total_value?: number | { (): number }; vis_options?: c3.Selection.Options; } } ////////////////////////////////////////////////////////////////////////////////////// // Legend ////////////////////////////////////////////////////////////////////////////////////// interface LegendOptions extends BaseOptions { data?: D[]; key?: (d: D, i: number) => number|string; filter?: (d: D, i: number) => boolean; nest?: boolean | { (d:D): DD[] }; nest_key?: (d: DD, i: number, j: number) => number|string; hoverable?: boolean; list_options?: c3.Selection.Options; list_item_options?: c3.Selection.Options; item_options?: c3.Selection.Options; item_option?: (d: D) => c3.Selection.Options; nested_list_item_options?: c3.Selection.Options
; nested_item_options?: c3.Selection.Options
; bullet_options?: c3.Selection.Options | boolean; nested_bullet_options?: c3.Selection.Options
| boolean; } interface Legend extends LegendOptions { } class Legend extends Base implements LegendOptions { constructor(opt?: LegendOptions); render(opt?: LegendOptions): this; } module Legend { interface PlotLegendOptions extends LegendOptions, c3.Plot.Layer.Stackable.Stack> { plot?: c3.Plot; invert_layers?: boolean; html_names?: boolean; hover_fade?: number; duration?: number; } interface PlotLegend extends PlotLegendOptions { } class PlotLegend extends Legend, c3.Plot.Layer.Stackable.Stack> implements PlotLegendOptions { constructor(opt?: PlotLegendOptions); render(opt?: PlotLegendOptions): this; on(event: string, handler: (...args: any[]) => void): void; on(event: 'layer_mouseenter', handler: (layer:c3.Plot.Layer, i: number) => void): void; on(event: 'layer_mouseleave', handler: (layer: c3.Plot.Layer, i: number) => void): void; } } ////////////////////////////////////////////////////////////////////////////////////// // Chart ////////////////////////////////////////////////////////////////////////////////////// interface ChartOptions extends BaseOptions { class?: string; options?: c3.Selection.Options; content_options?: c3.Selection.Options; } interface Chart extends ChartOptions { } class Chart extends Base implements ChartOptions { svg: c3.Selection; content: c3.Selection; constructor(opt?: ChartOptions); render(opt?: ChartOptions): this; } ////////////////////////////////////////////////////////////////////////////////////// // Axis ////////////////////////////////////////////////////////////////////////////////////// interface AxisOptions extends ChartOptions { scale?: d3_Scale | boolean; orient?: string; grid?: boolean; label?: string; ticks?: boolean; tick_label?: boolean | { (value): string }; tick_values?: any[]; tick_count?: number; tick_size?: number; path_size?: number; axis_size?: number; } interface Axis extends AxisOptions { } class Axis extends Chart implements AxisOptions { constructor(opt?: AxisOptions); render(opt?: AxisOptions): this; } module Axis { class X extends Axis { } class Y extends Axis { } } ////////////////////////////////////////////////////////////////////////////////////// // Plot ////////////////////////////////////////////////////////////////////////////////////// export interface PlotOptions extends ChartOptions { layers?: c3.Plot.Layer[]; axes?: c3.Axis[]; data?: D[]; h?: d3_Scale; v?: d3_Scale; x?: (d: D, i: number, stack?: number) => any; y?: (d: D, i: number, stack?: number) => any; h_domain?: (number | string)[] | {(): (number | string)[]}; v_domain?: (number | string)[] | {(): (number | string)[]}; h_orient?: string; v_orient?: string; margins?: number | { top?: number; bottom?: number; left?: number; right?: number }; crop_margins?: boolean | string; layer_options?: c3.Selection.Options>; } interface Plot extends PlotOptions { } class Plot extends Chart implements PlotOptions { content: Plot.PlotContent; constructor(opt?: PlotOptions); render(opt?: PlotOptions): this; min_x(): any; max_x(): any; min_y(): any; max_x(): any; } module Plot { interface PlotContent extends c3.Selection { height?: number; width?: number; } interface SelectableOptions extends PlotOptions { selectable?: boolean | string; drag_selections?: boolean; } interface Selectable extends SelectableOptions { } class Selectable extends Plot implements SelectableOptions { constructor(opt?: SelectableOptions); render(opt?: SelectableOptions): this; select(domain: number[] | number[][]): void; on(event: string, handler: (...args: any[]) => void): void; on(event: 'select', handler: (selection: number[] | number[][]) => void): void; on(event: 'selectend', handler: (selection: number[] | number[][]) => void): void; } interface ZoomableOptions extends PlotOptions { zoomable: string; snap_to_all?: number; select_x_value?: boolean; zoom_extent?: number | string; } interface Zoomable extends ZoomableOptions { } class Zoomable extends Plot implements ZoomableOptions { constructor(opt?: ZoomableOptions); render(opt?: ZoomableOptions): this; focus(extent: number[] | number[][]): void; on(event: string, handler: (...args: any[]) => void): void; on(event: 'zoom', handler: (selection: number[] | number[][]) => void): void; on(event: 'zoomend', handler: (selection: number[] | number[][]) => void): void; } ////////////////////////////////////////////////////////////////////////////////////// // Plot Layers ////////////////////////////////////////////////////////////////////////////////////// interface LayerOptions { name?: string | boolean; data?: D[]; class?: string; static_data?: boolean; h?: d3_Scale; v?: d3_Scale; x?: number | { (d: D, i: number, j: number): number }; y?: number | { (d: D, i: number, j: number): number }; h_orient?: string; v_orient?: string; options?: c3.Selection.Options>; handlers?: { [key: string]: Function }; } interface Layer extends LayerOptions { } class Layer implements LayerOptions { type: string; rendered: boolean; chart: c3.Chart; g: d3.Selection; width: number; height: number; constructor(opt?: LayerOptions); redraw(origin?: string): void; restyle(style_new: boolean): void; zoom(): void; min_x(): D; max_x(): D; min_y(): D; max_x(): D; } module Layer { ////////////////////////////////////////////////////////////////////////////////////// // Stackable Layers ////////////////////////////////////////////////////////////////////////////////////// interface StackableOptions extends LayerOptions { stack_options?: Stackable.stack_options; stacks?: Stackable.StackOptions[]; safe?: boolean; } interface Stackable extends StackableOptions { } class Stackable extends Layer implements StackableOptions { groups: c3.Selection>; constructor(opt?: StackableOptions); } module Stackable { interface stack_options extends c3.Selection.Options> { key?: (d: D, i: number, stack?: number) => number | string; name?: (key: number) => string | number; offset?: string | Function; order?: string; } interface StackOptions { key?: string; name?: string | number; y?: (d: D, i: number, stack: number) => any; data?: D[]; options?: c3.Selection.Options> } interface Stack extends StackOptions { } class Stack implements StackOptions { constructor(opt: StackOptions); } } ////////////////////////////////////////////////////////////////////////////////////// // Line / Area Layers ////////////////////////////////////////////////////////////////////////////////////// interface PathOptions extends StackableOptions { path_generator_factory?: () => { (): string }; interpolate?: string; tension?: number; defined?: (d: D, i: number, stack?: number) => boolean; r?: number | { (d: D, i: number, stack?: number): number }; a?: number | { (d: D, i: number, stack?: number): number }; path_options?: c3.Selection.Options>; circle_options?: c3.Selection.Options; label_options?: c3.Selection.Options; } interface Path extends PathOptions { } class Path extends Stackable implements PathOptions { paths: c3.Selection>; circles: c3.Selection; labels: c3.Selection; constructor(opt?: PathOptions); } interface AreaOptions extends PathOptions { baseline?: number | { (d: D, i: number, stack?: number): number }; } interface Area extends AreaOptions { } class Area extends Path implements AreaOptions{ constructor(opt?: AreaOptions); } class Line extends Path { } module Line { ////////////////////////////////////////////////////////////////////////////////////// // Straight Line Layers ////////////////////////////////////////////////////////////////////////////////////// interface StraightOptions extends LayerOptions { key?: (d: D, i: number) => number | string; value?: (d: D, i: number) => any; filter?: (d: D, i: number) => boolean; draggable?: boolean; vector_options?: c3.Selection.Options; line_options?: c3.Selection.Options; grab_line_options?: c3.Selection.Options; label_options?: Straight.label_options; } interface Straight extends StraightOptions { } class Straight extends Layer implements StraightOptions { constructor(opt?: StraightOptions); vectors: c3.Selection; lines: c3.Selection; labels: c3.Selection; on(event: string, handler: (...args: any[]) => void): void; on(event: 'dragstart', handler: (d: D, i: number) => void): void; on(event: 'drag', handler: (value: any, d: D, i: number) => void): void; on(event: 'dragend', handler: (value: any, d: D, i: number) => void): void; } module Straight { interface label_options extends c3.Selection.Options { alignment?: string; dx?: number | string; dy?: number | string; } } class Horizontal extends Straight { } class Vertical extends Straight { } } ////////////////////////////////////////////////////////////////////////////////////// // Bar Layer ////////////////////////////////////////////////////////////////////////////////////// interface BarOptions extends StackableOptions { key?: (d: D, i: number, stack?: number) => number | string; bar_width?: string | number | { (d: D, i: number, stack?: number): string | number }; rect_options?: c3.Selection.Options; } interface Bar extends BarOptions { } class Bar extends Stackable implements BarOptions { constructor(opt?: BarOptions); rects: c3.Selection; } ////////////////////////////////////////////////////////////////////////////////////// // Region Layer ////////////////////////////////////////////////////////////////////////////////////// interface RegionOptions extends LayerOptions { filter?: (d: D, i: number) => boolean; key?: (d: D, i: number) => number | string; x2?: (d: D) => number; y2?: (d: D) => number; draggable?: boolean; resizable?: boolean; region_options?: c3.Selection.Options; rect_options?: c3.Selection.Options; } interface Region extends RegionOptions { } class Region extends Layer implements RegionOptions{ constructor(opt?: RegionOptions); regions: c3.Selection; rects: c3.Selection; } ////////////////////////////////////////////////////////////////////////////////////// // Scatter Plot Layer ////////////////////////////////////////////////////////////////////////////////////// interface ScatterOptions extends LayerOptions { key?: (d: D, i: number) => number | string; value?: number | { (d: D, i: number): number }; r?: number | { (d: D, i: number): number }; a?: number | { (d: D, i: number): number }; safe?: boolean; filter?: (d: D, i: number) => boolean; limit_elements?: number; point_options?: c3.Selection.Options; circle_options?: c3.Selection.Options; label_options?: c3.Selection.Options; } interface Scatter extends ScatterOptions { } class Scatter extends Layer implements ScatterOptions { points: c3.Selection; circles: c3.Selection; labels: c3.Selection; constructor(opt?: ScatterOptions); } ////////////////////////////////////////////////////////////////////////////////////// // Swimlane Layers ////////////////////////////////////////////////////////////////////////////////////// interface SwimlaneOptions extends LayerOptions { hover?: string | number | { (d: D, i: number, swimlane: number): string | number }; lane_options?: c3.Selection.Options; dy?: number; } interface Swimlane extends SwimlaneOptions { } class Swimlane extends Layer implements SwimlaneOptions { lanes: c3.Selection; constructor(opt?: SwimlaneOptions); } module Swimlane { interface SegmentOptions extends SwimlaneOptions { dx: number | { (d: D): number }; key?: (d: D) => number | string; filter?: (d: D, i: number) => boolean; value?: number | { (d: D): number }; limit_elements?: number; rect_options?: c3.Selection.Options; label_options?: c3.Selection.Options; } interface Segment extends SegmentOptions { } class Segment extends Swimlane implements SegmentOptions { rects: c3.Selection; labels: c3.Selection; labels_text: c3.Selection; constructor(opt?: SegmentOptions); } interface FlamechartOptions extends SegmentOptions { } interface Flamechart extends FlamechartOptions { } class Flamechart extends Segment implements FlamechartOptions { constructor(opt?: FlamechartOptions); } interface IcicleOptions extends SwimlaneOptions { key?: (d: D) => number | string; value?: (d: D) => number; self_value?: (d: D) => number; parent_key?: (d: D) => number | string; children_keys?: (d: D) => (number | string)[]; children?: (d: D) => D[]; sort?: boolean | { (d: D): number }; limit_elements?: number; limit_min_percent?: number; rect_options?: c3.Selection.Options; label_options?: c3.Selection.Options; } interface Icicle extends IcicleOptions { } class Icicle extends Swimlane implements IcicleOptions { rects: c3.Selection; labels: c3.Selection; constructor(opt?: IcicleOptions); rebase(d: D); rebase_key(key: number); } interface SampledOptions extends SwimlaneOptions { dx: number | { (d: D): number }; filter?: (d: D, i: number) => boolean; safe?: boolean; } interface Sampled extends SampledOptions { } class Sampled extends Swimlane { constructor(opt?: SampledOptions); } module Sampled { interface SVGOptions extends SampledOptions { line_options?: c3.Selection.Options; } interface SVG extends SVGOptions { } class SVG extends Sampled { lines: c3.Selection; constructor(opt?: SVGOptions); } interface CanvasOptions extends SampledOptions { line_options?: c3.Selection.Options; } interface Canvas extends CanvasOptions { } class Canvas extends Sampled { constructor(opt?: CanvasOptions); } } } ////////////////////////////////////////////////////////////////////////////////////// // Decimated Layers ////////////////////////////////////////////////////////////////////////////////////// //interface DecimatedOptions extends LayerOptions { // renderport_elements?: number; // pixels_per_bucket_limit?: number; //} //interface Decimated extends DecimatedOptions { } //class Decimated extends Layer implements DecimatedOptions { // constructor(levels: D[][], proto_layer: Layer); //} } } ////////////////////////////////////////////////////////////////////////////////////// // Polar Plots ////////////////////////////////////////////////////////////////////////////////////// export interface PolarOptions extends ChartOptions { layers?: c3.Polar.Layer[]; axes?: c3.Axis[]; data?: D[]; r?: d3_Scale; t?: d3_Scale; angular_range?: number[]; zoomable?: boolean; zoom_extent?: number[]; layer_options?: c3.Selection.Options>; } interface Polar extends PolarOptions { } class Polar extends Chart implements PolarOptions { constructor(opt?: PolarOptions); render(opt?: PolarOptions): this; static toPolar(x: number, y: number): [number, number]; toPolar(x: number, y: number): [number, number]; } module Polar { ////////////////////////////////////////////////////////////////////////////////////// // Polar Layers ////////////////////////////////////////////////////////////////////////////////////// interface LayerOptions { name?: string | boolean; data?: D[]; class?: string; r?: d3_Scale; t?: d3_Scale; options?: c3.Selection.Options>; handlers?: { [key: string]: Function }; } interface Layer extends LayerOptions { } class Layer implements LayerOptions { type: string; rendered: boolean; chart: c3.Chart; g: d3.Selection; content: c3.Selection; width: number; height: number; radius: number; constructor(opt?: LayerOptions); redraw(origin?: string): void; restyle(style_new: boolean): void; toPolar(x: number, y: number): [number, number]; } module Layer { ////////////////////////////////////////////////////////////////////////////////////// // Radial Lines ////////////////////////////////////////////////////////////////////////////////////// interface RadialOptions extends LayerOptions { key?: (d: D, i: number) => number | string; value?: (d: D, i: number) => number; filter?: (d: D, i: number) => boolean; inner_radius?: number | { (d: D, i: number): number }; outer_radius?: number | { (d: D, i: number): number }; draggable?: boolean; vector_options?: c3.Selection.Options; line_options?: c3.Selection.Options; } interface Radial extends RadialOptions { } class Radial extends Layer implements RadialOptions { vectors: c3.Selection; lines: c3.Selection; constructor(opt?: RadialOptions); } ////////////////////////////////////////////////////////////////////////////////////// // Arc Segment Layers ////////////////////////////////////////////////////////////////////////////////////// interface SegmentOptions extends LayerOptions { key: (d: D) => number | string; value?: (d: D) => number; filter?: (d: D, i: number) => boolean; limit_elements?: number; pad?: number | { (d: D, i: number): number }; arc_options?: c3.Selection.Options; } interface Segment extends SegmentOptions {} class Segment extends Layer implements SegmentOptions { arcs: c3.Selection; constructor(opt?: SegmentOptions); get_position_from_key(key: number): Segment.Node; } module Segment { interface Node { x1: number, x2: number, y1: number, y2: number, children: Node[], value: number, } } interface ArcOptions extends SegmentOptions { inner_radius?: number | { (d: D): number }; outer_radius?: number | { (d: D): number }; start_angle?: number | { (d: D): number }; end_angle?: number | { (d: D): number }; } interface Arc extends ArcOptions { } class Arc extends Segment implements ArcOptions { constructor(opt?: ArcOptions); } ////////////////////////////////////////////////////////////////////////////////////// // Pie Chart ////////////////////////////////////////////////////////////////////////////////////// interface PieOptions extends SegmentOptions { inner_radius?: number | { (d: D): number }; outer_radius?: number | { (d: D): number }; sort?: boolean | number | { (d: D): number }; other_options?: c3.Selection.Options; } interface Pie extends PieOptions { } class Pie extends Segment implements PieOptions { constructor(opt?: PieOptions); } ////////////////////////////////////////////////////////////////////////////////////// // Sunburst ////////////////////////////////////////////////////////////////////////////////////// interface SunburstOptions extends SegmentOptions { self_value?: (d: D) => number; limit_min_percent?: number; sort?: boolean | number | { (d: D): number }; parent_key?: (d: D) => number; children_keys?: (d: D) => number[]; children?: (d: D) => D[]; center_options?: c3.Selection.Options; bullseye_options?: c3.Selection.Options; } interface Sunburst extends SunburstOptions { } class Sunburst extends Segment implements SunburstOptions { center: c3.Selection; bullseye: c3.Selection; constructor(opt?: SunburstOptions); rebase(d: D); rebase_key(key: number); get_leaf(position: number): D; } } } ////////////////////////////////////////////////////////////////////////////////////// // Graphs ////////////////////////////////////////////////////////////////////////////////////// export interface GraphOptions extends ChartOptions { data?: D[]; links?: L[]; } interface Graph extends GraphOptions { } class Graph extends Chart implements GraphOptions { constructor(opt?: GraphOptions); render(opt?: GraphOptions): this; } ////////////////////////////////////////////////////////////////////////////////////// // Sankey Flow Chart ////////////////////////////////////////////////////////////////////////////////////// interface SankeyLabelOptions extends c3.Selection.Options { orientation?: string; } export interface SankeyOptions extends GraphOptions { key?: (d: D) => number | string; value?: (d: D) => number; link_key?: (l: L) => number | string; link_source?: (l: L) => number | string; link_target?: (l: L) => number | string; link_value?: (l: L) => number; iterations?: number; alpha?: number; node_padding?: number | string; node_width?: number | string; align?: string; link_path?: string; link_path_curvature?: number; overflow_width_ratio?: number; nodes_options?: c3.Selection.Options; node_options?: c3.Selection.Options; rect_options?: c3.Selection.Options; links_options?: c3.Selection.Options; link_options?: c3.Selection.Options; path_options?: c3.Selection.Options; node_label_options?: SankeyLabelOptions; link_label_options?: SankeyLabelOptions; } interface Sankey extends SankeyOptions { } class Sankey extends Graph implements SankeyOptions { nodes_layer: c3.Selection; node_g: c3.Selection; rects: c3.Selection; links_layer: c3.Selection; link_g: c3.Selection; paths: c3.Selection; current_data: D[]; constructor(opt?: SankeyOptions); render(opt?: SankeyOptions): this; } module Sankey { ////////////////////////////////////////////////////////////////////////////////////// // Butterfly Flow Chart ////////////////////////////////////////////////////////////////////////////////////// export interface ButterflyOptions extends SankeyOptions { navigatable?: boolean; depth_of_field?: number; focal?: D; limit_nodes?: number; limit_links?: number; } interface Butterfly extends ButterflyOptions { } class Butterfly extends Sankey implements ButterflyOptions { focal: D; constructor(opt?: ButterflyOptions); render(opt?: ButterflyOptions): this; focus(focal: D); } } }