export default Stitcher;
declare class Stitcher {
    /**
     * @public
     *
     * @param {ChangeInterval} firstChangeInterval
     */
    public static debugIntervals(firstChangeInterval: ChangeInterval): void;
    /**
     * Logs a bunch of information about the old (useCurrent===false) or new (useCurrent===true) drawable linked list.
     * @public
     *
     * @param {Drawable|null} firstDrawable
     * @param {Drawable|null} lastDrawable
     * @param {ChangeInterval} firstChangeInterval
     * @param {ChangeInterval} lastChangeInterval
     * @param {boolean} useCurrent
     */
    public static debugDrawables(firstDrawable: Drawable | null, lastDrawable: Drawable | null, firstChangeInterval: ChangeInterval, lastChangeInterval: ChangeInterval, useCurrent: boolean): void;
    /**
     * Main stitch entry point, called directly from the backbone or cache. We are modifying our backbone's blocks and
     * their attached drawables.
     * @public
     *
     * The change-interval pair denotes a linked-list of change intervals that we will need to stitch across (they
     * contain drawables that need to be removed and added, and it may affect how we lay out blocks in the stacking
     * order).
     *
     * @param {BackboneDrawable} backbone
     * @param {Drawable|null} firstDrawable
     * @param {Drawable|null} lastDrawable
     * @param {Drawable|null} oldFirstDrawable
     * @param {Drawable|null} oldLastDrawable
     * @param {ChangeInterval} firstChangeInterval
     * @param {ChangeInterval} lastChangeInterval
     */
    public initialize(backbone: BackboneDrawable, firstDrawable: Drawable | null, lastDrawable: Drawable | null, oldFirstDrawable: Drawable | null, oldLastDrawable: Drawable | null, firstChangeInterval: ChangeInterval, lastChangeInterval: ChangeInterval): void;
    backbone: any;
    firstDrawable: Drawable | null | undefined;
    lastDrawable: Drawable | null | undefined;
    touchedBlocks: any;
    initialized: boolean | undefined;
    reindexed: boolean | undefined;
    pendingAdditions: any[] | undefined;
    pendingRemovals: any[] | undefined;
    pendingMoves: any[] | undefined;
    createdBlocks: any[] | undefined;
    disposedBlocks: any[] | undefined;
    intervalsNotified: any[] | undefined;
    boundariesRecorded: boolean | undefined;
    previousBlocks: any;
    /**
     * Removes object references
     * @public
     */
    public clean(): void;
    /**
     * Writes the first/last drawables for the entire backbone into its memory. We want to wait to do this until we have
     * read from its previous values.
     * @protected
     */
    protected recordBackboneBoundaries(): void;
    /**
     * Records that this {Drawable} drawable should be added/moved to the {Block} at a later time
     * @protected
     *
     * @param {Drawable} drawable
     * @param {Block} block
     */
    protected notePendingAddition(drawable: Drawable, block: Block): void;
    /**
     * Records that this {Drawable} drawable should be moved to the {Block} at a later time (called only on external
     * drawables). notePendingAddition and notePendingRemoval should not be called on a drawable that had
     * notePendingMove called on it during the same stitch, and vice versa.
     * @protected
     *
     * @param {Drawable} drawable
     * @param {Block} block
     */
    protected notePendingMove(drawable: Drawable, block: Block): void;
    /**
     * Records that this {Drawable} drawable should be removed/moved from the {Block} at a later time
     * @protected
     *
     * @param {Drawable} drawable
     */
    protected notePendingRemoval(drawable: Drawable): void;
    /**
     * Records that this {Block} block should be disposed at a later time. It should not be in the blocks array at the
     * end of the stitch.
     * @protected
     *
     * @param {Block} block
     */
    protected markBlockForDisposal(block: Block): void;
    /**
     * @protected
     */
    protected removeAllBlocks(): void;
    /**
     * Immediately notify a block of its first/last drawable.
     * @protected
     *
     * @param {Block} block
     * @param {Drawable} firstDrawable
     * @param {Drawable} lastDrawable
     */
    protected notifyInterval(block: Block, firstDrawable: Drawable, lastDrawable: Drawable): void;
    /**
     * Note a block's tentative first drawable and block before (should be flushed later with updateBlockIntervals())
     * @protected
     *
     * @param {Block} block
     * @param {Drawable} firstDrawable
     */
    protected markBeforeBlock(block: Block, firstDrawable: Drawable): void;
    /**
     * Note a block's tentative last drawable and block after (should be flushed later with updateBlockIntervals())
     * @protected
     *
     * @param {Block} block
     * @param {Drawable} lastDrawable
     */
    protected markAfterBlock(block: Block, lastDrawable: Drawable): void;
    /**
     * Flushes markBeforeBlock/markAfterBlock changes to notifyInterval on blocks themselves.
     * @protected
     */
    protected updateBlockIntervals(): void;
    /**
     * Creates a fresh block with the desired renderer and {Drawable} arbitrary drawable included, and adds it to
     * our DOM.
     * @protected
     *
     * @param {number} renderer
     * @param {Drawable} drawable
     * @returns {Block}
     */
    protected createBlock(renderer: number, drawable: Drawable): Block;
    /**
     * Immediately appends a block to our blocks array
     * @protected
     *
     * @param {Block} block
     */
    protected appendBlock(block: Block): void;
    /**
     * Immediately removes a block to our blocks array
     * @protected
     *
     * @param {Block} block
     */
    protected removeBlock(block: Block): void;
    /**
     * @protected
     */
    protected useNoBlocks(): void;
    /**
     * Triggers all blocks in the blocks array to have their z-index properties set so that they visually stack
     * correctly.
     * @protected
     */
    protected reindex(): void;
    /**
     * An audit for testing assertions
     * @protected
     */
    protected auditStitch(): void;
}
import { Drawable } from '../imports.js';
//# sourceMappingURL=Stitcher.d.ts.map