import { describe, expect, test } from 'vitest' import * as Campaigns from './Campaigns.js' import * as Runner from './Runner.js' describe('resumeCheckpoint', () => { test('restarts when eligibility changes and preserves the committed cursor', () => { const version = `0x${'11'.repeat(32)}` as const const exclusionVersion = `0x${'33'.repeat(32)}` as const const checkpoint = { cursor: { blockNumber: 5, logIndex: 0, transactionIndex: 0 }, kind: 'checkpoint', progress: { eligibilityVersion: version, exclusionVersion }, projection: { accounts: [] }, stage: 'reconcile', } satisfies Campaigns.RunCheckpointEvidence const committed = { blockNumber: 10, logIndex: 0, transactionIndex: 0 } expect({ changed: Runner.resumeCheckpoint(checkpoint, { eligibilityVersion: `0x${'22'.repeat(32)}`, exclusionVersion, }), exclusionChanged: Runner.resumeCheckpoint( { ...checkpoint, progress: { eligibilityVersion: version, exclusionVersion }, }, { eligibilityVersion: version, exclusionVersion: `0x${'44'.repeat(32)}` }, ), matched: Runner.resumeCheckpoint( { ...checkpoint, progress: { eligibilityVersion: version, exclusionVersion }, }, { eligibilityVersion: version, exclusionVersion }, )?.cursor, resumedCursor: Runner.reconciledCursor({ committed, replayed: checkpoint.cursor }), }).toStrictEqual({ changed: undefined, exclusionChanged: undefined, matched: checkpoint.cursor, resumedCursor: committed, }) }) }) describe('checkpointTargetRate', () => { test('restores the selected target rate and stale marker', () => { const config = { annualRate: { maxBps: 500, minBps: 100, morphoVault: '0x0000000000000000000000000000000000000001', staleAfterSeconds: 3_600, }, endTimestamp: 2, funding: [], intervalSeconds: 1, startTimestamp: 1, } satisfies NonNullable const checkpoint = { kind: 'checkpoint', progress: { staleRates: ['target'], targetRateBps: 220, targetRateObservedAt: '2026-09-07T12:00:00.000Z', }, projection: { accounts: [] }, stage: 'calculate', } satisfies Campaigns.RunCheckpointEvidence expect(Runner.checkpointTargetRate(checkpoint, config)).toStrictEqual({ annualRateBps: 220, config, observedAt: '2026-09-07T12:00:00.000Z', stale: true, }) }) })