diff --git a/fusioncharts/fusioncharts-tests.ts b/fusioncharts/fusioncharts-tests.ts
new file mode 100644
index 0000000000..d50bff87c9
--- /dev/null
+++ b/fusioncharts/fusioncharts-tests.ts
@@ -0,0 +1,51 @@
+///
+
+FusionCharts.addEventListener('ready',(eventObject)=>{
+ eventObject.stopPropagation();
+});
+
+FusionCharts.ready((fusioncharts)=>{
+
+});
+
+FusionCharts.version;
+
+FusionCharts('chartId').render();;
+
+FusionCharts["debugger"].enable(true);
+
+let chartData ={
+ type: 'column2d',
+ renderAt: 'chart-container',
+ width: '450',
+ height: '200',
+ dataFormat: 'json',
+ dataSource: {
+ "chart": {
+ "caption": "Monthly revenue for last year",
+ "subCaption": "Harry's SuperMart",
+ },
+ "data": [{
+ "label": "Jan",
+ "value": "420000"
+ }, {
+ "label": "Feb",
+ "value": "810000"
+ }
+ ]
+ }
+};
+
+let chart = new FusionCharts(chartData);
+chart.render();
+chart.isActive();
+chart.addEventListener('ready',function(eventObject){
+ eventObject.type;
+});
+chart.chartType();
+chart.addVariable();
+chart.clone();
+chart.zoomTo(0,3);
+chart.zoomOut();
+chart.setJSONData(chartData);
+chart.ref;
\ No newline at end of file
diff --git a/fusioncharts/fusioncharts.d.ts b/fusioncharts/fusioncharts.d.ts
new file mode 100644
index 0000000000..8af7589f07
--- /dev/null
+++ b/fusioncharts/fusioncharts.d.ts
@@ -0,0 +1,302 @@
+// Type definitions for FusionCharts 3.11.2
+// Project: http://www.fusioncharts.com
+// Definitions by: Shivaraj KV
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+
+declare namespace FusionCharts {
+
+ type ChartDataFormats = 'json' | 'jsonurl' | 'csv' | 'xml' | 'xmlurl';
+
+ type ImageHAlign = 'left' | 'right' | 'middle';
+
+ type ImageVAlign = 'top' | 'bottom' | 'middle';
+
+ interface EventObject {
+ type: string;
+
+ eventId: number;
+
+ sender: FusionCharts;
+
+ cancelled: boolean;
+
+ stopPropagation: () => void;
+
+ prevented: boolean;
+
+ preventDefault: () => void;
+
+ detached: boolean;
+
+ detachHandler: () => void;
+ }
+
+ interface ChartObject {
+
+ type?: string;
+
+ id?: string;
+
+ width?: number | string;
+
+ height?: number | string;
+
+ renderAt?: string;
+
+ dataFormat?: ChartDataFormats;
+
+ dataSource?: string | {};
+
+ events?: {};
+
+ link?: {};
+
+ showDataLoadingMessage?: boolean;
+
+ showChartLoadingMessage?: boolean;
+
+ baseChartMessageFont?: string;
+
+ baseChartMessageFontSize?: string;
+
+ baseChartMessageColor?: string;
+
+ dataLoadStartMessage?: string;
+
+ dataLoadErrorMessage?: string;
+
+ dataInvalidMessage?: string;
+
+ dataEmptyMessage?: string;
+
+ typeNotSupportedMessage?: string;
+
+ loadMessage?: string;
+
+ renderErrorMessage?: string;
+
+ containerBackgroundColor?: string;
+
+ containerBackgroundOpacity?: number;
+
+ containerClassName?: string;
+
+ baseChartMessageImageHAlign?: ImageHAlign;
+
+ dataLoadErrorMessageImageVAlign?: ImageVAlign;
+
+ dataLoadErrorMessageImageAlpha?: number;
+
+ dataLoadErrorMessageImageScale?: number;
+
+ dataLoadStartMessageImageHAlign?: ImageHAlign;
+
+ dataLoadStartMessageImageVAlign?: ImageVAlign;
+
+ dataLoadStartMessageImageAlpha?: number;
+
+ dataLoadStartMessageImageScale?: number;
+
+ dataInvalidMessageImageHAlign?: ImageHAlign;
+
+ dataInvalidMessageImageVAlign?: ImageVAlign;
+
+ dataInvalidMessageImageAlpha?: number;
+
+ dataInvalidMessageImageScale?: number;
+
+ dataEmptyMessageImageHAlign?: ImageHAlign;
+
+ dataEmptyMessageImageVAlign?: ImageVAlign;
+
+ dataEmptyMessageImageAlpha?: number;
+
+ dataEmptyMessageImageScale?: number;
+
+ renderErrorMessageImageHAlign?: ImageHAlign;
+
+ renderErrorMessageImageVAlign?: ImageVAlign;
+
+ renderErrorMessageImageAlpha?: number;
+
+ renderErrorMessageImageScale?: number;
+
+ loadMessageImageHAlign?: ImageHAlign;
+
+ loadMessageImageVAlign?: ImageVAlign;
+
+ loadMessageImageAlpha?: number;
+
+ loadMessageImageScale?: number;
+ }
+
+ interface Debugger {
+ outputFormat(format: any): void;
+
+ outputTo(callback: (message: any) => any): void;
+
+ enable(state:any,outputTo?:(message: any) =>any,outputFormat?:any):void
+
+ enableFirebugLite():any;
+ }
+
+ interface FusionCharts {
+ clone(overrides?: {}, argsOnly?: boolean): any;
+
+ isActive(): boolean;
+
+ chartType(value?: string, options?: any): string;
+
+ addEventListener(type: string | string[], listener: (eventObject?: EventObject, eventArgs?: {}) => void): void;
+
+ removeEventListener(type: string | string[], listener: (eventObject?: EventObject, eventArgs?: {}) => void): void;
+
+ configureLink(param: {} | any[], level?: number): void;
+
+ setChartAttribute(attributes: ChartObject | String, value?: string): void;
+
+ getChartAttribute(attribute?: string | string[]): ChartObject;
+
+ getXMLData(): any;
+
+ setXMLData(data: string | {}): void;
+
+ setXMLUrl(url: string): void;
+
+ setChartDataUrl(url: string, format: ChartDataFormats): void;
+
+ setChartData(data: string | {}, format: ChartDataFormats): void;
+
+ getChartData(format: ChartDataFormats): any;
+
+ dataReady(available?: boolean): boolean;
+
+ feedData(stream: string): void;
+
+ getData(): any;
+
+ getDataWithId(): any;
+
+ setData(value: number, label: string): void;
+
+ stopUpdate(): void;
+
+ restartUpdate(): void;
+
+ isUpdateActive(): boolean;
+
+ clearChart(): void;
+
+ getSWFHTML(): any;
+
+ addVariable(): void;
+
+ getXML(): any;
+
+ setDataXML(data: string | {}): void;
+
+ setDataURL(url: string): void;
+
+ hasRendered(): boolean;
+
+ setTransparent(transparency?: boolean): void;
+
+ isPlotItemSliced(index: number): boolean;
+
+ slicePlotItem(index: number, slice: boolean): void;
+
+ centerLabel(labelText: string, options?: {}): void;
+
+ startingAngle(angle?: number, relative?: boolean): void;
+
+ zoomOut(): void;
+
+ zoomTo(startIndex: number, endIndex: number): void;
+
+ resetChart(): void;
+
+ setZoomMode(yes: boolean): void;
+
+ getViewStartIndex(): number;
+
+ getViewEndIndex(): number;
+
+ print(options?: {}): void;
+
+ exportChart(options?: {}): void;
+
+ getSVGString(): string;
+
+ lockResize(state: boolean): boolean;
+
+ showChartMessage(text: string, modal?: boolean, cancelable?: boolean): void;
+
+ getJSONData(): JSON;
+
+ setJSONData(data: string | {}): void;
+
+ setJSONUrl(url: string): void;
+
+ getCSVData(): any;
+
+ getDataAsCSV(): any;
+
+ render(containerElement?: string | Element, insertMode?: string, callback?: () => any): FusionCharts;
+
+ resizeTo(width: number | string, height: number | string): any;
+
+ dispose(): void;
+
+ configure(options: {}): void;
+
+ ref: {};
+
+ }
+
+ interface FusionChartStatic {
+ new (chartObject: ChartObject|{}): FusionCharts;
+
+ (chartId: string): FusionCharts;
+
+ getObjectReference(elementId: string): Element;
+
+ addEventListener(type: string | string[], listener: (eventObject?: EventObject, eventArgs?: {}) => void): void;
+
+ removeEventListener(type: string | string[], listener: (eventObject?: EventObject, eventArgs?: {}) => void): void;
+
+ ready(callback: (fusionChartStatic?: FusionChartStatic) => any, context?: any): FusionChartStatic;
+
+ transcodeData(data: string | {}, source: ChartDataFormats, target: ChartDataFormats, advanced: boolean): any;
+
+ batchExport(options: {}): void;
+
+ formatNumber(num: number, type?: string, config?: {}): Element;
+
+ setCurrentRenderer(name: string): void
+
+ getCurrentRenderer(): string;
+
+ render(options?: ChartObject, callback?: () => any): FusionCharts;
+
+ version: string[];
+
+ items: {};
+
+ options: {};
+
+ debugger:Debugger;
+
+
+ }
+
+}
+
+declare module 'FusionCharts' {
+ var FusionCharts: FusionCharts.FusionChartStatic;
+ export = FusionCharts;
+}
+
+declare var FusionCharts: FusionCharts.FusionChartStatic;
+
+