{"_id":"@solana/mosaic-sdk","_rev":"6-39d4b7b8a1dbd533750ab0273a08bdd4","name":"@solana/mosaic-sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"@solana/mosaic-sdk","version":"0.0.0","keywords":["solana","mosaic","sdk"],"author":"","license":"ISC","_id":"@solana/mosaic-sdk@0.0.0","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"dist":{"shasum":"618efa4922470cf2214e5ef9d1279bb6195d48a6","tarball":"https://registry.npmjs.org/@solana/mosaic-sdk/-/mosaic-sdk-0.0.0.tgz","fileCount":1,"integrity":"sha512-T4UpNzmR3Fae0rIEJK/6HX8SoR8bfYF2haq6Lhst0PKd4DUxjXqpPZoIJ+T4pqgKFWnHeMrLgDluSFS+w5Zilg==","signatures":[{"sig":"MEMCIAuwe6iYiSB0SbPnxWYRwe0DX2DWllyHJkSIC8d17AOiAh8CmbO6vLowk/v10XelMn2Ei3Lcj7fFjHpmYOXJHqPJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312},"main":"index.js","type":"commonjs","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"solana-devs","email":"npm@solana.org"},"_npmVersion":"11.6.2","description":"Solana Mosaic SDK","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mosaic-sdk_0.0.0_1769758721780_0.8173300164570405","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@solana/mosaic-sdk","version":"0.1.0","keywords":["solana","token-2022","extensions","core","hooks"],"_id":"@solana/mosaic-sdk@0.1.0","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/mosaic#readme","bugs":{"url":"https://github.com/solana-foundation/mosaic/issues"},"dist":{"shasum":"8e163c076d2f9114c364270892647fcf6596ce73","tarball":"https://registry.npmjs.org/@solana/mosaic-sdk/-/mosaic-sdk-0.1.0.tgz","fileCount":242,"integrity":"sha512-vH6ATgvboOHKzGAlOVXhZjfMI5htPjaO1rSQVCFqcc9ng216/nsAjWl2A5NwdyeVc82vLmLBzj/Y7zgYqW/G7A==","signatures":[{"sig":"MEYCIQD6ZBt3xksbG/uQ8LZwIxf3K51BwN3hpQaI57BOvgIr/wIhAK97E+8nH9fjS0vVk+MQkv/0iQH3kXhkXxge4Nz5yJbc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fmosaic-sdk@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":840610},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"543083d37ac57a6704e36b4a7123474f9684bca7","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc -b","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","test:integration":"node src/scripts/test-with-validator.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6da8651e-6727-4609-a252-73a662df01d0"}},"repository":{"url":"git+https://github.com/solana-foundation/mosaic.git","type":"git","directory":"packages/sdk"},"_npmVersion":"11.8.0","description":"SDK for Mosaic with helper functions for issuance and management of any token","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@solana/kit":"^5.0.0","@token-acl/sdk":"^0.2.7","@solana/sysvars":"^5.0.0","@token-acl/abl-sdk":"^0.2.0","@solana-program/memo":"^0.10.0","@solana-program/system":"^0.10.0","@solana-program/token-2022":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.39.1","ts-jest":"^29.4.5","typescript":"^5.9.3","@types/jest":"^29.5.14","@jest/test-sequencer":"^29.7.0","@typescript-eslint/parser":"^8.46.3","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mosaic-sdk_0.1.0_1770007755185_0.9773525666128959","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@solana/mosaic-sdk","version":"0.1.1","keywords":["solana","token-2022","extensions","core","hooks"],"_id":"@solana/mosaic-sdk@0.1.1","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/mosaic#readme","bugs":{"url":"https://github.com/solana-foundation/mosaic/issues"},"dist":{"shasum":"5e1565ad955d7d21a8c54f2265fa6dc1a9fc16d0","tarball":"https://registry.npmjs.org/@solana/mosaic-sdk/-/mosaic-sdk-0.1.1.tgz","fileCount":246,"integrity":"sha512-SsZ9PMMBhFuZo9z+vCTyQ8lC+/FJ2OxiVJXkXOnB0atLDRwk4n64JSmSIykvKzZeWFX3CSxuX54OOv4QU9nuXg==","signatures":[{"sig":"MEQCIGnF99HUGbu4DixKRoKRAY3dIuXVTyRq+pmXu+0YPJjzAiBlXoLqw5zZ1voiQvnJeQgSNSicC1fbq9QO1m44JbaMHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fmosaic-sdk@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":844185},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c12385c82dba177538b3e3abeb36088aac92902a","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc -b","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","test:integration":"node src/scripts/test-with-validator.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6da8651e-6727-4609-a252-73a662df01d0"}},"repository":{"url":"git+https://github.com/solana-foundation/mosaic.git","type":"git","directory":"packages/sdk"},"_npmVersion":"11.12.0","description":"SDK for Mosaic with helper functions for issuance and management of any token","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@solana/kit":"^5.0.0","@token-acl/sdk":"^0.2.7","@solana/sysvars":"^5.0.0","@token-acl/abl-sdk":"^0.2.0","@solana-program/memo":"^0.10.0","@solana-program/system":"^0.10.0","@solana-program/token-2022":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.39.1","ts-jest":"^29.4.5","typescript":"^5.9.3","@types/jest":"^29.5.14","@jest/test-sequencer":"^29.7.0","@typescript-eslint/parser":"^8.46.3","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mosaic-sdk_0.1.1_1773956421137_0.9828419798537946","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@solana/mosaic-sdk","version":"0.1.2","keywords":["solana","token-2022","extensions","core","hooks"],"_id":"@solana/mosaic-sdk@0.1.2","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/mosaic#readme","bugs":{"url":"https://github.com/solana-foundation/mosaic/issues"},"dist":{"shasum":"1580beb067f99ba179d7670538cb3f636a649ea5","tarball":"https://registry.npmjs.org/@solana/mosaic-sdk/-/mosaic-sdk-0.1.2.tgz","fileCount":250,"integrity":"sha512-7oGEDnB0etBm8Waq2wQvsrq9Q8A036rtRSEX14690Dty1Dw+qCPp/AyrOizt8LF2DVGotI7SOyRz2qxSc2Ec4w==","signatures":[{"sig":"MEQCIG5xoCgkxhbaWbacsp7veKm8ch+thlMIINT5ZDkVio/AAiAihCIx6d3tEC4Q9Ijpk4puQ3KYJ3/xhxregbnzIwQpgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fmosaic-sdk@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":858584},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"61e9872f874622324817e31ff838b0b1ddebdae7","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc -b","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","test:integration":"node src/scripts/test-with-validator.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6da8651e-6727-4609-a252-73a662df01d0"}},"repository":{"url":"git+https://github.com/solana-foundation/mosaic.git","type":"git","directory":"packages/sdk"},"_npmVersion":"11.12.1","description":"SDK for Mosaic with helper functions for issuance and management of any token","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@solana/kit":"^5.0.0","@token-acl/sdk":"^0.2.7","@solana/sysvars":"^5.0.0","@token-acl/abl-sdk":"^0.2.0","@solana-program/memo":"^0.10.0","@solana-program/system":"^0.10.0","@solana-program/token-2022":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.39.1","ts-jest":"^29.4.5","typescript":"^5.9.3","@types/jest":"^29.5.14","@jest/test-sequencer":"^29.7.0","@typescript-eslint/parser":"^8.46.3","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mosaic-sdk_0.1.2_1776800669081_0.08976882741749259","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@solana/mosaic-sdk","version":"0.1.3","keywords":["solana","token-2022","extensions","core","hooks"],"_id":"@solana/mosaic-sdk@0.1.3","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/mosaic#readme","bugs":{"url":"https://github.com/solana-foundation/mosaic/issues"},"dist":{"shasum":"b7b35c0f8da2bb9e2ed4af67272acde762205b4d","tarball":"https://registry.npmjs.org/@solana/mosaic-sdk/-/mosaic-sdk-0.1.3.tgz","fileCount":250,"integrity":"sha512-z7x2VcwngcI1yfKfVPVvr/RTNJlaSDooU7qZ/LlharN0dFsiZYjPpPhfo7OMukycifzgzUI45dTIxyGI6xnxpg==","signatures":[{"sig":"MEYCIQDHiiKd6TLTSCPzZ8/+niznSqWK4bXXY8v9xN5FMOLnsgIhAN78RL0lR/Z1EnnWPMBCr3M9OVWPWmOiYPNweiEfk7I4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fmosaic-sdk@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":861337},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dff90e7fcee20185abaf340b84c2aa96e5fd556f","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc -b","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","test:integration":"node src/scripts/test-with-validator.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6da8651e-6727-4609-a252-73a662df01d0"}},"repository":{"url":"git+https://github.com/solana-foundation/mosaic.git","type":"git","directory":"packages/sdk"},"_npmVersion":"11.16.0","description":"SDK for Mosaic with helper functions for issuance and management of any token","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@solana/kit":"^5.0.0","@token-acl/sdk":"^0.2.7","@solana/sysvars":"^5.0.0","@solana-program/memo":"^0.10.0","@solana-program/system":"^0.10.0","@solana-program/token-2022":"^0.6.1","@solana/token-acl-gate-sdk":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^9.39.1","ts-jest":"^29.4.5","typescript":"^5.9.3","@types/jest":"^29.5.14","@jest/test-sequencer":"^29.7.0","@typescript-eslint/parser":"^8.46.3","@typescript-eslint/eslint-plugin":"^8.46.3"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mosaic-sdk_0.1.3_1779982660179_0.7363505769594962","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@solana/mosaic-sdk","version":"0.2.0","description":"SDK for Mosaic with helper functions for issuance and management of any token","repository":{"type":"git","url":"git+https://github.com/solana-foundation/mosaic.git","directory":"packages/sdk"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./confidential":{"types":"./dist/confidential/index.d.ts","import":"./dist/confidential/index.js"},"./_zk":{"types":"./dist/confidential/_zk.node.d.ts","browser":"./dist/confidential/_zk.browser.js","node":"./dist/confidential/_zk.node.js","default":"./dist/confidential/_zk.browser.js"}},"dependencies":{"@solana-program/memo":"^0.11.2","@solana-program/system":"0.12.2","@solana-program/token-2022":"^0.10.0","@solana-program/zk-elgamal-proof":"0.1.0","@solana/kit":"^6.10.0","@solana/sysvars":"^6.10.0","@solana/zk-sdk":"^0.4.2","@solana/token-acl-gate-sdk":"^0.3.0","@solana/token-acl-sdk":"^0.4.0"},"devDependencies":{"@jest/test-sequencer":"^29.7.0","@types/jest":"^29.5.14","@typescript-eslint/eslint-plugin":"^8.61.1","@typescript-eslint/parser":"^8.61.1","eslint":"^9.39.1","jest":"^29.7.0","ts-jest":"^29.4.11","typescript":"^5.9.3"},"peerDependencies":{"typescript":"^5.0.0"},"keywords":["solana","token-2022","extensions","core","hooks"],"scripts":{"build":"tsc -b","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"node src/scripts/test-with-validator.js","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","type-check":"tsc --noEmit","clean":"rm -rf dist"},"_id":"@solana/mosaic-sdk@0.2.0","bugs":{"url":"https://github.com/solana-foundation/mosaic/issues"},"homepage":"https://github.com/solana-foundation/mosaic#readme","_integrity":"sha512-lzNbxvc+uTvfT9SlBYDS2Mb1lcO5vU84+5e1gZN+oy3XqReX9Nu2Ghtc5k6sl7GaTW059KjAfaVmsrx88fHxiQ==","_resolved":"/tmp/a15db7ee9a8e2cc2487039e7d9a5f59a/solana-mosaic-sdk-0.2.0.tgz","_from":"file:solana-mosaic-sdk-0.2.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"11.19.1","dist":{"integrity":"sha512-lzNbxvc+uTvfT9SlBYDS2Mb1lcO5vU84+5e1gZN+oy3XqReX9Nu2Ghtc5k6sl7GaTW059KjAfaVmsrx88fHxiQ==","shasum":"9c6d7d5898cf2892cda8488c463e64349df03602","tarball":"https://registry.npmjs.org/@solana/mosaic-sdk/-/mosaic-sdk-0.2.0.tgz","fileCount":255,"unpackedSize":629182,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fmosaic-sdk@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICxYyKIizihcNhnd4/Tc2rpc6SAQCFzu1CIaV8wtbWa5AiEAuEE0mtuILwi62pb8gxMhaLtwdNABaxUknb28yReU1OM="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bd9a0414-0984-40bd-bda1-085e3c1d3e9a"}},"directories":{},"maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mosaic-sdk_0.2.0_1788267038577_0.9409606663716765"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-30T07:38:41.656Z","modified":"2026-09-01T12:50:39.039Z","0.0.0":"2026-01-30T07:38:41.930Z","0.1.0":"2026-02-02T04:49:15.338Z","0.1.1":"2026-03-19T21:40:21.310Z","0.1.2":"2026-04-21T19:44:29.247Z","0.1.3":"2026-05-28T15:37:40.343Z","0.2.0":"2026-09-01T12:50:38.748Z"},"bugs":{"url":"https://github.com/solana-foundation/mosaic/issues"},"homepage":"https://github.com/solana-foundation/mosaic#readme","keywords":["solana","token-2022","extensions","core","hooks"],"repository":{"type":"git","url":"git+https://github.com/solana-foundation/mosaic.git","directory":"packages/sdk"},"description":"SDK for Mosaic with helper functions for issuance and management of any token","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"readme":"# @solana/mosaic-sdk\n\nTypeScript SDK for building and operating Token-2022 mints with modern extensions. Batteries-included templates (Stablecoin, Arcade Token, Tokenized Security), and access-control management via Token ACL (SRFC-37). It is unopinionated about what kind of signer you use, whether that's a connected wallet, filesystem wallet, or 3rd party key management system.\n\n## Key features\n\n- **Templates**: One-call mint initialization for Stablecoin, Arcade Token, and Tokenized Security\n- **Access control**: Create and manage allowlists/blocklists (ABL, SRFC-37 compliant)\n- **Operations**: Mint, force-transfer (via permanent delegate), freeze/thaw, permissionless thaw (Token ACL)\n- **Authorities**: Update mint, freeze, metadata, and other authorities\n- **Utilities**: Resolve ATAs, decimal math, transaction B64/B58 encoding\n\n## Installation\n\n```bash\npnpm add @solana/mosaic-sdk\n# or\nnpm i @solana/mosaic-sdk\n```\n\nThe SDK uses `@solana/kit` (RPC + SPL helpers) transitively; you can import helpers/types directly from `@solana/kit` in your app.\n\n> **Note on Solana Kit v5:** This SDK uses the Solana Kit v5.0 ecosystem (`@solana/kit@^5.0.0`, `@solana/sysvars@^5.0.0`, `@solana-program/token-2022@^0.6.1`). These packages are published to npm under an experimental/next tag and may not appear as the \"latest\" version on npmjs.com. The monorepo uses pnpm overrides (in the root `pnpm-lock.yaml`) to ensure consistent version resolution across all `@solana/*` packages. See the [Anza Kit repository](https://github.com/anza-xyz/kit) for upstream details.\n\n## Quick start\n\n```ts\nimport { createStablecoinInitTransaction, transactionToB64 } from '@solana/mosaic-sdk';\nimport { createSolanaRpc, generateKeyPairSigner } from '@solana/kit';\n\nconst rpc = createSolanaRpc('https://api.devnet.solana.com');\nconst mint = await generateKeyPairSigner();\nconst feePayer = YOUR_FEEPAYER_ADDRESS;\n\n// Single-signer path: when the fee payer is also the mint authority,\n// the template also configures Token ACL + ABL for you.\nconst tx = await createStablecoinInitTransaction(\n    rpc,\n    'USD Coin', // name\n    'USDC', // symbol\n    6, // decimals\n    'https://example.com/metadata.json',\n    feePayer.address, // mintAuthority\n    mint, // mint signer\n    feePayer, // fee payer signer\n);\n\n// Hand off to a wallet, or encode and submit via your backend\nconst b64 = transactionToB64(tx);\n```\n\n### Notes on templates and authorities\n\n- If `mintAuthority === feePayer.address`, templates will also:\n    - create Token ACL mint config, set gating program to ABL\n    - create an ABL list (allowlist for Arcade, blocklist by default for Stablecoin)\n    - set ABL extra metas on the mint\n    - enable Token ACL permissionless thaw\n- If authorities differ, the template returns a transaction with just the Token-2022 mint setup. Run the Token ACL management yourself (see examples below).\n\n## Templates (issuance)\n\nAll templates freeze new accounts by default and rely on Token ACL permissionless thaw and ABL allow/block lists to control who can hold tokens.\n\n```ts\nimport {\n    createStablecoinInitTransaction,\n    createArcadeTokenInitTransaction,\n    createTokenizedSecurityInitTransaction,\n} from '@solana/mosaic-sdk';\nimport { createSolanaRpc, generateKeyPairSigner } from '@solana/kit';\n\nconst rpc = createSolanaRpc('https://api.devnet.solana.com');\nconst feePayer = YOUR_FEEPAYER_ADDRESS;\nconst mint = await generateKeyPairSigner();\n\n// Stablecoin (metadata, pausable, confidential balances, permanent delegate)\nawait createStablecoinInitTransaction(\n    rpc,\n    'USD Token',\n    'USDtoken',\n    6,\n    'https://example.com/metadata.json',\n    feePayer.address,\n    mint,\n    feePayer,\n    /* aclMode?: 'allowlist' | 'blocklist' (default: 'blocklist'), optional authorities... */\n);\n\n// Arcade token (metadata, pausable, permanent delegate, allowlist)\nawait createArcadeTokenInitTransaction(\n    rpc,\n    'Arcade Points',\n    'POINTS',\n    0,\n    'https://example.com/points.json',\n    feePayer.address,\n    mint,\n    feePayer,\n);\n\n// Tokenized security (stablecoin extensions + Permissioned Burn + Scaled UI Amount)\nawait createTokenizedSecurityInitTransaction(\n    rpc,\n    'Acme Series A',\n    'ACMEA',\n    0,\n    'https://example.com/security.json',\n    feePayer.address,\n    mint,\n    feePayer,\n    {\n        aclMode: 'blocklist',\n        scaledUiAmount: {\n            multiplier: 1000, // show 1 on-chain unit as 1000 UI units\n            newMultiplierEffectiveTimestamp: 0,\n            newMultiplier: 1000,\n        },\n    },\n);\n```\n\n## Token management\n\n```ts\nimport { createMintToTransaction } from '@solana/mosaic-sdk';\nimport { createSolanaRpc, generateKeyPairSigner } from '@solana/kit';\n\nconst rpc = createSolanaRpc('https://api.devnet.solana.com');\nconst feePayer = await generateKeyPairSigner();\nconst mintAuthority = feePayer; // or a different signer\n\n// Mint 10.5 tokens to a recipient (ATA auto-creation, permissionless thaw if needed)\nconst tx = await createMintToTransaction(\n    rpc,\n    'MintPubkey...', // mint\n    'RecipientWallet...', // recipient wallet (or ATA)\n    10.5, // decimal amount\n    mintAuthority,\n    feePayer,\n);\n```\n\n### Force transfer (Permanent Delegate)\n\n```ts\nimport { createForceTransferTransaction } from '@solana/mosaic-sdk';\n\nconst tx = await createForceTransferTransaction(\n    rpc,\n    'MintPubkey...',\n    'FromWalletOrAta...',\n    'ToWalletOrAta...',\n    1.25,\n    'PermanentDelegateAddressOrSigner...',\n    feePayer,\n);\n```\n\n### Burn and Permissioned Burn\n\nMints with the permissioned burn extension reject regular burns: the configured burn authority must co-sign. `createBurnTransaction` and `createForceBurnTransaction` detect the extension automatically and route to the permissioned burn instruction, defaulting the co-signer to the authority configured on the mint.\n\n```ts\nimport {\n    createBurnTransaction,\n    createPermissionedBurnTransaction,\n    getPermissionedBurnAuthority,\n} from '@solana/mosaic-sdk';\n\n// Self-burn (auto-detects permissioned burn; pass the authority signer if it isn't the owner)\nconst tx = await createBurnTransaction(rpc, 'MintPubkey...', owner, 1.25, feePayer, burnAuthoritySigner);\n\n// Explicit permissioned burn from any account (owner + burn authority co-sign)\nconst tx2 = await createPermissionedBurnTransaction(\n    rpc,\n    'MintPubkey...',\n    'FromWalletOrAta...',\n    1.25,\n    burnAuthoritySigner,\n    feePayer,\n);\n\n// Read the configured burn authority (null if the extension is absent or cleared)\nconst authority = await getPermissionedBurnAuthority(rpc, 'MintPubkey...');\n```\n\nThe burn authority can be rotated or removed with `getUpdateAuthorityTransaction` / `getRemoveAuthorityTransaction` using `AuthorityType.PermissionedBurn`; removing it re-enables regular burns.\n\n## Access lists (ABL, SRFC-37)\n\nCreate and manage allowlists/blocklists that gate who can thaw/hold tokens.\n\n```ts\nimport {\n    getCreateListTransaction,\n    getAddWalletTransaction,\n    getRemoveWalletTransaction,\n    getList,\n} from '@solana/mosaic-sdk';\nimport { generateKeyPairSigner } from '@solana/kit';\n\nconst authority = await generateKeyPairSigner();\nconst payer = authority;\n\n// Create a list for a mint (Mode defaults to allowlist here; pass Mode.Block for blocklist)\nconst { transaction, listConfig } = await getCreateListTransaction({\n    rpc,\n    payer,\n    authority,\n    mint: 'MintPubkey...',\n});\n\n// Add/remove wallets\nawait getAddWalletTransaction({\n    rpc,\n    payer,\n    authority,\n    wallet: 'Wallet...',\n    list: listConfig,\n});\nawait getRemoveWalletTransaction({\n    rpc,\n    payer,\n    authority,\n    wallet: 'Wallet...',\n    list: listConfig,\n});\n\n// Read list (config + all wallets)\nconst list = await getList({ rpc, listConfig });\n```\n\n## Token ACL operations\n\nEnable permissionless thaw and perform freeze/thaw operations.\n\n```ts\nimport {\n    getCreateConfigTransaction,\n    getEnablePermissionlessThawTransaction,\n    getFreezeTransaction,\n    getFreezeWalletTransaction,\n    getThawTransaction,\n    getThawPermissionlessTransaction,\n} from '@solana/mosaic-sdk';\nimport { ABL_PROGRAM_ID } from '@solana/mosaic-sdk';\n\n// One-time: create Token ACL mint config and set ABL as gating program (templates do this for single-signer flow)\nawait getCreateConfigTransaction({\n    rpc,\n    payer: feePayer,\n    authority: feePayer,\n    mint: 'MintPubkey...',\n    gatingProgram: ABL_PROGRAM_ID,\n});\n\n// Enable permissionless thaw\nawait getEnablePermissionlessThawTransaction({\n    rpc,\n    payer: feePayer,\n    authority: feePayer,\n    mint: 'MintPubkey...',\n});\n\n// Authority-driven freeze/thaw\nawait getFreezeTransaction({\n    rpc,\n    payer: feePayer,\n    authority: feePayer,\n    tokenAccount: 'TokenAccountPubkey...',\n});\n// Freeze by owner wallet + mint. This creates the wallet ATA first if it does not exist.\nawait getFreezeWalletTransaction({\n    rpc,\n    payer: feePayer,\n    authority: feePayer,\n    wallet: 'WalletPubkey...',\n    mint: 'MintPubkey...',\n});\nawait getThawTransaction({\n    rpc,\n    payer: feePayer,\n    authority: feePayer,\n    tokenAccount: 'TokenAccountPubkey...',\n});\n\n// Anyone can thaw if permissionless thaw is enabled and ABL rules allow\nawait getThawPermissionlessTransaction({\n    rpc,\n    payer: feePayer,\n    authority: feePayer, // payer signs the tx, thaw does not require freeze authority\n    mint: 'MintPubkey...',\n    tokenAccount: 'FrozenAta...',\n    tokenAccountOwner: 'OwnerWallet...',\n});\n```\n\n## Administration (authorities)\n\n```ts\nimport { getUpdateAuthorityTransaction } from '@solana/mosaic-sdk';\nimport { AuthorityType } from '@solana-program/token-2022';\n\n// Transfer freeze authority to a new address\nawait getUpdateAuthorityTransaction({\n    rpc,\n    payer: feePayer,\n    mint: 'MintPubkey...',\n    role: AuthorityType.FreezeAccount,\n    currentAuthority: feePayer,\n    newAuthority: 'NewFreezeAuthority...',\n});\n\n// Transfer metadata update authority\nawait getUpdateAuthorityTransaction({\n    rpc,\n    payer: feePayer,\n    mint: 'MintPubkey...',\n    role: 'Metadata',\n    currentAuthority: feePayer,\n    newAuthority: 'NewMetadataAuthority...',\n});\n```\n\n## Utilities\n\n```ts\nimport {\n    resolveTokenAccount,\n    getMintDecimals,\n    decimalAmountToRaw,\n    transactionToB64,\n    transactionToB58,\n} from '@solana/mosaic-sdk';\n\nconst { tokenAccount, isInitialized, isFrozen, balance, uiBalance } = await resolveTokenAccount(\n    rpc,\n    'WalletOrAta...',\n    'Mint...',\n);\nconst decimals = await getMintDecimals(rpc, 'Mint...');\nconst raw = decimalAmountToRaw(1.23, decimals);\n// Encode a built transaction for transport/signing\nconst b64 = transactionToB64(tx);\nconst b58 = transactionToB58(tx);\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}