import type { BrowserObservation } from "../browser/browser-observer.js";
import type { GoalEvidence, GoalSpec } from "../contracts/goal.js";
import type { Notice } from "./notice.js";
export interface BrowserObservationEvent {
    kind: "browser-observation";
    observation: BrowserObservation;
}
export interface GoalEvidenceEvent {
    kind: "goal-evidence";
    goal: GoalSpec;
    evidence: GoalEvidence[];
}
export interface RunStateEvent {
    kind: "run-state";
    runId: string;
    status: string;
    lastActivity: string;
}
export interface GitDiffEvent {
    kind: "git-diff";
    diff: string;
    ref?: string;
}
export interface TestOutputEvent {
    kind: "test-output";
    output: string;
    passed: boolean;
    suiteName?: string;
}
export interface UserFeedbackEvent {
    kind: "user-feedback";
    text: string;
    context?: string;
}
export type NoticerEvent = BrowserObservationEvent | GoalEvidenceEvent | RunStateEvent | GitDiffEvent | TestOutputEvent | UserFeedbackEvent;
export type Classifier = (event: NoticerEvent) => Promise<Notice | Notice[] | null | undefined> | Notice | Notice[] | null | undefined;
export interface NoticerEngine {
    ingest(event: NoticerEvent): Promise<Notice[]>;
    getNotices(): Notice[];
    addClassifier(classifier: Classifier): void;
}
export declare function createNoticerEngine(): NoticerEngine;
