import { MutableRefObject } from "react";
import { iPleaseWaitProps } from "../controls/please-wait";
export interface iTrackChanges {
    hasChanges: boolean;
    hasChangesRef: MutableRefObject<boolean>;
    setHasChanges: (newValue: boolean) => Promise<boolean>;
    onSaveChanges: (worker: () => Promise<{
        success: boolean;
        message?: string;
    }>, props?: {
        waitProps?: iPleaseWaitProps;
    }) => Promise<void>;
    /** if there are changes, prompt the user. otherwise just call handler. */
    doIfNoChanges: <ReturnType>(handler: () => ReturnType) => ReturnType;
}
export declare function useTrackChanges({ blockNav }?: {
    blockNav?: boolean;
}): {
    trackChanges: iTrackChanges;
    /** include in your react control */
    trackChangesElement: JSX.Element;
};
/** @deprecated renamed to useTrackChanges */
export declare function useEditableControl(): {
    editablePageElement: JSX.Element;
    hasChanges: boolean;
    hasChangesRef: MutableRefObject<boolean>;
    setHasChanges: (newValue: boolean) => Promise<boolean>;
    onSaveChanges: (worker: () => Promise<{
        success: boolean;
        message?: string;
    }>, props?: {
        waitProps?: iPleaseWaitProps;
    }) => Promise<void>;
    /** if there are changes, prompt the user. otherwise just call handler. */
    doIfNoChanges: <ReturnType>(handler: () => ReturnType) => ReturnType;
};
