#!/usr/bin/env node
/** floor-escape-consume (М6) — чистое ядро одноразового погашения. */
import { canonicalAction, findOpenGrant } from './escape-grant.mjs';

/**
 * Если исполненное действие совпало со свежим непогашенным пропуском — вернуть отметку, иначе null.
 * Через единый findOpenGrant: гасим ИМЕННО тот грант, который открыл escape (один предикат
 * свежести), без расхождения с open-проверкой при дублях/future-ts.
 */
export function consumeDecision({ action, grants, consumed, now = Date.now() }) {
  const g = findOpenGrant(action, grants, consumed, now);
  return g ? { action: g.action, ts: g.ts } : null;
}

export { canonicalAction }; // реэкспорт для обёртки
