/**
* FloatingOverlayWrapper — Cross-platform elevated overlay.
*
* Platform strategy (in priority order):
*
* iOS:
* 1. `FullWindowOverlay` from react-native-screens (optional peer dep).
* Creates a separate UIWindow at UIWindow.Level.alert+1.
* Renders ABOVE all native Modals, system alerts, and navigation chrome.
* 2. Falls back to plain View if react-native-screens is not installed.
*
* Android:
* 1. Uses a native panel dialog window when explicit bounds are provided.
* This keeps the floating agent compact and above native modal surfaces.
* 2. Falls back to a plain View otherwise.
*
* Usage:
*
*
* {chatBar}
* {consentDialog} ← must be INSIDE the wrapper, AFTER the chat bar in JSX
*
*
*
* Note: FullWindowOverlay on iOS does NOT officially accept style props in its TS definition,
* but passing StyleSheet.absoluteFill is often necessary to prevent dimensions collapsing conditionally.
*/
import React from 'react';
/**
* True when a native elevated overlay is available on the current platform.
* Used by AIConsentDialog to decide whether to render as View vs Modal.
*
* iOS + react-native-screens installed → true
* Everything else (fallback) → false
*/
export declare const isNativeOverlayActive: boolean;
interface FloatingOverlayWrapperProps {
children: React.ReactNode;
androidWindowMetrics?: {
x: number;
y: number;
width: number;
height: number;
} | null;
onAndroidWindowDragEnd?: (metrics: {
x: number;
y: number;
width: number;
height: number;
}) => void;
/**
* Style applied to the View wrapper when no native overlay is available.
* Ignored on iOS (FullWindowOverlay creates its own UIWindow) and
* Android (native module creates its own panel dialog window).
*/
fallbackStyle?: any;
}
export interface FloatingOverlayWrapperHandle {
setAndroidWindowMetrics: (metrics: NonNullable) => void;
}
export declare const FloatingOverlayWrapper: React.ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=FloatingOverlayWrapper.d.ts.map