import type { ComponentType, ReactNode } from "react";
import { type LoadingAndErrorWrapperProps } from "../../../components/LoadingAndErrorWrapper";
import type { EntityQuery, EntityQuerySelector, EntityType, EntityTypeSelector, ListMetadata, ReloadInterval, ReloadIntervalSelector } from "./types";
interface ChildrenProps<Entity, EntityWrapper> {
    allError?: unknown;
    allFetched?: boolean;
    allLoaded?: boolean;
    allLoading?: boolean;
    entityQuery: EntityQuery;
    error: unknown;
    fetched: boolean;
    loaded: boolean;
    loading: boolean;
    /**
     * list item is EntityWrapper when Props["wrapped"] is true
     */
    list: EntityWrapper[] | Entity[] | undefined;
    metadata: ListMetadata | undefined;
    reload: () => void;
    total: number | undefined;
}
interface Props<Entity, EntityWrapper> {
    allError?: unknown;
    allFetched?: boolean;
    allLoaded?: boolean;
    allLoading?: boolean;
    ComposedComponent: (props: ChildrenProps<Entity, EntityWrapper>) => ReactNode;
    entityQuery?: EntityQuery | EntityQuerySelector;
    entityType: EntityType | EntityTypeSelector;
    initialPage?: number;
    listName?: string;
    loadingAndErrorWrapper?: boolean;
    LoadingAndErrorWrapper?: ComponentType<LoadingAndErrorWrapperProps>;
    pageSize?: number;
    reload?: boolean | ChildrenProps<Entity, EntityWrapper>["reload"];
    reloadInterval?: ReloadInterval | ReloadIntervalSelector<Entity>;
    selectorName?: "getList" | "getListUnfiltered";
    wrapped?: boolean;
}
/**
 * Difference between the 2 generic types, using Database entity as an example:
 *   Entity        -> Database from metabase-types/api/database.ts
 *   EntityWrapper -> Database from metabase-lib/v1/metadata/Database.ts
 *
 * @deprecated use "metabase/api" instead
 */
export declare function EntityListLoader<Entity, EntityWrapper>({ allError: allErrorProp, allFetched: allFetchedProp, allLoaded: allLoadedProp, allLoading: allLoadingProp, ComposedComponent, entityQuery: entityQueryProp, entityType: entityTypeProp, initialPage, listName, loadingAndErrorWrapper, LoadingAndErrorWrapper, pageSize, reload, reloadInterval: reloadIntervalProp, selectorName, wrapped, ...props }: Props<Entity, EntityWrapper>): import("react/jsx-runtime").JSX.Element;
/**
 * @deprecated HOCs are deprecated
 */
export declare const entityListLoader: <Entity, EntityWrapper>(eolProps: any) => (ComposedComponent: (props: ChildrenProps<Entity, EntityWrapper>) => ReactNode) => (props: any) => import("react/jsx-runtime").JSX.Element;
export {};
