import React, { MutableRefObject } from 'react';
import { IViewList } from '@devesharp/react-hooks/lib/useViewList';
import { ICardContainerProps } from './CardListingContainer/CardListingContainer.interface';
export type IFilterComponent<T = any, P = any> = React.FunctionComponent<{
    handleFilters: (v: () => T) => void;
    filters: T;
    data: P;
}>;
export interface IPageListingProps {
    viewList: IViewList;
    data?: any;
    children?: React.ReactChild | React.ReactChild[] | React.ReactElement | React.ReactElement[] | React.ReactNode | React.ReactNode[];
}
export interface IFiltersComponentProps<P = any> {
    updateFilters: (data: any) => void;
    filters: any;
    data: P;
}
export interface IFiltersContainerProps {
    filterComponent: IFilterComponent;
    useClean?: boolean;
}
export interface IPageListing {
    Container: React.ComponentType<IPageListingProps>;
    ScrollContainer: React.ComponentType<React.HTMLAttributes<HTMLDivElement>>;
    FiltersContainer: React.ComponentType<IFiltersContainerProps>;
    Context: React.ComponentType<{
        render: (props: IPageListingChildrenProps) => React.ReactNode;
    }>;
    CardsContainer: React.ComponentType<ICardContainerProps>;
    TextResultCount: React.ComponentType<any>;
}
export interface IPageListingChildrenProps extends IViewList {
    listingElRef: MutableRefObject<any>;
    updateFilters: (data: any) => void;
    clearFilters: () => void;
    filters: any;
    updateFiltersDebounce: (data: any) => void;
    applyFiltersDebounce: () => void;
    currentPage: number;
    setPage: (page: number) => void;
    filterMobileOpen: boolean;
    openFilters: () => void;
    closeFilters: () => void;
    pageCountStart: number;
    pageCountEnd: number;
    showCardsSkeleton: boolean;
    showCards: boolean;
    data: any;
}
//# sourceMappingURL=PageListing.interface.d.ts.map