/** * Coalition Stability * * Models coalition stability and breakup probability * * Research Foundation: * - Saalfeld (2008): Intra-party politics and coalition governments * - Debus & Bräuninger (2009): Measuring coalition stability * - Historical data: Average coalition duration varies by country (2-5 years typical) * * Stability Factors: * 1. Policy distance (cohesion) * 2. Seat margin (buffer against defections) * 3. External pressure (crises, scandals) * 4. Time in power (honeymoon period vs fatigue) * * @module coalition/CoalitionStability */ import { Coalition } from './Coalition.js'; /** * Stability metrics for a coalition */ export interface StabilityMetrics { /** Policy cohesion score (0-1, higher = more cohesive) */ policyCohesion: number; /** Seat margin score (0-1, higher = more seats beyond threshold) */ seatMargin: number; /** External pressure score (0-1, higher = more pressure) */ externalPressure: number; /** Time-in-power score (0-1, accounts for honeymoon and fatigue) */ timeInPower: number; /** Overall stability score (0-1, higher = more stable) */ overallStability: number; /** Monthly breakup probability (0-1) */ monthlyBreakupProbability: number; } /** * External events that can destabilize coalitions */ export interface ExternalPressure { /** Economic crisis severity (0-1) */ economicCrisis?: number; /** Scandal severity (0-1) */ scandal?: number; /** Policy failure severity (0-1) */ policyFailure?: number; /** International crisis severity (0-1) */ internationalCrisis?: number; /** Public opinion drop (0-1) */ opinionDrop?: number; } /** * Calculate coalition stability metrics * * @param coalition - Coalition to analyze * @param monthsInPower - How long coalition has been in government * @param externalPressure - External destabilizing factors * @returns Stability metrics */ export declare function calculateStability(coalition: Coalition, monthsInPower: number, externalPressure?: ExternalPressure): StabilityMetrics; /** * Check if coalition should break up this month * * @param coalition - Coalition to check * @param monthsInPower - How long coalition has been in government * @param externalPressure - External destabilizing factors * @param rng - Random number generator (0-1) * @returns True if coalition breaks up */ export declare function shouldCoalitionBreakup(coalition: Coalition, monthsInPower: number, externalPressure?: ExternalPressure, rng?: () => number): boolean; /** * Predict coalition duration (expected months) * * Based on stability metrics and historical data */ export declare function predictCoalitionDuration(coalition: Coalition, externalPressure?: ExternalPressure): number; /** * Get coalition health status */ export declare function getCoalitionHealth(stability: StabilityMetrics): string;