/** @packageDocumentation
 * @module ToolSettings
 */
import * as React from "react";
import type { UiLayoutDataProvider } from "@itwin/appui-abstract";
/** This is used to notify the parent component that the lock decoration is displayed in the editor
 * and a separate lock component should not be displayed as a sibling.
 * @internal
 */
export declare const LockContext: React.Context<{
    /** Describes if the lock is displayed as an editor decoration. */
    lockDecorations: Record<string, true>;
    /** Called by editors that display lock decoration. */
    setLockDecoration: (propertyName: string, lockDecoration: boolean) => void;
} | undefined>;
/** @internal */
export declare function LockProvider({ children }: React.PropsWithChildren): React.JSX.Element;
/** Additional context for property editors that support lock decoration.
 * @internal
 */
export declare const PropertyEditorContext: React.Context<{
    uiDataProvider: UiLayoutDataProvider;
    itemPropertyName: string;
    /** Specified when rendering a lock editor. */
    lockPropertyName: string | undefined;
} | undefined>;
type PropertyEditorContextType = React.ContextType<typeof PropertyEditorContext>;
interface PropertyEditorProviderProps extends NonNullable<PropertyEditorContextType> {
    children?: React.ReactNode;
}
/** @internal */
export declare function PropertyEditorProvider(props: PropertyEditorProviderProps): React.JSX.Element;
/** Returns `true` if the lock decoration should be displayed.
 * @internal
 */
export declare function useLockDecoration(): boolean;
interface UseLockPropertyArgs {
    provider: UiLayoutDataProvider;
    itemPropertyName: string;
}
/** @internal */
export declare function useLockProperty(args: UseLockPropertyArgs | undefined): import("@itwin/appui-abstract").BaseDialogItem | undefined;
/** This component displays a lock button in the property editor when the `toolSettingsLockButton` preview feature is enabled.
 * @alpha
 */
export declare function LockButtonInputDecoration(): React.JSX.Element | null;
export {};
//# sourceMappingURL=LockProvider.d.ts.map