import React from 'react';
import { ContextType } from './context';
import { Context } from '../machine';
export declare const useAutofocus: (ref: React.RefObject<any>, enable?: boolean) => void;
export declare const useFocusFromMachine: (machineState: ContextType[0], buttonRef: React.RefObject<HTMLButtonElement>, itemRefs: Array<HTMLElement>, searchRef: React.RefObject<HTMLInputElement>, preventScroll?: boolean) => void;
export declare const useIsFirstRender: () => boolean;
/**
 *
 * Batching actions together using setTimeout
 * Storing all actions in array
 * Then pass array to send function
 * Which in turn, will batch them inside machine
 */
export declare const useBatchedSend: (send: Function) => (actionTypes: any[]) => void;
export declare const useSyncPropsWithMachine: (propsToSync: Partial<Context>, deps: Array<any>) => void;
export declare const useMultiRef: () => [HTMLElement[], (index: number) => (ref: HTMLElement) => void];
export declare const useDelegateKeyDownToMachine: (send: Function, selectOnSpace: boolean) => (e: React.KeyboardEvent) => false | undefined;
export declare const usePropagateChangesThroughOnChange: (machineState: ContextType[0], send: ContextType[1], onChange?: Function, isFirstRender?: boolean) => void;
export declare const useOnBlurAndOnFocus: (machineState: ContextType[0], send: ContextType[1], onBlur: Function | undefined, onFocus: Function | undefined, formFieldRef: React.RefObject<any>, isFirstRender: boolean, selectRef: React.RefObject<any>, listRef: React.RefObject<any>) => {
    handleFocus: (_: any) => void;
    handleBlur: (_: any) => void;
};
