{"_id":"@actalink/erc20-paymaster","_rev":"14-688d81db2169cad04de709e0a978af52","name":"@actalink/erc20-paymaster","dist-tags":{"next":"0.0.2-alpha.13","latest":"0.0.2-alpha.14"},"versions":{"0.0.2-alpha.2":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.2","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":"","license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.2","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"aaea544e8120a977230a7a0c7aa4f9aaebff78f4","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.2.tgz","fileCount":28,"integrity":"sha512-Y1irYyyj4OYRGSWDkRXL2p5uOSmX8cx9iSNHQX+4JOtbyyk0dwDdu595SQcpmkG96OMxfpDAG6w6JyVS6lNzSQ==","signatures":[{"sig":"MEYCIQCy9fdZkSwvGm+TPHiK57648sb4chbhKNL3LqKKuNAsbAIhAJGnS8ehX8ZgAcRNq1f9nl34WEs0Tc47hHsocKSfTMSS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148083},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"d6dca5fc0df26210560d4839d6ae7259ca752a6c","private":false,"scripts":{"dev":"ts-node-dev --respawn index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","winston":"^3.9.0","supertest":"^7.1.0","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","@types/supertest":"^6.0.2","@actalink/modules":"0.1.4-alpha.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.2_1745563683240_0.8897371457711147","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.3":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.3","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":"","license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.3","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"3f22581959b0d7afe15c68cb570d09486e1d9515","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.3.tgz","fileCount":43,"integrity":"sha512-Xom6S48BxYDm6X+3mVJfj6J3ruXUjoOEXVrk0fVNUsRdfngieQYcqr8YumsdSWKNio3A14zhjsIX/T6kyqTNMQ==","signatures":[{"sig":"MEUCIBnLA4Zr5aIveNVAUNcBTGUWvnEyHe8rWrL8bSvoH2FSAiEA43/4Vbf8Zk84wkH7C8csuAKG5zx1GUMJy8Q+ugMuTek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109749},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"70c24a5fa26ffad2682cb6dd91d5863f87120d1a","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","winston":"^3.9.0","supertest":"^7.1.0","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","@types/supertest":"^6.0.2","@actalink/modules":"0.1.4-alpha.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.3_1745574625891_0.9509392092182383","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.4":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.4","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.4","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"cae19036cbadf5ad637c274a2fd8d6507bbda4d4","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.4.tgz","fileCount":43,"integrity":"sha512-jKwOyzisp1ETxyJ5uCaY5NHt6JxKeeGb2aWGBIpHMiLJkcUo5bJemurUyPxOg4p0fHGAeg+rJi36QCV60AGf/Q==","signatures":[{"sig":"MEQCIBzjaIU8qrtevAmGyKsigXxYFgybfUxxjou6gKzXhhd7AiBcZ67bQYYkZtM9BfI0M8BOr5pBbF0aENNxo383qmeacA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110146},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"9cde7d3314b61851b17ca194d4665e85b69bd603","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"dotenv":"^16.3.1","express":"^4.18.2","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","@actalink/modules":"0.1.4-alpha.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","morgan":"^1.10.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.4_1745575457725_0.021625907710908","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.5":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.5","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.5","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"b493bbbf7a1baf888d1bb89e188969fe7a75bb2b","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.5.tgz","fileCount":43,"integrity":"sha512-pp4AwW8iSddURsk5X9CjQ97sDvVjl2r9uKnzw1emnIyQrWstdSYMmJ32TvsGJQg/WZpxnAxzT5feQfbyhvELbA==","signatures":[{"sig":"MEYCIQDsvamZwOd5NNPNczHs4BC/zp0vhowkDN/yE1LWMud34AIhALrYMP4RecHORL4+O++qdWYO6gMpsl53cRg8E3zdiI9c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110147},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"11a69046eb57eb5bbd8135bc9ef202881e689640","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"dotenv":"^16.3.1","express":"^4.18.2","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","morgan":"^1.10.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.5_1745576674744_0.4122845817037064","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.6":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.6","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.6","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"7ca82d016529055c802ee1d9d264d2924b6a56b5","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.6.tgz","fileCount":43,"integrity":"sha512-fZG3/LMOwr6XHROJYLLl0iaB4JLoQVfDI6N6kgVwcUwH0hjcrMVYolYQHC61UJQwm3n5z2efyaieNVyBOqBTBA==","signatures":[{"sig":"MEQCIB/y8p7hcB0QXaRfP3oF3LzBPClg766a1UZZzDHNAfneAiAOE6dYMLAsK3GXC6Qi3Ai0OcNjNWV0J5bJubOvcMHVxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110149},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"a1c51b1e1ec7834eb1ed4e0e10501fb0a3353ad4","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"dotenv":"^16.3.1","express":"^4.18.2","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","morgan":"^1.10.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.6_1745580643439_0.4394098568214855","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.7":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.7","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.7","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"56c05a138895e24c93c0367fe48a46201ba683ed","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.7.tgz","fileCount":43,"integrity":"sha512-/2MxFcLZs7mDwxBuhMbBIzb3XQth99V7TqOTJFWJT7g1Qh2G08OU+jMLzbA3BIYjIc4TW9rfNgTQeiUWsXFLYg==","signatures":[{"sig":"MEQCIF8SY7M2kLW1/AHom/+6hs2YeRXlLZG6sIuUBPAY/+AvAiALLhCuvIB06AXbfNfa3UjU0fNnqB5UjBTLxSPkGN1X6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109004},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"366fdbd0f3c2ccfcc8ee535f339eaaeb897fe9fc","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.7_1745581359747_0.5789775488415592","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.8":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.8","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.8","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"b50bae471e381ddccce86a3238e6a566dc4bf651","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.8.tgz","fileCount":43,"integrity":"sha512-PotwnXJ3P/HZTtN12FlnvcVBmOjaYckLQzYHD8LZNpoYV8gy2if5lRFA1eAELNJGQWg1LZ7HUL0YNaosV9qNaQ==","signatures":[{"sig":"MEQCIB0aN1VI6v6jLe2ZGAIt9UJCPEJbWyRvq4Olm+PwgDVeAiAC6jJh2wSMI3EILTHA0n0BUeAlKYG1z1z3jLPHy8oMIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109061},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"be0e760ec603110dab8573193f5deb98610d3237","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.8_1745581986042_0.5423034207901822","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.9":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.9","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.9","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"ce6280b306cfcd37c96d1e2626a30f2cef4de1e1","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.9.tgz","fileCount":43,"integrity":"sha512-OFq4PXnLs4SRUdW+yiKHZjMTl3hra7x9tv2lIGj21XoMb1Uy1MDr0f7ksT+VvxlgiEWvHuA6CTRo9a2U91IRQA==","signatures":[{"sig":"MEYCIQD+AQJEsW7uq8xRl3wLSY4bveAw/NNLLFcsJ1qPoC+r3gIhANUAdgs3hyzUUR5T2PTKsFR3G1cBnKhuL9hiiT80LxyM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109088},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"9af04767cb2bcbcdb15ececef06bec403c3d98d2","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","node-cron":"^3.0.3","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.9_1745582473758_0.9738579652682395","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.10":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.10","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.10","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"2cfd4304feeda6567ace68103eb9dc1cd3d765eb","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.10.tgz","fileCount":45,"integrity":"sha512-WFszqCIilVICdxlk9SlV9uSsr35ov8mRrx8+v5p7wpCo6I7zR62DXeVQk5KrmAyae92ZrFcq0MLQyavw3R7VgA==","signatures":[{"sig":"MEUCIHJpYYNJDuqJJvDMinXRomGq8d1lZJbo39vmHGE1Yd+2AiEA4+up/+tykgIMcEXE0OGC0Vm/XEwuD+Y904RUzrJux0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116556},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"c9a50f609bc6025bb5f24d62b9f6741583a0abdd","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","node-cron":"^3.0.3","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.10_1745954330870_0.6143976736349006","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.11":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.11","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.11","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"4ca8510e3909f7f39dcf60d514e70b2971657b5d","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.11.tgz","fileCount":45,"integrity":"sha512-/yFPQWWti2f7ilyZ93JoyPxLr0BzDMDo9mFhQqakpChsvgDzfR4qZXZcePnrxKerR2KDJBywehGv3lBRVQ0UAQ==","signatures":[{"sig":"MEQCIBjW1L7nRM7/AvQt65ocRSxS3sivhyBmcY/vRzXtMgFVAiBOS6SdFAfCY6ykHctnTmV7gubaMCFKlHfLGqy6TmcbTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116556},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"b758905b56a2d335e7779eb26470d827cd77a619","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","node-cron":"^3.0.3","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.11_1745955790123_0.7647654175105418","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.12":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.12","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.12","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"bb6cfcb3be260a8426d0a31bfffa3fcc99f26b84","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.12.tgz","fileCount":45,"integrity":"sha512-FxS/gCY69cW9IGAuYzuZ/oQzl6lquNnx9Htm7KHJRhdfOokEZIIOIMlQjw17krPoUiaV1Y/5J1E1hyRuHw1UOw==","signatures":[{"sig":"MEUCIQCeWhbY1zReexcERIN0wCUgQE9LRBeYA8Lrx++lS4Fh9wIgSLf3LzDx5DNxBTYM5T9lprXE+Y48lbsqm5CuTMbTRv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116372},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"e3f03e6db2ca38f82ec7e674a8d561b9fb2f5485","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","node-cron":"^3.0.3","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.12_1745956151178_0.5639778904233186","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.13":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.13","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.13","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"da9ef8fb13df1e8b3d3f82e271f527e2f9915fd5","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.13.tgz","fileCount":45,"integrity":"sha512-cxcMSuIGKdweNic8h/UZXJnP4ZInjWcR2Fb0+kvOqXD7BABOGB5w0LRFJbblmKNdlBSGYDSt1t4SNsH68kS7Cw==","signatures":[{"sig":"MEUCIQDay7I5uUlhRWLZ9xnh7stYMoem+euyqJl2NmjOy6CToAIgLBd3llAqpuICJ2M75u2IBzdV5IGvhj146GnrJlLQ7oU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116688},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"19e306fa907907773c2106d5d59f5c1cfdaf941b","private":false,"scripts":{"dev":"ts-node-dev --respawn src/index.ts","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","morgan":"^1.10.0","express":"^4.18.2","node-cron":"^3.0.3","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.2","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","typescript":"^5.0.4","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/supertest":"^6.0.3","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.13_1745996897188_0.7019090177666663","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-alpha.14":{"name":"@actalink/erc20-paymaster","version":"0.0.2-alpha.14","keywords":["ethereum","account-abstraction","paymaster","erc20"],"author":{"name":"0mkar"},"license":"MIT","_id":"@actalink/erc20-paymaster@0.0.2-alpha.14","maintainers":[{"name":"aniket6990","email":"aniketsingh6990@gmail.com"},{"name":"0mkar","email":"0mkar@protonmail.com"}],"dist":{"shasum":"140ac68a91ccff8eefa5659c428dad1f9410b3bf","tarball":"https://registry.npmjs.org/@actalink/erc20-paymaster/-/erc20-paymaster-0.0.2-alpha.14.tgz","fileCount":43,"integrity":"sha512-KGsuoL87r2RvCvPqGvfwyATMN5PVELbVXx7sNWcHrJOdVwImdulC/uSxGdNC+eZpcVfcama5qlLhk00m5L1n3w==","signatures":[{"sig":"MEUCIGrypeVGfGsSBC1nSiQiMeBtwcUG+y5L4+rBYcw5GNXGAiEAxz/I30iUwDpBrO+k2Mn3QZl3IfWzQSDJEf2Q/j5MSEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115553},"main":"build/index.js","type":"module","types":"build/index.d.ts","gitHead":"efb4c079872655e7ba268597ca2a86a988505266","private":false,"scripts":{"dev":"","docs":"typedoc --out docs index.ts","lint":"eslint . --ext .ts","test":"NODE_OPTIONS=--experimental-vm-modules jest","audit":"npm audit","build":"tsc","start":"node build/index.js","lint:fix":"eslint . --ext .ts --fix","docker:run":"docker run -p 4000:4000 acta-erc20-paymaster","docs:serve":"http-server docs","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","docker:build":"docker build -t acta-erc20-paymaster .","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage"},"_npmUser":{"name":"0mkar","email":"0mkar@protonmail.com"},"_npmVersion":"lerna/7.4.2/node@v23.11.0+arm64 (darwin)","description":"ERC20 Paymaster service for Acta Account Abstraction","directories":{},"_nodeVersion":"23.11.0","dependencies":{"siwe":"^3.0.0","dotenv":"^16.3.1","ethers":"^6.13.7","morgan":"^1.10.0","express":"^4.18.2","node-cron":"^3.0.3","typescript":"^5.8.3","body-parser":"^1.20.2","@actalink/sdk":"^0.1.5-alpha.3","better-sqlite3":"^11.9.1","@actalink/modules":"^0.1.5-alpha.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","jsdom":"^26.0.0","eslint":"^8.39.0","solhint":"^3.4.1","ts-jest":"^29.1.2","ts-node":"^10.9.1","typedoc":"^0.24.8","supertest":"^7.1.0","@types/jest":"^29.5.12","@types/node":"^18.16.0","http-server":"^14.1.1","ts-node-dev":"^2.0.0","@types/morgan":"^1.9.4","@types/express":"^4.17.17","@types/node-cron":"^3.0.11","@types/supertest":"^6.0.3","@types/better-sqlite3":"^7.6.13","typedoc-plugin-markdown":"^3.15.3","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/erc20-paymaster_0.0.2-alpha.14_1746173542874_0.8314211965766849","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-04-25T06:48:03.179Z","modified":"2026-03-30T07:26:39.679Z","0.0.2-alpha.2":"2025-04-25T06:48:03.417Z","0.0.2-alpha.3":"2025-04-25T09:50:26.090Z","0.0.2-alpha.4":"2025-04-25T10:04:17.915Z","0.0.2-alpha.5":"2025-04-25T10:24:34.946Z","0.0.2-alpha.6":"2025-04-25T11:30:43.623Z","0.0.2-alpha.7":"2025-04-25T11:42:39.941Z","0.0.2-alpha.8":"2025-04-25T11:53:06.235Z","0.0.2-alpha.9":"2025-04-25T12:01:13.948Z","0.0.2-alpha.10":"2025-04-29T19:18:51.090Z","0.0.2-alpha.11":"2025-04-29T19:43:10.299Z","0.0.2-alpha.12":"2025-04-29T19:49:11.361Z","0.0.2-alpha.13":"2025-04-30T07:08:17.388Z","0.0.2-alpha.14":"2025-05-02T08:12:23.112Z"},"author":{"name":"0mkar"},"license":"MIT","keywords":["ethereum","account-abstraction","paymaster","erc20"],"description":"ERC20 Paymaster service for Acta Account Abstraction","maintainers":[{"email":"aniketsingh6990@gmail.com","name":"aniket6990"}],"readme":"# Actalink ERC20 Paymaster\n\nA service for sponsoring ERC20 token payments, and scheduling token transfers using Actalink Account Abstraction infrastructure.\n\n## Overview\n\nThe `@actalink/erc20-paymaster` enables smart contract wallets to pay gas fees using ERC20 tokens instead of native ETH. This package provides a paymaster service that can be integrated with Account Abstraction infrastructure to allow for a more flexible user experience.\n\n## Architecture\n\nThe ERC20 Paymaster implements a modular service architecture for handling token-based gas fee payments:\n\n![PaymasterService Architecture](https://github.com/user-attachments/assets/a222fb0a-7e59-4a97-97d6-e32a9e0451dc)\n\n### Key Components\n\n- **PaymasterService**: The core class that orchestrates all components and manages the paymaster lifecycle.\n  - Creates and configures the Express application server\n  - Sets up authentication (SIWE based E2E Auth) and API routes\n  - Spawns and manages background worker threads\n  - Provides access to stored user operations to extension developers\n\n  #### PaymasterService Architecture\n  \n  The PaymasterService follows microservice architecture to better manage the complexity of the system. The service is divided into several components, each responsible for a specific task:\n\n- **Express Application**: Handles HTTP requests and provides API endpoints for:\n  - Sponsor User Operations\n  - User operation scheduling\n  - User operation cancellation\n  - User operation listing\n  - User operation status checking\n  - Nonce key retrieval\n\n- **API Routes**: Endpoints for client interaction, mounted at `/api/*`.\n\n- **Worker Thread**: Background process for:\n  - Monitoring pending user operations\n  - Processing and submitting transactions to the blockchain\n  - Managing transaction status updates\n\n- **SQLite Database**: Persistent storage designed to run within microservices for:\n  - Storing signed user operations and their current status\n  - Transaction history and status updates\n\n### Service Lifecycle\n\n1. **Initialize**: Constructs the service with configuration options\n2. **Setup Middleware & Routes**: Configures Express with middleware and API routes\n3. **Start HTTP Server**: Begins listening for client requests\n4. **Create Worker**: Spawns background worker for transaction processing (if enabled)\n\n## Authentication Flow\n\nThe ERC20 Paymaster service uses Sign-In with Ethereum (SIWE) for authentication. This provides a secure, web3-native way to authenticate users using their Ethereum wallets.\n\n![SIWE Authentication Flow](https://github.com/user-attachments/assets/837c2392-e44f-49c1-958c-4be422ce0c31)\n\n### Authentication Process\n\n1. **Request Challenge**\n   - Client sends a POST request to `/api/challenge-siwe` with their wallet address\n   - PaymasterService generates a unique SIWE message as challenge\n   - Message includes service details, nonce, and timestamp\n\n2. **Message Signing**\n   - Client receives SIWE message\n   - Wallet signs the message using private key\n   - Returns signature to client\n\n3. **Authentication**\n   - Client makes authenticated requests by including:\n     - Base64 encoded SIWE message in `x-siwe-message` header\n     - Signature in `x-siwe-signature` header\n   - PaymasterService verifies signature matches wallet address\n   - If valid, grants access to protected resources\n\n### Usage Example\n\n```typescript\n// 1. Get SIWE challenge\nconst challengeResponse = await fetch('/api/challenge-siwe', {\n  method: 'POST',\n  body: JSON.stringify({ walletAddress: account.address })\n});\nconst { message } = await challengeResponse.json();\n\n// 2. Sign message with wallet\nconst signature = await wallet.signMessage(message);\n\n// 3. Make authenticated request\nconst response = await fetch('/api/protected-endpoint', {\n  headers: {\n    'x-siwe-message': Buffer.from(message).toString('base64'),\n    'x-siwe-signature': signature\n  }\n});\n```\n\n## Installation\n\n```bash\nnpm install @actalink/erc20-paymaster\n```\n\n## Quick Start\n\n```typescript\nimport { ERC20PaymasterService } from '@actalink/erc20-paymaster';\n\n// Initialize the paymaster\nconst service = new PaymasterService({\n  // Configuration options\n  port: 4000,                    // Port to run the service on\n  enableLuciaAuth: false,        // Enable Lucia authentication\n  enableSIWEe2eAuth: true,       // Enable Sign-In with Ethereum authentication\n  enableWorker: true,            // Enable background worker for transaction processing\n  bodyLimit: \"1024kb\",           // Request body size limit\n  logFormat: \"dev\",              // Morgan logging format\n  onUserOpSuccess: (userOp: UserOperationAndProps) => {\n    const { userOpHash, transactionHash } = userOp;\n    console.log(`UserOperation ${userOpHash} succeeded with transaction ${transactionHash}`);\n    // Add custom logic here (e.g., update database, notify user)\n  }\n});\n\n// Start the service\nawait service.start();\n```\n\n## API Documentation\n\nThe service exposes the following REST API endpoints:\n\n### ERC20 Paymaster Endpoints\n\n#### POST /api/scheduleops\nSchedules user operations for future execution. This endpoint allows you to schedule one or more user operations to be executed at a specific time.\n\n**Request Body:**\n```json\n[\n  {\n    \"userOp\": {\n      // UserOperation object (RpcUserOperation<'0.7'>)\n      \"sender\": \"0x...\",\n      \"nonce\": \"0x...\",\n      // ... other UserOperation fields\n    },\n    \"userOpHash\": \"0x...\",\n    \"entryPoint\": \"0x...\",\n    \"executionTime\": 1234567890000, // Unix timestamp in milliseconds\n    \"signerAddress\": \"0x...\"\n  }\n  // ... more operations\n]\n```\n\n**Validation:**\n- Execution time must be at least 2 minutes in the future\n- Valid merkle signature in the UserOperation\n- Valid entry point address\n\n**Response:**\n- Success (200): `\"N UserOperations scheduled successfully!\"` where N is the number of operations scheduled\n- Error (404): Error message with details\n\n**Notes:**\n- Operations are stored with initial status \"pending\"\n- A background worker processes pending operations near their execution time\n- Operations can be cancelled using the `/cancelops` endpoint before execution\n- No authentication required for this endpoint\n\n#### POST /api/challenge-siwe\nGenerates a Sign-In with Ethereum (SIWE) challenge message for authentication.\n\n**Request Body:**\n```json\n{\n  \"walletAddress\": \"0x...\" // The wallet address to authenticate\n}\n```\n\n**Response:**\n```json\n{\n  \"message\": \"service.acta.link wants you to sign in with your Ethereum account:\\n0x...\\n\\nI accept the ServiceOrg Terms of Service: https://service.org/tos\\n\\nURI: https://service.org/login\\nVersion: 1\\nChain ID: 1\\nNonce: ...\\nIssued At: ...\"\n}\n```\n\n**Status Codes:**\n- 200: Challenge message generated successfully\n- 400: Invalid wallet address\n- 500: Server error\n\n**Usage:**\n1. Call this endpoint to get a SIWE challenge message\n2. Sign the message using the user's wallet\n3. Use the signed message and signature in subsequent authenticated requests\n\n#### POST /api/sign/v2\nSponsors a user operation with ERC20 token payment.\n\n**Request Body:**\n```json\n{\n  \"method\": \"pm_sponsorUserOperation\",\n  \"params\": [\n    userOperation,      // UserOperation object\n    entryPointAddress, // Entry point contract address\n    {\n      \"type\": \"sponsor\" // Sponsorship type\n    }\n  ]\n}\n```\n\n**Response:**\n```json\n{\n  \"result\": {\n    ...userOperation,\n    \"paymasterData\": \"0x...\",  // Signed paymaster data\n    \"paymasterVerificationGasLimit\": \"0x...\",\n    \"paymasterPostOpGasLimit\": \"0x...\"\n  }\n}\n```\n\n#### POST /api/cancelops\nCancels pending user operations for an authenticated user. Requires SIWE (Sign-In with Ethereum) authentication.\n\n**Headers:**\n```\nx-siwe-message: <base64 encoded SIWE message>\nx-siwe-signature: <signature>\n```\n\n**Response:**\n```json\n[\n  \"0x...\",  // Array of cancelled userOpHashes\n  \"0x...\"\n]\n```\n\n**Authentication:**\nThis endpoint requires SIWE authentication. To authenticate:\n1. Get a SIWE challenge message using `/api/challenge-siwe`\n2. Sign the message with your wallet\n3. Include the base64 encoded message and signature in the request headers\n\n**Status Codes:**\n- 200: Successfully cancelled operations\n- 403: Invalid authentication or signature\n- 500: Server error\n\n#### POST /api/listops\nLists all scheduled user operations for a given smart wallet address.\n\n**Request Body:**\n```json\n{\n  \"validators\": [\"0x...\"], // Array of validator addresses\n  \"salt\": \"0x...\"         // Salt for smart wallet address calculation\n}\n```\n\n**Response:**\n```json\n[\n  {\n    \"userOpHash\": \"0x...\",\n    \"signerAddress\": \"0x...\",\n    \"userOp\": {\n      // UserOperation object\n    },\n    \"entryPoint\": \"0x...\",\n    \"executionTime\": 1234567890000,\n    \"status\": \"pending\",\n    \"transactionHash\": \"\"\n  }\n  // ... more operations\n]\n```\n\n**Authentication:**\nRequires user authentication. The endpoint verifies that the authenticated user owns the smart wallet.\n\n**Status Codes:**\n- 200: Successfully retrieved operations\n- 403: Invalid user or address\n- 500: Server error\n\n#### GET /api/listPendingOps\nLists all pending user operations for a given smart wallet address.\n\n**Request Body:**\n```json\n{\n  \"validators\": [\"0x...\"], // Array of validator addresses\n  \"salt\": \"0x...\"         // Salt for smart wallet address calculation\n}\n```\n\n**Response:**\n```json\n[\n  {\n    \"userOpHash\": \"0x...\",\n    \"signerAddress\": \"0x...\",\n    \"userOp\": {\n      // UserOperation object\n    },\n    \"entryPoint\": \"0x...\",\n    \"executionTime\": 1234567890000,\n    \"status\": \"pending\",\n    \"transactionHash\": \"\"\n  }\n  // ... more operations\n]\n```\n\n**Notes:**\n- Only returns operations with \"pending\" status\n- Useful for monitoring operations that haven't been executed yet\n- Can be used in conjunction with `/cancelops` to manage pending operations\n\n#### POST /api/getPendingNonceKeys\nRetrieves a list of unique nonce keys from pending user operations for a given smart wallet address. This is useful for checking which nonce slots are currently in use by pending operations.\n\n**Request Body:**\n```json\n{\n  \"validators\": [\"0x...\"], // Array of validator addresses\n  \"salt\": \"0x...\"         // Salt for smart wallet address calculation\n}\n```\n\n**Response:**\n```json\n[\n  \"0x1234...\", // Array of unique nonce keys (first 42 characters of the nonce)\n  \"0x5678...\"\n]\n```\n\n**Notes:**\n- Only considers operations with \"pending\" status\n- Nonce keys are extracted from the first 42 characters of each operation's nonce\n- Duplicates are automatically filtered out\n- Useful for nonce management and preventing nonce conflicts\n\n### Service Management\n\nThe PaymasterService class provides the following methods:\n\n- `start()`: Starts the HTTP server and worker thread (if enabled)\n- `stop()`: Stops the service and terminates the worker thread\n- `getApp()`: Returns the Express application instance for custom configuration\n\nFor detailed API documentation including TypeScript types and interfaces, run:\n\n```bash\nnpm run docs\n```\n\nThen open `docs/index.html` in your browser.\n\n## Configuration\n\nThe PaymasterService accepts the following configuration options:\n\n| Option | Type | Description | Default |\n|--------|------|-------------|---------|\n| `port` | `number` | Port number for the HTTP server | 4000 |\n| `enableSIWEe2eAuth` | `boolean` | Enable Sign-In with Ethereum authentication | true |\n| `enableWorker` | `boolean` | Enable background worker for transaction processing | true |\n| `workerPath` | `string` | Path to worker thread script | \"build/workers/scheduler.js\" |\n| `bodyLimit` | `string` | Request body size limit | \"1024kb\" |\n| `logFormat` | `string` | Morgan logging format | \"dev\" |\n| `onUserOpSuccess` | `(userOp: UserOperationAndProps) => void` | Optional callback function executed by the background worker when a scheduled UserOperation is successfully mined on-chain. The function receives a single argument of type `UserOperationAndProps`, which includes the original `userOp` object, `userOpHash`, the final `transactionHash`, the updated `status`, and other details. | `undefined` |\n| `app` | `express.Application` | Provide an existing Express application instance | `express()` |\n\n### Environment Variables\n\nThe service requires the following environment variables:\n\n```bash\nPAYMASTER_PORT=4000           # Service port (optional, defaults to 4000)\nPVT_KEY=                      # Private key for the paymaster account\nPROVIDER=                     # RPC provider URL\nCHAIN_ID=                    # Chain ID for the network (e.g. 137 for Polygon)\n```\n\n### Supported Networks\n\nThe paymaster service currently supports the following networks:\n\n- Ethereum Mainnet (Chain ID: 1)\n- Polygon (Chain ID: 137)\n- Linea (Chain ID: 59144)\n- Hedera (Chain ID: 295)\n\n## Examples\n\nSee the [examples directory](./examples) for integration examples.\n\n## Advanced Usage\n\n### Extending the API\n\nThe underlying Express router used by the service is also exported as `paymasterRouter`. You can use this to add custom routes or middleware to the service instance:\n\n```typescript\nimport { PaymasterService, paymasterRouter } from '@actalink/erc20-paymaster';\nimport express from 'express';\n\nconst service = new PaymasterService();\nconst app = service.getApp(); // Get the Express app instance\n\n// Add custom middleware\napp.use('/api', (req, res, next) => {\n  console.log('Custom middleware for API routes');\n  next();\n});\n\n// Add a custom route\napp.get('/custom-status', (req, res) => {\n  res.json({ custom: 'status OK' });\n});\n\n// You can also add routes directly to the exported router\npaymasterRouter.get('/custom-paymaster-route', (req, res) => {\n  res.json({ message: 'Custom route within paymaster router' });\n});\n\nawait service.start();\n```\n\n### Exported Utility Functions\n\nThe package also exports several utility functions that might be useful for advanced integrations or direct database interaction. Use these with caution as they might expose internal implementation details.\n\n*   **`getSignerFromMerkleSignature(root: Hex, proof: Hex[], leaf: Hex): Address`**\n    *   Recovers the signer address from a Merkle signature, root, proof, and leaf.\n    *   Useful for verifying Merkle-based signatures off-chain.\n\n*   **`getScheduledUserOpsByHash(hashes: string[]): UserOperationAndProps[]`**\n    *   Retrieves scheduled user operations from the database based on their userOpHashes.\n\n*   **`getScheduledUserOps(address: Address): UserOperationAndProps[]`**\n    *   Retrieves all scheduled user operations associated with a specific smart wallet address.\n\n*   **`removeUserOpByHash(hash: string): void`**\n    *   Removes a specific user operation from the scheduling database using its userOpHash.\n    *   Note: This directly modifies the database state.\n\n*   **`getInsertQuery(): Database.Statement`**\n    *   Returns the prepared SQLite statement used for inserting new scheduled user operations.\n    *   Provides direct access to the database insertion mechanism.\n\n## License\n\nMIT","readmeFilename":"README.md"}