/** * Political Party * * Represents a political party with policy positions and electoral characteristics * * @module core/PoliticalParty */ import { PolicyVector } from '../policy/PolicyVector'; /** * Political party configuration */ export interface PoliticalPartyConfig { /** Party ID (unique within country) */ id: string; /** Party name */ name: string; /** Country code (ISO 3166-1 alpha-3) */ countryCode: string; /** Policy positions (6D vector) */ policies: PolicyVector; /** Current seat share (0-1) */ seatShare: number; /** Vote share in last election (0-1) */ voteShare?: number; /** Coalition preferences (party IDs) */ coalitionPreferences?: string[]; /** Coalition blacklist (party IDs that won't work with) */ coalitionBlacklist?: string[]; /** Is this party in government? */ inGovernment?: boolean; /** Year of data */ year?: number; } /** * Political Party */ export declare class PoliticalParty { readonly id: string; readonly name: string; readonly countryCode: string; readonly policies: PolicyVector; seatShare: number; voteShare: number; coalitionPreferences: string[]; coalitionBlacklist: string[]; inGovernment: boolean; year: number; constructor(config: PoliticalPartyConfig); /** * Check if this party would work with another party in coalition */ isCompatibleWith(otherPartyId: string): boolean; /** * Get preference score for working with another party (0-1) * Higher = more preferred */ getCoalitionPreferenceScore(otherPartyId: string): number; /** * String representation */ toString(): string; }