import type React from 'react';
import type { RefCallback } from 'react';
import type { Nullable } from '../typings/utility-types.js';
type RefVariants<T> = Nullable<React.RefObject<T | null> | React.RefCallback<T>>;
/**
 * Позволяет объединить несколько параметров ref в один вызов, в котором во все переданные параметры просетится ref.
 *
 * Кеширует результат возвращаемой функции, так что при одинаковых входных параметрах React-у будет возвращена одинаковая функция.
 * Это позволит не вызывать лишние commitAttachRef и commitDetachRef и не ловить сайдэффекты связанные со значением ref в моменте
 *
 * Не прокидывай в параметрах стрелочные функции, так результат не будет закеширован.
 *
 * @returns function that passed refs: (...refs) =>
 *
 * @example
 * const SomeComponent = forwardRef((props, ref) => {
 *  const localRef = useRef();
 *  return <div ref={mergeRefs(localRef, ref)} />;
 * });
 */
export declare function mergeRefs<T>(...refs: Array<RefVariants<T>>): RefCallback<T>;
export {};
