import { type ReactElement, type ReactNode } from 'react';
import { type LanguageMap } from '../DatePicker/types';
import { type PlaceholderImageProps } from '../placeholders/Placeholder/Image';
import { type CaptureException } from '../services/ErrorService';
import { type NextFeatureFlagsContextProps } from './NextFeatureFlagsContext';
type Language = 'ru';
type ImagesMap = {
    /**
     * Изображение при отсутствии данных (используется в DataGrid)
     */
    noDataImgSrc: string;
    /**
     * Изображение при ошибке (используется в ContentState)
     */
    defaultErrorImgSrc: string;
    /**
     * Изображение при ошибке загрузки актуальных чанков (используется в
     * ContentState/ErrorBoundary)
     */
    outdatedReleaseErrorImgSrc: string;
    /**
     * Изображение при успешной отправке данных (используется в FeedbackPanel)
     */
    mailImgSrc?: string;
    /**
     * Изображение для загружаемых файлов (используется в PreviewFileUploader)
     */
    uploadFileImgSrc?: string;
    /**
     * Изображение файла, если он не валиден (используется в PreviewFileUploader)
     */
    errorFileImgSrc?: string;
};
type TechnicalSupport = {
    phone: string;
    email: string;
};
export type ConfigContextProps = {
    /**
     * Язык локализации
     * @default 'ru'
     */
    language: Language;
    /**
     * Языковая карта для DatePicker
     * @default russianMap
     */
    datePickerLanguageMap: LanguageMap;
    captureException: CaptureException;
    /**
     * Карта для типовых изображений.
     * Используется в компонентах ui-kit, где требуется отображение декоративных
     * img
     */
    imagesMap: ImagesMap;
    /**
     * Символ для пустого значения
     * @default '—'
     */
    emptySymbol: string;
    /**
     * Данные технической поддержки
     * @default '-'
     */
    techSup: TechnicalSupport;
    /**
     *  флаг скрытия персональной информации от трекеров
     *  @default true
     */
    hidePersonalData?: boolean;
    /**
     * Css-класс для сокрытия персональной информации от трекеров
     */
    hidePersonalDataClassname?: string;
    /**
     * Css-класс для сокрытия персональной информации в инпутах от трекеров
     */
    hidePersonalInputDataClassname?: string;
    /**
     * Настройки для общеиспользуемых компонентов
     */
    components?: {
        /**
         * Настройки для компонента Placeholder
         */
        placeholder?: {
            defaultProps?: {
                /**
                 * Кастомный компонент, ответственный за рендер основного изображения,
                 * По умолчанию рендерится обычный img тег
                 */
                renderImage?: (props: PlaceholderImageProps) => ReactElement;
            };
        };
        layout?: {
            defaultProps?: {
                /**
                 * Динамическое изменение html title в зависимости от title страницы
                 */
                shouldUpdateDocumentTitle?: boolean;
            };
        };
        /**
         * Настройки для компонента ContentState
         */
        contentState?: {
            defaultProps?: {
                /**
                 * Отключает плавное (отложенное) отображение состояния загрузки.
                 *
                 * По умолчанию компонент:
                 * — не показывает лоадер, если загрузка длится менее 200 мс,
                 * — и гарантирует видимость лоадера не менее 500 мс.
                 *
                 * Установка этого флага принудительно включает "мгновенное" отображение:
                 * лоадер показывается и скрывается сразу при изменении `isLoading`.
                 */
                isSmoothLoading?: boolean;
            };
        };
        dataGrid?: {
            defaultProps?: {
                /**
                 * Флаг отключения минимальной высоты таблицы.
                 * Необходимо включить флаг, чтобы избежать баг с скроллом таблицы: https://track.astral.ru/soft/browse/UIKIT-3008.
                 */
                disableMinHeight?: boolean;
            };
        };
    };
};
export type ConfigProviderProps = Partial<ConfigContextProps> & {
    children: ReactNode;
    /**
     * Объект, содержащий глобальные фича-флаги для компонентов.
     * Фича-флаги позволяют включать или выключать определенные функции или поведение компонентов
     * без необходимости изменять код. Флаги группируются по именам компонентов.
     * Переданный в компонент флаг напрямую имеет приоритет выше
     */
    nextFeatureFlags?: NextFeatureFlagsContextProps;
};
export declare const ConfigContext: import("react").Context<ConfigContextProps>;
export declare const ConfigProvider: ({ children, language, datePickerLanguageMap, captureException: captureExceptionProp, emptySymbol, imagesMap, techSup, hidePersonalData, hidePersonalDataClassname, hidePersonalInputDataClassname, components: propsComponents, nextFeatureFlags, }: Partial<ConfigProviderProps>) => import("react/jsx-runtime").JSX.Element;
export {};
