import React, { Component } from 'react';
import { FlatListProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
export declare type GridScrollToTopFunc = () => void;
export interface GridProps<ItemT> extends Pick<FlatListProps<ItemT>, 'style' | 'data' | 'renderItem'> {
    columns?: number;
    showBackToTop?: boolean;
    renderHeader?: () => JSX.Element;
    renderFooter?: () => JSX.Element;
    backToTopContainerStyle?: StyleProp<ViewStyle>;
    backToTopButtonStyle?: StyleProp<ViewStyle>;
    backToTopTextStyle?: StyleProp<TextStyle>;
    backToTopText?: string;
    backToTopShowAtHeight?: number;
    renderBackToTopButton?: (scrollToTop: GridScrollToTopFunc) => JSX.Element;
    listViewProps?: Partial<FlatListProps<ItemT[]>>;
    showColumnSeparators?: boolean;
    columnSeparatorStyle?: StyleProp<ViewStyle>;
    showRowSeparators?: boolean;
    rowSeparatorStyle?: StyleProp<ViewStyle>;
}
export interface GridState<ItemT> extends Pick<FlatListProps<ItemT[]>, 'data'> {
    backToTopVisible: boolean;
}
export declare class Grid<ItemT> extends Component<GridProps<ItemT>, GridState<ItemT>> {
    static getDerivedStateFromProps<ItemT>(nextProps: GridProps<ItemT>): Partial<GridState<ItemT>> | null;
    private listview;
    private backTopOpacity;
    constructor(props: GridProps<ItemT>);
    render(): React.ReactNode;
    handleBackToTop: () => void;
    private handleScroll;
    private keyExtractor;
    private renderBackToTop;
    private renderRow;
}
