@aastar/dapp 0.16.7

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 (108) hide show
  1. package/LICENSE +21 -0
  2. package/dist/core/src/abis/BLSAggregator.json +686 -0
  3. package/dist/core/src/abis/BLSValidator.json +42 -0
  4. package/dist/core/src/abis/DVTValidator.json +368 -0
  5. package/dist/core/src/abis/EntryPoint.json +1382 -0
  6. package/dist/core/src/abis/GToken.json +513 -0
  7. package/dist/core/src/abis/GTokenStaking.json +949 -0
  8. package/dist/core/src/abis/MySBT.json +1518 -0
  9. package/dist/core/src/abis/Paymaster.json +1143 -0
  10. package/dist/core/src/abis/PaymasterFactory.json +640 -0
  11. package/dist/core/src/abis/Registry.json +1942 -0
  12. package/dist/core/src/abis/ReputationSystem.json +699 -0
  13. package/dist/core/src/abis/SimpleAccount.json +560 -0
  14. package/dist/core/src/abis/SimpleAccountFactory.json +111 -0
  15. package/dist/core/src/abis/SuperPaymaster.json +1781 -0
  16. package/dist/core/src/abis/index.d.ts +1126 -0
  17. package/dist/core/src/abis/index.js +91 -0
  18. package/dist/core/src/abis/xPNTsFactory.json +718 -0
  19. package/dist/core/src/abis/xPNTsToken.json +1280 -0
  20. package/dist/core/src/actions/StateValidator.d.ts +68 -0
  21. package/dist/core/src/actions/StateValidator.js +187 -0
  22. package/dist/core/src/actions/account.d.ts +55 -0
  23. package/dist/core/src/actions/account.js +133 -0
  24. package/dist/core/src/actions/aggregator.d.ts +17 -0
  25. package/dist/core/src/actions/aggregator.js +31 -0
  26. package/dist/core/src/actions/dvt.d.ts +30 -0
  27. package/dist/core/src/actions/dvt.js +41 -0
  28. package/dist/core/src/actions/entryPoint.d.ts +90 -0
  29. package/dist/core/src/actions/entryPoint.js +211 -0
  30. package/dist/core/src/actions/factory.d.ts +215 -0
  31. package/dist/core/src/actions/factory.js +442 -0
  32. package/dist/core/src/actions/faucet.d.ts +48 -0
  33. package/dist/core/src/actions/faucet.js +337 -0
  34. package/dist/core/src/actions/gtokenExtended.d.ts +39 -0
  35. package/dist/core/src/actions/gtokenExtended.js +115 -0
  36. package/dist/core/src/actions/index.d.ts +15 -0
  37. package/dist/core/src/actions/index.js +17 -0
  38. package/dist/core/src/actions/paymasterV4.d.ts +170 -0
  39. package/dist/core/src/actions/paymasterV4.js +334 -0
  40. package/dist/core/src/actions/registry.d.ts +246 -0
  41. package/dist/core/src/actions/registry.js +667 -0
  42. package/dist/core/src/actions/reputation.d.ts +129 -0
  43. package/dist/core/src/actions/reputation.js +281 -0
  44. package/dist/core/src/actions/sbt.d.ts +191 -0
  45. package/dist/core/src/actions/sbt.js +533 -0
  46. package/dist/core/src/actions/staking.d.ts +132 -0
  47. package/dist/core/src/actions/staking.js +330 -0
  48. package/dist/core/src/actions/superPaymaster.d.ts +237 -0
  49. package/dist/core/src/actions/superPaymaster.js +644 -0
  50. package/dist/core/src/actions/tokens.d.ts +229 -0
  51. package/dist/core/src/actions/tokens.js +415 -0
  52. package/dist/core/src/branding.d.ts +30 -0
  53. package/dist/core/src/branding.js +30 -0
  54. package/dist/core/src/clients/BaseClient.d.ts +25 -0
  55. package/dist/core/src/clients/BaseClient.js +66 -0
  56. package/dist/core/src/clients/types.d.ts +60 -0
  57. package/dist/core/src/clients/types.js +1 -0
  58. package/dist/core/src/clients.d.ts +5 -0
  59. package/dist/core/src/clients.js +11 -0
  60. package/dist/core/src/communities.d.ts +52 -0
  61. package/dist/core/src/communities.js +73 -0
  62. package/dist/core/src/config/ContractConfigManager.d.ts +20 -0
  63. package/dist/core/src/config/ContractConfigManager.js +48 -0
  64. package/dist/core/src/constants.d.ts +88 -0
  65. package/dist/core/src/constants.js +125 -0
  66. package/dist/core/src/contract-addresses.d.ts +110 -0
  67. package/dist/core/src/contract-addresses.js +99 -0
  68. package/dist/core/src/contracts.d.ts +424 -0
  69. package/dist/core/src/contracts.js +343 -0
  70. package/dist/core/src/crypto/blsSigner.d.ts +64 -0
  71. package/dist/core/src/crypto/blsSigner.js +98 -0
  72. package/dist/core/src/crypto/index.d.ts +1 -0
  73. package/dist/core/src/crypto/index.js +1 -0
  74. package/dist/core/src/index.d.ts +21 -0
  75. package/dist/core/src/index.js +21 -0
  76. package/dist/core/src/networks.d.ts +127 -0
  77. package/dist/core/src/networks.js +118 -0
  78. package/dist/core/src/requirementChecker.d.ts +38 -0
  79. package/dist/core/src/requirementChecker.js +139 -0
  80. package/dist/core/src/roles.d.ts +204 -0
  81. package/dist/core/src/roles.js +211 -0
  82. package/dist/core/src/utils/validation.d.ts +24 -0
  83. package/dist/core/src/utils/validation.js +56 -0
  84. package/dist/dapp/src/index.d.ts +3 -0
  85. package/dist/dapp/src/index.js +3 -0
  86. package/dist/dapp/src/ui/components/EvaluationPanel.d.ts +11 -0
  87. package/dist/dapp/src/ui/components/EvaluationPanel.js +37 -0
  88. package/dist/dapp/src/ui/hooks/useCreditScore.d.ts +13 -0
  89. package/dist/dapp/src/ui/hooks/useCreditScore.js +32 -0
  90. package/dist/dapp/src/ui/hooks/useSuperPaymaster.d.ts +8 -0
  91. package/dist/dapp/src/ui/hooks/useSuperPaymaster.js +23 -0
  92. package/dist/dapp/src/ui/index.d.ts +4 -0
  93. package/dist/dapp/src/ui/index.js +17 -0
  94. package/dist/paymaster/src/SuperPaymaster/index.d.ts +44 -0
  95. package/dist/paymaster/src/SuperPaymaster/index.js +133 -0
  96. package/dist/paymaster/src/V4/PaymasterClient.d.ts +79 -0
  97. package/dist/paymaster/src/V4/PaymasterClient.js +315 -0
  98. package/dist/paymaster/src/V4/PaymasterOperator.d.ts +41 -0
  99. package/dist/paymaster/src/V4/PaymasterOperator.js +241 -0
  100. package/dist/paymaster/src/V4/PaymasterUtils.d.ts +55 -0
  101. package/dist/paymaster/src/V4/PaymasterUtils.js +124 -0
  102. package/dist/paymaster/src/V4/SuperPaymasterClient.d.ts +21 -0
  103. package/dist/paymaster/src/V4/SuperPaymasterClient.js +73 -0
  104. package/dist/paymaster/src/V4/index.d.ts +4 -0
  105. package/dist/paymaster/src/V4/index.js +4 -0
  106. package/dist/paymaster/src/index.d.ts +2 -0
  107. package/dist/paymaster/src/index.js +4 -0
  108. package/package.json +31 -0
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Blockchain Network Configuration
3
+ */
4
+ export const NETWORKS = {
5
+ sepolia: {
6
+ chainId: 11155111,
7
+ name: 'Sepolia',
8
+ rpcUrl: 'https://rpc.sepolia.org',
9
+ blockExplorer: 'https://sepolia.etherscan.io',
10
+ nativeCurrency: {
11
+ name: 'Sepolia ETH',
12
+ symbol: 'ETH',
13
+ decimals: 18,
14
+ },
15
+ },
16
+ anvil: {
17
+ chainId: 31337,
18
+ name: 'Anvil',
19
+ rpcUrl: 'http://127.0.0.1:8545',
20
+ blockExplorer: '',
21
+ nativeCurrency: {
22
+ name: 'ETH',
23
+ symbol: 'ETH',
24
+ decimals: 18,
25
+ },
26
+ },
27
+ };
28
+ /**
29
+ * Get network configuration
30
+ *
31
+ * @param network - Network name
32
+ * @returns Network configuration
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const network = getNetwork('sepolia');
37
+ * console.log(network.chainId); // 11155111
38
+ * ```
39
+ */
40
+ export function getNetwork(network) {
41
+ return NETWORKS[network];
42
+ }
43
+ /**
44
+ * Get RPC URL for a network
45
+ *
46
+ * @param network - Network name
47
+ * @returns Public RPC URL
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * const rpcUrl = getRpcUrl('sepolia');
52
+ * ```
53
+ */
54
+ export function getRpcUrl(network) {
55
+ return NETWORKS[network].rpcUrl;
56
+ }
57
+ /**
58
+ * Get block explorer URL
59
+ *
60
+ * @param network - Network name
61
+ * @returns Block explorer base URL
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * const explorer = getBlockExplorer('sepolia');
66
+ * // 'https://sepolia.etherscan.io'
67
+ * ```
68
+ */
69
+ export function getBlockExplorer(network) {
70
+ return NETWORKS[network].blockExplorer;
71
+ }
72
+ /**
73
+ * Get transaction URL on block explorer
74
+ *
75
+ * @param network - Network name
76
+ * @param txHash - Transaction hash
77
+ * @returns Full transaction URL
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * const url = getTxUrl('sepolia', '0x123...');
82
+ * // 'https://sepolia.etherscan.io/tx/0x123...'
83
+ * ```
84
+ */
85
+ export function getTxUrl(network, txHash) {
86
+ return `${getBlockExplorer(network)}/tx/${txHash}`;
87
+ }
88
+ /**
89
+ * Get address URL on block explorer
90
+ *
91
+ * @param network - Network name
92
+ * @param address - Contract or wallet address
93
+ * @returns Full address URL
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * const url = getAddressUrl('sepolia', '0xabc...');
98
+ * // 'https://sepolia.etherscan.io/address/0xabc...'
99
+ * ```
100
+ */
101
+ export function getAddressUrl(network, address) {
102
+ return `${getBlockExplorer(network)}/address/${address}`;
103
+ }
104
+ /**
105
+ * Get chain ID for a network
106
+ *
107
+ * @param network - Network name
108
+ * @returns Chain ID number
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * const chainId = getChainId('sepolia');
113
+ * // 11155111
114
+ * ```
115
+ */
116
+ export function getChainId(network) {
117
+ return NETWORKS[network].chainId;
118
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Unified requirement checker for role registration
3
+ * Provides centralized validation for GToken, aPNTs, MySBT, and role permissions
4
+ */
5
+ import { Address, PublicClient } from 'viem';
6
+ import type { RoleRequirement } from './roles.js';
7
+ /**
8
+ * Requirement Checker Utility
9
+ *
10
+ * Centralized validation for all role requirements
11
+ */
12
+ export declare class RequirementChecker {
13
+ private publicClient;
14
+ private addresses?;
15
+ constructor(publicClient: PublicClient, addresses?: {
16
+ registry?: Address;
17
+ gtoken?: Address;
18
+ apnts?: Address;
19
+ mysbt?: Address;
20
+ } | undefined);
21
+ checkRequirements(params: {
22
+ address: Address;
23
+ roleId?: `0x${string}`;
24
+ requiredGToken?: bigint;
25
+ requiredAPNTs?: bigint;
26
+ requireSBT?: boolean;
27
+ }): Promise<RoleRequirement>;
28
+ checkGTokenBalance(address: Address, required: bigint): Promise<{
29
+ balance: bigint;
30
+ hasEnough: boolean;
31
+ }>;
32
+ checkAPNTsBalance(address: Address, required: bigint): Promise<{
33
+ balance: bigint;
34
+ hasEnough: boolean;
35
+ }>;
36
+ checkHasSBT(address: Address): Promise<boolean>;
37
+ checkHasRole(roleId: `0x${string}`, address: Address): Promise<boolean>;
38
+ }
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Unified requirement checker for role registration
3
+ * Provides centralized validation for GToken, aPNTs, MySBT, and role permissions
4
+ */
5
+ import { parseAbi } from 'viem';
6
+ const ERC20_ABI = parseAbi([
7
+ 'function balanceOf(address) view returns (uint256)'
8
+ ]);
9
+ const REGISTRY_ABI = parseAbi([
10
+ 'function hasRole(bytes32, address) view returns (bool)',
11
+ 'function roleStakes(bytes32, address) view returns (uint256)'
12
+ ]);
13
+ const MYSBT_ABI = parseAbi([
14
+ 'function balanceOf(address) view returns (uint256)'
15
+ ]);
16
+ /**
17
+ * Requirement Checker Utility
18
+ *
19
+ * Centralized validation for all role requirements
20
+ */
21
+ export class RequirementChecker {
22
+ publicClient;
23
+ addresses;
24
+ constructor(publicClient, addresses) {
25
+ this.publicClient = publicClient;
26
+ this.addresses = addresses;
27
+ }
28
+ async checkRequirements(params) {
29
+ const { address, roleId, requiredGToken = 0n, requiredAPNTs = 0n, requireSBT = false } = params;
30
+ const missingRequirements = [];
31
+ let hasRole = false;
32
+ if (roleId) {
33
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
34
+ hasRole = await this.publicClient.readContract({
35
+ address: this.addresses?.registry || CORE_ADDRESSES.registry,
36
+ abi: REGISTRY_ABI,
37
+ functionName: 'hasRole',
38
+ args: [roleId, address]
39
+ });
40
+ if (!hasRole && params.roleId) {
41
+ missingRequirements.push(`Does not have required role`);
42
+ }
43
+ }
44
+ let hasEnoughGToken = true;
45
+ if (requiredGToken > 0n) {
46
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
47
+ const gtokenBalance = await this.publicClient.readContract({
48
+ address: this.addresses?.gtoken || CORE_ADDRESSES.gToken,
49
+ abi: ERC20_ABI,
50
+ functionName: 'balanceOf',
51
+ args: [address]
52
+ });
53
+ hasEnoughGToken = gtokenBalance >= requiredGToken;
54
+ if (!hasEnoughGToken) {
55
+ missingRequirements.push(`Need ${requiredGToken.toString()} GToken, have ${gtokenBalance.toString()}`);
56
+ }
57
+ }
58
+ let hasEnoughAPNTs = true;
59
+ if (requiredAPNTs > 0n) {
60
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
61
+ const apntsBalance = await this.publicClient.readContract({
62
+ address: this.addresses?.apnts || CORE_ADDRESSES.aPNTs,
63
+ abi: ERC20_ABI,
64
+ functionName: 'balanceOf',
65
+ args: [address]
66
+ });
67
+ hasEnoughAPNTs = apntsBalance >= requiredAPNTs;
68
+ if (!hasEnoughAPNTs) {
69
+ missingRequirements.push(`Need ${requiredAPNTs.toString()} aPNTs, have ${apntsBalance.toString()}`);
70
+ }
71
+ }
72
+ let hasSBT = false;
73
+ if (requireSBT) {
74
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
75
+ const sbtBalance = await this.publicClient.readContract({
76
+ address: this.addresses?.mysbt || CORE_ADDRESSES.mySBT,
77
+ abi: MYSBT_ABI,
78
+ functionName: 'balanceOf',
79
+ args: [address]
80
+ });
81
+ hasSBT = sbtBalance > 0n;
82
+ if (!hasSBT) {
83
+ missingRequirements.push('Must hold at least one MySBT');
84
+ }
85
+ }
86
+ return {
87
+ hasRole,
88
+ hasEnoughGToken,
89
+ hasEnoughAPNTs,
90
+ hasSBT,
91
+ missingRequirements
92
+ };
93
+ }
94
+ async checkGTokenBalance(address, required) {
95
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
96
+ const balance = await this.publicClient.readContract({
97
+ address: this.addresses?.gtoken || CORE_ADDRESSES.gToken,
98
+ abi: ERC20_ABI,
99
+ functionName: 'balanceOf',
100
+ args: [address]
101
+ });
102
+ return {
103
+ balance,
104
+ hasEnough: balance >= required
105
+ };
106
+ }
107
+ async checkAPNTsBalance(address, required) {
108
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
109
+ const balance = await this.publicClient.readContract({
110
+ address: this.addresses?.apnts || CORE_ADDRESSES.aPNTs,
111
+ abi: ERC20_ABI,
112
+ functionName: 'balanceOf',
113
+ args: [address]
114
+ });
115
+ return {
116
+ balance,
117
+ hasEnough: balance >= required
118
+ };
119
+ }
120
+ async checkHasSBT(address) {
121
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
122
+ const balance = await this.publicClient.readContract({
123
+ address: this.addresses?.mysbt || CORE_ADDRESSES.mySBT,
124
+ abi: MYSBT_ABI,
125
+ functionName: 'balanceOf',
126
+ args: [address]
127
+ });
128
+ return balance > 0n;
129
+ }
130
+ async checkHasRole(roleId, address) {
131
+ const { CORE_ADDRESSES } = await import('./contract-addresses.js');
132
+ return await this.publicClient.readContract({
133
+ address: this.addresses?.registry || CORE_ADDRESSES.registry,
134
+ abi: REGISTRY_ABI,
135
+ functionName: 'hasRole',
136
+ args: [roleId, address]
137
+ });
138
+ }
139
+ }
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Role constants and utilities for AAstar SDK
3
+ * @remarks
4
+ * All role hashes and configurations match exactly with Registry.sol v3.0.0
5
+ *
6
+ * **Source**: /contracts/src/core/Registry.sol
7
+ */
8
+ import { type Hash } from 'viem';
9
+ /**
10
+ * Default Admin Role (OpenZeppelin AccessControl)
11
+ * @remarks
12
+ * - **Description**: Highest privilege, can grant/revoke all roles
13
+ * - **Permission**: Protocol governance only
14
+ * - **Source**: OpenZeppelin AccessControl DEFAULT_ADMIN_ROLE
15
+ */
16
+ export declare const DEFAULT_ADMIN_ROLE: Hash;
17
+ /**
18
+ * Community Role
19
+ * @remarks
20
+ * - **Description**: Community administrator, can issue xPNTs, configure SBT rules
21
+ * - **Permission**: Community-level governance
22
+ * - **Requirement**: minStake: 30 GT, entryBurn: 3 GT (line 99)
23
+ * - **Exit Fee**: 5% (500 basis points), min 1 GT
24
+ * - **Lock Duration**: 30 days
25
+ * - **Source**: Registry.sol line 32: ROLE_COMMUNITY = keccak256("COMMUNITY")
26
+ */
27
+ export declare const ROLE_COMMUNITY: Hash;
28
+ /**
29
+ * End User Role
30
+ * @remarks
31
+ * - **Description**: Community member, can participate and use gasless transactions
32
+ * - **Permission**: Basic user level
33
+ * - **Requirement**: minStake: 0.3 GT, entryBurn: 0.05 GT (line 100)
34
+ * - **Additional Requirement**: Must hold MySBT from community
35
+ * - **Exit Fee**: 10% (1000 basis points), min 0.05 GT
36
+ * - **Lock Duration**: 7 days
37
+ * - **Source**: Registry.sol line 33: ROLE_ENDUSER = keccak256("ENDUSER")
38
+ */
39
+ export declare const ROLE_ENDUSER: Hash;
40
+ /**
41
+ * Paymaster AOA Role (Account Ownership Authentication)
42
+ * @remarks
43
+ * - **Description**: Basic Paymaster node operator with account-based auth
44
+ * - **Permission**: Infrastructure operator
45
+ * - **Requirement**: minStake: 30 GT, entryBurn: 3 GT (line 92)
46
+ * - **Exit Fee**: 10% (1000 basis points), min 1 GT
47
+ * - **Lock Duration**: 30 days
48
+ * - **Source**: Registry.sol line 34: ROLE_PAYMASTER_AOA = keccak256("PAYMASTER_AOA")
49
+ */
50
+ export declare const ROLE_PAYMASTER_AOA: Hash;
51
+ /**
52
+ * Paymaster Super Role
53
+ * @remarks
54
+ * - **Description**: Advanced Paymaster operator, can use SuperPaymaster with aPNTs collateral
55
+ * - **Permission**: Infrastructure operator (higher tier)
56
+ * - **Requirement**: minStake: 50 GT, entryBurn: 5 GT (line 93)
57
+ * - **Additional Requirement**: aPNTs collateral in SuperPaymaster contract
58
+ * - **Exit Fee**: 10% (1000 basis points), min 2 GT
59
+ * - **Lock Duration**: 30 days
60
+ * - **Source**: Registry.sol line 35: ROLE_PAYMASTER_SUPER = keccak256("PAYMASTER_SUPER")
61
+ */
62
+ export declare const ROLE_PAYMASTER_SUPER: Hash;
63
+ /**
64
+ * DVT Role (Distributed Validator Technology)
65
+ * @remarks
66
+ * - **Description**: DVT node operator for consensus validation
67
+ * - **Permission**: Infrastructure operator
68
+ * - **Requirement**: minStake: 30 GT, entryBurn: 3 GT (line 94)
69
+ * - **Exit Fee**: 10% (1000 basis points), min 1 GT
70
+ * - **Lock Duration**: 30 days
71
+ * - **Source**: Registry.sol line 36: ROLE_DVT = keccak256("DVT")
72
+ */
73
+ export declare const ROLE_DVT: Hash;
74
+ /**
75
+ * ANODE Role (Anonymous Node)
76
+ * @remarks
77
+ * - **Description**: Anonymous infrastructure node operator
78
+ * - **Permission**: Infrastructure operator
79
+ * - **Requirement**: minStake: 20 GT, entryBurn: 2 GT (line 95)
80
+ * - **Exit Fee**: 10% (1000 basis points), min 1 GT
81
+ * - **Lock Duration**: 30 days
82
+ * - **Source**: Registry.sol line 37: ROLE_ANODE = keccak256("ANODE")
83
+ */
84
+ export declare const ROLE_ANODE: Hash;
85
+ /**
86
+ * KMS Role (Key Management Service)
87
+ * @remarks
88
+ * - **Description**: KMS operator for secure key storage and management
89
+ * - **Permission**: Infrastructure operator (highest stake)
90
+ * - **Requirement**: minStake: 100 GT, entryBurn: 10 GT (line 98)
91
+ * - **Exit Fee**: 10% (1000 basis points), min 5 GT
92
+ * - **Lock Duration**: 30 days
93
+ * - **Source**: Registry.sol line 38: ROLE_KMS = keccak256("KMS")
94
+ */
95
+ export declare const ROLE_KMS: Hash;
96
+ /**
97
+ * Role configuration structure (matches Registry.sol RoleConfig struct)
98
+ */
99
+ export interface RoleConfig {
100
+ minStake: bigint;
101
+ entryBurn: bigint;
102
+ slashThreshold: number;
103
+ slashBase: number;
104
+ slashIncrement: number;
105
+ slashMax: number;
106
+ exitFeePercent: bigint;
107
+ minExitFee: bigint;
108
+ isActive: boolean;
109
+ description: string;
110
+ }
111
+ /**
112
+ * Role requirement check result
113
+ */
114
+ export interface RoleRequirement {
115
+ hasRole: boolean;
116
+ hasEnoughGToken: boolean;
117
+ hasEnoughAPNTs: boolean;
118
+ hasSBT: boolean;
119
+ missingRequirements: string[];
120
+ }
121
+ export declare const ROLE_NAMES: Record<string, string>;
122
+ /**
123
+ * Get human-readable role name
124
+ */
125
+ export declare function getRoleName(roleHash: Hash): string;
126
+ /**
127
+ * Role permission levels (for UI sorting/filtering)
128
+ */
129
+ export declare enum RolePermissionLevel {
130
+ PROTOCOL = 100,// Default Admin
131
+ KMS = 80,// Key Management (highest stake)
132
+ OPERATOR = 50,// Infrastructure Operators
133
+ COMMUNITY = 30,// Community Admin
134
+ USER = 10
135
+ }
136
+ export declare const ROLE_PERMISSION_LEVELS: Record<string, RolePermissionLevel>;
137
+ /**
138
+ * Exact stake requirements from Registry.sol constructor (lines 92-100)
139
+ * @remarks
140
+ * **Warning**: These are initial values, always query contract for current configuration
141
+ */
142
+ export declare const INITIAL_ROLE_STAKES: {
143
+ readonly [x: string]: {
144
+ readonly minStake: "30 GT";
145
+ readonly entryBurn: "3 GT";
146
+ readonly exitFeePercent: "10%";
147
+ readonly minExitFee: "1 GT";
148
+ readonly lockDuration: "30 days";
149
+ readonly line: 92;
150
+ readonly additionalRequirement?: undefined;
151
+ } | {
152
+ readonly minStake: "50 GT";
153
+ readonly entryBurn: "5 GT";
154
+ readonly exitFeePercent: "10%";
155
+ readonly minExitFee: "2 GT";
156
+ readonly lockDuration: "30 days";
157
+ readonly additionalRequirement: "aPNTs collateral in SuperPaymaster";
158
+ readonly line: 93;
159
+ } | {
160
+ readonly minStake: "30 GT";
161
+ readonly entryBurn: "3 GT";
162
+ readonly exitFeePercent: "10%";
163
+ readonly minExitFee: "1 GT";
164
+ readonly lockDuration: "30 days";
165
+ readonly line: 94;
166
+ readonly additionalRequirement?: undefined;
167
+ } | {
168
+ readonly minStake: "20 GT";
169
+ readonly entryBurn: "2 GT";
170
+ readonly exitFeePercent: "10%";
171
+ readonly minExitFee: "1 GT";
172
+ readonly lockDuration: "30 days";
173
+ readonly line: 95;
174
+ readonly additionalRequirement?: undefined;
175
+ } | {
176
+ readonly minStake: "100 GT";
177
+ readonly entryBurn: "10 GT";
178
+ readonly exitFeePercent: "10%";
179
+ readonly minExitFee: "5 GT";
180
+ readonly lockDuration: "30 days";
181
+ readonly line: 98;
182
+ readonly additionalRequirement?: undefined;
183
+ } | {
184
+ readonly minStake: "30 GT";
185
+ readonly entryBurn: "3 GT";
186
+ readonly exitFeePercent: "5%";
187
+ readonly minExitFee: "1 GT";
188
+ readonly lockDuration: "30 days";
189
+ readonly line: 99;
190
+ readonly additionalRequirement?: undefined;
191
+ } | {
192
+ readonly minStake: "0.3 GT";
193
+ readonly entryBurn: "0.05 GT";
194
+ readonly exitFeePercent: "10%";
195
+ readonly minExitFee: "0.05 GT";
196
+ readonly lockDuration: "7 days";
197
+ readonly additionalRequirement: "Must hold MySBT from community";
198
+ readonly line: 100;
199
+ };
200
+ };
201
+ /**
202
+ * All defined roles array (for iteration)
203
+ */
204
+ export declare const ALL_ROLES: readonly [`0x${string}`, `0x${string}`, `0x${string}`, `0x${string}`, `0x${string}`, `0x${string}`, `0x${string}`];