{"_id":"@bsv/mandala","_rev":"5-dfbf514dcb7d72e74fdfea7b889223c0","name":"@bsv/mandala","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@bsv/mandala","version":"0.1.0","license":"Open BSV","_id":"@bsv/mandala@0.1.0","maintainers":[{"name":"johngalt5","email":"dylan@murraydt.com"},{"name":"loftsteinn","email":"oli@oskarsson.nl"},{"name":"dkellen","email":"darrkellen@gmail.com"},{"name":"braydude","email":"brayden167@gmail.com"},{"name":"tyeverett","email":"p2ppsr@tyweb.us"}],"dist":{"shasum":"f8bfd310c0fd494160f3166a90c185970ede42fe","tarball":"https://registry.npmjs.org/@bsv/mandala/-/mandala-0.1.0.tgz","fileCount":62,"integrity":"sha512-SVro/fN1+U6PTCcZnQXcnFZIoxG4Xfq53UcmeRCDbO9QvW+C/b6Eh7AM45+sD8WbS9lQfHMGRoYJOHx3adGEdQ==","signatures":[{"sig":"MEUCIEK0LzizZ0ztMuqZ2QT3qNeOXvo8nkaravmIdZ7XIqgPAiEAq/1iFfQmW2CHQKjog9yxQhz0wH6WgmdyUHrEUcsUppU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174443},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"},"./package.json":"./package.json"},"gitHead":"aa09c2633c822e84c5486a960d86be24a945b010","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dkellen","email":"darrkellen@gmail.com"},"_npmVersion":"11.12.1","description":"Token client for Mandala overlay assets — send, receive, and administer any asset with overlay-first commit and journaled recovery.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@bsv/sdk":"^2.1.6","@bsv/templates":"^1.9.0","@bsv/message-box-client":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mandala_0.1.0_1783653526677_0.22962154772202847","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bsv/mandala","version":"0.2.0","license":"Open BSV","_id":"@bsv/mandala@0.2.0","maintainers":[{"name":"johngalt5","email":"dylan@murraydt.com"},{"name":"loftsteinn","email":"oli@oskarsson.nl"},{"name":"dkellen","email":"darrkellen@gmail.com"},{"name":"braydude","email":"brayden167@gmail.com"},{"name":"tyeverett","email":"p2ppsr@tyweb.us"}],"dist":{"shasum":"7f230eb5661f64c86cee64169d95a37e8ce6b6d3","tarball":"https://registry.npmjs.org/@bsv/mandala/-/mandala-0.2.0.tgz","fileCount":80,"integrity":"sha512-SnFHKRv+njhJgwPWaMd1z+k1SqIMrb/OuusajO3P2fy7wNpYjn6ByBV1VF5VgQ0ly0UBxbnI0tgzfd/MyLidLg==","signatures":[{"sig":"MEYCIQCY5PcaXs4QXe7onTE7MMfCMaALE5kGy6Haj+rfhB93agIhAOQ1f82sag0udl23HILMIOul4ObQp7KSBqmj6g2TuIm+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDPTk5BVYzQa/eqmC/vr461aQ8I4lpFvAR1DJ6BpG18hAIhAPzEOKFQ1C8Wl1cRbR0v6Opsk8Gg8BLUbhLzLKAOwyxa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":389562},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js","default":"./dist/*.js"},"./package.json":"./package.json"},"gitHead":"b06e4886d68e7adce8b5b2259fea58266159a2e1","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dkellen","email":"darrkellen@gmail.com"},"_npmVersion":"12.0.1","description":"Token client for Mandala overlay assets — send, receive, and administer any asset with overlay-first commit and journaled recovery.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@bsv/sdk":"^2.1.6","@bsv/templates":"^1.9.0","@bsv/message-box-client":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mandala_0.2.0_1789597738391_0.7121745165960605","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bsv/mandala","version":"0.4.0","license":"Open BSV","_id":"@bsv/mandala@0.4.0","maintainers":[{"name":"johngalt5","email":"dylan@murraydt.com"},{"name":"loftsteinn","email":"oli@oskarsson.nl"},{"name":"dkellen","email":"darrkellen@gmail.com"},{"name":"braydude","email":"brayden167@gmail.com"},{"name":"tyeverett","email":"p2ppsr@tyweb.us"}],"dist":{"shasum":"a28941efaa113f690a5f210411fdb295861032be","tarball":"https://registry.npmjs.org/@bsv/mandala/-/mandala-0.4.0.tgz","fileCount":86,"integrity":"sha512-e4olTjt7ot9Sl0u/GTulpOHEf3UeZT7n47DfoBRESjq3Evr84VPdhNPzZalgtH4t0SGmNBAFXooPEurdrb0DJg==","signatures":[{"sig":"MEUCIQCJdLTcTUkl3lEQa+aDTjZoSdWhSUH97YhAaZdSrDFngQIgUcA0/Xql2GgAAIwZg9m7N+mx+8AoOO3/0Qhu4vdM6kU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDEH8H+VqMk0wacnJe2tGW1XPh4AgNn/FWZJBaaV6AMoAIgQEKBW2uyKCXkKU1Wjp36/e0VJzxe6xmHm6oW6dMCOVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401636},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js","default":"./dist/*.js"},"./package.json":"./package.json"},"gitHead":"95bee777dc1577d73d98fbfac680f7c8cac67859","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dkellen","email":"darrkellen@gmail.com"},"_npmVersion":"12.0.1","description":"Token client for Mandala overlay assets — send, receive, and administer any asset with overlay-first commit and journaled recovery.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@bsv/sdk":"^2.8.11","@bsv/templates":"^2.0.0","@bsv/message-box-client":"^2.5.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mandala_0.4.0_1791331362456_0.9672259917060921","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@bsv/mandala","version":"0.4.1","license":"Open BSV","_id":"@bsv/mandala@0.4.1","maintainers":[{"name":"johngalt5","email":"dylan@murraydt.com"},{"name":"loftsteinn","email":"oli@oskarsson.nl"},{"name":"dkellen","email":"darrkellen@gmail.com"},{"name":"braydude","email":"brayden167@gmail.com"},{"name":"tyeverett","email":"p2ppsr@tyweb.us"}],"dist":{"shasum":"23f4503bc9d90766f7252b23b50981bdb55aa723","tarball":"https://registry.npmjs.org/@bsv/mandala/-/mandala-0.4.1.tgz","fileCount":86,"integrity":"sha512-32/eYkUz6Hre9ibdEfP6JcvaIaNAMm4hqO/VwQIELVCYbcEt4vQThKjGPh7cGJAzopDEDR6eiI9T9NvHcqJfpA==","signatures":[{"sig":"MEYCIQD9WcYC34KDVScHmoMGISZeqSF4zDWXn/WYvg1z+2p2BgIhAI7GV0B6ZkAyzGRIP60PKO08kUNIghCrq6JuvpuLkqHn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDQNVVvrojkeQGbB8JtZjFzZhHyZKr9+FSBaZVXIM59LwIhAI7GOZVcf4MOJ8LWHO1AQAjSK95nsmC9k3yvNRX8gqFY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":403893},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js","default":"./dist/*.js"},"./package.json":"./package.json"},"gitHead":"1718323e287b20fe9c1dc6608d5d1f76b52efe72","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dkellen","email":"darrkellen@gmail.com"},"_npmVersion":"12.0.1","description":"Token client for Mandala overlay assets — send, receive, and administer any asset with overlay-first commit and journaled recovery.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@bsv/sdk":"^2.8.11","@bsv/templates":"^2.0.0","@bsv/message-box-client":"^2.5.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"~5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mandala_0.4.1_1791341082164_0.7681541437432102","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@bsv/mandala@0.5.0","dist":{"shasum":"36c3f44f65a4dbfe62d3085a86108f34144b3275","tarball":"https://registry.npmjs.org/@bsv/mandala/-/mandala-0.5.0.tgz","fileCount":126,"integrity":"sha512-MBtqUY73TrEOnXNsG0Xc5+rAVkig15oBNH8sSJMpO1m4WMopsQBBGFb+l5KY66q71lJWNOAw8/AxFJO1rhArHQ==","signatures":[{"sig":"MEQCIF+dzjTqmkV15/xoF0e1ms2SK+eeXIs0NZYTSAvMf1ZmAiBXu7qriI3kFrOzxDZWeSaarhs3UoAzY/Td7NT3Cy1Cwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCH1LWMC0qk1CALwencyrceR6pTQZMaRGmHCpKNOaCdjgCIBlblTFujjnWBKwsNZTq8Jr7dTGX56cgHZ5IDFPEyqIV"}],"unpackedSize":657447},"main":"./dist/index.js","name":"@bsv/mandala","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js","default":"./dist/*.js"},"./package.json":"./package.json"},"license":"Open BSV","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit"},"version":"0.5.0","_npmUser":{"name":"dkellen","email":"darrkellen@gmail.com"},"overrides":{"@bsv/sdk":"$@bsv/sdk","@bsv/templates":"$@bsv/templates","@bsv/color-permission-module":"$@bsv/color-permission-module"},"_npmVersion":"12.0.1","description":"Token client for Mandala overlay assets — send, receive, and administer any asset with overlay-first commit and journaled recovery.","directories":{},"maintainers":[{"name":"johngalt5","email":"dylan@murraydt.com"},{"name":"loftsteinn","email":"oli@oskarsson.nl"},{"name":"dkellen","email":"darrkellen@gmail.com"},{"name":"braydude","email":"brayden167@gmail.com"},{"name":"tyeverett","email":"p2ppsr@tyweb.us"}],"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","@bsv/sdk":"^4.0.0","typescript":"~5.9.3","@bsv/templates":"^2.2.0","@bsv/message-box-client":"^2.5.4","@bsv/wallet-toolbox-client":"^2.15.0","@bsv/color-permission-module":"^0.2.0"},"peerDependencies":{"@bsv/sdk":"^4.0.0","@bsv/templates":"^2.2.0","@bsv/message-box-client":"^2.5.4","@bsv/color-permission-module":"^0.2.0"},"peerDependenciesMeta":{"@bsv/color-permission-module":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mandala_0.5.0_1793336055545_0.09512869684281267"}}},"time":{"created":"2026-07-10T03:18:46.475Z","modified":"2026-10-30T04:54:15.858Z","0.1.0":"2026-07-10T03:18:46.824Z","0.2.0":"2026-09-16T22:28:58.536Z","0.4.0":"2026-10-07T00:02:42.555Z","0.4.1":"2026-10-07T02:44:42.272Z","0.5.0":"2026-10-30T04:54:15.673Z"},"license":"Open BSV","description":"Token client for Mandala overlay assets — send, receive, and administer any asset with overlay-first commit and journaled recovery.","maintainers":[{"name":"johngalt5","email":"dylan@murraydt.com"},{"name":"loftsteinn","email":"oli@oskarsson.nl"},{"name":"dkellen","email":"darrkellen@gmail.com"},{"name":"braydude","email":"brayden167@gmail.com"},{"name":"tyeverett","email":"p2ppsr@tyweb.us"}],"readme":"# @bsv/mandala\n\nIssuer console and holder client for Mandala assets. Mandala tokens are plain\nBRC-162 1Color tokens with uint64 amounts. The issuer treasury and the admin\nchain stay under Mandala keys, and holder value moves only through BRC-207\nreceipts.\n\n- **Issuer, admin and registry flows** (`register`, `issue`, `payout`,\n  `redeem`, `admin`) spend Mandala-key outputs in the `mandala treasury`\n  basket. Each one is overlay-first: the wallet signs with `noSend`, the\n  overlay admits it on `/submit`, and only then does `sendWith` broadcast it.\n  A journal covers every step, so `reconcile()` can recover after a crash.\n- **Holder hand-overs** (`send`, `receive`) go through a BRC-100 wallet that\n  hosts `@bsv/color-permission-module` 0.2.0 with the Mandala issuer-v1\n  profile. The lib builds the recipient output and the BRC-207 plan. The\n  wallet's color module adds the inputs, the token change and the Mandala\n  envelope.\n- **`@bsv/mandala/profile`** is the wallet side: the issuer-v1\n  `RequiredProfileHandler` and the Mandala overlay provider. It is the only\n  entry that imports the color module. The core entry is React Native safe.\n\nAll amounts are `bigint` base units in `0..2^64-1` (`MAX_UINT64`). JSON\ncarries them as canonical decimal strings. Use `parseAmount(text, decimals)`\nand `formatAmount(units, decimals)` at the UI edge.\n\n## Configure\n\n```ts\nimport { createMandalaClient } from '@bsv/mandala'\n\nconst mandala = createMandalaClient({\n  wallet,                                   // any BRC-100 WalletInterface; default: new WalletClient()\n  overlayUrl: 'https://overlay.example',\n  overlayIdentityKey: '02…',                // required for every submit and verify (fails closed when unset)\n  messageBoxUrl: 'https://messagebox.example',\n  storage                                   // MandalaStorage for the journals; required on React Native\n})\n```\n\n`createMandalaClient` calls `configureMandala`, which is the single entry\npoint for endpoints and the journal storage adapter. The lib has no\nenvironment defaults. Without an overlay identity key, every path that\nsubmits to the overlay or verifies against it throws\n`OVERLAY_IDENTITY_KEY_UNSET` before any wallet call.\n\n## Issuer console\n\n```ts\nconst { assetId } = await mandala.register({ label: 'Test Dollar', ticker: 'TUSD', decimals: 2 })\nconst [asset] = await mandala.assets()\n\nawait mandala.issue({ asset, amount: 100_000n, depositHash })          // mint into the treasury\nconst paid = await mandala.payout({ asset, amount: 2_500n, recipientKey }) // treasury → holder p color output + BRC-207 receipt\nif (!paid.notified) { /* committed; the receipt is journaled and reconcileNotifications redelivers it */ }\nawait mandala.redeem({ asset, amount: 1_000n })\n\nawait mandala.admin({ asset, details: { kind: 'freezeOutput', outpoint } })\n```\n\nThe deploy carries `req = mandalaReq(overlayIdentityKey)`, and its submit\ntopics are `['tm_mandala', 'tm_color_<txid>_0']`. A payout or a `reissue`\nadmin action creates the holder's output through `recipientLinkage` and\ndelivers the receipt on MessageBox `mandala-color`. Never re-run a payout\nwhose `notified` is `false`: the value has already moved.\n\n## Holder send and receive (wallet host runtime, design B7)\n\nHolder hand-overs run in the wallet HOST (the process that owns the\nunderlying wallet and the color module). The host builds one ledger and\nshares it with the issuer-v1 handler and every lib call:\n\n```ts\nconst ledger = createHostLedger(hostStorage)                    // in-process; never exposed over BRC-100\nconst mandala = createMandalaClient({ wallet: managerWallet, hostWallet: underlyingWallet, ledger,\n  markSettled: txid => color.markSettled(txid), overlayUrl, overlayIdentityKey })\n\nconst { handover, notified, settle } = await mandala.send({ assetId, counterparty, amount: 400n, note: 'rent' })\n// 1. sendHandover    sign plain noSend through the module; the host builds the envelope from its\n//                    own custody, walks the evidence (σ / envelopes), records 'pending', journals 'signed'\n// 2. deliverHandover MessageBox body v4 on 'mandala-color'; 'signed' → 'delivered'\n// 3. settleHandover  after the ACK: submit on tm_color_<assetId>, verify σ, record settled, markSettled\n\nconst { accepted, failed } = await mandala.receive()           // own submit (online) or COVER (offline), record, internalize\nawait settleReceipts({ ledger, markSettled })                    // submit offline-credited chains once online\n```\n\nThe v4 body carries the AtomicBEEF tip, the decimal amount, the receipt\nfields (`derivationPrefix`, `derivationSuffix`, `senderIdentityKey` A or A′),\n`admission` (σ of the tip), `admissions[]` (σ per admitted ancestor) and\n`linkage[]` (the envelope of each unadmitted tx, the tip included). The\nreceipt the wallet internalizes is plain BRC-207 custody JSON.\n\nReceive is online first: the recipient host submits the chain and needs a\nverified σ covering its output. Only a transport failure takes the offline\npath: COVER over `admissions[]` with the S1 hop checks (scripts verify,\nconservation or a valid authority transition, 1 sat, one asset, envelope for\nK, no duplicate spend). An offline credit is `pending` (`color_offline`)\nuntil `settleReceipts` admits it. A typed verdict, retryable or not, is never\ncredited offline.\n\nA delivery failure returns `notified: false`; the notification is journaled\nand `reconcileNotifications` redelivers it. An undelivered hand-over is\nnever submitted by its sender. An unreadable inbox body is retried up to\n`UNREADABLE_BUDGET` passes, then reported `exhausted` until\n`dismissHandover`.\n\n## Wallet registration (`@bsv/mandala/profile`)\n\n```ts\nimport { createColorModule } from '@bsv/color-permission-module'\nimport { createMandalaProfile, MANDALA_PROFILE_ID } from '@bsv/mandala/profile'\nimport { createHostLedger } from '@bsv/mandala'\n\nconst ledger = createHostLedger(hostStorage)\nconst color = createColorModule({\n  wallet: underlyingWallet, provider: defaultProvider, requestTokenAccess, store,\n  profiles: { [MANDALA_PROFILE_ID]: createMandalaProfile({ overlays: [{ identityKey, url }], ledger }) }\n})\nnew WalletPermissionsManager(underlyingWallet, adminOriginator, { permissionModules: { color } })\n```\n\nThe handler credits a receipt only from the host ledger (`settled` or\n`pending`), else it submits the receipt itself and requires σ. Its provider\nanswers `spendability` from the ledger when the overlay is unreachable or\nhas not admitted yet, so offline and chained hand-overs work.\n`@bsv/color-permission-module` is an optional peer: only\n`@bsv/mandala/profile` needs it.\n\n## Recovery\n\n`reconcile()` rebroadcasts overlay-accepted txs, re-submits retryable\nrefusals and delivered hand-overs, aborts dead noSend actions, and parks a\ntx whose broadcast keeps failing as `stranded`. Its bulk sweep of stuck\nnoSend actions waits while any accepted, retryable, signed or delivered\nentry exists. A host that manages its own noSend actions passes\n`{ sweep: false }`. `reconcileNotifications(messageBoxClient)` redelivers\njournaled hand-over and receipt notifications.\n\n## Subpaths\n\nRetained building blocks also resolve as subpaths through the `./*` export\nmap, for example `@bsv/mandala/history` (`loadHistory(wallet, { scope })`),\n`metadata`, `adminState`, `adminHistory`, `overlayActivity`, `banking`,\n`submitGuards`, `singleFlight`, `adminAuthGate`, `contacts`,\n`contactsStore`, `registry`, `reconcile`, `notifyJournal`, `feeRate`,\n`assetRecover` and `assets`.\n\n## Vendored dependencies\n\nUntil the upstream packages are published, `@bsv/sdk` 4.0.0 and\n`@bsv/templates` 2.2.0 (plus `@bsv/color-permission-module` 0.2.0 and\n`@bsv/wallet-toolbox-client` for the profile entry and its tests) come from\ntarballs in `../vendor-ts-stack/`. They are `devDependencies` with\n`file:` specs, and `overrides` (`\"<name>\": \"$<name>\"`) pin every transitive\nuser to the same tarball. Consumers list the same tarballs as direct\ndependencies with matching overrides. Once the packages are published, the\n`file:` specs become registry ranges and the overrides go away. The\n`peerDependencies` (`@bsv/sdk ^4.0.0`, `@bsv/templates ^2.2.0`,\n`@bsv/message-box-client ^2.5.4`, optional\n`@bsv/color-permission-module ^0.2.0`) already carry the published ranges.\n\n## Breaking changes in 0.5.0\n\n- Tokens are BRC-162 1Color (`OneColor`). The topics are\n  `tm_color_<assetId>` and `ls_color_<assetId>`, and the registry keeps\n  `tm_mandala`, `ls_mandala`, `tm_mandala_kyc` and `ls_mandala_kyc`. The\n  `tm_<txid>` topics and σI v3 on token topics are gone. The overlay signs\n  admission with the `1color-admit:v1` statement (`verifyAttestation`). The\n  deploy `req` names only the issuer-v1 profile (B7).\n- Amounts are `bigint` everywhere: APIs, stores and wire fields. JSON reads\n  accept canonical decimal strings only. `MAX_SAFE_AMOUNT` and every 2^53\n  path are gone.\n- The holder-side `'p mandala'` pipeline is removed: `transferTokens`,\n  `receiveTokens`, `defaultSettle`, `canonicalBundleId`,\n  `journalEvidenceSource`, `lockToken`,\n  `decodeValue`, `encodeLinkagePayload` (now `encodeEnvelope`), the\n  `mandala-tokens` basket, `FT_PROTOCOL` and `BASKET`, and the `ftSelect`,\n  `ftChange`, `ftCandidates` and `unlock` subpaths. Holders send with\n  `sendHandover` (or `client.send`) and receive with `receiveHandovers` (or\n  `client.receive`).\n- Treasury, authority, deploy, registry and payout-change outputs derive\n  under `ADMIN_PROTOCOL [2, 'mandala admin']` in the `mandala treasury`\n  basket.\n- MessageBox `mandala-payments` and the v1-v3 bodies are gone. Hand-overs\n  and issuer receipts use `mandala-color` with the v4 body (B7); `cover` and\n  `collectHandoverEvidence` return host-side with the S1 hop checks.\n- The journal stage `handed_over` is replaced by `signed` (not delivered:\n  never submitted, aborted or swept) and `delivered` (acknowledged:\n  reconcile re-submits it).\n- `loadHistory(wallet, { scope, assetId })` takes an options bag and also\n  returns holder `transfer` and `receive` rows.\n- `formatAmount` is exact plain decimal with no grouping.\n  `formatAmountPlain` is removed, and `formatAmountGrouped` and\n  `formatCurrency` take `bigint`.\n\nNo migration: old derivations, baskets, bodies and topics are refused, not\nconverted.\n","readmeFilename":"README.md"}