import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
import * as _legendapp_list from '@legendapp/list';
import { LegendListRef } from '@legendapp/list';
import * as react_native from 'react-native';
import * as React from 'react';

declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
    alignItemsAtEnd?: boolean;
    columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
    data: readonly T[];
    drawDistance?: number;
    estimatedItemSize?: number;
    estimatedListSize?: {
        height: number;
        width: number;
    };
    extraData?: any;
    getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
    initialContainerPoolRatio?: number | undefined;
    initialScrollOffset?: number;
    initialScrollIndex?: number | {
        index: number;
        viewOffset?: number | undefined;
        viewPosition?: number | undefined;
    };
    ItemSeparatorComponent?: React.ComponentType<{
        leadingItem: T;
    }> | undefined;
    keyExtractor?: ((item: T, index: number) => string) | undefined;
    ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    maintainScrollAtEnd?: boolean;
    maintainScrollAtEndThreshold?: number;
    maintainVisibleContentPosition?: boolean;
    numColumns?: number;
    onEndReached?: ((info: {
        distanceFromEnd: number;
    }) => void) | null | undefined;
    onEndReachedThreshold?: number | null | undefined;
    onItemSizeChanged?: ((info: {
        size: number;
        previous: number;
        index: number;
        itemKey: string;
        itemData: T;
    }) => void) | undefined;
    onRefresh?: () => void;
    onStartReached?: ((info: {
        distanceFromStart: number;
    }) => void) | null | undefined;
    onStartReachedThreshold?: number | null | undefined;
    onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
    progressViewOffset?: number;
    recycleItems?: boolean;
    refScrollView?: React.Ref<react_native.ScrollView>;
    refreshing?: boolean;
    renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | React.ComponentType<_legendapp_list.LegendListRenderItemProps<T>> | undefined;
    renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
    suggestEstimatedItemSize?: boolean;
    viewabilityConfig?: _legendapp_list.ViewabilityConfig;
    viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
    waitForInitialLayout?: boolean;
    onLoad?: (info: {
        elapsedTimeInMs: number;
    }) => void;
} & React.RefAttributes<LegendListRef>) => React.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
    alignItemsAtEnd?: boolean;
    columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
    data: readonly T[];
    drawDistance?: number;
    estimatedItemSize?: number;
    estimatedListSize?: {
        height: number;
        width: number;
    };
    extraData?: any;
    getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
    initialContainerPoolRatio?: number | undefined;
    initialScrollOffset?: number;
    initialScrollIndex?: number | {
        index: number;
        viewOffset?: number | undefined;
        viewPosition?: number | undefined;
    };
    ItemSeparatorComponent?: React.ComponentType<{
        leadingItem: T;
    }> | undefined;
    keyExtractor?: ((item: T, index: number) => string) | undefined;
    ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    maintainScrollAtEnd?: boolean;
    maintainScrollAtEndThreshold?: number;
    maintainVisibleContentPosition?: boolean;
    numColumns?: number;
    onEndReached?: ((info: {
        distanceFromEnd: number;
    }) => void) | null | undefined;
    onEndReachedThreshold?: number | null | undefined;
    onItemSizeChanged?: ((info: {
        size: number;
        previous: number;
        index: number;
        itemKey: string;
        itemData: T;
    }) => void) | undefined;
    onRefresh?: () => void;
    onStartReached?: ((info: {
        distanceFromStart: number;
    }) => void) | null | undefined;
    onStartReachedThreshold?: number | null | undefined;
    onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
    progressViewOffset?: number;
    recycleItems?: boolean;
    refScrollView?: React.Ref<react_native.ScrollView>;
    refreshing?: boolean;
    renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | React.ComponentType<_legendapp_list.LegendListRenderItemProps<T>> | undefined;
    renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
    suggestEstimatedItemSize?: boolean;
    viewabilityConfig?: _legendapp_list.ViewabilityConfig;
    viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
    waitForInitialLayout?: boolean;
    onLoad?: (info: {
        elapsedTimeInMs: number;
    }) => void;
} & React.RefAttributes<LegendListRef>) => React.ReactNode)> | (<ItemT_1>(props: _legendapp_list_reanimated.AnimatedLegendListProps<ItemT_1> & {
    ref?: React.Ref<LegendListRef>;
}) => React.ReactElement | null) = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
    alignItemsAtEnd?: boolean;
    columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
    data: readonly T[];
    drawDistance?: number;
    estimatedItemSize?: number;
    estimatedListSize?: {
        height: number;
        width: number;
    };
    extraData?: any;
    getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
    initialContainerPoolRatio?: number | undefined;
    initialScrollOffset?: number;
    initialScrollIndex?: number | {
        index: number;
        viewOffset?: number | undefined;
        viewPosition?: number | undefined;
    };
    ItemSeparatorComponent?: React.ComponentType<{
        leadingItem: T;
    }> | undefined;
    keyExtractor?: ((item: T, index: number) => string) | undefined;
    ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    maintainScrollAtEnd?: boolean;
    maintainScrollAtEndThreshold?: number;
    maintainVisibleContentPosition?: boolean;
    numColumns?: number;
    onEndReached?: ((info: {
        distanceFromEnd: number;
    }) => void) | null | undefined;
    onEndReachedThreshold?: number | null | undefined;
    onItemSizeChanged?: ((info: {
        size: number;
        previous: number;
        index: number;
        itemKey: string;
        itemData: T;
    }) => void) | undefined;
    onRefresh?: () => void;
    onStartReached?: ((info: {
        distanceFromStart: number;
    }) => void) | null | undefined;
    onStartReachedThreshold?: number | null | undefined;
    onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
    progressViewOffset?: number;
    recycleItems?: boolean;
    refScrollView?: React.Ref<react_native.ScrollView>;
    refreshing?: boolean;
    renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | React.ComponentType<_legendapp_list.LegendListRenderItemProps<T>> | undefined;
    renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
    suggestEstimatedItemSize?: boolean;
    viewabilityConfig?: _legendapp_list.ViewabilityConfig;
    viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
    waitForInitialLayout?: boolean;
    onLoad?: (info: {
        elapsedTimeInMs: number;
    }) => void;
} & React.RefAttributes<LegendListRef>) => React.ReactNode>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
    alignItemsAtEnd?: boolean;
    columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
    data: readonly ItemT[];
    drawDistance?: number;
    estimatedItemSize?: number;
    estimatedListSize?: {
        height: number;
        width: number;
    };
    extraData?: any;
    getEstimatedItemSize?: ((index: number, item: ItemT) => number) | undefined;
    initialContainerPoolRatio?: number | undefined;
    initialScrollOffset?: number;
    initialScrollIndex?: number | {
        index: number;
        viewOffset?: number | undefined;
        viewPosition?: number | undefined;
    };
    ItemSeparatorComponent?: React.ComponentType<{
        leadingItem: ItemT;
    }> | undefined;
    keyExtractor?: ((item: ItemT, index: number) => string) | undefined;
    ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
    ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
    maintainScrollAtEnd?: boolean;
    maintainScrollAtEndThreshold?: number;
    maintainVisibleContentPosition?: boolean;
    numColumns?: number;
    onEndReached?: ((info: {
        distanceFromEnd: number;
    }) => void) | null | undefined;
    onEndReachedThreshold?: number | null | undefined;
    onItemSizeChanged?: ((info: {
        size: number;
        previous: number;
        index: number;
        itemKey: string;
        itemData: ItemT;
    }) => void) | undefined;
    onRefresh?: () => void;
    onStartReached?: ((info: {
        distanceFromStart: number;
    }) => void) | null | undefined;
    onStartReachedThreshold?: number | null | undefined;
    onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
    progressViewOffset?: number;
    recycleItems?: boolean;
    refScrollView?: React.Ref<react_native.ScrollView>;
    refreshing?: boolean;
    renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<ItemT>) => React.ReactNode) | React.ComponentType<_legendapp_list.LegendListRenderItemProps<ItemT>> | undefined;
    renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
    suggestEstimatedItemSize?: boolean;
    viewabilityConfig?: _legendapp_list.ViewabilityConfig;
    viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
    waitForInitialLayout?: boolean;
    onLoad?: (info: {
        elapsedTimeInMs: number;
    }) => void;
} & {
    LegendList?: ListT;
} & React.RefAttributes<LegendListRef>) => React.ReactNode;

export { LegendList };
