import type { BffCatalogEntity, BffCatalogRelatedEntity } from '@redocly/theme/core/types';
import type { PaginationParams } from '../../../../../providers/database/pagination/schemas.js';
import type { EntityRelationReadModelSchema } from '../../../schemas/read-model-schemas.js';
import type { DatabaseClient } from '../../../../../providers/database/client.js';
import { type EntityReadModelSchema } from '../../../schemas/read-model-schemas.js';
export type ListResult<T> = {
    items: T[];
    hasMore?: boolean;
    total: number;
};
export type CatalogFiltersParams = {
    entitiesTypes?: string[];
    emptyFilters?: string[];
};
export type FilterOption = {
    value: string;
    count: number;
};
export declare class CatalogEntitiesLocalReadRepository {
    #private;
    constructor(db: DatabaseClient);
    attachDatabase(databasePath: string): Promise<void>;
    getEntities(paginationParams?: PaginationParams): Promise<ListResult<EntityReadModelSchema>>;
    getEntityByKey(key: string): Promise<EntityReadModelSchema | null>;
    getEntitiesRelations(paginationParams?: PaginationParams): Promise<ListResult<EntityRelationReadModelSchema>>;
    getEntityRelationById(id: string): Promise<EntityRelationReadModelSchema | null>;
    getEntitiesWithRelations(paginationParams?: PaginationParams): Promise<ListResult<BffCatalogEntity>>;
    getEntityWithRelationsByKey(entityKey: string): Promise<BffCatalogEntity | null>;
    getRelatedEntities(entityKey: string, paginationParams?: PaginationParams): Promise<ListResult<BffCatalogRelatedEntity>>;
    getCatalogFilters({ entitiesTypes, emptyFilters, }: CatalogFiltersParams): Promise<Record<string, FilterOption[]>>;
}
//# sourceMappingURL=catalog-entities-local-read-repository.d.ts.map