import * as PropertySymbol from '../PropertySymbol.js';
import BrowserWindow from '../window/BrowserWindow.js';
import DOMMatrix from '../dom/dom-matrix/DOMMatrix.js';
/**
 * SVG Matrix.
 *
 * Documentation missing at developer.mozilla.org.
 */
export default class SVGMatrix {
    [PropertySymbol.window]: BrowserWindow;
    [PropertySymbol.getAttribute]: () => string | null;
    [PropertySymbol.setAttribute]: (value: string) => void | null;
    [PropertySymbol.attributeValue]: string | null;
    [PropertySymbol.readOnly]: boolean;
    /**
     * Constructor.
     *
     * @param illegalConstructorSymbol Illegal constructor symbol.
     * @param window Window.
     * @param [options] Options.
     * @param [options.readOnly] Read only.
     * @param [options.getAttribute] Get attribute.
     * @param [options.setAttribute] Set attribute.
     */
    constructor(illegalConstructorSymbol: symbol, window: BrowserWindow, options?: {
        readOnly?: boolean;
        getAttribute?: () => string | null;
        setAttribute?: (value: string) => void;
    });
    /**
     * Returns the `a` value of the matrix.
     */
    get a(): number;
    /**
     * Sets the `a` value of the matrix.
     */
    set a(value: number);
    /**
     * Returns the `b` value of the matrix.
     */
    get b(): number;
    /**
     * Sets the `b` value of the matrix.
     */
    set b(value: number);
    /**
     * Returns the `c` value of the matrix.
     */
    get c(): number;
    /**
     * Sets the `c` value of the matrix.
     */
    set c(value: number);
    /**
     * Returns the `d` value of the matrix.
     */
    get d(): number;
    /**
     * Sets the `d` value of the matrix.
     */
    set d(value: number);
    /**
     * Returns the `e` value of the matrix.
     */
    get e(): number;
    /**
     * Sets the `e` value of the matrix.
     */
    set e(value: number);
    /**
     * Returns the `f` value of the matrix.
     */
    get f(): number;
    /**
     * Sets the `f` value of the matrix.
     */
    set f(value: number);
    /**
     * Returns a new SVGMatrix instance which is the result of this matrix multiplied by the passed matrix.
     *
     * @param secondMatrix Matrix object.
     * @returns A new SVGMatrix object.
     */
    multiply(secondMatrix: SVGMatrix): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix post multiplied by a translation matrix containing the passed values.
     *
     * @param [x=0] X component of the translation value.
     * @param [y=0] Y component of the translation value.
     * @returns The resulted matrix
     */
    translate(x?: number, y?: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix post multiplied by a scale 2D matrix containing the passed values.
     *
     * @param scale The scale factor.
     * @returns The resulted matrix
     */
    scale(scale: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix post multiplied by a scale 3D matrix containing the passed values.
     *
     * @param [scaleX] X-Axis scale.
     * @param [scaleY] Y-Axis scale.
     * @returns The resulted matrix
     */
    scaleNonUniform(scaleX?: number, scaleY?: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix post multiplied by each of 3 rotation matrices about the major axes, first X, then Y, then Z.
     *
     * @param angle Angle of rotation in degrees.
     * @returns The resulted matrix
     */
    rotate(angle: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix post multiplied by a skew matrix along the X axis by the given angle.
     *
     * Not implemented in Happy DOM yet.
     *
     * @param [x] X-Axis skew.
     * @param [y] Y-Axis skew.
     */
    rotateFromVector(x?: number, y?: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance that specifies a skew transformation along X-Axis by the given angle.
     *
     * @param angle Angle amount in degrees to skew.
     * @returns The resulted matrix
     */
    skewX(angle: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance that specifies a skew transformation along Y-Axis by the given angle.
     *
     * @param angle Angle amount in degrees to skew.
     * @returns The resulted matrix
     */
    skewY(angle: number): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix flipped on X-axis.
     */
    flipX(): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix flipped on Y-axis.
     */
    flipY(): SVGMatrix;
    /**
     * Returns a new SVGMatrix instance which is this matrix inverted.
     */
    inverse(): SVGMatrix;
    /**
     * Returns DOM matrix.
     *
     * @returns DOM matrix.
     */
    [PropertySymbol.getDOMMatrix](): DOMMatrix;
    /**
     * Sets DOM matrix.
     *
     * @param domMatrix DOM matrix.
     */
    [PropertySymbol.setDOMMatrix](domMatrix: DOMMatrix): void;
}
//# sourceMappingURL=SVGMatrix.d.ts.map