import { IConfigParser, IFileSystem } from '../../domain/interfaces'; export type RuleAudience = 'core' | 'satellite' | 'both'; export type RepositoryAudience = 'core' | 'satellite'; export interface RuleApplicability { readonly audience: RuleAudience; readonly topologies?: readonly string[]; readonly appliesFromSdlcPhase?: number; } export interface ApplicabilityContext { readonly audience: RepositoryAudience; readonly declaredTopologies: readonly string[]; readonly sdlcPhase?: number; } export type NotApplicableReason = 'audience' | 'topology' | 'sdlc-phase' | 'disabled'; export declare const DEFAULT_APPLICABILITY: RuleApplicability; export declare const PROGRESSIVE_PHASE_TOPOLOGY: Readonly>; export declare function progressiveAxisConflict(declaredTopologies: readonly string[]): readonly string[]; export declare function notApplicableReason(applicability: RuleApplicability | undefined, ctx: ApplicabilityContext): NotApplicableReason | undefined; export declare function describeNotApplicable(reason: NotApplicableReason): string; export declare function readRulesetApplicability(doc: Record): Partial; export declare function mergeApplicability(fileLevel: Partial, ruleLevel: Partial): RuleApplicability; export declare class RuleApplicabilityIndex { private readonly byRuleId; private constructor(); static empty(): RuleApplicabilityIndex; static fromEntries(entries: Iterable): RuleApplicabilityIndex; static load(fs: IFileSystem, corePath: string, sep?: string): Promise; get(ruleId: string): RuleApplicability | undefined; get size(): number; } export interface SatelliteDeclaration { readonly audience?: RepositoryAudience; readonly topologies: string[]; readonly sdlcPhase?: number; } export declare function readSatelliteDeclaration(doc: unknown): SatelliteDeclaration; export declare function inferRepositoryAudience(fs: IFileSystem, satellitePath: string, corePath: string, sep?: string): Promise; export declare function resolveApplicabilityContext(deps: { fs: IFileSystem; configParser: IConfigParser; }, satellitePath: string, corePath: string, sep?: string, overrides?: { readonly declaredTopologies?: readonly string[]; }): Promise;