/**
 * Mission Period Lifecycle Service
 *
 * Manages automatic activation and deactivation of Missions based on
 * their OKR period (weekly, monthly, quarterly, etc.).
 *
 * Responsibilities:
 * - Activate missions whose period has started (paused → active)
 * - Trigger end-of-period review for missions whose period has ended
 * - Filter missions by current/future/past period
 * - Sort missions by priority for scheduling
 *
 * Runs as part of the cron evaluation loop — called periodically
 * to reconcile mission statuses with their time periods.
 *
 * @module services/v3/mission-period.service
 */
import type { Mission } from '../../types/v2/mission.types.js';
/** Result of a period reconciliation cycle. */
export interface PeriodReconcileResult {
    /** Missions activated because their period started */
    activated: string[];
    /** Missions that reached end-of-period and need review */
    endOfPeriod: string[];
    /** Total missions evaluated */
    evaluated: number;
}
/**
 * Service for reconciling Mission lifecycle with OKR time periods.
 */
export declare class MissionPeriodService {
    private static instance;
    private readonly logger;
    private constructor();
    static getInstance(): MissionPeriodService;
    static resetInstance(): void;
    /**
     * Reconcile all missions with time periods against the current date.
     *
     * - Paused missions whose period is now active → activate
     * - Active missions whose period has ended → mark for end-of-period review
     * - Terminal missions are skipped
     *
     * @param now - Reference date (defaults to current time)
     * @returns Summary of actions taken
     */
    reconcile(now?: Date): Promise<PeriodReconcileResult>;
    /**
     * Get all active missions for the current period, sorted by priority.
     *
     * @param now - Reference date (defaults to current time)
     * @returns Missions whose period contains 'now' and status is 'active', sorted by priority
     */
    getActivePeriodMissions(now?: Date): Promise<Mission[]>;
    /**
     * Get missions for a specific team, filtered by period status and sorted by priority.
     *
     * @param teamId - Team to filter by
     * @param periodFilter - 'current', 'future', 'past', or 'all'
     * @param now - Reference date
     * @returns Filtered and sorted missions
     */
    getMissionsByTeamAndPeriod(teamId: string, periodFilter?: 'current' | 'future' | 'past' | 'all', now?: Date): Promise<Mission[]>;
    /**
     * Load all missions from disk.
     */
    private loadAllMissions;
    /**
     * Update a mission's status on disk.
     */
    private updateMissionStatus;
}
//# sourceMappingURL=mission-period.service.d.ts.map