import * as React from 'react';
import { type UseFocusTrapProps } from '../../hooks/useFocusTrap';
import type { AlignType, AnchorHTMLAttributesOnly, HasDataAttribute, HasRootRef } from '../../types';
import type { AppRootPortalProps } from '../AppRoot/AppRootPortal';
import type { ButtonProps } from '../Button/Button';
import type { AlertActionProps } from './AlertAction';
type AlertActionMode = 'cancel' | 'destructive' | 'default';
export type { AlertActionProps };
export interface AlertActionInterface extends Pick<ButtonProps, 'Component'>, AnchorHTMLAttributesOnly, HasDataAttribute {
    /**
     * Текст опции.
     */
    title: string;
    /**
     * Обработчик нажатия на опцию. Если свойство `autoCloseDisabled` включено,
     * то в аргументы `action` передаётся объект с функцией close,
     * вызвав которую можно закрыть `action` вручную.
     */
    action?: (args?: {
        close?: VoidFunction;
    }) => void;
    /**
     * По умолчанию нажатие на опцию вызывает переданную в `Alert` функцию `onClose`, данное свойство
     * позволяет отключить такое поведение.
     */
    autoCloseDisabled?: boolean;
    /**
     * Режим отображения опции.
     */
    mode: AlertActionMode;
}
export interface AlertProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title' | 'autoFocus'>, Pick<UseFocusTrapProps, 'restoreFocus' | 'autoFocus'>, Pick<AppRootPortalProps, 'usePortal'>, HasRootRef<HTMLDivElement> {
    /**
     * Расположение действий - вертикально или горизонтально.
     */
    actionsLayout?: 'vertical' | 'horizontal';
    /**
     * Тип выравнивания действий.
     */
    actionsAlign?: AlignType;
    /**
     * Список действий.
     */
    actions?: AlertActionInterface[];
    /**
     * Функция для отрисовки действия.
     */
    renderAction?: (props: AlertActionProps) => React.ReactNode;
    /**
     * Заголовок модального окна.
     */
    title?: React.ReactNode;
    /**
     * Описание модального окна.
     */
    description?: React.ReactNode;
    /**
     * Обработчик закрытия модального окна.
     */
    onClose: VoidFunction;
    /**
     * Текст кнопки закрытия. Делает ее доступной для ассистивных технологий.
     */
    dismissLabel?: string;
    /**
     * Расположение кнопки закрытия (внутри и вне `popout'a`)
     * Доступно только в `compact`-режиме, не отображается на `iOS`.
     *
     * ⚠️ ВНИМАНИЕ: использование `none` скрывает крестик, это негативно сказывается на пользовательском опыте.
     */
    dismissButtonMode?: 'inside' | 'outside' | 'none';
    /**
     * Передает атрибут `data-testid` для кнопки закрытия.
     */
    dismissButtonTestId?: string;
    /**
     * Передает атрибут `data-testid` для заголовка.
     */
    titleTestId?: string;
    /**
     * Передает атрибут `data-testid` для описания.
     */
    descriptionTestId?: string;
    /**
     * По умолчанию событие onClick не всплывает.
     */
    allowClickPropagation?: boolean;
}
/**
 * @see https://vkui.io/components/alert
 */
export declare const Alert: ({ usePortal, style, className, getRootRef, ...restProps }: AlertProps) => React.ReactNode;
//# sourceMappingURL=Alert.d.ts.map