* Steps and run history will be removed.
*
* modal.open = true;
* modal.addEventListener('baht-close', (e) => (modal.open = false));
*
* `placement` moves the panel: `'center'` (default) is the dialog above;
* `'sheet'` docks it to the bottom as a bottom sheet below 600px viewport
* width (full width, rounded top corners, a grab handle, max 90dvh with the
* body scrolling, slides up) and is a centered dialog from 600px up; `'side'`
* is a full-height drawer at the inline end, `min(420px, 100vw)` wide, sliding
* in from that edge. Scrim, focus trap/restore and `baht-close` are the same in
* every placement. Modifier classes: `.baht-modal--sheet` / `.baht-modal--side`
* on the panel, `.baht-modal-scrim--sheet` / `.baht-modal-scrim--side` on the scrim.
*/
export declare class BahtModal extends BahtElement {
open: boolean;
heading: string;
/** One muted line under the heading; also becomes the dialog's aria-describedby. */
description: string;
showClose: boolean;
/** `'center'` (default) dialog, `'sheet'` bottom sheet below 600px (centered
* from 600px up), or `'side'` full-height drawer at the inline end. */
placement: ModalPlacement;
/**
* Scrim click requests close. Off by default: a stray click outside the panel
* must not throw away what the user typed — close via ×, Escape or your buttons.
*/
closeOnScrim: boolean;
private bodyEl;
private get titleId();
private get descriptionId();
private closing;
private closeToken;
private previousFocus;
private onKeydown;
private focusables;
/** Keep Tab cycling inside the dialog (no keyboard escape to the page behind). */
private trapFocus;
connectedCallback(): void;
disconnectedCallback(): void;
protected firstUpdated(): void;
protected willUpdate(changed: Map