/// <reference types="lodash" />
import type { ComponentType, PropsWithoutRef } from "react";
import React from "react";
import _ from "underscore";
declare const REFRESH_MODE: {
    throttle: (fn: () => void) => (() => void) & _.Cancelable;
    debounce: (fn: () => void) => import("lodash").DebouncedFunc<() => void>;
    debounceLeading: (fn: () => void) => import("lodash").DebouncedFuncLeading<() => void>;
    none: (fn: () => void) => () => void;
};
export type RefreshMode = keyof typeof REFRESH_MODE;
interface ExplicitSizeProps<T> {
    selector?: string;
    wrapped?: boolean;
    refreshMode?: RefreshMode | ((props: T) => RefreshMode);
}
type SizeState = {
    width: number | null;
    height: number | null;
};
type ExplicitSizeOuterProps<T> = Omit<T, "width" | "height">;
declare function ExplicitSize<T>({ selector, wrapped, refreshMode, }?: ExplicitSizeProps<T>): (ComposedComponent: ComponentType<T & SizeState>) => (props: PropsWithoutRef<ExplicitSizeOuterProps<T>> & React.RefAttributes<unknown>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
export default ExplicitSize;
