@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
@@ -6,31 +6,24 @@ import {
6
6
  RegistryABI,
7
7
  superPaymasterActions,
8
8
 
9
- paymasterV4Actions,
9
+ paymasterActions,
10
10
  PaymasterFactoryABI,
11
- tokenActions,
12
11
  type StakingActions,
13
12
  type RegistryActions,
14
13
  type SuperPaymasterActions,
15
- type PaymasterV4Actions,
16
- type TokenActions,
14
+ type PaymasterActions,
17
15
  CORE_ADDRESSES,
18
16
  TEST_TOKEN_ADDRESSES,
19
- TEST_ACCOUNT_ADDRESSES,
20
- validateAddress,
21
- validateAmount,
22
- validateHex,
23
- SuperPaymasterABI
17
+ TEST_ACCOUNT_ADDRESSES
24
18
  } from '@aastar/core';
25
19
  import { RoleDataFactory } from '../utils/roleData.js';
26
- import { AAStarError, AAStarErrorCode as AAStarErrorType, createError } from '../errors/AAStarError.js';
27
- import { decodeContractEvents, logDecodedEvents, type DecodedEvent } from '../utils/eventDecoder.js';
20
+ import { decodeContractError } from '../errors/decoder.js';
28
21
 
29
- export type OperatorClient = Client<Transport, Chain, Account | undefined> & PublicActions<Transport, Chain, Account | undefined> & WalletActions<Chain, Account | undefined> & RegistryActions & SuperPaymasterActions & PaymasterV4Actions & StakingActions & TokenActions & {
22
+ export type OperatorClient = Client<Transport, Chain, Account | undefined> & PublicActions<Transport, Chain, Account | undefined> & WalletActions<Chain, Account | undefined> & RegistryActions & SuperPaymasterActions & PaymasterActions & StakingActions & {
30
23
  /**
31
24
  * High-level API: Setup operator with automatic funding and onboarding
32
25
  */
33
- setup: (args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) => Promise<{ txs: { hash: Hash, events: DecodedEvent[] }[] }>;
26
+ setup: (args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) => Promise<{ txs: Hash[] }>;
34
27
  deployPaymasterV4: (args?: { version?: string, initData?: Hex }) => Promise<Hash>;
35
28
  /**
36
29
  * Orchestrates the full onboarding flow:
@@ -39,22 +32,10 @@ export type OperatorClient = Client<Transport, Chain, Account | undefined> & Pub
39
32
  * 3. Approve aPNTs (Deposit)
40
33
  * 4. Deposit aPNTs (SuperPaymaster)
41
34
  */
42
- onboardFully: (args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex, gasTokens?: Address[] }) => Promise<{ hash: Hash, events: DecodedEvent[] }[]>;
43
- /** @deprecated Use onboardFully */
44
- onboardOperator: (args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) => Promise<{ hash: Hash, events: DecodedEvent[] }[]>;
45
- configureOperator: (args: { xPNTsToken: Address, treasury: Address, exchangeRate: bigint, account?: Account | Address }) => Promise<Hash>;
46
-
47
- /**
48
- * 🧙 Wisdom: Check if operator is ready and compliant.
49
- */
50
- checkReadiness: () => Promise<{
51
- isRegistered: boolean;
52
- isConfigured: boolean;
53
- collateralBalance: bigint;
54
- isPaused: boolean;
55
- roleStatus: boolean;
56
- }>;
57
-
35
+ onboardOperator: (args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) => Promise<Hash[]>;
36
+ /** @deprecated Use onboardOperator */
37
+ onboardToSuperPaymaster: (args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex }) => Promise<Hash[]>
38
+ configureOperator: (args: { xPNTsToken: Address, treasury: Address, exchangeRate: bigint, account?: Account | Address }) => Promise<Hash>
58
39
  getOperatorStatus: (accountAddress: Address) => Promise<{
59
40
  type: 'super' | 'v4' | null;
60
41
  superPaymaster: {
@@ -68,12 +49,7 @@ export type OperatorClient = Client<Transport, Chain, Account | undefined> & Pub
68
49
  address: Address;
69
50
  balance: bigint;
70
51
  } | null;
71
- }>;
72
- isOperator: (operator: Address) => Promise<boolean>;
73
- getDepositDetails: () => Promise<{ deposit: bigint }>;
74
-
75
- // 🎨 Simplified Aliases (High-level)
76
- deposit: (args: { amount: bigint, account?: Account | Address }) => Promise<Hash>;
52
+ }>
77
53
  };
78
54
 
79
55
 
@@ -101,45 +77,43 @@ export function createOperatorClient({
101
77
  const spActions = superPaymasterActions(usedAddresses.superPaymaster)(client as any);
102
78
  const regActions = registryActions(usedAddresses.registry)(client as any);
103
79
  const stkActions = stakingActions(usedAddresses.gTokenStaking)(client as any);
104
- const p4Actions = paymasterV4Actions(usedAddresses.paymasterV4)(client as any);
105
- const tokActions = tokenActions()(client as any);
80
+ const pmV4Actions = paymasterActions(usedAddresses.paymasterV4)(client as any);
106
81
 
107
82
  const actions = {
108
- ...client,
109
- ...publicActions(client),
110
- ...walletActions(client),
111
- ...regActions,
112
- ...spActions,
113
- ...p4Actions,
114
83
  ...stkActions,
115
- ...tokActions,
84
+ ...spActions,
85
+ ...pmV4Actions,
86
+ ...regActions,
116
87
 
117
88
  async setup(args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) {
118
89
  console.log('⚙️ Setting up operator...');
119
- const txs = await this.onboardFully(args);
90
+ const txs = await (this as any)._onboardOperator(args);
120
91
  console.log(`✅ Operator setup complete! Transactions: ${txs.length}`);
121
92
  return { txs };
122
93
  },
123
-
124
94
  async onboardOperator(args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) {
125
95
  return this.onboardFully(args);
126
96
  },
127
-
128
- async onboardToSuperPaymaster(args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex }) {
129
- return this.onboardFully(args);
97
+ async onboardFully(args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) {
98
+ return (this as any)._onboardOperator(args);
130
99
  },
131
-
132
- async onboardFully(args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex, gasTokens?: Address[] }) {
133
- validateAmount(args.stakeAmount, 'Stake Amount');
134
- validateAmount(args.depositAmount, 'Deposit Amount');
135
- validateHex(args.roleId, 'Role ID');
136
- if (args.gasTokens) {
137
- args.gasTokens.forEach((token, index) => validateAddress(token, `Gas Token [${index}]`));
138
- }
139
-
140
- const results: { hash: Hash, events: DecodedEvent[] }[] = [];
100
+ async deployPaymasterV4({ version = 'v4.1', initData = '0x' }: { version?: string, initData?: Hex } = {}) {
101
+ console.log(` SDK: Deploying Paymaster V4 (${version})...`);
102
+ const tx = await (client as any).writeContract({
103
+ address: usedAddresses.paymasterFactory,
104
+ abi: PaymasterFactoryABI,
105
+ functionName: 'deployPaymaster',
106
+ args: [version, initData],
107
+ account,
108
+ chain
109
+ });
110
+ await (client as any).waitForTransactionReceipt({ hash: tx });
111
+ return tx;
112
+ },
113
+ async _onboardOperator({ stakeAmount, depositAmount, roleId, roleData }: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex, roleData?: Hex }) {
114
+ const txs: Hash[] = [];
141
115
  const accountToUse = account;
142
- if (!accountToUse) throw createError.validation("Account", "Account required for onboarding");
116
+ if (!accountToUse) throw new Error("Account required for onboarding");
143
117
 
144
118
  try {
145
119
  // 1. Fetch Entry Burn & Approve GToken
@@ -148,35 +122,35 @@ export function createOperatorClient({
148
122
  address: usedAddresses.registry,
149
123
  abi: RegistryABI,
150
124
  functionName: 'roleConfigs',
151
- args: [args.roleId]
125
+ args: [roleId]
152
126
  }) as any;
153
127
 
154
128
  const entryBurn = roleConfig[1];
155
- const totalStakeNeeded = args.stakeAmount + entryBurn;
156
-
157
- console.log(` SDK: Approving GToken (Stake: ${args.stakeAmount}, Burn: ${entryBurn})...`);
158
- const approveStkTx = await tokActions.tokenApprove({
159
- token: usedAddresses.gToken,
160
- spender: usedAddresses.gTokenStaking,
161
- amount: totalStakeNeeded,
162
- account: accountToUse
129
+ const totalStakeNeeded = stakeAmount + entryBurn;
130
+
131
+ console.log(` SDK: Approving GToken (Stake: ${stakeAmount}, Burn: ${entryBurn})...`);
132
+ const approveGToken = await (client as any).writeContract({
133
+ address: usedAddresses.gToken,
134
+ abi: erc20Abi,
135
+ functionName: 'approve',
136
+ args: [usedAddresses.gTokenStaking, totalStakeNeeded],
137
+ account: accountToUse,
138
+ chain
163
139
  });
164
- let receipt = await (client as any).waitForTransactionReceipt({ hash: approveStkTx });
165
- let events = decodeContractEvents(receipt.logs);
166
- logDecodedEvents(events);
167
- results.push({ hash: approveStkTx, events });
140
+ await (client as any).waitForTransactionReceipt({ hash: approveGToken });
141
+ txs.push(approveGToken);
168
142
 
169
143
  // 2. Register Role
170
144
  let data: Hex;
171
- if (args.roleData && args.roleData !== '0x') {
172
- data = args.roleData;
145
+ if (roleData && roleData !== '0x') {
146
+ data = roleData;
173
147
  } else {
174
- console.log(` SDK: Auto-generating roleData for roleId ${args.roleId}...`);
175
- if (args.roleId === keccak256(stringToBytes('COMMUNITY'))) {
148
+ console.log(` SDK: Auto-generating roleData for roleId ${roleId}...`);
149
+ if (roleId === keccak256(stringToBytes('COMMUNITY'))) {
176
150
  data = RoleDataFactory.community();
177
- } else if (args.roleId === keccak256(stringToBytes('ENDUSER'))) {
151
+ } else if (roleId === keccak256(stringToBytes('ENDUSER'))) {
178
152
  data = RoleDataFactory.endUser();
179
- } else if (args.roleId === keccak256(stringToBytes('PAYMASTER_SUPER'))) {
153
+ } else if (roleId === keccak256(stringToBytes('PAYMASTER_SUPER'))) {
180
154
  data = RoleDataFactory.paymasterSuper();
181
155
  } else {
182
156
  data = RoleDataFactory.paymasterSuper();
@@ -184,96 +158,59 @@ export function createOperatorClient({
184
158
  }
185
159
 
186
160
  console.log(` SDK: Checking if role already granted...`);
187
- const hasRoleResult = await regActions.registryHasRole({
188
- user: accountToUse!.address,
189
- roleId: args.roleId
190
- });
161
+ const hasRoleResult = await (client as any).readContract({
162
+ address: usedAddresses.registry,
163
+ abi: RegistryABI,
164
+ functionName: 'hasRole',
165
+ args: [roleId, accountToUse!.address]
166
+ }) as boolean;
191
167
 
192
168
  if (hasRoleResult) {
193
169
  console.log(` ℹ️ Role already granted, skipping registration`);
194
170
  } else {
195
- console.log(` SDK: Registering role ${args.roleId}...`);
196
- const registerTx = await regActions.registryRegisterRoleSelf({
197
- roleId: args.roleId,
171
+ console.log(` SDK: Registering role ${roleId}...`);
172
+ const registerTx = await actions.registerRoleSelf({
173
+ roleId,
198
174
  data,
199
175
  account: accountToUse
200
176
  });
201
- const receipt = await (client as any).waitForTransactionReceipt({ hash: registerTx });
202
- const events = decodeContractEvents(receipt.logs);
203
- logDecodedEvents(events);
204
- results.push({ hash: registerTx, events });
177
+ await (client as any).waitForTransactionReceipt({ hash: registerTx });
178
+ txs.push(registerTx);
205
179
  }
206
180
 
207
- // 3. Deposit aPNTs
208
- if (args.depositAmount > 0n) {
209
- console.log(' SDK: Depositing aPNTs via superPaymasterDepositFor...');
210
- const depositTx = await spActions.superPaymasterDepositFor({
211
- operator: accountToUse.address,
212
- amount: args.depositAmount,
213
- account: accountToUse
181
+ if (depositAmount > 0n) {
182
+ console.log(' SDK: Depositing aPNTs via depositFor...');
183
+ const depositTx = await (client as any).writeContract({
184
+ address: usedAddresses.superPaymaster,
185
+ abi: parseAbi(['function depositFor(address targetOperator, uint256 amount) external']),
186
+ functionName: 'depositFor',
187
+ args: [accountToUse.address, depositAmount],
188
+ account: accountToUse,
189
+ chain
214
190
  });
215
- const receipt = await (client as any).waitForTransactionReceipt({ hash: depositTx });
216
- const events = decodeContractEvents(receipt.logs);
217
- logDecodedEvents(events);
218
- results.push({ hash: depositTx, events });
191
+ await (client as any).waitForTransactionReceipt({ hash: depositTx });
192
+ txs.push(depositTx);
219
193
  }
220
194
 
221
- return results;
195
+ return txs;
222
196
  } catch (error) {
223
- // const decodedMsg = decodeContractError(error);
224
- // throw decodedMsg ? new Error(`Onboarding Failed: ${decodedMsg}`) : error;
225
- throw error;
197
+ const decodedMsg = decodeContractError(error);
198
+ throw decodedMsg ? new Error(`Onboarding Failed: ${decodedMsg}`) : error;
226
199
  }
227
200
  },
228
-
229
- async deployPaymasterV4({ version = 'v4.1', initData = '0x' }: { version?: string, initData?: Hex } = {}) {
230
- console.log(` SDK: Deploying Paymaster V4 (${version})...`);
231
- const tx = await (client as any).writeContract({
232
- address: usedAddresses.paymasterFactory,
233
- abi: PaymasterFactoryABI,
234
- functionName: 'deployPaymaster',
235
- args: [version, initData],
236
- account,
237
- chain
238
- });
239
- await (client as any).waitForTransactionReceipt({ hash: tx });
240
- return tx;
201
+ async onboardToSuperPaymaster(args: { stakeAmount: bigint, depositAmount: bigint, roleId: Hex }) {
202
+ return this.onboardOperator(args);
241
203
  },
242
-
243
204
  async configureOperator({ xPNTsToken, treasury, exchangeRate, account: accountOverride }: { xPNTsToken: Address, treasury: Address, exchangeRate: bigint, account?: Account | Address }) {
244
- validateAddress(xPNTsToken, 'xPNTs Token');
245
- validateAddress(treasury, 'Treasury');
246
- validateAmount(exchangeRate, 'Exchange Rate');
247
-
248
- const tx = await spActions.superPaymasterConfigureOperator({
205
+ const tx = await spActions.configureOperator({
249
206
  xPNTsToken,
250
- treasury,
207
+ opTreasury: treasury,
251
208
  exchangeRate,
252
209
  account: accountOverride || account
253
210
  });
254
211
  await (client as any).waitForTransactionReceipt({ hash: tx });
255
212
  return tx;
256
213
  },
257
-
258
- async checkReadiness() {
259
- if (!account) throw createError.validation("Account", "Account required for readiness check");
260
- const addr = account.address;
261
-
262
- const roleId = keccak256(stringToBytes('PAYMASTER_SUPER'));
263
- const roleStatus = await regActions.registryHasRole({ user: addr, roleId });
264
-
265
- const operatorData = await spActions.superPaymasterOperators({ operator: addr });
266
- // operators(address) returns (uint128 aPNTsBalance, uint96 exchangeRate, bool isConfigured, bool isPaused, ...)
267
-
268
- return {
269
- isRegistered: roleStatus,
270
- isConfigured: operatorData[2],
271
- collateralBalance: operatorData[0],
272
- isPaused: operatorData[3],
273
- roleStatus
274
- };
275
- },
276
-
277
214
  async getOperatorStatus(accountAddress: Address) {
278
215
  try {
279
216
  const hasRole = await client.readContract({
@@ -288,9 +225,10 @@ export function createOperatorClient({
288
225
  let paymasterV4Info = null;
289
226
 
290
227
  if (hasRole && usedAddresses.superPaymaster) {
228
+ const pmAbi = parseAbi(['function operators(address) view returns (uint128 balance, uint96 exchangeRate, bool isConfigured, bool isPaused, address token, uint32 reputation, address treasury, uint256 spent, uint256 txSponsored)']);
291
229
  const operatorData = await client.readContract({
292
230
  address: usedAddresses.superPaymaster!,
293
- abi: SuperPaymasterABI,
231
+ abi: pmAbi,
294
232
  functionName: 'operators',
295
233
  args: [accountAddress]
296
234
  }) as any;
@@ -310,9 +248,10 @@ export function createOperatorClient({
310
248
  // 检查 Paymaster V4 (Direct)
311
249
  if (usedAddresses.paymasterFactory && usedAddresses.paymasterFactory !== '0x0000000000000000000000000000000000000000') {
312
250
  try {
251
+ const factoryAbi = parseAbi(['function getPaymasterByOperator(address) view returns (address)']);
313
252
  const pmAddr = await client.readContract({
314
253
  address: usedAddresses.paymasterFactory,
315
- abi: PaymasterFactoryABI,
254
+ abi: factoryAbi,
316
255
  functionName: 'getPaymasterByOperator',
317
256
  args: [accountAddress]
318
257
  }) as Address;
@@ -334,22 +273,8 @@ export function createOperatorClient({
334
273
  console.error('Error in getOperatorStatus:', error);
335
274
  return { type: null, superPaymaster: null, paymasterV4: null };
336
275
  }
337
- },
338
-
339
- async isOperator(operator: Address): Promise<boolean> {
340
- const data = await spActions.superPaymasterOperators({ operator });
341
- return data[2]; // isConfigured
342
- },
343
-
344
- async getDepositDetails(): Promise<{ deposit: bigint }> {
345
- const deposit = await spActions.superPaymasterGetDeposit();
346
- return { deposit };
347
- },
348
-
349
- async deposit(args: { amount: bigint, account?: Account | Address }) {
350
- return this.superPaymasterDeposit(args);
351
276
  }
352
277
  };
353
278
 
354
- return Object.assign(client, actions) as OperatorClient;
279
+ return Object.assign(client, actions) as unknown as OperatorClient;
355
280
  }
@@ -1,91 +1,48 @@
1
- import { decodeErrorResult, type Hex } from 'viem';
2
- import { RegistryABI, SuperPaymasterABI, GTokenStakingABI, MySBTABI, xPNTsTokenABI } from '../index.js';
1
+ import { decodeErrorResult, type Hex, type ContractFunctionExecutionError } from 'viem';
2
+ import { RegistryABI } from '../index.js'; // Assuming RegistryABI is exported
3
3
 
4
- const ABIS_TO_TRY = [
5
- { name: 'Registry', abi: RegistryABI },
6
- { name: 'SuperPaymaster', abi: SuperPaymasterABI },
7
- { name: 'GTokenStaking', abi: GTokenStakingABI },
8
- { name: 'MySBT', abi: MySBTABI },
9
- { name: 'xPNTsToken', abi: xPNTsTokenABI }
10
- ];
4
+ export const CustomErrors = {
5
+ RoleNotConfigured: 'RoleNotConfigured(bytes32,bool)',
6
+ RoleAlreadyGranted: 'RoleAlreadyGranted(bytes32,address)',
7
+ InsufficientStake: 'InsufficientStake(uint256,uint256)',
8
+ } as const;
11
9
 
12
10
  export function decodeContractError(error: any): string | null {
13
- if (!error) return null;
14
-
15
- // 1. Try to extract data from various error structures (viem, common RPC)
16
- let data: Hex | undefined;
17
-
18
- if (typeof error === 'object') {
19
- // Walk for internal data (viem pattern)
20
- if (error.walk) {
21
- const internalError = error.walk((e: any) => e.data);
22
- data = internalError?.data;
23
- }
24
-
25
- // Fallback to direct properties
26
- if (!data) {
27
- data = error.data || (error.error && error.error.data) || (error.cause && error.cause.data);
28
- }
29
-
30
- // Handle nested data objects (common in some RPCs or viem errors)
31
- if (data && typeof data === 'object') {
32
- if ('data' in data && typeof (data as any).data === 'string') {
33
- data = (data as any).data;
34
- } else if ('object' in data && typeof (data as any).object === 'string') {
35
- // specific edge case
36
- data = (data as any).object as Hex;
37
- }
38
- }
39
- }
40
-
41
- if (!data) {
42
- // Handle "contract reverted" or similar string errors
43
- const msg = error.message || String(error);
44
- if (msg.includes('reverted')) return msg;
45
- return null;
46
- }
47
-
48
- // 2. Iterate through known ABIs to decode
49
- for (const { name, abi } of ABIS_TO_TRY) {
50
- try {
51
- const decoded = decodeErrorResult({
52
- abi: abi as any,
53
- data: data as Hex
54
- });
55
-
56
- if (decoded) {
57
- return formatDecodedError(name, decoded);
11
+ if (!error || typeof error !== 'object') return null;
12
+
13
+ // Check if it's a viem ContractFunctionExecutionError
14
+ if (error.name === 'ContractFunctionExecutionError' || error.walk) {
15
+ // Try to extract internal error data
16
+ const internalError = error.walk ? error.walk((e: any) => e.data) : error;
17
+ const data = internalError?.data;
18
+
19
+ if (data) {
20
+ try {
21
+ const decoded = decodeErrorResult({
22
+ abi: RegistryABI,
23
+ data: data as Hex
24
+ });
25
+
26
+ if (decoded.errorName === 'RoleNotConfigured') {
27
+ const [roleId, isActive] = decoded.args as [Hex, boolean];
28
+ return `RoleNotConfigured: Role ${roleId} is ${isActive ? 'ACTIVE' : 'INACTIVE'} in Registry.`;
29
+ }
30
+ if (decoded.errorName === 'RoleAlreadyGranted') {
31
+ const [roleId, user] = decoded.args as [Hex, string];
32
+ return `RoleAlreadyGranted: User ${user} already has role ${roleId}.`;
33
+ }
34
+ if (decoded.errorName === 'InsufficientStake') {
35
+ const [stake, minStake] = decoded.args as [bigint, bigint];
36
+ // Viem returns bigints, format them?
37
+ return `InsufficientStake: Provided ${stake}, Required ${minStake}.`;
38
+ }
39
+
40
+ return `${decoded.errorName}: ${decoded.args}`;
41
+ } catch (e) {
42
+ // ABI mismatch or unknown error
43
+ return null;
58
44
  }
59
- } catch (e) {
60
- // Mismatch, continue to next ABI
61
45
  }
62
46
  }
63
-
64
- return typeof data === 'string'
65
- ? `Unknown Error (data: ${data.slice(0, 10)}...)`
66
- : `Unknown Error (non-string data: ${JSON.stringify(data, (_, v) => typeof v === 'bigint' ? v.toString() : v)})`;
67
- }
68
-
69
- function formatDecodedError(contractName: string, decoded: any): string {
70
- const { errorName, args } = decoded;
71
-
72
- // Specialized formatting for common errors
73
- switch (errorName) {
74
- case 'RoleNotConfigured':
75
- return `[${contractName}] RoleNotConfigured: Role ${args[0]} is ${args[1] ? 'ACTIVE' : 'INACTIVE'}.`;
76
- case 'RoleAlreadyGranted':
77
- return `[${contractName}] RoleAlreadyGranted: User ${args[1]} already has role ${args[0]}.`;
78
- case 'InsufficientStake':
79
- return `[${contractName}] InsufficientStake: Provided ${args[0].toString()}, Required ${args[1].toString()}.`;
80
- case 'InsufficientBalance':
81
- return `[${contractName}] InsufficientBalance: Available ${args[0].toString()}, Required ${args[1].toString()}.`;
82
- case 'InvalidParameter':
83
- return `[${contractName}] InvalidParameter: ${args[0]}`;
84
- case 'Unauthorized':
85
- return `[${contractName}] Unauthorized: Caller does not have permission.`;
86
- case 'RoleNotGranted':
87
- return `[${contractName}] RoleNotGranted: User ${args[1]} does not have role ${args[0]}.`;
88
- default:
89
- return `[${contractName}] ${errorName}${args && args.length > 0 ? ': ' + JSON.stringify(args, (_, v) => typeof v === 'bigint' ? v.toString() : v) : ''}`;
90
- }
47
+ return null;
91
48
  }
@@ -3,21 +3,22 @@ export * from '@aastar/account';
3
3
  export * from '@aastar/paymaster';
4
4
  export * from '@aastar/identity';
5
5
  export * from '@aastar/tokens';
6
+ export * from '@aastar/tokens';
6
7
  export * from '@aastar/dapp';
8
+ // export * from '@aastar/enduser'; // Commented to avoid CommunityClient conflict with clients/community.js
7
9
 
8
10
  // Export Role-Based Clients
9
- // Export Role-Based Clients
10
- export { createEndUserClient } from './clients/endUser.js';
11
- export { createOperatorClient } from './clients/operator.js';
12
- export { createCommunityClient } from './clients/community.js';
13
- export { createAdminClient } from './clients/admin.js';
11
+ export * from './clients/endUser.js';
12
+ export * from './clients/operator.js';
13
+ export * from './clients/community.js';
14
+ export * from './clients/admin.js';
14
15
  export * from './clients/ExperimentClient.js';
15
16
 
16
17
  // Export Utils & Errors
17
- export { AAStarError, AAStarErrorCode, createError } from './errors/AAStarError.js';
18
18
  export * from './utils/roleData.js';
19
+ export * from './utils/keys.js';
20
+ export * from './utils/funding.js';
19
21
  export * from './utils/userOp.js';
20
- export * from './utils/eventDecoder.js';
22
+ export * from './utils/testScenarios.js';
23
+ export * from './errors/decoder.js';
21
24
 
22
- // Export Types
23
- export * from './types/result.js';
@@ -3,13 +3,6 @@ import type { Hex, Address } from 'viem';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
5
 
6
- /**
7
- * ⚠️ WARNING: TESTING & NODE.JS UTILITY ONLY ⚠️
8
- *
9
- * This file uses Node.js 'fs' module and is NOT compatible with browsers.
10
- * It is intended for use in test scripts, CLI tools, and backend environments only.
11
- * DO NOT import this file in frontend/browser code.
12
- */
13
6
  /**
14
7
  * 密钥对接口
15
8
  */
@@ -164,11 +157,3 @@ export class KeyManager {
164
157
  console.log('─'.repeat(80));
165
158
  }
166
159
  }
167
-
168
- /**
169
- * 解析私钥,确保其带有 0x 前缀
170
- * @param key - 私钥字符串
171
- */
172
- export function parseKey(key: string): Hex {
173
- return (key.startsWith('0x') ? key : `0x${key}`) as Hex;
174
- }
@@ -104,14 +104,20 @@ export const RoleDataFactory = {
104
104
  data
105
105
  );
106
106
  const result = decoded[0] as any;
107
- return {
108
- name: result.name,
109
- ensName: result.ensName,
110
- website: result.website,
111
- description: result.description,
112
- logoURI: result.logoURI,
113
- stakeAmount: result.stakeAmount
114
- };
107
+ // Check if result is array (iterable) or object
108
+ if (Array.isArray(result)) {
109
+ const [n, e, w, d, l, s] = result;
110
+ return { name: n, ensName: e, website: w, description: d, logoURI: l, stakeAmount: s };
111
+ } else {
112
+ return {
113
+ name: result.name,
114
+ ensName: result.ensName,
115
+ website: result.website,
116
+ description: result.description,
117
+ logoURI: result.logoURI,
118
+ stakeAmount: result.stakeAmount
119
+ };
120
+ }
115
121
  },
116
122
 
117
123
  decodeEndUser: (data: Hex) => {
@@ -129,12 +135,17 @@ export const RoleDataFactory = {
129
135
  data
130
136
  );
131
137
  const result = decoded[0] as any;
132
- return {
133
- account: result.account,
134
- community: result.community,
135
- avatarURI: result.avatarURI,
136
- ensName: result.ensName,
137
- stakeAmount: result.stakeAmount
138
- };
138
+ if (Array.isArray(result)) {
139
+ const [a, c, av, en, s] = result;
140
+ return { account: a, community: c, avatarURI: av, ensName: en, stakeAmount: s };
141
+ } else {
142
+ return {
143
+ account: result.account,
144
+ community: result.community,
145
+ avatarURI: result.avatarURI,
146
+ ensName: result.ensName,
147
+ stakeAmount: result.stakeAmount
148
+ };
149
+ }
139
150
  }
140
151
  };
@@ -38,8 +38,8 @@ export class UserOpScenarioBuilder {
38
38
  const {
39
39
  sender, ownerAccount, recipient, tokenAddress, amount,
40
40
  entryPoint, chainId, publicClient, paymaster, operator,
41
- paymasterGasLimit = 300000n,
42
- paymasterPostOpGasLimit = 50000n,
41
+ paymasterGasLimit = 100000n,
42
+ paymasterPostOpGasLimit = 40000n,
43
43
  nonceKey = 0n,
44
44
  gasToken
45
45
  } = params;