export type OutcomeEventType = 'PATTERN_USED' | 'PATTERN_ACCEPTED' | 'PATTERN_REJECTED' | 'PATTERN_SUCCESS' | 'PATTERN_FAILURE' | 'PATTERN_MODIFIED' | 'PATTERN_REPLACED';
export type Trend = 'rising' | 'stable' | 'declining' | 'dead';
export interface OutcomeEvent {
    id: string;
    patternId: string;
    type: OutcomeEventType;
    timestamp: number;
    language?: string;
    category?: string;
    context?: string;
    duration?: number;
    result?: string;
    failureType?: string;
    failureReason?: string;
}
export interface PatternOutcome {
    patternId: string;
    usageCount: number;
    successCount: number;
    failureCount: number;
    acceptanceCount: number;
    rejectionCount: number;
    lastOutcome: OutcomeEventType | null;
    lastSuccessTimestamp: number | null;
    lastFailureTimestamp: number | null;
    successRate: number;
    failureRate: number;
    acceptanceRate: number;
    confidence: number;
    trend: Trend;
    health: number;
    firstSeen: number;
    lastSeen: number;
}
export interface LeaderboardEntry {
    patternId: string;
    score: number;
    rank: number;
    metrics: Record<string, number>;
}
export interface Leaderboard {
    mostSuccessful: LeaderboardEntry[];
    mostReliable: LeaderboardEntry[];
    mostAccepted: LeaderboardEntry[];
    fastestGrowing: LeaderboardEntry[];
    mostFailed: LeaderboardEntry[];
    mostRejected: LeaderboardEntry[];
    generatedAt: number;
}
export interface OutcomeStoreData {
    events: OutcomeEvent[];
    summaries: Record<string, PatternOutcome>;
}
export declare function makeEvent(patternId: string, type: OutcomeEventType, opts?: {
    language?: string;
    category?: string;
    context?: string;
    duration?: number;
    result?: string;
    failureType?: string;
    failureReason?: string;
    timestamp?: number;
}): OutcomeEvent;
//# sourceMappingURL=outcome-types.d.ts.map