/**
 * ADR-PIPELINE-066: Domain Unit Registry
 *
 * Maps a detected sector to its domain unit (the thing savings actually scale
 * with) and a savings-base formula. Replaces per-employee heuristics whenever
 * a sector in this registry is detected.
 *
 * Pure functions — no I/O.
 */
import type { DomainUnit } from '../pipeline/types.js';
export type Sector = 'hospitality' | 'commercial-real-estate' | 'fleet' | 'retail' | 'manufacturing' | 'healthcare' | 'data-center' | 'call-center' | 'airline-catering' | 'unknown';
export interface SectorRegistryEntry {
    readonly sector: Exclude<Sector, 'unknown'>;
    readonly domainUnit: DomainUnit;
    /** Keys this sector expects in UnitEconomicsScope (primary first). */
    readonly scopeKeys: readonly string[];
    /**
     * Formula description for rendering. e.g. "rooms × occupancy × $/orn".
     * Not evaluated — just displayed so reviewers see the unit economics.
     */
    readonly savingsFormula: string;
    /** Unit savings key expected in UnitEconomics.unit_savings. */
    readonly unitSavingsKey: string;
}
/**
 * The eight sectors called out in ADR-PIPELINE-066 §3.
 * Order matters for classification — more specific patterns first.
 */
export declare const SECTOR_REGISTRY: readonly SectorRegistryEntry[];
export declare function getSectorEntry(sector: Sector): SectorRegistryEntry | null;
/**
 * Classify a query into a sector from the registry, or 'unknown'.
 * Prefers an explicit sector hint (from domain_analysis.sector) when provided.
 */
export declare function classifySector(query: string, sectorHint?: string | null): Sector;
export interface DomainScale {
    /** Employees — still available for context, NOT as a savings multiplicand. */
    readonly employees: number;
    /** Primary operational units (rooms, sqft, vehicles, etc.). */
    readonly operationalUnits: number;
    /** Human-readable label for the operational unit. */
    readonly unitLabel: string;
    /** Short form for display. */
    readonly unitAbbrev: string;
    /** Detected sector or 'unknown'. */
    readonly sector: Sector;
    /** Where the operational count came from. */
    readonly source: 'prototype' | 'query-regex' | 'default';
}
/** Extract employee count from free text. Used for context only. */
export declare function extractEmployeeCountFromText(query: string): number;
/**
 * ADR-PIPELINE-066 §4: Replace `extractEmployeeCount` with a richer shape that
 * carries the operational unit *and* its source. Savings math that used to
 * multiply `employees * ratio` must now multiply `operationalUnits * ratio`
 * whenever `source !== 'default'`.
 */
export declare function extractDomainScale(query: string, sectorHint?: string | null): DomainScale;
//# sourceMappingURL=domain-unit-registry.d.ts.map