import { PropertyValueMap } from 'lit';
import { ButtonVariant } from '../../common/types';
import { DdsElement } from '../../internal/dds-hu-element';
import { default as DapDSButton } from '../button/button.component';
import { default as DapDSIcon } from '../icon/icon.component';
/**
 * `dap-ds-image-zoom`
 * @summary An image zoom component that provides a Medium.com-style zoom experience. Click an image to expand it to fill the viewport with a smooth animation.
 * @element dap-ds-image-zoom
 * @title - Image Zoom
 *
 * @property {boolean} open - The open/zoomed state. Can be used for controlled mode.
 * @property {boolean} isDisabled - Disables zoom functionality.
 * @property {number} zoomMargin - Margin in pixels from viewport edges when zoomed. Default is 0.
 * @property {string} expandButtonAriaLabel - Accessible label for the zoom trigger. Default is 'Expand image'.
 * @property {string} unzoomButtonAriaLabel - Accessible label for the unzoom button. Default is 'Minimize image'.
 * @property {boolean} hideButtons - Hides the expand and unzoom buttons. Default is false.
 * @property {boolean} canSwipeToUnzoom - Enables swipe gesture to close when zoomed. Default is true.
 * @property {number} swipeToUnzoomThreshold - Swipe distance in pixels required to trigger unzoom. Default is 10.
 * @property {string} zoomSrc - URL of a higher quality image to display when zoomed. Falls back to the slotted image src.
 *
 * @event {CustomEvent} dds-zoom - Fires when the image is about to zoom. Cancelable via event.preventDefault().
 * @event {CustomEvent} dds-unzoom - Fires after the image has unzoomed.
 *
 * @slot - The image or content element to zoom. Should contain an <img> element.
 *
 * @csspart trigger - The zoom trigger wrapper element.
 * @csspart dialog - The zoom dialog element.
 * @csspart overlay - The backdrop overlay element.
 * @csspart zoomed-image - The zoomed image element.
 * @csspart unzoom-button - The button to close the zoomed view.
 * @csspart expand-button - The button to expand the image.
 * @csspart expand-button-base - The base of the expand button.
 * @csspart expand-button-content - The content of the expand button.
 * @csspart unzoom-button-base - The base of the unzoom button.
 * @csspart unzoom-button-content - The content of the unzoom button.
 * @csspart expand-button-icon - The icon of the expand button.
 * @csspart unzoom-button-icon - The icon of the unzoom button.
 *
 * @cssproperty --dds-image-zoom-overlay-bg - Overlay background color (default: rgba(0, 0, 0, 0.8)).
 * @cssproperty --dds-image-zoom-transition-speed - Animation duration (default: 300ms).
 * @cssproperty --dds-image-zoom-transition-timing - Animation timing function (default: var(--dds-easing-ease-in-out, ease-in-out)).
 */
export default class DapDSImageZoom extends DdsElement {
    static tagName: string;
    static dependencies: {
        'dap-ds-button': typeof DapDSButton;
        'dap-ds-icon': typeof DapDSIcon;
    };
    static readonly styles: import('lit').CSSResult;
    private _dialog;
    /** The open/zoomed state. */
    open: boolean;
    /** Disables zoom functionality. */
    isDisabled: boolean;
    /** Margin in pixels from viewport edges when zoomed. */
    zoomMargin: number;
    /** Accessible label for the zoom trigger. */
    expandButtonAriaLabel: string | null;
    /** Accessible label for the unzoom button. */
    unzoomButtonAriaLabel: string | null;
    /** Enable swipe down gesture to close when zoomed. */
    canSwipeToUnzoom: boolean;
    /** Distance in pixels a swipe must travel to trigger unzoom. */
    swipeToUnzoomThreshold: number;
    /** URL of a higher quality image to display when zoomed. Falls back to slotted image src. */
    zoomSrc?: string;
    /** Hides the expand and unzoom buttons. Useful when the host UI provides its own controls. */
    hideButtons: boolean;
    zoomButtonVariant: ButtonVariant;
    /** `data-testid` for the expand/zoom button. */
    expandButtonTestId: string;
    /** `data-testid` for the unzoom/close button. */
    unzoomButtonTestId: string;
    private _dialogState;
    private _slottedImgSrc;
    private _slottedImgAlt;
    private _slottedImg;
    private _touchStartY;
    private _closeTimeout?;
    private _previouslyFocusedElement;
    disconnectedCallback(): void;
    protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    private _setDialogState;
    private _handleSlotChange;
    private _openDialog;
    private _animateClose;
    /** Programmatically zoom the image. */
    zoom(): void;
    /** Programmatically unzoom the image. */
    unzoom(): void;
    private _handleTriggerClick;
    private _handleTriggerKeydown;
    private _handleDialogCancel;
    private _handleTouchStart;
    private _handleTouchEnd;
    render(): import('lit-html').TemplateResult<1>;
}
