{"_id":"@empereur-rouge/pms-sdk","_rev":"18-43231920aef9661b54cc761893fe5a99","name":"@empereur-rouge/pms-sdk","dist-tags":{"latest":"0.14.0"},"versions":{"0.1.0":{"name":"@empereur-rouge/pms-sdk","version":"0.1.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.1.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"14d46fdbfebd2d92ae0e93caf350f9bdb4824eda","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.1.0.tgz","fileCount":7,"integrity":"sha512-ehxTgQi9RlUL7Pzw7yPwJGRdvCyAnhkrfeq+b8tu8k1LguT+fKQG06ZFfB4HQGF11oW+WGLwPJN3lcEpgnj2fA==","signatures":[{"sig":"MEUCIQD9Et2ZTWYKJRaRibHLHz6lb8NZ5lQQNCzs1dOQp2+tagIgZeuROn1uZyuuvZgGXR1I/zyEKiSY8dcmzvlN6P/DJ34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139968},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.1.0_1771538193061_0.9281627088310942","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@empereur-rouge/pms-sdk","version":"0.2.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.2.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"c1368457d6ab95c5fe514238fb259147226abb59","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.2.0.tgz","fileCount":7,"integrity":"sha512-U7qY6xoB0x65b6DtbhmKxr1vqAdn3bO8AcfhjTqsygf9OsFGuYN/hEL4ecrdAkJFE0Hu1u5asFJmMZRDD0ejuA==","signatures":[{"sig":"MEUCIF2bID4luuTRnlrwX0+FB+zUNSCzLZ76W1uWyXoKR+uCAiEAhn/ysS87C2WEDDL2vx35g5t5VHv/cewq1xH74eHc3T8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141716},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.2.0_1771539759312_0.43273867450681736","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@empereur-rouge/pms-sdk","version":"0.3.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"ce6f2fd98e8ec16e042b0a4b90fee41d5fbd18d3","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.0.tgz","fileCount":7,"integrity":"sha512-w+RCK43FEFQ4sm3t4QWNePa7kAVhFl7O7Aawuhe2Hs3VoqsK0eoZI8QUSqkcDQx4GBtATZndU4SkBV6/5HWmHA==","signatures":[{"sig":"MEYCIQDNNPoT0q4cvtIiAgjXDt8cB1j3l1ZOVDnUbFnSKWJA4gIhANB4Ifasc13ewmvPBfp+IM2lxLqwIdPxT/OuGL3rKbUm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151040},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.0_1772018489926_0.7116762531960716","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@empereur-rouge/pms-sdk","version":"0.3.1","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.1","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"c2583b74b23ab330ccbc8d79b05ea53a56c063cc","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.1.tgz","fileCount":7,"integrity":"sha512-zUJS++989M8teRGA+8B4P78VF7tn4B88MBj5dH+bZqTBXSmIyJXz21IxONAbgI0zCengsLhnCoF/vnesrgkYRg==","signatures":[{"sig":"MEUCIQDWkifpBk+L//f+OPAEAHBLe8M91RyDPrKDv42MG44pnAIgWDELGZVLhqWe8S8AxjvHEoNQJVSXdqkwsOUz1QPQPQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152379},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.1_1772018624360_0.6549794025412583","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@empereur-rouge/pms-sdk","version":"0.3.2","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.2","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"1c6a8c490eac12e2be31dbafba4b59a9643c844c","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.2.tgz","fileCount":7,"integrity":"sha512-MuAg46ddL87Q6Zdn4VwQTZOZeEFAbgSo9hcr5ekifwoRgugUI0spOMYCcYLqX09Fn81zqLKOfNps8qMNidRjFQ==","signatures":[{"sig":"MEUCIQDJ0HCXqFgrJesIhvxD+C1EIu951DFPx90axQ2H2SSTNQIgY5n6RoXwcS+AIST2nCN/7uFtDGvhQgLMAfbTyW1T0UU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173067},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.2_1772027448651_0.8452571982090815","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@empereur-rouge/pms-sdk","version":"0.3.3","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.3","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"90ed72adc1400c885590cc94a6b749f77679881f","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.3.tgz","fileCount":7,"integrity":"sha512-FDBb1F6YJVxItxVRfE/VoA8enUD+7FPXoq5tGYN1hS7dn+9t/sfggetNTQZvipaEpIF25stzhUCIQe+ABA8EgA==","signatures":[{"sig":"MEQCIFdcuGHToaKtUoiOtV9LH7GDGzr1DCqlZRNaOSJSokwjAiAKo/b+HP9k7J8QeHfEotcCUOALb0ko7bseB6USKDVnIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173253},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.3_1772047818890_0.5490264826307274","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@empereur-rouge/pms-sdk","version":"0.3.4","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.4","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"dd087ba91239a6510a8b503417814c6556d2f9e4","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.4.tgz","fileCount":7,"integrity":"sha512-39kZFxLVUz0NEOKACXEkL57GI6+Bogs3dlYgJ8KE1NNSjg0//dNAAEZSXBbhkrRZlLWFoxfdKW7JEyA87HDNYg==","signatures":[{"sig":"MEUCIGeXmQ7ZdhII6y22GJ+Ahs11FYjQzVSlRe/hcxDqv5WuAiEA9SQFiIH1f4BGGr4WHvdLLPBv+dsm6JqtJAiphhYa8wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175767},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.4_1772051787124_0.7120207246401467","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@empereur-rouge/pms-sdk","version":"0.3.5","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.5","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"8fd982134606a1e633cded57cd92adef1ba7f15d","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.5.tgz","fileCount":7,"integrity":"sha512-qRu3gPwS08lElezT+ErhUcMJrPHPMw3mXOtjma8MFUBumGoO6DaHga9d5RMhjQKj4KuFRsxbGJ+m9rshQLBSOQ==","signatures":[{"sig":"MEYCIQCLTg4ijejzdYkulzSSXU4d8GDJtpbYrlAUq8o5YDqK+wIhALRGlNf8ntT07IJkBw9znVXJeR0nAFc3qbFcoeYVOOtj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a748df506c0e83d4099144e9f9adfb795f3f726c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.5_1772129551442_0.47300964300047244","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@empereur-rouge/pms-sdk","version":"0.3.6","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.6","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"fb32fb38d4e43a667f42ee8a4f561f24db7bc9c9","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.6.tgz","fileCount":7,"integrity":"sha512-AlV4om6ThKCCH6dnEZyqpML7l2THCYEjkagd4B+8oGigcvXMcC+8L67UGVqWLqWgBns5nvbED3MazyEglfyCmg==","signatures":[{"sig":"MEYCIQCXw2Oa+ZYzLA9e0CJ8ii/IAllel8PvjcXmbff9Cm1SsgIhAI2b/fyP5m+ST44OX+hQKEwBdFyS0m8vw5PMi71KEi8h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181311},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8cb8e0ec477073558e1e734229fa4f348bbf55ba","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.6_1772573235978_0.5885416844010927","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@empereur-rouge/pms-sdk","version":"0.3.7","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.7","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"487d55ec90dfc96b4be429b7057e7b9a1f4fb987","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.7.tgz","fileCount":7,"integrity":"sha512-17ONk8UWToQGMWD+wHAltQR2shs1e3Z+PdlMs5oz0LbxIdDiHGqqCenYJLtrxaPqFVICGdR0x49ZE5dJeAcgag==","signatures":[{"sig":"MEYCIQCM1SB0cn5PJ4n3jndfrpHNKISmOYv8drA/0cgnLhUttwIhAP9a0t1YNxtpLpexw9aasP7px1wgEnvQajtHDtMc/LSU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192537},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8cb8e0ec477073558e1e734229fa4f348bbf55ba","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.7_1777655027892_0.06898107343894533","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@empereur-rouge/pms-sdk","version":"0.3.8","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.3.8","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"3a2955c4894b1fa575de65aa16b1b82ce614f895","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.3.8.tgz","fileCount":7,"integrity":"sha512-C5OY1BwbJmRlZ+j24VyclrmXHaJ1IMYkKlui6WvuniIgd2kknH4CriPSMRh1XXw1r/cPGwAAyvzg29Et1Jxl5w==","signatures":[{"sig":"MEQCIEGuMyQXDVPF57Y+WWjcmLcOvQovJ+KGS6iiPJzu/W4wAiBp4JNp8KkA4mkHmFpL3N/mxcgmKBT7N5kQckYf533OtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192537},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c4da4c9a0cc71980c21416054b54fb7ae1c2fc9e","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.3.8_1777660326751_0.6215084122557806","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@empereur-rouge/pms-sdk","version":"0.5.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.5.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"e17ba5124e4fb59a65583edcfd04daf944f7e2e5","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.5.0.tgz","fileCount":7,"integrity":"sha512-kuatt+hnnUXR7qxQEhN8XylKcP5ToH3HMHQkPwjml95BPeRJVZnLYW6azCX8oj/hsVBCnI/FSWg+sy2Lzle59w==","signatures":[{"sig":"MEUCIQDWHylRwwQ/qRdYOj2WOFxmWh0Zj3QxaigD0rg0YMhPIwIgbPuVUVYGMAXvFz3RyG+fNLPYsfVRls2drJP4oivPYdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231884},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"bbe1632c83b46d1882a2a614f150ce23493c8d65","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.5.0_1781297920707_0.3004045161277309","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@empereur-rouge/pms-sdk","version":"0.7.1","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.7.1","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"7a40400bd80a16b080198395912fd1db398ab4b0","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.7.1.tgz","fileCount":7,"integrity":"sha512-9p2wNJdpP5kyBY8YmEknXaIWE7ltytZwIEfBAWFmAoq5qZEbGdV5ApI4l2pwbMrnpYjwTwxQScHHy9oBx5tHaA==","signatures":[{"sig":"MEUCIQCePONhkPObU1MY7R/2gb/xu2yFUhVFaYF55CWTlUS1/wIgS6rPs4YnDhIg4xq3sFPFFqrwOUkicxhNgQZIygdnETA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297846},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ea8ee2ca2d7d4aa54170500ac7a2ecfe86173f41","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.7.1_1781471097263_0.6703039064300742","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@empereur-rouge/pms-sdk","version":"0.10.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.10.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"f0aa576d740dfd8a6e623c0ac893a2462e3abd33","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.10.0.tgz","fileCount":7,"integrity":"sha512-Q6A6XbLkQhEJe42vtp4IO3yMr5Zlyq8/OzZfQ/xhBo5tb22A6EAWt66q+z5AvFifdH2x5tZr7g8nxde6U4uqVA==","signatures":[{"sig":"MEUCIQCslpwVpOOa2uQrr6Jjohf4oua473Zq1LgjPbqO+iwNVAIgAORS5u15Yu+MVa51JCD7bpNIQ2LNJn8JQJLBVJpLex4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388627},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"70e5923ba835a625eef5a7fe6b57dae1a1aee3b9","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.10.0_1783601987140_0.6302204702489556","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@empereur-rouge/pms-sdk","version":"0.11.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.11.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"a6cf65946c675a6081a70ae09c45ae6212bb3b4c","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.11.0.tgz","fileCount":7,"integrity":"sha512-+HlXCFxg3uK4VHW1YRKOJDSARuwJrW0AXXP9I8D6GMbdfo/S6QpnfflrtTRaPJcAceZafhSGkXqVWb7raktWBw==","signatures":[{"sig":"MEQCIGVgxXpv/Dy4xWwdQS/ruvTzKUnCuQyll42YOt4OrjkSAiBo7zO1O1Uia7YOvyh4aemPkTU0FWZa1ralKN4tN17Rlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462187},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"175265f55b707c1bb11acdc7e1f675d21afe4cdf","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.11.0_1783721535758_0.42736134670303216","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@empereur-rouge/pms-sdk","version":"0.12.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.12.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"7530411349962bf11afce4d84c597d8d85525399","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.12.0.tgz","fileCount":7,"integrity":"sha512-iSBBLuQWggI4SG7Ea9HoGJs8orKg1J/FKIzCk2cKmDz2D+pjZfZ1EvPNPkGpcXAmB53oD1BCVkHctq0efJ7zeQ==","signatures":[{"sig":"MEYCIQChEjq41vnxdje82yyYlhlLUw45VL50PQpy6NL6ava9qwIhANClYDe1cxAmRn3/nt4cJ0QKlty/8N1RwjoBa0feLhDc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481025},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4b3e869ea527e8049e861e7c3664bc3f2b65b697","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.12.0_1783782675856_0.6463549101214368","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@empereur-rouge/pms-sdk","version":"0.13.0","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"author":{"name":"empereur-rouge"},"license":"MIT","_id":"@empereur-rouge/pms-sdk@0.13.0","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"dist":{"shasum":"0c64a10b08e0a19e1ffd138c4048a805c44cdab4","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.13.0.tgz","fileCount":7,"integrity":"sha512-XhIA8RYbElUGF4Do0RowfR+6rzY3fiB7VGc/rEOQfRZR50g/DTLLbwLXO6kmLCj2qzVVWv+IUr+hTt2sFgAvwQ==","signatures":[{"sig":"MEUCIDmEZzCwuvHEHzmJBJre1EXnYgEexCfhFNNfzs+FJl+rAiEAijBuWCSgNuv09hnns6knn7U5Jt4ghyrowQvf6jXHgfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":629944},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"6b1e33a28aea2392b5be10bf7f2a53c89cf4cfbe","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"eslint src --ext .ts","test":"vitest run --exclude tests/integration.test.ts","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","test:all":"vitest run","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build && npm test","test:integration":"vitest run tests/integration.test.ts"},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"repository":{"url":"git+https://github.com/empereur-rouge/pms-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"@scure/base":"^2.0.0","@scure/bip39":"^1.3.0","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@noble/ciphers":"^2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pms-sdk_0.13.0_1784650496218_0.32142608332441447","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@empereur-rouge/pms-sdk","version":"0.14.0","description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","author":{"name":"empereur-rouge"},"license":"MIT","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format esm --watch","test":"vitest run --exclude tests/integration.test.ts","test:integration":"vitest run tests/integration.test.ts","test:all":"vitest run","test:watch":"vitest","lint":"eslint src --ext .ts","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build && npm test"},"dependencies":{"@noble/ciphers":"^2.1.1","@noble/curves":"^1.4.0","@noble/hashes":"^1.4.0","@scure/base":"^2.0.0","@scure/bip39":"^1.3.0"},"devDependencies":{"@types/node":"^20.0.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^1.6.0"},"engines":{"node":">=18.0.0"},"keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"homepage":"https://github.com/empereur-rouge/pms-sdk#readme","bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"repository":{"type":"git","url":"git+https://github.com/empereur-rouge/pms-sdk.git"},"publishConfig":{"access":"public"},"gitHead":"2bbda0eec5d0438be3996c94ee84373f00dd362f","_id":"@empereur-rouge/pms-sdk@0.14.0","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-2jI9S/0iHdgslzNpyI/j2tmT6jvgHWdgBuQxt+NwApm4Vihn2biY5j6+EAGrJ8fFCzDYGsztaFz1j5UIsKyv4Q==","shasum":"b3c5f27154a54ba1c94f6ec8c3dd3bed2a3019e1","tarball":"https://registry.npmjs.org/@empereur-rouge/pms-sdk/-/pms-sdk-0.14.0.tgz","fileCount":7,"unpackedSize":662805,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCJ38o2DALoZqOcztXYZtVam5wEdYfeM0XCl2nUNII0VAIhAKh4Bmc8/ryoCVl3+hcl2BJABhJNxApqfAki8NDb5DAY"}]},"_npmUser":{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"},"directories":{},"maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pms-sdk_0.14.0_1785020818834_0.03625649146361476"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-19T21:56:32.921Z","modified":"2026-07-25T23:06:59.149Z","0.1.0":"2026-02-19T21:56:33.213Z","0.2.0":"2026-02-19T22:22:39.440Z","0.3.0":"2026-02-25T11:21:30.064Z","0.3.1":"2026-02-25T11:23:44.506Z","0.3.2":"2026-02-25T13:50:48.794Z","0.3.3":"2026-02-25T19:30:19.038Z","0.3.4":"2026-02-25T20:36:27.261Z","0.3.5":"2026-02-26T18:12:31.591Z","0.3.6":"2026-03-03T21:27:16.138Z","0.3.7":"2026-05-01T17:03:48.034Z","0.3.8":"2026-05-01T18:32:06.868Z","0.5.0":"2026-06-12T20:58:40.877Z","0.7.1":"2026-06-14T21:04:57.421Z","0.10.0":"2026-07-09T12:59:47.280Z","0.11.0":"2026-07-10T22:12:15.988Z","0.12.0":"2026-07-11T15:11:16.006Z","0.13.0":"2026-07-21T16:14:56.393Z","0.14.0":"2026-07-25T23:06:59.005Z"},"bugs":{"url":"https://github.com/empereur-rouge/pms-sdk/issues"},"author":{"name":"empereur-rouge"},"license":"MIT","homepage":"https://github.com/empereur-rouge/pms-sdk#readme","keywords":["pms","blockchain","dag","wallet","cryptocurrency","sdk","typescript","planetary-monetary-system"],"repository":{"type":"git","url":"git+https://github.com/empereur-rouge/pms-sdk.git"},"description":"TypeScript SDK for PMS (Planetary Monetary System) — wallet management, transactions, NFTs, and DAG interactions","maintainers":[{"name":"empereur-rouge","email":"cardinal.lerouge@proton.me"}],"readme":"# @empereur-rouge/pms-sdk\n\nSDK TypeScript officiel pour interagir avec le réseau **PMS** (Planetary Monetary System).\n\n## Installation\n\n```bash\nnpm install @empereur-rouge/pms-sdk\n# ou\nyarn add @empereur-rouge/pms-sdk\n# ou  \npnpm add @empereur-rouge/pms-sdk\n```\n\n## Structure de l'API\n\nLe SDK est organisé en deux niveaux :\n\n| Import | Usage | Contenu |\n|--------|-------|--------|\n| `@empereur-rouge/pms-sdk` | 99% des cas | `PmsWallet`, `PmsClient`, utils simples |\n| `@empereur-rouge/pms-sdk/src/advanced` | Power users | `computeBlockId`, crypto, types bas niveau |\n\n## Démarrage Rapide\n\n```typescript\nimport { PmsWallet, PmsClient } from \"@empereur-rouge/pms-sdk\";\n\n// 1. Créer un wallet\nconst wallet = PmsWallet.generate();\nconsole.log(\"Mnemonic:\", wallet.mnemonic);\nconsole.log(\"Address:\", wallet.address);\n\n// 2. Connecter au réseau (clé API obligatoire)\nconst client = new PmsClient({ \n  nodeUrl: \"https://node.pms.network\",\n  apiKey: \"pk_live_votre_cle_ici\",\n});\n\n// 3. Consulter la balance\nconst balance = await client.getBalance(wallet.address);\nconsole.log(\"Balance:\", balance);\n\n// 4. Envoyer des tokens\nconst result = await client.send({\n  to: \"04abc123...\",\n  amount: \"10.0\",\n  wallet,\n});\nconsole.log(\"Transaction:\", result.block_id);\n```\n\n---\n\n## `client.help()` — les règles du réseau\n\nUn DAG PMS n'a pas les mêmes règles partout : les frais, le kill-switch de mint et\nsurtout le **mode restreint** vivent dans une config gouvernée qui change par\n`propose`/`enact`. Le SDK ne peut pas les connaître à la compilation.\n\n```typescript\nconsole.log(await client.help());\n```\n\n```\n╔══════════════════════════════════════════════════════════════════════════╗\n║  ⚠  ATTENTION — LE DAG EST EN MODE RESTREINT (BOUCLE FERMÉE)             ║\n║                                                                          ║\n║  Les transferts pair-à-pair sont REFUSÉS au consensus.                   ║\n║  Un paiement ne peut viser qu'un ACCEPTEUR INSCRIT.                      ║\n╚══════════════════════════════════════════════════════════════════════════╝\n\nRègles en vigueur sur le DAG\n\n  Mode\n    État                RESTREINT (boucle fermée)\n    Surface custodiale  FERMÉE — 12 endpoints refusent (code 3072)\n    Voie à utiliser     POST /v1/tx/prepare → signature locale → POST /wallet/tx/send\n    Transferts          UNIQUEMENT vers un accepteur inscrit\n    Bridge              FERMÉ, y compris à l'opérateur\n    Levée du mode       45 jours de préavis public (palier Constitution)\n\n  Accepteurs\n    Inscrits            1\n    Plafond gouverné    50\n\n  Changements annoncés (pas encore en vigueur)\n    SetRestrictedMode(enabled=false)  [Constitution]  → dans 44 j\n      9f3c1a7e\n  …\n```\n\nLa bannière rouge **encadre** le rapport — en tête ET en pied — pour rester\nvisible dans un terminal qui a défilé. En mode ouvert, aucune alerte n'est\naffichée : une bannière montrée à tort userait le signal.\n\n### Pourquoi ce n'est pas qu'un avertissement\n\nUn intégrateur qui appelle `send-simple` sur un réseau fermé reçoit un `403` code\n`3072` sans contexte. Le rapport donne la cause **et la voie de remplacement** —\n`/v1/tx/prepare` puis `/wallet/tx/send`, ce que `client.send()` fait déjà.\n\nLa section « Changements annoncés » est souvent la plus utile : savoir qu'une\nrègle bascule dans 44 jours vaut plus que connaître la règle actuelle.\n\n### Version structurée\n\n```typescript\nconst rules = await client.getRules();   // NetworkRules\nif (rules.restricted && rules.acceptors.count === 0) {\n    throw new Error(\"réseau fermé sans accepteur : aucun paiement possible\");\n}\n```\n\n`formatRules(rules, { color })` est **pure** — utile pour rendre des règles\nobtenues autrement, ou pour forcer/interdire les couleurs (auto par défaut :\nTTY Node uniquement, jamais si `NO_COLOR` est défini).\n\nMéthodes d'appoint : `getAcceptors()` (liste publique + état du mode) et\n`getVersions()`.\n\n---\n\n## API Reference\n\n### `PmsWallet` - Gestion des Wallets\n\nLe wallet gère les clés cryptographiques (secp256k1) et permet de signer des transactions.\n\n#### Création de Wallet\n\n```typescript\n// Générer un nouveau wallet (24 mots)\nconst wallet = PmsWallet.generate();\n\n// Restaurer depuis un mnemonic\nconst restored = PmsWallet.fromMnemonic(\"word1 word2 ... word24\");\n\n// Importer depuis une clé privée (hex)\nconst imported = PmsWallet.fromPrivateKey(\"abc123...\");\n\n// Créer depuis une seed (32 bytes)\nconst seeded = PmsWallet.fromSeed(new Uint8Array(32));\n```\n\n#### Propriétés\n\n| Propriété | Type | Description |\n|-----------|------|-------------|\n| `address` | `string` | Adresse publique (clé publique hex non compressée, commence par `04`) |\n| `publicKeyHex` | `string` | Clé publique en hexadécimal (identique à `address`) |\n| `x25519PublicKeyHex` | `string` | Clé publique X25519 pour le chiffrement |\n| `mnemonic` | `string \\| undefined` | Phrase mnémonique (24 mots) si disponible |\n\n#### Méthodes\n\n```typescript\n// Signer un message\nconst signature: string = wallet.sign(messageBytes);\n\n// Exporter la clé privée (hex)\nconst privateKey: string = wallet.exportPrivateKey();\n\n// Vérifier une signature (statique)\nconst isValid: boolean = PmsWallet.verify(message, signature, publicKeyHex);\n```\n\n#### Validation de Mnemonic\n\n```typescript\nimport { isValidMnemonic } from \"@empereur-rouge/pms-sdk\";\n\nif (isValidMnemonic(userInput)) {\n  const wallet = PmsWallet.fromMnemonic(userInput);\n}\n```\n\n---\n\n### `PmsClient` - Client API\n\nLe client permet d'interagir avec l'API REST des nœuds PMS.\n\n#### Configuration\n\n```typescript\nconst client = new PmsClient({\n  nodeUrl: \"https://node.pms.network\",  // URL du nœud principal\n  apiKey: \"pk_live_votre_cle_ici\",       // Clé API (obligatoire)\n  adminToken: \"admin_token_ici\",         // Optionnel: requis pour les méthodes admin (gouvernance, setConfig)\n  seedNodes: [                           // Optionnel: nœuds de secours\n    \"https://node2.pms.network\",\n    \"https://node3.pms.network\",\n  ],\n  networkId: \"pms-mainnet\",              // Défaut: \"pms-mainnet\"\n  protocolVersion: 1,                    // Défaut: 1\n  timeout: 30000,                        // Timeout en ms (défaut: 30s)\n  enableRacing: true,                    // Racing pattern (défaut: true)\n});\n```\n\n> [!IMPORTANT]\n> La clé API est **obligatoire**. Obtenez-la depuis votre dashboard PMS ou auprès de l'administrateur du réseau.\n\n> [!WARNING]\n> `adminToken` n'est requis que pour les méthodes admin (gouvernance `propose`/`enact`/`cancel`, `setConfig`). Il est envoyé en `Authorization: Bearer <adminToken>`, uniquement vers le nœud principal (jamais vers les seeds lors du racing). **Ne jamais l'exposer côté navigateur ni le committer.** Les lectures publiques de gouvernance n'en ont pas besoin.\n\n#### Wallet (Custodial — Server-Side)\n\nCes méthodes créent/restaurent des wallets **côté serveur**. L'adresse retournée est au format Bech32 (ex: `8e1a...`).\n\n```typescript\n// Créer un nouveau wallet (serveur génère les clés)\nconst wallet = await client.createWallet();\n// Réponse (WalletResponse):\n// {\n//   address: \"8e1ahpltzjauwev6lf0jql...\",\n//   private_key_b64: \"2lM0rVdFXX...\",\n//   private_key_hex: \"da5334ad57455d74...\",\n//   public_key_hex: \"04593037fa9d4f6ea2...\",\n//   x25519_pub_hex: \"266bcd33ab2d20d2...\",\n//   mnemonic_words: [\"gain\", \"space\", \"color\", ...]\n// }\n```\n\n```typescript\n// Restaurer un wallet depuis un mnemonic (24 mots BIP39)\nconst restored = await client.restoreFromMnemonic(\n  \"gain space color filter buzz bind side before sauce twist slam history chief patch desk chunk way oblige output turtle purchase scare token rapid\"\n);\nconsole.log(restored.address); // \"8e1ahpltzjauwev6lf0jql...\"\n```\n\n```typescript\n// Restaurer un wallet depuis une clé privée hex\nconst imported = await client.restoreFromPrivateKey(\n  \"da5334ad57455d74e5150e4eb06398ce9cf27762b6f29eac7f82f178bee07406\"\n);\nconsole.log(imported.address); // même adresse que ci-dessus\n```\n\n> [!NOTE]\n> Le mnemonic et la clé privée produisent **exactement la même adresse** — la dérivation est déterministe.\n\n#### Méthodes de Lecture\n\n```typescript\n// Lister les ledgers actifs (avec block_count et symbol par ledger)\nconst ledgers: LedgerInfo[] = await client.listLedgers();\n// Réponse:\n// [\n//   { id: \"main\", network_id: \"mainnet\", prefix: \"\", protocol_version: 1, block_count: 12345, symbol: \"PMS\" },\n//   { id: \"gaming\", network_id: \"gaming-net\", prefix: \"gam_\", protocol_version: 1, block_count: 678, symbol: \"GAME\" }\n// ]\n\n// Filtrer par préfixe de nom (starts_with, case-insensitive sur id, network_id ou symbol)\nconst gaming = await client.listLedgers({ search: \"gam\" });\n// → [{ id: \"gaming\", ... }]\n```\n\n```typescript\n// Récupérer les tips du DAG (blocs les plus récents)\nconst tips: string[] = await client.getTips();\n// Réponse: [\"4aa21b8f570005b4088c53149c9afedc528d7a47127e915744a1811c11d5956c\", \"...\"]\n```\n\n```typescript\n// Récupérer un bloc par son ID\nconst block: Block = await client.getBlock(blockId);\n// Réponse:\n// {\n//   id: \"4aa21b8f570005b4088c53149c9afedc528d7a47127e915744a1811c11d5956c\",\n//   parents: [\"abc123...\", \"def456...\"],\n//   payload: { Plain: { TxUtxo: { ... } } },\n//   nonce: 12345\n// }\n```\n\n```typescript\n// Récupérer le supply total\nconst supply: SupplyInfo = await client.getSupply();\n// Réponse:\n// {\n//   circulating: \"1000000.00000000\",\n//   utxo_count: 42567\n// }\n```\n\n```typescript\n// Récupérer les UTXOs d'une adresse\nconst utxos: Utxo[] = await client.getUtxos(address);\n// Réponse:\n// [\n//   {\n//     address: \"04abc123...\",\n//     amount: \"50.00000000\",\n//     outpoint: { txid: \"tx123...\", index: 0 }\n//   },\n//   {\n//     address: \"04abc123...\",\n//     amount: \"25.50000000\",\n//     outpoint: { txid: \"tx456...\", index: 1 }\n//   }\n// ]\n```\n\n```typescript\n// Récupérer la balance d'une adresse\nconst balance: string = await client.getBalance(address);\n// Réponse: \"75.50000000\"\n```\n\n```typescript\n// Récupérer balance + UTXOs détaillés\nconst info: BalanceInfo = await client.getBalanceInfo(address);\n// Réponse:\n// {\n//   address: \"04abc123...\",\n//   balance: \"75.50000000\",\n//   utxos: [{ address: \"...\", amount: \"...\", outpoint: {...} }, ...]\n// }\n```\n\n```typescript\n// Récupérer l'historique (Transactions, Mints, Rewards)\nconst history = await client.getHistory(address, { limit: 50 });\n// Réponse:\n// {\n//   address: \"04abc123...\",\n//   count: 50,\n//   items: [\n//     { block_id: \"...\", ts_ms: 1700000000000, payload_type: \"Reward\", payload: { ... } },\n//     { block_id: \"...\", ts_ms: 1700000050000, payload_type: \"TxUtxo\", payload: { ... } }\n//   ]\n// }\n\n// Récupérer l'historique avec déchiffrement automatique des rewards\n// (Nécessite le wallet pour déchiffrer les EncryptedRewards)\nconst historyWithDecrypt = await client.getHistory(address, {\n    limit: 50,\n    decryptionWallet: myWallet \n});\n// Les items \"EncryptedReward\" déchiffrés apparaîtront comme des \"Reward\" standards\n```\n\n#### Activity API\n\nL'Activity API classifie chaque transaction avec un type semantique (`fee_received`, `transfer_in`, `nft_mint`, `freeze`, etc.), une direction et un montant net. Elle remplace `/wallet/history` (deprecie).\n\n```typescript\n// Toute l'activite d'un wallet\nconst activity = await client.getActivity(\"8eabc...\");\n// Reponse: { address, items: ActivityItem[], count, has_more, next_after_ts?, next_after_id? }\n\n// Filtrer par type\nconst fees = await client.getActivity(\"8eabc...\", {\n  type: [\"fee_received\", \"reward\"],\n  limit: 20,\n});\n\n// Pagination\nconst page2 = await client.getActivity(\"8eabc...\", {\n  after_ts: activity.next_after_ts,\n  after_id: activity.next_after_id,\n});\n\n// Filtrer par asset\nconst edeniteActivity = await client.getActivity(\"8eabc...\", {\n  asset_id: \"edenite\",\n});\n\n// Avec dechiffrement des payloads chiffres (EncryptedReward, Encrypted)\n// IMPORTANT: ne passer la cle privee que sur TLS\nconst decrypted = await client.getActivity(\"8eabc...\", {\n  x25519_sk_hex: \"votre_cle_privee_x25519_hex\",\n});\n```\n\n**Streaming temps reel (SSE)** :\n\n```typescript\nconst stop = client.streamActivity(\"8eabc...\", {\n  type: [\"transfer_in\", \"fee_received\"],\n  x25519_sk_hex: \"votre_cle_privee_x25519_hex\", // Optionnel: dechiffrement en temps reel\n  onActivity: (item) => {\n    console.log(`${item.activity_type}: ${item.amount} (${item.direction})`);\n  },\n  onError: (err) => console.error(\"SSE error:\", err),\n  onClose: () => console.log(\"Stream closed\"),\n});\n\n// Plus tard: fermer la connexion\nstop();\n```\n\n#### Methodes d'Ecriture (Transactions)\n\n```typescript\n// Envoyer des tokens\nconst result = await client.send({\n  to: \"04destinataire...\",\n  amount: \"100.0\",\n  wallet: myWallet,\n  memo: \"Paiement optionnel\", // Optionnel\n});\n// Réponse:\n// {\n//   status: \"inserted\",  // ou \"already_exists\"\n//   block_id: \"7f3a2b1c...\"\n// }\n```\n\n---\n\n### NFT - Non-Fungible Tokens\n\nLe SDK supporte les opérations NFT natives du réseau PMS.\n\n#### Mint NFT (Standard)\n\nLa création de NFT est **sécurisée** par le Coordinateur.\n\n```typescript\n// Le server (Coordinateur) signe et chiffre le NFT pour vous.\nconst result = await client.mintNft({\n  tokenId: \"unique-nft-001\",\n  metadata: {\n    name: \"Mon NFT\",\n    description: \"Description du NFT\",\n    uri: \"ipfs://QmXxx...\",\n    nft_type: \"art\",\n  },\n  wallet: myWallet, // Votre wallet personnel\n});\n// Réponse:\n// {\n//   status: \"inserted\",\n//   token_id: \"unique-nft-001\",\n//   block_id: \"a1b2c3d4e5f6...\"\n// }\n```\n\n> [!NOTE]\n> Les métadonnées sont automatiquement **chiffrées** par le serveur pour le propriétaire et le Coordinateur.\n\n#### Mint Cube (NFT avec Rareté)\n\nLes Cubes sont des NFTs spéciaux avec rareté et attributs générés par un backend Authority.\n\n```typescript\n// Mint un cube pour un utilisateur\nconst result = await client.mintCube({\n  wallet: myWallet,\n  generatorUrl: \"https://cube-generator.example.com\", // Backend Authority\n});\n// Réponse (MintCubeResponse):\n// {\n//   status: \"inserted\",\n//   block_id: \"9f8e7d6c5b4a...\",\n//   token_id: \"a1b2c3d4e5f6...64chars...\",\n//   rarity: \"Legendary\",\n//   roll: 75,\n//   attributes: {\n//     weight: 50.5,\n//     size: 30.2,\n//     density: 2.5\n//   }\n// }\n```\n\n**Raretés possibles :**\n\n| Rareté | Probabilité | Cubes sur 10M |\n|--------|-------------|---------------|\n| Unique | 1/1,000,000 | 10 |\n| Legendary | 1/100,000 | 100 |\n| Rare | 1/10,000 | 1,000 |\n| Uncommon | 1/1,000 | 10,000 |\n| Common | 1/100 | 100,000 |\n| Basic | ~99% | ~9,888,890 |\n\n#### Burn NFT\n\n```typescript\n// Détruit un NFT (seul le propriétaire peut brûler)\nconst result = await client.burnNft({\n  tokenId: \"nft-to-destroy\",\n  wallet: ownerWallet,\n});\n// Réponse:\n// {\n//   status: \"inserted\",\n//   block_id: \"1a2b3c4d5e6f...\",\n//   refund: {                       // Uniquement pour les Cubes authentiques\n//     amount: \"1.23456789\",\n//     recipient: \"04abc123...\"\n//   }\n// }\n```\n\n> [!TIP]\n> Les Cubes avec une signature Authority valide génèrent un **remboursement automatique** calculé selon leurs attributs.\n\n#### Batch Burn (Destruction Multiple)\n\nPour détruire plusieurs NFTs en une seule transaction (économie de frais) :\n\n```typescript\nconst result = await client.burnNfts({\n  tokenIds: [\"token-1\", \"token-2\", \"token-3\"],\n  wallet: ownerWallet,\n});\n// Réponse:\n// {\n//   status: \"burned\",\n//   token_id: \"batch\",\n//   token_ids: [\"token-1\", \"token-2\", \"token-3\"],\n//   refund: { ... } // Remboursement cumulé\n// }\n```\n\n#### Burn Token (actif fongible — token OU classe SFT)\n\n`burnToken` détruit n'importe quel actif **fongible**, identifié par son `assetId` : un **token** custom (`\"edenite\"`) OU une **classe SFT** (`\"{collection_id}:{class_id}\"`). Les deux circulent sur le même chemin UTXO — il n'y a donc pas de méthode de burn SFT dédiée. (Pour un NFT, identifié par `token_id`, utiliser `burnNft`.)\n\n```typescript\nimport { fromHex } from \"@empereur-rouge/pms-sdk\";\n\n// La route attend la clé privée en base64. Le wallet l'exporte en hex :\nconst privateKeyB64 = Buffer.from(fromHex(wallet.exportPrivateKey())).toString(\"base64\");\n\n// Brûler un token fongible\nconst result = await client.burnToken({\n  privateKeyB64,           // clé privée du propriétaire (base64)\n  assetId: \"edenite\",      // null/omis = PMS natif\n  amount: \"10.5\",\n});\n// Réponse:\n// {\n//   status: \"ok\",\n//   block_id: \"1a2b3c4d...\",\n//   burned: \"10.5\",\n//   asset_id: \"edenite\",\n//   owner: \"8eabc...\",\n//   converted_pms: \"0\",       // > 0 si un contrat de conversion token→PMS (voie B) s'applique\n//   mint_block_id: null       // ID du bloc de mint de conversion, sinon null\n// }\n\n// Brûler des unités d'une classe SFT — MÊME méthode, asset_id = \"collection:class\"\nawait client.burnToken({\n  privateKeyB64,\n  assetId: \"edenite-game:iron-sword\",\n  amount: \"3\",\n});\n```\n\n> [!NOTE]\n> `burnToken` est une route **API-key** (`X-API-Key`), comme `send()` — pas admin. Le serveur forge et signe le bloc de burn (single-writer).\n\n---\n\n### Gouvernance & Émission\n\nLa gouvernance est ancrée dans le DAG : un changement de config peut être **proposé** (avec un palier et un timelock), puis **enacté** une fois le timelock écoulé, ou **annulé**. Les lectures sont publiques ; les écritures requièrent `adminToken`.\n\n#### Lectures publiques (aucun `adminToken` requis)\n\n```typescript\n// Propositions en attente (statut \"pending\")\nconst pending = await client.getGovernancePending();\n// [{ proposal_id, tier, status: \"pending\", reason, announced_at_ms, enact_after_ms, update, proposal_block_id, enact_block_id, cancel_block_id }]\n\n// Propositions terminées (enactées ou annulées)\nconst history = await client.getGovernanceHistory();\n\n// Blocs de gouvernance ancrés dans le DAG\nconst { count, blocks } = await client.getGovernanceBlocks();\n// blocks: [{ block_id, kind: \"proposal\" | \"enact\" | \"cancel\", proposal_id, tier, status, update, reason, announced_at_ms, enact_after_ms }]\n```\n\n#### Actions admin (requièrent `adminToken`)\n\n```typescript\n// Proposer un changement de config (ici, le couloir d'émission)\nconst proposal = await client.proposeGovernance({\n  update: { SetEmissionCorridor: { ceiling_bps: 1500, floor_bps: 0, target_bps: 1000, epoch_duration_sec: 86400 } },\n  tier: \"constitution\",          // \"operator\" | \"policy\" | \"constitution\" (minuscules)\n  reason: \"raise emission ceiling for Q3\",\n});\n// { status: \"ok\", proposal_id, block_id, tier, announced_at_ms, enact_after_ms }\n\n// Enacter une proposition dont le timelock est écoulé\nawait client.enactProposal(proposal.proposal_id, \"timelock elapsed\");\n// { status: \"ok\", proposal_id, block_id }\n\n// Annuler une proposition en attente\nawait client.cancelProposal(proposal.proposal_id);\n```\n\n#### `setConfig` — 200 (appliqué) vs 202 (timelocké)\n\nUn **durcissement** (ex: réduire un plafond, désactiver le mint) est appliqué instantanément ; un **assouplissement** est placé sous timelock de gouvernance. Le SDK expose les deux cas via une union discriminée sur `applied` — **un 202 n'est jamais traité comme un succès appliqué** :\n\n```typescript\nconst r = await client.setConfig({ SetMintEnabled: { enabled: false } });\nif (r.applied) {\n  // HTTP 200 — en vigueur immédiatement\n  console.log(\"appliqué:\", r.updateApplied, \"bloc:\", r.enactBlockId);\n} else {\n  // HTTP 202 — proposé, PAS encore en vigueur\n  console.log(\"timelocké, enact après\", new Date(r.enactAfterMs), \"via\", r.proposalId);\n}\n```\n\n#### Codes d'erreur stables\n\nLe moteur renvoie ses erreurs au format `{ \"code\": NNNN, \"message\": \"...\" }`. Branchez sur le `code` numérique (stable), pas sur le message :\n\n```typescript\nimport { ErrorCode, HttpError } from \"@empereur-rouge/pms-sdk\";\n\ntry {\n  await client.enactProposal(proposalId);\n} catch (e) {\n  if (e instanceof HttpError && e.code === ErrorCode.GovernanceRejected) {\n    // 3071 — timelock non écoulé, proposition non en attente, ou id inconnu\n  }\n}\n// Codes notables : GovernanceRejected (3071), MintDisabled (5031), MissingAuth (1001), InvalidAuth (1002).\n// Sponsorisation (protocole 2.9) : SponsorPoolEmpty (5011, HTTP 503), SponsorQuotaExceeded (5012, HTTP 429),\n// SponsorNotEligible (5013, HTTP 422).\n```\n\n> [!IMPORTANT]\n> `SponsorPoolEmpty` (5011) arrive avec un HTTP 503 mais c'est un **état**, pas une panne transitoire : une réserve vide le restera tant que l'émetteur n'a pas réapprovisionné. Le SDK l'**exclut du retry automatique** (contrairement aux autres 503) — quand vous le recevez, il faut agir : approvisionner la réserve (`sponsorDeposit`) ou payer le gaz soi-même.\n\n---\n\n### SFT - Jetons Semi-Fongibles\n\nUn **SFT** (Semi-Fungible Token) combine une **collection** (`collection_id`) avec une **classe** fongible interne (`class_id`). Toutes les unités d'une même classe sont interchangeables (comme un token fongible), mais chaque classe reste distincte au sein de sa collection (comme un NFT). L'identifiant d'asset unique est `\"{collection_id}:{class_id}\"` — c'est ce `asset_id` qui sert de filtre partout (supply, balance, transfert). Les lectures sont publiques ; la création et le mint requièrent `adminToken`.\n\n#### Lectures publiques (aucun `adminToken` requis)\n\n```typescript\n// Toutes les classes SFT\nconst classes = await client.getSftClasses();\n// [{ asset_id, collection_id, class_id, name, uri, attributes, decimals, max_supply, creator, mint_authority }]\n\n// Une classe par son asset_id (\"collection:class\")\nconst sword = await client.getSftClass(\"edenite-game:iron-sword\");\n\n// Toutes les classes d'une collection\nconst { collection, count, classes: gameClasses } = await client.getSftCollection(\"edenite-game\");\n```\n\n#### Actions admin (requièrent `adminToken`)\n\n```typescript\n// Créer une classe SFT — asset_id = \"edenite-game:iron-sword\"\nconst created = await client.createSftClass({\n  collection_id: \"edenite-game\",\n  class_id: \"iron-sword\",\n  name: \"Iron Sword\",\n  uri: \"ipfs://Qm...\",\n  decimals: 0,\n  max_supply: \"10000\",\n});\n// { status: \"ok\", asset_id: \"edenite-game:iron-sword\", collection_id, class_id, block_id }\n\n// Mint des unités vers une adresse\nconst minted = await client.mintSft({\n  asset_id: created.asset_id,\n  to: \"8eabc...\",\n  amount: \"100\",\n});\n// { status: \"ok\", asset_id, amount: \"100\", to, block_id }\n```\n\n> [!NOTE]\n> **Transférer un SFT réutilise `send()`** — un SFT circule sur le même chemin UTXO qu'un token fongible. Passez simplement son `asset_id` :\n> ```typescript\n> await client.send({ to: \"8edef...\", amount: \"5\", wallet: myWallet, assetId: \"edenite-game:iron-sword\" });\n> ```\n> Il n'y a donc PAS de méthode de transfert SFT dédiée.\n\n> [!TIP]\n> Un mint dépassant `max_supply` est rejeté avec le code stable `InvalidField` (2030, \"would exceed max_supply ...\") ; un `asset_id` de classe inconnu renvoie 404.\n\nUne classe peut porter des **royalties** (`royalty_bps` / `royalty_beneficiary`) prélevées à chaque vente atomique. Elles sont posées à la création (`createSftClass({..., royalty_bps, royalty_beneficiary})`) et modifiables ensuite via les endpoints royalty (voir ci-dessous). La lecture d'une classe renvoie `royalty_bps: number|null`, `royalty_beneficiary: string|null` et `royalty_version: number` (compteur anti-rejeu).\n\n---\n\n### Marketplace & Royalties\n\n#### Vente / revente atomique (`marketSettle`)\n\nRègle une vente atomiquement : le vendeur cède l'actif, l'acheteur paie, le moteur prélève les royalties dues au bénéficiaire de la classe et les frais, crédite le net au vendeur, puis forge et signe l'unique bloc (single-writer). Route **API-key** (`X-API-Key`), comme `send()`.\n\n```typescript\nconst res = await client.marketSettle({\n  seller: aliceWallet,\n  buyer: bobWallet,\n  assetSold: \"edenite-game:iron-sword\",\n  quantity: \"1\",\n  price: \"50.0\",\n  // priceAsset: \"edenite\", // optionnel — omis = PMS natif\n});\n// { block_id, royalty, royalty_beneficiary, net_to_seller, fee }\nconsole.log(res.net_to_seller, \"au vendeur, royalty\", res.royalty);\n```\n\n#### Mise à jour des royalties d'une classe\n\nDeux voies. **Custodial** (le coordinateur signe avec la clé de l'autorité) :\n\n```typescript\nawait client.royaltyUpdateCustodial({\n  assetId: \"studio:ticket\",\n  authorizer: creatorWallet,   // mint_authority / créateur\n  royaltyBps: 250,             // 2.5 %\n  royaltyBeneficiary: \"8ebeneficiary...\",\n  // clearRoyalty: true, clearBeneficiary: true, // suppression explicite\n});\n// { status: \"ok\", asset_id, royalty_bps, royalty_beneficiary, block_id }\n```\n\n**Non-custodial** (recommandé — la clé privée ne quitte jamais le client) : le SDK prépare le message canonique, le **revérifie localement** (`royaltyUpdateSigningMessage`, refus si le `message_hex` du serveur diverge), signe, puis soumet la signature détachée :\n\n```typescript\nawait client.royaltyUpdateSigned({\n  assetId: \"studio:ticket\",\n  wallet: creatorWallet,\n  royaltyBps: 250,\n  royaltyBeneficiary: \"8ebeneficiary...\",\n});\n```\n\n> [!NOTE]\n> `royaltyUpdateSigningMessage(networkId, assetId, royaltyBps|null, royaltyBeneficiary|null, currentVersion)` est exporté : il reproduit **byte-pour-byte** le message signé par le moteur (`hex(SHA256(JSON compact, ordre de clés figé, `null` explicites))`). Le `currentVersion` (lu via `royaltyPrepare`) entre dans le message — signer une version obsolète est rejeté (anti-rejeu).\n\n---\n\n### Provisionnement custodial d'assets (protocole 2.8)\n\nUne instance **creator-studio** (custodiale : elle détient les clés de SES créateurs) crée et minte ses éditions capées + royalty **sans le token admin** du DAG partagé : l'autorisation vient de la **clé du créateur**. Routes API-key (`X-API-Key`), PAS admin. Le coordinateur forge/signe les blocs mais ne peut ni créer sous la collection d'un autre ni minter sans la clé du `mint_authority` ; le consensus re-vérifie signature + cap `max_supply` + anti-replay.\n\n**Créer une classe SFT ou un token** (`creator` = `mint_authority`, dérivé de la clé du wallet) :\n\n```typescript\nconst cls = await client.createSftClassCustodial({\n  collectionId: \"studio-x\",\n  classId: \"ticket\",\n  name: \"VIP Ticket\",\n  creator: creatorWallet,\n  maxSupply: \"1000\",\n  royaltyBps: 500,\n  royaltyBeneficiary: creatorWallet.address,\n});\n// { status, asset_id: \"studio-x:ticket\", collection_id, class_id, creator, mint_authority, block_id }\n\nconst tok = await client.createTokenCustodial({\n  assetId: \"vipcoin\",              // 1-32 chars [a-z0-9_], sans \":\"\n  symbol: \"VIP\", name: \"VIP Coin\", decimals: 8,\n  creator: creatorWallet,\n  maxSupply: \"1000000\",\n});\n// { status, asset_id, creator, mint_authority, block_id }\n```\n\n**Minter** — deux modes. **Custodial** (la clé transite, le serveur signe) :\n\n```typescript\nawait client.mintSftCustodial({\n  assetId: \"studio-x:ticket\",\n  to: \"8erecipient...\",\n  amount: \"100\",\n  mintAuthority: creatorWallet,\n  // lockedUntil: 1893456000000, // time-lock optionnel (UNIX ms)\n});\n// { status, asset_id, to, amount, mint_nonce, block_id }\n// mintTokenCustodial(...) : idem pour un token fongible.\n```\n\n**Non-custodial / pré-signé** (recommandé — la clé ne quitte jamais le client) : le SDK prépare le message, le **revérifie localement** (`custodialMintSigningMessage`, refus si le `message_hex` du serveur diverge), signe, puis soumet la signature détachée :\n\n```typescript\nawait client.mintSftSigned({\n  assetId: \"studio-x:ticket\",\n  to: \"8erecipient...\",\n  amount: \"100\",\n  wallet: creatorWallet,   // DOIT être le mint_authority\n});\n// mintTokenSigned(...) : idem pour un token.\n// prepareSftMint / prepareTokenMint exposent l'étape de prépa seule (message_hex + mint_nonce).\n```\n\n> [!NOTE]\n> `custodialMintSigningMessage(networkId, assetId, outputs, mintNonce)` est exporté : il reproduit **byte-pour-byte** le message signé par le moteur (`hex(SHA256(JSON compact {domain:\"pms-custodial-mint-v1\", network_id, asset_id, outputs, mint_nonce}))`). Chaque output est sérialisé comme un `TxOutput` (optionnels absents omis) et `created_at` est toujours omis (assigné par le système). Le `mint_nonce` (consommé one-shot au consensus) et le `network_id` empêchent le rejeu.\n\n---\n\n### Sponsorisation du gaz (protocole 2.9)\n\nUn asset custom (token **ou** classe SFT) peut déclarer **qui paie son gaz** : l'utilisateur, ou une **réserve** approvisionnée par son émetteur. La réserve vit à une adresse `spool1…` dérivée déterministiquement de l'`asset_id`, dont **aucune clé privée n'existe** — elle n'est dépensable que par les payloads dont le consensus re-dérive lui-même le montant légal. Cible « UX sans crypto visible » : l'utilisateur d'un token d'entreprise ne touche jamais de PMS.\n\nL'autorité de **toutes** les écritures est la signature du **`creator`** (jamais le token admin, jamais le `mint_authority` : c'est l'argent de celui qui approvisionne). Routes API-key (`X-API-Key`) ; les lectures sont publiques.\n\n**Lectures publiques** (aucun `adminToken` requis) :\n\n```typescript\nconst pol = await client.getSponsorPolicy(\"edenite\");\n// { asset_id, creator, gas_sponsor_mode: \"Disabled\"|\"Preferred\"|\"Required\",\n//   gas_rate, sponsor_limits, sponsor_version }\n\nconst pool = await client.getSponsorPool(\"edenite\");\n// { asset_id, reserve_address: \"spool1…\", deposited, franchise, consumed, settled,\n//   available, withdrawable, settleable, window_spent, window_start_ms, version }\n\nconst al = await client.getSponsorAllowlist(\"edenite\");\n// { asset_id, allowlist_only, count, identities }\n```\n\n`withdrawable` **exclut la franchise** d'amorçage (sinon créer un token puis retirer serait un faucet) et se calcule sur `consumed`, jamais sur `settled` — sinon le créateur retirerait, entre deux règlements, du PMS que ses utilisateurs ont déjà dépensé.\n\n**Approvisionner la réserve** (n'importe qui peut abonder la réserve d'autrui — c'est un cadeau non reprenable ; seul le `creator` retire) :\n\n```typescript\nawait client.sponsorDeposit({ assetId: \"edenite\", amount: \"500\", depositor: creatorWallet });\n// { status, asset_id, reserve_address, deposited, fee, block_id }\n// ⚠️ Relire getSponsorPool() pour l'état à jour : la persistance est en tâche de fond.\n```\n\n**Politique, retrait, allowlist** — trois flux `prepare → sign → apply`. Les wrappers `*Signed` **recalculent le message localement et refusent de signer** si le `message_hex` du serveur diverge (sans ça, un coordinateur compromis fait signer n'importe quoi au détenteur de la clé) :\n\n```typescript\n// Politique : qui paie, à quel prix, avec quels garde-fous.\nawait client.sponsorPolicyUpdateSigned({\n  assetId: \"edenite\",\n  wallet: creatorWallet,            // DOIT être le creator\n  gasSponsorMode: \"Required\",\n  gasRate: \"0.00040000\",\n  sponsorLimits: { daily_cap_pms: \"50\", per_address_daily_tx: 20, allowlist_only: true },\n  // clearGasRate / clearLimits : effacement EXPLICITE (les deltas omis sont CONSERVÉS)\n});\n\n// Retrait : borné par `withdrawable`, jamais par le solde on-chain de la réserve.\nawait client.sponsorWithdrawSigned({ assetId: \"edenite\", amount: \"12.5\", wallet: creatorWallet });\n// `to` optionnel — défaut : le creator lui-même.\n\n// Allowlist : ne mord que si sponsor_limits.allowlist_only === true.\nawait client.sponsorAllowlistUpdateSigned({\n  assetId: \"edenite\",\n  wallet: creatorWallet,\n  add: [\"8e1alice\", \"8e1bob\"],\n  remove: [\"8e1carol\"],\n});\n// sponsorPolicyPrepare / sponsorWithdrawPrepare / sponsorAllowlistPrepare exposent\n// l'étape de prépa seule (message_hex + version courante).\n```\n\nLes **garde-fous** ne sont pas un confort : sans eux, un attaquant détenant une seule unité du token spamme des transferts de poussière et brûle les PMS de l'émetteur (le problème classique des paymasters ERC-4337). Un delta omis est **conservé** — effacer exige `clearGasRate` / `clearLimits`, pour qu'un oubli d'appelant n'ouvre jamais la réserve au spam.\n\n> [!NOTE]\n> `sponsorPolicySigningMessage`, `sponsorAllowlistSigningMessage` et `sponsorWithdrawSigningMessage` sont exportés : ils reproduisent **byte-pour-byte** les messages signés par le moteur (`hex(SHA256(JSON compact, ordre de clés figé))`, domaines `pms-sponsor-policy-v1` / `-allowlist-v1` / `-withdraw-v1`). Deux subtilités **critiques** :\n> - **Message de politique** : au niveau racine, `gas_sponsor_mode`, `gas_rate` et `sponsor_limits` sortent en `null` **explicite** quand absents ; mais **à l'intérieur** de `sponsor_limits`, les champs absents sont **omis** et `allowlist_only` est **toujours présent**. Les deux règles coexistent dans le même message.\n> - **Message d'allowlist** : `add` et `remove` sont liés **verbatim**, dans l'ordre soumis — jamais triés. Permuter deux adresses change le hash, ce qui empêche un intermédiaire de réordonner ou d'allonger `add` sur une autorisation par ailleurs valide.\n>\n> La version courante (`sponsor_version` pour la politique et l'allowlist, version du **pool** pour le retrait) entre dans le message : signer une version obsolète est rejeté (anti-rejeu).\n\n---\n\n### API Avancée\n\nPour les cas d'usage avancés (construction manuelle de blocs, chiffrement custom), importez depuis le module `advanced` :\n\n```typescript\nimport { \n  computeBlockId, \n  checkPowBits,\n  encryptPayload, \n  decryptPayload, \n  generateX25519Keypair,\n  deriveX25519PublicKey,\n} from \"@empereur-rouge/pms-sdk/src/advanced\";\n\nimport type {\n  WireBlock,\n  PayloadEnvelope,\n  TxUtxo,\n} from \"@empereur-rouge/pms-sdk/src/advanced\";\n```\n\n> [!WARNING]\n> L'API avancée peut changer sans préavis. Préférez l'API publique pour la stabilité.\n\n---\n\n### Utilitaires (API Publique)\n\n```typescript\nimport { \n  parseAmount, \n  formatAmount,\n  toHex,\n  fromHex,\n} from \"@empereur-rouge/pms-sdk\";\n\n// Convertir les montants\nconst sats = parseAmount(\"10.5\");      // -> 1050000000n\nconst formatted = formatAmount(sats);   // -> \"10.50000000\"\n\n// Conversions hex\nconst hex = toHex(new Uint8Array([1, 2, 3]));\nconst bytes = fromHex(\"010203\");\n```\n\n---\n\n## Types TypeScript\n\nTous les types sont exportés et documentés :\n\n```typescript\nimport type {\n  // Configuration\n  PmsClientConfig,\n  \n  // Réponses API\n  SubmitResponse,\n  BalanceInfo,\n  SupplyInfo,\n  WalletResponse,\n  \n  // NFT\n  NftMetadata,\n  MintCubeResponse,\n  BurnNftResponse,\n  CubeAttributes,\n  \n  // Blocs & Transactions (lecture)\n  Block,\n  Utxo,\n\n  // Historique\n  WalletHistoryResp,\n  HistoryItem,\n\n  // Activity\n  ActivityItem,\n  ActivityResp,\n  ActivityOptions,\n  StreamActivityOptions,\n  ActivityType,\n  ActivityDirection,\n\n  // Ledger\n  LedgerInfo,\n\n  // SFT — Jetons Semi-Fongibles\n  SftClass,\n  CreateSftClassRequest,\n  CreateSftClassResult,\n  MintSftRequest,\n  MintSftResult,\n\n  // Marketplace & Royalties\n  MarketSettleResult,\n  RoyaltyDeltas,\n  RoyaltyUpdateParams,\n  RoyaltyPrepareResult,\n  RoyaltyUpdateResult,\n\n  // Provisionnement custodial d'assets (protocole 2.8)\n  CreateSftClassCustodialResult,\n  CreateTokenCustodialResult,\n  CustodialMintResult,\n  CustodialMintPrepareResult,\n\n  // Sponsorisation du gaz (protocole 2.9)\n  GasSponsorMode,\n  SponsorLimits,\n  SponsorPolicy,\n  SponsorPool,\n  SponsorAllowlist,\n  SponsorAuthorization,\n  SponsorPolicyDeltas,\n  SponsorPolicyPrepareResult,\n  SponsorPolicyUpdateResult,\n  SponsorDepositResult,\n  SponsorWithdrawPrepareResult,\n  SponsorWithdrawResult,\n  SponsorAllowlistPrepareResult,\n  SponsorAllowlistUpdateResult,\n} from \"@empereur-rouge/pms-sdk\";\n\n// Types bas niveau (API avancée)\nimport type {\n  WireBlock,\n  PayloadEnvelope,\n  TxUtxo,\n  OutputRef,\n  TxOutput,\n} from \"@empereur-rouge/pms-sdk/src/advanced\";\n```\n\n---\n\n## Sécurité\n\n### Coordinateur et Minting\n\nEn production, seul le **Coordinateur** peut créer de nouveaux NFTs (y compris les Cubes). Cette restriction est appliquée au niveau du backend via la clé `coordinator_pk`.\n\nLes NFTs authentiques sont identifiés par le `creator` qui correspond à la clé publique du Coordinateur.\n\n### Chiffrement\n\nLe SDK utilise :\n- **secp256k1** pour les signatures (ECDSA, DER-encoded)\n- **X25519** pour l'échange de clés\n- **AES-256-GCM** pour le chiffrement symétrique\n\n### Bonnes Pratiques\n\n```typescript\n// ✅ Stocker le mnemonic de façon sécurisée\nconst wallet = PmsWallet.generate();\n// Sauvegarder wallet.mnemonic dans un stockage sécurisé\n\n// ✅ Ne jamais exposer la clé privée\nconst privateKey = wallet.exportPrivateKey();\n// Ne pas logger ou transmettre cette valeur\n\n// ✅ Vérifier les signatures avant d'accepter des données\nconst isValid = PmsWallet.verify(message, signature, senderPubKey);\n```\n\n---\n\n## Racing Pattern\n\nLe SDK utilise un \"racing pattern\" pour la soumission des transactions :\n\n1. Le client maintient une liste de nœuds connus\n2. Lors de `submitBlock()`, la transaction est envoyée à **tous** les nœuds en parallèle\n3. La première réponse positive est retournée\n4. Les autres requêtes sont annulées\n\nCela améliore :\n- La **latence** (premier nœud qui répond)\n- La **fiabilité** (tolérance aux pannes)\n- La **propagation** (le bloc atteint plusieurs nœuds rapidement)\n\n```typescript\n// Désactiver si non souhaité\nconst client = new PmsClient({\n  nodeUrl: \"...\",\n  apiKey: \"pk_live_...\",\n  enableRacing: false,\n});\n```\n\n---\n\n## Tests\n\n```bash\n# Lancer les tests\nnpm test\n\n# Mode watch\nnpm run test:watch\n\n# Couverture\nnpm run test:coverage\n```\n\n---\n\n## Licence\n\nMIT © PMS Team\n","readmeFilename":"README.md"}