/**
 * A 2D 3x2 matrix with six parameters a, b, c, d, e and f.
 * It is equivalent to applying the 3x3 transformation matrix:
 * <pre>
 * | x1 |   | a c e |   | x |
 * | y1 | = | b d f | * | y |
 * |  1 |   | 0 0 1 |   | 1 |
 * </pre>
 * http://www.w3.org/TR/css3-transforms/#recomposing-to-a-2d-matrix
 */
export interface Matrix {
    a: number;
    b: number;
    c: number;
    d: number;
    e: number;
    f: number;
}
export declare type ReadonlyMatrix = Readonly<Matrix>;
export declare function isIdentity(m: ReadonlyMatrix): boolean;
export declare function isTranslate(m: ReadonlyMatrix): boolean;
export declare function isScale(m: ReadonlyMatrix): boolean;
export declare function createIdentity(): Matrix;
export declare function createTranslate(x: number, y: number): Matrix;
/**
 * Creates a scale matrix.
 * @param scaleX The amount by which to scale along the x-axis.
 * @param scaleY The amount by which to scale along the y-axis.
 */
export declare function createScale(scaleX: number, scaleY: number): Matrix;
/**
 * Creates a scale about the specified point matrix.
 * @param scaleX The amount by which to scale along the x-axis.
 * @param scaleY The amount by which to scale along the y-axis.
 * @param centerX The x-coordinate of the scale operation's center point.
 * @param centerY The y-coordinate of the scale operation's center point.
 */
export declare function createScaleAt(scaleX: number, scaleY: number, centerX: number, centerY: number): Matrix;
export declare function createSkew(skewX: number, skewY: number): Matrix;
/**
 * Creates a rotation matrix.
 * @param angle The rotation angle, in radians.
 */
export declare function createRotate(angle: number): Matrix;
/**
 * Creates a rotation matrix about the specified point.
 * @param angle The angle, in radians, by which to rotate.
 * @param centerX The x-coordinate of the point about which to rotate.
 * @param centerY The y-coordinate of the point about which to rotate.
 */
export declare function createRotateAt(angle: number, centerX: number, centerY: number): Matrix;
export declare function multiply(A: ReadonlyMatrix, B: ReadonlyMatrix): Matrix;
/**
 * Returns an inverted version of the matrix.
 * @param m the given matrix
 */
export declare function invert(m: ReadonlyMatrix): Matrix;
export declare function toArray(m: ReadonlyMatrix): number[];
export declare function toString(m: ReadonlyMatrix): string;
export declare function decompose(m: ReadonlyMatrix): {
    translateX: number;
    translateY: number;
    rotate: number;
    scaleX: number;
    scaleY: number;
    skew: number;
};
