import React, { PureComponent } from 'react';
import { ListRenderItemInfo, StyleProp, TextStyle, ViewStyle } from 'react-native';
import { FilterItem } from './FilterItem';
import { FilterItemValue } from './FilterItemValue';
export interface FilterListDrilldownProps {
    items: FilterItem[];
    onApply: (selectedItems: any, info?: {
        isButtonPress: boolean;
    }) => void;
    onReset: (info?: {
        isButtonPress: boolean;
    }) => void;
    selectedItems?: any;
    style?: StyleProp<ViewStyle>;
    resetButtonStyle?: StyleProp<ViewStyle>;
    applyButtonStyle?: StyleProp<ViewStyle>;
    resetButtonTextStyle?: StyleProp<TextStyle>;
    applyButtonTextStyle?: StyleProp<TextStyle>;
    applyText?: string;
    resetText?: string;
    itemStyle?: StyleProp<ViewStyle>;
    itemTextStyle?: StyleProp<TextStyle>;
    itemTextSelectedStyle?: StyleProp<TextStyle>;
    selectedValueStyle?: StyleProp<TextStyle>;
    selectableRowProps?: any;
    accordionProps?: any;
    singleFilterIds?: string[];
    ignoreActiveStyleIds?: string[];
    applyOnSelect?: boolean;
    renderFilterItem?: (item: FilterItem, i: number, selectedValues: string[], handlePress: () => void, renderFilterItem: (info: ListRenderItemInfo<FilterItem>) => JSX.Element) => JSX.Element;
    renderFilterItemValue?: (item: FilterItem, i: number, value: FilterItemValue, handleSelect: Function, selected: boolean, renderFilterItemValue: (item: FilterItem, skipCustomRender?: boolean) => (info: ListRenderItemInfo<FilterItemValue>) => JSX.Element) => JSX.Element;
    renderSecondLevel?: (item: FilterItem, goBack: () => void, renderSecondLevel: (item: FilterItem, skipCustomRender?: boolean) => JSX.Element) => JSX.Element;
}
export interface FilterListDrilldownState {
    selectedItems: any;
    secondLevelItem: any;
}
export declare class FilterListDrilldown extends PureComponent<FilterListDrilldownProps, FilterListDrilldownState> {
    static getDerivedStateFromProps(nextProps: FilterListDrilldownProps, prevState: FilterListDrilldownState): Partial<FilterListDrilldownState>;
    constructor(props: FilterListDrilldownProps);
    handleSelect: (id: string, value: string) => () => void;
    renderFilterItemValue: (filterItem: FilterItem, skipCustomRender?: boolean | undefined) => ({ item, index }: ListRenderItemInfo<FilterItemValue>) => JSX.Element;
    renderFilterItem: ({ item, index }: ListRenderItemInfo<FilterItem>, skipCustomRender?: boolean) => JSX.Element;
    handleApply: () => void;
    handleRest: () => void;
    drilldown: (item: FilterItem) => () => void;
    backToFirstLevel: () => void;
    renderSecondLevel: (item: FilterItem, skipCustomRender?: boolean | undefined) => JSX.Element;
    renderDrilldownHeader: () => JSX.Element;
    render(): React.ReactNode;
}
