import '../../assert/js/assert.js';
import '../../globals.js';
/**
 * Holds content, and can transition to other content with a variety of animations. During a transition, there is always
 * the "from" content that animates out, and the "to" content that animates in.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Bounds2 from '../../dot/js/Bounds2.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import { Node, NodeOptions } from '../../scenery/js/imports.js';
import Transition, { DissolveTransitionOptions, SlideTransitionOptions, WipeTransitionOptions } from './Transition.js';
type SelfOptions = {
    content?: Node | null;
    useBoundsClip?: boolean;
    cachedNodes?: Node[];
};
export type TransitionNodeOptions = SelfOptions & StrictOmit<NodeOptions, 'children'>;
declare class TransitionNode extends Node {
    private readonly transitionBoundsProperty;
    private readonly useBoundsClip;
    private readonly cachedNodes;
    private fromContent;
    private toContent;
    private transition;
    private paddingNode;
    private boundsListener;
    /**
     * NOTE: The content's transform/pickability/visibility/opacity/clipArea/etc. can be modified, and will be reset to
     * the default value
     *
     * @param transitionBoundsProperty - Use visibleBoundsProperty (from the ScreenView) for full-screen transitions.
     *                                   Generally TransitionNode assumes all content, when it has no transform applied,
     *                                   is meant to by laid out within these bounds.
     * @param [options]
     */
    constructor(transitionBoundsProperty: TReadOnlyProperty<Bounds2>, providedOptions?: TransitionNodeOptions);
    /**
     * Steps forward in time, animating the transition.
     */
    step(dt: number): void;
    /**
     * Interrupts the transition, ending it and resetting the animated values.
     */
    interrupt(): void;
    /**
     * Called on bounds changes.
     */
    private onBoundsChange;
    /**
     * Start a transition to replace our content with the new content, using Transition.slideLeft.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    slideLeftTo(content: Node | null, config?: SlideTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.slideRight.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    slideRightTo(content: Node | null, config?: SlideTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.slideUp.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    slideUpTo(content: Node | null, config?: SlideTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.slideDown.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    slideDownTo(content: Node | null, config?: SlideTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.wipeLeft.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    wipeLeftTo(content: Node | null, config?: WipeTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.wipeRight.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    wipeRightTo(content: Node | null, config?: WipeTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.wipeUp.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    wipeUpTo(content: Node | null, config?: WipeTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.wipeDown.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    wipeDownTo(content: Node | null, config?: WipeTransitionOptions): Transition;
    /**
     * Start a transition to replace our content with the new content, using Transition.dissolve.
     *
     * @param content - If null, the current content will still animate out (with nothing replacing it).
     * @param config - Passed as config to the Animation. Usually a duration should be included.
     * @returns - Available to add end listeners, etc.
     */
    dissolveTo(content: Node | null, config?: DissolveTransitionOptions): Transition;
    /**
     * Starts a transition, and hooks up a listener to handle state changes when it ends.
     *
     * @returns - Available to add end listeners, etc. (chained)
     */
    private startTransition;
    dispose(): void;
}
export default TransitionNode;
//# sourceMappingURL=TransitionNode.d.ts.map