@aastar/sdk 0.14.0 → 0.16.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +30 -0
- package/.gitmodules +9 -0
- package/README.md +299 -0
- package/aastar-sdk.code-workspace +14 -0
- package/abis/BLSAggregator.json +572 -0
- package/abis/BLSValidator.json +39 -0
- package/abis/DVTValidator.json +383 -0
- package/abis/Eip7702Support.json +24 -0
- package/abis/EntryPoint.json +1379 -0
- package/abis/GToken.json +510 -0
- package/abis/GTokenStaking.json +918 -0
- package/abis/LegacyAccount.json +625 -0
- package/abis/MySBT.json +1547 -0
- package/abis/Paymaster.json +1192 -0
- package/abis/PaymasterFactory.json +637 -0
- package/abis/PaymasterV4_2.json +1193 -0
- package/abis/Registry.json +1677 -0
- package/abis/ReputationSystem.json +659 -0
- package/abis/SenderCreator.json +99 -0
- package/abis/Simple7702Account.json +395 -0
- package/abis/SimpleAccount.json +625 -0
- package/abis/SimpleAccountFactory.json +108 -0
- package/abis/SimpleAccountFactoryV08.json +87 -0
- package/abis/SimpleAccountV08.json +557 -0
- package/abis/SuperPaymaster.json +1568 -0
- package/abis/UserOperationLib.json +57 -0
- package/abis/aPNTs.json +1160 -0
- package/abis/xPNTsFactory.json +715 -0
- package/abis/xPNTsToken.json +1160 -0
- package/config/networks/README.md +54 -0
- package/config/networks/mainnet.env.example +39 -0
- package/config/networks/optimism-sepolia.env.example +35 -0
- package/config/networks/optimism.env.example +36 -0
- package/config/networks/sepolia.env.example +36 -0
- package/config.anvil.json +1 -0
- package/config.sepolia.json +1 -0
- package/config.test.json +27 -0
- package/data/experiment_data.csv +36 -0
- package/data/industry_baseline_2025-12-23.json +154 -0
- package/data/industry_baseline_latest.json +154 -0
- package/docs/ABI_Change_Tracking_Workflow.md +41 -0
- package/docs/ABI_MAINTENANCE_PLAN.md +132 -0
- package/docs/API_REFERENCE.md +956 -0
- package/docs/Configuration_Sync.md +47 -0
- package/docs/DAO_Mining_Distribution_Plan.md +522 -0
- package/docs/DEMO_REFACTOR_PLAN.md +289 -0
- package/docs/DOCUMENTATION_PLAN.md +455 -0
- package/docs/ENV_SEPOLIA_UPDATE.md +68 -0
- package/docs/Faucet_Gasless_Plan.md +56 -0
- package/docs/L2_BUSINESS_CLIENTS_PLAN.md +394 -0
- package/docs/L4_Manual_Test_CheatSheet.md +215 -0
- package/docs/Plan.md +266 -0
- package/docs/Regression_Testing_Guide.md +70 -0
- package/docs/SDK_ABI_COVERAGE.md +839 -0
- package/docs/SDK_COVERAGE_STRATEGY.md +397 -0
- package/docs/SDK_Optimization_Evaluation_Plan.md +51 -0
- package/docs/SDK_REGRESSION_AND_API_PLAN.md +98 -0
- package/docs/SDK_STAGE3_PLAN.md +151 -0
- package/docs/SEPOLIA_ENV_REFERENCE.md +51 -0
- package/docs/STAGE3.md +191 -0
- package/docs/Script_Comparison_Report.md +91 -0
- package/docs/Sepolia_Latest_Deployment.md +117 -0
- package/docs/TESTER_GUIDE_GASLESS.md +663 -0
- package/docs/TEST_COVERAGE_MATRIX.md +72 -0
- package/docs/TODO_SDK_COVERAGE.md +55 -0
- package/docs/USER_CASE_DESIGN.md +110 -0
- package/docs/Verifier_L4_Gasless_Plan.md +454 -0
- package/docs/api/@aastar/account.md +235 -0
- package/docs/api/@aastar/analytics.md +219 -0
- package/docs/api/@aastar/core.md +26830 -0
- package/docs/api/@aastar/dapp.md +130 -0
- package/docs/api/@aastar/identity.md +482 -0
- package/docs/api/@aastar/paymaster.md +1387 -0
- package/docs/api/@aastar/sdk/README.md +155 -0
- package/docs/api/@aastar/sdk/node.md +4044 -0
- package/docs/api/@aastar/tokens.md +1971 -0
- package/docs/api/README.md +10 -0
- package/docs/changelog.md +99 -0
- package/docs/examples/README.md +18 -0
- package/docs/examples/community-flow.md +28 -0
- package/docs/examples/enduser-flow.md +24 -0
- package/docs/examples/index.md +18 -0
- package/docs/examples/multi-chain.md +31 -0
- package/docs/examples/operator-flow.md +28 -0
- package/docs/guide/CLI_GUIDE.md +65 -0
- package/docs/guide/DOCUMENTATION_PLAN.md +455 -0
- package/docs/guide/Security-solution.md +106 -0
- package/docs/guide/TEST_COMMANDS.md +320 -0
- package/docs/guide/concepts/account-abstraction.md +95 -0
- package/docs/guide/concepts/rainbow-bridge.md +68 -0
- package/docs/guide/concepts/reputation.md +95 -0
- package/docs/guide/concepts/superpaymaster.md +141 -0
- package/docs/guide/getting-started.md +133 -0
- package/docs/guide/installation.md +40 -0
- package/docs/guide/paper-data-collection.md +69 -0
- package/docs/guide/quick-start.md +52 -0
- package/docs/guide/task_breakdown.md +121 -0
- package/docs/guide/use-cases/community-management.md +141 -0
- package/docs/guide/use-cases/gasless-transactions.md +71 -0
- package/docs/guide/use-cases/operator-staking.md +84 -0
- package/docs/guide/use-cases/yop.md +72 -0
- package/docs/old-solution.md +1078 -0
- package/docs/paper-data-collection.md +69 -0
- package/docs/refactor/2026-01-13-221242-trae-refactor.md +224 -0
- package/docs/refactor/2026-01-13-audit-analysis.md +96 -0
- package/docs/refactor/2026-01-13-audit-report-v0.16.2.md +76 -0
- package/docs/refactor/2026-01-13-audit-report-v0.17.0.md +74 -0
- package/docs/refactor/2026-01-13-cursor-refactor.md +511 -0
- package/docs/refactor/2026-01-13-refactor-plan.md +88 -0
- package/docs/refactor/2026-01-13-refactor-response-plan.md +77 -0
- package/docs/refactor/2026-01-13-refactor-review.md +39 -0
- package/docs/refactor/2026-01-13-sdk-enhancement-plan.md +120 -0
- package/docs/refactor/2026-01-14-audit-response.md +242 -0
- package/docs/refactor/2026-01-14-audit-summary.md +133 -0
- package/docs/refactor/cursor-2026-01-13-14-00-audit-report.md +267 -0
- package/docs/technical_plan.md +510 -0
- package/docs/zh/examples/community-flow.md +38 -0
- package/docs/zh/examples/complete-workflow.md +10 -0
- package/docs/zh/examples/enduser-flow.md +33 -0
- package/docs/zh/examples/index.md +18 -0
- package/docs/zh/examples/multi-chain.md +46 -0
- package/docs/zh/examples/operator-flow.md +37 -0
- package/docs/zh/guide/CLI_GUIDE.md +48 -0
- package/docs/zh/guide/DOCUMENTATION_PLAN.md +455 -0
- package/docs/zh/guide/Plan.md +266 -0
- package/docs/zh/guide/SDK_Optimization_Evaluation_Plan.md +51 -0
- package/docs/zh/guide/Security-solution.md +106 -0
- package/docs/zh/guide/TEST_COMMANDS.md +125 -0
- package/docs/zh/guide/TEST_COVERAGE_MATRIX.md +72 -0
- package/docs/zh/guide/concepts/account-abstraction.md +95 -0
- package/docs/zh/guide/concepts/rainbow-bridge.md +68 -0
- package/docs/zh/guide/concepts/reputation.md +95 -0
- package/docs/zh/guide/concepts/superpaymaster.md +141 -0
- package/docs/zh/guide/getting-started.md +133 -0
- package/docs/zh/guide/installation.md +107 -0
- package/docs/zh/guide/old-solution.md +1078 -0
- package/docs/zh/guide/paper-data-collection.md +69 -0
- package/docs/zh/guide/quick-start.md +134 -0
- package/docs/zh/guide/sdk-readme.md +253 -0
- package/docs/zh/guide/task_breakdown.md +76 -0
- package/docs/zh/guide/technical_plan.md +510 -0
- package/docs/zh/guide/use-cases/community-management.md +141 -0
- package/docs/zh/guide/use-cases/gasless-transactions.md +71 -0
- package/docs/zh/guide/use-cases/operator-staking.md +84 -0
- package/docs/zh/guide/use-cases/yop.md +72 -0
- package/env.template +32 -0
- package/examples/l1-api-demo.ts +184 -0
- package/examples/l2-clients-demo.ts +138 -0
- package/examples/l3-user-onboarding.ts +74 -0
- package/examples/prepare-gasless.ts +89 -0
- package/examples/sdk-demo/DEVELOPER_GUIDE.md +159 -0
- package/examples/sdk-demo/README.md +30 -0
- package/examples/sdk-demo/usage.ts +137 -0
- package/examples/simple-gasless-demo.ts +80 -0
- package/examples/simple-superpaymaster-demo.ts +96 -0
- package/ext/aastar-shared-config/.env.example +6 -0
- package/ext/aastar-shared-config/.github/workflows/check-secrets.yml +257 -0
- package/ext/aastar-shared-config/AGENTS.md +21 -0
- package/ext/aastar-shared-config/CHANGELOG.md +99 -0
- package/ext/aastar-shared-config/LICENSE +21 -0
- package/ext/aastar-shared-config/QUICK_START.md +215 -0
- package/ext/aastar-shared-config/README.md +412 -0
- package/ext/aastar-shared-config/SHARED_CONFIG_SUMMARY.md +273 -0
- package/ext/aastar-shared-config/check-locker-status.mjs +7 -0
- package/ext/aastar-shared-config/favicon.ico +0 -0
- package/ext/aastar-shared-config/generate-comparison-table.sh +67 -0
- package/ext/aastar-shared-config/package.json +46 -0
- package/ext/aastar-shared-config/pnpm-lock.yaml +1182 -0
- package/ext/aastar-shared-config/src/abis/BLSAggregator.json +1 -0
- package/ext/aastar-shared-config/src/abis/DVTValidator.json +1 -0
- package/ext/aastar-shared-config/src/abis/GToken.json +1 -0
- package/ext/aastar-shared-config/src/abis/GTokenStaking.json +1 -0
- package/ext/aastar-shared-config/src/abis/MySBT.json +1 -0
- package/ext/aastar-shared-config/src/abis/PaymasterFactory.json +1 -0
- package/ext/aastar-shared-config/src/abis/PaymasterV4.json +1098 -0
- package/ext/aastar-shared-config/src/abis/Registry.json +1 -0
- package/ext/aastar-shared-config/src/abis/SimpleAccount.json +557 -0
- package/ext/aastar-shared-config/src/abis/SimpleAccountFactory.json +87 -0
- package/ext/aastar-shared-config/src/abis/SuperPaymasterV2.json +1 -0
- package/ext/aastar-shared-config/src/abis/index.ts +45 -0
- package/ext/aastar-shared-config/src/abis/xPNTsFactory.json +1 -0
- package/ext/aastar-shared-config/src/abis/xPNTsToken.json +1 -0
- package/ext/aastar-shared-config/src/branding.ts +32 -0
- package/ext/aastar-shared-config/src/communities.ts +93 -0
- package/ext/aastar-shared-config/src/constants.ts +67 -0
- package/ext/aastar-shared-config/src/contract-addresses.ts +95 -0
- package/ext/aastar-shared-config/src/contract-versions.ts +374 -0
- package/ext/aastar-shared-config/src/contracts.ts +414 -0
- package/ext/aastar-shared-config/src/index.ts +14 -0
- package/ext/aastar-shared-config/src/networks.ts +117 -0
- package/ext/aastar-shared-config/sync-abis.sh +92 -0
- package/ext/aastar-shared-config/sync-versions.mjs +150 -0
- package/ext/aastar-shared-config/tsconfig.json +18 -0
- package/ext/aastar-shared-config/tsup.config.ts +10 -0
- package/ext/aastar-shared-config/verify-all.sh +207 -0
- package/ext/aastar-shared-config/verify-contracts.sh +85 -0
- package/ext/aastar-shared-config/verify-mysbt-v243.mjs +27 -0
- package/ext/aastar-shared-config/verify-onchain-versions.mjs +93 -0
- package/l4-setup.sh +11 -0
- package/lib/SHARED_CONFIG_REFERENCE.md +133 -0
- package/lib/shared-config/.env.example +6 -0
- package/lib/shared-config/.github/workflows/check-secrets.yml +257 -0
- package/lib/shared-config/AGENTS.md +21 -0
- package/lib/shared-config/CHANGELOG.md +99 -0
- package/lib/shared-config/LICENSE +21 -0
- package/lib/shared-config/QUICK_START.md +215 -0
- package/lib/shared-config/README.md +412 -0
- package/lib/shared-config/SHARED_CONFIG_SUMMARY.md +273 -0
- package/lib/shared-config/check-locker-status.mjs +7 -0
- package/lib/shared-config/favicon.ico +0 -0
- package/lib/shared-config/generate-comparison-table.sh +67 -0
- package/lib/shared-config/package.json +46 -0
- package/lib/shared-config/pnpm-lock.yaml +1182 -0
- package/lib/shared-config/src/abis/BLSAggregator.json +1 -0
- package/lib/shared-config/src/abis/DVTValidator.json +1 -0
- package/lib/shared-config/src/abis/GToken.json +1 -0
- package/lib/shared-config/src/abis/GTokenStaking.json +1 -0
- package/lib/shared-config/src/abis/MySBT.json +1 -0
- package/lib/shared-config/src/abis/PaymasterFactory.json +1 -0
- package/lib/shared-config/src/abis/PaymasterV4.json +1098 -0
- package/lib/shared-config/src/abis/Registry.json +1 -0
- package/lib/shared-config/src/abis/SimpleAccount.json +557 -0
- package/lib/shared-config/src/abis/SimpleAccountFactory.json +87 -0
- package/lib/shared-config/src/abis/SuperPaymasterV2.json +1 -0
- package/lib/shared-config/src/abis/index.ts +45 -0
- package/lib/shared-config/src/abis/xPNTsFactory.json +1 -0
- package/lib/shared-config/src/abis/xPNTsToken.json +1 -0
- package/lib/shared-config/src/branding.ts +32 -0
- package/lib/shared-config/src/communities.ts +93 -0
- package/lib/shared-config/src/constants.ts +67 -0
- package/lib/shared-config/src/contract-addresses.ts +95 -0
- package/lib/shared-config/src/contract-versions.ts +374 -0
- package/lib/shared-config/src/contracts.ts +414 -0
- package/lib/shared-config/src/index.ts +14 -0
- package/lib/shared-config/src/networks.ts +117 -0
- package/lib/shared-config/sync-abis.sh +92 -0
- package/lib/shared-config/sync-versions.mjs +150 -0
- package/lib/shared-config/tsconfig.json +18 -0
- package/lib/shared-config/tsup.config.ts +10 -0
- package/lib/shared-config/verify-all.sh +207 -0
- package/lib/shared-config/verify-contracts.sh +85 -0
- package/lib/shared-config/verify-mysbt-v243.mjs +27 -0
- package/lib/shared-config/verify-onchain-versions.mjs +93 -0
- package/package.json +58 -22
- package/packages/account/package.json +23 -0
- package/packages/account/src/accounts/simple.test.ts +93 -0
- package/packages/account/src/accounts/simple.ts +84 -0
- package/packages/account/src/eoa.test.ts +37 -0
- package/packages/account/src/eoa.ts +33 -0
- package/packages/account/src/index.test.ts +34 -0
- package/packages/account/src/index.ts +61 -0
- package/packages/account/tsconfig.json +11 -0
- package/packages/analytics/package.json +28 -0
- package/packages/analytics/src/index.ts +145 -0
- package/packages/analytics/tsconfig.json +11 -0
- package/packages/core/package.json +32 -0
- package/packages/core/scripts/audit-abi-coverage.ts +165 -0
- package/packages/core/scripts/debug-regex.ts +36 -0
- package/packages/core/src/abis/.abi-hashes.json +26 -0
- package/packages/core/src/abis/BLSAggregator.json +686 -0
- package/packages/core/src/abis/BLSValidator.json +42 -0
- package/packages/core/src/abis/DVTValidator.json +368 -0
- package/packages/core/src/abis/Eip7702Support.json +24 -0
- package/packages/core/src/abis/EntryPoint.json +1382 -0
- package/packages/core/src/abis/GToken.json +513 -0
- package/packages/core/src/abis/GTokenStaking.json +949 -0
- package/packages/core/src/abis/LegacyAccount.json +625 -0
- package/packages/core/src/abis/MySBT.json +1518 -0
- package/packages/core/src/abis/Paymaster.json +1143 -0
- package/packages/core/src/abis/PaymasterFactory.json +640 -0
- package/packages/core/src/abis/Registry.json +1942 -0
- package/packages/core/src/abis/ReputationSystem.json +699 -0
- package/packages/core/src/abis/SenderCreator.json +99 -0
- package/packages/core/src/abis/Simple7702Account.json +395 -0
- package/packages/core/src/abis/SimpleAccount.json +560 -0
- package/packages/core/src/abis/SimpleAccountFactory.json +111 -0
- package/packages/core/src/abis/SimpleAccountFactoryV08.json +87 -0
- package/packages/core/src/abis/SimpleAccountV08.json +557 -0
- package/packages/core/src/abis/SuperPaymaster.json +1781 -0
- package/packages/core/src/abis/UserOperationLib.json +57 -0
- package/packages/core/src/abis/abi.config.json +24 -0
- package/packages/core/src/abis/index.ts +104 -0
- package/packages/core/src/abis/xPNTsFactory.json +718 -0
- package/packages/core/src/abis/xPNTsToken.json +1280 -0
- package/packages/core/src/actions/StateValidator.test.ts +175 -0
- package/packages/core/src/actions/StateValidator.ts +253 -0
- package/packages/core/src/actions/account.test.ts +155 -0
- package/packages/core/src/actions/account.ts +179 -0
- package/packages/core/src/actions/aggregator.test.ts +88 -0
- package/packages/core/src/actions/aggregator.ts +41 -0
- package/packages/core/src/actions/dvt.test.ts +124 -0
- package/packages/core/src/actions/dvt.ts +53 -0
- package/packages/core/src/actions/entryPoint.test.ts +176 -0
- package/packages/core/src/actions/entryPoint.ts +266 -0
- package/packages/core/src/actions/factory.test.ts +250 -0
- package/packages/core/src/actions/factory.ts +613 -0
- package/packages/core/src/actions/faucet.test.ts +202 -0
- package/packages/core/src/actions/faucet.ts +421 -0
- package/packages/core/src/actions/gtokenExtended.test.ts +162 -0
- package/packages/core/src/actions/gtokenExtended.ts +153 -0
- package/packages/core/src/actions/index.ts +18 -0
- package/packages/core/src/actions/paymasterV4.test.ts +209 -0
- package/packages/core/src/actions/paymasterV4.ts +455 -0
- package/packages/core/src/actions/registry.test.ts +443 -0
- package/packages/core/src/actions/registry.ts +860 -0
- package/packages/core/src/actions/reputation.test.ts +225 -0
- package/packages/core/src/actions/reputation.ts +378 -0
- package/packages/core/src/actions/sbt.test.ts +322 -0
- package/packages/core/src/actions/sbt.ts +681 -0
- package/packages/core/src/actions/staking.test.ts +273 -0
- package/packages/core/src/actions/staking.ts +421 -0
- package/packages/core/src/actions/superPaymaster.test.ts +356 -0
- package/packages/core/src/actions/superPaymaster.ts +828 -0
- package/packages/core/src/actions/tokens.test.ts +60 -0
- package/packages/core/src/actions/tokens.ts +527 -0
- package/packages/core/src/actions/validators.test.ts +239 -0
- package/packages/core/src/actions/validators.ts +590 -0
- package/packages/core/src/branding.ts +32 -0
- package/packages/core/src/clients/BaseClient.ts +78 -0
- package/packages/core/src/clients/types.ts +69 -0
- package/packages/core/src/clients.ts +13 -0
- package/packages/core/src/communities.ts +93 -0
- package/packages/core/src/config/ContractConfigManager.ts +63 -0
- package/packages/core/src/constants.ts +145 -0
- package/packages/core/src/contract-addresses.ts +125 -0
- package/packages/core/src/contracts.test.ts +58 -0
- package/packages/core/src/contracts.ts +414 -0
- package/packages/core/src/crypto/blsSigner.ts +124 -0
- package/packages/core/src/crypto/index.ts +1 -0
- package/packages/core/src/index.ts +22 -0
- package/packages/core/src/networks.ts +127 -0
- package/packages/core/src/requirementChecker.test.ts +71 -0
- package/packages/core/src/requirementChecker.ts +187 -0
- package/packages/core/src/roles.test.ts +34 -0
- package/packages/core/src/roles.ts +255 -0
- package/packages/core/src/utils/validation.test.ts +50 -0
- package/packages/core/src/utils/validation.ts +66 -0
- package/packages/core/src/utils.ts +23 -0
- package/packages/core/tsconfig.json +12 -0
- package/packages/core/vitest.config.ts +14 -0
- package/packages/dapp/package.json +30 -0
- package/packages/dapp/src/index.ts +4 -0
- package/packages/dapp/src/ui/components/EvaluationPanel.tsx +40 -0
- package/packages/dapp/src/ui/hooks/useCreditScore.ts +44 -0
- package/packages/dapp/src/ui/hooks/useSuperPaymaster.ts +31 -0
- package/packages/dapp/src/ui/index.ts +22 -0
- package/packages/dapp/tsconfig.json +12 -0
- package/packages/identity/package.json +25 -0
- package/packages/identity/src/index.ts +114 -0
- package/packages/identity/src/mysbt.ts +48 -0
- package/packages/identity/tsconfig.json +11 -0
- package/packages/paymaster/package.json +25 -0
- package/packages/paymaster/src/SuperPaymaster/index.ts +168 -0
- package/packages/paymaster/src/V4/PaymasterClient.test.ts +114 -0
- package/packages/paymaster/src/V4/PaymasterClient.ts +385 -0
- package/packages/paymaster/src/V4/PaymasterOperator.test.ts +80 -0
- package/packages/paymaster/src/V4/PaymasterOperator.ts +282 -0
- package/packages/paymaster/src/V4/PaymasterUtils.test.ts +54 -0
- package/packages/paymaster/src/V4/PaymasterUtils.ts +185 -0
- package/packages/paymaster/src/V4/SuperPaymasterClient.test.ts +79 -0
- package/packages/paymaster/src/V4/SuperPaymasterClient.ts +123 -0
- package/packages/paymaster/src/V4/index.ts +4 -0
- package/packages/paymaster/src/index.ts +5 -0
- package/packages/paymaster/tsconfig.json +11 -0
- package/packages/sdk/README.md +150 -0
- package/packages/sdk/aastar/package.json +21 -0
- package/packages/sdk/aastar/src/index.ts +3 -0
- package/packages/sdk/aastar/tsconfig.json +7 -0
- package/packages/sdk/coverage_output.txt +393 -0
- package/packages/sdk/coverage_output_final.txt +739 -0
- package/packages/sdk/coverage_output_final_v2.txt +722 -0
- package/packages/sdk/coverage_output_final_v3.txt +722 -0
- package/packages/sdk/examples/config.json +1 -0
- package/packages/sdk/examples/regression_test.ts +106 -0
- package/packages/sdk/package.json +44 -0
- package/packages/sdk/src/clients/ExperimentClient.test.ts +65 -0
- package/packages/sdk/src/clients/ExperimentClient.ts +80 -0
- package/packages/sdk/src/clients/admin.test.ts +98 -0
- package/packages/sdk/src/clients/admin.ts +154 -0
- package/packages/sdk/src/clients/clients.test.ts +104 -0
- package/packages/sdk/src/clients/community.test.ts +118 -0
- package/packages/sdk/src/clients/community.ts +337 -0
- package/packages/sdk/src/clients/endUser.test.ts +221 -0
- package/packages/sdk/src/clients/endUser.ts +551 -0
- package/packages/sdk/src/clients/operator.test.ts +162 -0
- package/packages/sdk/src/clients/operator.ts +355 -0
- package/packages/sdk/src/errors/AAStarError.test.ts +92 -0
- package/packages/sdk/src/errors/AAStarError.ts +70 -0
- package/packages/sdk/src/errors/decoder.test.ts +107 -0
- package/packages/sdk/src/errors/decoder.ts +91 -0
- package/packages/sdk/src/index.ts +23 -0
- package/packages/sdk/src/node/index.ts +8 -0
- package/packages/sdk/src/types/result.ts +29 -0
- package/packages/sdk/src/utils/errorHandler.test.ts +102 -0
- package/packages/sdk/src/utils/errorHandler.ts +167 -0
- package/packages/sdk/src/utils/eventDecoder.test.ts +56 -0
- package/packages/sdk/src/utils/eventDecoder.ts +66 -0
- package/packages/sdk/src/utils/funding.test.ts +117 -0
- package/packages/sdk/src/utils/funding.ts +280 -0
- package/packages/sdk/src/utils/keys.test.ts +105 -0
- package/packages/sdk/src/utils/keys.ts +174 -0
- package/packages/sdk/src/utils/roleData.test.ts +85 -0
- package/packages/sdk/src/utils/roleData.ts +140 -0
- package/packages/sdk/src/utils/testScenarios.test.ts +79 -0
- package/packages/sdk/src/utils/testScenarios.ts +128 -0
- package/packages/sdk/src/utils/userOp.test.ts +190 -0
- package/packages/sdk/src/utils/userOp.ts +265 -0
- package/packages/sdk/tests/scenarios/01_onboard_community.ts +62 -0
- package/packages/sdk/tests/scenarios/02_onboard_operator.ts +109 -0
- package/packages/sdk/tests/scenarios/03_onboard_user.ts +53 -0
- package/packages/sdk/tests/scenarios/04_gasless_tx_flow.ts +68 -0
- package/packages/sdk/tests/scenarios/check_entrypoint.ts +19 -0
- package/packages/sdk/tests/scenarios/check_initialization.ts +65 -0
- package/packages/sdk/tests/scenarios/debug_addresses.ts +26 -0
- package/packages/sdk/tests/scenarios/diagnose_scenario4.ts +55 -0
- package/packages/sdk/tests/scenarios/setup.ts +33 -0
- package/packages/sdk/tests/scenarios/test_entrypoint_nonce.ts +46 -0
- package/packages/sdk/tsconfig.json +11 -0
- package/packages/tokens/package.json +25 -0
- package/packages/tokens/src/index.ts +273 -0
- package/packages/tokens/tsconfig.json +11 -0
- package/pnpm-workspace.yaml +2 -0
- package/run_l4_gasless_regression.sh +79 -0
- package/run_sdk_regression.sh +238 -0
- package/scripts/00_utils.ts +59 -0
- package/scripts/00_verify_phase1.ts +130 -0
- package/scripts/01_1_prep_gtoken.ts +81 -0
- package/scripts/01_2_register_sbt.ts +88 -0
- package/scripts/01_3_prep_tokens_paymaster.ts +102 -0
- package/scripts/01_prepare_all.ts +222 -0
- package/scripts/02_test_eoa.ts +53 -0
- package/scripts/03_test_standard_aa.ts +68 -0
- package/scripts/04_0_check_deploy.ts +24 -0
- package/scripts/04_1_check_allowance.ts +44 -0
- package/scripts/04_2_construct_verify.ts +96 -0
- package/scripts/04_3_verify_estimate.ts +66 -0
- package/scripts/04_4_verify_pack.ts +74 -0
- package/scripts/04_test_paymaster_v4.ts +60 -0
- package/scripts/05_1_deposit.ts +48 -0
- package/scripts/05_test_superpaymaster.ts +58 -0
- package/scripts/06_local_test_v3_admin.ts +163 -0
- package/scripts/06_local_test_v3_execution.ts +132 -0
- package/scripts/06_local_test_v3_full.ts +490 -0
- package/scripts/06_local_test_v3_funding.ts +124 -0
- package/scripts/06_local_test_v3_reputation.ts +234 -0
- package/scripts/07_local_test_v3_audit.ts +181 -0
- package/scripts/08_local_test_registry_lifecycle.ts +382 -0
- package/scripts/09_local_test_community_lifecycle.ts +385 -0
- package/scripts/09_local_test_community_simple.ts +108 -0
- package/scripts/09_scenario_bread_independent.ts +247 -0
- package/scripts/10_scenario_super_shared.ts +196 -0
- package/scripts/10_test_protocol_admin_full.ts +173 -0
- package/scripts/11_scenario_hacker_defense.ts +104 -0
- package/scripts/11_test_core_flows_full.ts +157 -0
- package/scripts/12_test_slash_mechanism.ts +205 -0
- package/scripts/12_test_slash_queries.ts +83 -0
- package/scripts/12_test_staking_exit.ts +152 -0
- package/scripts/12_test_staking_slash.ts +301 -0
- package/scripts/12_test_tier2_slash.ts +139 -0
- package/scripts/13_test_sbt_burn_linkage.ts +266 -0
- package/scripts/14_test_credit_redesign.ts +266 -0
- package/scripts/15_test_bls_full.ts +148 -0
- package/scripts/15_test_dvt_bls_full.ts +140 -0
- package/scripts/17_test_cross_role_collaboration.ts +95 -0
- package/scripts/18_sdk_e2e_verification.ts +67 -0
- package/scripts/18_test_dvt_sdk_flow.ts +138 -0
- package/scripts/18_test_lifecycle_completion.ts +144 -0
- package/scripts/19_sdk_experiment_runner.ts +114 -0
- package/scripts/19_sdk_experiment_runner.ts.backup +391 -0
- package/scripts/20_sdk_full_capability.ts +93 -0
- package/scripts/20_test_superpaymaster_new_apis.ts +193 -0
- package/scripts/21_test_paymasterv4_complete.ts +341 -0
- package/scripts/22_test_bls_signing.ts +260 -0
- package/scripts/23_test_middleware.ts +197 -0
- package/scripts/98_edge_reentrancy.ts +85 -0
- package/scripts/99_bug_hunting_fast.ts +99 -0
- package/scripts/analyze_abi_coverage.ts +169 -0
- package/scripts/check-admin.ts +95 -0
- package/scripts/check-jason-status.ts +184 -0
- package/scripts/check-roles.ts +36 -0
- package/scripts/clear-nonce.ts +47 -0
- package/scripts/collect_industry_baseline.ts +236 -0
- package/scripts/complete-jack-superpaymaster.ts +171 -0
- package/scripts/complete_env_config.ts +97 -0
- package/scripts/debug-addr.ts +43 -0
- package/scripts/debug-community-registration.ts +92 -0
- package/scripts/debug-deploy-v4.ts +116 -0
- package/scripts/debug-paymaster.ts +127 -0
- package/scripts/debug-register-role.ts +101 -0
- package/scripts/debug-version.ts +71 -0
- package/scripts/debug_account_c.ts +43 -0
- package/scripts/debug_bls.ts +58 -0
- package/scripts/debug_config_v036.ts +13 -0
- package/scripts/debug_contracts.ts +2 -0
- package/scripts/debug_env.ts +69 -0
- package/scripts/debug_find_paymaster.ts +98 -0
- package/scripts/debug_isolated_registration.ts +256 -0
- package/scripts/debug_paymaster_config.ts +19 -0
- package/scripts/debug_pim_addr.ts +23 -0
- package/scripts/debug_pm_status.ts +51 -0
- package/scripts/debug_registry.ts +39 -0
- package/scripts/debug_registry_setup.ts +129 -0
- package/scripts/debug_sanity.ts +32 -0
- package/scripts/debug_shared_config.ts +10 -0
- package/scripts/debug_token_compat.ts +51 -0
- package/scripts/debug_tokens.ts +41 -0
- package/scripts/debug_vcheck.ts +33 -0
- package/scripts/deploy-sync.ts +104 -0
- package/scripts/deploy_and_init_v3.sh +134 -0
- package/scripts/deploy_anvil_accounts.ts +144 -0
- package/scripts/deploy_paymaster_v4.ts +139 -0
- package/scripts/deploy_test_accounts.ts +401 -0
- package/scripts/deprecated/check_aa_entrypoint.ts +29 -0
- package/scripts/deprecated/check_paymaster_deposits.ts +45 -0
- package/scripts/deprecated/debug_aoa_function.ts +28 -0
- package/scripts/deprecated/debug_aoa_issue.ts +16 -0
- package/scripts/deprecated/debug_pimlico_aa23.ts +40 -0
- package/scripts/deprecated/debug_summary.ts +34 -0
- package/scripts/deprecated/deploy_v07_aa.ts +99 -0
- package/scripts/deprecated/fix_all_issues.ts +61 -0
- package/scripts/deprecated/fund_bpnts.ts +52 -0
- package/scripts/deprecated/get_factory_addresses.ts +28 -0
- package/scripts/deprecated/recheck_pim.ts +34 -0
- package/scripts/dev_tools/extract_abis.sh +151 -0
- package/scripts/dev_tools/extract_addresses_to_env.sh +67 -0
- package/scripts/dev_tools/final_safe_harmonize.py +77 -0
- package/scripts/dev_tools/safe_harmonize.py +107 -0
- package/scripts/dev_tools/surgical_harmonize.py +83 -0
- package/scripts/experiment/stage3/SETUP_GUIDE.md +258 -0
- package/scripts/experiment/stage3/archived_scripts/00_token_distribution.ts +78 -0
- package/scripts/experiment/stage3/archived_scripts/01_dao_launch.ts +96 -0
- package/scripts/experiment/stage3/archived_scripts/01b_bread_launch.ts +112 -0
- package/scripts/experiment/stage3/archived_scripts/02_operator_setup.ts +84 -0
- package/scripts/experiment/stage3/archived_scripts/02b_operator_b_setup.ts +104 -0
- package/scripts/experiment/stage3/archived_scripts/02c_finalize_operators.ts +86 -0
- package/scripts/experiment/stage3/archived_scripts/02d_operator_collateral.ts +89 -0
- package/scripts/experiment/stage3/archived_scripts/03_user_onboarding.ts +83 -0
- package/scripts/experiment/stage3/archived_scripts/03b_deploy_aa_account.ts +61 -0
- package/scripts/experiment/stage3/archived_scripts/03c_aa_onboarding.ts +104 -0
- package/scripts/experiment/stage3/archived_scripts/03d_mint_points.ts +60 -0
- package/scripts/experiment/stage3/archived_scripts/04_benchmarking.ts +100 -0
- package/scripts/experiment/stage3/archived_scripts/05_multi_op_setup.ts +149 -0
- package/scripts/experiment/stage3/archived_scripts/README.md +58 -0
- package/scripts/experiment/stage3/archived_scripts/check_roles.ts +29 -0
- package/scripts/experiment/stage3/archived_scripts/decode_error.ts +23 -0
- package/scripts/experiment/stage3/archived_scripts/fund_user.ts +51 -0
- package/scripts/experiment/stage3/archived_scripts/gen_b_key.ts +3 -0
- package/scripts/experiment/stage3/archived_scripts/gen_keys.ts +4 -0
- package/scripts/experiment/stage3/archived_scripts/setup.ts +105 -0
- package/scripts/experiment/stage3/archived_scripts/test_key.ts +4 -0
- package/scripts/experiment/stage3/archived_scripts/verify_state.ts +59 -0
- package/scripts/experiment/stage3/refactored/00_token_distribution.ts +46 -0
- package/scripts/experiment/stage3/refactored/02_operator_setup.ts +65 -0
- package/scripts/experiment/stage3/refactored/03_user_onboarding.ts +68 -0
- package/scripts/experiment/stage3/refactored/05_multi_op_setup.ts +63 -0
- package/scripts/experiment/stage3/refactored/README.md +71 -0
- package/scripts/extract-docs.sh +141 -0
- package/scripts/fund-jack.ts +38 -0
- package/scripts/generate_env_from_deployment.ts +109 -0
- package/scripts/inspect-anni-token.ts +116 -0
- package/scripts/inspect-factory.ts +83 -0
- package/scripts/l4-paymasterv4-transfer-test.ts +228 -0
- package/scripts/l4-setup.ts +453 -0
- package/scripts/l4-state.json +80 -0
- package/scripts/phase1_verify_contracts.ts +207 -0
- package/scripts/pre_test_sync.ts +83 -0
- package/scripts/prepare_sepolia_resources.ts +154 -0
- package/scripts/publish_all.sh +39 -0
- package/scripts/query-jack-token.ts +22 -0
- package/scripts/quick_setup.ts +124 -0
- package/scripts/quick_setup_account.ts +80 -0
- package/scripts/run_automated_experiment.sh +121 -0
- package/scripts/run_daily_experiment.ts +70 -0
- package/scripts/run_l4_gasless_regression.sh +32 -0
- package/scripts/run_sdk_experiment.sh +13 -0
- package/scripts/run_sdk_regression-v2.sh +38 -0
- package/scripts/sdk_regression_v2.ts +162 -0
- package/scripts/security_audit.sh +172 -0
- package/scripts/setup-bbq-community.ts +187 -0
- package/scripts/setup-dancing-community.ts +223 -0
- package/scripts/setup_test_accounts.ts +88 -0
- package/scripts/setup_test_environment.ts +147 -0
- package/scripts/sync_anvil_config.cjs +44 -0
- package/scripts/sync_config_to_env.ts +88 -0
- package/scripts/sync_contract_addresses.ts +186 -0
- package/scripts/sync_sepolia_config.cjs +90 -0
- package/scripts/sync_sepolia_config.mjs +74 -0
- package/scripts/test-brown-v4-deploy.ts +90 -0
- package/scripts/test-faucet-and-gasless.ts +170 -0
- package/scripts/test-jack-gasless.ts +119 -0
- package/scripts/test-jack-registration.ts +133 -0
- package/scripts/test-jack-superpaymaster-api.ts +112 -0
- package/scripts/test-kms-gasless.ts +138 -0
- package/scripts/test_groups.ts +138 -0
- package/scripts/test_multi_community_anvil.ts +276 -0
- package/scripts/test_new_sdk_apis_sepolia.ts +193 -0
- package/scripts/test_sdk_join_idempotent.ts +233 -0
- package/scripts/test_simple_sepolia.ts +44 -0
- package/scripts/update_env_from_config.ts +83 -0
- package/scripts/v2_regression/00_validate_env.ts +101 -0
- package/scripts/v2_regression/01_setup_and_fund.ts +132 -0
- package/scripts/v2_regression/02_operator_onboarding.ts +174 -0
- package/scripts/v2_regression/03_community_registry.ts +139 -0
- package/scripts/v2_regression/04_enduser_flow.ts +141 -0
- package/scripts/v2_regression/05_admin_audit.ts +157 -0
- package/scripts/v2_regression/README.md +161 -0
- package/scripts/validate_env.ts +112 -0
- package/scripts/verify-tx-status.ts +81 -0
- package/scripts/verify_onchain_milestone.ts +114 -0
- package/scripts/verify_phase1.ts +66 -0
- package/scripts/verify_phase2.ts +66 -0
- package/sdk_experiment_data.csv +4 -0
- package/simple-test-paymaster.sh +2 -0
- package/simple-test-superpaymaster.sh +1 -0
- package/tests/l1-regression.test.ts +458 -0
- package/tests/l4-test-anni-gasless.ts +105 -0
- package/tests/l4-test-jason1-gasless.ts +150 -0
- package/tests/l4-test-jason2-gasless.ts +174 -0
- package/tests/l4-test-pmv4-deposit.ts +111 -0
- package/tests/l4-test-pmv4-gasless.ts +166 -0
- package/tests/l4-test-pmv4-submit.ts +223 -0
- package/tests/regression/README.md +168 -0
- package/tests/regression/config.ts +215 -0
- package/tests/regression/display-versions.ts +85 -0
- package/tests/regression/index.ts +67 -0
- package/tests/regression/l1-tests.ts +267 -0
- package/tests/regression/l2-tests.ts +171 -0
- package/tests/regression/l3-tests.ts +125 -0
- package/tests/regression/l4-gasless.ts +897 -0
- package/tests/regression/l4-runner.ts +52 -0
- package/tests/reports/phase1_contract_verification.md +45 -0
- package/tests/utils/contractVerifier.ts +237 -0
- package/tests/utils/userOpHelper.ts +194 -0
- package/tsconfig.json +41 -0
- package/typedoc.json +59 -0
- package/vitest.config.ts +16 -0
- package/dist/clients/admin.d.ts +0 -12
- package/dist/clients/admin.d.ts.map +0 -1
- package/dist/clients/admin.js +0 -20
- package/dist/clients/admin.js.map +0 -1
- package/dist/clients/community.d.ts +0 -12
- package/dist/clients/community.d.ts.map +0 -1
- package/dist/clients/community.js +0 -18
- package/dist/clients/community.js.map +0 -1
- package/dist/clients/endUser.d.ts +0 -12
- package/dist/clients/endUser.d.ts.map +0 -1
- package/dist/clients/endUser.js +0 -20
- package/dist/clients/endUser.js.map +0 -1
- package/dist/clients/operator.d.ts +0 -18
- package/dist/clients/operator.d.ts.map +0 -1
- package/dist/clients/operator.js +0 -65
- package/dist/clients/operator.js.map +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -12
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,956 @@
|
|
|
1
|
+
****# AAStar SDK API Documentation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
AAStar SDK is a comprehensive TypeScript SDK for interacting with the AAStar Public Goods Infrastructure and create Your Own Protocol (YOP), providing Account Abstraction (ERC-4337) capabilities with advanced features like gasless SuperPaymaster(AOA+), EOA RainBow Bridge and community management, and reputation systems.
|
|
6
|
+
|
|
7
|
+
**Version**: 0.16.4
|
|
8
|
+
**License**: MIT
|
|
9
|
+
**Repository**: [AAStarCommunity/aastar-sdk](https://github.com/AAStarCommunity/aastar-sdk)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Table of Contents
|
|
14
|
+
|
|
15
|
+
1. [Installation](#installation)
|
|
16
|
+
2. [Quick Start](#quick-start)
|
|
17
|
+
3. [Error Handling - AAStarError](#error-handling---aastarerror)
|
|
18
|
+
4. [Core Module](#core-module)
|
|
19
|
+
5. [Account Module](#account-module)
|
|
20
|
+
6. [Paymaster Module](#paymaster-module)
|
|
21
|
+
7. [Tokens Module](#tokens-module)
|
|
22
|
+
8. [Identity Module](#identity-module)
|
|
23
|
+
9. [DApp Module](#dapp-module)
|
|
24
|
+
10. [Complete Examples](#complete-examples)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Installation
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pnpm add @aastar/sdk
|
|
32
|
+
# or individual packages
|
|
33
|
+
pnpm add @aastar/core @aastar/account @aastar/paymaster
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Development & Maintenance
|
|
37
|
+
```bash
|
|
38
|
+
# Audit ABI alignment with contracts
|
|
39
|
+
pnpm run audit:abi
|
|
40
|
+
|
|
41
|
+
# Generate code coverage report
|
|
42
|
+
pnpm run test:coverage
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Quick Start
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
import { createOperatorClient, createEndUserClient } from '@aastar/core';
|
|
51
|
+
import { sepolia } from 'viem/chains';
|
|
52
|
+
|
|
53
|
+
// Create an Operator client
|
|
54
|
+
const operatorClient = createOperatorClient({
|
|
55
|
+
chain: sepolia,
|
|
56
|
+
transport: http('https://rpc.sepolia.org'),
|
|
57
|
+
account: privateKeyToAccount('0x...'),
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Stake GTokens
|
|
61
|
+
const stakeTx = await operatorClient.stake({
|
|
62
|
+
amount: parseEther('100'),
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Error Handling - AAStarError
|
|
69
|
+
|
|
70
|
+
### Overview
|
|
71
|
+
|
|
72
|
+
All SDK clients throw `AAStarError` for better error handling and debugging. `AAStarError` provides structured error information with error codes, messages, and optional details.
|
|
73
|
+
|
|
74
|
+
### AAStarErrorCode Enum
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
export enum AAStarErrorCode {
|
|
78
|
+
VALIDATION_ERROR = 'VALIDATION_ERROR', // Invalid input parameters
|
|
79
|
+
CONTRACT_ERROR = 'CONTRACT_ERROR', // Smart contract execution failed
|
|
80
|
+
NETWORK_ERROR = 'NETWORK_ERROR', // RPC or network issues
|
|
81
|
+
CONFIGURATION_ERROR = 'CONFIGURATION_ERROR', // Missing or invalid configuration
|
|
82
|
+
UNKNOWN_ERROR = 'UNKNOWN_ERROR', // Unclassified errors
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### AAStarError Class
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
class AAStarError extends Error {
|
|
90
|
+
code: AAStarErrorCode;
|
|
91
|
+
details?: any;
|
|
92
|
+
|
|
93
|
+
constructor(message: string, code: AAStarErrorCode, details?: any);
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Usage Example
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import { createEndUserClient, AAStarError, AAStarErrorCode } from '@aastar/sdk';
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
await client.executeGasless({
|
|
104
|
+
to: '0xinvalid', // Invalid address
|
|
105
|
+
value: 1000n,
|
|
106
|
+
});
|
|
107
|
+
} catch (error) {
|
|
108
|
+
if (error instanceof AAStarError) {
|
|
109
|
+
switch (error.code) {
|
|
110
|
+
case AAStarErrorCode.VALIDATION_ERROR:
|
|
111
|
+
console.error(`Validation failed: ${error.message}`);
|
|
112
|
+
console.error(`Details:`, error.details);
|
|
113
|
+
break;
|
|
114
|
+
case AAStarErrorCode.CONTRACT_ERROR:
|
|
115
|
+
console.error(`Contract execution failed: ${error.message}`);
|
|
116
|
+
break;
|
|
117
|
+
case AAStarErrorCode.NETWORK_ERROR:
|
|
118
|
+
console.error(`Network error: ${error.message}`);
|
|
119
|
+
// Retry logic here
|
|
120
|
+
break;
|
|
121
|
+
case AAStarErrorCode.CONFIGURATION_ERROR:
|
|
122
|
+
console.error(`Configuration error: ${error.message}`);
|
|
123
|
+
break;
|
|
124
|
+
default:
|
|
125
|
+
console.error(`Unknown error: ${error.message}`);
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
// Handle non-AAStarError exceptions
|
|
129
|
+
console.error('Unexpected error:', error);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Error Code Reference
|
|
135
|
+
|
|
136
|
+
| Error Code | Description | Common Causes | Recommended Action |
|
|
137
|
+
|------------|-------------|---------------|-------------------|
|
|
138
|
+
| `VALIDATION_ERROR` | Invalid input parameters | Invalid address format, negative amounts, missing required fields | Validate inputs before calling SDK methods |
|
|
139
|
+
| `CONTRACT_ERROR` | Smart contract execution failed | Insufficient gas, reverted transaction, access denied | Check contract state, user permissions, and gas limits |
|
|
140
|
+
| `NETWORK_ERROR` | RPC or network communication failed | Timeout, connection refused, invalid RPC endpoint | Retry with exponential backoff, check network status |
|
|
141
|
+
| `CONFIGURATION_ERROR` | SDK configuration is invalid | Missing contract addresses, invalid network configuration | Verify SDK initialization parameters |
|
|
142
|
+
| `UNKNOWN_ERROR` | Unclassified error | Unexpected runtime errors | Report to SDK maintainers with error details |
|
|
143
|
+
|
|
144
|
+
### Best Practices
|
|
145
|
+
|
|
146
|
+
#### 1. Always Check Error Type
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
try {
|
|
150
|
+
await sdkMethod();
|
|
151
|
+
} catch (error) {
|
|
152
|
+
if (error instanceof AAStarError) {
|
|
153
|
+
// Handle AAStarError
|
|
154
|
+
} else {
|
|
155
|
+
// Handle other errors
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### 2. Use Error Details for Debugging
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
catch (error) {
|
|
164
|
+
if (error instanceof AAStarError) {
|
|
165
|
+
console.error({
|
|
166
|
+
code: error.code,
|
|
167
|
+
message: error.message,
|
|
168
|
+
details: error.details, // Additional context
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
####3. Implement Retry Logic for Network Errors
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
async function withRetry(fn: () => Promise<any>, maxRetries = 3) {
|
|
178
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
179
|
+
try {
|
|
180
|
+
return await fn();
|
|
181
|
+
} catch (error) {
|
|
182
|
+
if (error instanceof AAStarError &&
|
|
183
|
+
error.code === AAStarErrorCode.NETWORK_ERROR &&
|
|
184
|
+
i < maxRetries - 1) {
|
|
185
|
+
await new Promise(resolve => setTimeout(resolve, 1000 * Math.pow(2, i)));
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Usage
|
|
194
|
+
await withRetry(() => client.executeGasless({...}));
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
#### 4. Provide User-Friendly Messages
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
function getUserFriendlyMessage(error: AAStarError): string {
|
|
201
|
+
switch (error.code) {
|
|
202
|
+
case AAStarErrorCode.VALIDATION_ERROR:
|
|
203
|
+
return 'Please check your input and try again.';
|
|
204
|
+
case AAStarErrorCode.CONTRACT_ERROR:
|
|
205
|
+
return 'Transaction failed. Please try again later.';
|
|
206
|
+
case AAStarErrorCode.NETWORK_ERROR:
|
|
207
|
+
return 'Network connection issue. Please check your internet.';
|
|
208
|
+
case AAStarErrorCode.CONFIGURATION_ERROR:
|
|
209
|
+
return 'SDK configuration error. Please contact support.';
|
|
210
|
+
default:
|
|
211
|
+
return 'An unexpected error occurred. Please try again.';
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Core Module
|
|
219
|
+
|
|
220
|
+
### `@aastar/core`
|
|
221
|
+
|
|
222
|
+
Core configuration, contract addresses, and client creation utilities.
|
|
223
|
+
|
|
224
|
+
#### Exports
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
export * from './branding';
|
|
228
|
+
export * from './contract-addresses';
|
|
229
|
+
export * from './contracts';
|
|
230
|
+
export * from './contract-versions';
|
|
231
|
+
export * from './networks';
|
|
232
|
+
export * from './constants';
|
|
233
|
+
export * from './communities';
|
|
234
|
+
export * from './abis';
|
|
235
|
+
export * from './clients';
|
|
236
|
+
export * from './actions';
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
### Networks
|
|
242
|
+
|
|
243
|
+
#### `getNetwork(network)`
|
|
244
|
+
|
|
245
|
+
Get network configuration for a supported network.
|
|
246
|
+
|
|
247
|
+
**Parameters:**
|
|
248
|
+
- `network`: `SupportedNetwork` - Network name ('sepolia' | 'optimism' | 'optimism-sepolia' | 'anvil')
|
|
249
|
+
|
|
250
|
+
**Returns:** Network configuration object
|
|
251
|
+
|
|
252
|
+
**Example:**
|
|
253
|
+
```typescript
|
|
254
|
+
import { getNetwork } from '@aastar/core';
|
|
255
|
+
|
|
256
|
+
const network = getNetwork('sepolia');
|
|
257
|
+
console.log(network.chainId); // 11155111
|
|
258
|
+
console.log(network.rpcUrl); // 'https://rpc.sepolia.org'
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
#### `getTxUrl(network, txHash)`
|
|
264
|
+
|
|
265
|
+
Get block explorer URL for a transaction.
|
|
266
|
+
|
|
267
|
+
**Parameters:**
|
|
268
|
+
- `network`: `SupportedNetwork` - Network name
|
|
269
|
+
- `txHash`: `string` - Transaction hash
|
|
270
|
+
|
|
271
|
+
**Returns:** `string` - Full transaction URL
|
|
272
|
+
|
|
273
|
+
**Example:**
|
|
274
|
+
```typescript
|
|
275
|
+
import { getTxUrl } from '@aastar/core';
|
|
276
|
+
|
|
277
|
+
const url = getTxUrl('sepolia', '0x123...');
|
|
278
|
+
// 'https://sepolia.etherscan.io/tx/0x123...'
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
#### `getAddressUrl(network, address)`
|
|
284
|
+
|
|
285
|
+
Get block explorer URL for an address.
|
|
286
|
+
|
|
287
|
+
**Parameters:**
|
|
288
|
+
- `network`: `SupportedNetwork` - Network name
|
|
289
|
+
- `address`: `string` - Contract or wallet address
|
|
290
|
+
|
|
291
|
+
**Returns:** `string` - Full address URL
|
|
292
|
+
|
|
293
|
+
**Example:**
|
|
294
|
+
```typescript
|
|
295
|
+
import { getAddressUrl } from '@aastar/core';
|
|
296
|
+
|
|
297
|
+
const url = getAddressUrl('sepolia', '0xabc...');
|
|
298
|
+
// 'https://sepolia.etherscan.io/address/0xabc...'
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
#### `getChainId(network)`
|
|
304
|
+
|
|
305
|
+
Get chain ID for a network.
|
|
306
|
+
|
|
307
|
+
**Parameters:**
|
|
308
|
+
- `network`: `SupportedNetwork` - Network name
|
|
309
|
+
|
|
310
|
+
**Returns:** `number` - Chain ID
|
|
311
|
+
|
|
312
|
+
**Example:**
|
|
313
|
+
```typescript
|
|
314
|
+
import { getChainId } from '@aastar/core';
|
|
315
|
+
|
|
316
|
+
const chainId = getChainId('sepolia'); // 11155111
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
### Contract Addresses
|
|
322
|
+
|
|
323
|
+
#### `CONTRACTS`
|
|
324
|
+
|
|
325
|
+
Object containing all contract addresses for supported networks.
|
|
326
|
+
|
|
327
|
+
**Structure:**
|
|
328
|
+
```typescript
|
|
329
|
+
{
|
|
330
|
+
sepolia: {
|
|
331
|
+
registry: Address,
|
|
332
|
+
superPaymaster: Address,
|
|
333
|
+
gToken: Address,
|
|
334
|
+
gTokenStaking: Address,
|
|
335
|
+
// ... more contracts
|
|
336
|
+
},
|
|
337
|
+
// ... other networks
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Example:**
|
|
342
|
+
```typescript
|
|
343
|
+
import { CONTRACTS } from '@aastar/core';
|
|
344
|
+
|
|
345
|
+
const registryAddress = CONTRACTS.sepolia.registry;
|
|
346
|
+
console.log(registryAddress); // '0x...'
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
### Constants
|
|
352
|
+
|
|
353
|
+
#### Protocol Constants
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
import {
|
|
357
|
+
SERVICE_FEE_RATE, // 200 (2%)
|
|
358
|
+
MAX_SERVICE_FEE, // 1000 (10%)
|
|
359
|
+
BPS_DENOMINATOR, // 10000
|
|
360
|
+
ROLE_ENDUSER, // Keccak256 hash
|
|
361
|
+
ROLE_COMMUNITY, // Keccak256 hash
|
|
362
|
+
ROLE_PAYMASTER_SUPER, // Keccak256 hash
|
|
363
|
+
} from '@aastar/core';
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
### Client Creation
|
|
369
|
+
|
|
370
|
+
#### `createOperatorClient(config)`
|
|
371
|
+
|
|
372
|
+
Create a client for Paymaster operators.
|
|
373
|
+
|
|
374
|
+
**Parameters:**
|
|
375
|
+
- `config`: `ClientConfig`
|
|
376
|
+
- `chain`: `Chain` - Viem chain object
|
|
377
|
+
- `transport`: `Transport` - Viem transport
|
|
378
|
+
- `account`: `Account` - Operator account
|
|
379
|
+
|
|
380
|
+
**Returns:** `OperatorClient` with extended actions
|
|
381
|
+
|
|
382
|
+
**Example:**
|
|
383
|
+
```typescript
|
|
384
|
+
import { createOperatorClient } from '@aastar/core';
|
|
385
|
+
import { http } from 'viem';
|
|
386
|
+
import { sepolia } from 'viem/chains';
|
|
387
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
388
|
+
|
|
389
|
+
const client = createOperatorClient({
|
|
390
|
+
chain: sepolia,
|
|
391
|
+
transport: http('https://rpc.sepolia.org'),
|
|
392
|
+
account: privateKeyToAccount(process.env.OPERATOR_KEY),
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
// Available actions:
|
|
396
|
+
await client.stake({ amount: parseEther('100') });
|
|
397
|
+
await client.deposit({ amount: parseEther('10') });
|
|
398
|
+
await client.withdraw({ amount: parseEther('5') });
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
#### `createCommunityClient(config)`
|
|
404
|
+
|
|
405
|
+
Create a client for community managers.
|
|
406
|
+
|
|
407
|
+
**Parameters:**
|
|
408
|
+
- `config`: `ClientConfig`
|
|
409
|
+
- `chain`: `Chain`
|
|
410
|
+
- `transport`: `Transport`
|
|
411
|
+
- `account`: `Account` - Community admin account
|
|
412
|
+
|
|
413
|
+
**Returns:** `CommunityClient` with extended actions
|
|
414
|
+
|
|
415
|
+
**Example:**
|
|
416
|
+
```typescript
|
|
417
|
+
import { createCommunityClient } from '@aastar/core';
|
|
418
|
+
|
|
419
|
+
const client = createCommunityClient({
|
|
420
|
+
chain: sepolia,
|
|
421
|
+
transport: http(),
|
|
422
|
+
account: communityAccount,
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
// Available actions:
|
|
426
|
+
await client.registerCommunity({ name: 'MyDAO' });
|
|
427
|
+
await client.mintSBT({ to: userAddress, tokenId: 1n });
|
|
428
|
+
await client.setReputationRules({ rules: [...] });
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
#### `createEndUserClient(config)`
|
|
434
|
+
|
|
435
|
+
Create a client for end users.
|
|
436
|
+
|
|
437
|
+
**Parameters:**
|
|
438
|
+
- `config`: `ClientConfig`
|
|
439
|
+
- `chain`: `Chain`
|
|
440
|
+
- `transport`: `Transport`
|
|
441
|
+
- `account`: `Account` - User account
|
|
442
|
+
|
|
443
|
+
**Returns:** `EndUserClient` with extended actions
|
|
444
|
+
|
|
445
|
+
**Example:**
|
|
446
|
+
```typescript
|
|
447
|
+
import { createEndUserClient } from '@aastar/core';
|
|
448
|
+
|
|
449
|
+
const client = createEndUserClient({
|
|
450
|
+
chain: sepolia,
|
|
451
|
+
transport: http(),
|
|
452
|
+
account: userAccount,
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
// Available actions:
|
|
456
|
+
const credit = await client.getCreditLimit();
|
|
457
|
+
await client.repayDebt({ amount: parseEther('1') });
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
#### `createAdminClient(config)`
|
|
463
|
+
|
|
464
|
+
Create a client for protocol administrators.
|
|
465
|
+
|
|
466
|
+
**Parameters:**
|
|
467
|
+
- `config`: `ClientConfig`
|
|
468
|
+
- `chain`: `Chain`
|
|
469
|
+
- `transport`: `Transport`
|
|
470
|
+
- `account`: `Account` - Admin account
|
|
471
|
+
|
|
472
|
+
**Returns:** `AdminClient` with extended actions
|
|
473
|
+
|
|
474
|
+
**Example:**
|
|
475
|
+
```typescript
|
|
476
|
+
import { createAdminClient } from '@aastar/core';
|
|
477
|
+
|
|
478
|
+
const client = createAdminClient({
|
|
479
|
+
chain: sepolia,
|
|
480
|
+
transport: http(),
|
|
481
|
+
account: adminAccount,
|
|
482
|
+
});
|
|
483
|
+
|
|
484
|
+
// Available actions:
|
|
485
|
+
await client.slashOperator({ operator: address, amount: parseEther('10') });
|
|
486
|
+
await client.setGlobalParameters({ exitFee: 100n });
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
## Account Module
|
|
492
|
+
|
|
493
|
+
### `@aastar/account`
|
|
494
|
+
|
|
495
|
+
Account Abstraction utilities for creating and managing smart accounts.
|
|
496
|
+
|
|
497
|
+
#### `createSmartAccount(config)`
|
|
498
|
+
|
|
499
|
+
Create a new smart account (ERC-4337).
|
|
500
|
+
|
|
501
|
+
**Parameters:**
|
|
502
|
+
- `config`: `SmartAccountConfig`
|
|
503
|
+
- `owner`: `Address` - EOA owner address
|
|
504
|
+
- `salt`: `bigint` - Salt for deterministic address
|
|
505
|
+
- `factoryAddress`: `Address` - Account factory address
|
|
506
|
+
|
|
507
|
+
**Returns:** `SmartAccount` object
|
|
508
|
+
|
|
509
|
+
**Example:**
|
|
510
|
+
```typescript
|
|
511
|
+
import { createSmartAccount } from '@aastar/account';
|
|
512
|
+
|
|
513
|
+
const account = await createSmartAccount({
|
|
514
|
+
owner: '0x...',
|
|
515
|
+
salt: 0n,
|
|
516
|
+
factoryAddress: CONTRACTS.sepolia.simpleAccountFactory,
|
|
517
|
+
});
|
|
518
|
+
|
|
519
|
+
console.log(account.address); // Predicted smart account address
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
#### `getAccountAddress(config)`
|
|
525
|
+
|
|
526
|
+
Get the deterministic address for a smart account.
|
|
527
|
+
|
|
528
|
+
**Parameters:**
|
|
529
|
+
- `config`: `SmartAccountConfig`
|
|
530
|
+
|
|
531
|
+
**Returns:** `Promise<Address>` - Smart account address
|
|
532
|
+
|
|
533
|
+
**Example:**
|
|
534
|
+
```typescript
|
|
535
|
+
import { getAccountAddress } from '@aastar/account';
|
|
536
|
+
|
|
537
|
+
const address = await getAccountAddress({
|
|
538
|
+
owner: ownerAddress,
|
|
539
|
+
salt: 0n,
|
|
540
|
+
factoryAddress: factoryAddress,
|
|
541
|
+
});
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
## Paymaster Module
|
|
547
|
+
|
|
548
|
+
### `@aastar/paymaster`
|
|
549
|
+
|
|
550
|
+
Paymaster utilities for gas sponsorship.
|
|
551
|
+
|
|
552
|
+
#### `getPaymasterAndData(userOp, paymasterConfig)`
|
|
553
|
+
|
|
554
|
+
Generate paymaster data for a UserOperation.
|
|
555
|
+
|
|
556
|
+
**Parameters:**
|
|
557
|
+
- `userOp`: `UserOperation` - User operation object
|
|
558
|
+
- `paymasterConfig`: `PaymasterConfig`
|
|
559
|
+
- `paymasterAddress`: `Address`
|
|
560
|
+
- `communityAddress`: `Address`
|
|
561
|
+
- `xPNTsAddress`: `Address`
|
|
562
|
+
- `verificationGasLimit`: `bigint`
|
|
563
|
+
- `postOpGasLimit`: `bigint`
|
|
564
|
+
|
|
565
|
+
**Returns:** `Hex` - Encoded paymaster and data
|
|
566
|
+
|
|
567
|
+
**Example:**
|
|
568
|
+
```typescript
|
|
569
|
+
import { getPaymasterAndData } from '@aastar/paymaster';
|
|
570
|
+
|
|
571
|
+
const paymasterAndData = getPaymasterAndData(userOp, {
|
|
572
|
+
paymasterAddress: CONTRACTS.sepolia.superPaymaster,
|
|
573
|
+
communityAddress: '0x...',
|
|
574
|
+
xPNTsAddress: '0x...',
|
|
575
|
+
verificationGasLimit: 100000n,
|
|
576
|
+
postOpGasLimit: 50000n,
|
|
577
|
+
});
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
---
|
|
581
|
+
|
|
582
|
+
#### `checkEligibility(user, community, rpcUrl)`
|
|
583
|
+
|
|
584
|
+
Check if a user is eligible for gas sponsorship.
|
|
585
|
+
|
|
586
|
+
**Parameters:**
|
|
587
|
+
- `user`: `Address` - User address
|
|
588
|
+
- `community`: `Address` - Community address
|
|
589
|
+
- `rpcUrl`: `string` - RPC endpoint
|
|
590
|
+
|
|
591
|
+
**Returns:** `Promise<boolean>` - Eligibility status
|
|
592
|
+
|
|
593
|
+
**Example:**
|
|
594
|
+
```typescript
|
|
595
|
+
import { checkEligibility } from '@aastar/paymaster';
|
|
596
|
+
|
|
597
|
+
const isEligible = await checkEligibility(
|
|
598
|
+
userAddress,
|
|
599
|
+
communityAddress,
|
|
600
|
+
'https://rpc.sepolia.org'
|
|
601
|
+
);
|
|
602
|
+
|
|
603
|
+
if (isEligible) {
|
|
604
|
+
// Proceed with sponsored transaction
|
|
605
|
+
}
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
610
|
+
## Tokens Module
|
|
611
|
+
|
|
612
|
+
### `@aastar/tokens`
|
|
613
|
+
|
|
614
|
+
Token utilities for GToken, xPNTs, and SBTs.
|
|
615
|
+
|
|
616
|
+
#### `mintGToken(client, to, amount)`
|
|
617
|
+
|
|
618
|
+
Mint GTokens (test/development only).
|
|
619
|
+
|
|
620
|
+
**Parameters:**
|
|
621
|
+
- `client`: `WalletClient` - Wallet client with minter role
|
|
622
|
+
- `to`: `Address` - Recipient address
|
|
623
|
+
- `amount`: `bigint` - Amount to mint (in wei)
|
|
624
|
+
|
|
625
|
+
**Returns:** `Promise<Hash>` - Transaction hash
|
|
626
|
+
|
|
627
|
+
**Example:**
|
|
628
|
+
```typescript
|
|
629
|
+
import { mintGToken } from '@aastar/tokens';
|
|
630
|
+
|
|
631
|
+
const txHash = await mintGToken(
|
|
632
|
+
client,
|
|
633
|
+
recipientAddress,
|
|
634
|
+
parseEther('1000')
|
|
635
|
+
);
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
---
|
|
639
|
+
|
|
640
|
+
#### `approveGToken(client, spender, amount)`
|
|
641
|
+
|
|
642
|
+
Approve GToken spending.
|
|
643
|
+
|
|
644
|
+
**Parameters:**
|
|
645
|
+
- `client`: `WalletClient`
|
|
646
|
+
- `spender`: `Address` - Spender address (e.g., staking contract)
|
|
647
|
+
- `amount`: `bigint` - Approval amount
|
|
648
|
+
|
|
649
|
+
**Returns:** `Promise<Hash>` - Transaction hash
|
|
650
|
+
|
|
651
|
+
**Example:**
|
|
652
|
+
```typescript
|
|
653
|
+
import { approveGToken } from '@aastar/tokens';
|
|
654
|
+
|
|
655
|
+
await approveGToken(
|
|
656
|
+
client,
|
|
657
|
+
CONTRACTS.sepolia.gTokenStaking,
|
|
658
|
+
parseEther('100')
|
|
659
|
+
);
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
#### `getGTokenBalance(client, address)`
|
|
665
|
+
|
|
666
|
+
Get GToken balance for an address.
|
|
667
|
+
|
|
668
|
+
**Parameters:**
|
|
669
|
+
- `client`: `PublicClient`
|
|
670
|
+
- `address`: `Address`
|
|
671
|
+
|
|
672
|
+
**Returns:** `Promise<bigint>` - Balance in wei
|
|
673
|
+
|
|
674
|
+
**Example:**
|
|
675
|
+
```typescript
|
|
676
|
+
import { getGTokenBalance } from '@aastar/tokens';
|
|
677
|
+
|
|
678
|
+
const balance = await getGTokenBalance(client, userAddress);
|
|
679
|
+
console.log(formatEther(balance)); // "1000.0"
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
---
|
|
683
|
+
|
|
684
|
+
## Identity Module
|
|
685
|
+
|
|
686
|
+
### `@aastar/identity`
|
|
687
|
+
|
|
688
|
+
Identity and reputation management.
|
|
689
|
+
|
|
690
|
+
#### `getSBTBalance(client, user, tokenId)`
|
|
691
|
+
|
|
692
|
+
Get SBT (Soul-Bound Token) balance.
|
|
693
|
+
|
|
694
|
+
**Parameters:**
|
|
695
|
+
- `client`: `PublicClient`
|
|
696
|
+
- `user`: `Address`
|
|
697
|
+
- `tokenId`: `bigint`
|
|
698
|
+
|
|
699
|
+
**Returns:** `Promise<bigint>` - SBT balance (0 or 1)
|
|
700
|
+
|
|
701
|
+
**Example:**
|
|
702
|
+
```typescript
|
|
703
|
+
import { getSBTBalance } from '@aastar/identity';
|
|
704
|
+
|
|
705
|
+
const hasSBT = await getSBTBalance(client, userAddress, 1n);
|
|
706
|
+
console.log(hasSBT > 0n); // true if user has the SBT
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
---
|
|
710
|
+
|
|
711
|
+
#### `getReputationScore(client, user, community)`
|
|
712
|
+
|
|
713
|
+
Get user's reputation score in a community.
|
|
714
|
+
|
|
715
|
+
**Parameters:**
|
|
716
|
+
- `client`: `PublicClient`
|
|
717
|
+
- `user`: `Address`
|
|
718
|
+
- `community`: `Address`
|
|
719
|
+
|
|
720
|
+
**Returns:** `Promise<bigint>` - Reputation score
|
|
721
|
+
|
|
722
|
+
**Example:**
|
|
723
|
+
```typescript
|
|
724
|
+
import { getReputationScore } from '@aastar/identity';
|
|
725
|
+
|
|
726
|
+
const score = await getReputationScore(
|
|
727
|
+
client,
|
|
728
|
+
userAddress,
|
|
729
|
+
communityAddress
|
|
730
|
+
);
|
|
731
|
+
console.log(score); // 850n
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
## DApp Module
|
|
737
|
+
|
|
738
|
+
### `@aastar/dapp`
|
|
739
|
+
|
|
740
|
+
React hooks and utilities for DApp integration.
|
|
741
|
+
|
|
742
|
+
#### `useAAStar(config)`
|
|
743
|
+
|
|
744
|
+
React hook for AAStar SDK integration.
|
|
745
|
+
|
|
746
|
+
**Parameters:**
|
|
747
|
+
- `config`: `AAStarConfig`
|
|
748
|
+
- `network`: `SupportedNetwork`
|
|
749
|
+
- `rpcUrl`: `string`
|
|
750
|
+
|
|
751
|
+
**Returns:** `AAStarContext` object
|
|
752
|
+
|
|
753
|
+
**Example:**
|
|
754
|
+
```typescript
|
|
755
|
+
import { useAAStar } from '@aastar/dapp';
|
|
756
|
+
|
|
757
|
+
function MyComponent() {
|
|
758
|
+
const { client, account, connect, disconnect } = useAAStar({
|
|
759
|
+
network: 'sepolia',
|
|
760
|
+
rpcUrl: 'https://rpc.sepolia.org',
|
|
761
|
+
});
|
|
762
|
+
|
|
763
|
+
return (
|
|
764
|
+
<button onClick={connect}>Connect Wallet</button>
|
|
765
|
+
);
|
|
766
|
+
}
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
---
|
|
770
|
+
|
|
771
|
+
## Complete Examples
|
|
772
|
+
|
|
773
|
+
### Example 1: Operator Staking Flow
|
|
774
|
+
|
|
775
|
+
```typescript
|
|
776
|
+
import { createOperatorClient, CONTRACTS } from '@aastar/core';
|
|
777
|
+
import { mintGToken, approveGToken } from '@aastar/tokens';
|
|
778
|
+
import { http, parseEther } from 'viem';
|
|
779
|
+
import { sepolia } from 'viem/chains';
|
|
780
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
781
|
+
|
|
782
|
+
async function operatorStakingFlow() {
|
|
783
|
+
// 1. Create operator client
|
|
784
|
+
const operator = createOperatorClient({
|
|
785
|
+
chain: sepolia,
|
|
786
|
+
transport: http(process.env.RPC_URL),
|
|
787
|
+
account: privateKeyToAccount(process.env.OPERATOR_KEY),
|
|
788
|
+
});
|
|
789
|
+
|
|
790
|
+
// 2. Mint GTokens (testnet only)
|
|
791
|
+
await mintGToken(
|
|
792
|
+
operator,
|
|
793
|
+
operator.account.address,
|
|
794
|
+
parseEther('1000')
|
|
795
|
+
);
|
|
796
|
+
|
|
797
|
+
// 3. Approve staking contract
|
|
798
|
+
await approveGToken(
|
|
799
|
+
operator,
|
|
800
|
+
CONTRACTS.sepolia.gTokenStaking,
|
|
801
|
+
parseEther('100')
|
|
802
|
+
);
|
|
803
|
+
|
|
804
|
+
// 4. Stake tokens
|
|
805
|
+
const stakeTx = await operator.stake({
|
|
806
|
+
amount: parseEther('100'),
|
|
807
|
+
});
|
|
808
|
+
|
|
809
|
+
console.log('Staked! TX:', stakeTx);
|
|
810
|
+
|
|
811
|
+
// 5. Deposit to Paymaster
|
|
812
|
+
const depositTx = await operator.deposit({
|
|
813
|
+
amount: parseEther('10'),
|
|
814
|
+
});
|
|
815
|
+
|
|
816
|
+
console.log('Deposited! TX:', depositTx);
|
|
817
|
+
}
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
822
|
+
### Example 2: Community Registration
|
|
823
|
+
|
|
824
|
+
```typescript
|
|
825
|
+
import { createCommunityClient, CONTRACTS } from '@aastar/core';
|
|
826
|
+
import { http } from 'viem';
|
|
827
|
+
import { sepolia } from 'viem/chains';
|
|
828
|
+
|
|
829
|
+
async function registerCommunity() {
|
|
830
|
+
const community = createCommunityClient({
|
|
831
|
+
chain: sepolia,
|
|
832
|
+
transport: http(process.env.RPC_URL),
|
|
833
|
+
account: communityAccount,
|
|
834
|
+
});
|
|
835
|
+
|
|
836
|
+
// Register community
|
|
837
|
+
await community.registerCommunity({
|
|
838
|
+
name: 'MyAwesomeDAO',
|
|
839
|
+
metadata: 'ipfs://...',
|
|
840
|
+
});
|
|
841
|
+
|
|
842
|
+
// Mint SBT to member
|
|
843
|
+
await community.mintSBT({
|
|
844
|
+
to: memberAddress,
|
|
845
|
+
tokenId: 1n,
|
|
846
|
+
});
|
|
847
|
+
|
|
848
|
+
// Set reputation rules
|
|
849
|
+
await community.setReputationRules({
|
|
850
|
+
rules: [
|
|
851
|
+
{ metric: 'activity', weight: 30 },
|
|
852
|
+
{ metric: 'contribution', weight: 70 },
|
|
853
|
+
],
|
|
854
|
+
});
|
|
855
|
+
}
|
|
856
|
+
```
|
|
857
|
+
|
|
858
|
+
---
|
|
859
|
+
|
|
860
|
+
### Example 3: End User Gasless Transaction
|
|
861
|
+
|
|
862
|
+
```typescript
|
|
863
|
+
import { createEndUserClient, checkEligibility } from '@aastar/core';
|
|
864
|
+
import { getPaymasterAndData } from '@aastar/paymaster';
|
|
865
|
+
|
|
866
|
+
async function sendGaslessTransaction() {
|
|
867
|
+
const user = createEndUserClient({
|
|
868
|
+
chain: sepolia,
|
|
869
|
+
transport: http(),
|
|
870
|
+
account: userAccount,
|
|
871
|
+
});
|
|
872
|
+
|
|
873
|
+
// Check eligibility
|
|
874
|
+
const eligible = await checkEligibility(
|
|
875
|
+
user.account.address,
|
|
876
|
+
communityAddress,
|
|
877
|
+
process.env.RPC_URL
|
|
878
|
+
);
|
|
879
|
+
|
|
880
|
+
if (!eligible) {
|
|
881
|
+
throw new Error('Not eligible for gas sponsorship');
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
// Create UserOperation
|
|
885
|
+
const userOp = {
|
|
886
|
+
sender: user.account.address,
|
|
887
|
+
nonce: 0n,
|
|
888
|
+
// ... other fields
|
|
889
|
+
};
|
|
890
|
+
|
|
891
|
+
// Get paymaster data
|
|
892
|
+
const paymasterAndData = getPaymasterAndData(userOp, {
|
|
893
|
+
paymasterAddress: CONTRACTS.sepolia.superPaymaster,
|
|
894
|
+
communityAddress,
|
|
895
|
+
xPNTsAddress: CONTRACTS.sepolia.xPNTsToken,
|
|
896
|
+
verificationGasLimit: 100000n,
|
|
897
|
+
postOpGasLimit: 50000n,
|
|
898
|
+
});
|
|
899
|
+
|
|
900
|
+
// Submit to bundler
|
|
901
|
+
const txHash = await submitUserOperation({
|
|
902
|
+
...userOp,
|
|
903
|
+
paymasterAndData,
|
|
904
|
+
});
|
|
905
|
+
|
|
906
|
+
console.log('Gasless TX:', txHash);
|
|
907
|
+
}
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
---
|
|
911
|
+
|
|
912
|
+
## Error Handling
|
|
913
|
+
|
|
914
|
+
All SDK functions may throw errors. Always wrap in try-catch:
|
|
915
|
+
|
|
916
|
+
```typescript
|
|
917
|
+
try {
|
|
918
|
+
await client.stake({ amount: parseEther('100') });
|
|
919
|
+
} catch (error) {
|
|
920
|
+
if (error.message.includes('insufficient balance')) {
|
|
921
|
+
console.error('Not enough GTokens');
|
|
922
|
+
} else {
|
|
923
|
+
console.error('Staking failed:', error);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
---
|
|
929
|
+
|
|
930
|
+
## TypeScript Support
|
|
931
|
+
|
|
932
|
+
The SDK is fully typed. Use TypeScript for the best development experience:
|
|
933
|
+
|
|
934
|
+
```typescript
|
|
935
|
+
import type {
|
|
936
|
+
OperatorClient,
|
|
937
|
+
CommunityClient,
|
|
938
|
+
EndUserClient,
|
|
939
|
+
AdminClient,
|
|
940
|
+
SupportedNetwork,
|
|
941
|
+
} from '@aastar/core';
|
|
942
|
+
```
|
|
943
|
+
|
|
944
|
+
---
|
|
945
|
+
|
|
946
|
+
## Support
|
|
947
|
+
|
|
948
|
+
- **Documentation**: [docs.aastar.io](https://docs.aastar.io)
|
|
949
|
+
- **GitHub**: [AAStarCommunity/aastar-sdk](https://github.com/AAStarCommunity/aastar-sdk)
|
|
950
|
+
- **Discord**: [Join our community](https://discord.gg/aastar)
|
|
951
|
+
|
|
952
|
+
---
|
|
953
|
+
|
|
954
|
+
## License
|
|
955
|
+
|
|
956
|
+
MIT © AAStar Community
|