export type TListContext<T = any> = {
    items: T[];
    total: number;
    page: number;
    pageSize: number;
    search: string;
    loading: boolean;
    loadingMore: boolean;
    filters: Record<string, any>;
    handleChangePage: (page: number) => void;
    handleChangeSearch: (value: string) => void;
    handleLoadMore: () => void;
    handleChangeFilter: (value: TFilterOptions, filterOptions: TFilterOptions[]) => void;
    handleUpdateFilter: (filterObject: Record<string, any>) => void;
};
export type TFetcherParams = {
    search: string;
    filters?: Record<string, any>;
    page: number;
    pageSize: number;
    searchSession?: string;
};
export interface ListProviderType<T = any> {
    fetcher: (params: TFetcherParams) => Promise<{
        data: T[];
        total: number;
        page: number;
        searchSession?: string;
        isKeepLoading?: boolean;
    }>;
    pageSize?: number;
    defaultSearch?: string;
    defaultFilters?: Record<string, any>;
    debounceSearch?: number;
    defaultLoading?: boolean;
    defaultItems?: T[];
    defaultTotal?: number;
    defaultPage?: number;
}
export type TFilterOptions = {
    label: string;
    value: string;
    filterKey: string;
    isAll?: boolean;
};
