/**
 * @module        infra/clock
 * @description   Clock port —— 时间来源抽象
 *
 * @layer         infra
 *
 * Service 层不直接 new Date() / Date.now()；注入 Clock 让时间可控，便于测试。
 */
/** 默认系统时钟。 */
export class SystemClock {
    now() {
        return Date.now();
    }
    nowDate() {
        return new Date();
    }
    nowIso() {
        return new Date().toISOString();
    }
}
/** 测试用 —— 可设置 / 步进时间。 */
export class FakeClock {
    t;
    constructor(initial = 0) {
        this.t = typeof initial === 'number' ? initial : new Date(initial).getTime();
    }
    now() {
        return this.t;
    }
    nowDate() {
        return new Date(this.t);
    }
    nowIso() {
        return new Date(this.t).toISOString();
    }
    /** 跳到指定时刻 */
    setTime(t) {
        this.t = typeof t === 'number' ? t : new Date(t).getTime();
    }
    /** 前进 ms */
    advance(ms) {
        this.t += ms;
    }
}
//# sourceMappingURL=clock.js.map