import { FrameBase } from './frame-common';
import type { WindowBase } from '../../native-window';
export declare const frameStack: Array<FrameBase>;
/**
 * Gets the frame highest in the stack that belongs to the given window, or `undefined` when
 * the window hosts no frame that is currently in the stack.
 */
export declare function topmostForWindow(window: WindowBase): FrameBase | undefined;
/**
 * Gets the topmost frame of a window: the given one, or the active window when none is given.
 *
 * Resolution order:
 * 1. the frame highest in the stack when it belongs to no window - a frame enters the stack on
 *    `navigate()`, which can happen before it is attached to any window, and scoping cannot
 *    place such a frame in one window rather than another, so every caller gets it;
 * 2. the frame highest in the stack that belongs to the window;
 * 3. the frame highest in the stack regardless of window, when that window hosts none.
 */
export declare function topmost(window?: WindowBase): FrameBase;
export declare function _isFrameStackEmpty(): boolean;
export declare function _pushInFrameStack(frame: FrameBase): void;
export declare function _popFromFrameStack(frame: FrameBase): void;
export declare function _removeFromFrameStack(frame: FrameBase): void;
