import {
    type ReactNode
} from "react";
import type {
    ScrollViewProps,
    ViewStyle,
    StyleProp
} from "react-native";
import type IModalProps from "../modal/type";

export interface IBottomSheetRef {
    setIsContentReady: (status: boolean) => void;
    close: (onClosed?: (props: {
        id: string;
    }) => void) => void;
    open: () => void;
}

interface IBottomSheetProps {
    handleContainerBackgroundColor?: keyof NCoreUIKit.ContainerContentColors;
    handleContainerSpacing?: keyof NCoreUIKit.ActivePalette["spaces"];
    handleBackgroundColor?: keyof NCoreUIKit.ContainerContentColors;
    backgroundColor?: keyof NCoreUIKit.ContainerContentColors;
    customTheme?: {
        gapPropagation?: keyof NCoreUIKit.GapPropagationKey;
        sharpness?: keyof NCoreUIKit.SharpnessKey;
        paletteKey?: keyof NCoreUIKit.PaletteKey;
        themeKey?: keyof NCoreUIKit.ThemeKey;
    };
    scrollViewStyle?: StyleProp<ViewStyle>;
    isForceFullScreenOnSwipe?: boolean;
    scrollViewProps?: ScrollViewProps;
    isCanFullScreenOnSwipe?: boolean;
    isWrapSafeAreaContext?: boolean;
    renderHeader?: () => ReactNode;
    renderBottom?: () => ReactNode;
    isWorkWithAnimation?: boolean;
    onOverlayPressed?: () => void;
    isWorkAsFullScreen?: boolean;
    scrollEndThreshold?: number;
    isCloseOnOverlay?: boolean;
    isWorkWithPortal?: boolean;
    isContentReady?: boolean;
    onScrollEnd?: () => void;
    modalProps?: IModalProps;
    isSwipeClose?: boolean;
    isShowHandle?: boolean;
    isAutoHeight?: boolean;
    handleHeight?: number;
    onOpened?: () => void;
    isCanSwipe?: boolean;
    children?: ReactNode;
    onClosed?: (props: {
        id: string;
    }) => void;
    portalName?: string;
    onOpen?: () => void;
    onClose?: (props: {
        id: string;
    }) => void;
    snapPoint?: number;
    isActive?: boolean;
    customKey?: string;
    style?: ViewStyle;
    id?: string;
}
export type {
    IBottomSheetProps as default
};
