/**
 * @license
 * Copyright 2026 Kai-Orion & Sandlada
 * SPDX-License-Identifier: MIT
 */
import { LitElement, nothing, type PropertyValues, type TemplateResult } from 'lit';
import { type ISideSheetDragHost } from './side-sheet-drag-controller';
import { type ISideSheet, type SideSheetEdge, type SideSheetVariant } from '../side-sheet.interface';
declare const BaseSideSheet_base: Omit<typeof LitElement, "prototype"> & (new () => LitElement & object & import("../../elevation/elevation-options.mixin").IMixinElevationOptions);
/**
 * Abstract base for `mdc-side-sheet`. Owns the lifecycle, focus traps,
 * drag controller, and event dispatch. Subclasses define the public tag and the default
 * variant.
 *
 * @version
 * Material Design 3
 *
 * @link
 * https://m3.material.io/components/side-sheets/guidelines
 */
export declare abstract class BaseSideSheet extends BaseSideSheet_base implements ISideSheet, ISideSheetDragHost {
    static styles: import("lit").CSSResult[];
    variant: SideSheetVariant;
    open: boolean;
    sheetEdge: SideSheetEdge;
    maxWidth: number;
    quick: boolean;
    /**
     * Whether Esc and scrim taps dismiss the modal sheet. Custom string-aware
     * converter so `cancelable="false"` is honoured (Lit default treats any
     * present attribute as `true`).
     */
    cancelable: boolean;
    noFocusTrap: boolean;
    returnValue: string;
    showBackButton: boolean;
    /**
     * Swipe-to-dismiss drag gesture. Enabled by default.
     */
    draggable: boolean;
    protected hasHeadline: boolean;
    protected hasContent: boolean;
    protected hasActions: boolean;
    protected hasCloseIcon: boolean;
    protected hasBackIcon: boolean;
    private lastCloseReason;
    private previouslyFocused;
    /**
     * Cancels any in-flight WAAPI animations (scrim + container) when a fresh
     * `show()` or `hide()` interrupts them. Replaces the old CSS
     * `transitionend` + `pendingClose` design — the CSS version wedged the
     * sheet open when consumers toggled faster than the close animation
     * finished (the cancelled transition never fired `transitionend`, so
     * `pendingClose` stayed `true` forever). See `animateSideSheet`.
     */
    protected cancelAnimations?: AbortController;
    protected readonly dialogEl: HTMLDialogElement | null;
    protected readonly containerEl: HTMLElement | null;
    protected readonly scrimEl: HTMLElement | null;
    protected readonly headlineEl: HTMLElement | null;
    protected readonly closeIconEl: HTMLElement | null;
    ariaLabel: string | null;
    private readonly dragController;
    constructor();
    containerRef(): HTMLElement | null;
    headlineRef(): HTMLElement | null;
    scrimRef(): HTMLElement | null;
    enabled(): boolean;
    getVariant(): SideSheetVariant;
    getSheetEdge(): SideSheetEdge;
    protected getRenderClasses(): Record<string, boolean | string>;
    protected render(): TemplateResult;
    protected renderHeadlineBackIcon(): TemplateResult | typeof nothing;
    protected renderFocusTrap(position: 'first' | 'last'): TemplateResult;
    show(): Promise<void>;
    hide(): Promise<void>;
    close(returnValue?: string): Promise<void>;
    dragCommittedClose(fromDx?: number): Promise<void>;
    dragSnapBack(fromDx?: number): Promise<void>;
    private readTranslateX;
    private handleDragEnd;
    private handleHeadlinePointerDown;
    private handleContainerPointerDown;
    /**
     * Close the native `<dialog>` element, removing it from the top layer.
     * Safe to call multiple times — no-ops if the dialog is already closed.
     */
    private closeDialog;
    protected willUpdate(changed: PropertyValues<this>): void;
    disconnectedCallback(): void;
    private animateSideSheet;
    private focusFirstInside;
    private restoreFocus;
    private getFocusableElements;
    private handleHeadlineSlotChange;
    private handleContentSlotChange;
    private handleActionsSlotChange;
    private handleCloseIconSlotChange;
    private handleBackIconSlotChange;
    private handleNativeCancel;
    private handleHostClick;
    private handleKeydown;
    private handleCloseIconClick;
    private handleBackIconClick;
    private handleFirstFocusTrapFocus;
    private handleLastFocusTrapFocus;
}
export {};
//# sourceMappingURL=base-side-sheet.d.ts.map