import React, { SetStateAction } from 'react'; export declare type CloneFunc = (e: React.ReactElement, p?: Record, ix?: number) => React.ReactElement; export declare function cloneAll(children: React.ReactNode, cloneProps?: Record, makeClone?: CloneFunc): React.ReactChild[]; declare type Ref = React.RefCallback | React.MutableRefObject | null | undefined; declare type HybridRef = React.RefCallback & React.RefObject; export declare function useMergedRefs(...refs: Ref[]): HybridRef; declare type Func = (...args: any[]) => R; declare type NotFunc = T extends Func ? never : T; interface ValueHook { (mkValue: T, args: Parameters): ReturnType; >(mkValue: T, deps: D, compareDependencies: (prev: Parameters, current: D) => Parameters): ReturnType; (value: NotFunc, deps: unknown[]): T; (value: NotFunc, deps: D, compareDependencies: (prev: D, current: D) => D): T; } export declare const useValue: ValueHook; interface UseBox { (box: T): T; (box: M, init: I, ...args: Parameters): M & ReturnType; } export declare const useBox: UseBox; declare type StateSetterWithCallback = (v: SetStateAction, callback?: () => void) => void; export declare function useStateWithCallback(initialState: S | (() => S)): [S, StateSetterWithCallback]; export declare const useRenderTrigger: () => (() => void); declare type SemiControlProps = { input: T; value: unknown; onChange: React.ChangeEventHandler; } & Omit, 'as' | 'ref' | 'value' | 'onChange'>; export declare const SemiControlled: >(props: SemiControlProps) => React.ReactElement; export {};