import test from 'node:test'; import assert from 'node:assert/strict'; import { bridgeDepositAssetId, bridgeDepositObservedAt, intentsAssetIdFromNearTokenId, } from '../src/core/bridge-assets.mjs'; const NBTC = 'nep141:nbtc.bridge.near'; const LEGACY_BTC = 'nep141:btc.omft.near'; const assetRegistry = new Map([ [NBTC, { assetId: NBTC }], [LEGACY_BTC, { assetId: LEGACY_BTC }], ]); test('intentsAssetIdFromNearTokenId normalizes NEAR token ids to verifier asset ids', () => { assert.equal(intentsAssetIdFromNearTokenId('nbtc.bridge.near'), NBTC); assert.equal(intentsAssetIdFromNearTokenId(NBTC), NBTC); assert.equal(intentsAssetIdFromNearTokenId(''), null); }); test('bridgeDepositAssetId uses credited bridge near_token_id instead of chain-only fallback', () => { assert.equal(bridgeDepositAssetId({ near_token_id: 'btc.omft.near', defuse_asset_identifier: 'btc:mainnet:native', }, { assetRegistry, fallbackAssetId: NBTC, }), LEGACY_BTC); assert.equal(bridgeDepositAssetId({ near_token_id: 'nbtc.bridge.near', defuse_asset_identifier: 'btc:mainnet:native', }, { assetRegistry, fallbackAssetId: LEGACY_BTC, }), NBTC); }); test('bridgeDepositObservedAt preserves bridge deposit creation time', () => { assert.equal(bridgeDepositObservedAt({ created_at: '2026-04-07T15:20:19.909Z', }), '2026-04-07T15:20:19.909Z'); assert.equal(bridgeDepositObservedAt({ created_at: 'not-a-date', observed_at: '2026-04-07T15:20:24.814Z', }), '2026-04-07T15:20:24.814Z'); assert.equal(bridgeDepositObservedAt({}), null); });