{"_id":"@anastasia-labs/aiken-multisig-offchain","_rev":"8-2f266c7fa725aa2a2154e1017a483385","name":"@anastasia-labs/aiken-multisig-offchain","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.0","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"ce65e7bfc2bdfafea0b198ee72b2ca259bf4b72c","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.0.tgz","fileCount":5,"integrity":"sha512-bvd5TY1oGWHjRvz4rYmo16r6wZ6cStU5Y1h9ZzycVJVXQeSGidq5Cah1NEtZ9j2jXEJiMkli9VqTFYgzPGHTBQ==","signatures":[{"sig":"MEQCIHo4bQlDTCOpKa8ZNcYUd/IZOXF0CBaRY5YkE/i8F/CYAiAfqdhzskjz/IZSuff4c6mGrEUYnhQrDkDr66Lg+aD3VQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34899},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.0.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/5eae4becde80a196f76480654d162b60/anastasia-labs-aiken-multisig-offchain-1.0.0.tgz","_integrity":"sha512-bvd5TY1oGWHjRvz4rYmo16r6wZ6cStU5Y1h9ZzycVJVXQeSGidq5Cah1NEtZ9j2jXEJiMkli9VqTFYgzPGHTBQ==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.5","dependencies":{"dotenv":"^16.4.7","effect":"^3.11.2","@noble/hashes":"^1.6.1","@lucid-evolution/lucid":"0.4.16"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"tsup":"^6.7.0","eslint":"^8.57.1","vitest":"0.34.6","ts-node":"^10.9.2","typescript":"^5.6.3","@types/node":"^20.17.6","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.0_1734702798282_0.01669674044233105","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.1","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"dbb5b249b558cba6aa4bd515666c568df02fc83f","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.1.tgz","fileCount":5,"integrity":"sha512-OGn4Cu+CikdYWxmUgV6QMw7oNE3DI7ZB5byOt/XMC7Ng6o3gObYYNollqENg8i4smSq0czb+N1OrG2NS2h+bMw==","signatures":[{"sig":"MEQCIHCt5sM8fOZ76xzvUO1VT7GyCI7Jp4DWnPj7wiy5NQRDAiBK3U1cFbfRe8XkgZymsTx8CsASQvp/wB/fPlnyTgWONg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":75806},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.1.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/d4a9686893a7f41cd548148cef8ea119/anastasia-labs-aiken-multisig-offchain-1.0.1.tgz","_integrity":"sha512-OGn4Cu+CikdYWxmUgV6QMw7oNE3DI7ZB5byOt/XMC7Ng6o3gObYYNollqENg8i4smSq0czb+N1OrG2NS2h+bMw==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.5","dependencies":{"dotenv":"^16.4.7","effect":"^3.11.2","@noble/hashes":"^1.6.1","@lucid-evolution/lucid":"0.4.16"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"tsup":"^6.7.0","eslint":"^8.57.1","vitest":"0.34.6","ts-node":"^10.9.2","typescript":"^5.6.3","@types/node":"^20.17.6","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.1_1734975821797_0.6846598237713784","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.3","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.3","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"4d071ea371cdfec416c5fb1c89fd472fe0b16959","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.3.tgz","fileCount":5,"integrity":"sha512-Jza8Nxw2k0K3ADbkpgcEZ3EkHaURGI/FIN2543QIRsy1uMFlSs2aDzsusSMwkFqrXOTzCQbf1mWTNSL1BdYuFw==","signatures":[{"sig":"MEYCIQD15pskJG6rQsql0YN56Zim5RlIHM2kkdK7RNdYhnRZaQIhAJYpFjhJGdqcSqOGOQ0UvVF7IHp4Wp05XbAZK4+CmvXr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":78513},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.3.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/3ac20ebd15a002427baf0c1fd8ed5d24/anastasia-labs-aiken-multisig-offchain-1.0.3.tgz","_integrity":"sha512-Jza8Nxw2k0K3ADbkpgcEZ3EkHaURGI/FIN2543QIRsy1uMFlSs2aDzsusSMwkFqrXOTzCQbf1mWTNSL1BdYuFw==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.5","dependencies":{"dotenv":"^16.4.7","effect":"^3.11.2","@noble/hashes":"^1.6.1","@lucid-evolution/lucid":"0.4.16"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"tsup":"^6.7.0","eslint":"^8.57.1","vitest":"0.34.6","ts-node":"^10.9.2","typescript":"^5.6.3","@types/node":"^20.17.6","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^5.62.0","@typescript-eslint/eslint-plugin":"^5.62.0"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.3_1735582373026_0.16482693872004894","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.4","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.4","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"1af3a51c096a36cc90e173a1db3931bbcf7876f7","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.4.tgz","fileCount":6,"integrity":"sha512-qAxMZODqLmVtGZuw6HCkEZtXnHMj2S1LbL8GMasfS+yIklAhYDIWX9BJs+9m6Y7kOLNtbq9JkwuMYu9d9KHmaQ==","signatures":[{"sig":"MEYCIQCFGzi1tF/op4LyaurCehUsjGNeTJX/UJlrM1cpv1MnVQIhAMXE/8MbPpvCRN1qD6gYDPmkYbIiWnRZrO9Bz9EHG9HX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134802},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.4.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/f47664ca586f89eb5f8200b9f4639a03/anastasia-labs-aiken-multisig-offchain-1.0.4.tgz","_integrity":"sha512-qAxMZODqLmVtGZuw6HCkEZtXnHMj2S1LbL8GMasfS+yIklAhYDIWX9BJs+9m6Y7kOLNtbq9JkwuMYu9d9KHmaQ==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.7","dependencies":{"dotenv":"^16.4.7","effect":"^3.13.10","@noble/hashes":"^1.6.1","@harmoniclabs/crypto":"0.2.4","@lucid-evolution/lucid":"^0.4.24"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"jiti":"^2.4.2","tsup":"^8.3.5","eslint":"^9.22.0","vitest":"0.34.6","globals":"^16.0.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","fast-check":"^3.13.2","typescript":"^5.7.2","@types/node":"^20.17.9","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","typescript-eslint":"^8.27.0","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^8.26.1","@typescript-eslint/eslint-plugin":"^8.26.1"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.4_1742622042218_0.6342657641222806","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.5","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.5","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"3247d9f23d7c5f9620cb0504a9b14c015dcbee2e","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.5.tgz","fileCount":6,"integrity":"sha512-VMA1PhKbyGfJHVOwML5wD18Ndim7WC3g7gC7q7Cqty3VBbinM56YDQaUxddAGQJQ3kQUBEfAi67al0i9qe199w==","signatures":[{"sig":"MEUCIE+sLAFQfUsiOXAC2ukqSfYifm1YVGzCd1Qf1mJbxB35AiEA3/TSfn3ra9zSvPewKZQwpkvAhNU3a+HdKaB0adZmLXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83857},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.5.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/d8035e8e9ceac7889e5d35b6f6fab074/anastasia-labs-aiken-multisig-offchain-1.0.5.tgz","_integrity":"sha512-VMA1PhKbyGfJHVOwML5wD18Ndim7WC3g7gC7q7Cqty3VBbinM56YDQaUxddAGQJQ3kQUBEfAi67al0i9qe199w==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.7","dependencies":{"dotenv":"^16.4.7","effect":"^3.13.10","@noble/hashes":"^1.6.1","@harmoniclabs/crypto":"0.2.4","@lucid-evolution/lucid":"^0.4.24"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"jiti":"^2.4.2","tsup":"^8.3.5","eslint":"^9.22.0","vitest":"0.34.6","globals":"^16.0.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","fast-check":"^3.13.2","typescript":"^5.7.2","@types/node":"^20.17.9","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","typescript-eslint":"^8.27.0","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^8.26.1","@typescript-eslint/eslint-plugin":"^8.26.1"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.5_1743501260154_0.4147736579000083","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.6","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.6","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"ec7963d6b6308fb08b3ab45f3fd450e62f947268","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.6.tgz","fileCount":6,"integrity":"sha512-P1Kt3aYonmoruLACjp3PE2ZLAlI4hsIeKfamTErlTmlUl8I+Xfyo44PHy9EuJGaUqzRjaCdHtdqQrDnZrrZ3QA==","signatures":[{"sig":"MEQCIDh4ZPjETp3cxSwN6D39nXhXAb/IX770RcLTwfdLp2P7AiA34gI38Z5/2giLR8RHYMcAcgGRT5mBpkup87rmHmnF3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83853},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.6.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/bc8106780d0c7bb347c6fee8c242a4ca/anastasia-labs-aiken-multisig-offchain-1.0.6.tgz","_integrity":"sha512-P1Kt3aYonmoruLACjp3PE2ZLAlI4hsIeKfamTErlTmlUl8I+Xfyo44PHy9EuJGaUqzRjaCdHtdqQrDnZrrZ3QA==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.7","dependencies":{"dotenv":"^16.4.7","effect":"^3.13.10","@noble/hashes":"^1.6.1","@harmoniclabs/crypto":"0.2.4","@lucid-evolution/lucid":"^0.4.24"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"jiti":"^2.4.2","tsup":"^8.3.5","eslint":"^9.22.0","vitest":"0.34.6","globals":"^16.0.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","fast-check":"^3.13.2","typescript":"^5.7.2","@types/node":"^20.17.9","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","typescript-eslint":"^8.27.0","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^8.26.1","@typescript-eslint/eslint-plugin":"^8.26.1"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.6_1743508458346_0.29356335486136076","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.7","keywords":[],"author":"","license":"ISC","_id":"@anastasia-labs/aiken-multisig-offchain@1.0.7","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"dist":{"shasum":"d77f78422b5714ba4388bed0af68388ca586f320","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.7.tgz","fileCount":6,"integrity":"sha512-JICez2ohbuesbsHSuXa48jV5qsDZJ78KCSJKU+7RCqWoiQrY+8HMlt+7ZHlJTWEn0dwMUzGjyG4cioMy47lQgQ==","signatures":[{"sig":"MEUCIFWbJd/oAjEz5cTKbL89aZ9RCdJoyfZ1RYL0LYUVEk92AiEA6UW7imGB7Yq6v4CRZDYFob748vA500STLhWyFnfTEKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84123},"main":"./dist/index.js","type":"module","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.7.tgz","types":"./dist/index.d.ts","scripts":{"lint":"eslint","test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"_resolved":"/tmp/f3012efe814905c69c4a4b6e2d974541/anastasia-labs-aiken-multisig-offchain-1.0.7.tgz","_integrity":"sha512-JICez2ohbuesbsHSuXa48jV5qsDZJ78KCSJKU+7RCqWoiQrY+8HMlt+7ZHlJTWEn0dwMUzGjyG4cioMy47lQgQ==","_npmVersion":"10.8.2","description":"Off-Chain SDK for Aiken Upgradable Multisig","directories":{"test":"test"},"_nodeVersion":"18.20.8","dependencies":{"dotenv":"^16.4.7","effect":"^3.13.10","@noble/hashes":"^1.6.1","@harmoniclabs/crypto":"0.2.4","@lucid-evolution/lucid":"^0.4.24"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","devDependencies":{"jiti":"^2.4.2","tsup":"^8.3.5","eslint":"^9.22.0","vitest":"0.34.6","globals":"^16.0.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","fast-check":"^3.13.2","typescript":"^5.7.2","@types/node":"^20.17.9","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","typescript-eslint":"^8.27.0","eslint-config-prettier":"^8.10.0","@typescript-eslint/parser":"^8.26.1","@typescript-eslint/eslint-plugin":"^8.26.1"},"_npmOperationalInternal":{"tmp":"tmp/aiken-multisig-offchain_1.0.7_1744378299864_0.9512070536345509","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@anastasia-labs/aiken-multisig-offchain","version":"1.0.8","description":"Off-Chain SDK for Aiken Upgradable Multisig","main":"./dist/index.js","types":"./dist/index.d.ts","type":"module","keywords":[],"author":"","license":"ISC","devDependencies":{"@eslint/js":"^9.23.0","@noble/hashes":"^1.5.0","@sinclair/typebox":"^0.25.24","@types/node":"^20.17.9","@typescript-eslint/eslint-plugin":"^8.26.1","@typescript-eslint/parser":"^8.26.1","eslint":"^9.22.0","eslint-config-prettier":"^8.10.0","fast-check":"^3.13.2","globals":"^16.0.0","jiti":"^2.4.2","ts-node":"^10.9.2","tsup":"^8.3.5","typescript":"^5.7.2","typescript-eslint":"^8.27.0","vitest":"0.34.6"},"directories":{"test":"test"},"dependencies":{"@harmoniclabs/crypto":"0.2.4","@lucid-evolution/lucid":"^0.4.24","@noble/hashes":"^1.6.1","dotenv":"^16.4.7","effect":"^3.13.10"},"packageManager":"pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247","scripts":{"test":"export NODE_ENV='emulator' && vitest run","build":"tsup src/index.ts --minify --format esm,cjs --dts --clean","lint":"eslint","repack":"pnpm run build  && pnpm pack","ts-node":"ts-node"},"_id":"@anastasia-labs/aiken-multisig-offchain@1.0.8","_integrity":"sha512-PGKjzYCkD/RojiHVIRPwtryKn4VDSrBi0xfPscKgNMeErn4zLzucnS1P/uRxOZ8P5EGE6IrEmhoohJnLypfDnw==","_resolved":"/tmp/18bb4e1c66b1ce435843a3880bfdf0a7/anastasia-labs-aiken-multisig-offchain-1.0.8.tgz","_from":"file:anastasia-labs-aiken-multisig-offchain-1.0.8.tgz","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-PGKjzYCkD/RojiHVIRPwtryKn4VDSrBi0xfPscKgNMeErn4zLzucnS1P/uRxOZ8P5EGE6IrEmhoohJnLypfDnw==","shasum":"d75e418c145a906b077aafdf9f171d863b95a046","tarball":"https://registry.npmjs.org/@anastasia-labs/aiken-multisig-offchain/-/aiken-multisig-offchain-1.0.8.tgz","fileCount":6,"unpackedSize":127011,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD4isETCNnXxaaO8Ki/5XpFCHPfMD1ZEk/YAIcSDiUsqwIgZLFb663LFFqU+Jwnsv7010TPGRaaDtFUOpeTu2HCbho="}]},"_npmUser":{"name":"anastasia-labs","email":"info@anastasialabs.com"},"maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aiken-multisig-offchain_1.0.8_1744687981809_0.16203933912688684"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-20T13:53:18.186Z","modified":"2025-04-15T03:33:02.185Z","1.0.0":"2024-12-20T13:53:18.526Z","1.0.1":"2024-12-23T17:43:41.965Z","1.0.3":"2024-12-30T18:12:53.193Z","1.0.4":"2025-03-22T05:40:42.386Z","1.0.5":"2025-04-01T09:54:20.367Z","1.0.6":"2025-04-01T11:54:18.514Z","1.0.7":"2025-04-11T13:31:40.041Z","1.0.8":"2025-04-15T03:33:01.998Z"},"license":"ISC","keywords":[],"description":"Off-Chain SDK for Aiken Upgradable Multisig","maintainers":[{"name":"anastasia-labs","email":"info@anastasialabs.com"}],"readme":"# Table of Contents\n\n- [Aiken Upgradable Multisig Offchain](#aiken-upgradable-multisig-offchain)\n  - [Introduction](#introduction)\n  - [Documentation](#documentation)\n  - [Usage Example](#usage-example)\n    - [Setup](#setup-lucid--multisig-scripts)\n    - [Initiate Multisig Contract](#initiate-multisig-contract)\n    - [Sign](#sign)\n    - [Update Multisig Contract](#update-multisig-contract)\n    - [Adjust Signer Threshold](#adjust-signer-threshold)\n  - [Local Build](#local-build)\n  - [Test Framework](#test-framework)\n  - [Running Tests](#running-tests)\n\n<!-- TODO: Link to lucid-evolution -->\n<!-- TODO: Clean up the examples with actual code -->\n# Aiken Upgradable Multisig Offchain\n\n## Introduction\n\nThe Aiken Multisig Offchain is a typescript based SDK built to conveniently interact with an Aiken based secure and flexible multi-signature smart contract designed specifically for the Cardano Blockchain.  It provides developers with an easy-to-use interface to manage multisig wallets, enabling secure and flexible transactions that require multiple authorized signatures.\n\n**Key features:**\n\n- **Secure Spending of Assets:** Ensure that asset transactions can only be executed by authorized members.\n- **Seamless Adjustment of Signer Thresholds:** Adjust the required number of signatures needed to approve transactions without compromising security.\n- **Addition or Removal of Signers:** Update the list of signatories and threshold as needed.\n- **Spending Limits Enforcement:** Define and enforce spending limits for transactions to enhance security.\n- **Asset Support:** Manage both ADA and other Cardano native tokens.\n\nThis project is funded by the Cardano Treasury in [Catalyst Fund 11](https://projectcatalyst.io/funds/11/cardano-use-cases-product/anastasia-labs-x-maestro-plug-n-play-20)\n\n## Documentation\n\n### What is a Multisignature (Multisig) Contract?\n\nA multisignature (multisig) contract is a smart contract that requires multiple parties to authorize a transaction before it can be executed. This adds an extra layer of security by distributing the approval authority among multiple trusted signatories. Multisig contracts are commonly used in scenarios where assets need to be managed collectively, such as joint accounts, corporate treasury management, or any situation where shared control over funds is desired.\n\n### How Does This Project Facilitate Multisig Transactions?\n\nThis project provides an off-chain SDK to interact along with our [Aiken Upgradable Multisig](https://github.com/Anastasia-Labs/aiken-upgradable-multisig). The contract allows authorized members to execute asset transactions within predefined thresholds. \nIt fullfills the requirements of an upgradable multisig by enabling:\n\n- **Transaction Approval:** Ensure transactions execute only with the required number of signatures.\n- **Signer Management:** Add or remove signers to reflect organizational changes.\n- **Threshold Adjustment:** Seamlessly adjust the signature threshold as needed.\n- **Spending Limits:** Define and enforce maximum withdrawal amounts per transaction.\n\n\n### Design Documentation\n\nFor a comprehensive understanding of the contract's architecture, design\ndecisions, and implementation details, please refer to the\n[Design Documentation](https://github.com/Anastasia-Labs/aiken-upgradable-multisig/blob/main/docs/design-specs/upgradable-multi-sig.pdf). This\ndocumentation provides in-depth insights into the contract's design, including\nits components, and detailed explanations of its functionality.\n\n## Usage Example\n\n### Install package\n\n```sh\nnpm install @anastasia-labs/aiken-multisig-offchain\n```\n\nor\n\n```sh\npnpm install @anastasia-labs/aiken-multisig-offchain\n```\n\nBelow are the basic instructions on how to use the multisig endpoints. \n\nFor a more comprehensive working example, checkout the [examples folder](https://github.com/Anastasia-Labs/aiken-multisig-offchain/tree/main/examples).\n\n### Setup Lucid & Multisig Scripts\n\n1. Ensure all signers have enough funds in their wallets.\n\n1. Each partial signature should be stored in a persistence layer (database, server, etc.) and retrieved once enough signatures are collected. \n\n```ts\nimport Script from \"../src/validator/multisig_validator.json\" assert { type: \"json\" };\n\nconst lucid = await Lucid(\n  new Maestro({\n    network: \"Preprod\",\n    apiKey: \"<Your-API-Key>\", // Get yours by visiting https://docs.gomaestro.org/getting-started\n    turboSubmit: false, // Read about paid turbo transaction submission feature at https://docs.gomaestro.org/cardano/turbo-submit-transaction\n  }),\n  \"Preprod\" \n);\n\nlucid.selectWallet.fromPrivateKey(\"your secret key here e.g. ed25519_...\");\n\n```\n\n**Get Your [Maestro API Key](https://docs.gomaestro.org/getting-started)**\n\n\n### Initiate Multisig Contract\n\nAll signers must sign when initialising.\n(*Wallet must contain enough lovelace to fund the contract.*)\n\n```ts\nimport { initiateMultisig, MultiSigConfig, LucidEvolution } from \"@anastasia-labs/aiken-multisig-offchain\";\n\n// Define signatories' public key hashes\nconst initiator = getAddressDetails(initiatorAddress).paymentCredential?.hash!;\nconst signer1 = getAddressDetails(signer1Address).paymentCredential?.hash!;\nconst signer2 = getAddressDetails(signer2Address).paymentCredential?.hash!;\nconst signer3 = getAddressDetails(signer3Address).paymentCredential?.hash!;\n\n// Configure the multisig parameters\n  const initConfig: MultiSigConfig = {\n    signers_addr: [initiator.address, signer1.address, signer2.address, signer3.address],\n    threshold: 2n,\n    fund_policy_id: \"\", // For ADA, leave empty\n    fund_asset_name: \"\", // For ADA, leave empty\n    spending_limit: 10_000_000n,\n    total_funds_qty: 100_000_000n,\n  };\n\n  try{\n      // Initiate the multisig contract\n      const initTxUnsigned = await initiateMultisig(lucid, initConfig);\n\n      const initTxUnsigned = await initiateMultiSig(lucid, initConfig);\n\n      const cboredTx = initTxUnsigned.toCBOR();\n      const partialSignatures: string[] = [];\n\n      for (\n          const signerSeed of [\n              INITIATOR_SEED,\n              SIGNER_ONE_SEED,\n              SIGNER_TWO_SEED,\n              SIGNER_THREE_SEED,\n          ]\n      ) {\n          lucid.selectWallet.fromSeed(signerSeed);\n          const partialSigner = await lucid\n              .fromTx(cboredTx)\n              .partialSign\n              .withWallet();\n          partialSignatures.push(partialSigner);\n      }\n\n      const assembleTx = initTxUnsigned.assemble(\n          partialSignatures,\n      );\n\n      const initTxSigned = await assembleTx.complete();\n      const initTxHash = await initTxSigned.submit();\n      console.log(`Submitting ...`);\n      await lucid.awaitTx(initTxHash);\n\n      console.log(`Multisig Contract Initiated Successfully: ${initTxHash}`);\n    } catch (error) {\n      console.error(\"Failed to initiate multisig:\", error);\n  }\n\n\n\n```\n\n### Sign\n\n```ts\nimport { validateSign, ValidateSignConfig } from \"@anastasia-labs/aiken-multisig-offchain\";\n\n// Configure the sign transaction\n  const validateSignConfig: ValidateSignConfig = {\n    withdrawal_amount: 5_000_000n, // Amount to withdraw in lovelace\n    recipient_address: recipientAddress, // Address to receive the funds\n    signers_addr: [initiatorAddress, signer1Address], // Signatories participating\n  };\n\n// Validate and prepare the transaction\n  const signTxUnsigned = await validateSign(lucid, validateSignConfig);\n\n// Sign multisig\n  try {\n      lucid.selectWallet.fromSeed(INITIATOR_SEED);\n      const signTxUnsigned = await validateSign(lucid, signConfig);\n\n      const cboredTx = signTxUnsigned.toCBOR();\n      const partialSignatures: string[] = [];\n\n      for (\n          const signerSeed of [\n              INITIATOR_SEED,\n              SIGNER_ONE_SEED,\n              SIGNER_TWO_SEED,\n              SIGNER_THREE_SEED,\n          ]\n      ) {\n          lucid.selectWallet.fromSeed(signerSeed);\n          const partialSigner = await lucid\n              .fromTx(cboredTx)\n              .partialSign\n              .withWallet();\n          partialSignatures.push(partialSigner);\n      }\n\n      const assembleTx = signTxUnsigned.assemble(partialSignatures);\n      const completeSign = await assembleTx.complete();\n      const signTxHash = await completeSign.submit();\n\n      console.log(`Submitting ...`);\n      await lucid.awaitTx(signTxHash);\n\n      console.log(`Multisig Contract Signed Successfully: ${signTxHash}`);\n  } catch (error) {\n      console.error(\"Failed to Sign multisig:\", error);\n  }\n```\n\n### Update Multisig Contract\nAll new signers must sign when updating the signer number.\n(*Adjust threshold, signers, or spending limits.*)\n\n```ts\nimport {\n  validateUpdate,\n  UpdateValidateConfig\n} from \"@anastasia-labs/aiken-multisig-offchain\";\n\n// Example: adjusting threshold to 3-of-3\nconst updateConfig: UpdateValidateConfig = {\n  new_signers_addr: [initiatorAddress, signer1Address, signer2Address],\n  new_threshold: 3n,\n  fund_policy_id: \"\",\n  fund_asset_name: \"\",\n  new_spending_limit: 15_000_000n,\n};\n\n// Validate and prepare the update transaction\ntry {\n      const updateTxUnsigned = await validateUpdate(lucid, updateConfig);\n\n      const cboredTx = updateTxUnsigned.toCBOR();\n      const partialSignatures: string[] = [];\n\n      for (\n          const signerSeed of [\n              INITIATOR_SEED,\n              SIGNER_ONE_SEED,\n              SIGNER_TWO_SEED,\n              SIGNER_THREE_SEED,\n          ]\n      ) {\n          lucid.selectWallet.fromSeed(signerSeed);\n          const partialSigner = await lucid\n              .fromTx(cboredTx)\n              .partialSign\n              .withWallet();\n          partialSignatures.push(partialSigner);\n      }\n\n      const assembleTx = updateTxUnsigned.assemble(partialSignatures);\n      const completeSign = await assembleTx.complete();\n      const updateTxHash = await completeSign.submit();\n\n      console.log(`Submitting ...`);\n      await lucid.awaitTx(updateTxHash);\n\n      console.log(`Multisig Contract Updated Successfully: ${updateTxHash}`);\n  } catch (error) {\n      console.error(\"Failed to Update multisig:\", error);\n  }\n  \n```\n\n#### Add or Remove Signers\n#### Adding a New Signer:\n\n```ts\n// Add a new signer\nconst signer3Pkh = getAddressDetails(signer3Address).paymentCredential?.hash!;\n\n// Update the signers list and threshold\nconst addSignerConfig: UpdateValidateConfig = {\n  new_signers_addr: [initiatorAddress, signer1Address, signer2Address, signer3Address], // New Signer\n  new_threshold: 3n,\n  fund_policy_id: \"\",\n  fund_asset_name: \"\",\n  new_spending_limit: 20_000_000n,\n};\n\n// Proceed with validation and signing as shown in the update example\n\n```\n\n#### Removing a Signer:\n\n```ts\n// Remove a signer (e.g., signer2)\nconst updatedSigners = [initiatorAddress, signer1Address];\n\n// Update the signers list and threshold\nconst removeSignerConfig: UpdateValidateConfig = {\n  new_signers_addr: updatedSigners,\n  new_threshold: 2n, // Adjusted threshold\n  fund_policy_id: \"\",\n  fund_asset_name: \"\",\n  new_spending_limit: 10_000_000n,\n};\n\n// Proceed with validation and signing as shown in the update example\n\n```\n\n#### End the Multisig Contract\n\n```ts\nimport { endMultiSig, EndSigConfig } from \"@anastasia-labs/aiken-multisig-offchain\";\n\n// Configure the multisig parameters\nconst signConfig: EndSigConfig = {\n  signers_addr: [initiator.address, signer1.address, signer2.address, signer3.address],\n  threshold: 3n,\n  fund_policy_id: \"\",\n  fund_asset_name: \"\",\n  spending_limit: 10_000_000n,\n  recipient_address: recipient.address,\n};\n\ntry{\n  // Initiate the multisig contract\n  const endMultisigUnsigned = await endMultiSig(lucid, signConfig,);\n\n  try {\n    const endTxUnsigned = await endMultiSig(lucid, endConfig);\n\n    const cboredTx = endTxUnsigned.toCBOR();\n    const partialSignatures: string[] = [];\n\n    for (\n        const signerSeed of [\n            INITIATOR_SEED,\n            SIGNER_ONE_SEED,\n            SIGNER_TWO_SEED,\n            SIGNER_THREE_SEED,\n        ]\n    ) {\n        lucid.selectWallet.fromSeed(signerSeed);\n        const partialSigner = await lucid\n            .fromTx(cboredTx)\n            .partialSign\n            .withWallet();\n        partialSignatures.push(partialSigner);\n    }\n\n    const assembleTx = endTxUnsigned.assemble(partialSignatures);\n    const completeSign = await assembleTx.complete();\n    const endTxHash = await completeSign.submit();\n\n    console.log(`Submitting ...`);\n    await lucid.awaitTx(endTxHash);\n\n    console.log(`Multisig Contract Ended Successfully: ${endTxHash}`);\n} catch (error) {\n    console.error(\"Failed to End multisig:\", error);\n}\n\n```\n\n## Local Build\n\nIn the main directory\n\n```\npnpm run build\n```\n\n## Test framework\n\nhttps://github.com/vitest-dev/vitest\n\n## Running Tests\n\n```sh\npnpm test\n```\n\n![aiken-multisig-offchain](/assets/gifs/aiken-multisig-offchain.gif)\n\nTest Results:\n\n![aiken-multisig-tests](/assets/images/multisif-tests.png)\n\n\n","readmeFilename":"README.md"}