{"_id":"@bobanetwork/aa-hc-sdk-server","_rev":"8-11d6e41bbcee52fe0713c2676ced4685","name":"@bobanetwork/aa-hc-sdk-server","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"@bobanetwork/aa-hc-sdk-server","version":"1.0.0","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@1.0.0","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"b9848aaed32b5c525c6589798a126a3ea1a2f5db","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-1.0.0.tgz","fileCount":8,"integrity":"sha512-wD5m4+lfpzGdeXlaOAi30EMTLl84W5q3TjBD81onglYGgZfBCBkH4yAoYpXcAhJ2R/9VYcLhbR1i/WL8Z5LP2A==","signatures":[{"sig":"MEYCIQDtEc6RzyV5KpPHzczB/sp44h2dY5TSoYZUCOcri3DGRAIhALVdzIwsyJioeZICkitBRm7zbOGhLmL01AGcMXjytSXG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14279},"main":"dist/index.js","type":"commonjs","_from":"file:bobanetwork-aa-hc-sdk-server-1.0.0.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"boba.network","email":"chaininfra@boba.foundation"},"_resolved":"C:\\Users\\kevin\\AppData\\Local\\Temp\\243669a6d6bc9a02be5713a2599b4a91\\bobanetwork-aa-hc-sdk-server-1.0.0.tgz","_integrity":"sha512-wD5m4+lfpzGdeXlaOAi30EMTLl84W5q3TjBD81onglYGgZfBCBkH4yAoYpXcAhJ2R/9VYcLhbR1i/WL8Z5LP2A==","repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"Hybrid Compute SDK for the backend.","directories":{},"_nodeVersion":"20.17.0","dependencies":{"web3":"^4.13.0","express":"^4.21.0","body-parser":"^1.20.3","json-rpc-2.0":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_1.0.0_1727279714807_0.25467876236673037","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@bobanetwork/aa-hc-sdk-server","version":"1.0.1","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@1.0.1","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"c56a9b74c972822b2ee761d9b49256217a1f8214","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-1.0.1.tgz","fileCount":8,"integrity":"sha512-o6RxpsbdXKEC+J5XkXuh/4WIchTnxmZssKNJskfebJth2l8ykE1hD/hbsWkNlMeKz9NVnNTA3bLqJRgNQv6g2A==","signatures":[{"sig":"MEUCIQDimgWuZ6rjPrg2dXw6akUI81H+7S81Md1SMuciJKOh2gIgPPU1n1+k1TRbQl9abtSEkyjxH1Cc8jtSZjG4kaGqbaQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14312},"main":"dist/index.js","type":"commonjs","_from":"file:bobanetwork-aa-hc-sdk-server-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"boba.network","email":"chaininfra@boba.foundation"},"_resolved":"C:\\Users\\kevin\\AppData\\Local\\Temp\\5772b3e6e6c49b7171855394f0d26736\\bobanetwork-aa-hc-sdk-server-1.0.1.tgz","_integrity":"sha512-o6RxpsbdXKEC+J5XkXuh/4WIchTnxmZssKNJskfebJth2l8ykE1hD/hbsWkNlMeKz9NVnNTA3bLqJRgNQv6g2A==","repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"Hybrid Compute SDK for the backend.","directories":{},"_nodeVersion":"20.17.0","dependencies":{"web3":"^4.13.0","dotenv":"^16.4.5","express":"^4.21.0","body-parser":"^1.20.3","json-rpc-2.0":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_1.0.1_1727280769522_0.1330684602355614","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@bobanetwork/aa-hc-sdk-server","version":"1.0.2","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@1.0.2","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"16a155bc2060ddcce03a4cc9d69fd2546ce2dbbf","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-1.0.2.tgz","fileCount":8,"integrity":"sha512-U7EhKiMPd1c+Np1RPnDWU/hoGWigKDN6MbFXDyhP1hkZZ1fOaZEldXVWCOejXvDe2dHvWghvrDp2iLUHw0QIVw==","signatures":[{"sig":"MEUCIQCbVzU6wFWMHC+OMT/6I8fxYaYzNOHW8+bPrB2dGWcAOgIgSTyHrjU8H57go2AstCeulFqVG99SJe99m4HhFbbk85A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17171},"jest":{"roots":["<rootDir>/src","<rootDir>/tests"],"preset":"ts-jest","testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"transform":{"^.+\\.tsx?$":"ts-jest"},"collectCoverage":true,"testEnvironment":"node","coverageDirectory":"coverage","coverageReporters":["json-summary","text","lcov"],"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"cbec37fa8b395206576f33b5245e08c6771db22c","scripts":{"test":"jest","build":"tsc","test:badges":"npm run test:coverage  && jest-coverage-badges","test:coverage":"npm test -- --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"boba.network","actor":{"name":"boba.network","type":"user","email":"chaininfra@boba.foundation"},"email":"chaininfra@boba.foundation"},"repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"9.8.1","description":"Hybrid Compute SDK for the backend.","directories":{},"_nodeVersion":"18.18.2","dependencies":{"web3":"^4.13.0","dotenv":"^16.4.5","express":"^4.21.0","supertest":"^7.1.1","body-parser":"^1.20.3","json-rpc-2.0":"^1.7.0","jest-coverage-badges":"^1.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","axios":"^1.7.7","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_1.0.2_1750848420717_0.07621413578156089","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bobanetwork/aa-hc-sdk-server","version":"1.0.3","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@1.0.3","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"160a2afc61de2321abb1bd00baaf6bc6949d0025","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-1.0.3.tgz","fileCount":8,"integrity":"sha512-Z+/VxyJyWhwJ7j13nB6cBE+KhqcKzL0ZnKLiVkjmAUhg/0/XINC16cIzZFkefqEEu5zIfJQkt/0cMIk1b+AgmQ==","signatures":[{"sig":"MEQCIHvPsEbJkxdNNSr70D6qhHRQ+m6iJKisj9zhSgxMgtSMAiAT+Lcee8MGN5uFnGKoXD5vXO0qYXP+Lj6XGq6Md0dVjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22084},"jest":{"roots":["<rootDir>/src","<rootDir>/tests"],"preset":"ts-jest","testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"transform":{"^.+\\.tsx?$":"ts-jest"},"collectCoverage":true,"testEnvironment":"node","coverageDirectory":"coverage","coverageReporters":["json-summary","text","lcov"],"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"dist/index.js","type":"commonjs","_from":"file:bobanetwork-aa-hc-sdk-server-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc","test:badges":"npm run test:coverage  && jest-coverage-badges","test:coverage":"npm test -- --coverage"},"_npmUser":{"name":"boba.network","actor":{"name":"boba.network","type":"user","email":"chaininfra@boba.foundation"},"email":"chaininfra@boba.foundation"},"_resolved":"/private/var/folders/h2/7110sh0n1p73b6j4vc9c4xhr0000gn/T/89de0635a1ca3d646d029a222cfbdf6d/bobanetwork-aa-hc-sdk-server-1.0.3.tgz","_integrity":"sha512-Z+/VxyJyWhwJ7j13nB6cBE+KhqcKzL0ZnKLiVkjmAUhg/0/XINC16cIzZFkefqEEu5zIfJQkt/0cMIk1b+AgmQ==","repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"9.8.1","description":"Hybrid Compute SDK for the backend.","directories":{},"_nodeVersion":"18.18.2","dependencies":{"web3":"^4.13.0","dotenv":"^16.4.5","express":"^4.21.0","supertest":"^7.1.1","body-parser":"^1.20.3","json-rpc-2.0":"^1.7.0","jest-coverage-badges":"^1.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","axios":"^1.7.7","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^29.5.13","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_1.0.3_1752165614156_0.7033012342687663","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bobanetwork/aa-hc-sdk-server","version":"1.0.4","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@1.0.4","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"565230feeb11a0e15992229466aa311194f4ba4f","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-1.0.4.tgz","fileCount":10,"integrity":"sha512-GpGhmgIU7d0Dc4x76TMN8RFOQRaB/iEf4rjuCdqjv0qORSLokFtIpuORdbHjpBro32gmqFdldd15M8J8YRZ00Q==","signatures":[{"sig":"MEYCIQDvzyUs3EvZ5u+AdcLnmHwwCylPtUnr/PqztPdir15b5AIhAI4iuQO++EQB6i2o/SGKGXQnpiVfMDsOe7PP4SiKuHR3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38763},"jest":{"roots":["<rootDir>/src","<rootDir>/tests"],"preset":"ts-jest","testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"transform":{"^.+\\.tsx?$":"ts-jest"},"collectCoverage":true,"testEnvironment":"node","coverageDirectory":"coverage","coverageReporters":["json-summary","text","lcov"],"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a0672a300453aea812de69087013a79d07f6de44","scripts":{"test":"jest","build":"tsc","test:badges":"npm run test:coverage  && jest-coverage-badges","test:coverage":"npm test -- --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"boba.network","email":"chaininfra@boba.foundation"},"repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"9.8.1","description":"Hybrid Compute SDK for the backend.","directories":{},"_nodeVersion":"18.18.2","dependencies":{"web3":"^4.13.0","dotenv":"^16.4.5","express":"^4.21.0","supertest":"^7.1.1","body-parser":"^1.20.3","@types/mocha":"^10.0.10","json-rpc-2.0":"^1.7.0","jest-coverage-badges":"^1.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","axios":"^1.7.7","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^30.0.0","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_1.0.4_1754577911591_0.1452419522349231","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@bobanetwork/aa-hc-sdk-server","version":"2.0.0","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@2.0.0","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"8adf8f791ddb85c2c2c60d802101a53fedfefa26","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-2.0.0.tgz","fileCount":16,"integrity":"sha512-5UDIldvCsz2WKp9clwOKsQbQKMCaTnTP7CBeR2P1uCR+sFG4X4FI1s7mwdOoL8yD7Cb5ao0LCzhv8/KUg5ZVrQ==","signatures":[{"sig":"MEUCIGr/zi80SjeURfL8gtPeBqgBydFOhz+zoWXQiI9RQMdFAiEAs/1lc4mx8eK36a4BbQmlKwPVec8IULEL4z1CWBBNCUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49474},"jest":{"roots":["<rootDir>/src","<rootDir>/tests"],"preset":"ts-jest","testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"transform":{"^.+\\.tsx?$":"ts-jest"},"collectCoverage":true,"testEnvironment":"node","coverageDirectory":"coverage","coverageReporters":["json-summary","text","lcov"],"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"dist/index.js","type":"commonjs","_from":"file:bobanetwork-aa-hc-sdk-server-2.0.0.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc","test:badges":"npm run test:coverage  && jest-coverage-badges","test:coverage":"npm test -- --coverage"},"_npmUser":{"name":"boba.network","email":"chaininfra@boba.foundation"},"_resolved":"/private/var/folders/h2/7110sh0n1p73b6j4vc9c4xhr0000gn/T/7da81b431c5f292479e6fefcca7ff28c/bobanetwork-aa-hc-sdk-server-2.0.0.tgz","_integrity":"sha512-5UDIldvCsz2WKp9clwOKsQbQKMCaTnTP7CBeR2P1uCR+sFG4X4FI1s7mwdOoL8yD7Cb5ao0LCzhv8/KUg5ZVrQ==","repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"9.8.1","description":"Hybrid Compute SDK for the backend","directories":{},"_nodeVersion":"18.18.2","dependencies":{"viem":"^2.33.3","dotenv":"^16.4.5","express":"^4.21.0","prettier":"^3.6.2","supertest":"^7.1.1","body-parser":"^1.20.3","@types/mocha":"^10.0.10","json-rpc-2.0":"^1.7.0","jest-coverage-badges":"^1.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","axios":"^1.7.7","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^30.0.0","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_2.0.0_1755090125923_0.2264135215568106","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@bobanetwork/aa-hc-sdk-server","version":"2.0.1","keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"license":"ISC","_id":"@bobanetwork/aa-hc-sdk-server@2.0.1","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"dist":{"shasum":"dab8ba70d7eabe623915a793202655379ff00e64","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-2.0.1.tgz","fileCount":12,"integrity":"sha512-3kIKJf8m+1Dj1Wh0KV1P31MlHDgGC5n+JPRqxxHC/+rNH5L1BoenYOl61x/FYQJ4UtDpatnuB/tZnAt9ln0p7Q==","signatures":[{"sig":"MEYCIQCl5QuZnvQ5QED4ZH/3M2ZrY1uTzQlCnAnbI+Xg0X3t9AIhAMCJgtseW2ocqk41mt6VgWEt1k3JcHxAJqM4QRtPl5xt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44745},"jest":{"roots":["<rootDir>/src","<rootDir>/tests"],"preset":"ts-jest","testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"transform":{"^.+\\.tsx?$":"ts-jest"},"collectCoverage":true,"testEnvironment":"node","coverageDirectory":"coverage","coverageReporters":["json-summary","text","lcov"],"moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"main":"dist/src/index.js","type":"commonjs","types":"dist/src/index.d.ts","gitHead":"afcccd87ad8bf753e247657a10026bfda400980e","scripts":{"test":"jest","build":"tsc","test:badges":"npm run test:coverage  && jest-coverage-badges","test:coverage":"npm test -- --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"boba.network","email":"chaininfra@boba.foundation"},"repository":{"url":"git+https://github.com/bobanetwork/aa-hc-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"Hybrid Compute SDK for the backend","directories":{},"_nodeVersion":"22.12.0","dependencies":{"viem":"^2.33.3","dotenv":"^16.4.5","express":"^4.21.0","prettier":"^3.6.2","supertest":"^7.1.1","body-parser":"^1.20.3","@types/mocha":"^10.0.10","json-rpc-2.0":"^1.7.0","jest-coverage-badges":"^1.1.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b","devDependencies":{"jest":"^29.7.0","axios":"^1.7.7","ts-jest":"^29.2.5","typescript":"^5.6.2","@types/jest":"^30.0.0","@types/node":"^22.7.0","@types/express":"^4.17.21","@types/body-parser":"^1.19.5"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aa-hc-sdk-server_2.0.1_1762337164464_0.0989876890118544","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@bobanetwork/aa-hc-sdk-server","version":"2.1.0","description":"Hybrid Compute SDK for the backend","main":"dist/src/index.js","types":"dist/src/index.d.ts","type":"commonjs","scripts":{"build":"tsc","test":"jest","prepublishOnly":"npm run build","test:unit":"jest tests/unit","test:integration":"jest tests/integration","test:coverage":"npm test -- --coverage","test:badges":"npm run test:coverage  && jest-coverage-badges"},"keywords":["hybrid","compute","sdk"],"author":{"name":"Boba Network"},"repository":{"type":"git","url":"git+https://github.com/bobanetwork/aa-hc-sdk.git"},"license":"ISC","dependencies":{"@types/mocha":"^10.0.10","body-parser":"^1.20.3","dotenv":"^16.4.5","express":"^4.21.0","jest-coverage-badges":"^1.1.2","json-rpc-2.0":"^1.7.0","prettier":"^3.6.2","supertest":"^7.1.1","viem":"^2.33.3"},"devDependencies":{"@types/body-parser":"^1.19.5","@types/express":"^4.17.21","@types/jest":"^30.0.0","@types/node":"^22.7.0","@types/supertest":"^6.0.3","axios":"^1.7.7","jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.6.2"},"peerDependencies":{"typescript":"^5.0.0"},"jest":{"preset":"ts-jest","testEnvironment":"node","roots":["<rootDir>/src","<rootDir>/tests"],"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json","node"],"collectCoverage":true,"coverageDirectory":"coverage","coverageReporters":["json-summary","text","lcov"]},"packageManager":"pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b","gitHead":"42c1d03c55ad29606917c04f2a46e67b508081f1","_id":"@bobanetwork/aa-hc-sdk-server@2.1.0","bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","_nodeVersion":"22.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-yNuwAK9X5iL/lIMe8WtE9zAbjQV970t/LRAhsOGZPeqxbsaADlZLGpTeGybCm181gRzRBpLFnuOK5vQ659LU0A==","shasum":"381a65ba4b083639ce08932cf85601523375ac74","tarball":"https://registry.npmjs.org/@bobanetwork/aa-hc-sdk-server/-/aa-hc-sdk-server-2.1.0.tgz","fileCount":14,"unpackedSize":47470,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHjay98zXmpD9mZUOe8XUm1A2SjQ45NRgeRTbcY2fy0iAiB3eGJOlB2lux890V5YCiofFJo0I3lN0gxvzLpZcFE4FQ=="}]},"_npmUser":{"name":"boba.network","email":"chaininfra@boba.foundation"},"directories":{},"maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aa-hc-sdk-server_2.1.0_1767620426460_0.8593011866699825"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-25T15:55:14.710Z","modified":"2026-01-05T13:40:26.804Z","1.0.0":"2024-09-25T15:55:15.019Z","1.0.1":"2024-09-25T16:12:49.772Z","1.0.2":"2025-06-25T10:47:00.913Z","1.0.3":"2025-07-10T16:40:14.318Z","1.0.4":"2025-08-07T14:45:11.816Z","2.0.0":"2025-08-13T13:02:06.115Z","2.0.1":"2025-11-05T10:06:04.628Z","2.1.0":"2026-01-05T13:40:26.600Z"},"bugs":{"url":"https://github.com/bobanetwork/aa-hc-sdk/issues"},"author":{"name":"Boba Network"},"license":"ISC","homepage":"https://github.com/bobanetwork/aa-hc-sdk#readme","keywords":["hybrid","compute","sdk"],"repository":{"type":"git","url":"git+https://github.com/bobanetwork/aa-hc-sdk.git"},"description":"Hybrid Compute SDK for the backend","maintainers":[{"name":"boba.network","email":"chaininfra@boba.foundation"}],"readme":"# Hybrid Compute Server SDK\n\nThe **Hybrid Compute Server SDK** provides:\n\n- Server-side JSON-RPC server utilities for **Hybrid Compute** actions.\n- Full **ERC-4337 v0.7 and v0.6** User Operation Management.\n- Utility functions for off-chain request parsing and signed responses.\n- **Built with VIEM** - Modern, lightweight, and TypeScript-first blockchain library.\n\n\n### 📦 Installation\n\n```bash\nnpm install @bobanetwork/aa-hc-sdk-server\n```\n\n\n### Quick Start\n\n### 1. Create a Hybrid Compute JSON-RPC Server\n\n```typescript\nimport { action } from \"./server-actions/custom-server-action\";\nimport { HybridComputeSDK } from \"@bobanetwork/aa-hc-sdk-server\";\n\nconst hybridCompute = new HybridComputeSDK()\n  .createJsonRpcServerInstance()\n  .addServerAction(\"getprice(string)\", action)\n  .listenAt(1234);\n\nconsole.log(`Server started: ${hybridCompute.isServerHealthy()}`);\n```\n\n---\n\n### 2. Create a Server Action\n\n```typescript\nimport { getParsedRequest, generateResponseV7 } from \"./utils\";\nimport { encodeAbiParameters, parseAbiParameters, decodeAbiParameters, stringToHex } from \"viem\";\nimport axios from \"axios\";\n\nexport async function action(params: OffchainParameter) {\n  const request = getParsedRequest(params);\n\n  try {\n    const [tokenSymbol] = decodeAbiParameters(\n      parseAbiParameters(\"string\"),\n      request.reqBytes as `0x${string}`\n    );\n\n    const headers = {\n      accept: \"application/json\",\n      \"x-access-token\": process.env.COINRANKING_API_KEY,\n    };\n\n    const { data: { data: { coins } } } = await axios.get(\n      \"https://api.coinranking.com/v2/coins\",\n      { headers }\n    );\n\n    const token = coins.find((c: any) => c.symbol === tokenSymbol);\n    if (!token) throw new Error(`Token ${tokenSymbol} not found`);\n\n    const { data: { data: { price } } } = await axios.get(\n      `https://api.coinranking.com/v2/coin/${token.uuid}/price`,\n      { headers }\n    );\n\n    const encodedPrice = encodeAbiParameters(\n      parseAbiParameters(\"string\"),\n      [price]\n    );\n\n    return await generateResponseV7(request, 0, encodedPrice);\n  } catch (error: any) {\n    return await generateResponseV7(request, 1, stringToHex(error.message));\n  }\n}\n```\n\n### User Operation Management\n\n### Create a Smart Account\n\n```typescript\nimport { UserOpManager } from \"@bobanetwork/aa-hc-sdk-server\";\n\nconst userOpManager = new UserOpManager({\n  nodeUrl: \"https://sepolia.boba.network\",\n  bundlerUrl: \"https://bundler-hc.sepolia.boba.network/rpc\",\n  entryPoint: \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\n  chainId: 28882,\n  privateKey: 'your-private-key'\n});\n\n// Create a new smart account\nconst result = await userOpManager.createSmartAccount({\n  salt: 123\n});\n\nconsole.log(\"Smart Account Address:\", result.address);\n```\n\n### Build, Estimate & Send a custom UserOperation\n\n```typescript\nimport { encodeAbiParameters, parseAbiParameters } from \"viem\";\n\nconst encodedToken = encodeAbiParameters(\n  parseAbiParameters(\"string\"),\n  [\"ETH\"]\n);\n\nconst calldata =\n  userOpManager.selector(\"fetchPrice(string)\") + encodedToken.slice(2);\n\nconst op = await userOpManager.buildOp(\n  \"0xYourSmartAccount\",\n  \"0xTargetContract\",\n  0,\n  calldata\n);\n\nconst { success, op: estimated } = await userOpManager.estimateOp(op);\nif (!success) throw new Error(\"Gas estimation failed\");\n\nconst receipt = await userOpManager.signSubmitOp(estimated);\nconsole.log(\"Operation hash:\", receipt.userOpHash);\n```\n\n---\n\n### Get Smart Account Info (e.g. Owner)\n\n```typescript\nconst expectedAddr = await userOpManager.getExpectedAddress({ salt: 123 });\nconsole.log(\"Deterministic address:\", expectedAddr);\n\nconst owner = await userOpManager.getOwner(\"0x...\");\nconsole.log(\"Owner:\", owner);\n```\n\n---\n\n## 📚 API Reference\n\n### HybridComputeSDK\n\n| Method | Description |\n|--------|-------------|\n| `createJsonRpcServerInstance()` | Create JSON-RPC server instance |\n| `addServerAction(selectorName, handler)` | Register a server RPC method |\n| `listenAt(port)` | Start server |\n| `isServerHealthy()` | Check if server is running |\n| `getApp()` | Get Express app |\n| `getServer()` | Get JSONRPCServer instance |\n\n---\n\n### UserOpManager\n\n| Method | Description |\n|--------|-------------|\n| `selector(signature)` | Get function selector |\n| `buildOp(sender, target, value, calldata, nonceKey?)` | Build a UserOperation |\n| `estimateOp(userOp)` | Estimate gas usage |\n| `signSubmitOp(userOp)` | Sign + submit UserOp |\n| `createSmartAccount(params)` | Deploy a smart account |\n| `createSmartContract(sender, privKey, bytecode, salt?)` | Deploy a contract |\n| `getExpectedAddress({ salt })` | Compute deterministic account address |\n| `getOwner(contractAddress)` | Get account owner |\n| `getEntrypoint()` / `getRpc()` / `isV7Entrypoint()` | Config getters |\n\n---\n\n### Utils\n\n| Function | Description |\n|----------|-------------|\n| `selector(name)` | Function selector |\n| `getParsedRequest(params)` | Parse incoming OffchainParameter |\n| `generateResponseV6(req, errCode, payload)` | Sign response for Entrypoint v0.6 |\n| `await generateResponseV7(req, errCode, payload)` | **[ASYNC]** Sign response for Entrypoint v0.7 |\n\n## 🌍 Environment Variables\n\n```env\n# Valid v6 or v7 HC Helper Address\nHC_HELPER_ADDR=0x...\n\n# Valid v6 or v7 Entrypoint (only one EP is required)\nENTRY_POINTS=0x...\n\n# Your custom Hybrid Account \nOC_HYBRID_ACCOUNT=0x...\n\n# The Chain Id to operate on\nCHAIN_ID=28882\n\n# The owner of your Hybrid Account\nOC_PRIVKEY=your-offchain-key\n\n# UserOp Manager - Used to interact with custom User Operations\nCLIENT_PRIVATE_KEY=your-key\n```\n\n---\n\n## 🐛 Troubleshooting\n\nThis guide answers a couple of issues one might encounter.\n\n### Common Issues\n\n**\"replacement underpriced\" error:**\n```typescript\n// Solution 1: Use random nonce key\nconst randomNonceKey = Math.floor(Math.random() * 1000);\nconst op = await userOpManager.buildOp(sender, target, 0, calldata, randomNonceKey);\n\n// Solution 2: Wait 10-15 minutes between tests on same account\n```\n\n**Get a list of supported Entrypoints from the current bundler** \n```\ncurl -X POST -H \"Content-Type: application/json\" --data '{\n    \"jsonrpc\":\"2.0\",\n    \"method\":\"eth_supportedEntryPoints\",\n    \"id\":1\n}' https://bundler-hc.sepolia.boba.network\n```\n\n**Check if given address is deployed/contract**\n```\ncurl -X POST -H \"Content-Type: application/json\" --data '{\n    \"jsonrpc\":\"2.0\",\n    \"method\":\"eth_getCode\",\n    \"params\":[\"0xf683c1fdc7254c138dd71a9d36bef65d9ebfc4c7\", \"latest\"],\n    \"id\":1\n}' https://sepolia.boba.network\n```\n\n**Should load block to get hash and number**\n```\nThere is an issue with the RPC and you need to switch it.\n```\n\n**UserOp Failed precheck should get payer balance**\n```\nThere is an issue with the RPC and you need to switch it.\n```\n\n**Invalid user operation for entry point: 0x0000000071727de22e5e9d8baf0edac6f37da032**\n```\nIn case you migrated from version 0.6 to 0.7, this issue might occur. Check the tests or the latest implementation for 0.7. Version 0.7 does some things differently, especially how gas values are packed.\n```\n\n**HC03: Bad offchain signature**\n```\nIn general, this happens if there is a mismatch between the signer and the owner of a given account.\n\nSeveral possible ways:\n\n1. Using the Snap Library: If you create your User Operation with the Snap Library on the Frontend (e.g. PriceFeed example), the signer (your EOA) must be the owner of the HYBRID_ACCOUNT that you have created during the initial setup. You can check the owner of your Hybrid Account either via the SDK or via the above CURL call. The Hybrid Account is the \"sender\" of the UOP in this case and must be signed by the private key that leads to its owner.\n\n2. Sending a custom User Operation with the SDK: The \"sender\" adress in the custom user operation must be a smart account.\n\n3. Sending a custom User Operation with the SDK: The owner of the \"sender\" key in the custom UOP must be signable by the private key that you've supplied. If the signature generated does not match the owner from the sender key, the operation is rejected.\n```\n\n**\"callGasLimit is 0\" error:**\n```\n- Gas estimation failed due to rate limiting\n- The SDK automatically uses fallback gas values\n- Check your bundler endpoint is accessible\n```\n\n**\"Invalid params\" error:**\n```\n- Ensure you're using the correct EntryPoint address for v0.7: `0x000000007...0edAc6f37da032`\n- Verify your UserOperation has proper v0.7 format with `accountGasLimits` field\n- Signature might be plain\n```\n\n## 📄 License\n\nISC\n","readmeFilename":"Readme.md"}