import React, { Component } from 'react'; import type { StyleProp, TextStyle, ViewStyle } from 'react-native'; import type { CommerceTypes } from '../../../libs/fscommerce'; import type { FilterListDrilldownProps, FilterListProps, GridProps, ProductItemProps, RefineActionBarProps, SelectableListProps } from '../../../libs/fscomponents'; import type { WithProductIndexProps, WithProductIndexProviderProps } from './ProductIndexProvider'; export interface UnwrappedProductIndexProps { columns?: number; modalCancelButton?: boolean; fetchProducts?: (productQuery?: CommerceTypes.ProductQuery) => Promise; format?: 'grid' | 'list'; errorText?: string; errorTextStyle?: StyleProp; filterHeaderTitle?: string; filterListProps?: Partial; showDrilldownClose?: boolean; gridProps?: Partial>; handleFilterApply?: (data: unknown, info?: { isButtonPress: boolean; }) => void; handleFilterReset?: () => void; onLoadComplete?: (loadMore: () => void, hasAnotherPage?: boolean, count?: number, responseCount?: number) => void; handleSortChange?: (data: CommerceTypes.SortingOption['id']) => void; hideActionBar?: boolean; listStyle?: StyleProp; loadingStyle?: StyleProp; loadMoreButtonStyle?: StyleProp; loadMoreButtonTextStyle?: StyleProp; loadMoreLoadingStyle?: StyleProp; modalCancelStyle?: StyleProp; modalHeaderStyle?: StyleProp; modalHeaderTextStyle?: StyleProp; onNavigate?: (data: CommerceTypes.Product) => void; productItemProps?: Partial; productQuery: CommerceTypes.ProductQuery; refineActionBarProps?: Partial; renderGhost?: () => JSX.Element; setTitleTotalItem?: (count: number) => void; renderFilter?: (handleFilterApply: (data: unknown, info?: { isButtonPress: boolean; }) => void, handleFilterReset: () => void, commerceData: CommerceTypes.ProductIndex) => JSX.Element; renderLoadPrev?: (loadPrev: () => void, hasAnotherPage: boolean) => JSX.Element; renderLoadMore?: (loadMore: () => void, hasAnotherPage: boolean) => JSX.Element; renderLoading?: () => JSX.Element; renderNoResult?: (commerceData: CommerceTypes.ProductIndex, handleFilterReset: () => void) => JSX.Element; renderProductItem?: (data: CommerceTypes.Product) => JSX.Element; renderRefineActionBar?: (showFilterModal: () => void, showSortModal: () => void, commerceData: CommerceTypes.ProductIndex, applyFilters?: (selectedItems: unknown, info?: { isButtonPress: boolean; }) => void, resetFilters?: () => void) => JSX.Element; renderSort?: (handleSortChange: (sortItem: CommerceTypes.SortingOption) => void, commerceData: CommerceTypes.ProductIndex, closeSortModal?: () => void) => JSX.Element; sortHeaderStyle?: string; sortListProps?: Partial; FilterListDrilldownProps?: Partial; style?: StyleProp; modalAnimationType?: 'fade' | 'none' | 'slide'; modalType?: 'full-screen' | 'half-screen'; filterType?: 'accordion' | 'drilldown'; refinementBlacklist?: string[]; selectedRefinementBlacklist?: string[]; mergeSortToFilter?: boolean; filterInBackground?: boolean; renderModalLoading?: () => JSX.Element; defaultSortOption?: string; } export declare type ProductIndexProps = UnwrappedProductIndexProps & WithProductIndexProviderProps; export declare class ProductIndex extends Component { private readonly onPress; private readonly getCommerceData; componentDidUpdate(prevProps: UnwrappedProductIndexProps & WithProductIndexProps): void; render(): JSX.Element; } declare const _default: React.ComponentClass>, any>; export default _default;