import { CatalogApi, GetEntitiesRequest, GetEntitiesResponse, GetEntitiesByRefsRequest, GetEntitiesByRefsResponse, QueryEntitiesRequest, QueryEntitiesResponse, GetEntityAncestorsRequest, GetEntityAncestorsResponse, GetEntityFacetsRequest, GetEntityFacetsResponse, GetLocationsResponse, Location, AddLocationRequest, AddLocationResponse, ValidateEntityResponse } from '@backstage/catalog-client';
import { Entity, CompoundEntityRef } from '@backstage/catalog-model';

/**
 * Implements a VERY basic fake catalog client that stores entities in memory.
 * It has severely limited functionality, and is only useful under certain
 * circumstances in tests.
 *
 * @public
 */
declare class InMemoryCatalogClient implements CatalogApi {
    #private;
    constructor(options?: {
        entities?: Entity[];
    });
    getEntities(request?: GetEntitiesRequest): Promise<GetEntitiesResponse>;
    getEntitiesByRefs(request: GetEntitiesByRefsRequest): Promise<GetEntitiesByRefsResponse>;
    queryEntities(request?: QueryEntitiesRequest): Promise<QueryEntitiesResponse>;
    getEntityAncestors(request: GetEntityAncestorsRequest): Promise<GetEntityAncestorsResponse>;
    getEntityByRef(entityRef: string | CompoundEntityRef): Promise<Entity | undefined>;
    removeEntityByUid(uid: string): Promise<void>;
    refreshEntity(_entityRef: string): Promise<void>;
    getEntityFacets(request: GetEntityFacetsRequest): Promise<GetEntityFacetsResponse>;
    getLocations(_request?: {}): Promise<GetLocationsResponse>;
    getLocationById(_id: string): Promise<Location | undefined>;
    getLocationByRef(_locationRef: string): Promise<Location | undefined>;
    addLocation(_location: AddLocationRequest): Promise<AddLocationResponse>;
    removeLocationById(_id: string): Promise<void>;
    getLocationByEntity(_entityRef: string | CompoundEntityRef): Promise<Location | undefined>;
    validateEntity(_entity: Entity, _locationRef: string): Promise<ValidateEntityResponse>;
}

export { InMemoryCatalogClient };
