@aastar/sdk 0.14.3 → 0.16.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/.eslintrc.cjs +30 -0
  2. package/README.md +148 -19
  3. package/abis/BLSAggregator.json +13 -13
  4. package/abis/BLSValidator.json +13 -0
  5. package/abis/DVTValidator.json +13 -0
  6. package/abis/GToken.json +57 -26
  7. package/abis/GTokenStaking.json +13 -39
  8. package/abis/MySBT.json +0 -39
  9. package/abis/Paymaster.json +0 -13
  10. package/abis/PaymasterFactory.json +26 -39
  11. package/abis/PaymasterV4_2.json +68 -58
  12. package/abis/Registry.json +57 -16
  13. package/abis/ReputationSystem.json +182 -0
  14. package/abis/SuperPaymaster.json +169 -0
  15. package/abis/aPNTs.json +13 -26
  16. package/abis/xPNTsFactory.json +13 -26
  17. package/abis/xPNTsToken.json +13 -26
  18. package/config.anvil.json +1 -0
  19. package/config.sepolia.json +1 -0
  20. package/config.test.json +27 -0
  21. package/docs/ABI_Change_Tracking_Workflow.md +41 -0
  22. package/docs/ABI_MAINTENANCE_PLAN.md +132 -0
  23. package/docs/API_REFERENCE.md +169 -9
  24. package/docs/Configuration_Sync.md +47 -0
  25. package/docs/DEMO_REFACTOR_PLAN.md +289 -0
  26. package/docs/ENV_SEPOLIA_UPDATE.md +68 -0
  27. package/docs/Faucet_Gasless_Plan.md +56 -0
  28. package/docs/L2_BUSINESS_CLIENTS_PLAN.md +394 -0
  29. package/docs/L4_Manual_Test_CheatSheet.md +215 -0
  30. package/docs/SDK_ABI_COVERAGE.md +839 -0
  31. package/docs/SDK_COVERAGE_STRATEGY.md +397 -0
  32. package/docs/SDK_REGRESSION_AND_API_PLAN.md +98 -0
  33. package/docs/SDK_STAGE3_PLAN.md +151 -0
  34. package/docs/STAGE3.md +191 -0
  35. package/docs/TESTER_GUIDE_GASLESS.md +663 -0
  36. package/docs/Verifier_L4_Gasless_Plan.md +454 -0
  37. package/docs/api/@aastar/account.md +235 -0
  38. package/docs/api/@aastar/analytics.md +219 -0
  39. package/docs/api/@aastar/core.md +26830 -0
  40. package/docs/api/@aastar/dapp.md +130 -0
  41. package/docs/api/@aastar/identity.md +482 -0
  42. package/docs/api/@aastar/paymaster.md +1387 -0
  43. package/docs/api/@aastar/sdk/README.md +155 -0
  44. package/docs/api/@aastar/sdk/node.md +4044 -0
  45. package/docs/api/@aastar/tokens.md +1971 -0
  46. package/docs/api/README.md +8 -4
  47. package/docs/changelog.md +99 -0
  48. package/docs/examples/README.md +18 -0
  49. package/docs/guide/concepts/account-abstraction.md +95 -0
  50. package/docs/guide/concepts/rainbow-bridge.md +68 -0
  51. package/docs/guide/concepts/reputation.md +95 -0
  52. package/docs/guide/concepts/superpaymaster.md +141 -0
  53. package/docs/guide/use-cases/community-management.md +141 -0
  54. package/docs/guide/use-cases/gasless-transactions.md +71 -0
  55. package/docs/guide/use-cases/operator-staking.md +84 -0
  56. package/docs/guide/use-cases/yop.md +72 -0
  57. package/docs/refactor/2026-01-13-221242-trae-refactor.md +224 -0
  58. package/docs/refactor/2026-01-13-audit-analysis.md +96 -0
  59. package/docs/refactor/2026-01-13-audit-report-v0.16.2.md +76 -0
  60. package/docs/refactor/2026-01-13-audit-report-v0.17.0.md +74 -0
  61. package/docs/refactor/2026-01-13-cursor-refactor.md +511 -0
  62. package/docs/refactor/2026-01-13-refactor-plan.md +88 -0
  63. package/docs/refactor/2026-01-13-refactor-response-plan.md +77 -0
  64. package/docs/refactor/2026-01-13-refactor-review.md +39 -0
  65. package/docs/refactor/2026-01-13-sdk-enhancement-plan.md +120 -0
  66. package/docs/refactor/2026-01-14-audit-response.md +242 -0
  67. package/docs/refactor/2026-01-14-audit-summary.md +133 -0
  68. package/docs/refactor/cursor-2026-01-13-14-00-audit-report.md +267 -0
  69. package/env.template +32 -0
  70. package/examples/l1-api-demo.ts +184 -0
  71. package/examples/l2-clients-demo.ts +138 -0
  72. package/examples/l3-user-onboarding.ts +74 -0
  73. package/examples/prepare-gasless.ts +89 -0
  74. package/examples/simple-gasless-demo.ts +80 -0
  75. package/examples/simple-superpaymaster-demo.ts +96 -0
  76. package/l4-setup.sh +11 -0
  77. package/package.json +12 -8
  78. package/packages/account/package.json +6 -3
  79. package/packages/account/src/accounts/simple.test.ts +93 -0
  80. package/packages/account/src/eoa.test.ts +37 -0
  81. package/packages/account/src/eoa.ts +4 -2
  82. package/packages/account/src/index.test.ts +34 -0
  83. package/packages/account/tsconfig.json +0 -1
  84. package/packages/analytics/package.json +12 -5
  85. package/packages/analytics/tsconfig.json +0 -5
  86. package/packages/core/package.json +16 -6
  87. package/packages/core/scripts/audit-abi-coverage.ts +165 -0
  88. package/packages/core/scripts/debug-regex.ts +36 -0
  89. package/packages/core/src/abis/.abi-hashes.json +26 -0
  90. package/packages/core/src/abis/BLSAggregator.json +686 -572
  91. package/packages/core/src/abis/BLSValidator.json +42 -26
  92. package/packages/core/src/abis/DVTValidator.json +368 -370
  93. package/packages/core/src/abis/EntryPoint.json +1382 -1379
  94. package/packages/core/src/abis/GToken.json +513 -523
  95. package/packages/core/src/abis/GTokenStaking.json +949 -931
  96. package/packages/core/src/abis/MySBT.json +1518 -1586
  97. package/packages/core/src/abis/Paymaster.json +1143 -1205
  98. package/packages/core/src/abis/PaymasterFactory.json +640 -650
  99. package/packages/core/src/abis/Registry.json +1942 -1636
  100. package/packages/core/src/abis/ReputationSystem.json +699 -477
  101. package/packages/core/src/abis/SimpleAccount.json +560 -625
  102. package/packages/core/src/abis/SimpleAccountFactory.json +111 -108
  103. package/packages/core/src/abis/SuperPaymaster.json +1781 -1399
  104. package/packages/core/src/abis/abi.config.json +24 -0
  105. package/packages/core/src/abis/index.ts +74 -38
  106. package/packages/core/src/abis/xPNTsFactory.json +718 -728
  107. package/packages/core/src/abis/xPNTsToken.json +1280 -1173
  108. package/packages/core/src/actions/StateValidator.test.ts +175 -0
  109. package/packages/{sdk/src/utils/validation.ts → core/src/actions/StateValidator.ts} +22 -125
  110. package/packages/core/src/actions/account.test.ts +155 -0
  111. package/packages/core/src/actions/account.ts +179 -0
  112. package/packages/core/src/actions/aggregator.test.ts +88 -0
  113. package/packages/core/src/actions/dvt.test.ts +124 -0
  114. package/packages/core/src/actions/entryPoint.test.ts +176 -0
  115. package/packages/core/src/actions/entryPoint.ts +266 -0
  116. package/packages/core/src/actions/factory.test.ts +250 -0
  117. package/packages/core/src/actions/factory.ts +586 -14
  118. package/packages/core/src/actions/faucet.test.ts +202 -0
  119. package/packages/core/src/actions/faucet.ts +421 -0
  120. package/packages/core/src/actions/gtokenExtended.test.ts +162 -0
  121. package/packages/core/src/actions/gtokenExtended.ts +153 -0
  122. package/packages/core/src/actions/index.ts +8 -0
  123. package/packages/core/src/actions/paymasterV4.test.ts +209 -0
  124. package/packages/core/src/actions/paymasterV4.ts +330 -138
  125. package/packages/core/src/actions/registry.test.ts +443 -0
  126. package/packages/core/src/actions/registry.ts +768 -28
  127. package/packages/core/src/actions/reputation.test.ts +225 -0
  128. package/packages/core/src/actions/reputation.ts +351 -0
  129. package/packages/core/src/actions/sbt.test.ts +322 -0
  130. package/packages/core/src/actions/sbt.ts +614 -30
  131. package/packages/core/src/actions/staking.test.ts +273 -0
  132. package/packages/core/src/actions/staking.ts +350 -8
  133. package/packages/core/src/actions/superPaymaster.test.ts +356 -0
  134. package/packages/core/src/actions/superPaymaster.ts +746 -35
  135. package/packages/core/src/actions/tokens.test.ts +60 -0
  136. package/packages/core/src/actions/tokens.ts +482 -20
  137. package/packages/core/src/actions/validators.test.ts +239 -0
  138. package/packages/core/src/actions/validators.ts +590 -0
  139. package/packages/core/src/clients/BaseClient.ts +78 -0
  140. package/packages/core/src/clients/types.ts +69 -0
  141. package/packages/core/src/clients.ts +1 -1
  142. package/packages/core/src/communities.ts +2 -2
  143. package/packages/core/src/config/ContractConfigManager.ts +63 -0
  144. package/packages/core/src/constants.ts +64 -0
  145. package/packages/core/src/contract-addresses.ts +42 -18
  146. package/packages/core/src/contracts.test.ts +58 -0
  147. package/packages/core/src/contracts.ts +2 -2
  148. package/packages/core/src/index.ts +4 -1
  149. package/packages/core/src/requirementChecker.test.ts +71 -0
  150. package/packages/core/src/requirementChecker.ts +1 -39
  151. package/packages/core/src/roles.test.ts +34 -0
  152. package/packages/core/src/roles.ts +61 -50
  153. package/packages/core/src/utils/validation.test.ts +50 -0
  154. package/packages/core/src/utils/validation.ts +66 -0
  155. package/packages/core/tsconfig.json +2 -2
  156. package/packages/core/vitest.config.ts +14 -0
  157. package/packages/dapp/package.json +6 -3
  158. package/packages/dapp/src/ui/hooks/useCreditScore.ts +1 -1
  159. package/packages/dapp/tsconfig.json +0 -1
  160. package/packages/identity/package.json +6 -3
  161. package/packages/identity/src/index.ts +49 -17
  162. package/packages/identity/tsconfig.json +0 -1
  163. package/packages/paymaster/package.json +6 -3
  164. package/packages/paymaster/src/SuperPaymaster/index.ts +2 -2
  165. package/packages/paymaster/src/V4/PaymasterClient.test.ts +114 -0
  166. package/packages/paymaster/src/V4/PaymasterClient.ts +385 -0
  167. package/packages/paymaster/src/V4/PaymasterOperator.test.ts +80 -0
  168. package/packages/paymaster/src/V4/PaymasterOperator.ts +282 -0
  169. package/packages/paymaster/src/V4/PaymasterUtils.test.ts +54 -0
  170. package/packages/paymaster/src/V4/PaymasterUtils.ts +185 -0
  171. package/packages/paymaster/src/V4/SuperPaymasterClient.test.ts +79 -0
  172. package/packages/paymaster/src/V4/SuperPaymasterClient.ts +123 -0
  173. package/packages/paymaster/src/V4/index.ts +4 -123
  174. package/packages/paymaster/tsconfig.json +0 -1
  175. package/packages/sdk/aastar/tsconfig.json +0 -1
  176. package/packages/sdk/coverage_output.txt +393 -0
  177. package/packages/sdk/coverage_output_final.txt +739 -0
  178. package/packages/sdk/coverage_output_final_v2.txt +722 -0
  179. package/packages/sdk/coverage_output_final_v3.txt +722 -0
  180. package/packages/sdk/package.json +14 -2
  181. package/packages/sdk/src/clients/ExperimentClient.test.ts +65 -0
  182. package/packages/sdk/src/clients/ExperimentClient.ts +80 -0
  183. package/packages/sdk/src/clients/admin.test.ts +98 -0
  184. package/packages/sdk/src/clients/admin.ts +108 -8
  185. package/packages/sdk/src/clients/clients.test.ts +104 -0
  186. package/packages/sdk/src/clients/community.test.ts +118 -0
  187. package/packages/sdk/src/clients/community.ts +175 -241
  188. package/packages/sdk/src/clients/endUser.test.ts +221 -0
  189. package/packages/sdk/src/clients/endUser.ts +430 -52
  190. package/packages/sdk/src/clients/operator.test.ts +162 -0
  191. package/packages/sdk/src/clients/operator.ts +168 -90
  192. package/packages/sdk/src/errors/AAStarError.test.ts +92 -0
  193. package/packages/sdk/src/errors/AAStarError.ts +70 -0
  194. package/packages/sdk/src/errors/decoder.test.ts +107 -0
  195. package/packages/sdk/src/errors/decoder.ts +84 -41
  196. package/packages/sdk/src/index.ts +11 -8
  197. package/packages/sdk/src/node/index.ts +8 -0
  198. package/packages/sdk/src/types/result.ts +29 -0
  199. package/packages/sdk/src/utils/errorHandler.test.ts +102 -0
  200. package/packages/sdk/src/utils/eventDecoder.test.ts +56 -0
  201. package/packages/sdk/src/utils/eventDecoder.ts +66 -0
  202. package/packages/sdk/src/utils/funding.test.ts +117 -0
  203. package/packages/sdk/src/utils/keys.test.ts +105 -0
  204. package/packages/sdk/src/utils/keys.ts +15 -0
  205. package/packages/sdk/src/utils/roleData.test.ts +85 -0
  206. package/packages/sdk/src/utils/roleData.ts +15 -26
  207. package/packages/sdk/src/utils/testScenarios.test.ts +79 -0
  208. package/packages/sdk/src/utils/testScenarios.ts +128 -0
  209. package/packages/sdk/src/utils/userOp.test.ts +190 -0
  210. package/packages/sdk/src/utils/userOp.ts +265 -0
  211. package/packages/sdk/tests/scenarios/01_onboard_community.ts +62 -0
  212. package/packages/sdk/tests/scenarios/02_onboard_operator.ts +109 -0
  213. package/packages/sdk/tests/scenarios/03_onboard_user.ts +53 -0
  214. package/packages/sdk/tests/scenarios/04_gasless_tx_flow.ts +68 -0
  215. package/packages/sdk/tests/scenarios/check_entrypoint.ts +19 -0
  216. package/packages/sdk/tests/scenarios/check_initialization.ts +65 -0
  217. package/packages/sdk/tests/scenarios/debug_addresses.ts +26 -0
  218. package/packages/sdk/tests/scenarios/diagnose_scenario4.ts +55 -0
  219. package/packages/sdk/tests/scenarios/setup.ts +33 -0
  220. package/packages/sdk/tests/scenarios/test_entrypoint_nonce.ts +46 -0
  221. package/packages/sdk/tsconfig.json +0 -1
  222. package/packages/tokens/package.json +6 -3
  223. package/packages/tokens/src/index.ts +92 -64
  224. package/packages/tokens/tsconfig.json +0 -1
  225. package/run_l4_gasless_regression.sh +79 -0
  226. package/run_sdk_regression.sh +200 -175
  227. package/scripts/00_utils.ts +1 -1
  228. package/scripts/01_prepare_all.ts +149 -198
  229. package/scripts/02_test_eoa.ts +27 -24
  230. package/scripts/03_test_standard_aa.ts +48 -153
  231. package/scripts/04_test_paymaster_v4.ts +41 -198
  232. package/scripts/05_test_superpaymaster.ts +40 -362
  233. package/scripts/09_local_test_community_lifecycle.ts +4 -3
  234. package/scripts/11_test_core_flows_full.ts +75 -197
  235. package/scripts/15_test_bls_full.ts +25 -2
  236. package/scripts/15_test_dvt_bls_full.ts +11 -4
  237. package/scripts/18_test_lifecycle_completion.ts +2 -2
  238. package/scripts/19_sdk_experiment_runner.ts +41 -16
  239. package/scripts/20_sdk_full_capability.ts +75 -77
  240. package/scripts/99_bug_hunting_fast.ts +55 -172
  241. package/scripts/analyze_abi_coverage.ts +169 -0
  242. package/scripts/check-admin.ts +95 -0
  243. package/scripts/check-jason-status.ts +184 -0
  244. package/scripts/check-roles.ts +36 -0
  245. package/scripts/clear-nonce.ts +47 -0
  246. package/scripts/complete-jack-superpaymaster.ts +171 -0
  247. package/scripts/debug-addr.ts +43 -0
  248. package/scripts/debug-community-registration.ts +92 -0
  249. package/scripts/debug-deploy-v4.ts +116 -0
  250. package/scripts/debug-paymaster.ts +127 -0
  251. package/scripts/debug-register-role.ts +101 -0
  252. package/scripts/debug-version.ts +71 -0
  253. package/scripts/deploy-sync.ts +104 -0
  254. package/scripts/deprecated/check_aa_entrypoint.ts +29 -0
  255. package/scripts/deprecated/check_paymaster_deposits.ts +45 -0
  256. package/scripts/deprecated/debug_aoa_function.ts +28 -0
  257. package/scripts/deprecated/debug_aoa_issue.ts +16 -0
  258. package/scripts/deprecated/debug_pimlico_aa23.ts +40 -0
  259. package/scripts/deprecated/debug_summary.ts +34 -0
  260. package/scripts/deprecated/deploy_v07_aa.ts +99 -0
  261. package/scripts/deprecated/fix_all_issues.ts +61 -0
  262. package/scripts/deprecated/fund_bpnts.ts +52 -0
  263. package/scripts/deprecated/get_factory_addresses.ts +28 -0
  264. package/scripts/deprecated/recheck_pim.ts +34 -0
  265. package/{extract_abis.sh → scripts/dev_tools/extract_abis.sh} +13 -2
  266. package/scripts/extract-docs.sh +78 -9
  267. package/scripts/fund-jack.ts +38 -0
  268. package/scripts/inspect-anni-token.ts +116 -0
  269. package/scripts/inspect-factory.ts +83 -0
  270. package/scripts/l4-paymasterv4-transfer-test.ts +228 -0
  271. package/scripts/l4-setup.ts +453 -0
  272. package/scripts/l4-state.json +80 -0
  273. package/scripts/phase1_verify_contracts.ts +207 -0
  274. package/scripts/pre_test_sync.ts +83 -0
  275. package/scripts/prepare_sepolia_resources.ts +154 -0
  276. package/scripts/query-jack-token.ts +22 -0
  277. package/scripts/quick_setup_account.ts +80 -0
  278. package/scripts/run_l4_gasless_regression.sh +32 -0
  279. package/scripts/run_sdk_experiment.sh +13 -0
  280. package/scripts/run_sdk_regression-v2.sh +38 -0
  281. package/scripts/sdk_regression_v2.ts +162 -0
  282. package/scripts/setup-bbq-community.ts +187 -0
  283. package/scripts/setup-dancing-community.ts +223 -0
  284. package/scripts/setup_test_accounts.ts +88 -0
  285. package/scripts/setup_test_environment.ts +147 -0
  286. package/scripts/sync_anvil_config.cjs +44 -0
  287. package/scripts/sync_contract_addresses.ts +186 -0
  288. package/scripts/sync_sepolia_config.cjs +90 -0
  289. package/scripts/sync_sepolia_config.mjs +74 -0
  290. package/scripts/test-brown-v4-deploy.ts +90 -0
  291. package/scripts/test-faucet-and-gasless.ts +170 -0
  292. package/scripts/test-jack-gasless.ts +119 -0
  293. package/scripts/test-jack-registration.ts +133 -0
  294. package/scripts/test-jack-superpaymaster-api.ts +112 -0
  295. package/scripts/test-kms-gasless.ts +138 -0
  296. package/scripts/test_groups.ts +63 -192
  297. package/scripts/test_new_sdk_apis_sepolia.ts +78 -0
  298. package/scripts/update_env_from_config.ts +83 -0
  299. package/scripts/v2_regression/00_validate_env.ts +28 -4
  300. package/scripts/v2_regression/02_operator_onboarding.ts +15 -141
  301. package/scripts/v2_regression/03_community_registry.ts +23 -57
  302. package/scripts/v2_regression/04_enduser_flow.ts +15 -48
  303. package/scripts/verify-tx-status.ts +81 -0
  304. package/scripts/verify_onchain_milestone.ts +114 -0
  305. package/scripts/verify_phase1.ts +66 -0
  306. package/scripts/verify_phase2.ts +66 -0
  307. package/sdk_experiment_data.csv +2 -0
  308. package/simple-test-paymaster.sh +2 -0
  309. package/simple-test-superpaymaster.sh +1 -0
  310. package/tests/l1-regression.test.ts +458 -0
  311. package/tests/l4-test-anni-gasless.ts +105 -0
  312. package/tests/l4-test-jason1-gasless.ts +150 -0
  313. package/tests/l4-test-jason2-gasless.ts +174 -0
  314. package/tests/l4-test-pmv4-deposit.ts +111 -0
  315. package/tests/l4-test-pmv4-gasless.ts +166 -0
  316. package/tests/l4-test-pmv4-submit.ts +223 -0
  317. package/tests/regression/README.md +168 -0
  318. package/tests/regression/config.ts +215 -0
  319. package/tests/regression/display-versions.ts +85 -0
  320. package/tests/regression/index.ts +67 -0
  321. package/tests/regression/l1-tests.ts +267 -0
  322. package/tests/regression/l2-tests.ts +171 -0
  323. package/tests/regression/l3-tests.ts +125 -0
  324. package/tests/regression/l4-gasless.ts +897 -0
  325. package/tests/regression/l4-runner.ts +52 -0
  326. package/tests/reports/phase1_contract_verification.md +45 -0
  327. package/tests/utils/contractVerifier.ts +237 -0
  328. package/tests/utils/userOpHelper.ts +194 -0
  329. package/tsconfig.json +32 -6
  330. package/typedoc.json +39 -5
  331. package/vitest.config.ts +16 -0
  332. package/.eslintrc.js +0 -28
  333. package/docs/STAGE_3_SCENARIO_EXP_PLAN.md +0 -77
  334. package/docs/api/@aastar/account/README.md +0 -15
  335. package/docs/api/@aastar/account/classes/UserOpClient.md +0 -87
  336. package/docs/api/@aastar/account/functions/createEOAWalletClient.md +0 -21
  337. package/docs/api/@aastar/account/functions/getUserOpHash.md +0 -23
  338. package/docs/api/@aastar/account/functions/packUserOpLimits.md +0 -19
  339. package/docs/api/@aastar/account/functions/toSimpleSmartAccount.md +0 -83
  340. package/docs/api/@aastar/account/type-aliases/EOAWalletClient.md +0 -37
  341. package/docs/api/@aastar/account/type-aliases/SimpleSmartAccount.md +0 -39
  342. package/docs/api/@aastar/core/README.md +0 -136
  343. package/docs/api/@aastar/core/classes/BLSSigner.md +0 -147
  344. package/docs/api/@aastar/core/enumerations/NodeType.md +0 -33
  345. package/docs/api/@aastar/core/functions/aggregatorActions.md +0 -2714
  346. package/docs/api/@aastar/core/functions/createAAStarPublicClient.md +0 -3105
  347. package/docs/api/@aastar/core/functions/dvtActions.md +0 -2714
  348. package/docs/api/@aastar/core/functions/factoryActions.md +0 -2714
  349. package/docs/api/@aastar/core/functions/getAddressUrl.md +0 -32
  350. package/docs/api/@aastar/core/functions/getAllCommunityConfigs.md +0 -9
  351. package/docs/api/@aastar/core/functions/getAllV2Contracts.md +0 -20
  352. package/docs/api/@aastar/core/functions/getBlockExplorer.md +0 -26
  353. package/docs/api/@aastar/core/functions/getChainId.md +0 -26
  354. package/docs/api/@aastar/core/functions/getCommunities.md +0 -76
  355. package/docs/api/@aastar/core/functions/getCommunity.md +0 -32
  356. package/docs/api/@aastar/core/functions/getCommunityConfig.md +0 -15
  357. package/docs/api/@aastar/core/functions/getContract.md +0 -37
  358. package/docs/api/@aastar/core/functions/getContractNetworks.md +0 -18
  359. package/docs/api/@aastar/core/functions/getContracts.md +0 -178
  360. package/docs/api/@aastar/core/functions/getCoreContracts.md +0 -55
  361. package/docs/api/@aastar/core/functions/getDeploymentDate.md +0 -32
  362. package/docs/api/@aastar/core/functions/getEntryPoint.md +0 -25
  363. package/docs/api/@aastar/core/functions/getNetwork.md +0 -26
  364. package/docs/api/@aastar/core/functions/getPaymasterV4_1.md +0 -25
  365. package/docs/api/@aastar/core/functions/getRpcUrl.md +0 -25
  366. package/docs/api/@aastar/core/functions/getSimpleAccountFactory.md +0 -25
  367. package/docs/api/@aastar/core/functions/getSuperPaymasterV2.md +0 -25
  368. package/docs/api/@aastar/core/functions/getTestAccounts.md +0 -30
  369. package/docs/api/@aastar/core/functions/getTestTokenContracts.md +0 -38
  370. package/docs/api/@aastar/core/functions/getTokenContracts.md +0 -31
  371. package/docs/api/@aastar/core/functions/getTxUrl.md +0 -32
  372. package/docs/api/@aastar/core/functions/getV2ContractByAddress.md +0 -28
  373. package/docs/api/@aastar/core/functions/getV2ContractByName.md +0 -28
  374. package/docs/api/@aastar/core/functions/getV2ContractsByDate.md +0 -26
  375. package/docs/api/@aastar/core/functions/isContractNetworkSupported.md +0 -27
  376. package/docs/api/@aastar/core/functions/isRegisteredCommunity.md +0 -15
  377. package/docs/api/@aastar/core/functions/isV2Contract.md +0 -27
  378. package/docs/api/@aastar/core/functions/paymasterV4Actions.md +0 -2719
  379. package/docs/api/@aastar/core/functions/registryActions.md +0 -2720
  380. package/docs/api/@aastar/core/functions/reputationActions.md +0 -2720
  381. package/docs/api/@aastar/core/functions/sbtActions.md +0 -2720
  382. package/docs/api/@aastar/core/functions/stakingActions.md +0 -2720
  383. package/docs/api/@aastar/core/functions/superPaymasterActions.md +0 -2720
  384. package/docs/api/@aastar/core/functions/tokenActions.md +0 -2714
  385. package/docs/api/@aastar/core/interfaces/CommunityConfig.md +0 -81
  386. package/docs/api/@aastar/core/interfaces/ContractVersion.md +0 -63
  387. package/docs/api/@aastar/core/type-aliases/AggregatorActions.md +0 -79
  388. package/docs/api/@aastar/core/type-aliases/ContractCategory.md +0 -5
  389. package/docs/api/@aastar/core/type-aliases/ContractNetwork.md +0 -5
  390. package/docs/api/@aastar/core/type-aliases/DVTActions.md +0 -139
  391. package/docs/api/@aastar/core/type-aliases/FactoryActions.md +0 -99
  392. package/docs/api/@aastar/core/type-aliases/NetworkContracts.md +0 -5
  393. package/docs/api/@aastar/core/type-aliases/PaymasterV4Actions.md +0 -422
  394. package/docs/api/@aastar/core/type-aliases/RegistryActions.md +0 -263
  395. package/docs/api/@aastar/core/type-aliases/ReputationActions.md +0 -47
  396. package/docs/api/@aastar/core/type-aliases/RoleConfig.md +0 -83
  397. package/docs/api/@aastar/core/type-aliases/SBTActions.md +0 -203
  398. package/docs/api/@aastar/core/type-aliases/StakingActions.md +0 -179
  399. package/docs/api/@aastar/core/type-aliases/SuperPaymasterActions.md +0 -219
  400. package/docs/api/@aastar/core/type-aliases/SupportedNetwork.md +0 -3
  401. package/docs/api/@aastar/core/type-aliases/TokenActions.md +0 -151
  402. package/docs/api/@aastar/core/variables/AASTAR_COMMUNITY.md +0 -8
  403. package/docs/api/@aastar/core/variables/ALL_ADDRESSES.md +0 -71
  404. package/docs/api/@aastar/core/variables/BLSAggregatorABI.md +0 -3
  405. package/docs/api/@aastar/core/variables/BLSHelpers.md +0 -91
  406. package/docs/api/@aastar/core/variables/BPS_DENOMINATOR.md +0 -5
  407. package/docs/api/@aastar/core/variables/BRANDING.md +0 -67
  408. package/docs/api/@aastar/core/variables/BREAD_COMMUNITY.md +0 -8
  409. package/docs/api/@aastar/core/variables/COMMUNITIES.md +0 -5
  410. package/docs/api/@aastar/core/variables/COMMUNITY_OWNERS.md +0 -15
  411. package/docs/api/@aastar/core/variables/CONTRACTS.md +0 -163
  412. package/docs/api/@aastar/core/variables/CONTRACT_METADATA.md +0 -67
  413. package/docs/api/@aastar/core/variables/CORE_ADDRESSES.md +0 -35
  414. package/docs/api/@aastar/core/variables/DEFAULT_APNTS_PRICE_USD.md +0 -5
  415. package/docs/api/@aastar/core/variables/DEFAULT_GAS_TOKEN_MINT_AMOUNT.md +0 -5
  416. package/docs/api/@aastar/core/variables/DEFAULT_USDT_MINT_AMOUNT.md +0 -5
  417. package/docs/api/@aastar/core/variables/DVTValidatorABI.md +0 -3
  418. package/docs/api/@aastar/core/variables/EntryPointABI.md +0 -3
  419. package/docs/api/@aastar/core/variables/FAUCET_API_URL.md +0 -5
  420. package/docs/api/@aastar/core/variables/GTokenABI.md +0 -3
  421. package/docs/api/@aastar/core/variables/GTokenStakingABI.md +0 -3
  422. package/docs/api/@aastar/core/variables/LINKS.md +0 -33
  423. package/docs/api/@aastar/core/variables/MAX_SERVICE_FEE.md +0 -5
  424. package/docs/api/@aastar/core/variables/MONITORING_ADDRESSES.md +0 -15
  425. package/docs/api/@aastar/core/variables/MySBTABI.md +0 -3
  426. package/docs/api/@aastar/core/variables/NETWORKS.md +0 -79
  427. package/docs/api/@aastar/core/variables/NODE_STAKE_AMOUNTS.md +0 -31
  428. package/docs/api/@aastar/core/variables/OFFICIAL_ADDRESSES.md +0 -11
  429. package/docs/api/@aastar/core/variables/PAYMASTER_ADDRESSES.md +0 -15
  430. package/docs/api/@aastar/core/variables/PaymasterABI.md +0 -3
  431. package/docs/api/@aastar/core/variables/PaymasterFactoryABI.md +0 -3
  432. package/docs/api/@aastar/core/variables/PaymasterV4ABI.md +0 -3
  433. package/docs/api/@aastar/core/variables/ROLE_ANODE.md +0 -3
  434. package/docs/api/@aastar/core/variables/ROLE_COMMUNITY.md +0 -3
  435. package/docs/api/@aastar/core/variables/ROLE_ENDUSER.md +0 -5
  436. package/docs/api/@aastar/core/variables/ROLE_KMS.md +0 -3
  437. package/docs/api/@aastar/core/variables/ROLE_PAYMASTER_AOA.md +0 -3
  438. package/docs/api/@aastar/core/variables/ROLE_PAYMASTER_SUPER.md +0 -3
  439. package/docs/api/@aastar/core/variables/RegistryABI.md +0 -3
  440. package/docs/api/@aastar/core/variables/ReputationSystemABI.md +0 -3
  441. package/docs/api/@aastar/core/variables/ReputationSystemV3ABI.md +0 -3
  442. package/docs/api/@aastar/core/variables/SEPOLIA_CONTRACTS.md +0 -159
  443. package/docs/api/@aastar/core/variables/SEPOLIA_V2_VERSIONS.md +0 -67
  444. package/docs/api/@aastar/core/variables/SERVICE_FEE_RATE.md +0 -5
  445. package/docs/api/@aastar/core/variables/Simple7702AccountABI.md +0 -3
  446. package/docs/api/@aastar/core/variables/SimpleAccountABI.md +0 -3
  447. package/docs/api/@aastar/core/variables/SimpleAccountFactoryABI.md +0 -3
  448. package/docs/api/@aastar/core/variables/SimpleAccountFactoryV08ABI.md +0 -3
  449. package/docs/api/@aastar/core/variables/SimpleAccountV08ABI.md +0 -3
  450. package/docs/api/@aastar/core/variables/SuperPaymasterABI.md +0 -3
  451. package/docs/api/@aastar/core/variables/SuperPaymasterV3ABI.md +0 -3
  452. package/docs/api/@aastar/core/variables/TEST_ACCOUNT_ADDRESSES.md +0 -11
  453. package/docs/api/@aastar/core/variables/TEST_ACCOUNT_POOL_SIZE.md +0 -5
  454. package/docs/api/@aastar/core/variables/TEST_COMMUNITIES.md +0 -19
  455. package/docs/api/@aastar/core/variables/TEST_TOKEN_ADDRESSES.md +0 -19
  456. package/docs/api/@aastar/core/variables/TOKEN_ADDRESSES.md +0 -11
  457. package/docs/api/@aastar/core/variables/V2_SUMMARY.md +0 -39
  458. package/docs/api/@aastar/core/variables/xPNTsFactoryABI.md +0 -3
  459. package/docs/api/@aastar/core/variables/xPNTsTokenABI.md +0 -3
  460. package/docs/api/@aastar/paymaster/README.md +0 -14
  461. package/docs/api/@aastar/paymaster/classes/SuperPaymasterClient.md +0 -163
  462. package/docs/api/@aastar/paymaster/functions/checkEligibility.md +0 -28
  463. package/docs/api/@aastar/paymaster/functions/getPaymasterV4Middleware.md +0 -32
  464. package/docs/api/@aastar/paymaster/functions/getSuperPaymasterMiddleware.md +0 -32
  465. package/docs/api/@aastar/paymaster/type-aliases/PaymasterConfig.md +0 -35
  466. package/docs/api/@aastar/paymaster/type-aliases/PaymasterV4MiddlewareConfig.md +0 -35
  467. package/docs/api/@aastar/tokens/README.md +0 -3
  468. package/docs/api/@aastar/tokens/classes/FinanceClient.md +0 -8653
  469. package/ext/permissionless.js/.changeset/README.md +0 -8
  470. package/ext/permissionless.js/.changeset/config.json +0 -11
  471. package/ext/permissionless.js/.env-example +0 -2
  472. package/ext/permissionless.js/.github/actions/install-dependencies/action.yml +0 -17
  473. package/ext/permissionless.js/.github/dependabot.yaml +0 -10
  474. package/ext/permissionless.js/.github/workflows/canary.yml +0 -49
  475. package/ext/permissionless.js/.github/workflows/on-pull-request.yml +0 -61
  476. package/ext/permissionless.js/.github/workflows/on-push-to-main.yml +0 -59
  477. package/ext/permissionless.js/.github/workflows/prune-tags.yml +0 -92
  478. package/ext/permissionless.js/.github/workflows/verify.yml +0 -114
  479. package/ext/permissionless.js/.size-limit.json +0 -13
  480. package/ext/permissionless.js/LICENSE +0 -21
  481. package/ext/permissionless.js/assets/banner.png +0 -0
  482. package/ext/permissionless.js/biome.json +0 -46
  483. package/ext/permissionless.js/bun.lock +0 -2340
  484. package/ext/permissionless.js/bun.lockb +0 -0
  485. package/ext/permissionless.js/package.json +0 -82
  486. package/ext/permissionless.js/packages/mock-paymaster/CHANGELOG.md +0 -31
  487. package/ext/permissionless.js/packages/mock-paymaster/constants.ts +0 -84
  488. package/ext/permissionless.js/packages/mock-paymaster/helpers/abi.ts +0 -1048
  489. package/ext/permissionless.js/packages/mock-paymaster/helpers/erc20-utils.ts +0 -105
  490. package/ext/permissionless.js/packages/mock-paymaster/helpers/schema.ts +0 -307
  491. package/ext/permissionless.js/packages/mock-paymaster/helpers/utils.ts +0 -78
  492. package/ext/permissionless.js/packages/mock-paymaster/index.ts +0 -63
  493. package/ext/permissionless.js/packages/mock-paymaster/package.json +0 -33
  494. package/ext/permissionless.js/packages/mock-paymaster/relay.ts +0 -424
  495. package/ext/permissionless.js/packages/mock-paymaster/setup.ts +0 -163
  496. package/ext/permissionless.js/packages/mock-paymaster/singletonPaymasters.ts +0 -230
  497. package/ext/permissionless.js/packages/permissionless/CHANGELOG.md +0 -893
  498. package/ext/permissionless.js/packages/permissionless/README.md +0 -122
  499. package/ext/permissionless.js/packages/permissionless/accounts/biconomy/abi/BiconomySmartAccountAbi.ts +0 -128
  500. package/ext/permissionless.js/packages/permissionless/accounts/biconomy/toBiconomySmartAccount.ts +0 -374
  501. package/ext/permissionless.js/packages/permissionless/accounts/decodeCalls.test.ts +0 -505
  502. package/ext/permissionless.js/packages/permissionless/accounts/etherspot/abi/EtherspotBootstrapAbi.ts +0 -94
  503. package/ext/permissionless.js/packages/permissionless/accounts/etherspot/constants.ts +0 -27
  504. package/ext/permissionless.js/packages/permissionless/accounts/etherspot/toEtherspotSmartAccount.ts +0 -369
  505. package/ext/permissionless.js/packages/permissionless/accounts/etherspot/utils/getInitMSAData.ts +0 -56
  506. package/ext/permissionless.js/packages/permissionless/accounts/etherspot/utils/getNonceKey.ts +0 -21
  507. package/ext/permissionless.js/packages/permissionless/accounts/etherspot/utils/wrapMessageHash.ts +0 -43
  508. package/ext/permissionless.js/packages/permissionless/accounts/index.ts +0 -86
  509. package/ext/permissionless.js/packages/permissionless/accounts/kernel/abi/KernelAccountAbi.ts +0 -87
  510. package/ext/permissionless.js/packages/permissionless/accounts/kernel/abi/KernelV3AccountAbi.ts +0 -813
  511. package/ext/permissionless.js/packages/permissionless/accounts/kernel/abi/KernelV3FactoryAbi.ts +0 -12
  512. package/ext/permissionless.js/packages/permissionless/accounts/kernel/abi/KernelV3MetaFactoryAbi.ts +0 -17
  513. package/ext/permissionless.js/packages/permissionless/accounts/kernel/constants.ts +0 -14
  514. package/ext/permissionless.js/packages/permissionless/accounts/kernel/to7702KernelSmartAccount.ts +0 -63
  515. package/ext/permissionless.js/packages/permissionless/accounts/kernel/toEcdsaKernelSmartAccount.ts +0 -62
  516. package/ext/permissionless.js/packages/permissionless/accounts/kernel/toKernelSmartAccount.ts +0 -984
  517. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/decodeCallData.ts +0 -43
  518. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/encodeCallData.ts +0 -57
  519. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/getNonceKey.ts +0 -33
  520. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/isKernelV2.ts +0 -6
  521. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/isWebAuthnAccount.ts +0 -8
  522. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/signMessage.ts +0 -115
  523. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/signTypedData.ts +0 -97
  524. package/ext/permissionless.js/packages/permissionless/accounts/kernel/utils/wrapMessageHash.ts +0 -44
  525. package/ext/permissionless.js/packages/permissionless/accounts/light/toLightSmartAccount.ts +0 -496
  526. package/ext/permissionless.js/packages/permissionless/accounts/nexus/toNexusSmartAccount.ts +0 -351
  527. package/ext/permissionless.js/packages/permissionless/accounts/safe/index.ts +0 -14
  528. package/ext/permissionless.js/packages/permissionless/accounts/safe/signUserOperation.test.ts +0 -275
  529. package/ext/permissionless.js/packages/permissionless/accounts/safe/signUserOperation.ts +0 -316
  530. package/ext/permissionless.js/packages/permissionless/accounts/safe/toSafeSmartAccount.ts +0 -1980
  531. package/ext/permissionless.js/packages/permissionless/accounts/simple/to7702SimpleSmartAccount.ts +0 -51
  532. package/ext/permissionless.js/packages/permissionless/accounts/simple/toSimpleSmartAccount.ts +0 -585
  533. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/toThirdwebSmartAccount.ts +0 -221
  534. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/utils/decodeCallData.ts +0 -87
  535. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/utils/encodeCallData.ts +0 -81
  536. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/utils/getAccountAddress.ts +0 -48
  537. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/utils/getFactoryData.ts +0 -40
  538. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/utils/signMessage.ts +0 -33
  539. package/ext/permissionless.js/packages/permissionless/accounts/thirdweb/utils/signTypedData.ts +0 -67
  540. package/ext/permissionless.js/packages/permissionless/accounts/trust/toTrustSmartAccount.ts +0 -232
  541. package/ext/permissionless.js/packages/permissionless/accounts/trust/utils/decodeCallData.ts +0 -87
  542. package/ext/permissionless.js/packages/permissionless/accounts/trust/utils/encodeCallData.ts +0 -81
  543. package/ext/permissionless.js/packages/permissionless/accounts/trust/utils/getFactoryData.ts +0 -51
  544. package/ext/permissionless.js/packages/permissionless/actions/erc7579/accountId.test.ts +0 -39
  545. package/ext/permissionless.js/packages/permissionless/actions/erc7579/accountId.ts +0 -93
  546. package/ext/permissionless.js/packages/permissionless/actions/erc7579/installModule.test.ts +0 -216
  547. package/ext/permissionless.js/packages/permissionless/actions/erc7579/installModule.ts +0 -99
  548. package/ext/permissionless.js/packages/permissionless/actions/erc7579/installModules.test.ts +0 -237
  549. package/ext/permissionless.js/packages/permissionless/actions/erc7579/installModules.ts +0 -96
  550. package/ext/permissionless.js/packages/permissionless/actions/erc7579/isModuleInstalled.test.ts +0 -72
  551. package/ext/permissionless.js/packages/permissionless/actions/erc7579/isModuleInstalled.ts +0 -132
  552. package/ext/permissionless.js/packages/permissionless/actions/erc7579/supportsExecutionMode.test.ts +0 -108
  553. package/ext/permissionless.js/packages/permissionless/actions/erc7579/supportsExecutionMode.ts +0 -158
  554. package/ext/permissionless.js/packages/permissionless/actions/erc7579/supportsModule.test.ts +0 -35
  555. package/ext/permissionless.js/packages/permissionless/actions/erc7579/supportsModule.ts +0 -120
  556. package/ext/permissionless.js/packages/permissionless/actions/erc7579/uninstallModule.test.ts +0 -129
  557. package/ext/permissionless.js/packages/permissionless/actions/erc7579/uninstallModule.ts +0 -98
  558. package/ext/permissionless.js/packages/permissionless/actions/erc7579/uninstallModules.test.ts +0 -117
  559. package/ext/permissionless.js/packages/permissionless/actions/erc7579/uninstallModules.ts +0 -87
  560. package/ext/permissionless.js/packages/permissionless/actions/erc7579.ts +0 -103
  561. package/ext/permissionless.js/packages/permissionless/actions/etherspot/getUserOperationGasPrice.ts +0 -32
  562. package/ext/permissionless.js/packages/permissionless/actions/etherspot.ts +0 -4
  563. package/ext/permissionless.js/packages/permissionless/actions/index.ts +0 -9
  564. package/ext/permissionless.js/packages/permissionless/actions/package.json +0 -6
  565. package/ext/permissionless.js/packages/permissionless/actions/passkeyServer/getCredentials.ts +0 -47
  566. package/ext/permissionless.js/packages/permissionless/actions/passkeyServer/startAuthentication.ts +0 -39
  567. package/ext/permissionless.js/packages/permissionless/actions/passkeyServer/startRegistration.ts +0 -126
  568. package/ext/permissionless.js/packages/permissionless/actions/passkeyServer/verifyAuthentication.ts +0 -142
  569. package/ext/permissionless.js/packages/permissionless/actions/passkeyServer/verifyRegistration.ts +0 -132
  570. package/ext/permissionless.js/packages/permissionless/actions/passkeyServer.ts +0 -17
  571. package/ext/permissionless.js/packages/permissionless/actions/pimlico/estimateErc20PaymasterCost.ts +0 -102
  572. package/ext/permissionless.js/packages/permissionless/actions/pimlico/getTokenQuotes.test.ts +0 -90
  573. package/ext/permissionless.js/packages/permissionless/actions/pimlico/getTokenQuotes.ts +0 -77
  574. package/ext/permissionless.js/packages/permissionless/actions/pimlico/getUserOperationGasPrice.test.ts +0 -82
  575. package/ext/permissionless.js/packages/permissionless/actions/pimlico/getUserOperationGasPrice.ts +0 -67
  576. package/ext/permissionless.js/packages/permissionless/actions/pimlico/getUserOperationStatus.test.ts +0 -199
  577. package/ext/permissionless.js/packages/permissionless/actions/pimlico/getUserOperationStatus.ts +0 -49
  578. package/ext/permissionless.js/packages/permissionless/actions/pimlico/sendCompressedUserOperation.ts +0 -59
  579. package/ext/permissionless.js/packages/permissionless/actions/pimlico/sponsorUserOperation.test.ts +0 -236
  580. package/ext/permissionless.js/packages/permissionless/actions/pimlico/sponsorUserOperation.ts +0 -151
  581. package/ext/permissionless.js/packages/permissionless/actions/pimlico/validateSponsorshipPolicies.test.ts +0 -153
  582. package/ext/permissionless.js/packages/permissionless/actions/pimlico/validateSponsorshipPolicies.ts +0 -74
  583. package/ext/permissionless.js/packages/permissionless/actions/pimlico.ts +0 -38
  584. package/ext/permissionless.js/packages/permissionless/actions/public/getAccountNonce.test.ts +0 -96
  585. package/ext/permissionless.js/packages/permissionless/actions/public/getAccountNonce.ts +0 -75
  586. package/ext/permissionless.js/packages/permissionless/actions/public/getSenderAddress.test.ts +0 -154
  587. package/ext/permissionless.js/packages/permissionless/actions/public/getSenderAddress.ts +0 -129
  588. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/getCallsStatus.test.ts +0 -255
  589. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/getCallsStatus.ts +0 -91
  590. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/sendCalls.test.ts +0 -571
  591. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/sendCalls.ts +0 -38
  592. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/sendTransaction.test.ts +0 -416
  593. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/sendTransaction.ts +0 -133
  594. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/signMessage.test.ts +0 -219
  595. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/signMessage.ts +0 -73
  596. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/signTypedData.test.ts +0 -228
  597. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/signTypedData.ts +0 -157
  598. package/ext/permissionless.js/packages/permissionless/actions/smartAccount/writeContract.ts +0 -70
  599. package/ext/permissionless.js/packages/permissionless/actions/smartAccount.ts +0 -7
  600. package/ext/permissionless.js/packages/permissionless/clients/createSmartAccountClient.ts +0 -181
  601. package/ext/permissionless.js/packages/permissionless/clients/decorators/passkeyServer.ts +0 -57
  602. package/ext/permissionless.js/packages/permissionless/clients/decorators/pimlico.ts +0 -189
  603. package/ext/permissionless.js/packages/permissionless/clients/decorators/smartAccount.ts +0 -350
  604. package/ext/permissionless.js/packages/permissionless/clients/index.ts +0 -2
  605. package/ext/permissionless.js/packages/permissionless/clients/passkeyServer.ts +0 -69
  606. package/ext/permissionless.js/packages/permissionless/clients/pimlico.ts +0 -124
  607. package/ext/permissionless.js/packages/permissionless/errors/index.ts +0 -17
  608. package/ext/permissionless.js/packages/permissionless/experimental/pimlico/index.ts +0 -1
  609. package/ext/permissionless.js/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.test.ts +0 -523
  610. package/ext/permissionless.js/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +0 -369
  611. package/ext/permissionless.js/packages/permissionless/index.ts +0 -3
  612. package/ext/permissionless.js/packages/permissionless/package.json +0 -102
  613. package/ext/permissionless.js/packages/permissionless/types/etherspot.ts +0 -12
  614. package/ext/permissionless.js/packages/permissionless/types/package.json +0 -6
  615. package/ext/permissionless.js/packages/permissionless/types/passkeyServer.ts +0 -125
  616. package/ext/permissionless.js/packages/permissionless/types/pimlico.ts +0 -151
  617. package/ext/permissionless.js/packages/permissionless/utils/decode7579Calls.ts +0 -133
  618. package/ext/permissionless.js/packages/permissionless/utils/decodeNonce.test.ts +0 -40
  619. package/ext/permissionless.js/packages/permissionless/utils/decodeNonce.ts +0 -10
  620. package/ext/permissionless.js/packages/permissionless/utils/deepHexlify.test.ts +0 -57
  621. package/ext/permissionless.js/packages/permissionless/utils/deepHexlify.ts +0 -35
  622. package/ext/permissionless.js/packages/permissionless/utils/encode7579Calls.test.ts +0 -69
  623. package/ext/permissionless.js/packages/permissionless/utils/encode7579Calls.ts +0 -114
  624. package/ext/permissionless.js/packages/permissionless/utils/encodeInstallModule.ts +0 -91
  625. package/ext/permissionless.js/packages/permissionless/utils/encodeNonce.test.ts +0 -38
  626. package/ext/permissionless.js/packages/permissionless/utils/encodeNonce.ts +0 -8
  627. package/ext/permissionless.js/packages/permissionless/utils/encodeUninstallModule.ts +0 -88
  628. package/ext/permissionless.js/packages/permissionless/utils/erc20AllowanceOverride.test.ts +0 -59
  629. package/ext/permissionless.js/packages/permissionless/utils/erc20AllowanceOverride.ts +0 -66
  630. package/ext/permissionless.js/packages/permissionless/utils/erc20BalanceOverride.test.ts +0 -57
  631. package/ext/permissionless.js/packages/permissionless/utils/erc20BalanceOverride.ts +0 -49
  632. package/ext/permissionless.js/packages/permissionless/utils/getAddressFromInitCodeOrPaymasterAndData.test.ts +0 -31
  633. package/ext/permissionless.js/packages/permissionless/utils/getAddressFromInitCodeOrPaymasterAndData.ts +0 -13
  634. package/ext/permissionless.js/packages/permissionless/utils/getEstimationCallData.ts +0 -297
  635. package/ext/permissionless.js/packages/permissionless/utils/getPackedUserOperation.test.ts +0 -204
  636. package/ext/permissionless.js/packages/permissionless/utils/getPackedUserOperation.ts +0 -122
  637. package/ext/permissionless.js/packages/permissionless/utils/getRequiredPrefund.test.ts +0 -90
  638. package/ext/permissionless.js/packages/permissionless/utils/getRequiredPrefund.ts +0 -56
  639. package/ext/permissionless.js/packages/permissionless/utils/index.ts +0 -43
  640. package/ext/permissionless.js/packages/permissionless/utils/isSmartAccountDeployed.ts +0 -13
  641. package/ext/permissionless.js/packages/permissionless/utils/ox.ts +0 -48
  642. package/ext/permissionless.js/packages/permissionless/utils/toOwner.ts +0 -89
  643. package/ext/permissionless.js/packages/permissionless/vitest.config.ts +0 -31
  644. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/biconomy.ts +0 -22
  645. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/etherspot.ts +0 -12
  646. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/kernel.ts +0 -63
  647. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/light.ts +0 -10
  648. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/nexus.ts +0 -16
  649. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/safe.ts +0 -75
  650. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/simple.ts +0 -16
  651. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/thirdweb.ts +0 -7
  652. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/trust.ts +0 -26
  653. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/core.ts +0 -24
  654. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/constants/index.ts +0 -10
  655. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/index.ts +0 -783
  656. package/ext/permissionless.js/packages/permissionless-test/mock-aa-infra/alto/instance.ts +0 -290
  657. package/ext/permissionless.js/packages/permissionless-test/src/testWithRpc.ts +0 -128
  658. package/ext/permissionless.js/packages/permissionless-test/src/types.ts +0 -12
  659. package/ext/permissionless.js/packages/permissionless-test/src/utils.ts +0 -1091
  660. package/ext/permissionless.js/packages/wagmi/CHANGELOG.md +0 -53
  661. package/ext/permissionless.js/packages/wagmi/README.md +0 -93
  662. package/ext/permissionless.js/packages/wagmi/context.ts +0 -22
  663. package/ext/permissionless.js/packages/wagmi/hooks/useAvailableCapabilities.ts +0 -43
  664. package/ext/permissionless.js/packages/wagmi/hooks/useSendTransaction.ts +0 -164
  665. package/ext/permissionless.js/packages/wagmi/hooks/useWaitForTransactionReceipt.ts +0 -427
  666. package/ext/permissionless.js/packages/wagmi/index.ts +0 -15
  667. package/ext/permissionless.js/packages/wagmi/package.json +0 -26
  668. package/ext/permissionless.js/packages/wagmi/utils/observe.ts +0 -76
  669. package/ext/permissionless.js/packages/wagmi-demo/README.md +0 -1
  670. package/ext/permissionless.js/packages/wagmi-demo/biome.json +0 -13
  671. package/ext/permissionless.js/packages/wagmi-demo/index.html +0 -12
  672. package/ext/permissionless.js/packages/wagmi-demo/package.json +0 -16
  673. package/ext/permissionless.js/packages/wagmi-demo/src/App.tsx +0 -98
  674. package/ext/permissionless.js/packages/wagmi-demo/src/PasskeyServerDemo.tsx +0 -286
  675. package/ext/permissionless.js/packages/wagmi-demo/src/PasskeysDemo.tsx +0 -457
  676. package/ext/permissionless.js/packages/wagmi-demo/src/index.css +0 -21
  677. package/ext/permissionless.js/packages/wagmi-demo/src/main.tsx +0 -275
  678. package/ext/permissionless.js/packages/wagmi-demo/src/vite-env.d.ts +0 -1
  679. package/ext/permissionless.js/packages/wagmi-demo/src/wagmi.ts +0 -33
  680. package/ext/permissionless.js/packages/wagmi-demo/tsconfig.json +0 -25
  681. package/ext/permissionless.js/packages/wagmi-demo/tsconfig.node.json +0 -12
  682. package/ext/permissionless.js/packages/wagmi-demo/vite.config.ts +0 -7
  683. package/ext/permissionless.js/tsconfig/tsconfig.base.json +0 -42
  684. package/ext/permissionless.js/tsconfig/tsconfig.mock-paymaster.cjs.json +0 -11
  685. package/ext/permissionless.js/tsconfig/tsconfig.mock-paymaster.esm.json +0 -9
  686. package/ext/permissionless.js/tsconfig/tsconfig.mock-paymaster.json +0 -17
  687. package/ext/permissionless.js/tsconfig/tsconfig.mock-paymaster.types.json +0 -13
  688. package/ext/permissionless.js/tsconfig/tsconfig.permissionless.cjs.json +0 -11
  689. package/ext/permissionless.js/tsconfig/tsconfig.permissionless.esm.json +0 -9
  690. package/ext/permissionless.js/tsconfig/tsconfig.permissionless.json +0 -18
  691. package/ext/permissionless.js/tsconfig/tsconfig.permissionless.types.json +0 -13
  692. package/ext/permissionless.js/tsconfig/tsconfig.wagmi.esm.json +0 -8
  693. package/ext/permissionless.js/tsconfig/tsconfig.wagmi.json +0 -19
  694. package/ext/permissionless.js/tsconfig/tsconfig.wagmi.types.json +0 -12
  695. package/packages/community/package.json +0 -22
  696. package/packages/community/src/index.ts +0 -306
  697. package/packages/community/tsconfig.json +0 -8
  698. package/packages/core/src/abis/PaymasterV4_2.json +0 -1183
  699. package/packages/core/src/abis/aPNTs.json +0 -1173
  700. package/packages/core/src/contract-versions.ts +0 -374
  701. package/packages/enduser/package.json +0 -21
  702. package/packages/enduser/src/index.ts +0 -138
  703. package/packages/enduser/tsconfig.json +0 -8
  704. package/packages/operator/package.json +0 -21
  705. package/packages/operator/src/index.ts +0 -172
  706. package/packages/operator/tsconfig.json +0 -8
  707. package/run_full_regression.sh +0 -215
  708. package/scripts/validate_environment.ts +0 -140
  709. /package/{extract_addresses_to_env.sh → scripts/dev_tools/extract_addresses_to_env.sh} +0 -0
  710. /package/{final_safe_harmonize.py → scripts/dev_tools/final_safe_harmonize.py} +0 -0
  711. /package/{safe_harmonize.py → scripts/dev_tools/safe_harmonize.py} +0 -0
  712. /package/{surgical_harmonize.py → scripts/dev_tools/surgical_harmonize.py} +0 -0
@@ -0,0 +1,150 @@
1
+ import { createPublicClient, createWalletClient, http, parseEther, formatEther, type Address, encodeFunctionData, createClient, concat, type Hex, decodeErrorResult } from 'viem';
2
+ import { bundlerActions } from 'viem/account-abstraction';
3
+ import { privateKeyToAccount } from 'viem/accounts';
4
+ import { sepolia } from 'viem/chains';
5
+ // import { PaymasterClient, PaymasterOperator } from '../packages/paymaster/src/V4/index.js';
6
+ import { loadNetworkConfig } from './regression/config.js';
7
+ import * as dotenv from 'dotenv';
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+
11
+ dotenv.config({ path: '.env.sepolia' });
12
+
13
+ async function main() {
14
+ const config = await loadNetworkConfig('sepolia');
15
+ const rpcUrl = process.env.RPC_URL || 'https://eth-sepolia.g.alchemy.com/v2/your-key';
16
+
17
+ const { PaymasterClient, PaymasterOperator } = await import('../packages/paymaster/src/V4/index.js');
18
+
19
+
20
+ // 1. Roles & Accounts
21
+ const anniAccount = privateKeyToAccount(process.env.PRIVATE_KEY_ANNI as `0x${string}`);
22
+ const jasonAccount = privateKeyToAccount(process.env.PRIVATE_KEY_JASON as `0x${string}`);
23
+
24
+ const publicClient = createPublicClient({ chain: sepolia, transport: http(rpcUrl) });
25
+ const anniWallet = createWalletClient({ account: anniAccount, chain: sepolia, transport: http(rpcUrl) });
26
+
27
+ const entryPoint = config.contracts.entryPoint as Address;
28
+
29
+ // Load AA addresses from l4-state.json
30
+ const statePath = path.resolve(process.cwd(), 'scripts/l4-state.json');
31
+ const state = JSON.parse(fs.readFileSync(statePath, 'utf8'));
32
+ const jasonAA1 = state.aaAccounts.find((aa: any) => aa.label === 'Jason (AAStar)_AA1')?.address as Address;
33
+
34
+ // CRITICAL: Anni doesn't have PaymasterV4, only SuperPaymaster.
35
+ // So we cannot test "Anni sponsoring Jason" with PaymasterV4.
36
+ // Instead, use Jason's own PaymasterV4 for this test.
37
+ const jasonPM = state.operators["Jason (AAStar)"].pmV4 as Address;
38
+
39
+ // Resolve Addresses from Config and State
40
+ const dPNTs = config.contracts.aPNTs as Address;
41
+
42
+ console.log('šŸš€ [FIXED] JASON AA1 Gasless via JASON OWN PM');
43
+ console.log(`Sender (Jason AA1): ${jasonAA1}`);
44
+ console.log(`Sponsor (Jason PM): ${jasonPM} (from l4-state.json)`);
45
+ console.log(`Gas Token: ${dPNTs} (from config)\n`);
46
+
47
+
48
+ // --- STEP 1: ONE-CLICK READINESS & Fix ---
49
+ console.log('šŸ” Step 1: SDK Readiness Check...');
50
+ const report = await PaymasterOperator.checkGaslessReadiness(
51
+ publicClient,
52
+ entryPoint,
53
+ jasonPM,
54
+ jasonAA1,
55
+ dPNTs
56
+ );
57
+
58
+ if (!report.isReady) {
59
+ console.log(' āš ļø Issues Detected:', report.issues.join(', '));
60
+ console.log('\nšŸ› ļø Step 2: Automated Self-Healing (Operator Action)...');
61
+ const steps = await PaymasterOperator.prepareGaslessEnvironment(
62
+ anniWallet,
63
+ publicClient,
64
+ entryPoint,
65
+ jasonPM, // Corrected to jasonPM
66
+ dPNTs,
67
+ { tokenPriceUSD: 100000000n } // $1.00
68
+ );
69
+
70
+ for (const s of steps) {
71
+ console.log(` šŸš€ [${s.step}] Fixed. Hash: ${s.hash}`);
72
+ await publicClient.waitForTransactionReceipt({ hash: s.hash as `0x${string}` });
73
+ }
74
+ } else {
75
+ console.log(' āœ… SDK Readiness Check: PERFECT.');
76
+ }
77
+
78
+ // --- STEP 3: USER DEPOSIT ---
79
+ const userDeposit = await PaymasterClient.getDepositedBalance(publicClient, jasonPM, jasonAA1, dPNTs); // Corrected to jasonPM
80
+ if (userDeposit < parseEther('50')) {
81
+ console.log(`\nšŸ¦ Seeding User Deposit (Current: ${formatEther(userDeposit)} dPNTs)...`);
82
+
83
+ const approveHash = await anniWallet.writeContract({
84
+ address: dPNTs,
85
+ abi: [{ name: 'approve', type: 'function', inputs: [{ name: 'spender', type: 'address' }, { name: 'value', type: 'uint256' }], outputs: [{ type: 'bool' }], stateMutability: 'nonpayable' }],
86
+ functionName: 'approve',
87
+ args: [jasonPM, parseEther('200')] // Corrected to jasonPM
88
+ });
89
+ await publicClient.waitForTransactionReceipt({ hash: approveHash });
90
+
91
+ // User deposit action is usually done by Client, but funded by Operator in this script
92
+ const depHash = await PaymasterClient.depositFor(anniWallet, jasonPM, jasonAA1, dPNTs, parseEther('100')); // Corrected to jasonPM
93
+ await publicClient.waitForTransactionReceipt({ hash: depHash as `0x${string}` });
94
+ console.log(' āœ… User deposit seeded (100 dPNTs).');
95
+ }
96
+
97
+ // --- STEP 4: GASLESS EXECUTION ---
98
+ console.log('\nšŸ“¤ Step 4: Submitting Gasless Transaction...');
99
+ const transferCalldata = encodeFunctionData({
100
+ abi: [{ name: 'execute', type: 'function', inputs: [{ name: 'dest', type: 'address' }, { name: 'value', type: 'uint256' }, { name: 'func', type: 'bytes' }], outputs: [], stateMutability: 'nonpayable' }],
101
+ functionName: 'execute',
102
+ args: [
103
+ dPNTs,
104
+ 0n,
105
+ encodeFunctionData({
106
+ abi: [{ name: 'transfer', type: 'function', inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }], outputs: [{ type: 'bool' }], stateMutability: 'nonpayable' }],
107
+ functionName: 'transfer',
108
+ args: [anniAccount.address, parseEther('0.1')] // Tiny transfer back
109
+ })
110
+ ]
111
+ });
112
+
113
+ const jasonWallet = createWalletClient({ account: jasonAccount, chain: sepolia, transport: http(rpcUrl) });
114
+
115
+ const userOpHash = await PaymasterClient.submitGaslessUserOperation(
116
+ publicClient,
117
+ jasonWallet,
118
+ jasonAA1,
119
+ entryPoint,
120
+ jasonPM,
121
+ dPNTs,
122
+ config.bundlerUrl!, // Changed from process.env.BUNDLER_URL!
123
+ transferCalldata
124
+ );
125
+
126
+ console.log(` āœ… UserOp Hash: ${userOpHash}`);
127
+ console.log(' ā³ Waiting for block confirmation...');
128
+
129
+ // Polling for receipt using Bundler Client
130
+ const bundlerClient = createPublicClient({
131
+ chain: sepolia,
132
+ transport: http(process.env.BUNDLER_URL!)
133
+ }).extend(bundlerActions);
134
+
135
+ console.log(' ā³ Waiting for execution (can take up to 60s)...');
136
+ try {
137
+ const receipt = await bundlerClient.waitForUserOperationReceipt({
138
+ hash: userOpHash,
139
+ timeout: 120000 // 2 minutes timeout
140
+ });
141
+
142
+ console.log(`\nšŸŽ‰ SUCCESS! Transaction confirmed: ${receipt.receipt.transactionHash}`);
143
+ console.log(`šŸ”— Etherscan: https://sepolia.etherscan.io/tx/${receipt.receipt.transactionHash}`);
144
+ } catch (e) {
145
+ console.log('\nāŒ› Still pending or timed out... check on jiffyscan later.');
146
+ console.error(e);
147
+ }
148
+ }
149
+
150
+ main().catch(console.error);
@@ -0,0 +1,174 @@
1
+ import { createPublicClient, createWalletClient, http, parseEther, formatEther, type Address, encodeFunctionData, concat, type Hex, decodeErrorResult } from 'viem';
2
+ import { privateKeyToAccount } from 'viem/accounts';
3
+ import { sepolia } from 'viem/chains';
4
+ // import { PaymasterClient, PaymasterOperator } from '../packages/paymaster/src/V4/index.ts';
5
+ import { loadNetworkConfig } from './regression/config.js';
6
+ import * as dotenv from 'dotenv';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+
10
+ dotenv.config({ path: '.env.sepolia' });
11
+
12
+ async function main() {
13
+ const config = await loadNetworkConfig('sepolia');
14
+ const rpcUrl = process.env.RPC_URL || 'https://eth-sepolia.g.alchemy.com/v2/your-key';
15
+
16
+ // Dynamic import to avoid config mismatch
17
+ const { PaymasterClient, PaymasterOperator } = await import('../packages/paymaster/src/V4/index.js');
18
+
19
+
20
+ // 1. Roles & Accounts
21
+ const anniAccount = privateKeyToAccount(process.env.PRIVATE_KEY_ANNI as `0x${string}`);
22
+ const jasonAccount = privateKeyToAccount(process.env.PRIVATE_KEY_JASON as `0x${string}`);
23
+
24
+ const publicClient = createPublicClient({ chain: sepolia, transport: http(rpcUrl) });
25
+ const anniWallet = createWalletClient({ account: anniAccount, chain: sepolia, transport: http(rpcUrl) });
26
+ const jasonWallet = createWalletClient({ account: jasonAccount, chain: sepolia, transport: http(rpcUrl) });
27
+
28
+ // Load AA addresses from l4-state.json
29
+ const statePath = path.resolve(process.cwd(), 'scripts/l4-state.json');
30
+ const state = JSON.parse(fs.readFileSync(statePath, 'utf8'));
31
+ const jasonAA2 = state.aaAccounts.find((aa: any) => aa.label === 'Jason (AAStar)_AA2')?.address as Address;
32
+ const jasonPM = state.operators["Jason (AAStar)"].pmV4 as Address;
33
+
34
+ const dPNTs = config.contracts.aPNTs as Address;
35
+ const entryPoint = config.contracts.entryPoint as Address;
36
+
37
+ console.log('šŸš€ JASON AA2 Gasless Transaction via JASON OWN Paymaster');
38
+ console.log(`Jason AA2: ${jasonAA2}`);
39
+ console.log(`Operator (Jason): ${jasonAccount.address}`);
40
+ console.log(`Paymaster: ${jasonPM}`);
41
+ console.log(`Token: ${dPNTs}\n`);
42
+
43
+ // --- STEP 1: PRE-FLIGHT CHECK ---
44
+ console.log('šŸ” Step 1: Running SDK Readiness Check...');
45
+ const report = await PaymasterOperator.checkGaslessReadiness(
46
+ publicClient,
47
+ entryPoint,
48
+ jasonPM,
49
+ jasonAA2,
50
+ dPNTs
51
+ );
52
+
53
+ if (!report.isReady) {
54
+ console.log(' āš ļø Readiness Check Issues Found:');
55
+ report.issues.forEach(issue => console.log(` - ${issue}`));
56
+
57
+ // --- STEP 2: AUTOMATED PREPARATION ---
58
+ console.log('\nšŸ› ļø Step 2: Running Automated Environment Preparation...');
59
+ const results = await PaymasterOperator.prepareGaslessEnvironment(
60
+ jasonWallet,
61
+ publicClient,
62
+ entryPoint,
63
+ jasonPM,
64
+ dPNTs,
65
+ {
66
+ tokenPriceUSD: 100000000n, // $1.00
67
+ minStake: parseEther('0.1'),
68
+ minDeposit: parseEther('0.2')
69
+ }
70
+ );
71
+
72
+ if (results.length > 0) {
73
+ console.log(` šŸ“ Sent ${results.length} preparation transactions.`);
74
+ for (const s of results) {
75
+ console.log(` - ${s.step}: ${s.hash}`);
76
+ await publicClient.waitForTransactionReceipt({ hash: s.hash as `0x${string}` });
77
+ }
78
+ console.log(' āœ… Environment Prepared.');
79
+ } else {
80
+ console.log(' āœ“ Environment already partially prepared (transactions skipped).');
81
+ }
82
+ } else {
83
+ console.log(' āœ… SDK Readiness Check Passed! All systems go.');
84
+ }
85
+
86
+ // --- STEP 3: USER DEPOSIT (If missing) ---
87
+ console.log('\nšŸ’° Step 3: Checking User Paymaster Deposit...');
88
+ let userDeposit = await PaymasterClient.getDepositedBalance(publicClient, jasonPM, jasonAA2, dPNTs);
89
+ console.log(` Jason AA2 Deposit: ${formatEther(userDeposit)} dPNTs`);
90
+
91
+ if (userDeposit < parseEther('10')) {
92
+ console.log(' šŸ¦ Deposit too low. Seeding 50 dPNTs from Anni EOA...');
93
+ // Anni EOA (Operator/Community) approves and deposits for Jason
94
+ const approveHash = await anniWallet.writeContract({
95
+ address: dPNTs,
96
+ abi: [{ name: 'approve', type: 'function', inputs: [{ name: 'spender', type: 'address' }, { name: 'value', type: 'uint256' }], outputs: [{ type: 'bool' }], stateMutability: 'nonpayable' }],
97
+ functionName: 'approve',
98
+ args: [jasonPM, parseEther('100')]
99
+ });
100
+ await publicClient.waitForTransactionReceipt({ hash: approveHash });
101
+
102
+ const depositHash = await PaymasterClient.depositFor(anniWallet, jasonPM, jasonAA2, dPNTs, parseEther('50'));
103
+ await publicClient.waitForTransactionReceipt({ hash: depositHash });
104
+ console.log(' āœ… 50 dPNTs deposited.');
105
+ }
106
+
107
+ // --- STEP 4: GASLESS TRANSACTION ---
108
+ console.log('\nšŸ“¤ Step 4: Submitting Gasless UserOperation...');
109
+ const transferCalldata = encodeFunctionData({
110
+ abi: [{ name: 'execute', type: 'function', inputs: [{ name: 'dest', type: 'address' }, { name: 'value', type: 'uint256' }, { name: 'func', type: 'bytes' }], outputs: [], stateMutability: 'nonpayable' }],
111
+ functionName: 'execute',
112
+ args: [
113
+ dPNTs,
114
+ 0n,
115
+ encodeFunctionData({
116
+ abi: [{ name: 'transfer', type: 'function', inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }], outputs: [{ type: 'bool' }], stateMutability: 'nonpayable' }],
117
+ functionName: 'transfer',
118
+ args: [anniAccount.address, parseEther('1')] // Transfer 1 dPNT back to Anni
119
+ })
120
+ ]
121
+ });
122
+
123
+ try {
124
+ const userOpHash = await PaymasterClient.submitGaslessUserOperation(
125
+ publicClient,
126
+ jasonWallet,
127
+ jasonAA2,
128
+ entryPoint,
129
+ jasonPM,
130
+ dPNTs,
131
+ config.bundlerUrl!,
132
+ transferCalldata
133
+ // {
134
+ // // Let SDK determine dynamic gas prices
135
+ // }
136
+ );
137
+
138
+ console.log(` āœ… UserOp submitted! Hash: ${userOpHash}`);
139
+ console.log(' ā³ Waiting for execution...');
140
+
141
+ let receipt = null;
142
+ for (let i = 0; i < 20; i++) {
143
+ const res = await fetch(process.env.BUNDLER_URL!, {
144
+ method: 'POST',
145
+ headers: { 'Content-Type': 'application/json' },
146
+ body: JSON.stringify({
147
+ jsonrpc: '2.0',
148
+ id: 1,
149
+ method: 'eth_getUserOperationReceipt',
150
+ params: [userOpHash]
151
+ })
152
+ });
153
+ const data = await res.json();
154
+ if (data.result) {
155
+ receipt = data.result;
156
+ break;
157
+ }
158
+ await new Promise(r => setTimeout(r, 5000));
159
+ }
160
+
161
+ if (receipt) {
162
+ console.log(` šŸŽ‰ UserOp Executed! Transaction: ${receipt.receipt.transactionHash}`);
163
+ console.log(` ⛽ Gas Used: ${BigInt(receipt.actualGasUsed).toString()}`);
164
+ console.log(` šŸ’ø Fee Paid: ${formatEther(BigInt(receipt.actualGasCost))} ETH (sponsored by dPNTs)`);
165
+ } else {
166
+ console.log(' āŒ Polling timeout. Check Etherscan for status.');
167
+ }
168
+
169
+ } catch (e: any) {
170
+ console.error(' āŒ Submission Failed:', e.message);
171
+ }
172
+ }
173
+
174
+ main().catch(console.error);
@@ -0,0 +1,111 @@
1
+ // Test 1: Paymaster V4 Deposit Model - depositFor AA user (no SBT required)
2
+ import { createPublicClient, createWalletClient, http, parseEther, formatEther, type Address } from 'viem';
3
+ import { privateKeyToAccount } from 'viem/accounts';
4
+ import { sepolia } from 'viem/chains';
5
+ import { paymasterV4Actions, tokenActions } from '../packages/core/dist/index.js';
6
+ import { loadNetworkConfig } from '../tests/regression/config.js';
7
+ import * as dotenv from 'dotenv';
8
+ import path from 'path';
9
+ import fs from 'fs';
10
+
11
+ dotenv.config({ path: path.resolve(process.cwd(), '.env.sepolia') });
12
+
13
+ async function main() {
14
+ const config = loadNetworkConfig('sepolia');
15
+ const publicClient = createPublicClient({ chain: sepolia, transport: http(config.rpcUrl) });
16
+
17
+ // Load accounts
18
+ const bobKey = process.env.PRIVATE_KEY_BOB as `0x${string}`;
19
+ const bob = privateKeyToAccount(bobKey);
20
+ const bobClient = createWalletClient({ account: bob, chain: sepolia, transport: http(config.rpcUrl) });
21
+
22
+ // Load state from l4-state.json
23
+ const statePath = path.resolve(process.cwd(), 'scripts/l4-state.json');
24
+ const state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
25
+
26
+ // Bob's Paymaster V4 and AA user
27
+ const bobPaymaster = state.operators.bob.paymasterV4 as Address;
28
+ const bPNTs = state.operators.bob.tokenAddress as Address;
29
+ const bobAA1 = state.aaAccounts.find((aa: any) => aa.label === 'Bob (Bread)_AA1')!.address as Address;
30
+
31
+ const pmV4 = paymasterV4Actions(bobPaymaster);
32
+
33
+ console.log('šŸ“¦ Test 1: Paymaster V4 Deposit Model\n');
34
+ console.log(`Paymaster V4: ${bobPaymaster}`);
35
+ console.log(`Test AA User: ${bobAA1}`);
36
+ console.log(`Gas Token: bPNTs (${bPNTs})\n`);
37
+
38
+ // Step 1: Check if token is supported (tokenPrices should be > 0)
39
+ console.log('Step 1: Checking token price...');
40
+ const tokenPrice = await pmV4(publicClient).tokenPrices({ token: bPNTs });
41
+ console.log(` Token Price: ${tokenPrice} (${tokenPrice > 0 ? 'āœ… Supported' : 'āŒ Not Supported'})`);
42
+
43
+ if (tokenPrice === 0n) {
44
+ console.log(' āš ļø Token not supported! Owner needs to call setTokenPrice()');
45
+ console.log(` Calling setTokenPrice(${bPNTs}, 20000000) ... (0.02 USD with 8 decimals)`);
46
+ const setPriceHash = await pmV4(bobClient).setTokenPrice({
47
+ token: bPNTs,
48
+ price: 20000000n, // $0.02 with 8 decimals
49
+ account: bob
50
+ });
51
+ await publicClient.waitForTransactionReceipt({ hash: setPriceHash });
52
+ console.log(' āœ… Token price set!\n');
53
+ }
54
+
55
+ // Step 2: Check AA user's current balance
56
+ console.log('\nStep 2: Checking AA user balance...');
57
+ const currentBalance = await pmV4(publicClient).balances({ user: bobAA1, token: bPNTs });
58
+ console.log(` Current Balance: ${formatEther(currentBalance)} bPNTs`);
59
+
60
+ // Step 3: depositFor AA user
61
+ const depositAmount = parseEther('100');
62
+ console.log(`\nStep 3: Depositing ${formatEther(depositAmount)} bPNTs for AA user...`);
63
+
64
+ // Bob needs bPNTs balance and approval
65
+ const token = tokenActions();
66
+ const bobBalance = await token(publicClient).balanceOf({ token: bPNTs, account: bob.address });
67
+ console.log(` Bob's bPNTs Balance: ${formatEther(bobBalance)}`);
68
+
69
+ if (bobBalance < depositAmount) {
70
+ throw new Error(`Bob needs at least ${formatEther(depositAmount)} bPNTs`);
71
+ }
72
+
73
+ const allowance = await token(publicClient).allowance({ token: bPNTs, owner: bob.address, spender: bobPaymaster });
74
+ console.log(` Bob's Allowance: ${formatEther(allowance)}`);
75
+
76
+ if (allowance < depositAmount) {
77
+ console.log(' Approving Paymaster...');
78
+ const approveHash = await token(bobClient).approve({
79
+ token: bPNTs,
80
+ spender: bobPaymaster,
81
+ amount: parseEther('1000'),
82
+ account: bob
83
+ });
84
+ await publicClient.waitForTransactionReceipt({ hash: approveHash });
85
+ console.log(' āœ… Approved!');
86
+ }
87
+
88
+ console.log(' Calling depositFor...');
89
+ const depositHash = await pmV4(bobClient).depositFor({
90
+ user: bobAA1,
91
+ token: bPNTs,
92
+ amount: depositAmount,
93
+ account: bob
94
+ });
95
+ await publicClient.waitForTransactionReceipt({ hash: depositHash });
96
+ console.log(` āœ… Deposited! Tx: ${depositHash}\n`);
97
+
98
+ // Step 4: Verify new balance
99
+ console.log('Step 4: Verifying new balance...');
100
+ const newBalance = await pmV4(publicClient).balances({ user: bobAA1, token: bPNTs });
101
+ console.log(` New Balance: ${formatEther(newBalance)} bPNTs`);
102
+ console.log(` Delta: +${formatEther(newBalance - currentBalance)} bPNTs\n`);
103
+
104
+ console.log('āœ… Test 1 Complete!');
105
+ console.log(`\nSummary:`);
106
+ console.log(` - AA User ${bobAA1} now has ${formatEther(newBalance)} bPNTs deposited`);
107
+ console.log(` - User can perform gasless transactions without SBT`);
108
+ console.log(` - UserOp paymasterAndData should include bPNTs address at offset 52`);
109
+ }
110
+
111
+ main().catch(console.error);
@@ -0,0 +1,166 @@
1
+ // Test 2: Paymaster V4 Gasless Transaction - Transfer using deposited bPNTs
2
+ import { createPublicClient, createWalletClient, http, parseEther, formatEther, encodeFunctionData, type Address } from 'viem';
3
+ import { privateKeyToAccount } from 'viem/accounts';
4
+ import { sepolia } from 'viem/chains';
5
+ import { paymasterV4Actions, tokenActions } from '../packages/core/dist/index.js';
6
+ import { UserOperationBuilder } from '../packages/sdk/dist/utils/userOp.js';
7
+ import { loadNetworkConfig } from '../tests/regression/config.js';
8
+ import * as dotenv from 'dotenv';
9
+ import path from 'path';
10
+ import fs from 'fs';
11
+
12
+ dotenv.config({ path: path.resolve(process.cwd(), '.env.sepolia') });
13
+
14
+ async function main() {
15
+ const config = loadNetworkConfig('sepolia');
16
+ const publicClient = createPublicClient({ chain: sepolia, transport: http(config.rpcUrl) });
17
+
18
+ // Load state from l4-state.json
19
+ const statePath = path.resolve(process.cwd(), 'scripts/l4-state.json');
20
+ const state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
21
+
22
+ // Bob's AA and Paymaster
23
+ const bobAAInfo = state.aaAccounts.find((aa: any) => aa.label === 'Bob (Bread)_AA1')!;
24
+ const bobAA = bobAAInfo.address as Address;
25
+ const bobEOA = bobAAInfo.owner as Address;
26
+ const bobPaymaster = state.operators.bob.paymasterV4 as Address;
27
+ const bPNTs = state.operators.bob.tokenAddress as Address;
28
+
29
+ // Bob's private key (owner of AA)
30
+ const bobKey = process.env.PRIVATE_KEY_BOB as `0x${string}`;
31
+ const bob = privateKeyToAccount(bobKey);
32
+
33
+ console.log('šŸ“¦ Test 2: Paymaster V4 Gasless Transaction\n');
34
+ console.log(`AA Account: ${bobAA}`);
35
+ console.log(`Paymaster V4: ${bobPaymaster}`);
36
+ console.log(`Gas Token: bPNTs (${bPNTs})\n`);
37
+
38
+ // Step 1: Verify deposited balance
39
+ const pmV4 = paymasterV4Actions(bobPaymaster);
40
+ const depositedBalance = await pmV4(publicClient).balances({ user: bobAA, token: bPNTs });
41
+ console.log(`Step 1: Verifying deposited balance...`);
42
+ console.log(` Deposited Balance: ${formatEther(depositedBalance)} bPNTs`);
43
+
44
+ if (depositedBalance === 0n) {
45
+ throw new Error('No deposited balance! Run l4-test-pmv4-deposit.ts first');
46
+ }
47
+
48
+ // Step 2: Construct UserOp for a simple dPNT transfer
49
+ console.log(`\nStep 2: Constructing gasless UserOp...`);
50
+
51
+ const dPNTs = state.operators.anni.tokenAddress as Address; // Use Anni's token as test recipient token
52
+ const transferAmount = parseEther('2');
53
+ const recipient = bobEOA; // Send to Bob's EOA
54
+
55
+ // Encode ERC20 transfer calldata
56
+ const transferCalldata = encodeFunctionData({
57
+ abi: [{
58
+ name: 'transfer',
59
+ type: 'function',
60
+ inputs: [
61
+ { name: 'to', type: 'address' },
62
+ { name: 'amount', type: 'uint256' }
63
+ ],
64
+ outputs: [{ type: 'bool' }],
65
+ stateMutability: 'nonpayable'
66
+ }],
67
+ functionName: 'transfer',
68
+ args: [recipient, transferAmount]
69
+ });
70
+
71
+ // Build UserOp
72
+ const builder = new UserOperationBuilder(
73
+ config.contracts.entryPoint as Address,
74
+ publicClient,
75
+ sepolia.id
76
+ );
77
+
78
+ const nonce = await publicClient.readContract({
79
+ address: bobAA,
80
+ abi: [{
81
+ name: 'getNonce',
82
+ type: 'function',
83
+ inputs: [],
84
+ outputs: [{ type: 'uint256' }],
85
+ stateMutability: 'view'
86
+ }],
87
+ functionName: 'getNonce'
88
+ });
89
+
90
+ // Pack paymasterAndData: [paymaster(20)][validUntil(6)][validAfter(6)][token(20)]
91
+ const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
92
+ const paymasterAndData = UserOperationBuilder.packPaymasterV4DepositData(
93
+ bobPaymaster,
94
+ currentTimestamp + 3600n, // validUntil: 1 hour from now
95
+ currentTimestamp - 60n, // validAfter: 1 minute ago
96
+ bPNTs // payment token at offset 52
97
+ );
98
+
99
+ const userOp = {
100
+ sender: bobAA,
101
+ nonce,
102
+ initCode: '0x' as `0x${string}`, // Empty for already deployed AA
103
+ callData: encodeFunctionData({
104
+ abi: [{
105
+ name: 'execute',
106
+ type: 'function',
107
+ inputs: [
108
+ { name: 'dest', type: 'address' },
109
+ { name: 'value', type: 'uint256' },
110
+ { name: 'func', type: 'bytes' }
111
+ ],
112
+ outputs: [],
113
+ stateMutability: 'nonpayable'
114
+ }],
115
+ functionName: 'execute',
116
+ args: [dPNTs, 0n, transferCalldata]
117
+ }),
118
+ accountGasLimits: UserOperationBuilder.packAccountGasLimits(200000n, 200000n),
119
+ preVerificationGas: 100000n,
120
+ gasFees: UserOperationBuilder.packGasFees(1n, 1n),
121
+ paymasterAndData,
122
+ signature: '0x' as `0x${string}` // Placeholder, will be replaced after signing
123
+ };
124
+
125
+ console.log(` UserOp constructed`);
126
+ console.log(` - Sender: ${userOp.sender}`);
127
+ console.log(` - Nonce: ${userOp.nonce}`);
128
+ console.log(` - Paymaster: ${bobPaymaster}`);
129
+ console.log(` - Payment Token: ${bPNTs} (at offset 52)`);
130
+ console.log(` - paymasterAndData length: ${paymasterAndData.length} bytes`);
131
+
132
+ // Step 3: Get UserOp hash and sign
133
+ console.log(`\nStep 3: Signing UserOp...`);
134
+
135
+ // Create a copy of userOp with empty signature for hash calculation
136
+ const userOpForHash = { ...userOp, signature: '0x' as `0x${string}` };
137
+
138
+ const userOpHash = await UserOperationBuilder.getUserOpHash({
139
+ userOp: userOpForHash,
140
+ entryPoint: config.contracts.entryPoint as Address,
141
+ chainId: sepolia.id,
142
+ publicClient
143
+ });
144
+ console.log(` UserOp Hash: ${userOpHash}`);
145
+
146
+ const signature = await bob.signMessage({ message: { raw: userOpHash } });
147
+ userOp.signature = signature;
148
+ console.log(` Signature: ${signature.slice(0, 20)}...`);
149
+
150
+ // Step 4: Convert to Alchemy format and display
151
+ console.log(`\nStep 4: UserOp ready for submission`);
152
+ const alchemyUserOp = UserOperationBuilder.toAlchemyUserOperation(userOp);
153
+
154
+ console.log(`\nāœ… Test 2 Complete!`);
155
+ console.log(`\nSummary:`);
156
+ console.log(` - AA user ${bobAA} constructed gasless UserOp`);
157
+ console.log(` - Transfer 2 dPNTs to ${recipient}`);
158
+ console.log(` - Uses deposited ${formatEther(depositedBalance)} bPNTs for gas payment`);
159
+ console.log(` - No SBT required (Deposit-Only model)`);
160
+ console.log(`\nNext Step: Submit to Bundler via eth_sendUserOperation`);
161
+ console.log(JSON.stringify(alchemyUserOp, (key, value) =>
162
+ typeof value === 'bigint' ? value.toString() : value
163
+ , 2));
164
+ }
165
+
166
+ main().catch(console.error);