import type { PaginationParams } from '../../../providers/database/pagination/schemas.js'; import type { EntityReadModelSchema, EntityRelationReadModelSchema } from '../schemas/read-model-schemas.js'; import type { CatalogFiltersParams } from './repositories/local/catalog-entities-local-read-repository.js'; import type { BffCatalogEntity, BffCatalogEntityList, BffCatalogRelatedEntityList } from '@redocly/theme/core/types'; import type { ServiceInstanceOptions } from '../../../providers/database/types.js'; import type { TransactionsManager } from '../../../providers/database/transactions-manager.js'; import type { CreateEntityParams } from './repositories/local/catalog-entities-local-write-repository.js'; import type { Filter } from '../../../providers/database/pagination/types.js'; import type { ScorecardsStatus } from '../entities/types.js'; import type { GetEntityByIdParams } from '../types/params.js'; import { type EntityDtoSchema, type EntityRelationDtoSchema } from '../schemas/dto-schemas.js'; import { CatalogEntitiesLocalRepository } from './repositories/local/catalog-entities-local-repository.js'; import { CatalogEntitiesRemoteRepository } from './repositories/remote/catalog-entities-remote-repository.js'; import { type ListResponseResult } from '../../../web-server/utils/prepare-list-response.js'; type BulkSyncResult = Array<{ status: 'ok'; resource: T | null; } | { key: string; status: 'error'; error: string; }>; export declare class CatalogEntitiesService { #private; constructor(localRepository: CatalogEntitiesLocalRepository, remoteRepository: CatalogEntitiesRemoteRepository | null); static getInstance(options: ServiceInstanceOptions): Promise; transaction(...args: Parameters): Promise; remoteTransaction(operation: () => Promise): Promise; getEntities({ paginationParams, rbacTeams, excludedTypes, excludedEntities, }: { paginationParams: PaginationParams; rbacTeams?: string[]; excludedTypes?: string[]; excludedEntities?: string[]; }): Promise>; getEntityById(id: string, params?: GetEntityByIdParams): Promise; getEntityKeysAndVersionsBySourceFile(sourceFile: string): Promise>; getEntitiesCountByTypes(): Promise<{ type: string; count: number; }[]>; getCatalogFilters(params: CatalogFiltersParams): Promise>; createEntity(entity: EntityDtoSchema): Promise; createEntities(entities: EntityDtoSchema[]): Promise>; getEntitySources(): Record; /** * Use only internally, everything that is created via API should be created in the remote database. * @param entity - The entity to create. */ createEntityInLocalDatabase(createEntityParams: CreateEntityParams): Promise; /** * Use only internally, everything that is created via API should be created in the remote database. * @param entities - The entities to create. */ createEntitiesInLocalDatabase(createEntitiesParams: CreateEntityParams[]): Promise; /** * Use only internally, everything that is created via API should be created in the remote database. * @param relation - The entity to create. */ createEntityRelationInLocalDatabase(relation: EntityRelationDtoSchema): Promise; /** * Use only internally, everything that is created via API should be created in the remote database. * @param relations - The entity to create. */ createEntityRelationsInLocalDatabase(relations: EntityRelationDtoSchema[]): Promise; updateEntity(incomingEntity: Partial, entityToBeUpdated: EntityReadModelSchema): Promise; deleteEntity(entityToBeRemoved: EntityReadModelSchema): Promise; /** * Use only internally, everything that is created via API should be created in the remote database. * @param filter - The conditions used to select which entities to delete. */ deleteEntitiesInLocalDatabase(filter: Filter): Promise; getEntityRelationById(id: string): Promise; getEntitiesRelations(paginationParams?: PaginationParams): Promise>; createEntityRelation(relation: EntityRelationDtoSchema): Promise; createEntitiesRelations(entities: EntityRelationDtoSchema[]): Promise>; updateEntityRelation(incomingRelationData: Partial, relationToBeUpdated: EntityRelationReadModelSchema): Promise; deleteEntityRelation(id: string): Promise; /** * Use only internally, everything that is created via API should be created in the remote database. * @param filter - The conditions used to select which entity relations to delete. */ deleteEntityRelationsInLocalDatabase(filter: Filter): Promise; getEntitiesWithRelations({ paginationParams, rbacTeams, excludedTypes, excludedEntities, }: { paginationParams: PaginationParams; rbacTeams?: string[]; excludedTypes?: string[]; excludedEntities?: string[]; }): Promise; getEntityWithRelationsByKey({ entityKey, filter, rbacTeams, excludedTypes, excludedEntities, }: { entityKey: string; filter?: { revision?: string | null; version?: string | null; }; rbacTeams?: string[]; excludedTypes?: string[]; excludedEntities?: string[]; }): Promise; getRelatedEntities({ entityKey, paginationParams, rbacTeams, excludedTypes, excludedEntities, }: { entityKey: string; paginationParams: PaginationParams; rbacTeams?: string[]; excludedTypes?: string[]; excludedEntities?: string[]; }): Promise; softDeleteEntitiesInLocalDatabase({ filter, revision, fileHash, }: { filter: Filter; revision: string; fileHash: string; }): Promise; listEntityRevisions(entityKey: string, version?: string | null): Promise; updateEntityScorecardsStatus(entityId: string, status: ScorecardsStatus): Promise; updateEntityScorecardsStatusIfCalculating(entityId: string, status: Extract): Promise; getOutdatedEntities(filter?: Filter): Promise; setEntitiesAsOutdated(filter: Filter): Promise; getEntitiesCount(source: 'file' | 'remote', addedEntities?: EntityReadModelSchema[], entitiesRemovedCount?: number): Promise<{ total: number; }>; getDuplicatedEntitiesCount(addedEntities?: EntityReadModelSchema[], removedEntities?: EntityReadModelSchema[]): Promise<{ total: number; }>; } export {}; //# sourceMappingURL=catalog-entities-service.d.ts.map