diff --git a/sigmajs/sigmajs-tests.ts b/sigmajs/sigmajs-tests.ts
new file mode 100644
index 000000000..da4b100a8
--- /dev/null
+++ b/sigmajs/sigmajs-tests.ts
@@ -0,0 +1,44 @@
+///
+module SigmaJsTests {
+ var container = document.createElement("sigma");
+ var settings = new sigma.classes.configurable({
+ autoResize: true,
+ autoRescale: true
+ })
+ var s = new sigma({
+ settings: settings
+ });
+
+ s.addRenderer({
+ type: 'canvas',
+ container: container
+ });
+
+ var N = 100;
+ var E = 500;
+ // Generate a random graph:
+ for (var i = 0; i < N; i++) {
+ s.graph.addNode({
+ id: 'n' + i,
+ label: 'Node ' + i,
+ x: Math.random(),
+ y: Math.random(),
+ size: Math.random(),
+ color: '#666'
+ });
+ }
+
+ for (var j = 0; j < E; j++) {
+ s.graph.addEdge({
+ id: 'e' + j,
+ source: 'n' + Math.floor(Math.random() * N),
+ target: 'n' + Math.floor(Math.random() * N),
+ size: Math.random(),
+ color: '#ccc'
+ });
+ }
+
+ sigma.plugins.dragNodes(s, s.renderers[0]);
+ s.renderers[0].resize();
+ s.refresh();
+}
diff --git a/sigmajs/sigmajs.d.ts b/sigmajs/sigmajs.d.ts
new file mode 100644
index 000000000..2d04deda0
--- /dev/null
+++ b/sigmajs/sigmajs.d.ts
@@ -0,0 +1,208 @@
+// Type definitions for sigma.js v1.0.3
+// Project: https://github.com/jacomyal/sigma.js
+// Definitions by: Qinfeng Chen
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+declare module SigmaJs{
+ interface Classes {
+ configurable: Configurable;
+ graph: Graph;
+ }
+
+ interface Configurable {
+ new(setting: Settings): Configurable;
+ new(settings: Settings[]): Configurable;
+ (key: string): string;
+ }
+
+ interface DragNodes {
+ (sigma: Sigma, renderer: Renderer): DragNodes;
+ }
+
+ interface Edge {
+ color?: string;
+ id: string;
+ size?: number;
+ source: string;
+ target: string;
+ }
+
+ interface Graph {
+ addEdge(edge: Edge): Graph;
+ addNode(node: Node): Graph;
+ clear(): Graph;
+ degree(id: string): number;
+ degree(id: string, type: string): number;
+ degree(ids: string[]): number[];
+ degree(ids: string[], type: string): number[];
+ dropEdge(id: string): Graph;
+ dropNode(id: string): Graph;
+ edges(): Edge[];
+ edges(id: string): Edge;
+ edges(ids: string[]): Edge[];
+ kill(): Graph;
+ nodes(): Node[];
+ nodes(id: string): Node;
+ nodes(ids: string[]): Node[];
+ }
+
+ interface Node {
+ color?: string;
+ id: string;
+ label?: string;
+ size?: number;
+ x?: number;
+ y?: number;
+ }
+
+ interface Plugins {
+ dragNodes: DragNodes;
+ }
+
+ interface Renderer {
+ refresh(): Sigma;
+ render(): Sigma;
+ resize(): Sigma;
+ }
+
+ interface RendererConfigs{
+ container?: Element;
+ id?: string;
+ type?: string;
+ }
+
+ interface Sigma {
+ addRenderer(): Renderer;
+ addRenderer(configs: RendererConfigs): Renderer;
+ graph: Graph;
+ killRenderer(renderer: string): Sigma;
+ killRenderer(renderer: Renderer): Sigma;
+ kill(): void;
+ refresh(): void;
+ renderers: Renderer[];
+ }
+
+ interface SigmaConfigs {
+ container?: Element;
+ graph?: Graph;
+ id?: string;
+ renderers?: Renderer[];
+ settings?: Configurable;
+
+ }
+
+ interface SigmaFactory {
+ new(): Sigma;
+ new(container: string): Sigma;
+ new(container: Element): Sigma;
+ new(configuration: SigmaConfigs): Sigma;
+ classes:Classes;
+ plugins: Plugins;
+ }
+
+ interface Settings {
+ // Graph settings
+ clone?: boolean;
+ immutable?: boolean;
+ verbose?: boolean;
+
+ // Renderers settings
+ defaultNodeType?: string;
+ defaultEdgeType?: string;
+ defaultLabelColor?: string;
+ defaultEdgeColor?: string;
+ defaultNodeColor?: string;
+ defaultLabelSize?: string;
+ edgeColor?: string;
+ minArrowSize?: number;
+ font?: string;
+ fontStyle?: string;
+ labelColor?: string;
+ labelSize?: string;
+ labelSizeRatio?: string;
+ labelThreshold?: string;
+ webglOversamplingRatio?: number;
+
+ // hovered node customizations
+ borderSize?: number;
+ defaultNodeBorderColor?: string;
+ hoverFont?: number;
+ hoverFontStyle?: string;
+ labelHoverShadow?: string;
+ labelHoverShadowColor?: string;
+ nodeHoverColor?: string;
+ defaultNodeHoverColor?: string;
+ labelHoverBGColor?: string;
+ defaultHoverLabelBGColor?: string;
+ labelHoverColor?: string;
+ defaultLabelHoverColor?: string;
+ singleHover?: boolean;
+
+ // hovered edge customizations
+ edgeHoverColor?: string;
+ edgeHoverSizeRatio?: number;
+ defaultEdgeHoverColor?: string;
+ edgeHoverExtremities?: boolean;
+
+ // Draw settings for labels, edges, and nodes
+ drawLabels?: boolean;
+ drawEdges?: boolean;
+ drawNodes?: boolean;
+
+ // Batch edge drawing
+ batchEdgesDrawing?: boolean;
+ hideEdgesOnMove?: boolean;
+ canvasEdgesBatchSize?: number;
+ webglEdgesBatchSize?: number;
+
+ // Rescale settings
+ scalingMode?: string;
+ sideMargin?: number;
+
+ // max/min node and edge size
+ minEdgeSize?: number;
+ maxEdgeSize?: number;
+ minNodeSize?: number;
+ maxNodeSize?: number;
+
+ // Captor settings
+ touchEnabled?: boolean;
+ mouseEnabled?: boolean;
+ mouseWheelEnabled?: boolean;
+ doubleClickEnabled?: boolean;
+ eventsEnabled?: boolean;
+ zoomingRatio?: number;
+ doubleClickZoomingRatio?: number;
+ zoomMin?: number;
+ zoomMax?: number;
+ mouseZoomDuration?: number;
+ doubleClickZoomDuration?: number;
+ mouseInertiaDuration?: number;
+ mouseInertiaRatio?: number;
+ touchInertiaDuration?: number;
+ touchInertiaRatio?: number;
+ doubleClickTimeout?: number;
+ doubleTapTimeout?: number;
+ dragTimeout?: number;
+
+ // Global settings
+ autoResize?: boolean;
+ autoRescale?: boolean;
+ enableCamera?: boolean;
+ enableHovering?: boolean;
+ enableEdgeHovering?: boolean;
+ edgeHoverPrecision?: number;
+ rescaleIgnoreSize?: boolean;
+ skipErrors?: boolean;
+
+ // Camera settings
+ nodesPowRatio?: number;
+ edgesPowRatio?: number;
+
+ // Animation settings
+ animationsTime?: number;
+ }
+}
+
+declare var sigma: SigmaJs.SigmaFactory;