import type { ApexSourceProvider, ApexTestSuiteMember, PerimeterAssessment, TargetClassVerdict, TypeDependencies } from '../../port/apexSourceProvider.js'; import type { EngineNotify } from '../../port/executionEngine.js'; import type { ApexClass } from '../../type/ApexClass.js'; import type { ApexClassRepository } from './apexClassRepository.js'; import type { ApexTestSuiteRepository } from './apexTestSuiteRepository.js'; import type { EntityDefinitionRepository } from './entityDefinitionRepository.js'; export declare class OrgApexSourceProvider implements ApexSourceProvider { private readonly repository; private readonly suiteRepository; private readonly entityDefinitionRepository; private readonly notify; private readonly orgNamespace; constructor(repository: ApexClassRepository, suiteRepository: ApexTestSuiteRepository, entityDefinitionRepository: EntityDefinitionRepository, notify: EngineNotify, orgNamespace: string | null); private select; assessTargetClass(name: string): Promise; readClass(name: string): Promise; listDependencies(apexClass: ApexClass): Promise; private resolveApexClasses; private resolveSObjects; private resolveCustomObjects; private indexEntityRows; private readEntityRows; private notifyEntityReadFailure; private static withheldBareNames; private static classifyUnusable; /** A name can return two rows when a managed and a local class share it, * and any *mutable* row makes the entry usable — a qualified entry can * match at most one row, so "is at least one row for this entry usable" * reduces to "is *the* row usable". Every join is case-folded — * `ApexClass.Name` matches case-insensitively on the org — while the * reported className keeps the perimeter entry's own spelling. The same * query also yields every resolution: one per row the query returned, * not one per perimeter entry — a bare entry matching two rows * contributes two, so whichever class the org actually runs is present * under its own Id. */ assessPerimeter(apexTestClassNames: string[]): Promise; readTestSuiteMembers(suiteNames: string[]): Promise; readExistingTestSuiteNames(suiteNames: string[]): Promise; }