import type { Dispatch, SetStateAction } from 'react';
import type { ActivityIndicatorProps, ImageProps, ImageSourcePropType, ImageStyle, StyleProp } from 'react-native';
export declare type ModalConfigType = {
    x: number;
    y: number;
    height: number;
    width: number;
    visible: boolean;
};
export declare type HeaderOpacityAnimationType = {
    opacity: number;
};
export declare type ImagePreviewProps = {
    imageSource: ImageSourcePropType;
    imageStyle: StyleProp<ImageStyle>;
    imageProps?: Omit<ImageProps, 'source' | 'defaultSource' | 'style'>;
    doubleTapZoomEnabled?: boolean;
    pinchZoomEnabled?: boolean;
    swipeDownCloseEnabled?: boolean;
    errorImageSource?: ImageSourcePropType;
    renderHeader?: (close: () => void) => React.ReactElement;
    imageLoaderProps?: ActivityIndicatorProps;
} & Pick<ImageLoaderProps, 'renderImageLoader'>;
export declare type ImageModalProps = Omit<ImagePreviewProps, 'imageStyle' | 'imageProps' | 'errorImageSource'> & {
    setModalConfig: Dispatch<SetStateAction<ModalConfigType>>;
    modalConfig: ModalConfigType;
};
export declare type HeaderProps = Pick<ImagePreviewProps, 'renderHeader'> & {
    onPressClose: () => void;
    headerOpacityAnimation: HeaderOpacityAnimationType;
};
export declare type ErrorImageProps = Required<Pick<ImagePreviewProps, 'imageStyle' | 'errorImageSource'>>;
export declare type UseImageModalProps = {
    modalConfig: ModalConfigType;
    setModalConfig: Dispatch<SetStateAction<ModalConfigType>>;
    pinchZoomEnabled: boolean | undefined;
    doubleTapZoomEnabled: boolean | undefined;
    swipeDownCloseEnabled: boolean | undefined;
};
export declare type ImageLoaderProps = ActivityIndicatorProps & {
    renderImageLoader?: () => React.ReactElement;
};
