import { ReactNode } from 'react';
import { FloatingCursorConfig, FloatingCursorUpdate } from '../types';
/**
* Floating cursor context state
*/
export interface FloatingCursorContextType {
/** Current cursor position and state */
cursorState: FloatingCursorUpdate | null;
/** Whether cursor is enabled */
isEnabled: boolean;
/** Cursor configuration */
config: FloatingCursorConfig;
/** Update cursor position and text */
updateCursor: (update: FloatingCursorUpdate) => void;
/** Show cursor in resting position */
showResting: (text?: string) => void;
/** Hide cursor */
hide: () => void;
/** Enable cursor */
enable: () => void;
/** Disable cursor */
disable: () => void;
}
/**
* Props for FloatingCursorProvider
*
* Note: This is an internal component. Users don't use this directly.
* It's automatically included in VowelProvider.
*/
export interface FloatingCursorProviderProps {
/** Floating cursor configuration */
config: FloatingCursorConfig;
/** Children to render */
children: ReactNode;
}
/**
* Floating Cursor Provider (Internal)
*
* Provides floating cursor state management for React applications.
* This is automatically wrapped by VowelProvider - users don't need to use this directly.
*
* The actual cursor rendering happens in FloatingCursorRenderer, which can be:
* - Automatically included in VowelAgent (default)
* - Rendered separately for custom placement
*
* @example This is internal - users use VowelProvider instead
* ```tsx
*
* // Cursor automatically included
*
* ```
*/
export declare function FloatingCursorProvider({ config, children, }: FloatingCursorProviderProps): import("react/jsx-runtime").JSX.Element;
/**
* Hook to access floating cursor context
*
* Use this in custom components that need to control the floating cursor.
*
* @example
* ```tsx
* function MyAutomationComponent() {
* const { updateCursor } = useFloatingCursor();
*
* const handleAction = () => {
* updateCursor({ x: 50, y: 50, text: 'Clicking button', isIdle: false });
* };
*
* return ;
* }
* ```
*/
export declare function useFloatingCursor(): FloatingCursorContextType;
/**
* Optional hook that returns null if not in FloatingCursorProvider
*
* Use this for components that work with or without cursor support.
*
* @example
* ```tsx
* function MyComponent() {
* const cursor = useFloatingCursorOptional();
*
* const handleAction = () => {
* // Only update cursor if available
* cursor?.updateCursor({ x: 50, y: 50, text: 'Action', isIdle: false });
* };
* }
* ```
*/
export declare function useFloatingCursorOptional(): FloatingCursorContextType | null;
//# sourceMappingURL=FloatingCursorProvider.d.ts.map