import type { AfterRoutesCreatedActions, FileInfo, LifecycleContext } from '../../../../../types';
import type { CatalogEntitiesService } from '../../../database/catalog-entities-service.js';
import type { BaseEntitiesExtractor } from '../base';
import type { FileType } from '../../../../../persistence/file-hashes/types.js';
import type { HashManager } from '../../../utils/hash-manager.js';
import type { BaseApiEntitiesExtractorParams, SpecType } from '../../../types/extractors.js';
import type { EntityDtoSchema } from '../../../schemas/dto-schemas.js';
export declare abstract class BaseApiEntitiesExtractor<BundledApiDefinition extends Pick<FileInfo, 'realRelativePath' | 'relativePath' | 'isVirtual' | 'hash'>> implements BaseEntitiesExtractor {
    #private;
    protected type: 'api-description';
    protected specType: SpecType;
    protected fileType: FileType;
    protected actions: AfterRoutesCreatedActions;
    protected context: LifecycleContext;
    protected catalogEntitiesService: CatalogEntitiesService;
    protected fileHashManager: HashManager;
    protected entitySources: Record<string, string>;
    constructor(specType: SpecType, params: BaseApiEntitiesExtractorParams);
    extract(): Promise<void>;
    protected validateEntityRelationFileSchema(relation: unknown): void;
    protected getRbacTeamsForDefinition(relativePath: string): string[];
    /**
     * Resolves the entity key for an API description.
     * Uses x-redocly-catalog-key if present and non-empty, otherwise derives a key from the file path.
     * @param realRelativePath - The real relative path of the description file
     * @param customKey - Optional custom key from x-redocly-catalog-key
     * @param extensionPattern - Optional regex to strip file extension (default: any extension)
     */
    protected resolveEntityKey({ realRelativePath, customKey, extensionPattern }: {
        realRelativePath: string;
        customKey?: string | null;
        extensionPattern?: RegExp;
    }): string;
    protected abstract loadApiDescriptions(): Promise<BundledApiDefinition[]>;
    protected abstract mapApiDescriptionToEntity(definition: BundledApiDefinition, version: string, revision?: string): EntityDtoSchema;
    protected abstract processApiDescription(definition: BundledApiDefinition, revision: string, version: string, entitiesToRemoveFromFile: Set<string>): Promise<void>;
}
//# sourceMappingURL=base.d.ts.map