"use strict";
/**
 * 🔊 Mirror Events - The Power Chords
 * Lowest-level event system for C-Mirror
 * All mirror operations emit events that broadcast broadly
 *
 * Events flow: Core → Event Emitter → Listeners (Terminal, Slack, Dashboard, etc.)
 *
 * This is the foundation - everything else listens to these power chords
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.MirrorEventType = void 0;
exports.createMirrorEvent = createMirrorEvent;
/**
 * Event types - All possible mirror events
 */
var MirrorEventType;
(function (MirrorEventType) {
    // Sync lifecycle
    MirrorEventType["SYNC_START"] = "mirror:sync:start";
    MirrorEventType["SYNC_PROGRESS"] = "mirror:sync:progress";
    MirrorEventType["SYNC_COMPLETE"] = "mirror:sync:complete";
    MirrorEventType["SYNC_ERROR"] = "mirror:sync:error";
    // Validation lifecycle
    MirrorEventType["VALIDATION_START"] = "mirror:validation:start";
    MirrorEventType["VALIDATION_PROGRESS"] = "mirror:validation:progress";
    MirrorEventType["VALIDATION_COMPLETE"] = "mirror:validation:complete";
    MirrorEventType["VALIDATION_ERROR"] = "mirror:validation:error";
    // Integrity checks
    MirrorEventType["INTEGRITY_CHECK"] = "mirror:integrity:check";
    MirrorEventType["INTEGRITY_PERFECT"] = "mirror:integrity:perfect";
    MirrorEventType["INTEGRITY_DEGRADED"] = "mirror:integrity:degraded";
    MirrorEventType["INTEGRITY_FAILED"] = "mirror:integrity:failed";
    // Score updates
    MirrorEventType["SCORE_UPDATE"] = "mirror:score:update";
    MirrorEventType["SCORE_MILESTONE"] = "mirror:score:milestone";
    MirrorEventType["SCORE_DROP"] = "mirror:score:drop";
    // DNA chain
    MirrorEventType["DNA_LOG"] = "mirror:dna:log";
    MirrorEventType["DNA_CHECKPOINT"] = "mirror:dna:checkpoint";
    MirrorEventType["DNA_RESTORE"] = "mirror:dna:restore";
    // File operations
    MirrorEventType["FILE_READ"] = "mirror:file:read";
    MirrorEventType["FILE_WRITE"] = "mirror:file:write";
    MirrorEventType["FILE_BACKUP"] = "mirror:file:backup";
    // Errors
    MirrorEventType["ERROR"] = "mirror:error";
    MirrorEventType["WARNING"] = "mirror:warning";
})(MirrorEventType || (exports.MirrorEventType = MirrorEventType = {}));
/**
 * Create a mirror event (helper)
 */
function createMirrorEvent(type, data, metadata = {}) {
    return {
        type,
        timestamp: new Date(),
        data,
        metadata: {
            projectPath: metadata.projectPath || process.cwd(),
            timestamp: new Date(),
            ...metadata
        }
    };
}
//# sourceMappingURL=mirror-events.js.map