export default CanvasBlock;
declare class CanvasBlock extends FittedBlock {
    /**
     * @mixes Poolable
     *
     * @param {Display} display
     * @param {number} renderer - See Renderer.js for more information
     * @param {Instance} transformRootInstance - All transforms of this instance and its ancestors will already have been
     *                                           applied. This block will only be responsible for applying transforms of
     *                                           this instance's descendants.
     * @param {Instance} filterRootInstance - All filters (visibility/opacity/filters) of this instance and its ancestors
     *                                        will already have been applied. This block will only be responsible for
     *                                        applying filters of this instance's descendants.
     */
    constructor(display: Display, renderer: number, transformRootInstance: Instance, filterRootInstance: Instance);
    /**
     * @public
     *
     * @param {Display} display
     * @param {number} renderer
     * @param {Instance} transformRootInstance - All transforms of this instance and its ancestors will already have been
     *                                           applied. This block will only be responsible for applying transforms of
     *                                           this instance's descendants.
     * @param {Instance} filterRootInstance - All filters (visibility/opacity/filters) of this instance and its ancestors
     *                                        will already have been applied. This block will only be responsible for
     *                                        applying filters of this instance's descendants.
     */
    public initialize(display: Display, renderer: number, transformRootInstance: Instance, filterRootInstance: Instance): void;
    filterRootInstance: any;
    dirtyDrawables: any;
    canvas: HTMLCanvasElement | undefined;
    canvasId: string | undefined;
    context: CanvasRenderingContext2D | null | undefined;
    wrapper: CanvasContextWrapper | undefined;
    domElement: HTMLCanvasElement | undefined;
    wrapperStack: CanvasContextWrapper[] | undefined;
    wrapperStackIndex: number | undefined;
    filterListenerCountMap: any;
    canvasDrawOffset: Vector2 | undefined;
    currentDrawable: any;
    clipDirty: boolean | undefined;
    clipCount: number | undefined;
    backingScale: number | undefined;
    clipDirtyListener: (() => void) | undefined;
    opacityDirtyListener: (() => void) | undefined;
    /**
     * Reapplies clips to the current context. It's necessary to fully apply every clipping area for every ancestor,
     * due to how Canvas is set up. Should ideally be called when the clip is dirty.
     * @private
     *
     * This is necessary since you can't apply "nested" clipping areas naively in Canvas, but you specify one entire
     * clip area.
     *
     * @param {CanvasSelfDrawable} Drawable
     */
    private applyClip;
    /**
     * Pushes a wrapper onto our stack (creating if necessary), and initializes.
     * @private
     */
    private pushWrapper;
    /**
     * Pops a wrapper off of our stack.
     * @private
     */
    private popWrapper;
    /**
     * Walk down towards the root, popping any clip/opacity effects that were needed.
     * @private
     *
     * @param {Trail} trail
     * @param {number} branchIndex - The first index where our before and after trails have diverged.
     */
    private walkDown;
    /**
     * Walk up towards the next leaf, pushing any clip/opacity effects that are needed.
     * @private
     *
     * @param {Trail} trail
     * @param {number} branchIndex - The first index where our before and after trails have diverged.
     */
    private walkUp;
    /**
     * Draws the drawable into our main Canvas.
     * @private
     *
     * For things like opacity/clipping, as part of this we walk up/down part of the instance tree for rendering each
     * drawable.
     *
     * @param {CanvasSelfDrawable} - TODO: In the future, we'll need to support Canvas caches (this should be updated https://github.com/phetsims/scenery/issues/1581
     *                               with a proper generalized type)
     */
    private renderDrawable;
    /**
     * @public
     *
     * @param {Drawable} drawable
     */
    public markDirtyDrawable(drawable: Drawable): void;
    /**
     * @public
     *
     * @param {Drawable} drawable
     */
    public onPotentiallyMovedDrawable(drawable: Drawable): void;
}
import { FittedBlock } from '../imports.js';
import { CanvasContextWrapper } from '../imports.js';
import Vector2 from '../../../dot/js/Vector2.js';
//# sourceMappingURL=CanvasBlock.d.ts.map