@aastar/sdk 0.16.6 → 0.16.11

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 (662) hide show
  1. package/.github/workflows/gas-analytics-daily.yml +52 -0
  2. package/CHANGELOG.md +43 -0
  3. package/README.md +39 -139
  4. package/backup/run_sdk_regression.sh +135 -0
  5. package/config.anvil.json +1 -1
  6. package/config.sepolia.json +19 -1
  7. package/docs/API_REFERENCE.md +9 -169
  8. package/docs/L4_Manual_Test_CheatSheet.md +22 -65
  9. package/docs/Reputation-to-Credit_Mapping_Whitepaper.md +242 -0
  10. package/docs/TESTER_GUIDE_GASLESS.md +23 -277
  11. package/docs/api/@aastar/account/README.md +15 -0
  12. package/docs/api/@aastar/account/classes/UserOpClient.md +87 -0
  13. package/docs/api/@aastar/account/functions/createEOAWalletClient.md +21 -0
  14. package/docs/api/@aastar/account/functions/getUserOpHash.md +23 -0
  15. package/docs/api/@aastar/account/functions/packUserOpLimits.md +19 -0
  16. package/docs/api/@aastar/account/functions/toSimpleSmartAccount.md +83 -0
  17. package/docs/api/@aastar/account/type-aliases/EOAWalletClient.md +37 -0
  18. package/docs/api/@aastar/account/type-aliases/SimpleSmartAccount.md +39 -0
  19. package/docs/api/@aastar/core/README.md +211 -0
  20. package/docs/api/@aastar/core/classes/BLSSigner.md +147 -0
  21. package/docs/api/@aastar/core/classes/BaseClient.md +9657 -0
  22. package/docs/api/@aastar/core/classes/ContractConfigManager.md +25 -0
  23. package/docs/api/@aastar/core/classes/RequirementChecker.md +1837 -0
  24. package/docs/api/@aastar/core/classes/SepoliaFaucetAPI.md +13661 -0
  25. package/docs/api/@aastar/core/classes/StateValidator.md +133 -0
  26. package/docs/api/@aastar/core/enumerations/EntryPointVersion.md +17 -0
  27. package/docs/api/@aastar/core/enumerations/NodeType.md +33 -0
  28. package/docs/api/@aastar/core/enumerations/RolePermissionLevel.md +43 -0
  29. package/docs/api/@aastar/core/functions/accountActions.md +2720 -0
  30. package/docs/api/@aastar/core/functions/accountFactoryActions.md +2720 -0
  31. package/docs/api/@aastar/core/functions/aggregatorActions.md +2720 -0
  32. package/docs/api/@aastar/core/functions/createAAStarPublicClient.md +3105 -0
  33. package/docs/api/@aastar/core/functions/dvtActions.md +2720 -0
  34. package/docs/api/@aastar/core/functions/entryPointActions.md +2724 -0
  35. package/docs/api/@aastar/core/functions/gTokenActions.md +2714 -0
  36. package/docs/api/@aastar/core/functions/gTokenExtendedActions.md +2720 -0
  37. package/docs/api/@aastar/core/functions/getAddressUrl.md +32 -0
  38. package/docs/api/@aastar/core/functions/getAllCommunityConfigs.md +9 -0
  39. package/docs/api/@aastar/core/functions/getAllV2Contracts.md +20 -0
  40. package/docs/api/@aastar/core/functions/getBlockExplorer.md +26 -0
  41. package/docs/api/@aastar/core/functions/getChainId.md +26 -0
  42. package/docs/api/@aastar/core/functions/getCommunities.md +76 -0
  43. package/docs/api/@aastar/core/functions/getCommunity.md +32 -0
  44. package/docs/api/@aastar/core/functions/getCommunityConfig.md +15 -0
  45. package/docs/api/@aastar/core/functions/getContract.md +37 -0
  46. package/docs/api/@aastar/core/functions/getContractNetworks.md +18 -0
  47. package/docs/api/@aastar/core/functions/getContracts.md +194 -0
  48. package/docs/api/@aastar/core/functions/getCoreContracts.md +71 -0
  49. package/docs/api/@aastar/core/functions/getDeploymentDate.md +32 -0
  50. package/docs/api/@aastar/core/functions/getEntryPoint.md +25 -0
  51. package/docs/api/@aastar/core/functions/getNetwork.md +26 -0
  52. package/docs/api/@aastar/core/functions/getPaymasterV4_1.md +25 -0
  53. package/docs/api/@aastar/core/functions/getRoleName.md +15 -0
  54. package/docs/api/@aastar/core/functions/getRpcUrl.md +25 -0
  55. package/docs/api/@aastar/core/functions/getSimpleAccountFactory.md +25 -0
  56. package/docs/api/@aastar/core/functions/getSuperPaymasterV2.md +25 -0
  57. package/docs/api/@aastar/core/functions/getTestAccounts.md +30 -0
  58. package/docs/api/@aastar/core/functions/getTestTokenContracts.md +38 -0
  59. package/docs/api/@aastar/core/functions/getTokenContracts.md +31 -0
  60. package/docs/api/@aastar/core/functions/getTxUrl.md +32 -0
  61. package/docs/api/@aastar/core/functions/getV2ContractByAddress.md +28 -0
  62. package/docs/api/@aastar/core/functions/getV2ContractByName.md +28 -0
  63. package/docs/api/@aastar/core/functions/getV2ContractsByDate.md +26 -0
  64. package/docs/api/@aastar/core/functions/isContractNetworkSupported.md +27 -0
  65. package/docs/api/@aastar/core/functions/isRegisteredCommunity.md +15 -0
  66. package/docs/api/@aastar/core/functions/isV2Contract.md +27 -0
  67. package/docs/api/@aastar/core/functions/paymasterActions.md +2720 -0
  68. package/docs/api/@aastar/core/functions/paymasterFactoryActions.md +2720 -0
  69. package/docs/api/@aastar/core/functions/registryActions.md +2720 -0
  70. package/docs/api/@aastar/core/functions/reputationActions.md +2720 -0
  71. package/docs/api/@aastar/core/functions/sbtActions.md +2720 -0
  72. package/docs/api/@aastar/core/functions/stakingActions.md +2720 -0
  73. package/docs/api/@aastar/core/functions/superPaymasterActions.md +2720 -0
  74. package/docs/api/@aastar/core/functions/tokenActions.md +2714 -0
  75. package/docs/api/@aastar/core/functions/xPNTsFactoryActions.md +2720 -0
  76. package/docs/api/@aastar/core/interfaces/AccountBalance.md +41 -0
  77. package/docs/api/@aastar/core/interfaces/BalanceValidationParams.md +51 -0
  78. package/docs/api/@aastar/core/interfaces/ClientConfig.md +4841 -0
  79. package/docs/api/@aastar/core/interfaces/CommunityConfig.md +81 -0
  80. package/docs/api/@aastar/core/interfaces/ContractVersion.md +63 -0
  81. package/docs/api/@aastar/core/interfaces/DeploymentValidationParams.md +39 -0
  82. package/docs/api/@aastar/core/interfaces/RoleConfig.md +83 -0
  83. package/docs/api/@aastar/core/interfaces/RoleRequirement.md +43 -0
  84. package/docs/api/@aastar/core/interfaces/RoleValidationParams.md +55 -0
  85. package/docs/api/@aastar/core/interfaces/SuperPaymasterConfig.md +57 -0
  86. package/docs/api/@aastar/core/interfaces/TokenBalanceValidationParams.md +63 -0
  87. package/docs/api/@aastar/core/interfaces/TransactionOptions.md +24 -0
  88. package/docs/api/@aastar/core/interfaces/ValidationParams.md +25 -0
  89. package/docs/api/@aastar/core/interfaces/ValidationResult.md +25 -0
  90. package/docs/api/@aastar/core/type-aliases/AccountActions.md +151 -0
  91. package/docs/api/@aastar/core/type-aliases/AccountFactoryActions.md +55 -0
  92. package/docs/api/@aastar/core/type-aliases/AggregatorActions.md +471 -0
  93. package/docs/api/@aastar/core/type-aliases/BusinessResult.md +12 -0
  94. package/docs/api/@aastar/core/type-aliases/ContractCategory.md +5 -0
  95. package/docs/api/@aastar/core/type-aliases/ContractNetwork.md +5 -0
  96. package/docs/api/@aastar/core/type-aliases/DVTActions.md +319 -0
  97. package/docs/api/@aastar/core/type-aliases/EntryPointActions.md +103 -0
  98. package/docs/api/@aastar/core/type-aliases/GTokenExtendedActions.md +239 -0
  99. package/docs/api/@aastar/core/type-aliases/NetworkContracts.md +5 -0
  100. package/docs/api/@aastar/core/type-aliases/PaymasterActions.md +1087 -0
  101. package/docs/api/@aastar/core/type-aliases/PaymasterFactoryActions.md +263 -0
  102. package/docs/api/@aastar/core/type-aliases/RegistryActions.md +1543 -0
  103. package/docs/api/@aastar/core/type-aliases/ReputationActions.md +811 -0
  104. package/docs/api/@aastar/core/type-aliases/SBTActions.md +1199 -0
  105. package/docs/api/@aastar/core/type-aliases/StakingActions.md +703 -0
  106. package/docs/api/@aastar/core/type-aliases/SuperPaymasterActions.md +1311 -0
  107. package/docs/api/@aastar/core/type-aliases/SupportedNetwork.md +3 -0
  108. package/docs/api/@aastar/core/type-aliases/TokenActions.md +1227 -0
  109. package/docs/api/@aastar/core/type-aliases/XPNTsFactoryActions.md +395 -0
  110. package/docs/api/@aastar/core/variables/AASTAR_COMMUNITY.md +8 -0
  111. package/docs/api/@aastar/core/variables/ALL_ADDRESSES.md +75 -0
  112. package/docs/api/@aastar/core/variables/ALL_ROLES.md +5 -0
  113. package/docs/api/@aastar/core/variables/APNTS_ADDRESS.md +3 -0
  114. package/docs/api/@aastar/core/variables/BLSAggregatorABI.md +3 -0
  115. package/docs/api/@aastar/core/variables/BLSAggregatorArtifact.md +13 -0
  116. package/docs/api/@aastar/core/variables/BLSHelpers.md +101 -0
  117. package/docs/api/@aastar/core/variables/BLSValidatorABI.md +3 -0
  118. package/docs/api/@aastar/core/variables/BLSValidatorArtifact.md +13 -0
  119. package/docs/api/@aastar/core/variables/BLS_AGGREGATOR_ADDRESS.md +3 -0
  120. package/docs/api/@aastar/core/variables/BLS_VALIDATOR_ADDRESS.md +3 -0
  121. package/docs/api/@aastar/core/variables/BPS_DENOMINATOR.md +5 -0
  122. package/docs/api/@aastar/core/variables/BRANDING.md +67 -0
  123. package/docs/api/@aastar/core/variables/BREAD_COMMUNITY.md +8 -0
  124. package/docs/api/@aastar/core/variables/CHAIN_MAINNET.md +3 -0
  125. package/docs/api/@aastar/core/variables/CHAIN_SEPOLIA.md +5 -0
  126. package/docs/api/@aastar/core/variables/COMMUNITIES.md +5 -0
  127. package/docs/api/@aastar/core/variables/COMMUNITY_OWNERS.md +15 -0
  128. package/docs/api/@aastar/core/variables/CONTRACTS.md +179 -0
  129. package/docs/api/@aastar/core/variables/CONTRACT_METADATA.md +67 -0
  130. package/docs/api/@aastar/core/variables/CONTRACT_SRC_HASH.md +5 -0
  131. package/docs/api/@aastar/core/variables/CORE_ADDRESSES.md +51 -0
  132. package/docs/api/@aastar/core/variables/DEFAULT_ADMIN_ROLE.md +17 -0
  133. package/docs/api/@aastar/core/variables/DEFAULT_APNTS_PRICE_USD.md +5 -0
  134. package/docs/api/@aastar/core/variables/DEFAULT_CALL_GAS_LIMIT.md +3 -0
  135. package/docs/api/@aastar/core/variables/DEFAULT_GAS_TOKEN_MINT_AMOUNT.md +5 -0
  136. package/docs/api/@aastar/core/variables/DEFAULT_PRE_VERIFICATION_GAS.md +3 -0
  137. package/docs/api/@aastar/core/variables/DEFAULT_TIMEOUT_MS.md +5 -0
  138. package/docs/api/@aastar/core/variables/DEFAULT_TOKEN_NAME.md +3 -0
  139. package/docs/api/@aastar/core/variables/DEFAULT_TOKEN_SYMBOL.md +5 -0
  140. package/docs/api/@aastar/core/variables/DEFAULT_USDT_MINT_AMOUNT.md +5 -0
  141. package/docs/api/@aastar/core/variables/DEFAULT_VERIFICATION_GAS_LIMIT.md +5 -0
  142. package/docs/api/@aastar/core/variables/DVTValidatorABI.md +3 -0
  143. package/docs/api/@aastar/core/variables/DVTValidatorArtifact.md +13 -0
  144. package/docs/api/@aastar/core/variables/DVT_VALIDATOR_ADDRESS.md +3 -0
  145. package/docs/api/@aastar/core/variables/ENTRY_POINT_0_8_ADDRESS.md +3 -0
  146. package/docs/api/@aastar/core/variables/ENTRY_POINT_0_9_ADDRESS.md +3 -0
  147. package/docs/api/@aastar/core/variables/ENTRY_POINT_ADDRESS.md +3 -0
  148. package/docs/api/@aastar/core/variables/EntryPointABI.md +3 -0
  149. package/docs/api/@aastar/core/variables/EntryPointArtifact.md +13 -0
  150. package/docs/api/@aastar/core/variables/FAUCET_API_URL.md +5 -0
  151. package/docs/api/@aastar/core/variables/GTOKEN_ADDRESS.md +3 -0
  152. package/docs/api/@aastar/core/variables/GTOKEN_STAKING_ADDRESS.md +3 -0
  153. package/docs/api/@aastar/core/variables/GTokenABI.md +3 -0
  154. package/docs/api/@aastar/core/variables/GTokenArtifact.md +13 -0
  155. package/docs/api/@aastar/core/variables/GTokenStakingABI.md +3 -0
  156. package/docs/api/@aastar/core/variables/GTokenStakingArtifact.md +13 -0
  157. package/docs/api/@aastar/core/variables/INITIAL_ROLE_STAKES.md +13 -0
  158. package/docs/api/@aastar/core/variables/LINKS.md +33 -0
  159. package/docs/api/@aastar/core/variables/MAX_SERVICE_FEE.md +5 -0
  160. package/docs/api/@aastar/core/variables/MONITORING_ADDRESSES.md +15 -0
  161. package/docs/api/@aastar/core/variables/MySBTABI.md +3 -0
  162. package/docs/api/@aastar/core/variables/MySBTArtifact.md +13 -0
  163. package/docs/api/@aastar/core/variables/NETWORKS.md +79 -0
  164. package/docs/api/@aastar/core/variables/NODE_STAKE_AMOUNTS.md +31 -0
  165. package/docs/api/@aastar/core/variables/OFFICIAL_ADDRESSES.md +11 -0
  166. package/docs/api/@aastar/core/variables/PAYMASTER_ADDRESSES.md +15 -0
  167. package/docs/api/@aastar/core/variables/PAYMASTER_FACTORY_ADDRESS.md +3 -0
  168. package/docs/api/@aastar/core/variables/PAYMASTER_V4_IMPL_ADDRESS.md +3 -0
  169. package/docs/api/@aastar/core/variables/PaymasterABI.md +3 -0
  170. package/docs/api/@aastar/core/variables/PaymasterArtifact.md +13 -0
  171. package/docs/api/@aastar/core/variables/PaymasterFactoryABI.md +3 -0
  172. package/docs/api/@aastar/core/variables/PaymasterFactoryArtifact.md +13 -0
  173. package/docs/api/@aastar/core/variables/PaymasterV4ABI.md +3 -0
  174. package/docs/api/@aastar/core/variables/PaymasterV4Artifact.md +13 -0
  175. package/docs/api/@aastar/core/variables/REGISTRY_ADDRESS.md +3 -0
  176. package/docs/api/@aastar/core/variables/REPUTATION_SYSTEM_ADDRESS.md +3 -0
  177. package/docs/api/@aastar/core/variables/ROLE_ANODE.md +29 -0
  178. package/docs/api/@aastar/core/variables/ROLE_COMMUNITY.md +29 -0
  179. package/docs/api/@aastar/core/variables/ROLE_DVT.md +29 -0
  180. package/docs/api/@aastar/core/variables/ROLE_ENDUSER.md +33 -0
  181. package/docs/api/@aastar/core/variables/ROLE_KMS.md +29 -0
  182. package/docs/api/@aastar/core/variables/ROLE_NAMES.md +3 -0
  183. package/docs/api/@aastar/core/variables/ROLE_PAYMASTER_AOA.md +29 -0
  184. package/docs/api/@aastar/core/variables/ROLE_PAYMASTER_SUPER.md +33 -0
  185. package/docs/api/@aastar/core/variables/ROLE_PERMISSION_LEVELS.md +3 -0
  186. package/docs/api/@aastar/core/variables/RegistryABI.md +3 -0
  187. package/docs/api/@aastar/core/variables/RegistryArtifact.md +13 -0
  188. package/docs/api/@aastar/core/variables/ReputationSystemABI.md +3 -0
  189. package/docs/api/@aastar/core/variables/ReputationSystemArtifact.md +13 -0
  190. package/docs/api/@aastar/core/variables/SBT_ADDRESS.md +3 -0
  191. package/docs/api/@aastar/core/variables/SEPOLIA_CONTRACTS.md +175 -0
  192. package/docs/api/@aastar/core/variables/SEPOLIA_V2_VERSIONS.md +67 -0
  193. package/docs/api/@aastar/core/variables/SERVICE_FEE_RATE.md +5 -0
  194. package/docs/api/@aastar/core/variables/SUPER_PAYMASTER_ADDRESS.md +3 -0
  195. package/docs/api/@aastar/core/variables/SimpleAccountABI.md +3 -0
  196. package/docs/api/@aastar/core/variables/SimpleAccountArtifact.md +13 -0
  197. package/docs/api/@aastar/core/variables/SimpleAccountFactoryABI.md +3 -0
  198. package/docs/api/@aastar/core/variables/SimpleAccountFactoryArtifact.md +13 -0
  199. package/docs/api/@aastar/core/variables/SuperPaymasterABI.md +3 -0
  200. package/docs/api/@aastar/core/variables/SuperPaymasterArtifact.md +13 -0
  201. package/docs/api/@aastar/core/variables/TEST_ACCOUNT_ADDRESSES.md +11 -0
  202. package/docs/api/@aastar/core/variables/TEST_ACCOUNT_POOL_SIZE.md +5 -0
  203. package/docs/api/@aastar/core/variables/TEST_COMMUNITIES.md +19 -0
  204. package/docs/api/@aastar/core/variables/TEST_TOKEN_ADDRESSES.md +19 -0
  205. package/docs/api/@aastar/core/variables/TOKEN_ADDRESSES.md +11 -0
  206. package/docs/api/@aastar/core/variables/V2_SUMMARY.md +39 -0
  207. package/docs/api/@aastar/core/variables/XPNTS_FACTORY_ADDRESS.md +3 -0
  208. package/docs/api/@aastar/core/variables/xPNTsFactoryABI.md +3 -0
  209. package/docs/api/@aastar/core/variables/xPNTsFactoryArtifact.md +13 -0
  210. package/docs/api/@aastar/core/variables/xPNTsTokenABI.md +3 -0
  211. package/docs/api/@aastar/core/variables/xPNTsTokenArtifact.md +13 -0
  212. package/docs/api/@aastar/paymaster/README.md +23 -0
  213. package/docs/api/@aastar/paymaster/classes/PaymasterClient.md +388 -0
  214. package/docs/api/@aastar/paymaster/classes/PaymasterOperator.md +451 -0
  215. package/docs/api/@aastar/paymaster/classes/SuperPaymasterAdminClient.md +189 -0
  216. package/docs/api/@aastar/paymaster/classes/SuperPaymasterClient.md +55 -0
  217. package/docs/api/@aastar/paymaster/functions/buildPaymasterData.md +34 -0
  218. package/docs/api/@aastar/paymaster/functions/buildSuperPaymasterData.md +30 -0
  219. package/docs/api/@aastar/paymaster/functions/checkEligibility.md +28 -0
  220. package/docs/api/@aastar/paymaster/functions/formatUserOpV07.md +15 -0
  221. package/docs/api/@aastar/paymaster/functions/getPaymasterV4Middleware.md +32 -0
  222. package/docs/api/@aastar/paymaster/functions/getSuperPaymasterMiddleware.md +32 -0
  223. package/docs/api/@aastar/paymaster/functions/getUserOpHashV07.md +21 -0
  224. package/docs/api/@aastar/paymaster/type-aliases/GaslessReadinessReport.md +55 -0
  225. package/docs/api/@aastar/paymaster/type-aliases/GaslessTransactionConfig.md +59 -0
  226. package/docs/api/@aastar/paymaster/type-aliases/PaymasterConfig.md +43 -0
  227. package/docs/api/@aastar/paymaster/type-aliases/PaymasterV4MiddlewareConfig.md +35 -0
  228. package/docs/api/@aastar/tokens/README.md +3 -0
  229. package/docs/api/@aastar/tokens/classes/FinanceClient.md +10385 -0
  230. package/docs/api/README.md +4 -8
  231. package/env.template +3 -5
  232. package/examples/l1-api-demo.ts +196 -107
  233. package/examples/l2-clients-demo.ts +70 -73
  234. package/examples/l3-community-launch.ts +49 -0
  235. package/examples/l3-user-onboarding.ts +36 -54
  236. package/examples/prepare-gasless.ts +1 -1
  237. package/examples/simple-gasless-demo.ts +55 -26
  238. package/examples/simple-superpaymaster-demo.ts +2 -2
  239. package/ext/aastar-shared-config/generate-comparison-table.sh +0 -0
  240. package/ext/aastar-shared-config/sync-abis.sh +0 -0
  241. package/ext/aastar-shared-config/sync-versions.mjs +0 -0
  242. package/ext/aastar-shared-config/verify-all.sh +0 -0
  243. package/ext/aastar-shared-config/verify-contracts.sh +0 -0
  244. package/l4-setup.sh +1 -11
  245. package/lib/shared-config/generate-comparison-table.sh +0 -0
  246. package/lib/shared-config/sync-abis.sh +0 -0
  247. package/lib/shared-config/sync-versions.mjs +0 -0
  248. package/lib/shared-config/verify-all.sh +0 -0
  249. package/lib/shared-config/verify-contracts.sh +0 -0
  250. package/package.json +36 -32
  251. package/packages/account/__tests__/index.test.ts +9 -0
  252. package/packages/account/node_modules/.bin/tsc +21 -0
  253. package/packages/account/node_modules/.bin/tsserver +21 -0
  254. package/packages/account/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  255. package/packages/account/package.json +3 -5
  256. package/packages/account/src/eoa.ts +2 -4
  257. package/packages/account/tsconfig.json +2 -1
  258. package/packages/analytics/README.md +68 -0
  259. package/packages/analytics/__tests__/index.test.ts +25 -0
  260. package/packages/analytics/data/attribution_dataset.csv +29 -0
  261. package/packages/analytics/data/complete_dataset.csv +29 -0
  262. package/packages/analytics/data/eth_price_cache.json +4 -0
  263. package/packages/analytics/data/full_dataset.csv +11 -0
  264. package/packages/analytics/data/full_dataset.json +134 -0
  265. package/packages/analytics/data/parsed_transactions.csv +29 -0
  266. package/packages/analytics/node_modules/.bin/tsc +21 -0
  267. package/packages/analytics/node_modules/.bin/tsserver +21 -0
  268. package/packages/analytics/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  269. package/packages/analytics/package.json +2 -5
  270. package/packages/analytics/reports/full/attribution_analysis_20260119.md +42 -0
  271. package/packages/analytics/reports/full/attribution_analysis_fresh_20260119.md +67 -0
  272. package/packages/analytics/reports/full/competitive_analysis_20260119.md +103 -0
  273. package/packages/analytics/reports/full/comprehensive_analysis_20260119.md +107 -0
  274. package/packages/analytics/reports/full/comprehensive_analysis_v4_1_20260119.md +74 -0
  275. package/packages/analytics/reports/full/economic_audit_v4_2_20260119.md +74 -0
  276. package/packages/analytics/reports/full/profit_audit_v4_3_20260119.md +74 -0
  277. package/packages/analytics/reports/full/profit_audit_v4_4_20260119.md +74 -0
  278. package/packages/analytics/reports/full/profit_audit_v4_5_20260119.md +74 -0
  279. package/packages/analytics/reports/full/profit_audit_v4_6_20260119.md +74 -0
  280. package/packages/analytics/reports/full/profit_audit_v4_final_20260119.md +74 -0
  281. package/packages/analytics/reports/full/profit_audit_v4_final_v2_20260119.md +74 -0
  282. package/packages/analytics/reports/full/profit_audit_v4_final_v3_20260119.md +74 -0
  283. package/packages/analytics/reports/full/profit_audit_v4_final_v4_20260119.md +75 -0
  284. package/packages/analytics/reports/full/profit_audit_v4_final_v5_20260119.md +76 -0
  285. package/packages/analytics/reports/full/two_layer_analysis_20260119.md +81 -0
  286. package/packages/analytics/reports/full/two_layer_analysis_academic_20260119.md +81 -0
  287. package/packages/analytics/reports/full/two_layer_analysis_dynamic_20260119.md +81 -0
  288. package/packages/analytics/reports/full/two_layer_analysis_final_20260119.md +81 -0
  289. package/packages/analytics/reports/full/two_layer_analysis_final_fixed_20260119.md +81 -0
  290. package/packages/analytics/reports/full/two_layer_analysis_fixed_20260119.md +52 -0
  291. package/packages/analytics/reports/full/two_layer_analysis_normalized_20260119.md +81 -0
  292. package/packages/analytics/reports/full/tx_0xc30cfcbb.md +39 -0
  293. package/packages/analytics/src/analyzers/AttributionAnalyzer.ts +124 -0
  294. package/packages/analytics/src/analyzers/ComparisonAnalyzer.ts +89 -0
  295. package/packages/analytics/src/analyzers/TransactionAnalyzer.ts +111 -0
  296. package/packages/analytics/src/analyzers/TrendAnalyzer.ts +107 -0
  297. package/packages/analytics/src/cli-analyze-tx.ts +45 -0
  298. package/packages/analytics/src/cli.ts +39 -0
  299. package/packages/analytics/src/core/BenchmarkLoader.ts +163 -0
  300. package/packages/analytics/src/core/CostCalculator.ts +202 -0
  301. package/packages/analytics/src/core/DataCollector.ts +245 -0
  302. package/packages/analytics/src/gas-analyzer-v4.ts +118 -0
  303. package/packages/analytics/src/gas-analyzer.ts +184 -0
  304. package/packages/analytics/src/test-logparser.ts +63 -0
  305. package/packages/analytics/src/utils/EventDecoder.ts +152 -0
  306. package/packages/analytics/src/utils/LogParser.ts +220 -0
  307. package/packages/analytics/src/utils/PriceOracle.ts +117 -0
  308. package/packages/analytics/test/AttributionAnalyzer.test.ts +42 -0
  309. package/packages/analytics/test/CostCalculator.test.ts +75 -0
  310. package/packages/analytics/tsconfig.json +2 -1
  311. package/packages/community/__tests__/index.test.ts +9 -0
  312. package/packages/community/node_modules/.bin/tsc +21 -0
  313. package/packages/community/node_modules/.bin/tsserver +21 -0
  314. package/packages/community/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  315. package/packages/community/package.json +27 -0
  316. package/packages/community/src/index.ts +326 -0
  317. package/packages/community/tsconfig.json +8 -0
  318. package/packages/core/__tests__/actions/account-comprehensive.test.ts +92 -0
  319. package/packages/core/__tests__/actions/aggregator.test.ts +62 -0
  320. package/packages/core/__tests__/actions/comprehensive-batch1.test.ts +86 -0
  321. package/packages/core/__tests__/actions/comprehensive-batch2.test.ts +39 -0
  322. package/packages/core/__tests__/actions/comprehensive-batch3.test.ts +35 -0
  323. package/packages/core/__tests__/actions/comprehensive-error.test.ts +115 -0
  324. package/packages/core/__tests__/actions/dvt.test.ts +39 -0
  325. package/packages/core/__tests__/actions/edge-cases.test.ts +39 -0
  326. package/packages/core/__tests__/actions/error-paths.test.ts +82 -0
  327. package/packages/core/__tests__/actions/factory.test.ts +81 -0
  328. package/packages/core/__tests__/actions/faucet.test.ts +131 -0
  329. package/packages/core/__tests__/actions/paymaster.test.ts +116 -0
  330. package/packages/core/__tests__/actions/registry.test.ts +81 -0
  331. package/packages/core/__tests__/actions/reputation.test.ts +43 -0
  332. package/packages/core/__tests__/actions/sbt.test.ts +145 -0
  333. package/packages/core/__tests__/actions/staking.test.ts +30 -0
  334. package/packages/core/__tests__/actions/superPaymaster.test.ts +158 -0
  335. package/packages/core/__tests__/actions/tokens-extended.test.ts +18 -0
  336. package/packages/core/__tests__/actions/tokens.test.ts +122 -0
  337. package/packages/core/__tests__/clients.test.ts +77 -0
  338. package/packages/core/__tests__/contracts-config.test.ts +69 -0
  339. package/packages/core/__tests__/index.test.ts +9 -0
  340. package/packages/core/__tests__/mocks/client.ts +40 -0
  341. package/packages/core/node_modules/.bin/tsc +21 -0
  342. package/packages/core/node_modules/.bin/tsserver +21 -0
  343. package/packages/core/node_modules/.bin/tsx +21 -0
  344. package/packages/core/node_modules/.bin/vite +21 -0
  345. package/packages/core/node_modules/.bin/vitest +21 -0
  346. package/packages/core/node_modules/.bin/yaml +21 -0
  347. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  348. package/packages/core/package.json +5 -12
  349. package/packages/core/src/abis/SuperPaymaster.json +1 -1
  350. package/packages/core/src/abis/aPNTs.json +1160 -0
  351. package/packages/core/src/abis/abi.config.json +3 -3
  352. package/packages/core/src/abis/index.ts +37 -50
  353. package/packages/core/src/actions/account.ts +137 -126
  354. package/packages/core/src/actions/aggregator.ts +363 -33
  355. package/packages/core/src/actions/dvt.ts +261 -45
  356. package/packages/core/src/actions/entryPoint.ts +56 -233
  357. package/packages/core/src/actions/factory.ts +671 -552
  358. package/packages/core/src/actions/faucet.ts +181 -322
  359. package/packages/core/src/actions/index.ts +2 -5
  360. package/packages/core/src/actions/paymaster.ts +780 -0
  361. package/packages/core/src/actions/registry.ts +926 -825
  362. package/packages/core/src/actions/reputation.ts +568 -278
  363. package/packages/core/src/actions/sbt.ts +867 -632
  364. package/packages/core/src/actions/staking.ts +440 -285
  365. package/packages/core/src/actions/superPaymaster.ts +1058 -793
  366. package/packages/core/src/actions/tokens.ts +468 -514
  367. package/packages/core/src/clients/BaseClient.ts +3 -3
  368. package/packages/core/src/clients/BundlerClient.ts +132 -0
  369. package/packages/core/src/communities.ts +2 -2
  370. package/packages/core/src/constants.ts +1 -32
  371. package/packages/core/src/contract-addresses.ts +3 -10
  372. package/packages/core/src/contract-versions.ts +374 -0
  373. package/packages/core/src/contracts.ts +2 -2
  374. package/packages/core/src/errors/index.ts +173 -0
  375. package/packages/core/src/index.ts +2 -1
  376. package/packages/core/src/requirementChecker.ts +39 -1
  377. package/packages/core/src/roles.ts +50 -61
  378. package/packages/core/src/validators/index.ts +88 -0
  379. package/packages/core/tsconfig.json +2 -1
  380. package/packages/dapp/__tests__/index.test.ts +9 -0
  381. package/packages/dapp/node_modules/.bin/tsc +21 -0
  382. package/packages/dapp/node_modules/.bin/tsserver +21 -0
  383. package/packages/dapp/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  384. package/packages/dapp/package.json +3 -5
  385. package/packages/dapp/tsconfig.json +2 -1
  386. package/packages/enduser/__tests__/CommunityClient.test.ts +205 -0
  387. package/packages/enduser/__tests__/UserClient.test.ts +294 -0
  388. package/packages/enduser/__tests__/index.test.ts +16 -0
  389. package/packages/enduser/__tests__/mocks/client.ts +22 -0
  390. package/packages/enduser/node_modules/.bin/tsc +21 -0
  391. package/packages/enduser/node_modules/.bin/tsserver +21 -0
  392. package/packages/enduser/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  393. package/packages/enduser/package.json +26 -0
  394. package/packages/enduser/src/CommunityClient.ts +235 -0
  395. package/packages/enduser/src/UserClient.ts +447 -0
  396. package/packages/enduser/src/index.ts +2 -0
  397. package/packages/enduser/src/testAccountManager.ts +374 -0
  398. package/packages/enduser/tsconfig.json +10 -0
  399. package/packages/identity/__tests__/index.test.ts +9 -0
  400. package/packages/identity/node_modules/.bin/tsc +21 -0
  401. package/packages/identity/node_modules/.bin/tsserver +21 -0
  402. package/packages/identity/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  403. package/packages/identity/package.json +3 -5
  404. package/packages/identity/tsconfig.json +2 -1
  405. package/packages/operator/__tests__/PaymasterOperatorClient.test.ts +258 -0
  406. package/packages/operator/__tests__/ProtocolClient.test.ts +135 -0
  407. package/packages/operator/__tests__/index.test.ts +16 -0
  408. package/packages/operator/__tests__/mocks/client.ts +22 -0
  409. package/packages/operator/node_modules/.bin/tsc +21 -0
  410. package/packages/operator/node_modules/.bin/tsserver +21 -0
  411. package/packages/operator/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  412. package/packages/operator/package.json +26 -0
  413. package/packages/operator/src/PaymasterOperatorClient.ts +454 -0
  414. package/packages/operator/src/ProtocolClient.ts +154 -0
  415. package/packages/operator/src/index.ts +2 -0
  416. package/packages/operator/tsconfig.json +10 -0
  417. package/packages/patterns/node_modules/.bin/tsc +21 -0
  418. package/packages/patterns/node_modules/.bin/tsserver +21 -0
  419. package/packages/paymaster/__tests__/PaymasterOperator.test.ts +123 -0
  420. package/packages/paymaster/__tests__/index.test.ts +9 -0
  421. package/packages/paymaster/node_modules/.bin/tsc +21 -0
  422. package/packages/paymaster/node_modules/.bin/tsserver +21 -0
  423. package/packages/paymaster/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  424. package/packages/paymaster/package.json +4 -6
  425. package/packages/paymaster/src/V4/BundlerCompat.ts +47 -0
  426. package/packages/paymaster/src/V4/PaymasterClient.ts +122 -17
  427. package/packages/paymaster/src/V4/PaymasterUtils.ts +37 -23
  428. package/packages/paymaster/src/V4/SuperPaymasterClient.ts +17 -11
  429. package/packages/paymaster/tsconfig.json +8 -3
  430. package/packages/sdk/README.md +21 -0
  431. package/packages/sdk/__tests__/index.test.ts +9 -0
  432. package/packages/sdk/aastar/package.json +1 -1
  433. package/packages/sdk/aastar/tsconfig.json +2 -1
  434. package/packages/sdk/node_modules/.bin/tsc +21 -0
  435. package/packages/sdk/node_modules/.bin/tsserver +21 -0
  436. package/packages/sdk/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  437. package/packages/sdk/package.json +4 -14
  438. package/packages/sdk/src/clients/admin.ts +10 -108
  439. package/packages/sdk/src/clients/community.ts +242 -176
  440. package/packages/sdk/src/clients/endUser.ts +168 -291
  441. package/packages/sdk/src/clients/operator.ts +87 -162
  442. package/packages/sdk/src/errors/decoder.ts +41 -84
  443. package/packages/sdk/src/index.ts +10 -9
  444. package/packages/sdk/src/utils/keys.ts +0 -15
  445. package/packages/sdk/src/utils/roleData.ts +26 -15
  446. package/packages/sdk/src/utils/testScenarios.ts +2 -2
  447. package/packages/sdk/src/utils/userOp.ts +3 -11
  448. package/packages/sdk/tsconfig.json +2 -1
  449. package/packages/tokens/__tests__/index.test.ts +9 -0
  450. package/packages/tokens/node_modules/.bin/tsc +21 -0
  451. package/packages/tokens/node_modules/.bin/tsserver +21 -0
  452. package/packages/tokens/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  453. package/packages/tokens/package.json +3 -5
  454. package/packages/tokens/src/index.ts +0 -15
  455. package/packages/tokens/tsconfig.json +2 -1
  456. package/publish.sh +30 -0
  457. package/run_l4_gasless_regression.sh +35 -5
  458. package/run_sdk_regression.sh +3 -9
  459. package/scripts/01_prepare_all.ts +198 -149
  460. package/scripts/02_test_eoa.ts +24 -27
  461. package/scripts/03_test_standard_aa.ts +153 -48
  462. package/scripts/04_test_paymaster_v4.ts +198 -41
  463. package/scripts/05_test_superpaymaster.ts +362 -40
  464. package/scripts/11_test_core_flows_full.ts +197 -75
  465. package/scripts/18_test_dvt_sdk_flow.ts +1 -1
  466. package/scripts/19_sdk_experiment_runner.ts +135 -42
  467. package/scripts/20_sdk_full_capability.ts +77 -75
  468. package/scripts/analyze_abi_coverage.ts +4 -4
  469. package/scripts/analyze_missing_functions.ts +136 -0
  470. package/scripts/canary-bundler.ts +47 -0
  471. package/scripts/check-chainlink.ts +28 -0
  472. package/scripts/check-jason-status.ts +61 -160
  473. package/scripts/check-roles.ts +1 -1
  474. package/scripts/complete-jack-superpaymaster.ts +1 -1
  475. package/scripts/deploy_and_init_v3.sh +0 -0
  476. package/scripts/deploy_jason_pm.ts +114 -0
  477. package/scripts/dev_tools/extract_abis.sh +0 -0
  478. package/scripts/dev_tools/extract_addresses_to_env.sh +0 -0
  479. package/scripts/extract-docs.sh +9 -78
  480. package/scripts/l4-debug-bob.ts +62 -0
  481. package/scripts/l4-paymasterv4-transfer-test.ts +12 -20
  482. package/scripts/l4-setup.ts +1235 -341
  483. package/scripts/l4-state.json +16 -14
  484. package/scripts/manual-update-price.ts +39 -0
  485. package/scripts/phase1_verify_contracts.ts +1 -1
  486. package/scripts/publish_all.sh +0 -0
  487. package/scripts/query-jack-token.ts +1 -1
  488. package/scripts/run_automated_experiment.sh +0 -0
  489. package/scripts/run_full_regression.sh +38 -0
  490. package/scripts/run_l4_gasless_regression.sh +0 -0
  491. package/scripts/run_sdk_experiment.sh +0 -0
  492. package/scripts/run_sdk_regression-v2.sh +0 -0
  493. package/scripts/sdk_regression_v2.ts +20 -34
  494. package/scripts/security_audit.sh +0 -0
  495. package/scripts/setup-bbq-community.ts +2 -2
  496. package/scripts/setup-dancing-community.ts +3 -3
  497. package/scripts/test-brown-v4-deploy.ts +2 -2
  498. package/scripts/test-faucet-and-gasless.ts +119 -139
  499. package/scripts/test-jack-gasless.ts +1 -1
  500. package/scripts/test-jack-registration.ts +2 -2
  501. package/scripts/test-jack-superpaymaster-api.ts +2 -2
  502. package/scripts/test-kms-gasless.ts +307 -93
  503. package/scripts/update-price-dvt.ts +53 -0
  504. package/scripts/v2_regression/01_setup_and_fund.ts +1 -1
  505. package/scripts/v2_regression/02_operator_onboarding.ts +140 -14
  506. package/scripts/v2_regression/03_community_registry.ts +58 -24
  507. package/scripts/v2_regression/04_enduser_flow.ts +49 -16
  508. package/scripts/v2_regression/05_admin_audit.ts +1 -1
  509. package/scripts/verify-bob-token.ts +41 -0
  510. package/sdk-abi-coverage.sh +1 -0
  511. package/sdk-build-and-test.sh +1 -0
  512. package/sdk-test-coverage.sh +1 -0
  513. package/simple-test-paymaster.sh +1 -1
  514. package/simple-test-superpaymaster.sh +3 -1
  515. package/tests/check-aa-balance.ts +31 -0
  516. package/tests/l1-regression.test.ts +13 -34
  517. package/tests/l4-test-anni-gasless.ts +497 -85
  518. package/tests/l4-test-jason1-gasless.ts +29 -21
  519. package/tests/l4-test-jason2-gasless.ts +21 -15
  520. package/tests/l4-test-pmv4-deposit.ts +2 -2
  521. package/tests/l4-test-pmv4-gasless.ts +2 -2
  522. package/tests/l4-test-pmv4-submit.ts +2 -2
  523. package/tests/regression/config.ts +4 -2
  524. package/tests/regression/index.ts +0 -0
  525. package/tests/regression/l1-tests.ts +16 -35
  526. package/tests/regression/l2-tests.ts +149 -93
  527. package/tests/regression/l3-tests.ts +16 -113
  528. package/tests/regression/l4-comprehensive-gasless.ts +478 -0
  529. package/tests/regression/l4-gasless.ts +115 -13
  530. package/tests/regression/l4-reputation-tiers.ts +102 -0
  531. package/tests/test-bundler-compat.ts +132 -0
  532. package/tests/test-candide-bundler.ts +117 -0
  533. package/tests/test-candide-paymaster.ts +101 -0
  534. package/tests/test-candide-sdk.ts +116 -0
  535. package/tests/test-candide-simple.ts +204 -0
  536. package/tests/test-pimlico-complete.ts +134 -0
  537. package/tests/utils/contractVerifier.ts +3 -3
  538. package/tsconfig.build.json +23 -0
  539. package/tsconfig.json +5 -19
  540. package/typedoc.json +5 -39
  541. package/update-version.sh +20 -0
  542. package/vitest.config.ts +6 -5
  543. package/.eslintrc.cjs +0 -30
  544. package/docs/ABI_Change_Tracking_Workflow.md +0 -41
  545. package/docs/Faucet_Gasless_Plan.md +0 -56
  546. package/docs/api/@aastar/account.md +0 -235
  547. package/docs/api/@aastar/analytics.md +0 -219
  548. package/docs/api/@aastar/core.md +0 -26830
  549. package/docs/api/@aastar/dapp.md +0 -130
  550. package/docs/api/@aastar/identity.md +0 -482
  551. package/docs/api/@aastar/paymaster.md +0 -1387
  552. package/docs/api/@aastar/sdk/README.md +0 -155
  553. package/docs/api/@aastar/sdk/node.md +0 -4044
  554. package/docs/api/@aastar/tokens.md +0 -1971
  555. package/docs/changelog.md +0 -99
  556. package/docs/examples/README.md +0 -18
  557. package/docs/guide/concepts/account-abstraction.md +0 -95
  558. package/docs/guide/concepts/rainbow-bridge.md +0 -68
  559. package/docs/guide/concepts/reputation.md +0 -95
  560. package/docs/guide/concepts/superpaymaster.md +0 -141
  561. package/docs/guide/use-cases/community-management.md +0 -141
  562. package/docs/guide/use-cases/gasless-transactions.md +0 -71
  563. package/docs/guide/use-cases/operator-staking.md +0 -84
  564. package/docs/guide/use-cases/yop.md +0 -72
  565. package/docs/refactor/2026-01-13-221242-trae-refactor.md +0 -224
  566. package/docs/refactor/2026-01-13-audit-analysis.md +0 -96
  567. package/docs/refactor/2026-01-13-audit-report-v0.16.2.md +0 -76
  568. package/docs/refactor/2026-01-13-audit-report-v0.17.0.md +0 -74
  569. package/docs/refactor/2026-01-13-cursor-refactor.md +0 -511
  570. package/docs/refactor/2026-01-13-refactor-plan.md +0 -88
  571. package/docs/refactor/2026-01-13-refactor-response-plan.md +0 -77
  572. package/docs/refactor/2026-01-13-refactor-review.md +0 -39
  573. package/docs/refactor/2026-01-13-sdk-enhancement-plan.md +0 -120
  574. package/docs/refactor/2026-01-14-audit-response.md +0 -242
  575. package/docs/refactor/2026-01-14-audit-summary.md +0 -133
  576. package/docs/refactor/cursor-2026-01-13-14-00-audit-report.md +0 -267
  577. package/packages/account/src/accounts/simple.test.ts +0 -93
  578. package/packages/account/src/eoa.test.ts +0 -37
  579. package/packages/account/src/index.test.ts +0 -34
  580. package/packages/core/scripts/audit-abi-coverage.ts +0 -165
  581. package/packages/core/scripts/debug-regex.ts +0 -36
  582. package/packages/core/src/abis/.abi-hashes.json +0 -26
  583. package/packages/core/src/actions/StateValidator.test.ts +0 -175
  584. package/packages/core/src/actions/account.test.ts +0 -155
  585. package/packages/core/src/actions/aggregator.test.ts +0 -88
  586. package/packages/core/src/actions/dvt.test.ts +0 -124
  587. package/packages/core/src/actions/entryPoint.test.ts +0 -176
  588. package/packages/core/src/actions/factory.test.ts +0 -250
  589. package/packages/core/src/actions/faucet.test.ts +0 -202
  590. package/packages/core/src/actions/gtokenExtended.test.ts +0 -162
  591. package/packages/core/src/actions/gtokenExtended.ts +0 -153
  592. package/packages/core/src/actions/paymasterV4.test.ts +0 -209
  593. package/packages/core/src/actions/paymasterV4.ts +0 -455
  594. package/packages/core/src/actions/registry.test.ts +0 -443
  595. package/packages/core/src/actions/reputation.test.ts +0 -225
  596. package/packages/core/src/actions/sbt.test.ts +0 -322
  597. package/packages/core/src/actions/staking.test.ts +0 -273
  598. package/packages/core/src/actions/superPaymaster.test.ts +0 -356
  599. package/packages/core/src/actions/tokens.test.ts +0 -60
  600. package/packages/core/src/actions/validators.test.ts +0 -239
  601. package/packages/core/src/actions/validators.ts +0 -590
  602. package/packages/core/src/contracts.test.ts +0 -58
  603. package/packages/core/src/requirementChecker.test.ts +0 -71
  604. package/packages/core/src/roles.test.ts +0 -34
  605. package/packages/core/src/utils/validation.test.ts +0 -50
  606. package/packages/core/src/utils/validation.ts +0 -66
  607. package/packages/core/vitest.config.ts +0 -14
  608. package/packages/paymaster/src/V4/PaymasterClient.test.ts +0 -114
  609. package/packages/paymaster/src/V4/PaymasterOperator.test.ts +0 -80
  610. package/packages/paymaster/src/V4/PaymasterUtils.test.ts +0 -54
  611. package/packages/paymaster/src/V4/SuperPaymasterClient.test.ts +0 -79
  612. package/packages/sdk/coverage_output.txt +0 -393
  613. package/packages/sdk/coverage_output_final.txt +0 -739
  614. package/packages/sdk/coverage_output_final_v2.txt +0 -722
  615. package/packages/sdk/coverage_output_final_v3.txt +0 -722
  616. package/packages/sdk/src/clients/ExperimentClient.test.ts +0 -65
  617. package/packages/sdk/src/clients/admin.test.ts +0 -98
  618. package/packages/sdk/src/clients/clients.test.ts +0 -104
  619. package/packages/sdk/src/clients/community.test.ts +0 -118
  620. package/packages/sdk/src/clients/endUser.test.ts +0 -221
  621. package/packages/sdk/src/clients/operator.test.ts +0 -162
  622. package/packages/sdk/src/errors/AAStarError.test.ts +0 -92
  623. package/packages/sdk/src/errors/AAStarError.ts +0 -70
  624. package/packages/sdk/src/errors/decoder.test.ts +0 -107
  625. package/packages/sdk/src/node/index.ts +0 -8
  626. package/packages/sdk/src/types/result.ts +0 -29
  627. package/packages/sdk/src/utils/errorHandler.test.ts +0 -102
  628. package/packages/sdk/src/utils/eventDecoder.test.ts +0 -56
  629. package/packages/sdk/src/utils/eventDecoder.ts +0 -66
  630. package/packages/sdk/src/utils/funding.test.ts +0 -117
  631. package/packages/sdk/src/utils/keys.test.ts +0 -105
  632. package/packages/sdk/src/utils/roleData.test.ts +0 -85
  633. package/packages/sdk/src/utils/testScenarios.test.ts +0 -79
  634. package/packages/sdk/src/utils/userOp.test.ts +0 -190
  635. package/scripts/debug-addr.ts +0 -43
  636. package/scripts/debug-community-registration.ts +0 -92
  637. package/scripts/debug-deploy-v4.ts +0 -116
  638. package/scripts/debug-paymaster.ts +0 -127
  639. package/scripts/debug-register-role.ts +0 -101
  640. package/scripts/debug-version.ts +0 -71
  641. package/scripts/debug_account_c.ts +0 -43
  642. package/scripts/debug_bls.ts +0 -58
  643. package/scripts/debug_config_v036.ts +0 -13
  644. package/scripts/debug_contracts.ts +0 -2
  645. package/scripts/debug_env.ts +0 -69
  646. package/scripts/debug_find_paymaster.ts +0 -98
  647. package/scripts/debug_isolated_registration.ts +0 -256
  648. package/scripts/debug_paymaster_config.ts +0 -19
  649. package/scripts/debug_pim_addr.ts +0 -23
  650. package/scripts/debug_pm_status.ts +0 -51
  651. package/scripts/debug_registry.ts +0 -39
  652. package/scripts/debug_registry_setup.ts +0 -129
  653. package/scripts/debug_sanity.ts +0 -32
  654. package/scripts/debug_shared_config.ts +0 -10
  655. package/scripts/debug_token_compat.ts +0 -51
  656. package/scripts/debug_tokens.ts +0 -41
  657. package/scripts/debug_vcheck.ts +0 -33
  658. package/scripts/test_groups.ts +0 -138
  659. package/scripts/test_multi_community_anvil.ts +0 -276
  660. package/scripts/test_new_sdk_apis_sepolia.ts +0 -193
  661. package/scripts/test_sdk_join_idempotent.ts +0 -233
  662. package/scripts/test_simple_sepolia.ts +0 -44
@@ -3,117 +3,125 @@ import {
3
3
  type WalletClient,
4
4
  type PublicClient,
5
5
  parseEther,
6
- parseAbi,
7
- createPublicClient,
8
- http,
9
6
  formatEther,
10
7
  zeroAddress,
11
- encodeAbiParameters
8
+ type Account,
9
+ type Hash
12
10
  } from 'viem';
13
- import { sepolia } from 'viem/chains';
14
- import { registryActions } from './registry';
15
- import { paymasterV4Actions } from './paymasterV4';
11
+ import { registryActions } from './registry.js';
12
+ import { gTokenActions } from './tokens.js';
13
+ import { paymasterActions } from './paymaster.js';
14
+ import { validateAddress, validateAmount, validateRequired } from '../validators/index.js';
15
+ import { AAStarError } from '../errors/index.js';
16
16
 
17
- // Standard ERC20 ABI for minting/approving
18
- const ERC20_ABI = parseAbi([
19
- 'function mint(address to, uint256 amount) external',
20
- 'function approve(address spender, uint256 amount) external returns (bool)',
21
- 'function balanceOf(address account) external view returns (uint256)',
22
- 'function allowance(address owner, address spender) external view returns (uint256)',
23
- 'function transfer(address to, uint256 amount) external returns (bool)'
24
- ]);
17
+ export type FaucetPreparationResult = {
18
+ ethFunded: boolean;
19
+ roleRegistered: boolean;
20
+ tokenMinted: boolean;
21
+ paymasterDeposited: boolean;
22
+ };
25
23
 
26
- const PAYMASTER_ABI = parseAbi([
27
- 'function depositFor(address target, uint256 amount) external',
28
- 'function deposit() external payable'
29
- ]);
24
+ export type FaucetConfig = {
25
+ targetAA: Address;
26
+ token: Address;
27
+ registry: Address;
28
+ paymasterV4?: Address;
29
+ ethAmount?: bigint; // Default 0.1 ETH
30
+ tokenAmount?: bigint; // Default 1000 Tokens
31
+ };
30
32
 
33
+ /**
34
+ * SepoliaFaucetAPI provides orchestration for setting up test accounts on Sepolia/Anvil.
35
+ */
31
36
  export class SepoliaFaucetAPI {
32
37
 
33
38
  /**
34
39
  * Orchestrates the complete setup for a test account.
35
40
  * 1. Funds ETH
36
41
  * 2. Registers ENDUSER role
37
- * 3. Mints potential Paymaster Tokens (cPNTs/dPNTs)
42
+ * 3. Mints GTokens to user
38
43
  * 4. Deposits to Paymaster V4 (if address provided) using Admin's tokens
39
44
  */
40
45
  static async prepareTestAccount(
41
46
  adminWallet: WalletClient,
42
47
  publicClient: PublicClient,
43
- config: {
44
- targetAA: Address;
45
- token: Address;
46
- registry: Address;
47
- paymasterV4?: Address;
48
- superPaymaster?: Address; // Just for context, no specific action needed if user holds token
49
- ethAmount?: bigint; // Default 0.1 ETH
50
- tokenAmount?: bigint; // Default 1000 Tokens
51
- community?: Address;
52
- }
53
- ) {
54
- console.log(`\n🚰 SepoliaFaucetAPI: Preparing ${config.targetAA}...`);
55
- const results = {
56
- ethFunded: false,
57
- roleRegistered: false,
58
- tokenMinted: false,
59
- paymasterDeposited: false
60
- };
48
+ config: FaucetConfig
49
+ ): Promise<FaucetPreparationResult> {
50
+ try {
51
+ validateRequired(adminWallet, 'adminWallet');
52
+ validateRequired(publicClient, 'publicClient');
53
+ validateAddress(config.targetAA, 'targetAA');
54
+ validateAddress(config.token, 'token');
55
+ validateAddress(config.registry, 'registry');
61
56
 
62
- // 1. Fund ETH
63
- const ethAmount = config.ethAmount ?? parseEther('0.1');
64
- results.ethFunded = await this.fundETH(adminWallet, publicClient, config.targetAA, ethAmount);
57
+ console.log(`\n🚰 SepoliaFaucetAPI: Preparing ${config.targetAA}...`);
58
+ const results: FaucetPreparationResult = {
59
+ ethFunded: false,
60
+ roleRegistered: false,
61
+ tokenMinted: false,
62
+ paymasterDeposited: false
63
+ };
65
64
 
66
- // 2. Register EndUser
67
- results.roleRegistered = await this.registerEndUser(adminWallet, publicClient, config.registry, config.targetAA, config.token, config.community);
65
+ // 1. Fund ETH
66
+ const ethAmount = config.ethAmount ?? parseEther('0.1');
67
+ results.ethFunded = await this.fundETH(adminWallet, publicClient, config.targetAA, ethAmount);
68
68
 
69
- // 3. Mint Tokens (User Holding Logic - for SuperPaymaster)
70
- // If SuperPaymaster is involved, User needs to HOLD the token.
71
- // If Paymaster V4 is involved, User might need to HOLD (Pull mode) or Admin Deposits (Push mode).
72
- // Strategy: Always mint some to User for flexibility.
73
- const tokenAmount = config.tokenAmount ?? parseEther('1000');
74
- results.tokenMinted = await this.mintTestTokens(adminWallet, publicClient, config.token, config.targetAA, tokenAmount);
69
+ // 2. Register EndUser
70
+ results.roleRegistered = await this.registerEndUser(adminWallet, publicClient, config.registry, config.targetAA, config.token);
75
71
 
76
- // 4. Admin Deposit for User (Paymaster V4 Logic)
77
- if (config.paymasterV4) {
78
- results.paymasterDeposited = await this.adminDepositForUser(
79
- adminWallet,
80
- publicClient,
81
- config.paymasterV4,
82
- config.targetAA,
83
- config.token,
84
- parseEther('10') // Deposit 10 Tokens for testing
85
- );
86
- }
72
+ // 3. Mint Tokens
73
+ const tokenAmount = config.tokenAmount ?? parseEther('1000');
74
+ results.tokenMinted = await this.mintTestTokens(adminWallet, publicClient, config.token, config.targetAA, tokenAmount);
75
+
76
+ // 4. Admin Deposit for User (Paymaster V4 Logic)
77
+ if (config.paymasterV4) {
78
+ validateAddress(config.paymasterV4, 'paymasterV4');
79
+ results.paymasterDeposited = await this.adminDepositForUser(
80
+ adminWallet,
81
+ publicClient,
82
+ config.paymasterV4,
83
+ config.targetAA,
84
+ config.token,
85
+ parseEther('10') // Deposit 10 Tokens for testing
86
+ );
87
+ }
87
88
 
88
- console.log(`✅ Preparation Complete!`, results);
89
- return results;
89
+ console.log(`✅ Preparation Complete!`, results);
90
+ return results;
91
+ } catch (error) {
92
+ throw AAStarError.fromViemError(error as Error, 'prepareTestAccount');
93
+ }
90
94
  }
91
95
 
92
96
  /**
93
97
  * Funds the target with ETH if balance is below threshold.
94
98
  */
95
99
  static async fundETH(adminWallet: WalletClient, publicClient: PublicClient, target: Address, amount: bigint): Promise<boolean> {
96
- const balance = await publicClient.getBalance({ address: target });
97
- // Threshold: 50% of target amount
98
- if (balance < (amount / 2n)) {
99
- console.log(` 💰 Funding ETH... (Before: ${formatEther(balance)})`);
100
- const hash = await adminWallet.sendTransaction({
101
- to: target,
102
- value: amount,
103
- chain: sepolia,
104
- account: adminWallet.account!
105
- });
106
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
107
- console.log(` -> Sent ${formatEther(amount)} ETH. Tx: ${hash}`);
108
- return true;
100
+ try {
101
+ validateAddress(target, 'target');
102
+ validateAmount(amount, 'amount');
103
+
104
+ const balance = await publicClient.getBalance({ address: target });
105
+ // Threshold: 50% of target amount
106
+ if (balance < (amount / 2n)) {
107
+ console.log(` 💰 Funding ETH... (Before: ${formatEther(balance)})`);
108
+ const hash = await adminWallet.sendTransaction({
109
+ to: target,
110
+ value: amount,
111
+ account: adminWallet.account!,
112
+ chain: adminWallet.chain
113
+ });
114
+ await publicClient.waitForTransactionReceipt({ hash, timeout: 120000 });
115
+ console.log(` -> Sent ${formatEther(amount)} ETH. Tx: ${hash}`);
116
+ return true;
117
+ }
118
+ console.log(` ✅ ETH Balance adequate (${formatEther(balance)} ETH).`);
119
+ return false;
120
+ } catch (error) {
121
+ throw AAStarError.fromViemError(error as Error, 'fundETH');
109
122
  }
110
- console.log(` ✅ ETH Balance adequate (${formatEther(balance)} ETH).`);
111
- return false;
112
123
  }
113
124
 
114
- /**
115
- * Registers the ENDUSER role via Registry.
116
- */
117
125
  /**
118
126
  * Registers the ENDUSER role using Sponsor Mode (Admin pays stake).
119
127
  */
@@ -122,154 +130,62 @@ export class SepoliaFaucetAPI {
122
130
  publicClient: PublicClient,
123
131
  registryAddr: Address,
124
132
  target: Address,
125
- gasToken: Address, // Re-using the 'token' passed in config which is GToken
126
- community?: Address
133
+ gasToken: Address
127
134
  ): Promise<boolean> {
128
- // ENDUSER Hash: keccak256("ENDUSER")
129
- const ENDUSER_ROLE = '0x0c34ecc75d3bf122e0609d2576e167f53fb42429262ce8c9b33cab91ff670e3a';
130
-
131
- // 1. Check if already registered
132
- const hasRole = await publicClient.readContract({
133
- address: registryAddr,
134
- abi: parseAbi(['function hasRole(bytes32 role, address account) view returns (bool)']),
135
- functionName: 'hasRole',
136
- args: [ENDUSER_ROLE as `0x${string}`, target]
137
- });
138
-
139
- if (hasRole) {
140
- console.log(` ✅ ENDUSER Role already held.`);
141
- return false;
142
- }
143
-
144
- console.log(` 👤 Registering ENDUSER role (Sponsor Mode)...`);
145
-
146
135
  try {
147
- // 2. Get Staking Contract Address
148
- const stakingAddr = await publicClient.readContract({
149
- address: registryAddr,
150
- abi: parseAbi(['function GTOKEN_STAKING() view returns (address)']),
151
- functionName: 'GTOKEN_STAKING'
152
- }) as Address;
136
+ validateAddress(registryAddr, 'registryAddr');
137
+ validateAddress(target, 'target');
138
+ validateAddress(gasToken, 'gasToken');
153
139
 
154
- // Fetch the actual GToken required by Staking
155
- const stakingToken = await publicClient.readContract({
156
- address: stakingAddr,
157
- abi: parseAbi(['function GTOKEN() view returns (address)']),
158
- functionName: 'GTOKEN'
159
- }) as Address;
140
+ const registry = registryActions(registryAddr)(publicClient);
141
+ const walletRegistry = registryActions(registryAddr)(adminWallet);
142
+ const token = gTokenActions(gasToken)(publicClient);
143
+ const walletToken = gTokenActions(gasToken)(adminWallet);
160
144
 
161
- // 3. Admin Approves Staking Contract (if needed)
162
- const adminAddr = adminWallet.account!.address;
163
- console.log(` 🔎 Debug Staking: Registry=${registryAddr}, Staking=${stakingAddr}`);
164
- console.log(` 🔎 Debug Token: Contract=${stakingToken}`);
145
+ // 1. Get ENDUSER Role ID
146
+ const ENDUSER_ROLE = await registry.ROLE_ENDUSER();
165
147
 
166
- // Check allowance for the STAKING TOKEN
167
- const allowance = await publicClient.readContract({
168
- address: stakingToken,
169
- abi: ERC20_ABI,
170
- functionName: 'allowance',
171
- args: [adminAddr, stakingAddr]
172
- });
173
- console.log(` 🔎 Debug Allowance: ${formatEther(allowance)} (Needed: >0.5)`);
148
+ // 2. Check if already registered
149
+ const hasRole = await registry.hasRole({ roleId: ENDUSER_ROLE, user: target });
174
150
 
175
- // Approve if needed (standard stake ~0.3 ETH, verify enough)
176
- const approveAmount = parseEther('1000'); // A sufficiently large amount
177
- if (allowance < parseEther('500')) {
178
- console.log(' 🔓 Approving Staking Contract (Core Token)...');
179
- const hashApprove = await adminWallet.writeContract({
180
- address: stakingToken,
181
- abi: ERC20_ABI,
182
- functionName: 'approve',
183
- args: [stakingAddr, approveAmount],
184
- chain: sepolia,
185
- account: adminWallet.account!
186
- });
187
- await publicClient.waitForTransactionReceipt({ hash: hashApprove, timeout: 300000 });
188
- console.log(` 🔓 Approving Staking Contract... ${hashApprove}`);
151
+ if (hasRole) {
152
+ console.log(` ✅ ENDUSER Role already held.`);
153
+ return false;
154
+ }
189
155
 
190
- // Ensure Admin has GTokens (Staking Token) balance
191
- const adminGBal = await publicClient.readContract({
192
- address: stakingToken,
193
- abi: ERC20_ABI,
194
- functionName: 'balanceOf',
195
- args: [adminAddr]
196
- }) as bigint;
156
+ console.log(` 👤 Registering ENDUSER role (Sponsor Mode)...`);
197
157
 
198
- if (adminGBal < parseEther('100')) {
199
- console.log(` 🪙 Minting GTokens (Staking Token) to Admin...`);
200
- try {
201
- const hashGMint = await adminWallet.writeContract({
202
- address: stakingToken,
203
- abi: ERC20_ABI,
204
- functionName: 'mint',
205
- args: [adminAddr, parseEther('1000')],
206
- chain: sepolia,
207
- account: adminWallet.account!
208
- });
209
- await publicClient.waitForTransactionReceipt({ hash: hashGMint, timeout: 300000 });
210
- console.log(` ✅ GTokens Minted. Tx: ${hashGMint}`);
211
- } catch (e) {
212
- console.warn(` ⚠️ Failed to mint GTokens (Admin might not be minter):`, e);
213
- }
214
- }
215
- }
158
+ // 3. Get Staking Contract Address
159
+ const stakingAddr = await registry.GTOKEN_STAKING();
216
160
 
217
- // ALSO Approve Registry (just in case it pulls first)
218
- const allowReg = await publicClient.readContract({
219
- address: stakingToken,
220
- abi: ERC20_ABI,
221
- functionName: 'allowance',
222
- args: [adminAddr, registryAddr]
223
- });
224
- if (allowReg < parseEther('500')) {
225
- console.log(' 🔓 Approving Registry Contract...');
226
- const hash = await adminWallet.writeContract({
227
- address: stakingToken,
228
- abi: ERC20_ABI,
229
- functionName: 'approve',
230
- args: [registryAddr, parseEther('1000')],
231
- chain: sepolia,
232
- account: adminWallet.account!
161
+ // 4. Admin Approves Staking Contract (if needed)
162
+ const adminAddr = adminWallet.account!.address;
163
+ const allowance = await token.allowance({ token: gasToken, owner: adminAddr, spender: stakingAddr });
164
+
165
+ if (allowance < parseEther('500')) {
166
+ console.log(` 🔓 Approving Staking Contract...`);
167
+ const hashApprove = await walletToken.approve({
168
+ token: gasToken,
169
+ spender: stakingAddr,
170
+ amount: parseEther('1000')
233
171
  });
234
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
235
- console.log(` ✅ Approved Registry. Tx: ${hash}`);
236
- } else {
237
- console.log(' ✅ Allowance sufficient.');
172
+ await publicClient.waitForTransactionReceipt({ hash: hashApprove });
238
173
  }
239
174
 
240
- // 5. Register Role (registerRole)
241
- // EndUser Role Data: (address account, address community, string avatarURI, string ensName, uint256 stakeAmount)
242
- const userData = encodeAbiParameters(
243
- [
244
- { name: 'account', type: 'address' },
245
- { name: 'community', type: 'address' },
246
- { name: 'avatarURI', type: 'string' },
247
- { name: 'ensName', type: 'string' },
248
- { name: 'stakeAmount', type: 'uint256' }
249
- ],
250
- // Stake Amount 0, relying on Registry to enforce minStake and charge msg.sender
251
- [target, community || zeroAddress, '', '', 0n]
252
- );
253
-
254
- const hashMint = await adminWallet.writeContract({
255
- address: registryAddr,
256
- abi: parseAbi([
257
- 'function safeMintForRole(bytes32 roleId, address user, bytes calldata data) external returns (uint256)',
258
- 'error InvalidParameter(string message)'
259
- ]),
260
- functionName: 'safeMintForRole',
261
- args: [ENDUSER_ROLE as `0x${string}`, target, userData],
262
- chain: sepolia,
263
- account: adminWallet.account!
175
+ // 5. SafeMint (Sponsor)
176
+ const userData = '0x';
177
+ const hashMint = await walletRegistry.safeMintForRole({
178
+ roleId: ENDUSER_ROLE,
179
+ user: target,
180
+ data: userData
264
181
  });
265
182
 
266
- await publicClient.waitForTransactionReceipt({ hash: hashMint, timeout: 300000 });
183
+ await publicClient.waitForTransactionReceipt({ hash: hashMint, timeout: 120000 });
267
184
  console.log(` -> Role Sponsored & Granted. Tx: ${hashMint}`);
268
185
  return true;
269
186
 
270
187
  } catch (error) {
271
- console.warn(` ⚠️ Failed to sponsor ENDUSER role. Error:`, error);
272
- return false;
188
+ throw AAStarError.fromViemError(error as Error, 'registerEndUser');
273
189
  }
274
190
  }
275
191
 
@@ -279,142 +195,85 @@ export class SepoliaFaucetAPI {
279
195
  static async mintTestTokens(
280
196
  adminWallet: WalletClient,
281
197
  publicClient: PublicClient,
282
- token: Address,
198
+ tokenAddr: Address,
283
199
  target: Address,
284
200
  amount: bigint
285
201
  ): Promise<boolean> {
286
- const balance = await publicClient.readContract({
287
- address: token,
288
- abi: ERC20_ABI,
289
- functionName: 'balanceOf',
290
- args: [target]
291
- });
202
+ try {
203
+ validateAddress(tokenAddr, 'tokenAddr');
204
+ validateAddress(target, 'target');
205
+ validateAmount(amount, 'amount');
292
206
 
293
- if (balance < amount) {
294
- console.log(` 🪙 Funding Tokens... (Current: ${formatEther(balance)})`);
295
- const adminAddr = adminWallet.account!.address;
296
-
297
- // 1. Try Transfer from Admin (if Admin has balance)
298
- const adminBal = await publicClient.readContract({
299
- address: token,
300
- abi: ERC20_ABI,
301
- functionName: 'balanceOf',
302
- args: [adminAddr]
303
- });
207
+ const token = gTokenActions(tokenAddr)(publicClient);
208
+ const walletToken = gTokenActions(tokenAddr)(adminWallet);
304
209
 
305
- if (adminBal >= amount) {
306
- console.log(` 💸 Transferring from Admin...`);
307
- const hash = await adminWallet.writeContract({
308
- address: token,
309
- abi: ERC20_ABI,
310
- functionName: 'transfer',
311
- args: [target, amount],
312
- chain: sepolia,
313
- account: adminWallet.account!
314
- });
315
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
316
- console.log(` ✅ Transferred ${formatEther(amount)}. Tx: ${hash}`);
317
- return true;
318
- }
210
+ const balance = await token.balanceOf({ token: tokenAddr, account: target });
319
211
 
320
- // 2. Try Mint (Assuming Admin has Minter Role or is Owner)
321
- console.log(` 🪙 Admin balance low. Attempting Mint...`);
322
- try {
323
- const hash = await adminWallet.writeContract({
324
- address: token,
325
- abi: ERC20_ABI,
326
- functionName: 'mint',
327
- args: [target, amount],
328
- chain: sepolia,
329
- account: adminWallet.account!
330
- });
331
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
332
- console.log(` ✅ Minted ${formatEther(amount)}. Tx: ${hash}`);
212
+ if (balance < amount) {
213
+ console.log(` 🪙 Minting Tokens... (Current: ${formatEther(balance)})`);
214
+ const hash = await walletToken.mint({ token: tokenAddr, to: target, amount });
215
+ await publicClient.waitForTransactionReceipt({ hash, timeout: 120000 });
216
+ console.log(` -> Minted ${formatEther(amount)}. Tx: ${hash}`);
333
217
  return true;
334
- } catch (e) {
335
- console.warn(` ⚠️ Failed to mint/transfer tokens. Check Admin permissions/balance.`, e);
336
- return false;
337
218
  }
219
+ console.log(` ✅ Token Balance adequate.`);
220
+ return false;
221
+ } catch (error) {
222
+ throw AAStarError.fromViemError(error as Error, 'mintTestTokens');
338
223
  }
339
- console.log(` ✅ Token Balance adequate.`);
340
- return false;
341
224
  }
342
225
 
343
226
  /**
344
- * Complex Flow:
345
- * 1. Admin mints tokens to SELF.
346
- * 2. Admin approves Paymaster.
347
- * 3. Admin calls depositFor(target) on Paymaster.
227
+ * Admin mints tokens to self, approves Paymaster, and deposits FOR user.
348
228
  */
349
229
  static async adminDepositForUser(
350
230
  adminWallet: WalletClient,
351
231
  publicClient: PublicClient,
352
- paymaster: Address,
232
+ paymasterAddr: Address,
353
233
  target: Address,
354
- token: Address,
234
+ tokenAddr: Address,
355
235
  amount: bigint
356
236
  ): Promise<boolean> {
357
- // 1. Mint to Admin First
358
- const adminAddr = adminWallet.account!.address;
359
- const adminBal = await publicClient.readContract({
360
- address: token,
361
- abi: ERC20_ABI,
362
- functionName: 'balanceOf',
363
- args: [adminAddr]
364
- });
237
+ try {
238
+ validateAddress(paymasterAddr, 'paymasterAddr');
239
+ validateAddress(target, 'target');
240
+ validateAddress(tokenAddr, 'tokenAddr');
241
+ validateAmount(amount, 'amount');
365
242
 
366
- if (adminBal < amount) {
367
- console.log(` 🏧 Admin Minting to Self (for deposit)...`);
368
- const hash = await adminWallet.writeContract({
369
- address: token,
370
- abi: ERC20_ABI,
371
- functionName: 'mint',
372
- args: [adminAddr, amount * 10n], // bulk mint
373
- chain: sepolia,
374
- account: adminWallet.account!
375
- });
376
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
377
- console.log(` -> Admin Minted. Tx: ${hash}`);
378
- }
243
+ const token = gTokenActions(tokenAddr)(publicClient);
244
+ const walletToken = gTokenActions(tokenAddr)(adminWallet);
245
+ const paymaster = paymasterActions(paymasterAddr)(adminWallet);
379
246
 
380
- // 2. Approve Paymaster
381
- const allowance = await publicClient.readContract({
382
- address: token,
383
- abi: ERC20_ABI,
384
- functionName: 'allowance',
385
- args: [adminAddr, paymaster]
386
- });
387
-
388
- if (allowance < amount) {
389
- console.log(` 🔓 Admin Approving Paymaster...`);
390
- const hash = await adminWallet.writeContract({
391
- address: token,
392
- abi: ERC20_ABI,
393
- functionName: 'approve',
394
- args: [paymaster, 115792089237316195423570985008687907853269984665640564039457584007913129639935n], // Max Uint
395
- chain: sepolia,
396
- account: adminWallet.account!
397
- });
398
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
399
- console.log(` -> Approved Paymaster. Tx: ${hash}`);
400
- }
247
+ const adminAddr = adminWallet.account!.address;
248
+ const adminBal = await token.balanceOf({ token: tokenAddr, account: adminAddr });
401
249
 
402
- // 3. Deposit For
403
- console.log(` 🏦 Depositing FOR User...`);
404
- try {
405
- const hash = await adminWallet.writeContract({
406
- address: paymaster,
407
- abi: PAYMASTER_ABI,
408
- functionName: 'depositFor',
409
- args: [target, amount],
410
- chain: sepolia,
411
- account: adminWallet.account!
412
- });
413
- await publicClient.waitForTransactionReceipt({ hash, timeout: 300000 });
250
+ if (adminBal < amount) {
251
+ console.log(` 🏧 Admin Minting to Self (for deposit)...`);
252
+ const hash = await walletToken.mint({ token: tokenAddr, to: adminAddr, amount: amount * 10n });
253
+ await publicClient.waitForTransactionReceipt({ hash });
254
+ }
255
+
256
+ const allowance = await token.allowance({ token: tokenAddr, owner: adminAddr, spender: paymasterAddr });
257
+
258
+ if (allowance < amount) {
259
+ console.log(` 🔓 Admin Approving Paymaster...`);
260
+ // Use a large but finite amount instead of max uint for safety/clarity if desired,
261
+ // but max uint is common in faucets.
262
+ const hashApprove = await walletToken.approve({
263
+ token: tokenAddr,
264
+ spender: paymasterAddr,
265
+ amount: parseEther('10000')
266
+ });
267
+ await publicClient.waitForTransactionReceipt({ hash: hashApprove });
268
+ }
269
+
270
+ console.log(` 🏦 Depositing FOR User...`);
271
+ const hash = await paymaster.depositFor({ user: target, token: tokenAddr, amount });
272
+ await publicClient.waitForTransactionReceipt({ hash, timeout: 120000 });
414
273
  console.log(` -> Deposited ${formatEther(amount)} to PM. Tx: ${hash}`);
415
274
  return true;
416
- } catch (e) {
417
- console.warn(` ⚠️ Deposit Failed (Maybe not supported on this PM?):`, e);
275
+ } catch (error) {
276
+ console.warn(` ⚠️ Deposit Failed (Maybe not supported on this PM?):`, error);
418
277
  return false;
419
278
  }
420
279
  }
@@ -2,17 +2,14 @@ export * from './registry.js';
2
2
  export * from './staking.js';
3
3
  export * from './sbt.js';
4
4
  export * from './superPaymaster.js';
5
- export * from './paymasterV4.js';
5
+ export * from './paymaster.js';
6
6
  export * from './reputation.js';
7
7
  export * from './tokens.js';
8
8
  export * from './entryPoint.js';
9
- export * from './gtokenExtended.js';
10
9
  export * from './StateValidator.js';
11
10
  export * from './dvt.js';
12
11
  export * from './factory.js';
13
12
  export * from './aggregator.js';
14
13
  export * from './account.js';
15
14
  export * from './faucet.js';
16
- // validators.ts merged into dvt.js and aggregator.js
17
- // validators.ts merged into dvt.js and aggregator.js
18
-
15
+ // validators.ts legacy removed