import type React from 'react';
import { type ViewStyle, type StyleProp } from 'react-native';
export interface BottomSheetRef {
    present: () => void;
    dismiss: () => void;
    close: () => void;
    expand: () => void;
    collapse: () => void;
    scrollTo: (y: number, animated?: boolean) => void;
}
export interface BottomSheetProps {
    children: React.ReactNode;
    onDismiss?: () => void;
    enablePanDownToClose?: boolean;
    backgroundComponent?: (props: {
        style?: StyleProp<ViewStyle>;
    }) => React.ReactElement | null;
    backdropComponent?: (props: {
        style?: StyleProp<ViewStyle>;
        onPress?: () => void;
    }) => React.ReactElement | null;
    /**
     * Style applied to the sheet container (the outer Animated.View positioned at
     * the bottom of the screen). Use this to override `maxWidth`, `height`,
     * background color, border radius, etc. Composed AFTER the internal sheet
     * styles so it can override them.
     */
    style?: StyleProp<ViewStyle>;
    enableHandlePanningGesture?: boolean;
    onDismissAttempt?: () => boolean;
    detached?: boolean;
    /**
     * Whether to render the built-in (non-interactive) drag handle bar at the top
     * of the sheet. Defaults to `true`. Set to `false` when the consumer renders
     * its own handle (e.g. an interactive close affordance) inside `children`.
     */
    showHandle?: boolean;
    /**
     * Opacity of the dimming backdrop behind the sheet (0–1). Defaults to `0.5`.
     * Set to a higher value (e.g. `0.7`) when the sheet is presented over another
     * bottom sheet (Dialog cases) so the underlying handle/content does not
     * bleed through.
     */
    backdropOpacity?: number;
    /**
     * When `true` (default), children are wrapped in an internal scrollable
     * container — convenient for vertical content that can overflow.
     *
     * Set to `false` when the screen owns its own scrolling primitive
     * (e.g. a `FlatList`, `SectionList`, or any other VirtualizedList).
     * Nesting a VirtualizedList inside the internal ScrollView would break
     * windowing/keyboard handling and trigger a React Native warning. In
     * non-scrollable mode the screen receives the full available height
     * (minus the drag handle) and must manage its own overflow.
     */
    scrollable?: boolean;
    /**
     * When `true`, the body pan uses RNGH's `manualActivation` and only
     * activates when (a) the inner ScrollView is at the top AND (b) the user
     * has moved their finger downward by > 8dp. This is the @gorhom/bottom-sheet
     * coordination model — recommended for sheets containing scrollable content
     * on Android (avoids stealing vertical events from the inner scroller).
     *
     * When `false` (default), the body pan is always active and gates on the
     * scroll offset at `onStart` time. This is the legacy behavior, preserved
     * for backwards compatibility with current bloom consumers.
     *
     * Enabling this also splits the drag handle into its own dedicated,
     * unconditional pan so users can always grab the handle to drag — even
     * when the inner ScrollView is mid-scroll.
     */
    manualActivation?: boolean;
    /**
     * When `true`, the backdrop dims proportionally with drag distance — the
     * overlay fades from full opacity (sheet at rest) to 30% as the sheet is
     * pulled down 40% of the screen height. iOS Photos style. The base
     * `backdropOpacity` still controls the resting dim level.
     *
     * Defaults to `false` (constant opacity during drag).
     */
    dynamicBackdrop?: boolean;
    /**
     * Custom handle slot. When provided, replaces the default drag handle
     * (the 36×5 pill). The rendered handle is wrapped in the dedicated handle
     * gesture detector (when `manualActivation` is `true`) so it remains
     * unconditionally draggable. `showHandle={false}` still suppresses any
     * handle rendering — `handleComponent` is only consulted when
     * `showHandle` is `true`.
     */
    handleComponent?: () => React.ReactNode;
}
declare const BottomSheet: React.ForwardRefExoticComponent<BottomSheetProps & React.RefAttributes<BottomSheetRef>>;
export default BottomSheet;
export { BottomSheet };
//# sourceMappingURL=index.d.ts.map