import assert from 'node:assert/strict';
import fs from 'node:fs';
import path from 'node:path';
import test from 'node:test';
import { fileURLToPath } from 'node:url';

const here = path.dirname(fileURLToPath(import.meta.url));
const contractsPath = path.join(here, 'contracts.ts');

void test('contracts: players and sceneNpcTokensSession channels exist', () => {
  const src = fs.readFileSync(contractsPath, 'utf8');
  assert.match(src, /players:\s*\{/);
  assert.match(src, /list:\s*'players\.list'/);
  assert.match(src, /upsertProgress:\s*'players\.upsertProgress'/);
  assert.match(src, /sceneNpcTokensSession:\s*\{/);
  assert.match(src, /npcMapSpawn:\s*\{/);
  assert.match(src, /scenePlayerTokensSession:\s*\{/);
  assert.match(src, /tokenGridSnap:\s*\{/);
  assert.match(src, /tokenGridSnap\.setEnabled/);
  assert.match(src, /npcTokens\?:\s*SceneNpcToken\[\]/);
});
