diff --git a/packages/helpers/ts-templates/package.json b/packages/helpers/ts-templates/package.json index 5d885f60c..34fb88e42 100644 --- a/packages/helpers/ts-templates/package.json +++ b/packages/helpers/ts-templates/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/templates", - "version": "1.8.0", + "version": "1.8.1", "type": "module", "description": "BSV Blockchain Script Templates", "main": "dist/cjs/mod.js", diff --git a/packages/helpers/ts-templates/src/MandalaAdmin.ts b/packages/helpers/ts-templates/src/MandalaAdmin.ts index 1344a92d6..6da9c67bf 100644 --- a/packages/helpers/ts-templates/src/MandalaAdmin.ts +++ b/packages/helpers/ts-templates/src/MandalaAdmin.ts @@ -9,7 +9,7 @@ import { createMinimallyEncodedScriptChunk } from './mandala-encoding.js' export interface AssetMetadata { label: string, ticker?: string, decimals?: number, [k: string]: unknown } export type MandalaActionKind = - | 'register' | 'issue' | 'redeem' | 'recover' + | 'register' | 'issue' | 'redeem' | 'pause' | 'unpause' | 'blockIdentity' | 'unblockIdentity' | 'allowIdentity' | 'unallowIdentity' diff --git a/packages/overlays/topics/package.json b/packages/overlays/topics/package.json index cc5cec233..d2d4e96a1 100644 --- a/packages/overlays/topics/package.json +++ b/packages/overlays/topics/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/overlay-topics", - "version": "1.4.0", + "version": "1.4.1", "description": "Canonical BSV overlay topic managers and lookup services", "type": "module", "main": "./dist/index.js", diff --git a/packages/overlays/topics/src/__tests__/mandala.test.ts b/packages/overlays/topics/src/__tests__/mandala.test.ts index 1086f3090..52c680440 100644 --- a/packages/overlays/topics/src/__tests__/mandala.test.ts +++ b/packages/overlays/topics/src/__tests__/mandala.test.ts @@ -328,14 +328,14 @@ describe('MandalaTopicManager control gate', () => { const forgedOffChain = encodeLinkagePayload({ inputs: [], outputs: [{ index: 0, linkage: (decodeLinkagePayload(transfer.offChainValues).outputs[0].linkage) as any }], - admin: [{ index: 0, actionDetails: { kind: 'recover', assetId } }] + admin: [{ index: 0, actionDetails: { kind: 'reissue', assetId } }] } as any) const tm = new MandalaTopicManager({ verifierWallet: overlay as any, screeningProvider: new InMemoryScreeningProvider([]), adminWallet: overlay as any, adminProtocolID: adminProto, stateStore: stubStore(deny) }) const result = await tm.identifyAdmissibleOutputs(transfer.beef, [0], forgedOffChain) expect(result.outputsToAdmit).toEqual([]) }) - it('rejects any tx that spends a frozen outpoint (incl. would-be recover/redeem)', async () => { + it('rejects any tx that spends a frozen outpoint (incl. would-be redeem)', async () => { const overlay = new ProtoWallet(PrivateKey.fromRandom()) const assetId = `${'a'.repeat(64)}.0` const transfer = await buildPeerTransfer(assetId, 100, overlay) diff --git a/packages/overlays/topics/src/mandala/AssetStateReducer.ts b/packages/overlays/topics/src/mandala/AssetStateReducer.ts index bf3680092..6ba4af470 100644 --- a/packages/overlays/topics/src/mandala/AssetStateReducer.ts +++ b/packages/overlays/topics/src/mandala/AssetStateReducer.ts @@ -38,7 +38,7 @@ const remove = (xs: string[], x: string): string[] => xs.filter(v => v !== x) type Handler = (s: AssetAdminState, d: MandalaActionDetails, ctx: FoldContext) => void // Per-kind handlers mutate the COPY `s` and reassign array fields to NEW arrays, -// never mutating the input state or its arrays. issue/redeem/recover and unknown +// never mutating the input state or its arrays. issue/redeem and unknown // kinds have no handler: no control-state change. const HANDLERS: Partial> = { register: (s, _d, ctx) => { if (typeof ctx.issuer === 'string') s.issuerIdentityKey = ctx.issuer }, diff --git a/packages/overlays/topics/src/mandala/MandalaTopicManager.ts b/packages/overlays/topics/src/mandala/MandalaTopicManager.ts index 98c220551..0ecaef797 100644 --- a/packages/overlays/topics/src/mandala/MandalaTopicManager.ts +++ b/packages/overlays/topics/src/mandala/MandalaTopicManager.ts @@ -100,7 +100,7 @@ export class MandalaTopicManager implements TopicManager { if (!pkhMatches || !priorOutpointSpent(tx, details)) { return { admitted: false } } - if ((details.kind === 'issue' || details.kind === 'recover' || details.kind === 'reissue') && typeof details.assetId === 'string') { + if ((details.kind === 'issue' || details.kind === 'reissue') && typeof details.assetId === 'string') { return { admitted: true, issuance: { assetId: details.assetId, amount: details.amount ?? 0 } } } // A redeem authorizes destruction of `amount` units, i.e. a negative supply @@ -227,7 +227,7 @@ export class MandalaTopicManager implements TopicManager { const frozen = new Set([...state.frozenOutpoints.map(f => f.outpoint), ...state.evictedOutpoints]) // Gate 1: frozen/evicted input spend — applies to ALL txs (blocks - // recover/redeem of a frozen coin too; only unfreeze/reissue resolve it). + // redeem of a frozen coin too; only unfreeze/reissue resolve it). if (inputOutpoints.some(op => frozen.has(op))) return false const adminAction = adminAssetKinds.get(assetId) diff --git a/packages/overlays/topics/src/mandala/__tests/AssetStateReducer.test.ts b/packages/overlays/topics/src/mandala/__tests/AssetStateReducer.test.ts index ffe5038ac..a73438703 100644 --- a/packages/overlays/topics/src/mandala/__tests/AssetStateReducer.test.ts +++ b/packages/overlays/topics/src/mandala/__tests/AssetStateReducer.test.ts @@ -40,9 +40,9 @@ describe('foldAction', () => { expect(s.frozenOutpoints).toEqual([]) expect(s.evictedOutpoints).toEqual(['tt.2']) }) - it('issue/redeem/recover do not change control state', () => { + it('issue/redeem do not change control state', () => { const base = S({ isPaused: true }) - for (const kind of ['issue', 'redeem', 'recover'] as const) { + for (const kind of ['issue', 'redeem'] as const) { expect(foldAction(base, d({ kind, amount: 1 }))).toEqual(base) } })