/**
 * Pure logic for the promotion sampler (ADR-PIPELINE-084 §2.1).
 *
 * Parses, filters, and samples domain agent findings for human FP-rate review.
 * The CLI wrapper lives in tools/promotion-sampler.ts and handles I/O + args;
 * all deterministic logic is here and independently testable.
 */
export interface Finding {
    id: string;
    timestamp: string;
    domain: string;
    agent: string;
    severity: 'low' | 'medium' | 'high' | 'critical' | string;
    blocking: boolean;
    summary: string;
}
export interface SampleOptions {
    /** Random seed for reproducibility in tests. */
    seed?: number;
}
/**
 * Parse a blob that is either JSON array of findings or newline-delimited
 * JSON (JSONL). Returns [] for empty input.
 */
export declare function parseFindings(raw: string): Finding[];
/**
 * Keep findings from the specified domain whose timestamps fall within
 * [now - windowDays, now].
 */
export declare function filterInWindow(findings: Finding[], domain: string, windowDays: number, now?: Date): Finding[];
/**
 * Keep only blocking findings (ADR-084 §2 — FP rate is computed against
 * findings the agent marked blocking).
 */
export declare function filterBlocking(findings: Finding[]): Finding[];
/**
 * Draw a random sample. Size = max(floor(0.1 * N), 30), capped at 200.
 * If N ≤ 30, returns everything.
 */
export declare function drawSample(findings: Finding[], options?: SampleOptions): Finding[];
/**
 * Emit a CSV with a blank fp_label column for the reviewer.
 */
export declare function toCsv(sample: Finding[]): string;
//# sourceMappingURL=sampler-lib.d.ts.map