import { ApiFactory } from '@backstage/frontend-plugin-api';
import { Entity } from '@backstage/catalog-model';
import { CatalogApi } from '@backstage/catalog-client';
import { ApiMock } from '@backstage/frontend-test-utils';
import * as react_jsx_runtime from 'react/jsx-runtime';
import { PropsWithChildren } from 'react';
import { DefaultEntityFilters, EntityListContextProps } from '@backstage/plugin-catalog-react';

/**
 * Creates a fake catalog client that handles entities in memory storage. Note
 * that this client may be severely limited in functionality, and advanced
 * functions may not be available at all.
 *
 * @public
 */
declare function catalogApiMock(options?: {
    entities?: Entity[];
}): CatalogApi;
/**
 * A collection of mock functionality for the catalog service.
 *
 * @public
 */
declare namespace catalogApiMock {
    /**
     * Creates a fake catalog client that handles entities in memory storage. Note
     * that this client may be severely limited in functionality, and advanced
     * functions may not be available at all.
     */
    const factory: (options?: {
        entities?: Entity[];
    }) => ApiFactory<CatalogApi, CatalogApi, {}>;
    /**
     * Creates a catalog client whose methods are mock functions, possibly with
     * some of them overloaded by the caller.
     */
    const mock: (partialImpl?: Partial<CatalogApi> | undefined) => ApiMock<CatalogApi>;
}

/**
 * Simplifies testing of code that uses the entity list hooks.
 *
 * @public
 */
declare function MockEntityListContextProvider<T extends DefaultEntityFilters = DefaultEntityFilters>(props: PropsWithChildren<{
    value?: Partial<EntityListContextProps<T>>;
}>): react_jsx_runtime.JSX.Element;

export { MockEntityListContextProvider, catalogApiMock };
