import { FileType, IAllFiles, IAllImages, IFormFile, IServerFileForm, IServerImageForm, ITempFiles, ITempImages, IUploadImage, IUploadImagesStore, Languages, LanguagesTypes } from '../types';
import { TranslateTextType } from './types';
import { ITranslateContentNode } from '../ui/text-editor';
/**
 * @description Преобразует value у инпута в поле маски телефона
 * @param eventValue - исходное значение инпута
 * @response Возвращает либо обработанную строку, либо пустую строку
 * @example
 * 79881234567 -> +79881234567
 * 89881234567 -> +79881234567
 * 19881234567 -> +19881234567
 * 8 (988) 505-42-19 -> +79885054219
 */
export declare const convertPhoneMask: (eventValue: string) => string;
/**
 * @description Форматирует номер телефона из интернационального в обычный
 * @param {string} phone - Номер телефона
 * @return {string} Возвращает либо пустую строку, либо отформатированный номер телефона
 * @example
 * const phone = formatPhone(+7 988 505 42 19)
 * phone === "+79885054219"
 */
export declare const formatPhoneToNumber: (phone: string) => string;
/**
 * @description Конвертация файла в base64
 * @param {FileType} parameter - Файл
 * @return {string} Возвращает строку base64
 */
export declare const fileToBase64: (file: FileType) => Promise<string>;
/**
 * @description Создать upload image store для zustand
 * @return {IUploadImagesStore} Возвращает структуру store
 */
export declare const createUploadImagesStore: (set: {
    (partial: IUploadImagesStore | Partial<IUploadImagesStore> | ((state: IUploadImagesStore) => IUploadImagesStore | Partial<IUploadImagesStore>), replace?: false): void;
    (state: IUploadImagesStore | ((state: IUploadImagesStore) => IUploadImagesStore), replace: true): void;
}) => IUploadImagesStore;
/**
 * @description Переводит массив с данными в объект для select
 * @param {object[]} array - Исходный массив
 * @param {string} label - Название ключа с данными для label
 * @param {string} value - Название ключа с данными для label
 */
export declare const objectArrayToOptions: (array: object[], label: string, value: string) => {
    label: string;
    value: string;
}[];
/**
 * @description Подготавливает фотографии к отправке
 * @param newImages- Новые фотографии
 * @param serverImages- Фотографии с сервера
 * @param imagesOrder - Порядок фотографий
 * @param imagesData - Фотографии из стейта
 * @param limit - Лимит фотографий
 */
export declare const prepareImagesToSubmit: ({ newImages, serverImages, imagesOrder, imagesData, limit, }: {
    newImages: IFormFile[];
    serverImages: IServerImageForm[];
    imagesOrder: string[];
    imagesData: IUploadImage[];
    limit?: number;
}) => {
    tempImages: ITempImages[];
    allImages: IAllImages[];
};
/**
 * @description Подготавливает файлы к отправке
 * @param newFiles- Новые файлы
 * @param serverFiles- Файлы с сервера
 * @param filesOrder - Порядок файлов
 * @param limit - Лимит фотографий
 */
export declare const prepareFilesToSubmit: ({ newFiles, serverFiles, filesOrder, limit, }: {
    newFiles: IFormFile[];
    serverFiles: IServerFileForm[];
    filesOrder: string[];
    limit?: number;
}) => {
    tempFiles: ITempFiles[];
    allFiles: IAllFiles[];
};
/**
 * @description Проверка валидности url
 * @param {string} string - строка
 * @return {boolean}
 */
export declare const isUrl: (string: string) => boolean;
/**
 * @description Форматирует номер телефона в интернациональный вид
 * @param {string} phone - Номер телефона
 * @return {string} Возвращает либо пустую строку, либо отформатированный номер телефона
 * @example
 * const phone = formatPhone(+7 988 505 42 19)
 * phone === "+7 988 505 42 19"
 */
export declare const formatPhoneToInternational: (phone: string) => string;
/**
 * @description Формирует label из имени, телефона и почты
 * @param {object} object - Объект с данными
 * @param {string} object.fullName - ФИО
 * @param {string} object.phone - Телефон
 * @param {string} object.email - Email
 */
export declare const createProfileLabel: ({ fullName, phone, email, }: {
    fullName?: string | null;
    phone?: string | null;
    email?: string | null;
}) => string;
/**
 * @description Переводит текст поля на с русского на остальные языки
 * @param {string} name - Название поля без языкового кода. К примеру name
 * @param {Languages} lang - Код языка
 * @param {LanguagesTypes[]} langsList - Массив языков для перевода
 * @param {string | undefined} value - Значение, которое было на исходном языке
 * @param  translateText - Функция перевода на другой язык
 */
export declare const translateField: ({ name, lang, langsList, value, translateText, }: {
    name: string;
    lang: Languages;
    langsList: LanguagesTypes[];
    value: string | undefined;
    translateText: TranslateTextType;
}) => Promise<{
    [key: string]: string;
}[]>;
/**
 * @description Переводит alt описание картинок
 * @param data - Массив с объектами с информацией о картинках
 * @param mainLang - Основной язык
 * @param langsList - Языки для перевода
 * @param translateText - Функция перевода
 */
export declare const translateImagesAlt: ({ data, mainLang, langsList, translateText, }: {
    data: IUploadImage[];
    mainLang: Languages;
    langsList: LanguagesTypes[];
    translateText: TranslateTextType;
}) => Promise<IUploadImage[]>;
/**
 * @description Переводит контент на другой язык
 * @param {object} nodes - упрощенный объект Descendant с поля children и text
 * @param {Languages} sourceLanguage - с какого языка перевести
 * @param {Languages} targetLanguage - на какой язык перевести
 * @param {TranslateTextType} translateText - функция перевода
 * @return {object} Возвращает структуру для slate, но с другими языками
 */
export declare const translateContent: ({ nodes, sourceLanguage, targetLanguage, translateText, }: {
    nodes: ITranslateContentNode[];
    sourceLanguage: Languages;
    targetLanguage: Languages;
    translateText: TranslateTextType;
}) => Promise<ITranslateContentNode[]>;
/**
 * @description Сравнивает два массива ролей между собой на то, какой пользователь имеет приоритет
 * @param userRoles - Массив с ролями пользователя
 * @param comparedUserRoles - Массив с ролями пользователя, с которым сравниваем
 * @param rolePriority - Объект ключ - значение, с приоритетностью ролей
 */
export declare const compareRolesPriority: ({ userRoles, comparedUserRoles, rolePriority, }: {
    userRoles: string[];
    comparedUserRoles: string[];
    rolePriority: Record<string, number>;
}) => {
    maxUserRolePriority: number;
    maxComparedUserRolePriority: number;
    isPriorityHigher: boolean;
    isPriorityEqual: boolean;
    isPriorityLower: boolean;
};
/**
 * @description Делает поиск для Select по полю label
 * @param input - вводимое значение
 * @param option - объект с option
 */
export declare const onFilterSelectOptionsByLabel: (input: string, option: {
    label: string;
} | undefined) => boolean;
/**
 * @description Переводит контент на другой язык
 * @param nodes - упрощенный объект Descendant с поля children и text
 * @param sourceLanguage - с какого языка перевести
 * @param langsList - список языков
 * @param { TranslateTextType } translateText - функция перевода
 * @return Возвращает массив с объетами, в котором ключ это поле языка, а значение переведенный контент для текстового редактора
 */
export declare const translateContentToLanguages: ({ nodes, sourceLanguage, langsList, translateText, }: {
    nodes: ITranslateContentNode[];
    sourceLanguage: Languages;
    langsList: LanguagesTypes[];
    translateText: TranslateTextType;
}) => Promise<{
    [x: string]: ITranslateContentNode[];
}[]>;
