declare namespace dojox { namespace gfx { namespace matrix { type MatrixLike = number | [number, number] | Matrix2D; interface Matrix2D { dx?: number; dy?: number; xx?: number; xy?: number; yx?: number; yy?: number; } interface Matrix2DConstructor { new(matrix: MatrixLike): Matrix2D; prototype: Matrix2D; } // TS does not allow overloaded method signatures within the module declaration, // so we need to define the interfaces here interface MultiplyPoint { (matrix: MatrixLike, point: dojox.gfx.Point): dojox.gfx.Point; (matrix: MatrixLike, x: number, y: number): dojox.gfx.Point; } interface Project { (point: dojox.gfx.Point): Matrix2D; (x: number, y: number): Matrix2D; } interface Reflect { (point: dojox.gfx.Point): Matrix2D; (x: number, y: number): Matrix2D; } interface RotateAt { (radians: number, point: dojox.gfx.Point): Matrix2D; (radians: number, x: number, y: number): Matrix2D; } interface RotategAt { (degrees: number, point: dojox.gfx.Point): Matrix2D; (degrees: number, x: number, y: number): Matrix2D; } interface Scale { (x: number, y: number): Matrix2D; (point: dojox.gfx.Point): Matrix2D; } interface ScaleAt { (factor: number | dojox.gfx.Point, point: dojox.gfx.Point): Matrix2D; (factor: number | dojox.gfx.Point, x: number, y: number): Matrix2D; (factorX: number, factorY: number, point: dojox.gfx.Point): Matrix2D; (factorX: number, factorY: number, x: number, y: number): Matrix2D; } interface SkewXAt { (radians: number, point: dojox.gfx.Point): Matrix2D; (radians: number, x: number, y: number): Matrix2D; } interface SkewXgAt { (degrees: number, point: dojox.gfx.Point): Matrix2D; (degrees: number, x: number, y: number): Matrix2D; } interface SkewYAt { (radians: number, point: dojox.gfx.Point): Matrix2D; (radians: number, x: number, y: number): Matrix2D; } interface SkewYgAt { (degrees: number, point: dojox.gfx.Point): Matrix2D; (degrees: number, x: number, y: number): Matrix2D; } interface Translate { (point: dojox.gfx.Point): Matrix2D; (x: number, y: number): Matrix2D; } } } } declare module 'dojox/gfx/matrix' { /* tslint:disable:no-unused-variable */ type MatrixLike = dojox.gfx.matrix.MatrixLike; type Matrix2D = dojox.gfx.matrix.Matrix2D; const Matrix2D: dojox.gfx.matrix.Matrix2DConstructor; const flipX: Matrix2D; const flipY: Matrix2D; const flipXY: Matrix2D; const identity: Matrix2D; const clone: (matrix: Matrix2D) => Matrix2D; const invert: (matrix: Matrix2D) => Matrix2D; const isIdentity: (matrix: Matrix2D) => boolean; const multiply: (...matrices: MatrixLike[]) => Matrix2D; const multiplyPoint: dojox.gfx.matrix.MultiplyPoint; const multiplyRectangle: (matrix: MatrixLike, rectangle: dojox.gfx.SimpleRectangle) => dojox.gfx.SimpleRectangle; const normalize: (matrix: MatrixLike) => Matrix2D; const project: dojox.gfx.matrix.Project; const reflect: dojox.gfx.matrix.Reflect; const rotate: (radians: number) => Matrix2D; const rotateAt: dojox.gfx.matrix.RotateAt; const rotateg: (degrees: number) => Matrix2D; const rotategAt: dojox.gfx.matrix.RotategAt; const scale: dojox.gfx.matrix.Scale; const scaleAt: dojox.gfx.matrix.ScaleAt; const skewX: (radians: number) => Matrix2D; const skewXAt: dojox.gfx.matrix.SkewXAt; const skewXg: (degrees: number) => Matrix2D; const skewXgAt: dojox.gfx.matrix.SkewXgAt; const skewY: (radians: number) => Matrix2D; const skewYAt: dojox.gfx.matrix.SkewYAt; const skewYg: (degrees: number) => Matrix2D; const skewYgAt: dojox.gfx.matrix.SkewYgAt; const translate: dojox.gfx.matrix.Translate; /* tslint:enable */ }