/**
 * useUIComponent Hook for React Native
 *
 * Register a component with UI Bridge for component-level actions.
 */
import type { RegisteredNativeComponent } from '../core/types';
/**
 * Action definition for useUIComponent
 */
export interface ComponentActionDef<TParams = unknown, TResult = unknown> {
    /** Action identifier */
    id: string;
    /** Human-readable label */
    label?: string;
    /** Description */
    description?: string;
    /** Handler function */
    handler: (params?: TParams) => TResult | Promise<TResult>;
}
/**
 * useUIComponent options
 */
export interface UseUIComponentOptions {
    /** Unique identifier for the component */
    id: string;
    /** Human-readable name */
    name: string;
    /** Description */
    description?: string;
    /** Actions available on this component */
    actions?: ComponentActionDef[];
    /** Child element IDs owned by this component */
    elementIds?: string[];
    /** Whether to automatically register on mount */
    autoRegister?: boolean;
}
/**
 * useUIComponent return value
 */
export interface UseUIComponentReturn {
    /** Whether the component is registered */
    registered: boolean;
    /** Execute an action on this component */
    executeAction: <TParams = unknown, TResult = unknown>(actionId: string, params?: TParams) => Promise<TResult>;
    /** Manually register the component */
    register: () => void;
    /** Manually unregister the component */
    unregister: () => void;
    /** Update actions dynamically */
    updateActions: (actions: ComponentActionDef[]) => void;
    /** Add an element ID to this component */
    addElement: (elementId: string) => void;
    /** Remove an element ID from this component */
    removeElement: (elementId: string) => void;
    /** The registered component info */
    registeredComponent: RegisteredNativeComponent | null;
}
/**
 * useUIComponent hook for React Native
 *
 * Registers a component with UI Bridge for component-level control.
 * Components can expose high-level actions that may orchestrate multiple element interactions.
 *
 * @example
 * ```tsx
 * function LoginForm() {
 *   const [email, setEmail] = useState('');
 *   const [password, setPassword] = useState('');
 *
 *   useUIComponent({
 *     id: 'login-form',
 *     name: 'Login Form',
 *     actions: [
 *       {
 *         id: 'login',
 *         label: 'Submit Login',
 *         handler: async ({ email, password }) => {
 *           setEmail(email);
 *           setPassword(password);
 *           await submitLogin();
 *         },
 *       },
 *       {
 *         id: 'clear',
 *         label: 'Clear Form',
 *         handler: () => {
 *           setEmail('');
 *           setPassword('');
 *         },
 *       },
 *     ],
 *   });
 *
 *   return (
 *     <View>
 *       <TextInput value={email} onChangeText={setEmail} />
 *       <TextInput value={password} onChangeText={setPassword} secureTextEntry />
 *       <Button title="Login" onPress={handleSubmit} />
 *     </View>
 *   );
 * }
 * ```
 */
export declare function useUIComponent(options: UseUIComponentOptions): UseUIComponentReturn;
/**
 * useUIComponentAction hook
 *
 * Create a stable action handler that can be used with useUIComponent.
 * Useful for memoizing action handlers.
 */
export declare function useUIComponentAction<TParams = unknown, TResult = unknown>(handler: (params?: TParams) => TResult | Promise<TResult>, deps: React.DependencyList): (params?: TParams) => TResult | Promise<TResult>;
//# sourceMappingURL=useUIComponent.d.ts.map