import '../../assert/js/assert.js';
import '../../globals.js';
/**
 * The view portion of a Screen, specifies the layout strategy for the visual view.
 *
 * For the PDOM view, this type creates  the three organizing elements associated with each screen:
 * - The `ScreenSummaryNode` is introductory description that outlines the screen and sets the scene for the user.
 * - The `PlayAreaNode` holds content that is considered the main interaction and pedagogy to be learned from the screen.
 * - The `ControlAreaNode` houses controls and other content that is secondary to the main interaction. Ideally the user
 *       would encounter this after exploring the PlayAreaNode.
 * The screenSummaryNode instance is not available on the ScreenView, instead content can be added to it via a constructor
 * option or `ScreenView.setScreenSummaryContent`. This is because some accessible descriptions in the screen summary
 * are the same throughout all simulations. The pdomPlayAreaNode and pdomControlAreaNode instances are protected, read-only Nodes
 * that are meant to have their pdomOrder and children set to achieve the proper PDOM structure. Do not set
 * `pdomOrder` directly on the ScreenView, as ScreenView set's its own pdomOrder
 *
 * @author Sam Reid (PhET Interactive Simulations)
 */
import Property from '../../axon/js/Property.js';
import Bounds2 from '../../dot/js/Bounds2.js';
import Matrix3 from '../../dot/js/Matrix3.js';
import ControlAreaNode from '../../scenery-phet/js/accessibility/nodes/ControlAreaNode.js';
import PlayAreaNode from '../../scenery-phet/js/accessibility/nodes/PlayAreaNode.js';
import { Node, NodeOptions } from '../../scenery/js/imports.js';
import { SpeakableResolvedResponse } from '../../utterance-queue/js/ResponsePacket.js';
import ScreenSummaryContent from './ScreenSummaryContent.js';
type GetLayoutMatrixOptions = {
    verticalAlign?: 'center' | 'bottom';
};
type SelfOptions = {
    layoutBounds?: Bounds2;
    screenSummaryContent?: ScreenSummaryContent | null;
    includePDOMNodes?: boolean;
};
export type ScreenViewOptions = SelfOptions & NodeOptions;
declare class ScreenView extends Node {
    readonly layoutBounds: Bounds2;
    readonly visibleBoundsProperty: Property<Bounds2>;
    private readonly pdomTitleNode;
    protected readonly pdomPlayAreaNode: PlayAreaNode;
    protected readonly pdomControlAreaNode: ControlAreaNode;
    private readonly pdomScreenSummaryNode;
    private readonly pdomParentNode;
    private _screenSummaryContent;
    static readonly DEFAULT_LAYOUT_BOUNDS: Bounds2;
    constructor(providedOptions?: ScreenViewOptions);
    /**
     * This method should not be called because ScreenView defines child Nodes that organize the PDOM structure of a
     * screen. See this.pdomScreenSummaryNode, this.pdomPlayAreaNode, and this.pdomControlAreaNode and set their accessible
     * order accordingly when adding accessible content to the PDOM for this screen.
     *
     * This makes sure that content will be under those Nodes, which are in the same order for all simulations. This
     * creates a consistent experience for screen reader accessibility.
     */
    setPDOMOrder(pdomOrder: Array<Node | null> | null): void;
    /**
     * Override to make sure that setting children doesn't blow away Nodes set by ScreenView.
     */
    setChildren(children: Node[]): this;
    /**
     * Get the scale to use for laying out the sim components and the navigation bar, so its size will track
     * with the sim size
     * (joist-internal)
     */
    getLayoutScale(viewBounds: Bounds2): number;
    /**
     * Default layout function uses the layoutWidth and layoutHeight to scale the content (based on whichever is more limiting: width or height)
     * and centers the content in the screen vertically and horizontally
     * This function can be replaced by subclasses that wish to perform their own custom layout.
     * @param viewBounds - desired bounds for the view
     * (joist-internal)
     */
    layout(viewBounds: Bounds2, layoutMatrixOptions?: GetLayoutMatrixOptions): void;
    get screenSummaryContent(): ScreenSummaryContent | null;
    set screenSummaryContent(node: ScreenSummaryContent | null);
    /**
     * Set the screen summary Node for the PDOM of this Screen View. Prefer passing in a screen summary Node via
     * constructor options, but this method can be used directly when necessary.
     */
    setScreenSummaryContent(node: ScreenSummaryContent | null): void;
    /**
     * Set the screen summary Node intro string
     * (joist-internal)
     */
    setScreenSummaryIntroAndTitle(simName: string, screenDisplayName: string | null, simTitle: string, isMultiScreen: boolean): void;
    /**
     * Create the alert content for this ScreenView when the Voicing feature is enabled and the "Overview" button
     * is pressed.
     * The default uses content from the ScreenSummaryContent. You can override this function if you require different behavior.
     */
    getVoicingOverviewContent(): SpeakableResolvedResponse;
    /**
     * Create the alert content for this ScreenView when the Voicing feature is enabled and the "Details" button is
     * pressed.
     * The default uses content from the ScreenSummaryContent. You can override this function if you require different behavior.
     */
    getVoicingDetailsContent(): SpeakableResolvedResponse;
    /**
     * Create the alert content for this ScreenView when the Voicing feature is enabled and the "Hint" button is pressed.
     * The default uses content from the ScreenSummaryContent. You can override this function if you require different behavior.
     */
    getVoicingHintContent(): SpeakableResolvedResponse;
    /**
     * Interrupts all input listeners that are attached to either this node, or a descendant node.
     *
     * Overridden here so we can interrupt all of the listeners in the Display, see
     * https://github.com/phetsims/scenery/issues/1582.
     */
    interruptSubtreeInput(): this;
    /**
     * Get the scale to use for laying out the sim components and the navigation bar, so its size will track
     * with the sim size
     */
    static getLayoutScale(layoutBounds: Bounds2, viewBounds: Bounds2): number;
    static getLayoutMatrix(layoutBounds: Bounds2, viewBounds: Bounds2, providedOptions?: GetLayoutMatrixOptions): Matrix3;
    step(dt: number): void;
}
export default ScreenView;
//# sourceMappingURL=ScreenView.d.ts.map