import '../../../globals.js';
/**
 * Base type for gradients and patterns (and NOT the only type for fills/strokes)
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Matrix3 from '../../../dot/js/Matrix3.js';
import { SVGBlock, SVGGradient, SVGPattern } from '../imports.js';
export default abstract class Paint {
    id: string;
    transformMatrix: Matrix3 | null;
    constructor();
    /**
     * Returns an object that can be passed to a Canvas context's fillStyle or strokeStyle.
     */
    abstract getCanvasStyle(): string | CanvasGradient | CanvasPattern;
    /**
     * Sets how this paint (pattern/gradient) is transformed, compared with the local coordinate frame of where it is
     *
     * NOTE: This should only be used before the pattern/gradient is ever displayed.
     * TODO: Catch if this is violated? https://github.com/phetsims/scenery/issues/1581
     *
     * NOTE: The scale should be symmetric if it will be used as a stroke. It is difficult to set a different x and y scale
     * for canvas at the same time.
     */
    setTransformMatrix(transformMatrix: Matrix3): this;
    /**
     * Creates an SVG paint object for creating/updating the SVG equivalent definition.
     */
    abstract createSVGPaint(svgBlock: SVGBlock): SVGGradient | SVGPattern;
    /**
     * Returns a string form of this object
     */
    toString(): string;
    isPaint: boolean;
}
//# sourceMappingURL=Paint.d.ts.map