import React, { ReactNode } from 'react';
import { Polymorphic } from '../_utils/polymorphic';
import { AriaLabelled, Props } from '../_utils/types';
import { ThumbnailDocumentIconVariant } from './ThumbnailDocumentIcon';
export declare type SizeVariant = 'sm' | 'lg';
export declare type LayoutVariant = 'row' | 'column';
export interface QaTags {
    /**
     * @since 10.19.0
     */
    caption?: string;
}
/**
 * @since 11.6.0
 */
export declare type ThumbnailRoleType = 'checkbox' | 'figure';
export declare type ThumbnailRoles = ThumbnailRoleType | undefined;
interface ThumbnailPolyMap extends Record<ThumbnailRoleType, React.ElementType> {
    figure: 'figure';
    checkbox: 'input';
}
/**
 * @since 11.6.0
 */
export declare type ThumbnailRef<Role extends ThumbnailRoles = undefined> = Role extends ThumbnailRoleType ? Polymorphic.Ref<ThumbnailPolyMap, Role> : React.ComponentPropsWithRef<'div'>['ref'];
export interface BaseThumbnailProps extends Props {
    /**
     * Alt text for the Thumbnail image
     * @since 11.6.0
     */
    alt?: string;
    /**
     * An image URL or a <Code>File</Code> to generate a preview for
     * @since 10.19.0
     */
    src?: File | string | null;
    /**
     * Thumbnail size
     * @default 'lg'
     * @since 10.19.0
     */
    size?: SizeVariant;
    /**
     * Use "focused" view
     * @default false
     * @since 10.19.0
     */
    focused?: boolean;
    /**
     * Use "selected" view
     * @default false
     * @since 10.19.0
     */
    selected?: boolean;
    /**
     * Use "disabled" view
     * @default false
     * @since 10.19.0
     */
    disabled?: boolean;
    /**
     * @since 10.19.0
     */
    error?: boolean;
    /**
     * @since 10.19.0
     */
    clickable?: boolean;
    /**
     * Thumbnail caption
     * @default ''
     * @since 10.19.0
     */
    caption?: string;
    /**
     * Show placeholder for caption if it is empty
     * @default false
     * @since 10.19.0
     */
    hasCaptionPlaceholder?: boolean;
    /**
     * Unless variant is provided, filename is used
     * to choose a placeholder icon based on extension.
     * E.g. for 'filename="panda.png"', image {' '}
     * variant will be used
     * @since 11.7.0
     * */
    filename?: string;
    /**
     * @since 11.7.0
     */
    variant?: ThumbnailDocumentIconVariant;
    /**
     * Thumbnail label
     * @default ''
     * @since 10.19.0
     */
    label?: string;
    /**
     * @since 11.6.0
     */
    tabIndex?: number;
    /**
     * @since 10.19.0
     */
    qa?: QaTags;
    /**
     * @since 11.6.0
     */
    onClick?: (e: React.MouseEvent) => void;
}
declare type DecorativeThumbnailProps<Role extends ThumbnailRoles = undefined> = {
    role?: Role;
} & BaseThumbnailProps;
export declare type ThumbnailProps<Role extends ThumbnailRoles = undefined> = Role extends 'figure' ? Polymorphic.ComponentPropsWithRef<ThumbnailPolyMap, 'figure', never, BaseThumbnailProps> : Role extends 'checkbox' ? Polymorphic.ComponentPropsWithRef<ThumbnailPolyMap, 'checkbox', never, BaseThumbnailProps & {
    /** onChange from React Aria is fired before onClick */
    onChange?: (isSelected: boolean) => void;
}> : DecorativeThumbnailProps & {
    ref?: ThumbnailRef<undefined>;
};
export interface FilePreviewProps {
    /**
     * @since 10.19.0
     */
    file: File;
}
export interface BasePlaceholderProps extends Omit<BaseThumbnailProps, 'src'> {
}
declare type DecorativePlaceholderProps<Role extends ThumbnailRoles = undefined> = {
    role?: Role;
} & BasePlaceholderProps;
export declare type PlaceholderProps<Role extends ThumbnailRoles = undefined> = Role extends 'figure' ? Polymorphic.ComponentPropsWithRef<ThumbnailPolyMap, 'figure', never, AriaLabelled<BasePlaceholderProps>> : Role extends 'checkbox' ? Polymorphic.ComponentPropsWithRef<ThumbnailPolyMap, 'checkbox', never, AriaLabelled<BasePlaceholderProps> & {
    /** onChange from React Aria is fired before onClick */
    onChange?: (isSelected: boolean) => void;
}> : DecorativePlaceholderProps & {
    ref?: ThumbnailRef<undefined>;
};
export interface MultilineCaptionProps {
    /**
     * @since 10.19.0
     */
    disabled: boolean;
    /**
     * @since 10.19.0
     */
    caption: string;
    /**
     * @since 10.19.0
     */
    error: boolean;
    /**
     * @since 10.19.0
     */
    layout: 'row' | 'column';
    /**
     * @since 10.19.0
     */
    qa: string;
}
export interface SinglelineCaptionProps {
    /**
     * @since 10.19.0
     */
    caption: string;
    /**
     * @since 10.19.0
     */
    disabled: boolean;
    /**
     * @since 10.19.0
     */
    error: boolean;
    /**
     * @since 10.19.0
     */
    layout: 'row' | 'column';
    /**
     * @since 10.19.0
     */
    qa: string;
}
export interface CaptionTooltipProps {
    /**
     * @since 10.19.0
     */
    overlay: string;
    /**
     * @since 10.19.0
     */
    isVisible: boolean;
    /**
     * @since 10.19.0
     */
    children: ReactNode;
}
export interface CaptionProps {
    /**
     * @since 10.19.0
     */
    layout: LayoutVariant;
    /**
     * @since 10.19.0
     */
    caption: string;
    /**
     * @since 10.19.0
     */
    disabled?: boolean;
    /**
     * @since 10.19.0
     */
    error?: boolean;
    /**
     * @since 10.19.0
     */
    hasCaptionPlaceholder: boolean;
    /**
     * @since 10.19.0
     */
    multiline: boolean;
    /**
     * @since 10.19.0
     */
    qa?: string;
}
export interface LabelProps {
    /**
     * @since 11.6.0
     */
    id?: string;
    /**
     * @since 10.19.0
     */
    label: string;
    /**
     * @since 10.19.0
     */
    disabled: boolean;
}
export interface TickIconProps {
    /**
     * @since 10.19.0
     */
    size: SizeVariant;
    /**
     * @since 10.19.0
     */
    selected: boolean;
}
export {};
