export interface StateRef<T> {
    get(): T;
    set(value: T): void;
    confirm(): void;
}
export declare function useStateRef<T>(initialValue: T): {
    get(): T;
    set: (value: T) => void;
    confirm(): void;
    useOnChange(on: (value: T) => (void | (() => void))): void;
    useMemo<TOut>(on: (value: T) => TOut, deps?: any[]): TOut;
    useValidate(on: (value: T) => T): void;
    useConfirm(on: (value: T) => T): void;
};
export interface ActionRef {
    call(): void;
    set(func: () => void): void;
}
export declare function useActionRef(action: () => void): ActionRef;
export interface ArgActionRef<T> {
    call(arg: T): void;
    set(func: (arg: T) => void): void;
}
export declare function useArgActionRef<T>(action: (arg: T) => void): ArgActionRef<T>;
export interface FuncRef<T> {
    call(): T;
    set(func: () => T): void;
}
export declare function useFuncRef<T>(func: () => T): FuncRef<T>;
export interface AsyncFuncRef<T> {
    call(): Promise<T>;
    set(func: () => Promise<T>): void;
}
export declare function useAsyncFuncRef<T>(func: () => Promise<T>): AsyncFuncRef<T>;
export interface ArgFuncRef<TArg, TResult> {
    call(arg: TArg): TResult;
    set(func: (arg: TArg) => TResult): void;
}
export declare function useArgFuncRef<TArg, TResult>(func: (arg: TArg) => TResult): ArgFuncRef<TArg, TResult>;
