import * as React from 'react';
import type { AnchorHTMLAttributesOnly, HasDataAttribute, HasRootRef, LiteralUnion } from '../../types';
import { ImageBaseBadge, type ImageBaseBadgeProps } from './ImageBaseBadge/ImageBaseBadge';
import { type FloatElementIndentation, type FloatElementPlacement, ImageBaseFloatElement, type ImageBaseFloatElementProps } from './ImageBaseFloatElement/ImageBaseFloatElement';
import { ImageBaseOverlay, type ImageBaseOverlayProps } from './ImageBaseOverlay/ImageBaseOverlay';
import { ImageBaseContext } from './context';
import type { ImageBaseContextProps, ImageBaseExpectedIconProps, ImageBaseSize } from './types';
export type { ImageBaseSize, ImageBaseExpectedIconProps, ImageBaseBadgeProps, ImageBaseOverlayProps, ImageBaseContextProps, ImageBaseFloatElementProps, FloatElementPlacement, FloatElementIndentation, };
export { getBadgeIconSizeByImageBaseSize, getFallbackIconSizeByImageBaseSize, getOverlayIconSizeByImageBaseSize, } from './helpers';
export { ImageBaseContext };
export interface ImageBaseProps extends React.ImgHTMLAttributes<HTMLElement>, AnchorHTMLAttributesOnly, HasRootRef<HTMLDivElement> {
    /**
     * Задаёт размер картинки.
     *
     * Используйте размеры заданные дизайн-системой `16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 56 | 64 | 72 | 80 | 88 | 96`.
     *
     * > ⚠️ Использование кастомного размера – это пограничный кейс.
     */
    size?: LiteralUnion<ImageBaseSize, number>;
    /**
     * Ширина изображения.
     */
    widthSize?: number | string;
    /**
     * Высота изображения.
     */
    heightSize?: number | string;
    /**
     * Отключает обводку.
     */
    noBorder?: boolean;
    /**
     * Фолбек на случай, если картинка не прогрузилась.
     *
     * > 📝 Нужный для `<ImageBase size={...} />` размер можно узнать из функции `getFallbackIconSizeByImageBaseSize()`.
     *
     * > Предпочтительней использовать иконки из `@vkontakte/icons`.
     *
     * > 📊️ Если вы хотите передать кастомную иконку, то следует именовать её по шаблону `Icon<size><name>`. Или же
     * > чтобы в неё был передан параметр `width`. Тогда мы сможем выводить в консоль подсказку правильного ли размера вы
     * > использовали иконку.
     *
     * > ⚠️ Может перекрывать `children`.
     */
    fallbackIcon?: React.ReactElement<ImageBaseExpectedIconProps>;
    /**
     * Отключает фон, заданный по умолчанию. Полезен для отображения картинок с прозрачностью.
     * @since 5.10.0
     */
    withTransparentBackground?: boolean;
    /**
     * Пользовательское значения стиля object-fit
     * Подробнее можно почитать в [документации](https://developer.mozilla.org/ru/docs/Web/CSS/object-fit).
     */
    objectFit?: React.CSSProperties['objectFit'];
    /**
     * Пользовательское значения стиля object-position
     * Подробнее можно почитать в [документации](https://developer.mozilla.org/ru/docs/Web/CSS/object-position).
     */
    objectPosition?: React.CSSProperties['objectPosition'];
    /**
     * Флаг для сохранения пропорций картинки.
     * Для корректной работы необходимо задать размеры хотя бы одной стороны картинки.
     */
    keepAspectRatio?: boolean;
    /**
     * Смотри https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/elementtiming.
     */
    elementTiming?: string;
    /**
     * Пользовательское значения стиля filter
     * Подробнее можно почитать в [документации](https://developer.mozilla.org/ru/docs/Web/CSS/filter).
     */
    filter?: React.CSSProperties['filter'];
    /**
     * Свойства, которые можно прокинуть внутрь компонента:
     * - `img`: свойства для прокидывания в тег `<img>`;.
     */
    slotProps?: {
        img?: React.ComponentProps<'img'> & HasRootRef<HTMLImageElement> & HasDataAttribute;
    };
    /**
     * @deprecated Since 7.9.0. Будет удалено в v9. Используйте `slotProps={ img: { getRootRef: ... } }`.
     */
    getRef?: React.Ref<HTMLImageElement>;
}
/**
 * @see https://vkui.io/components/image-base
 */
export declare const ImageBase: React.FC<ImageBaseProps> & {
    Badge: typeof ImageBaseBadge;
    Overlay: typeof ImageBaseOverlay;
    FloatElement: typeof ImageBaseFloatElement;
};
//# sourceMappingURL=ImageBase.d.ts.map