import { PointModel } from './point-model';
/**
 * @hidden
 * Matrix module is used to transform points based on offsets, angle
 */
export declare enum MatrixTypes {
    Identity = 0,
    Translation = 1,
    Scaling = 2,
    Unknown = 4
}
/**
 * @hidden
 * Matrix class
 */
export declare class Matrix {
    /**   @private  */
    m11: number;
    /**   @private  */
    m12: number;
    /**   @private  */
    m21: number;
    /**   @private  */
    m22: number;
    /**   @private  */
    offsetX: number;
    /**   @private  */
    offsetY: number;
    /**   @private  */
    type: MatrixTypes;
    constructor(m11: number, m12: number, m21: number, m22: number, offsetX: number, offsetY: number, type?: MatrixTypes);
}
/**
 * @private
 * @returns {Matrix} - Matrix
 */
export declare function identityMatrix(): Matrix;
/**
 * @param {Matrix} matrix - matrix
 * @param {PointModel} point - point
 * @private
 * @returns {PointModel} - PointModel
 */
export declare function transformPointByMatrix(matrix: Matrix, point: PointModel): PointModel;
/**
 * @param {Matrix} matrix - matrix
 * @param {PointModel[]} points - points
 * @private
 * @returns {PointModel[]} - PointModel[]
 */
export declare function transformPointsByMatrix(matrix: Matrix, points: PointModel[]): PointModel[];
/**
 * @param {Matrix} matrix - matrix
 * @param {number} angle - angle
 * @param {number} centerX - centerX
 * @param {number} centerY - centerY
 * @private
 * @returns {void} - void
 */
export declare function rotateMatrix(matrix: Matrix, angle: number, centerX: number, centerY: number): void;
/**
 * @param {number} matrix - matrix
 * @param {number} scaleX - scaleX
 * @param {number} scaleY - scaleY
 * @param {number} centerX - centerX
 * @param {number} centerY - centerY
 * @private
 * @returns {void} - void
 */
export declare function scaleMatrix(matrix: Matrix, scaleX: number, scaleY: number, centerX?: number, centerY?: number): void;
/**
 * @param {Matrix} matrix - matrix
 * @param {number} offsetX - offsetX
 * @param {number} offsetY - offsetY
 * @private
 * @returns {void} - void
 */
export declare function translateMatrix(matrix: Matrix, offsetX: number, offsetY: number): void;
/**
 * @param {Matrix} matrix1 - matrix1
 * @param {Matrix} matrix2 - matrix2
 * @private
 * @returns {void} - void
 */
export declare function multiplyMatrix(matrix1: Matrix, matrix2: Matrix): void;
