export type EventInstanceStatus = 'pending' | 'answered' | 'resolved' | 'cancelled';
export type EventKind = 'interactive' | 'passive';
export interface EventChoice {
    choiceId: string;
    text: string;
    energyCost?: number;
    moneyCost?: number;
    diamondCost?: number;
    resolutionText?: string;
    effects?: EventEffects;
}
export interface EventEffects {
    stats?: Record<string, number>;
    resources?: {
        energy?: number;
        money?: number;
        diamonds?: number;
    };
    relationships?: Array<{
        personId: string;
        affinityDelta: number;
    }>;
}
export interface EventDefinition {
    id: string;
    category: string;
    kind?: EventKind;
    prompt: string;
    choices: EventChoice[];
    minAge?: number;
    maxAge?: number;
    isEligible?: (player: EventPlayerContext) => boolean;
}
export interface EventPlayerContext {
    userId: string;
    c: {
        ageYears?: number;
        [key: string]: unknown;
    };
    [key: string]: unknown;
}
export interface EventInstance {
    instanceId: string;
    eventId: string;
    playerId: string;
    status: EventInstanceStatus;
    createdAt: string;
    answeredAt?: string;
    resolvedAt?: string;
    selectedChoiceId?: string;
    context?: Record<string, unknown>;
}
export interface EventPromptEnvelope {
    type: 'event_prompt';
    eventId: string;
    instanceId: string;
    prompt: string;
    choices: EventChoice[];
    metadata?: Record<string, unknown>;
}
export interface EventResolvedEnvelope {
    type: 'event_resolved';
    eventId: string;
    instanceId: string;
    resolutionText: string;
    effects?: EventEffects;
    metadata?: Record<string, unknown>;
}
export interface EventErrorEnvelope {
    type: 'event_error';
    code: string;
    message: string;
    eventId?: string;
    instanceId?: string;
    details?: Record<string, unknown>;
}
export type OutboundEventEnvelope = EventPromptEnvelope | EventResolvedEnvelope | EventErrorEnvelope;
export interface EventResponseCommand {
    type: 'eventResponse';
    message: {
        eventId: string;
        choiceId: string;
    };
}
//# sourceMappingURL=types.d.ts.map