/**
 * AnomalyScorer — the relationship/behavioral second factor (Pillar 3).
 *
 * Produces a 0..1 anomaly score for a (principal, request). The gate uses it ONLY
 * to RAISE the required assurance (allow → step-up) on a would-be-allowed floor
 * action; it can never LOWER the bar (a refuse stays a refuse). Composition rule:
 * docs/specs/SLACK-ORG-INTEGRATION-SPEC.md §7.4.
 *
 * Ships OBSERVE-ONLY first (NullAnomalyScorer is the default). The heuristic scorer
 * reads real urgency/pressure language plus an injected behavioral baseline (sourced
 * from RelationshipManager in production); the static scorer is for tests/harness.
 */
import type { Principal, RequestIntent, AnomalyAssessment } from './types.js';
export interface AnomalyScorer {
    assess(principal: Principal, intent: RequestIntent, text: string): Promise<AnomalyAssessment>;
}
/** Default scorer — always in-character. Pillar 3 ships dark; this is the no-op. */
export declare class NullAnomalyScorer implements AnomalyScorer {
    assess(): Promise<AnomalyAssessment>;
}
/** A principal's behavioral baseline (in production, derived from RelationshipManager). */
export interface PrincipalBaseline {
    /** Action labels this principal has historically made (their normal repertoire). */
    typicalActions?: string[];
    /** Number of prior interactions — depth of the relationship (a weak baseline = few). */
    interactionCount?: number;
}
export interface BaselineProvider {
    baselineFor(principal: Principal): PrincipalBaseline | undefined;
}
/**
 * Heuristic scorer: urgency/pressure language + "this principal never makes this
 * kind of request" (vs the injected baseline). Real, cheap, privacy-respecting —
 * no content surveillance, just shape.
 */
export declare class HeuristicAnomalyScorer implements AnomalyScorer {
    private readonly baselines?;
    private readonly opts;
    constructor(baselines?: BaselineProvider | undefined, opts?: {
        urgencyWeight?: number;
        atypicalWeight?: number;
    });
    assess(principal: Principal, intent: RequestIntent, text: string): Promise<AnomalyAssessment>;
}
/** Static scorer for tests/harness — fixed score per slackUserId. */
export declare class StaticAnomalyScorer implements AnomalyScorer {
    private readonly scores;
    constructor(scores: Record<string, {
        score: number;
        reasons: string[];
    }>);
    assess(principal: Principal): Promise<AnomalyAssessment>;
}
//# sourceMappingURL=AnomalyScorer.d.ts.map